This commit is contained in:
2025-01-04 00:34:03 +01:00
parent 41829408dc
commit 0ca14bbc19
18111 changed files with 1871397 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
import { customEndpointFunctions } from "@smithy/util-endpoints";
import { isVirtualHostableS3Bucket } from "./lib/aws/isVirtualHostableS3Bucket";
import { parseArn } from "./lib/aws/parseArn";
import { partition } from "./lib/aws/partition";
export const awsEndpointFunctions = {
isVirtualHostableS3Bucket: isVirtualHostableS3Bucket,
parseArn: parseArn,
partition: partition,
};
customEndpointFunctions.aws = awsEndpointFunctions;

View File

@@ -0,0 +1,5 @@
export * from "./aws";
export * from "./lib/aws/partition";
export * from "./lib/isIpAddress";
export * from "./resolveEndpoint";
export * from "./types";

View File

@@ -0,0 +1,3 @@
export * from "./isVirtualHostableS3Bucket";
export * from "./parseArn";
export * from "./partition";

View File

@@ -0,0 +1,25 @@
import { isValidHostLabel } from "@smithy/util-endpoints";
import { isIpAddress } from "../isIpAddress";
export const isVirtualHostableS3Bucket = (value, allowSubDomains = false) => {
if (allowSubDomains) {
for (const label of value.split(".")) {
if (!isVirtualHostableS3Bucket(label)) {
return false;
}
}
return true;
}
if (!isValidHostLabel(value)) {
return false;
}
if (value.length < 3 || value.length > 63) {
return false;
}
if (value !== value.toLowerCase()) {
return false;
}
if (isIpAddress(value)) {
return false;
}
return true;
};

View File

@@ -0,0 +1,15 @@
export const parseArn = (value) => {
const segments = value.split(":");
if (segments.length < 6)
return null;
const [arn, partition, service, region, accountId, ...resourceId] = segments;
if (arn !== "arn" || partition === "" || service === "" || resourceId[0] === "")
return null;
return {
partition,
service,
region,
accountId,
resourceId: resourceId[0].includes("/") ? resourceId[0].split("/") : resourceId,
};
};

View File

@@ -0,0 +1,41 @@
import partitionsInfo from "./partitions.json";
let selectedPartitionsInfo = partitionsInfo;
let selectedUserAgentPrefix = "";
export const partition = (value) => {
const { partitions } = selectedPartitionsInfo;
for (const partition of partitions) {
const { regions, outputs } = partition;
for (const [region, regionData] of Object.entries(regions)) {
if (region === value) {
return {
...outputs,
...regionData,
};
}
}
}
for (const partition of partitions) {
const { regionRegex, outputs } = partition;
if (new RegExp(regionRegex).test(value)) {
return {
...outputs,
};
}
}
const DEFAULT_PARTITION = partitions.find((partition) => partition.id === "aws");
if (!DEFAULT_PARTITION) {
throw new Error("Provided region was not found in the partition array or regex," +
" and default partition with id 'aws' doesn't exist.");
}
return {
...DEFAULT_PARTITION.outputs,
};
};
export const setPartitionInfo = (partitionsInfo, userAgentPrefix = "") => {
selectedPartitionsInfo = partitionsInfo;
selectedUserAgentPrefix = userAgentPrefix;
};
export const useDefaultPartitionInfo = () => {
setPartitionInfo(partitionsInfo, "");
};
export const getUserAgentPrefix = () => selectedUserAgentPrefix;

View File

@@ -0,0 +1,216 @@
{
"partitions": [{
"id": "aws",
"outputs": {
"dnsSuffix": "amazonaws.com",
"dualStackDnsSuffix": "api.aws",
"implicitGlobalRegion": "us-east-1",
"name": "aws",
"supportsDualStack": true,
"supportsFIPS": true
},
"regionRegex": "^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$",
"regions": {
"af-south-1": {
"description": "Africa (Cape Town)"
},
"ap-east-1": {
"description": "Asia Pacific (Hong Kong)"
},
"ap-northeast-1": {
"description": "Asia Pacific (Tokyo)"
},
"ap-northeast-2": {
"description": "Asia Pacific (Seoul)"
},
"ap-northeast-3": {
"description": "Asia Pacific (Osaka)"
},
"ap-south-1": {
"description": "Asia Pacific (Mumbai)"
},
"ap-south-2": {
"description": "Asia Pacific (Hyderabad)"
},
"ap-southeast-1": {
"description": "Asia Pacific (Singapore)"
},
"ap-southeast-2": {
"description": "Asia Pacific (Sydney)"
},
"ap-southeast-3": {
"description": "Asia Pacific (Jakarta)"
},
"ap-southeast-4": {
"description": "Asia Pacific (Melbourne)"
},
"aws-global": {
"description": "AWS Standard global region"
},
"ca-central-1": {
"description": "Canada (Central)"
},
"ca-west-1": {
"description": "Canada West (Calgary)"
},
"eu-central-1": {
"description": "Europe (Frankfurt)"
},
"eu-central-2": {
"description": "Europe (Zurich)"
},
"eu-north-1": {
"description": "Europe (Stockholm)"
},
"eu-south-1": {
"description": "Europe (Milan)"
},
"eu-south-2": {
"description": "Europe (Spain)"
},
"eu-west-1": {
"description": "Europe (Ireland)"
},
"eu-west-2": {
"description": "Europe (London)"
},
"eu-west-3": {
"description": "Europe (Paris)"
},
"il-central-1": {
"description": "Israel (Tel Aviv)"
},
"me-central-1": {
"description": "Middle East (UAE)"
},
"me-south-1": {
"description": "Middle East (Bahrain)"
},
"sa-east-1": {
"description": "South America (Sao Paulo)"
},
"us-east-1": {
"description": "US East (N. Virginia)"
},
"us-east-2": {
"description": "US East (Ohio)"
},
"us-west-1": {
"description": "US West (N. California)"
},
"us-west-2": {
"description": "US West (Oregon)"
}
}
}, {
"id": "aws-cn",
"outputs": {
"dnsSuffix": "amazonaws.com.cn",
"dualStackDnsSuffix": "api.amazonwebservices.com.cn",
"implicitGlobalRegion": "cn-northwest-1",
"name": "aws-cn",
"supportsDualStack": true,
"supportsFIPS": true
},
"regionRegex": "^cn\\-\\w+\\-\\d+$",
"regions": {
"aws-cn-global": {
"description": "AWS China global region"
},
"cn-north-1": {
"description": "China (Beijing)"
},
"cn-northwest-1": {
"description": "China (Ningxia)"
}
}
}, {
"id": "aws-us-gov",
"outputs": {
"dnsSuffix": "amazonaws.com",
"dualStackDnsSuffix": "api.aws",
"implicitGlobalRegion": "us-gov-west-1",
"name": "aws-us-gov",
"supportsDualStack": true,
"supportsFIPS": true
},
"regionRegex": "^us\\-gov\\-\\w+\\-\\d+$",
"regions": {
"aws-us-gov-global": {
"description": "AWS GovCloud (US) global region"
},
"us-gov-east-1": {
"description": "AWS GovCloud (US-East)"
},
"us-gov-west-1": {
"description": "AWS GovCloud (US-West)"
}
}
}, {
"id": "aws-iso",
"outputs": {
"dnsSuffix": "c2s.ic.gov",
"dualStackDnsSuffix": "c2s.ic.gov",
"implicitGlobalRegion": "us-iso-east-1",
"name": "aws-iso",
"supportsDualStack": false,
"supportsFIPS": true
},
"regionRegex": "^us\\-iso\\-\\w+\\-\\d+$",
"regions": {
"aws-iso-global": {
"description": "AWS ISO (US) global region"
},
"us-iso-east-1": {
"description": "US ISO East"
},
"us-iso-west-1": {
"description": "US ISO WEST"
}
}
}, {
"id": "aws-iso-b",
"outputs": {
"dnsSuffix": "sc2s.sgov.gov",
"dualStackDnsSuffix": "sc2s.sgov.gov",
"implicitGlobalRegion": "us-isob-east-1",
"name": "aws-iso-b",
"supportsDualStack": false,
"supportsFIPS": true
},
"regionRegex": "^us\\-isob\\-\\w+\\-\\d+$",
"regions": {
"aws-iso-b-global": {
"description": "AWS ISOB (US) global region"
},
"us-isob-east-1": {
"description": "US ISOB East (Ohio)"
}
}
}, {
"id": "aws-iso-e",
"outputs": {
"dnsSuffix": "cloud.adc-e.uk",
"dualStackDnsSuffix": "cloud.adc-e.uk",
"implicitGlobalRegion": "eu-isoe-west-1",
"name": "aws-iso-e",
"supportsDualStack": false,
"supportsFIPS": true
},
"regionRegex": "^eu\\-isoe\\-\\w+\\-\\d+$",
"regions": {}
}, {
"id": "aws-iso-f",
"outputs": {
"dnsSuffix": "csp.hci.ic.gov",
"dualStackDnsSuffix": "csp.hci.ic.gov",
"implicitGlobalRegion": "us-isof-south-1",
"name": "aws-iso-f",
"supportsDualStack": false,
"supportsFIPS": true
},
"regionRegex": "^us\\-isof\\-\\w+\\-\\d+$",
"regions": {}
}],
"version": "1.1"
}

View File

@@ -0,0 +1 @@
export { isIpAddress } from "@smithy/util-endpoints";

View File

@@ -0,0 +1 @@
export { resolveEndpoint } from "@smithy/util-endpoints";

View File

@@ -0,0 +1 @@
export { EndpointError } from "@smithy/util-endpoints";

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1,6 @@
export * from "./EndpointError";
export * from "./EndpointRuleObject";
export * from "./ErrorRuleObject";
export * from "./RuleSetObject";
export * from "./TreeRuleObject";
export * from "./shared";

View File

@@ -0,0 +1 @@
export {};