25 lines
681 B
JavaScript
25 lines
681 B
JavaScript
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;
|
|
};
|