@aws-amplify/api-rest 4.5.0 → 4.5.1-unstable.91c2933.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,15 +32,20 @@ const transferHandler = async (amplify, options, iamAuthApplicable, signingServi
32
32
  method,
33
33
  body: resolvedBody,
34
34
  };
35
+ const { retryStrategy: libraryRetryStrategy, defaultAuthMode: libraryDefaultAuthMode, } = (0, utils_1.resolveLibraryOptions)(amplify);
35
36
  const baseOptions = {
36
- retryDecider: getRetryDeciderFromStrategy(retryStrategy ?? amplify?.libraryOptions?.API?.REST?.retryStrategy),
37
+ retryDecider: getRetryDeciderFromStrategy(retryStrategy ?? libraryRetryStrategy),
37
38
  computeDelay: aws_client_utils_1.jitteredBackoff,
38
39
  withCrossDomainCredentials: withCredentials,
39
40
  abortSignal,
40
41
  };
41
- const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);
42
+ const defaultAuthMode = options.defaultAuthMode ?? libraryDefaultAuthMode;
43
+ let credentials = null;
44
+ if (defaultAuthMode !== 'none') {
45
+ credentials = await resolveCredentials(amplify);
46
+ }
42
47
  let response;
43
- const credentials = await resolveCredentials(amplify);
48
+ const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);
44
49
  if (isIamAuthApplicable && credentials) {
45
50
  const signingInfoFromUrl = (0, utils_1.parseSigningInfo)(url);
46
51
  const signingService = signingServiceInfo?.service ?? signingInfoFromUrl.service;
@@ -1 +1 @@
1
- {"version":3,"file":"transferHandler.js","sources":["../../../../src/apis/common/transferHandler.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transferHandler = void 0;\nconst aws_client_utils_1 = require(\"@aws-amplify/core/internals/aws-client-utils\");\nconst utils_1 = require(\"../../utils\");\nconst resolveHeaders_1 = require(\"../../utils/resolveHeaders\");\nconst authenticatedHandler_1 = require(\"./baseHandlers/authenticatedHandler\");\nconst unauthenticatedHandler_1 = require(\"./baseHandlers/unauthenticatedHandler\");\n/**\n * Make REST API call with best-effort IAM auth.\n * @param amplify Amplify instance to to resolve credentials and tokens. Should use different instance in client-side\n * and SSR\n * @param options Options accepted from public API options when calling the handlers.\n * @param signingServiceInfo Internal-only options enable IAM auth as well as to to overwrite the IAM signing service\n * and region. If specified, and NONE of API Key header or Auth header is present, IAM auth will be used.\n * @param iamAuthApplicable Callback function that is used to determine if IAM Auth should be used or not.\n *\n * @internal\n */\nconst transferHandler = async (amplify, options, iamAuthApplicable, signingServiceInfo) => {\n const { url, method, headers, body, withCredentials, abortSignal, retryStrategy, } = options;\n const resolvedBody = body\n ? body instanceof FormData\n ? body\n : JSON.stringify(body ?? '')\n : undefined;\n const resolvedHeaders = (0, resolveHeaders_1.resolveHeaders)(headers, body);\n const request = {\n url,\n headers: resolvedHeaders,\n method,\n body: resolvedBody,\n };\n const baseOptions = {\n retryDecider: getRetryDeciderFromStrategy(retryStrategy ?? amplify?.libraryOptions?.API?.REST?.retryStrategy),\n computeDelay: aws_client_utils_1.jitteredBackoff,\n withCrossDomainCredentials: withCredentials,\n abortSignal,\n };\n const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);\n let response;\n const credentials = await resolveCredentials(amplify);\n if (isIamAuthApplicable && credentials) {\n const signingInfoFromUrl = (0, utils_1.parseSigningInfo)(url);\n const signingService = signingServiceInfo?.service ?? signingInfoFromUrl.service;\n const signingRegion = signingServiceInfo?.region ?? signingInfoFromUrl.region;\n response = await (0, authenticatedHandler_1.authenticatedHandler)(request, {\n ...baseOptions,\n credentials,\n region: signingRegion,\n service: signingService,\n });\n }\n else {\n response = await (0, unauthenticatedHandler_1.unauthenticatedHandler)(request, {\n ...baseOptions,\n });\n }\n // Clean-up un-modeled properties from response.\n return {\n statusCode: response.statusCode,\n headers: response.headers,\n body: response.body,\n };\n};\nexports.transferHandler = transferHandler;\nconst getRetryDeciderFromStrategy = (retryStrategy) => {\n const strategy = retryStrategy?.strategy;\n if (strategy === 'no-retry') {\n return () => Promise.resolve({ retryable: false });\n }\n return (0, aws_client_utils_1.getRetryDecider)(utils_1.parseRestApiServiceError);\n};\nconst resolveCredentials = async (amplify) => {\n try {\n const { credentials } = await amplify.Auth.fetchAuthSession();\n if (credentials) {\n return credentials;\n }\n }\n catch (e) {\n utils_1.logger.debug('No credentials available, the request will be unsigned.');\n }\n return null;\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transferHandler.js","sources":["../../../../src/apis/common/transferHandler.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transferHandler = void 0;\nconst aws_client_utils_1 = require(\"@aws-amplify/core/internals/aws-client-utils\");\nconst utils_1 = require(\"../../utils\");\nconst resolveHeaders_1 = require(\"../../utils/resolveHeaders\");\nconst authenticatedHandler_1 = require(\"./baseHandlers/authenticatedHandler\");\nconst unauthenticatedHandler_1 = require(\"./baseHandlers/unauthenticatedHandler\");\n/**\n * Make REST API call with best-effort IAM auth.\n * @param amplify Amplify instance to to resolve credentials and tokens. Should use different instance in client-side\n * and SSR\n * @param options Options accepted from public API options when calling the handlers.\n * @param signingServiceInfo Internal-only options enable IAM auth as well as to to overwrite the IAM signing service\n * and region. If specified, and NONE of API Key header or Auth header is present, IAM auth will be used.\n * @param iamAuthApplicable Callback function that is used to determine if IAM Auth should be used or not.\n *\n * @internal\n */\nconst transferHandler = async (amplify, options, iamAuthApplicable, signingServiceInfo) => {\n const { url, method, headers, body, withCredentials, abortSignal, retryStrategy, } = options;\n const resolvedBody = body\n ? body instanceof FormData\n ? body\n : JSON.stringify(body ?? '')\n : undefined;\n const resolvedHeaders = (0, resolveHeaders_1.resolveHeaders)(headers, body);\n const request = {\n url,\n headers: resolvedHeaders,\n method,\n body: resolvedBody,\n };\n const { retryStrategy: libraryRetryStrategy, defaultAuthMode: libraryDefaultAuthMode, } = (0, utils_1.resolveLibraryOptions)(amplify);\n const baseOptions = {\n retryDecider: getRetryDeciderFromStrategy(retryStrategy ?? libraryRetryStrategy),\n computeDelay: aws_client_utils_1.jitteredBackoff,\n withCrossDomainCredentials: withCredentials,\n abortSignal,\n };\n const defaultAuthMode = options.defaultAuthMode ?? libraryDefaultAuthMode;\n let credentials = null;\n if (defaultAuthMode !== 'none') {\n credentials = await resolveCredentials(amplify);\n }\n let response;\n const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);\n if (isIamAuthApplicable && credentials) {\n const signingInfoFromUrl = (0, utils_1.parseSigningInfo)(url);\n const signingService = signingServiceInfo?.service ?? signingInfoFromUrl.service;\n const signingRegion = signingServiceInfo?.region ?? signingInfoFromUrl.region;\n response = await (0, authenticatedHandler_1.authenticatedHandler)(request, {\n ...baseOptions,\n credentials,\n region: signingRegion,\n service: signingService,\n });\n }\n else {\n response = await (0, unauthenticatedHandler_1.unauthenticatedHandler)(request, {\n ...baseOptions,\n });\n }\n // Clean-up un-modeled properties from response.\n return {\n statusCode: response.statusCode,\n headers: response.headers,\n body: response.body,\n };\n};\nexports.transferHandler = transferHandler;\nconst getRetryDeciderFromStrategy = (retryStrategy) => {\n const strategy = retryStrategy?.strategy;\n if (strategy === 'no-retry') {\n return () => Promise.resolve({ retryable: false });\n }\n return (0, aws_client_utils_1.getRetryDecider)(utils_1.parseRestApiServiceError);\n};\nconst resolveCredentials = async (amplify) => {\n try {\n const { credentials } = await amplify.Auth.fetchAuthSession();\n if (credentials) {\n return credentials;\n }\n }\n catch (e) {\n utils_1.logger.debug('No credentials available, the request will be unsigned.');\n }\n return null;\n};\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
4
  // SPDX-License-Identifier: Apache-2.0
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.logger = exports.resolveApiUrl = exports.parseRestApiServiceError = exports.parseSigningInfo = exports.createCancellableOperation = void 0;
6
+ exports.logger = exports.resolveLibraryOptions = exports.resolveApiUrl = exports.parseRestApiServiceError = exports.parseSigningInfo = exports.createCancellableOperation = void 0;
7
7
  var createCancellableOperation_1 = require("./createCancellableOperation");
8
8
  Object.defineProperty(exports, "createCancellableOperation", { enumerable: true, get: function () { return createCancellableOperation_1.createCancellableOperation; } });
9
9
  var parseSigningInfo_1 = require("./parseSigningInfo");
@@ -12,6 +12,8 @@ var serviceError_1 = require("./serviceError");
12
12
  Object.defineProperty(exports, "parseRestApiServiceError", { enumerable: true, get: function () { return serviceError_1.parseRestApiServiceError; } });
13
13
  var resolveApiUrl_1 = require("./resolveApiUrl");
14
14
  Object.defineProperty(exports, "resolveApiUrl", { enumerable: true, get: function () { return resolveApiUrl_1.resolveApiUrl; } });
15
+ var resolveLibraryOptions_1 = require("./resolveLibraryOptions");
16
+ Object.defineProperty(exports, "resolveLibraryOptions", { enumerable: true, get: function () { return resolveLibraryOptions_1.resolveLibraryOptions; } });
15
17
  var logger_1 = require("./logger");
16
18
  Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
17
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/utils/index.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = exports.resolveApiUrl = exports.parseRestApiServiceError = exports.parseSigningInfo = exports.createCancellableOperation = void 0;\nvar createCancellableOperation_1 = require(\"./createCancellableOperation\");\nObject.defineProperty(exports, \"createCancellableOperation\", { enumerable: true, get: function () { return createCancellableOperation_1.createCancellableOperation; } });\nvar parseSigningInfo_1 = require(\"./parseSigningInfo\");\nObject.defineProperty(exports, \"parseSigningInfo\", { enumerable: true, get: function () { return parseSigningInfo_1.parseSigningInfo; } });\nvar serviceError_1 = require(\"./serviceError\");\nObject.defineProperty(exports, \"parseRestApiServiceError\", { enumerable: true, get: function () { return serviceError_1.parseRestApiServiceError; } });\nvar resolveApiUrl_1 = require(\"./resolveApiUrl\");\nObject.defineProperty(exports, \"resolveApiUrl\", { enumerable: true, get: function () { return resolveApiUrl_1.resolveApiUrl; } });\nvar logger_1 = require(\"./logger\");\nObject.defineProperty(exports, \"logger\", { enumerable: true, get: function () { return logger_1.logger; } });\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,0BAA0B,GAAG,MAAM;AAClJ,IAAI,4BAA4B,GAAG,OAAO,CAAC,8BAA8B,CAAC;AAC1E,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,4BAA4B,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,4BAA4B,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;AACxK,IAAI,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;AACtD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1I,IAAI,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;AAC9C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,0BAA0B,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,cAAc,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;AACtJ,IAAI,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAChD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AACjI,IAAI,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;AAClC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/utils/index.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = exports.resolveLibraryOptions = exports.resolveApiUrl = exports.parseRestApiServiceError = exports.parseSigningInfo = exports.createCancellableOperation = void 0;\nvar createCancellableOperation_1 = require(\"./createCancellableOperation\");\nObject.defineProperty(exports, \"createCancellableOperation\", { enumerable: true, get: function () { return createCancellableOperation_1.createCancellableOperation; } });\nvar parseSigningInfo_1 = require(\"./parseSigningInfo\");\nObject.defineProperty(exports, \"parseSigningInfo\", { enumerable: true, get: function () { return parseSigningInfo_1.parseSigningInfo; } });\nvar serviceError_1 = require(\"./serviceError\");\nObject.defineProperty(exports, \"parseRestApiServiceError\", { enumerable: true, get: function () { return serviceError_1.parseRestApiServiceError; } });\nvar resolveApiUrl_1 = require(\"./resolveApiUrl\");\nObject.defineProperty(exports, \"resolveApiUrl\", { enumerable: true, get: function () { return resolveApiUrl_1.resolveApiUrl; } });\nvar resolveLibraryOptions_1 = require(\"./resolveLibraryOptions\");\nObject.defineProperty(exports, \"resolveLibraryOptions\", { enumerable: true, get: function () { return resolveLibraryOptions_1.resolveLibraryOptions; } });\nvar logger_1 = require(\"./logger\");\nObject.defineProperty(exports, \"logger\", { enumerable: true, get: function () { return logger_1.logger; } });\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,0BAA0B,GAAG,MAAM;AAClL,IAAI,4BAA4B,GAAG,OAAO,CAAC,8BAA8B,CAAC;AAC1E,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,4BAA4B,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,4BAA4B,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;AACxK,IAAI,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;AACtD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1I,IAAI,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;AAC9C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,0BAA0B,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,cAAc,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;AACtJ,IAAI,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAChD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;AACjI,IAAI,uBAAuB,GAAG,OAAO,CAAC,yBAAyB,CAAC;AAChE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,uBAAuB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,uBAAuB,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;AACzJ,IAAI,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;AAClC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;;"}
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ // SPDX-License-Identifier: Apache-2.0
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveLibraryOptions = void 0;
7
+ /**
8
+ * @internal
9
+ */
10
+ const resolveLibraryOptions = (amplify) => {
11
+ const retryStrategy = amplify.libraryOptions?.API?.REST?.retryStrategy;
12
+ const defaultAuthMode = amplify.libraryOptions?.API?.REST?.defaultAuthMode;
13
+ return { retryStrategy, defaultAuthMode };
14
+ };
15
+ exports.resolveLibraryOptions = resolveLibraryOptions;
16
+ //# sourceMappingURL=resolveLibraryOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveLibraryOptions.js","sources":["../../../src/utils/resolveLibraryOptions.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveLibraryOptions = void 0;\n/**\n * @internal\n */\nconst resolveLibraryOptions = (amplify) => {\n const retryStrategy = amplify.libraryOptions?.API?.REST?.retryStrategy;\n const defaultAuthMode = amplify.libraryOptions?.API?.REST?.defaultAuthMode;\n return { retryStrategy, defaultAuthMode };\n};\nexports.resolveLibraryOptions = resolveLibraryOptions;\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,OAAO,CAAC,qBAAqB,GAAG,MAAM;AACtC;AACA;AACA;AACA,MAAM,qBAAqB,GAAG,CAAC,OAAO,KAAK;AAC3C,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa;AAC1E,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe;AAC9E,IAAI,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE;AAC7C,CAAC;AACD,OAAO,CAAC,qBAAqB,GAAG,qBAAqB;;"}
@@ -1,12 +1,13 @@
1
1
  import { AmplifyClassV6 } from '@aws-amplify/core';
2
2
  import { Headers, HttpRequest } from '@aws-amplify/core/internals/aws-client-utils';
3
- import { DocumentType, RetryStrategy } from '@aws-amplify/core/internals/utils';
3
+ import { DocumentType, RESTAuthMode, RetryStrategy } from '@aws-amplify/core/internals/utils';
4
4
  import { RestApiResponse, SigningServiceInfo } from '../../types';
5
5
  type HandlerOptions = Omit<HttpRequest, 'body' | 'headers'> & {
6
6
  body?: DocumentType | FormData;
7
7
  headers?: Headers;
8
8
  withCredentials?: boolean;
9
9
  retryStrategy?: RetryStrategy;
10
+ defaultAuthMode?: RESTAuthMode;
10
11
  };
11
12
  /**
12
13
  * Make REST API call with best-effort IAM auth.
@@ -4,6 +4,7 @@ import '../../errors/validation.mjs';
4
4
  import { parseRestApiServiceError } from '../../utils/serviceError.mjs';
5
5
  import { logger } from '../../utils/logger.mjs';
6
6
  import { parseSigningInfo } from '../../utils/parseSigningInfo.mjs';
7
+ import { resolveLibraryOptions } from '../../utils/resolveLibraryOptions.mjs';
7
8
  import { resolveHeaders } from '../../utils/resolveHeaders.mjs';
8
9
  import { authenticatedHandler } from './baseHandlers/authenticatedHandler.mjs';
9
10
  import { unauthenticatedHandler } from './baseHandlers/unauthenticatedHandler.mjs';
@@ -33,15 +34,20 @@ const transferHandler = async (amplify, options, iamAuthApplicable, signingServi
33
34
  method,
34
35
  body: resolvedBody,
35
36
  };
37
+ const { retryStrategy: libraryRetryStrategy, defaultAuthMode: libraryDefaultAuthMode, } = resolveLibraryOptions(amplify);
36
38
  const baseOptions = {
37
- retryDecider: getRetryDeciderFromStrategy(retryStrategy ?? amplify?.libraryOptions?.API?.REST?.retryStrategy),
39
+ retryDecider: getRetryDeciderFromStrategy(retryStrategy ?? libraryRetryStrategy),
38
40
  computeDelay: jitteredBackoff,
39
41
  withCrossDomainCredentials: withCredentials,
40
42
  abortSignal,
41
43
  };
42
- const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);
44
+ const defaultAuthMode = options.defaultAuthMode ?? libraryDefaultAuthMode;
45
+ let credentials = null;
46
+ if (defaultAuthMode !== 'none') {
47
+ credentials = await resolveCredentials(amplify);
48
+ }
43
49
  let response;
44
- const credentials = await resolveCredentials(amplify);
50
+ const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);
45
51
  if (isIamAuthApplicable && credentials) {
46
52
  const signingInfoFromUrl = parseSigningInfo(url);
47
53
  const signingService = signingServiceInfo?.service ?? signingInfoFromUrl.service;
@@ -1 +1 @@
1
- {"version":3,"file":"transferHandler.mjs","sources":["../../../../src/apis/common/transferHandler.ts"],"sourcesContent":["import { getRetryDecider, jitteredBackoff, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { logger, parseRestApiServiceError, parseSigningInfo, } from '../../utils';\nimport { resolveHeaders } from '../../utils/resolveHeaders';\nimport { authenticatedHandler } from './baseHandlers/authenticatedHandler';\nimport { unauthenticatedHandler } from './baseHandlers/unauthenticatedHandler';\n/**\n * Make REST API call with best-effort IAM auth.\n * @param amplify Amplify instance to to resolve credentials and tokens. Should use different instance in client-side\n * and SSR\n * @param options Options accepted from public API options when calling the handlers.\n * @param signingServiceInfo Internal-only options enable IAM auth as well as to to overwrite the IAM signing service\n * and region. If specified, and NONE of API Key header or Auth header is present, IAM auth will be used.\n * @param iamAuthApplicable Callback function that is used to determine if IAM Auth should be used or not.\n *\n * @internal\n */\nexport const transferHandler = async (amplify, options, iamAuthApplicable, signingServiceInfo) => {\n const { url, method, headers, body, withCredentials, abortSignal, retryStrategy, } = options;\n const resolvedBody = body\n ? body instanceof FormData\n ? body\n : JSON.stringify(body ?? '')\n : undefined;\n const resolvedHeaders = resolveHeaders(headers, body);\n const request = {\n url,\n headers: resolvedHeaders,\n method,\n body: resolvedBody,\n };\n const baseOptions = {\n retryDecider: getRetryDeciderFromStrategy(retryStrategy ?? amplify?.libraryOptions?.API?.REST?.retryStrategy),\n computeDelay: jitteredBackoff,\n withCrossDomainCredentials: withCredentials,\n abortSignal,\n };\n const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);\n let response;\n const credentials = await resolveCredentials(amplify);\n if (isIamAuthApplicable && credentials) {\n const signingInfoFromUrl = parseSigningInfo(url);\n const signingService = signingServiceInfo?.service ?? signingInfoFromUrl.service;\n const signingRegion = signingServiceInfo?.region ?? signingInfoFromUrl.region;\n response = await authenticatedHandler(request, {\n ...baseOptions,\n credentials,\n region: signingRegion,\n service: signingService,\n });\n }\n else {\n response = await unauthenticatedHandler(request, {\n ...baseOptions,\n });\n }\n // Clean-up un-modeled properties from response.\n return {\n statusCode: response.statusCode,\n headers: response.headers,\n body: response.body,\n };\n};\nconst getRetryDeciderFromStrategy = (retryStrategy) => {\n const strategy = retryStrategy?.strategy;\n if (strategy === 'no-retry') {\n return () => Promise.resolve({ retryable: false });\n }\n return getRetryDecider(parseRestApiServiceError);\n};\nconst resolveCredentials = async (amplify) => {\n try {\n const { credentials } = await amplify.Auth.fetchAuthSession();\n if (credentials) {\n return credentials;\n }\n }\n catch (e) {\n logger.debug('No credentials available, the request will be unsigned.');\n }\n return null;\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transferHandler.mjs","sources":["../../../../src/apis/common/transferHandler.ts"],"sourcesContent":["import { getRetryDecider, jitteredBackoff, } from '@aws-amplify/core/internals/aws-client-utils';\nimport { logger, parseRestApiServiceError, parseSigningInfo, resolveLibraryOptions, } from '../../utils';\nimport { resolveHeaders } from '../../utils/resolveHeaders';\nimport { authenticatedHandler } from './baseHandlers/authenticatedHandler';\nimport { unauthenticatedHandler } from './baseHandlers/unauthenticatedHandler';\n/**\n * Make REST API call with best-effort IAM auth.\n * @param amplify Amplify instance to to resolve credentials and tokens. Should use different instance in client-side\n * and SSR\n * @param options Options accepted from public API options when calling the handlers.\n * @param signingServiceInfo Internal-only options enable IAM auth as well as to to overwrite the IAM signing service\n * and region. If specified, and NONE of API Key header or Auth header is present, IAM auth will be used.\n * @param iamAuthApplicable Callback function that is used to determine if IAM Auth should be used or not.\n *\n * @internal\n */\nexport const transferHandler = async (amplify, options, iamAuthApplicable, signingServiceInfo) => {\n const { url, method, headers, body, withCredentials, abortSignal, retryStrategy, } = options;\n const resolvedBody = body\n ? body instanceof FormData\n ? body\n : JSON.stringify(body ?? '')\n : undefined;\n const resolvedHeaders = resolveHeaders(headers, body);\n const request = {\n url,\n headers: resolvedHeaders,\n method,\n body: resolvedBody,\n };\n const { retryStrategy: libraryRetryStrategy, defaultAuthMode: libraryDefaultAuthMode, } = resolveLibraryOptions(amplify);\n const baseOptions = {\n retryDecider: getRetryDeciderFromStrategy(retryStrategy ?? libraryRetryStrategy),\n computeDelay: jitteredBackoff,\n withCrossDomainCredentials: withCredentials,\n abortSignal,\n };\n const defaultAuthMode = options.defaultAuthMode ?? libraryDefaultAuthMode;\n let credentials = null;\n if (defaultAuthMode !== 'none') {\n credentials = await resolveCredentials(amplify);\n }\n let response;\n const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);\n if (isIamAuthApplicable && credentials) {\n const signingInfoFromUrl = parseSigningInfo(url);\n const signingService = signingServiceInfo?.service ?? signingInfoFromUrl.service;\n const signingRegion = signingServiceInfo?.region ?? signingInfoFromUrl.region;\n response = await authenticatedHandler(request, {\n ...baseOptions,\n credentials,\n region: signingRegion,\n service: signingService,\n });\n }\n else {\n response = await unauthenticatedHandler(request, {\n ...baseOptions,\n });\n }\n // Clean-up un-modeled properties from response.\n return {\n statusCode: response.statusCode,\n headers: response.headers,\n body: response.body,\n };\n};\nconst getRetryDeciderFromStrategy = (retryStrategy) => {\n const strategy = retryStrategy?.strategy;\n if (strategy === 'no-retry') {\n return () => Promise.resolve({ retryable: false });\n }\n return getRetryDecider(parseRestApiServiceError);\n};\nconst resolveCredentials = async (amplify) => {\n try {\n const { credentials } = await amplify.Auth.fetchAuthSession();\n if (credentials) {\n return credentials;\n }\n }\n catch (e) {\n logger.debug('No credentials available, the request will be unsigned.');\n }\n return null;\n};\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DocumentType, RetryStrategy } from '@aws-amplify/core/internals/utils';
1
+ import { DocumentType, RESTAuthMode, RetryStrategy } from '@aws-amplify/core/internals/utils';
2
2
  export type GetInput = ApiInput<RestApiOptionsBase>;
3
3
  export type PostInput = ApiInput<RestApiOptionsBase>;
4
4
  export type PutInput = ApiInput<RestApiOptionsBase>;
@@ -36,6 +36,7 @@ export interface RestApiOptionsBase {
36
36
  * @default ` { strategy: 'jittered-exponential-backoff' } `
37
37
  */
38
38
  retryStrategy?: RetryStrategy;
39
+ defaultAuthMode?: RESTAuthMode;
39
40
  /**
40
41
  * custom timeout in milliseconds.
41
42
  */
@@ -2,4 +2,5 @@ export { createCancellableOperation } from './createCancellableOperation';
2
2
  export { parseSigningInfo } from './parseSigningInfo';
3
3
  export { parseRestApiServiceError } from './serviceError';
4
4
  export { resolveApiUrl } from './resolveApiUrl';
5
+ export { resolveLibraryOptions } from './resolveLibraryOptions';
5
6
  export { logger } from './logger';
@@ -2,5 +2,6 @@ export { createCancellableOperation } from './createCancellableOperation.mjs';
2
2
  export { parseSigningInfo } from './parseSigningInfo.mjs';
3
3
  export { parseRestApiServiceError } from './serviceError.mjs';
4
4
  export { resolveApiUrl } from './resolveApiUrl.mjs';
5
+ export { resolveLibraryOptions } from './resolveLibraryOptions.mjs';
5
6
  export { logger } from './logger.mjs';
6
7
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,8 @@
1
+ import { AmplifyClassV6 } from '@aws-amplify/core';
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare const resolveLibraryOptions: (amplify: AmplifyClassV6) => {
6
+ retryStrategy: import("@aws-amplify/core/internals/utils").RetryStrategy | undefined;
7
+ defaultAuthMode: import("@aws-amplify/core/internals/utils").RESTAuthMode | undefined;
8
+ };
@@ -0,0 +1,13 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * @internal
5
+ */
6
+ const resolveLibraryOptions = (amplify) => {
7
+ const retryStrategy = amplify.libraryOptions?.API?.REST?.retryStrategy;
8
+ const defaultAuthMode = amplify.libraryOptions?.API?.REST?.defaultAuthMode;
9
+ return { retryStrategy, defaultAuthMode };
10
+ };
11
+
12
+ export { resolveLibraryOptions };
13
+ //# sourceMappingURL=resolveLibraryOptions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveLibraryOptions.mjs","sources":["../../../src/utils/resolveLibraryOptions.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * @internal\n */\nexport const resolveLibraryOptions = (amplify) => {\n const retryStrategy = amplify.libraryOptions?.API?.REST?.retryStrategy;\n const defaultAuthMode = amplify.libraryOptions?.API?.REST?.defaultAuthMode;\n return { retryStrategy, defaultAuthMode };\n};\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACY,MAAC,qBAAqB,GAAG,CAAC,OAAO,KAAK;AAClD,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa;AAC1E,IAAI,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe;AAC9E,IAAI,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE;AAC7C;;;;"}
package/package.json CHANGED
@@ -1,95 +1,95 @@
1
1
  {
2
- "name": "@aws-amplify/api-rest",
3
- "private": false,
4
- "version": "4.5.0",
5
- "description": "Api-rest category of aws-amplify",
6
- "main": "./dist/cjs/index.js",
7
- "module": "./dist/esm/index.mjs",
8
- "typings": "./dist/esm/index.d.ts",
9
- "react-native": "./dist/cjs/index.js",
10
- "publishConfig": {
11
- "access": "public"
12
- },
13
- "scripts": {
14
- "test": "npm run lint && jest -w 1 --coverage --logHeapUsage",
15
- "test:watch": "jest -w 1 --watch",
16
- "build-with-test": "npm test && npm build",
17
- "build:umd": "webpack && webpack --config ./webpack.config.dev.js",
18
- "build:esm-cjs": "rollup --forceExit -c rollup.config.mjs",
19
- "build:watch": "npm run build:esm-cjs -- --watch",
20
- "build": "npm run clean && npm run build:esm-cjs && npm run build:umd",
21
- "clean": "npm run clean:size && rimraf dist lib lib-esm",
22
- "clean:size": "rimraf dual-publish-tmp tmp*",
23
- "format": "echo \"Not implemented\"",
24
- "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage",
25
- "lint:fix": "eslint '**/*.{ts,tsx}' --fix",
26
- "ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 70.0"
27
- },
28
- "exports": {
29
- ".": {
30
- "react-native": "./dist/cjs/index.js",
31
- "types": "./dist/esm/index.d.ts",
32
- "import": "./dist/esm/index.mjs",
33
- "require": "./dist/cjs/index.js"
34
- },
35
- "./server": {
36
- "types": "./dist/esm/server.d.ts",
37
- "import": "./dist/esm/server.mjs",
38
- "require": "./dist/cjs/server.js"
39
- },
40
- "./internals": {
41
- "react-native": "./dist/cjs/internals/index.js",
42
- "types": "./dist/esm/internals/index.d.ts",
43
- "import": "./dist/esm/internals/index.mjs",
44
- "require": "./dist/cjs/internals/index.js"
45
- },
46
- "./internals/server": {
47
- "types": "./dist/esm/internals/server.d.ts",
48
- "import": "./dist/esm/internals/server.mjs",
49
- "require": "./dist/cjs/internals/server.js"
50
- },
51
- "./package.json": "./package.json"
52
- },
53
- "typesVersions": {
54
- ">=4.2": {
55
- "server": [
56
- "./dist/esm/server.d.ts"
57
- ],
58
- "internals": [
59
- "./dist/esm/internals/index.d.ts"
60
- ],
61
- "internals/server": [
62
- "./dist/esm/internals/server.d.ts"
63
- ]
64
- }
65
- },
66
- "repository": {
67
- "type": "git",
68
- "url": "https://github.com/aws-amplify/amplify-js.git"
69
- },
70
- "author": "Amazon Web Services",
71
- "license": "Apache-2.0",
72
- "bugs": {
73
- "url": "https://github.com/aws/aws-amplify/issues"
74
- },
75
- "homepage": "https://aws-amplify.github.io/",
76
- "files": [
77
- "dist/cjs",
78
- "dist/esm",
79
- "src",
80
- "internals",
81
- "server"
82
- ],
83
- "dependencies": {
84
- "tslib": "^2.5.0"
85
- },
86
- "peerDependencies": {
87
- "@aws-amplify/core": "^6.1.0"
88
- },
89
- "devDependencies": {
90
- "@aws-amplify/core": "6.14.0",
91
- "@aws-amplify/react-native": "1.3.0",
92
- "@aws-sdk/types": "3.387.0"
93
- },
94
- "gitHead": "bcb7c416052db16e7e329b2ac44fadc564274e2b"
2
+ "name": "@aws-amplify/api-rest",
3
+ "private": false,
4
+ "version": "4.5.1-unstable.91c2933.0+91c2933",
5
+ "description": "Api-rest category of aws-amplify",
6
+ "main": "./dist/cjs/index.js",
7
+ "module": "./dist/esm/index.mjs",
8
+ "typings": "./dist/esm/index.d.ts",
9
+ "react-native": "./dist/cjs/index.js",
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "scripts": {
14
+ "test": "npm run lint && jest -w 1 --coverage --logHeapUsage",
15
+ "test:watch": "jest -w 1 --watch",
16
+ "build-with-test": "npm test && npm build",
17
+ "build:umd": "webpack && webpack --config ./webpack.config.dev.js",
18
+ "build:esm-cjs": "rollup --forceExit -c rollup.config.mjs",
19
+ "build:watch": "npm run build:esm-cjs -- --watch",
20
+ "build": "npm run clean && npm run build:esm-cjs && npm run build:umd",
21
+ "clean": "npm run clean:size && rimraf dist lib lib-esm",
22
+ "clean:size": "rimraf dual-publish-tmp tmp*",
23
+ "format": "echo \"Not implemented\"",
24
+ "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage",
25
+ "lint:fix": "eslint '**/*.{ts,tsx}' --fix",
26
+ "ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 70.0"
27
+ },
28
+ "exports": {
29
+ ".": {
30
+ "react-native": "./dist/cjs/index.js",
31
+ "types": "./dist/esm/index.d.ts",
32
+ "import": "./dist/esm/index.mjs",
33
+ "require": "./dist/cjs/index.js"
34
+ },
35
+ "./server": {
36
+ "types": "./dist/esm/server.d.ts",
37
+ "import": "./dist/esm/server.mjs",
38
+ "require": "./dist/cjs/server.js"
39
+ },
40
+ "./internals": {
41
+ "react-native": "./dist/cjs/internals/index.js",
42
+ "types": "./dist/esm/internals/index.d.ts",
43
+ "import": "./dist/esm/internals/index.mjs",
44
+ "require": "./dist/cjs/internals/index.js"
45
+ },
46
+ "./internals/server": {
47
+ "types": "./dist/esm/internals/server.d.ts",
48
+ "import": "./dist/esm/internals/server.mjs",
49
+ "require": "./dist/cjs/internals/server.js"
50
+ },
51
+ "./package.json": "./package.json"
52
+ },
53
+ "typesVersions": {
54
+ ">=4.2": {
55
+ "server": [
56
+ "./dist/esm/server.d.ts"
57
+ ],
58
+ "internals": [
59
+ "./dist/esm/internals/index.d.ts"
60
+ ],
61
+ "internals/server": [
62
+ "./dist/esm/internals/server.d.ts"
63
+ ]
64
+ }
65
+ },
66
+ "repository": {
67
+ "type": "git",
68
+ "url": "https://github.com/aws-amplify/amplify-js.git"
69
+ },
70
+ "author": "Amazon Web Services",
71
+ "license": "Apache-2.0",
72
+ "bugs": {
73
+ "url": "https://github.com/aws/aws-amplify/issues"
74
+ },
75
+ "homepage": "https://aws-amplify.github.io/",
76
+ "files": [
77
+ "dist/cjs",
78
+ "dist/esm",
79
+ "src",
80
+ "internals",
81
+ "server"
82
+ ],
83
+ "dependencies": {
84
+ "tslib": "^2.5.0"
85
+ },
86
+ "peerDependencies": {
87
+ "@aws-amplify/core": "6.14.1-unstable.91c2933.0+91c2933"
88
+ },
89
+ "devDependencies": {
90
+ "@aws-amplify/core": "6.14.1-unstable.91c2933.0+91c2933",
91
+ "@aws-amplify/react-native": "1.3.1-unstable.91c2933.0+91c2933",
92
+ "@aws-sdk/types": "3.387.0"
93
+ },
94
+ "gitHead": "91c2933d33ed307e0f53577f6291896275d9696b"
95
95
  }
@@ -11,6 +11,7 @@ import {
11
11
  import {
12
12
  AWSCredentials,
13
13
  DocumentType,
14
+ RESTAuthMode,
14
15
  RetryStrategy,
15
16
  } from '@aws-amplify/core/internals/utils';
16
17
 
@@ -18,6 +19,7 @@ import {
18
19
  logger,
19
20
  parseRestApiServiceError,
20
21
  parseSigningInfo,
22
+ resolveLibraryOptions,
21
23
  } from '../../utils';
22
24
  import { resolveHeaders } from '../../utils/resolveHeaders';
23
25
  import { RestApiResponse, SigningServiceInfo } from '../../types';
@@ -30,6 +32,7 @@ type HandlerOptions = Omit<HttpRequest, 'body' | 'headers'> & {
30
32
  headers?: Headers;
31
33
  withCredentials?: boolean;
32
34
  retryStrategy?: RetryStrategy;
35
+ defaultAuthMode?: RESTAuthMode;
33
36
  };
34
37
 
35
38
  type RetryDecider = RetryOptions['retryDecider'];
@@ -75,19 +78,29 @@ export const transferHandler = async (
75
78
  method,
76
79
  body: resolvedBody,
77
80
  };
81
+ const {
82
+ retryStrategy: libraryRetryStrategy,
83
+ defaultAuthMode: libraryDefaultAuthMode,
84
+ } = resolveLibraryOptions(amplify);
78
85
  const baseOptions = {
79
86
  retryDecider: getRetryDeciderFromStrategy(
80
- retryStrategy ?? amplify?.libraryOptions?.API?.REST?.retryStrategy,
87
+ retryStrategy ?? libraryRetryStrategy,
81
88
  ),
82
89
  computeDelay: jitteredBackoff,
83
90
  withCrossDomainCredentials: withCredentials,
84
91
  abortSignal,
85
92
  };
86
93
 
87
- const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);
94
+ const defaultAuthMode = options.defaultAuthMode ?? libraryDefaultAuthMode;
95
+
96
+ let credentials: AWSCredentials | null = null;
97
+ if (defaultAuthMode !== 'none') {
98
+ credentials = await resolveCredentials(amplify);
99
+ }
88
100
 
89
101
  let response: RestApiResponse;
90
- const credentials = await resolveCredentials(amplify);
102
+ const isIamAuthApplicable = iamAuthApplicable(request, signingServiceInfo);
103
+
91
104
  if (isIamAuthApplicable && credentials) {
92
105
  const signingInfoFromUrl = parseSigningInfo(url);
93
106
  const signingService =
@@ -1,6 +1,10 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { DocumentType, RetryStrategy } from '@aws-amplify/core/internals/utils';
3
+ import {
4
+ DocumentType,
5
+ RESTAuthMode,
6
+ RetryStrategy,
7
+ } from '@aws-amplify/core/internals/utils';
4
8
 
5
9
  export type GetInput = ApiInput<RestApiOptionsBase>;
6
10
  export type PostInput = ApiInput<RestApiOptionsBase>;
@@ -41,6 +45,7 @@ export interface RestApiOptionsBase {
41
45
  * @default ` { strategy: 'jittered-exponential-backoff' } `
42
46
  */
43
47
  retryStrategy?: RetryStrategy;
48
+ defaultAuthMode?: RESTAuthMode;
44
49
  /**
45
50
  * custom timeout in milliseconds.
46
51
  */
@@ -5,4 +5,5 @@ export { createCancellableOperation } from './createCancellableOperation';
5
5
  export { parseSigningInfo } from './parseSigningInfo';
6
6
  export { parseRestApiServiceError } from './serviceError';
7
7
  export { resolveApiUrl } from './resolveApiUrl';
8
+ export { resolveLibraryOptions } from './resolveLibraryOptions';
8
9
  export { logger } from './logger';
@@ -0,0 +1,14 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { AmplifyClassV6 } from '@aws-amplify/core';
5
+
6
+ /**
7
+ * @internal
8
+ */
9
+ export const resolveLibraryOptions = (amplify: AmplifyClassV6) => {
10
+ const retryStrategy = amplify.libraryOptions?.API?.REST?.retryStrategy;
11
+ const defaultAuthMode = amplify.libraryOptions?.API?.REST?.defaultAuthMode;
12
+
13
+ return { retryStrategy, defaultAuthMode };
14
+ };