@azure/core-client 1.8.0 → 1.8.1-alpha.20240223.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -4
- package/dist/browser/authorizeRequestOnClaimChallenge.d.ts +43 -0
- package/dist/browser/authorizeRequestOnClaimChallenge.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/authorizeRequestOnClaimChallenge.js +3 -3
- package/dist/browser/authorizeRequestOnClaimChallenge.js.map +1 -0
- package/dist/browser/authorizeRequestOnTenantChallenge.d.ts +8 -0
- package/dist/browser/authorizeRequestOnTenantChallenge.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/authorizeRequestOnTenantChallenge.js +5 -2
- package/dist/browser/authorizeRequestOnTenantChallenge.js.map +1 -0
- package/dist/browser/base64-browser.d.mts.map +1 -0
- package/dist/browser/base64-browser.mjs.map +1 -0
- package/dist/browser/base64.d.ts +29 -0
- package/{dist-esm/src/base64.browser.js → dist/browser/base64.js} +5 -1
- package/dist/browser/deserializationPolicy.d.ts +45 -0
- package/dist/browser/deserializationPolicy.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/deserializationPolicy.js +16 -19
- package/dist/browser/deserializationPolicy.js.map +1 -0
- package/dist/browser/httpClientCache.d.ts +3 -0
- package/dist/browser/httpClientCache.d.ts.map +1 -0
- package/dist/browser/index.d.ts +9 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +11 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/interfaceHelpers.d.ts +14 -0
- package/dist/browser/interfaceHelpers.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/interfaceHelpers.js +1 -1
- package/dist/browser/interfaceHelpers.js.map +1 -0
- package/dist/browser/interfaces.d.ts +664 -0
- package/dist/browser/interfaces.d.ts.map +1 -0
- package/dist/browser/log.d.ts +2 -0
- package/dist/browser/log.d.ts.map +1 -0
- package/dist/browser/operationHelpers.d.ts +14 -0
- package/dist/browser/operationHelpers.d.ts.map +1 -0
- package/dist/browser/operationHelpers.js.map +1 -0
- package/dist/browser/package.json +3 -0
- package/dist/browser/pipeline.d.ts +34 -0
- package/dist/browser/pipeline.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/pipeline.js +3 -3
- package/dist/browser/pipeline.js.map +1 -0
- package/dist/browser/serializationPolicy.d.ts +33 -0
- package/dist/browser/serializationPolicy.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serializationPolicy.js +12 -14
- package/dist/browser/serializationPolicy.js.map +1 -0
- package/dist/browser/serializer.d.ts +31 -0
- package/dist/browser/serializer.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serializer.js +25 -26
- package/dist/browser/serializer.js.map +1 -0
- package/dist/browser/serviceClient.d.ts +82 -0
- package/dist/browser/serviceClient.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/serviceClient.js +38 -14
- package/dist/browser/serviceClient.js.map +1 -0
- package/dist/browser/urlHelpers.d.ts +7 -0
- package/dist/browser/urlHelpers.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/urlHelpers.js +4 -6
- package/dist/browser/urlHelpers.js.map +1 -0
- package/dist/browser/utils.d.ts +37 -0
- package/dist/browser/utils.d.ts.map +1 -0
- package/{dist-esm/src → dist/browser}/utils.js +23 -10
- package/dist/browser/utils.js.map +1 -0
- package/dist/commonjs/authorizeRequestOnClaimChallenge.d.ts +43 -0
- package/dist/commonjs/authorizeRequestOnClaimChallenge.d.ts.map +1 -0
- package/dist/commonjs/authorizeRequestOnClaimChallenge.js +74 -0
- package/dist/commonjs/authorizeRequestOnClaimChallenge.js.map +1 -0
- package/dist/commonjs/authorizeRequestOnTenantChallenge.d.ts +8 -0
- package/dist/commonjs/authorizeRequestOnTenantChallenge.d.ts.map +1 -0
- package/dist/commonjs/authorizeRequestOnTenantChallenge.js +106 -0
- package/dist/commonjs/authorizeRequestOnTenantChallenge.js.map +1 -0
- package/dist/commonjs/base64.d.ts +25 -0
- package/dist/commonjs/base64.d.ts.map +1 -0
- package/dist/commonjs/base64.js +43 -0
- package/dist/commonjs/base64.js.map +1 -0
- package/dist/commonjs/deserializationPolicy.d.ts +45 -0
- package/dist/commonjs/deserializationPolicy.d.ts.map +1 -0
- package/dist/commonjs/deserializationPolicy.js +232 -0
- package/dist/commonjs/deserializationPolicy.js.map +1 -0
- package/dist/commonjs/httpClientCache.d.ts +3 -0
- package/dist/commonjs/httpClientCache.d.ts.map +1 -0
- package/dist/commonjs/httpClientCache.js +15 -0
- package/dist/commonjs/httpClientCache.js.map +1 -0
- package/dist/commonjs/index.d.ts +9 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +26 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/interfaceHelpers.d.ts +14 -0
- package/dist/commonjs/interfaceHelpers.d.ts.map +1 -0
- package/dist/commonjs/interfaceHelpers.js +44 -0
- package/dist/commonjs/interfaceHelpers.js.map +1 -0
- package/dist/commonjs/interfaces.d.ts +664 -0
- package/dist/commonjs/interfaces.d.ts.map +1 -0
- package/dist/commonjs/interfaces.js +14 -0
- package/dist/commonjs/interfaces.js.map +1 -0
- package/dist/commonjs/log.d.ts +2 -0
- package/dist/commonjs/log.d.ts.map +1 -0
- package/dist/commonjs/log.js +8 -0
- package/dist/commonjs/log.js.map +1 -0
- package/dist/commonjs/operationHelpers.d.ts +14 -0
- package/dist/commonjs/operationHelpers.d.ts.map +1 -0
- package/dist/commonjs/operationHelpers.js +99 -0
- package/dist/commonjs/operationHelpers.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/pipeline.d.ts +34 -0
- package/dist/commonjs/pipeline.d.ts.map +1 -0
- package/dist/commonjs/pipeline.js +30 -0
- package/dist/commonjs/pipeline.js.map +1 -0
- package/dist/commonjs/serializationPolicy.d.ts +33 -0
- package/dist/commonjs/serializationPolicy.d.ts.map +1 -0
- package/dist/commonjs/serializationPolicy.js +157 -0
- package/dist/commonjs/serializationPolicy.js.map +1 -0
- package/dist/commonjs/serializer.d.ts +31 -0
- package/dist/commonjs/serializer.d.ts.map +1 -0
- package/dist/commonjs/serializer.js +926 -0
- package/dist/commonjs/serializer.js.map +1 -0
- package/dist/commonjs/serviceClient.d.ts +82 -0
- package/dist/commonjs/serviceClient.d.ts.map +1 -0
- package/dist/commonjs/serviceClient.js +177 -0
- package/dist/commonjs/serviceClient.js.map +1 -0
- package/dist/commonjs/tsdoc-metadata.json +11 -0
- package/dist/commonjs/urlHelpers.d.ts +7 -0
- package/dist/commonjs/urlHelpers.d.ts.map +1 -0
- package/dist/commonjs/urlHelpers.js +238 -0
- package/dist/commonjs/urlHelpers.js.map +1 -0
- package/dist/commonjs/utils.d.ts +37 -0
- package/dist/commonjs/utils.d.ts.map +1 -0
- package/dist/commonjs/utils.js +135 -0
- package/dist/commonjs/utils.js.map +1 -0
- package/dist/esm/authorizeRequestOnClaimChallenge.d.ts +43 -0
- package/dist/esm/authorizeRequestOnClaimChallenge.d.ts.map +1 -0
- package/dist/esm/authorizeRequestOnClaimChallenge.js +69 -0
- package/dist/esm/authorizeRequestOnClaimChallenge.js.map +1 -0
- package/dist/esm/authorizeRequestOnTenantChallenge.d.ts +8 -0
- package/dist/esm/authorizeRequestOnTenantChallenge.d.ts.map +1 -0
- package/dist/esm/authorizeRequestOnTenantChallenge.js +102 -0
- package/dist/esm/authorizeRequestOnTenantChallenge.js.map +1 -0
- package/dist/esm/base64.d.ts +25 -0
- package/dist/esm/base64.d.ts.map +1 -0
- package/{dist-esm/src → dist/esm}/base64.js +0 -2
- package/dist/esm/base64.js.map +1 -0
- package/dist/esm/deserializationPolicy.d.ts +45 -0
- package/dist/esm/deserializationPolicy.d.ts.map +1 -0
- package/dist/esm/deserializationPolicy.js +228 -0
- package/dist/esm/deserializationPolicy.js.map +1 -0
- package/dist/esm/httpClientCache.d.ts +3 -0
- package/dist/esm/httpClientCache.d.ts.map +1 -0
- package/dist/esm/httpClientCache.js +11 -0
- package/dist/esm/httpClientCache.js.map +1 -0
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaceHelpers.d.ts +14 -0
- package/dist/esm/interfaceHelpers.d.ts.map +1 -0
- package/dist/esm/interfaceHelpers.js +39 -0
- package/dist/esm/interfaceHelpers.js.map +1 -0
- package/dist/esm/interfaces.d.ts +664 -0
- package/dist/esm/interfaces.d.ts.map +1 -0
- package/dist/esm/interfaces.js +11 -0
- package/dist/esm/interfaces.js.map +1 -0
- package/dist/esm/log.d.ts +2 -0
- package/dist/esm/log.d.ts.map +1 -0
- package/dist/esm/log.js +5 -0
- package/dist/esm/log.js.map +1 -0
- package/dist/esm/operationHelpers.d.ts +14 -0
- package/dist/esm/operationHelpers.d.ts.map +1 -0
- package/dist/esm/operationHelpers.js +94 -0
- package/dist/esm/operationHelpers.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/pipeline.d.ts +34 -0
- package/dist/esm/pipeline.d.ts.map +1 -0
- package/dist/esm/pipeline.js +26 -0
- package/dist/esm/pipeline.js.map +1 -0
- package/dist/esm/serializationPolicy.d.ts +33 -0
- package/dist/esm/serializationPolicy.d.ts.map +1 -0
- package/dist/esm/serializationPolicy.js +151 -0
- package/dist/esm/serializationPolicy.js.map +1 -0
- package/dist/esm/serializer.d.ts +31 -0
- package/dist/esm/serializer.d.ts.map +1 -0
- package/dist/esm/serializer.js +921 -0
- package/dist/esm/serializer.js.map +1 -0
- package/dist/esm/serviceClient.d.ts +82 -0
- package/dist/esm/serviceClient.d.ts.map +1 -0
- package/dist/esm/serviceClient.js +173 -0
- package/dist/esm/serviceClient.js.map +1 -0
- package/dist/esm/urlHelpers.d.ts +7 -0
- package/dist/esm/urlHelpers.d.ts.map +1 -0
- package/dist/esm/urlHelpers.js +233 -0
- package/dist/esm/urlHelpers.js.map +1 -0
- package/dist/esm/utils.d.ts +37 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +128 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/react-native/authorizeRequestOnClaimChallenge.d.ts +43 -0
- package/dist/react-native/authorizeRequestOnClaimChallenge.d.ts.map +1 -0
- package/dist/react-native/authorizeRequestOnClaimChallenge.js +69 -0
- package/dist/react-native/authorizeRequestOnClaimChallenge.js.map +1 -0
- package/dist/react-native/authorizeRequestOnTenantChallenge.d.ts +8 -0
- package/dist/react-native/authorizeRequestOnTenantChallenge.d.ts.map +1 -0
- package/dist/react-native/authorizeRequestOnTenantChallenge.js +102 -0
- package/dist/react-native/authorizeRequestOnTenantChallenge.js.map +1 -0
- package/dist/react-native/base64.d.ts +25 -0
- package/dist/react-native/base64.d.ts.map +1 -0
- package/dist/react-native/base64.js +36 -0
- package/dist/react-native/base64.js.map +1 -0
- package/dist/react-native/deserializationPolicy.d.ts +45 -0
- package/dist/react-native/deserializationPolicy.d.ts.map +1 -0
- package/dist/react-native/deserializationPolicy.js +228 -0
- package/dist/react-native/deserializationPolicy.js.map +1 -0
- package/dist/react-native/httpClientCache.d.ts +3 -0
- package/dist/react-native/httpClientCache.d.ts.map +1 -0
- package/dist/react-native/httpClientCache.js +11 -0
- package/dist/react-native/httpClientCache.js.map +1 -0
- package/dist/react-native/index.d.ts +9 -0
- package/dist/react-native/index.d.ts.map +1 -0
- package/dist/react-native/index.js +11 -0
- package/dist/react-native/index.js.map +1 -0
- package/dist/react-native/interfaceHelpers.d.ts +14 -0
- package/dist/react-native/interfaceHelpers.d.ts.map +1 -0
- package/dist/react-native/interfaceHelpers.js +39 -0
- package/dist/react-native/interfaceHelpers.js.map +1 -0
- package/dist/react-native/interfaces.d.ts +664 -0
- package/dist/react-native/interfaces.d.ts.map +1 -0
- package/dist/react-native/interfaces.js +11 -0
- package/dist/react-native/interfaces.js.map +1 -0
- package/dist/react-native/log.d.ts +2 -0
- package/dist/react-native/log.d.ts.map +1 -0
- package/dist/react-native/log.js +5 -0
- package/dist/react-native/log.js.map +1 -0
- package/dist/react-native/operationHelpers.d.ts +14 -0
- package/dist/react-native/operationHelpers.d.ts.map +1 -0
- package/dist/react-native/operationHelpers.js +94 -0
- package/dist/react-native/operationHelpers.js.map +1 -0
- package/dist/react-native/package.json +3 -0
- package/dist/react-native/pipeline.d.ts +34 -0
- package/dist/react-native/pipeline.d.ts.map +1 -0
- package/dist/react-native/pipeline.js +26 -0
- package/dist/react-native/pipeline.js.map +1 -0
- package/dist/react-native/serializationPolicy.d.ts +33 -0
- package/dist/react-native/serializationPolicy.d.ts.map +1 -0
- package/dist/react-native/serializationPolicy.js +151 -0
- package/dist/react-native/serializationPolicy.js.map +1 -0
- package/dist/react-native/serializer.d.ts +31 -0
- package/dist/react-native/serializer.d.ts.map +1 -0
- package/dist/react-native/serializer.js +921 -0
- package/dist/react-native/serializer.js.map +1 -0
- package/dist/react-native/serviceClient.d.ts +82 -0
- package/dist/react-native/serviceClient.d.ts.map +1 -0
- package/dist/react-native/serviceClient.js +173 -0
- package/dist/react-native/serviceClient.js.map +1 -0
- package/dist/react-native/urlHelpers.d.ts +7 -0
- package/dist/react-native/urlHelpers.d.ts.map +1 -0
- package/dist/react-native/urlHelpers.js +233 -0
- package/dist/react-native/urlHelpers.js.map +1 -0
- package/dist/react-native/utils.d.ts +37 -0
- package/dist/react-native/utils.d.ts.map +1 -0
- package/dist/react-native/utils.js +128 -0
- package/dist/react-native/utils.js.map +1 -0
- package/package.json +74 -61
- package/dist/index.js +0 -2185
- package/dist/index.js.map +0 -1
- package/dist-esm/src/authorizeRequestOnClaimChallenge.js.map +0 -1
- package/dist-esm/src/authorizeRequestOnTenantChallenge.js.map +0 -1
- package/dist-esm/src/base64.browser.js.map +0 -1
- package/dist-esm/src/base64.js.map +0 -1
- package/dist-esm/src/deserializationPolicy.js.map +0 -1
- package/dist-esm/src/index.js +0 -11
- package/dist-esm/src/index.js.map +0 -1
- package/dist-esm/src/interfaceHelpers.js.map +0 -1
- package/dist-esm/src/operationHelpers.js.map +0 -1
- package/dist-esm/src/pipeline.js.map +0 -1
- package/dist-esm/src/serializationPolicy.js.map +0 -1
- package/dist-esm/src/serializer.js.map +0 -1
- package/dist-esm/src/serviceClient.js.map +0 -1
- package/dist-esm/src/urlHelpers.js.map +0 -1
- package/dist-esm/src/utils.js.map +0 -1
- /package/{dist-esm/src → dist/browser}/httpClientCache.js +0 -0
- /package/{dist-esm/src → dist/browser}/httpClientCache.js.map +0 -0
- /package/{dist-esm/src → dist/browser}/interfaces.js +0 -0
- /package/{dist-esm/src → dist/browser}/interfaces.js.map +0 -0
- /package/{dist-esm/src → dist/browser}/log.js +0 -0
- /package/{dist-esm/src → dist/browser}/log.js.map +0 -0
- /package/{dist-esm/src → dist/browser}/operationHelpers.js +0 -0
- /package/{types/latest → dist}/core-client.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { AuthorizeRequestOnChallengeOptions } from "@azure/core-rest-pipeline";
|
|
2
|
+
/**
|
|
3
|
+
* Converts: `Bearer a="b", c="d", Bearer d="e", f="g"`.
|
|
4
|
+
* Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseCAEChallenge(challenges: string): any[];
|
|
9
|
+
/**
|
|
10
|
+
* CAE Challenge structure
|
|
11
|
+
*/
|
|
12
|
+
export interface CAEChallenge {
|
|
13
|
+
scope: string;
|
|
14
|
+
claims: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges:
|
|
18
|
+
* [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation).
|
|
19
|
+
*
|
|
20
|
+
* Call the `bearerTokenAuthenticationPolicy` with the following options:
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline";
|
|
24
|
+
* import { authorizeRequestOnClaimChallenge } from "@azure/core-client";
|
|
25
|
+
*
|
|
26
|
+
* const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({
|
|
27
|
+
* authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges.
|
|
32
|
+
* When it can't complete a challenge it will return the 401 (unauthorized) response from ARM.
|
|
33
|
+
*
|
|
34
|
+
* Example challenge with claims:
|
|
35
|
+
*
|
|
36
|
+
* ```
|
|
37
|
+
* Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token",
|
|
38
|
+
* error_description="User session has been revoked",
|
|
39
|
+
* claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0="
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function authorizeRequestOnClaimChallenge(onChallengeOptions: AuthorizeRequestOnChallengeOptions): Promise<boolean>;
|
|
43
|
+
//# sourceMappingURL=authorizeRequestOnClaimChallenge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.authorizeRequestOnClaimChallenge = exports.parseCAEChallenge = void 0;
|
|
6
|
+
const log_js_1 = require("./log.js");
|
|
7
|
+
const base64_js_1 = require("./base64.js");
|
|
8
|
+
/**
|
|
9
|
+
* Converts: `Bearer a="b", c="d", Bearer d="e", f="g"`.
|
|
10
|
+
* Into: `[ { a: 'b', c: 'd' }, { d: 'e', f: 'g' } ]`.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
function parseCAEChallenge(challenges) {
|
|
15
|
+
const bearerChallenges = `, ${challenges.trim()}`.split(", Bearer ").filter((x) => x);
|
|
16
|
+
return bearerChallenges.map((challenge) => {
|
|
17
|
+
const challengeParts = `${challenge.trim()}, `.split('", ').filter((x) => x);
|
|
18
|
+
const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split('="')));
|
|
19
|
+
// Key-value pairs to plain object:
|
|
20
|
+
return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
exports.parseCAEChallenge = parseCAEChallenge;
|
|
24
|
+
/**
|
|
25
|
+
* This function can be used as a callback for the `bearerTokenAuthenticationPolicy` of `@azure/core-rest-pipeline`, to support CAE challenges:
|
|
26
|
+
* [Continuous Access Evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation).
|
|
27
|
+
*
|
|
28
|
+
* Call the `bearerTokenAuthenticationPolicy` with the following options:
|
|
29
|
+
*
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { bearerTokenAuthenticationPolicy } from "@azure/core-rest-pipeline";
|
|
32
|
+
* import { authorizeRequestOnClaimChallenge } from "@azure/core-client";
|
|
33
|
+
*
|
|
34
|
+
* const bearerTokenAuthenticationPolicy = bearerTokenAuthenticationPolicy({
|
|
35
|
+
* authorizeRequestOnChallenge: authorizeRequestOnClaimChallenge
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* Once provided, the `bearerTokenAuthenticationPolicy` policy will internally handle Continuous Access Evaluation (CAE) challenges.
|
|
40
|
+
* When it can't complete a challenge it will return the 401 (unauthorized) response from ARM.
|
|
41
|
+
*
|
|
42
|
+
* Example challenge with claims:
|
|
43
|
+
*
|
|
44
|
+
* ```
|
|
45
|
+
* Bearer authorization_uri="https://login.windows-ppe.net/", error="invalid_token",
|
|
46
|
+
* error_description="User session has been revoked",
|
|
47
|
+
* claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwMzc0MjgwMCJ9fX0="
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
async function authorizeRequestOnClaimChallenge(onChallengeOptions) {
|
|
51
|
+
const { scopes, response } = onChallengeOptions;
|
|
52
|
+
const logger = onChallengeOptions.logger || log_js_1.logger;
|
|
53
|
+
const challenge = response.headers.get("WWW-Authenticate");
|
|
54
|
+
if (!challenge) {
|
|
55
|
+
logger.info(`The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`);
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
const challenges = parseCAEChallenge(challenge) || [];
|
|
59
|
+
const parsedChallenge = challenges.find((x) => x.claims);
|
|
60
|
+
if (!parsedChallenge) {
|
|
61
|
+
logger.info(`The WWW-Authenticate header was missing the necessary "claims" to perform the Continuous Access Evaluation authentication flow.`);
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
const accessToken = await onChallengeOptions.getAccessToken(parsedChallenge.scope ? [parsedChallenge.scope] : scopes, {
|
|
65
|
+
claims: (0, base64_js_1.decodeStringToString)(parsedChallenge.claims),
|
|
66
|
+
});
|
|
67
|
+
if (!accessToken) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
onChallengeOptions.request.headers.set("Authorization", `Bearer ${accessToken.token}`);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
exports.authorizeRequestOnClaimChallenge = authorizeRequestOnClaimChallenge;
|
|
74
|
+
//# sourceMappingURL=authorizeRequestOnClaimChallenge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,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<boolean> {\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"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AuthorizeRequestOnChallengeOptions } from "@azure/core-rest-pipeline";
|
|
2
|
+
/**
|
|
3
|
+
* Defines a callback to handle auth challenge for Storage APIs.
|
|
4
|
+
* This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge
|
|
5
|
+
* Handling has specific features for storage that departs to the general AAD challenge docs.
|
|
6
|
+
**/
|
|
7
|
+
export declare const authorizeRequestOnTenantChallenge: (challengeOptions: AuthorizeRequestOnChallengeOptions) => Promise<boolean>;
|
|
8
|
+
//# sourceMappingURL=authorizeRequestOnTenantChallenge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorizeRequestOnTenantChallenge.d.ts","sourceRoot":"","sources":["../../src/authorizeRequestOnTenantChallenge.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kCAAkC,EAGnC,MAAM,2BAA2B,CAAC;AAoBnC;;;;IAII;AACJ,eAAO,MAAM,iCAAiC,EAAE,CAC9C,gBAAgB,EAAE,kCAAkC,KACjD,OAAO,CAAC,OAAO,CAuBnB,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.authorizeRequestOnTenantChallenge = void 0;
|
|
6
|
+
/**
|
|
7
|
+
* A set of constants used internally when processing requests.
|
|
8
|
+
*/
|
|
9
|
+
const Constants = {
|
|
10
|
+
DefaultScope: "/.default",
|
|
11
|
+
/**
|
|
12
|
+
* Defines constants for use with HTTP headers.
|
|
13
|
+
*/
|
|
14
|
+
HeaderConstants: {
|
|
15
|
+
/**
|
|
16
|
+
* The Authorization header.
|
|
17
|
+
*/
|
|
18
|
+
AUTHORIZATION: "authorization",
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Defines a callback to handle auth challenge for Storage APIs.
|
|
23
|
+
* This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge
|
|
24
|
+
* Handling has specific features for storage that departs to the general AAD challenge docs.
|
|
25
|
+
**/
|
|
26
|
+
const authorizeRequestOnTenantChallenge = async (challengeOptions) => {
|
|
27
|
+
const requestOptions = requestToOptions(challengeOptions.request);
|
|
28
|
+
const challenge = getChallenge(challengeOptions.response);
|
|
29
|
+
if (challenge) {
|
|
30
|
+
const challengeInfo = parseChallenge(challenge);
|
|
31
|
+
const challengeScopes = buildScopes(challengeOptions, challengeInfo);
|
|
32
|
+
const tenantId = extractTenantId(challengeInfo);
|
|
33
|
+
const accessToken = await challengeOptions.getAccessToken(challengeScopes, {
|
|
34
|
+
...requestOptions,
|
|
35
|
+
tenantId,
|
|
36
|
+
});
|
|
37
|
+
if (!accessToken) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${accessToken.token}`);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
};
|
|
45
|
+
exports.authorizeRequestOnTenantChallenge = authorizeRequestOnTenantChallenge;
|
|
46
|
+
/**
|
|
47
|
+
* Extracts the tenant id from the challenge information
|
|
48
|
+
* The tenant id is contained in the authorization_uri as the first
|
|
49
|
+
* path part.
|
|
50
|
+
*/
|
|
51
|
+
function extractTenantId(challengeInfo) {
|
|
52
|
+
const parsedAuthUri = new URL(challengeInfo.authorization_uri);
|
|
53
|
+
const pathSegments = parsedAuthUri.pathname.split("/");
|
|
54
|
+
const tenantId = pathSegments[1];
|
|
55
|
+
return tenantId;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Builds the authentication scopes based on the information that comes in the
|
|
59
|
+
* challenge information. Scopes url is present in the resource_id, if it is empty
|
|
60
|
+
* we keep using the original scopes.
|
|
61
|
+
*/
|
|
62
|
+
function buildScopes(challengeOptions, challengeInfo) {
|
|
63
|
+
if (!challengeInfo.resource_uri) {
|
|
64
|
+
return challengeOptions.scopes;
|
|
65
|
+
}
|
|
66
|
+
const challengeScopes = new URL(challengeInfo.resource_uri);
|
|
67
|
+
challengeScopes.pathname = Constants.DefaultScope;
|
|
68
|
+
return [challengeScopes.toString()];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* We will retrieve the challenge only if the response status code was 401,
|
|
72
|
+
* and if the response contained the header "WWW-Authenticate" with a non-empty value.
|
|
73
|
+
*/
|
|
74
|
+
function getChallenge(response) {
|
|
75
|
+
const challenge = response.headers.get("WWW-Authenticate");
|
|
76
|
+
if (response.status === 401 && challenge) {
|
|
77
|
+
return challenge;
|
|
78
|
+
}
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Converts: `Bearer a="b" c="d"`.
|
|
83
|
+
* Into: `[ { a: 'b', c: 'd' }]`.
|
|
84
|
+
*
|
|
85
|
+
* @internal
|
|
86
|
+
*/
|
|
87
|
+
function parseChallenge(challenge) {
|
|
88
|
+
const bearerChallenge = challenge.slice("Bearer ".length);
|
|
89
|
+
const challengeParts = `${bearerChallenge.trim()} `.split(" ").filter((x) => x);
|
|
90
|
+
const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split("=")));
|
|
91
|
+
// Key-value pairs to plain object:
|
|
92
|
+
return keyValuePairs.reduce((a, b) => ({ ...a, ...b }), {});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Extracts the options form a Pipeline Request for later re-use
|
|
96
|
+
*/
|
|
97
|
+
function requestToOptions(request) {
|
|
98
|
+
return {
|
|
99
|
+
abortSignal: request.abortSignal,
|
|
100
|
+
requestOptions: {
|
|
101
|
+
timeout: request.timeout,
|
|
102
|
+
},
|
|
103
|
+
tracingOptions: request.tracingOptions,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=authorizeRequestOnTenantChallenge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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\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<boolean> = 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 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 {\n const parsedAuthUri = new URL(challengeInfo.authorization_uri);\n const pathSegments = parsedAuthUri.pathname.split(\"/\");\n const tenantId = pathSegments[1];\n\n return tenantId;\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_uri) {\n return challengeOptions.scopes;\n }\n\n const challengeScopes = new URL(challengeInfo.resource_uri);\n challengeScopes.pathname = Constants.DefaultScope;\n return [challengeScopes.toString()];\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_uri?: 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"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encodes a string in base64 format.
|
|
3
|
+
* @param value - the string to encode
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare function encodeString(value: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Encodes a byte array in base64 format.
|
|
9
|
+
* @param value - the Uint8Aray to encode
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export declare function encodeByteArray(value: Uint8Array): string;
|
|
13
|
+
/**
|
|
14
|
+
* Decodes a base64 string into a byte array.
|
|
15
|
+
* @param value - the base64 string to decode
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export declare function decodeString(value: string): Uint8Array;
|
|
19
|
+
/**
|
|
20
|
+
* Decodes a base64 string into a string.
|
|
21
|
+
* @param value - the base64 string to decode
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare function decodeStringToString(value: string): string;
|
|
25
|
+
//# sourceMappingURL=base64.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.decodeStringToString = exports.decodeString = exports.encodeByteArray = exports.encodeString = void 0;
|
|
6
|
+
/**
|
|
7
|
+
* Encodes a string in base64 format.
|
|
8
|
+
* @param value - the string to encode
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
function encodeString(value) {
|
|
12
|
+
return Buffer.from(value).toString("base64");
|
|
13
|
+
}
|
|
14
|
+
exports.encodeString = encodeString;
|
|
15
|
+
/**
|
|
16
|
+
* Encodes a byte array in base64 format.
|
|
17
|
+
* @param value - the Uint8Aray to encode
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
function encodeByteArray(value) {
|
|
21
|
+
const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);
|
|
22
|
+
return bufferValue.toString("base64");
|
|
23
|
+
}
|
|
24
|
+
exports.encodeByteArray = encodeByteArray;
|
|
25
|
+
/**
|
|
26
|
+
* Decodes a base64 string into a byte array.
|
|
27
|
+
* @param value - the base64 string to decode
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
function decodeString(value) {
|
|
31
|
+
return Buffer.from(value, "base64");
|
|
32
|
+
}
|
|
33
|
+
exports.decodeString = decodeString;
|
|
34
|
+
/**
|
|
35
|
+
* Decodes a base64 string into a string.
|
|
36
|
+
* @param value - the base64 string to decode
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
function decodeStringToString(value) {
|
|
40
|
+
return Buffer.from(value, "base64").toString();
|
|
41
|
+
}
|
|
42
|
+
exports.decodeStringToString = decodeStringToString;
|
|
43
|
+
//# sourceMappingURL=base64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { SerializerOptions, XmlOptions } from "./interfaces.js";
|
|
2
|
+
import { PipelinePolicy } from "@azure/core-rest-pipeline";
|
|
3
|
+
/**
|
|
4
|
+
* The programmatic identifier of the deserializationPolicy.
|
|
5
|
+
*/
|
|
6
|
+
export declare const deserializationPolicyName = "deserializationPolicy";
|
|
7
|
+
/**
|
|
8
|
+
* Options to configure API response deserialization.
|
|
9
|
+
*/
|
|
10
|
+
export interface DeserializationPolicyOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Configures the expected content types for the deserialization of
|
|
13
|
+
* JSON and XML response bodies.
|
|
14
|
+
*/
|
|
15
|
+
expectedContentTypes?: DeserializationContentTypes;
|
|
16
|
+
/**
|
|
17
|
+
* A function that is able to parse XML. Required for XML support.
|
|
18
|
+
*/
|
|
19
|
+
parseXML?: (str: string, opts?: XmlOptions) => Promise<any>;
|
|
20
|
+
/**
|
|
21
|
+
* Configures behavior of xml parser and builder.
|
|
22
|
+
*/
|
|
23
|
+
serializerOptions?: SerializerOptions;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The content-types that will indicate that an operation response should be deserialized in a
|
|
27
|
+
* particular way.
|
|
28
|
+
*/
|
|
29
|
+
export interface DeserializationContentTypes {
|
|
30
|
+
/**
|
|
31
|
+
* The content-types that indicate that an operation response should be deserialized as JSON.
|
|
32
|
+
* Defaults to [ "application/json", "text/json" ].
|
|
33
|
+
*/
|
|
34
|
+
json?: string[];
|
|
35
|
+
/**
|
|
36
|
+
* The content-types that indicate that an operation response should be deserialized as XML.
|
|
37
|
+
* Defaults to [ "application/xml", "application/atom+xml" ].
|
|
38
|
+
*/
|
|
39
|
+
xml?: string[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* This policy handles parsing out responses according to OperationSpecs on the request.
|
|
43
|
+
*/
|
|
44
|
+
export declare function deserializationPolicy(options?: DeserializationPolicyOptions): PipelinePolicy;
|
|
45
|
+
//# sourceMappingURL=deserializationPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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"}
|