42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
|
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;
|