summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/validator/lib/isIMEI.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/addressbook/node_modules/validator/lib/isIMEI.js')
-rw-r--r--includes/external/addressbook/node_modules/validator/lib/isIMEI.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/includes/external/addressbook/node_modules/validator/lib/isIMEI.js b/includes/external/addressbook/node_modules/validator/lib/isIMEI.js
new file mode 100644
index 0000000..aa05178
--- /dev/null
+++ b/includes/external/addressbook/node_modules/validator/lib/isIMEI.js
@@ -0,0 +1,61 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isIMEI;
+
+var _assertString = _interopRequireDefault(require("./util/assertString"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var imeiRegexWithoutHypens = /^[0-9]{15}$/;
+var imeiRegexWithHypens = /^\d{2}-\d{6}-\d{6}-\d{1}$/;
+
+function isIMEI(str, options) {
+ (0, _assertString.default)(str);
+ options = options || {}; // default regex for checking imei is the one without hyphens
+
+ var imeiRegex = imeiRegexWithoutHypens;
+
+ if (options.allow_hyphens) {
+ imeiRegex = imeiRegexWithHypens;
+ }
+
+ if (!imeiRegex.test(str)) {
+ return false;
+ }
+
+ str = str.replace(/-/g, '');
+ var sum = 0,
+ mul = 2,
+ l = 14;
+
+ for (var i = 0; i < l; i++) {
+ var digit = str.substring(l - i - 1, l - i);
+ var tp = parseInt(digit, 10) * mul;
+
+ if (tp >= 10) {
+ sum += tp % 10 + 1;
+ } else {
+ sum += tp;
+ }
+
+ if (mul === 1) {
+ mul += 1;
+ } else {
+ mul -= 1;
+ }
+ }
+
+ var chk = (10 - sum % 10) % 10;
+
+ if (chk !== parseInt(str.substring(14, 15), 10)) {
+ return false;
+ }
+
+ return true;
+}
+
+module.exports = exports.default;
+module.exports.default = exports.default; \ No newline at end of file