@iota/area-codes
Version:
IOTA Area Codes (IAC) JavaScript
49 lines • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const open_location_code_typescript_1 = require("open-location-code-typescript");
const alphabet_1 = require("./alphabet");
const internal_1 = require("./internal");
/**
* Is the IOTA Area Code valid.
* @param iotaAreaCode The IOTA Area Code to validate.
* @returns True if the code is valid.
*/
function isValid(iotaAreaCode) {
// Check if all the characters fall within our alphabet
const re = new RegExp(`^[${alphabet_1.IAC_APHABET}]*$`);
let codeIsValid = re.test(iotaAreaCode);
if (codeIsValid) {
// Now validate using OLC validation
codeIsValid = open_location_code_typescript_1.default.isFull(internal_1.iacToOlcInternal(iotaAreaCode));
}
return codeIsValid;
}
exports.isValid = isValid;
/**
* Is the IOTA Area Code a valid partial code.
* @param iotaAreaCode The IOTA Area Code to validate.
* @returns True if the code is a partial.
*/
function isValidPartial(iotaAreaCode) {
if (iotaAreaCode === undefined || iotaAreaCode === null || typeof iotaAreaCode !== "string" || iotaAreaCode.length > 9) {
return false;
}
else {
if (!iotaAreaCode.endsWith("AA9")) {
return false;
}
else {
const remaining = iotaAreaCode.replace(/A*9$/, "");
if (remaining.length < 2 || remaining.length % 2 === 1) {
return false;
}
else {
// Check if all the remaining characters before the AA*9 are within our alphabet
const re = new RegExp(`^[${alphabet_1.IAC_APHABET.substr(0, 20)}]*$`);
return re.test(remaining);
}
}
}
}
exports.isValidPartial = isValidPartial;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUZBQTZEO0FBQzdELHlDQUF5QztBQUN6Qyx5Q0FBOEM7QUFFOUM7Ozs7R0FJRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxZQUFvQjtJQUN4Qyx1REFBdUQ7SUFDdkQsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxzQkFBVyxLQUFLLENBQUMsQ0FBQztJQUU3QyxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLElBQUksV0FBVyxFQUFFO1FBQ2Isb0NBQW9DO1FBQ3BDLFdBQVcsR0FBRyx1Q0FBZ0IsQ0FBQyxNQUFNLENBQUMsMkJBQWdCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztLQUN6RTtJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUM7QUFYRCwwQkFXQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixjQUFjLENBQUMsWUFBb0I7SUFDL0MsSUFBSSxZQUFZLEtBQUssU0FBUyxJQUFJLFlBQVksS0FBSyxJQUFJLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3BILE9BQU8sS0FBSyxDQUFDO0tBQ2hCO1NBQU07UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQixPQUFPLEtBQUssQ0FBQztTQUNoQjthQUFNO1lBQ0gsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFbkQsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3BELE9BQU8sS0FBSyxDQUFDO2FBQ2hCO2lCQUFNO2dCQUNILGdGQUFnRjtnQkFDaEYsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxzQkFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUUzRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDN0I7U0FDSjtLQUNKO0FBQ0wsQ0FBQztBQW5CRCx3Q0FtQkMifQ==