@smithy/util-defaults-mode-node
Advanced tools
+5
-74
@@ -1,74 +0,5 @@ | ||
| 'use strict'; | ||
| var configResolver = require('@smithy/config-resolver'); | ||
| var nodeConfigProvider = require('@smithy/node-config-provider'); | ||
| var propertyProvider = require('@smithy/property-provider'); | ||
| const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; | ||
| const AWS_REGION_ENV = "AWS_REGION"; | ||
| const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; | ||
| const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; | ||
| const DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; | ||
| const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; | ||
| const AWS_DEFAULTS_MODE_ENV = "AWS_DEFAULTS_MODE"; | ||
| const AWS_DEFAULTS_MODE_CONFIG = "defaults_mode"; | ||
| const NODE_DEFAULTS_MODE_CONFIG_OPTIONS = { | ||
| environmentVariableSelector: (env) => { | ||
| return env[AWS_DEFAULTS_MODE_ENV]; | ||
| }, | ||
| configFileSelector: (profile) => { | ||
| return profile[AWS_DEFAULTS_MODE_CONFIG]; | ||
| }, | ||
| default: "legacy", | ||
| }; | ||
| const resolveDefaultsModeConfig = ({ region = nodeConfigProvider.loadConfig(configResolver.NODE_REGION_CONFIG_OPTIONS), defaultsMode = nodeConfigProvider.loadConfig(NODE_DEFAULTS_MODE_CONFIG_OPTIONS), } = {}) => propertyProvider.memoize(async () => { | ||
| const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; | ||
| switch (mode?.toLowerCase()) { | ||
| case "auto": | ||
| return resolveNodeDefaultsModeAuto(region); | ||
| case "in-region": | ||
| case "cross-region": | ||
| case "mobile": | ||
| case "standard": | ||
| case "legacy": | ||
| return Promise.resolve(mode?.toLocaleLowerCase()); | ||
| case undefined: | ||
| return Promise.resolve("legacy"); | ||
| default: | ||
| throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); | ||
| } | ||
| }); | ||
| const resolveNodeDefaultsModeAuto = async (clientRegion) => { | ||
| if (clientRegion) { | ||
| const resolvedRegion = typeof clientRegion === "function" ? await clientRegion() : clientRegion; | ||
| const inferredRegion = await inferPhysicalRegion(); | ||
| if (!inferredRegion) { | ||
| return "standard"; | ||
| } | ||
| if (resolvedRegion === inferredRegion) { | ||
| return "in-region"; | ||
| } | ||
| else { | ||
| return "cross-region"; | ||
| } | ||
| } | ||
| return "standard"; | ||
| }; | ||
| const inferPhysicalRegion = async () => { | ||
| if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) { | ||
| return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV]; | ||
| } | ||
| if (!process.env[ENV_IMDS_DISABLED]) { | ||
| try { | ||
| const { getInstanceMetadataEndpoint, httpRequest } = await import('@smithy/credential-provider-imds'); | ||
| const endpoint = await getInstanceMetadataEndpoint(); | ||
| return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString(); | ||
| } | ||
| catch (e) { | ||
| } | ||
| } | ||
| }; | ||
| exports.resolveDefaultsModeConfig = resolveDefaultsModeConfig; | ||
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.resolveDefaultsModeConfig = void 0; | ||
| var config_1 = require("@smithy/core/config"); | ||
| Object.defineProperty(exports, "resolveDefaultsModeConfig", { enumerable: true, get: function () { return config_1.resolveDefaultsModeConfig; } }); |
+1
-1
@@ -1,1 +0,1 @@ | ||
| export * from "./resolveDefaultsModeConfig"; | ||
| export { resolveDefaultsModeConfig } from "@smithy/core/config"; |
@@ -1,4 +0,3 @@ | ||
| /** | ||
| * @internal | ||
| */ | ||
| export * from "./resolveDefaultsModeConfig"; | ||
| /** @deprecated Use @smithy/core/config instead. */ | ||
| export { resolveDefaultsModeConfig } from "@smithy/core/config"; | ||
| export type { ResolveDefaultsModeConfigOptions } from "@smithy/core/config"; |
+5
-31
| { | ||
| "name": "@smithy/util-defaults-mode-node", | ||
| "version": "4.2.54", | ||
| "version": "4.3.0", | ||
| "scripts": { | ||
| "build": "concurrently 'yarn:build:types' 'yarn:build:es:cjs'", | ||
| "build:es:cjs": "yarn g:tsc -p tsconfig.es.json && node ../../scripts/inline util-defaults-mode-node", | ||
| "build:types": "yarn g:tsc -p tsconfig.types.json", | ||
| "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", | ||
| "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", | ||
| "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", | ||
| "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", | ||
| "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", | ||
| "test": "yarn g:vitest run", | ||
| "test:watch": "yarn g:vitest watch" | ||
| "build": "yarn g:tsc -p tsconfig.cjs.json && yarn g:tsc -p tsconfig.es.json && yarn g:tsc -p tsconfig.types.json", | ||
| "clean": "rm -rf dist-cjs dist-es dist-types", | ||
| "stage-release": "rm -rf .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz" | ||
| }, | ||
@@ -26,27 +19,8 @@ "main": "./dist-cjs/index.js", | ||
| "dependencies": { | ||
| "@smithy/config-resolver": "^4.4.17", | ||
| "@smithy/credential-provider-imds": "^4.2.14", | ||
| "@smithy/node-config-provider": "^4.3.14", | ||
| "@smithy/property-provider": "^4.2.14", | ||
| "@smithy/smithy-client": "^4.12.13", | ||
| "@smithy/types": "^4.14.1", | ||
| "@smithy/core": "^3.24.0", | ||
| "tslib": "^2.6.2" | ||
| }, | ||
| "devDependencies": { | ||
| "@types/node": "^18.11.9", | ||
| "concurrently": "7.0.0", | ||
| "downlevel-dts": "0.10.1", | ||
| "premove": "4.0.0", | ||
| "typedoc": "0.23.23" | ||
| }, | ||
| "engines": { | ||
| "node": ">=18.0.0" | ||
| }, | ||
| "typesVersions": { | ||
| "<4.5": { | ||
| "dist-types/*": [ | ||
| "dist-types/ts3.4/*" | ||
| ] | ||
| } | ||
| }, | ||
| "files": [ | ||
@@ -53,0 +27,0 @@ "dist-*/**" |
| export const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; | ||
| export const AWS_REGION_ENV = "AWS_REGION"; | ||
| export const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; | ||
| export const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; | ||
| export const DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; | ||
| export const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; |
| const AWS_DEFAULTS_MODE_ENV = "AWS_DEFAULTS_MODE"; | ||
| const AWS_DEFAULTS_MODE_CONFIG = "defaults_mode"; | ||
| export const NODE_DEFAULTS_MODE_CONFIG_OPTIONS = { | ||
| environmentVariableSelector: (env) => { | ||
| return env[AWS_DEFAULTS_MODE_ENV]; | ||
| }, | ||
| configFileSelector: (profile) => { | ||
| return profile[AWS_DEFAULTS_MODE_CONFIG]; | ||
| }, | ||
| default: "legacy", | ||
| }; |
| import { NODE_REGION_CONFIG_OPTIONS } from "@smithy/config-resolver"; | ||
| import { loadConfig } from "@smithy/node-config-provider"; | ||
| import { memoize } from "@smithy/property-provider"; | ||
| import { AWS_DEFAULT_REGION_ENV, AWS_EXECUTION_ENV, AWS_REGION_ENV, DEFAULTS_MODE_OPTIONS, ENV_IMDS_DISABLED, IMDS_REGION_PATH, } from "./constants"; | ||
| import { NODE_DEFAULTS_MODE_CONFIG_OPTIONS } from "./defaultsModeConfig"; | ||
| export const resolveDefaultsModeConfig = ({ region = loadConfig(NODE_REGION_CONFIG_OPTIONS), defaultsMode = loadConfig(NODE_DEFAULTS_MODE_CONFIG_OPTIONS), } = {}) => memoize(async () => { | ||
| const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; | ||
| switch (mode?.toLowerCase()) { | ||
| case "auto": | ||
| return resolveNodeDefaultsModeAuto(region); | ||
| case "in-region": | ||
| case "cross-region": | ||
| case "mobile": | ||
| case "standard": | ||
| case "legacy": | ||
| return Promise.resolve(mode?.toLocaleLowerCase()); | ||
| case undefined: | ||
| return Promise.resolve("legacy"); | ||
| default: | ||
| throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); | ||
| } | ||
| }); | ||
| const resolveNodeDefaultsModeAuto = async (clientRegion) => { | ||
| if (clientRegion) { | ||
| const resolvedRegion = typeof clientRegion === "function" ? await clientRegion() : clientRegion; | ||
| const inferredRegion = await inferPhysicalRegion(); | ||
| if (!inferredRegion) { | ||
| return "standard"; | ||
| } | ||
| if (resolvedRegion === inferredRegion) { | ||
| return "in-region"; | ||
| } | ||
| else { | ||
| return "cross-region"; | ||
| } | ||
| } | ||
| return "standard"; | ||
| }; | ||
| const inferPhysicalRegion = async () => { | ||
| if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) { | ||
| return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV]; | ||
| } | ||
| if (!process.env[ENV_IMDS_DISABLED]) { | ||
| try { | ||
| const { getInstanceMetadataEndpoint, httpRequest } = await import("@smithy/credential-provider-imds"); | ||
| const endpoint = await getInstanceMetadataEndpoint(); | ||
| return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString(); | ||
| } | ||
| catch (e) { | ||
| } | ||
| } | ||
| }; |
| /** | ||
| * @internal | ||
| */ | ||
| export declare const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; | ||
| /** | ||
| * @internal | ||
| */ | ||
| export declare const AWS_REGION_ENV = "AWS_REGION"; | ||
| /** | ||
| * @internal | ||
| */ | ||
| export declare const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; | ||
| /** | ||
| * @internal | ||
| */ | ||
| export declare const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; | ||
| /** | ||
| * @internal | ||
| */ | ||
| export declare const DEFAULTS_MODE_OPTIONS: string[]; | ||
| /** | ||
| * @internal | ||
| */ | ||
| export declare const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; |
| import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; | ||
| import type { DefaultsMode } from "@smithy/smithy-client"; | ||
| /** | ||
| * @internal | ||
| */ | ||
| export declare const NODE_DEFAULTS_MODE_CONFIG_OPTIONS: LoadedConfigSelectors<DefaultsMode>; |
| import type { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; | ||
| import type { Provider } from "@smithy/types"; | ||
| /** | ||
| * @internal | ||
| */ | ||
| export interface ResolveDefaultsModeConfigOptions { | ||
| defaultsMode?: DefaultsMode | Provider<DefaultsMode>; | ||
| region?: string | Provider<string>; | ||
| } | ||
| /** | ||
| * Validate the defaultsMode configuration. If the value is set to "auto", it | ||
| * resolves the value to "in-region", "cross-region", or "standard". | ||
| * | ||
| * @default "legacy" | ||
| * @internal | ||
| */ | ||
| export declare const resolveDefaultsModeConfig: ({ region, defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider<ResolvedDefaultsMode>; |
-17
| # @smithy/util-defaults-mode-node | ||
| [](https://www.npmjs.com/package/@smithy/util-defaults-mode-node) | ||
| [](https://www.npmjs.com/package/@smithy/util-defaults-mode-node) | ||
| ### :warning: Internal API :warning: | ||
| > This is an internal package. | ||
| > That means this is used as a dependency for other, public packages, but | ||
| > should not be taken directly as a dependency in your application's `package.json`. | ||
| > If you are updating the version of this package, for example to bring in a | ||
| > bug-fix, you should do so by updating your application lockfile with | ||
| > e.g. `npm up @scope/package` or equivalent command in another | ||
| > package manager, rather than taking a direct dependency. | ||
| --- |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
Trivial Package
Supply chain riskPackages less than 10 lines of code are easily copied into your own project and may not warrant the additional supply chain risk of an external dependency.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
2
-71.43%0
-100%0
-100%13171
-40.32%5
-58.33%9
-95.26%1
Infinity%0
-100%2
Infinity%+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed