From 0e60701cb9ad972102abfa6243b7b12c53a64ee8 Mon Sep 17 00:00:00 2001 From: Michael Murphy Date: Wed, 18 Dec 2024 10:02:52 -0500 Subject: [PATCH] Delete dist/ID5Kit.common.js --- dist/ID5Kit.common.js | 1908 ----------------------------------------- 1 file changed, 1908 deletions(-) delete mode 100644 dist/ID5Kit.common.js diff --git a/dist/ID5Kit.common.js b/dist/ID5Kit.common.js deleted file mode 100644 index e95755f..0000000 --- a/dist/ID5Kit.common.js +++ /dev/null @@ -1,1908 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); -} - -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} - -function getCjsExportFromNamespace (n) { - return n && n['default'] || n; -} - -var _nodeResolve_empty = {}; - -var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - 'default': _nodeResolve_empty -}); - -var require$$0 = getCjsExportFromNamespace(_nodeResolve_empty$1); - -var core = createCommonjsModule(function (module, exports) { -(function (root, factory) { - { - // CommonJS - module.exports = exports = factory(); - } -}(commonjsGlobal, function () { - - /*globals window, global, require*/ - - /** - * CryptoJS core components. - */ - var CryptoJS = CryptoJS || (function (Math, undefined$1) { - - var crypto; - - // Native crypto from window (Browser) - if (typeof window !== 'undefined' && window.crypto) { - crypto = window.crypto; - } - - // Native crypto in web worker (Browser) - if (typeof self !== 'undefined' && self.crypto) { - crypto = self.crypto; - } - - // Native crypto from worker - if (typeof globalThis !== 'undefined' && globalThis.crypto) { - crypto = globalThis.crypto; - } - - // Native (experimental IE 11) crypto from window (Browser) - if (!crypto && typeof window !== 'undefined' && window.msCrypto) { - crypto = window.msCrypto; - } - - // Native crypto from global (NodeJS) - if (!crypto && typeof commonjsGlobal !== 'undefined' && commonjsGlobal.crypto) { - crypto = commonjsGlobal.crypto; - } - - // Native crypto import via require (NodeJS) - if (!crypto && typeof commonjsRequire === 'function') { - try { - crypto = require$$0; - } catch (err) {} - } - - /* - * Cryptographically secure pseudorandom number generator - * - * As Math.random() is cryptographically not safe to use - */ - var cryptoSecureRandomInt = function () { - if (crypto) { - // Use getRandomValues method (Browser) - if (typeof crypto.getRandomValues === 'function') { - try { - return crypto.getRandomValues(new Uint32Array(1))[0]; - } catch (err) {} - } - - // Use randomBytes method (NodeJS) - if (typeof crypto.randomBytes === 'function') { - try { - return crypto.randomBytes(4).readInt32LE(); - } catch (err) {} - } - } - - throw new Error('Native crypto module could not be used to get secure random number.'); - }; - - /* - * Local polyfill of Object.create - - */ - var create = Object.create || (function () { - function F() {} - - return function (obj) { - var subtype; - - F.prototype = obj; - - subtype = new F(); - - F.prototype = null; - - return subtype; - }; - }()); - - /** - * CryptoJS namespace. - */ - var C = {}; - - /** - * Library namespace. - */ - var C_lib = C.lib = {}; - - /** - * Base object for prototypal inheritance. - */ - var Base = C_lib.Base = (function () { - - - return { - /** - * Creates a new object that inherits from this object. - * - * @param {Object} overrides Properties to copy into the new object. - * - * @return {Object} The new object. - * - * @static - * - * @example - * - * var MyType = CryptoJS.lib.Base.extend({ - * field: 'value', - * - * method: function () { - * } - * }); - */ - extend: function (overrides) { - // Spawn - var subtype = create(this); - - // Augment - if (overrides) { - subtype.mixIn(overrides); - } - - // Create default initializer - if (!subtype.hasOwnProperty('init') || this.init === subtype.init) { - subtype.init = function () { - subtype.$super.init.apply(this, arguments); - }; - } - - // Initializer's prototype is the subtype object - subtype.init.prototype = subtype; - - // Reference supertype - subtype.$super = this; - - return subtype; - }, - - /** - * Extends this object and runs the init method. - * Arguments to create() will be passed to init(). - * - * @return {Object} The new object. - * - * @static - * - * @example - * - * var instance = MyType.create(); - */ - create: function () { - var instance = this.extend(); - instance.init.apply(instance, arguments); - - return instance; - }, - - /** - * Initializes a newly created object. - * Override this method to add some logic when your objects are created. - * - * @example - * - * var MyType = CryptoJS.lib.Base.extend({ - * init: function () { - * // ... - * } - * }); - */ - init: function () { - }, - - /** - * Copies properties into this object. - * - * @param {Object} properties The properties to mix in. - * - * @example - * - * MyType.mixIn({ - * field: 'value' - * }); - */ - mixIn: function (properties) { - for (var propertyName in properties) { - if (properties.hasOwnProperty(propertyName)) { - this[propertyName] = properties[propertyName]; - } - } - - // IE won't copy toString using the loop above - if (properties.hasOwnProperty('toString')) { - this.toString = properties.toString; - } - }, - - /** - * Creates a copy of this object. - * - * @return {Object} The clone. - * - * @example - * - * var clone = instance.clone(); - */ - clone: function () { - return this.init.prototype.extend(this); - } - }; - }()); - - /** - * An array of 32-bit words. - * - * @property {Array} words The array of 32-bit words. - * @property {number} sigBytes The number of significant bytes in this word array. - */ - var WordArray = C_lib.WordArray = Base.extend({ - /** - * Initializes a newly created word array. - * - * @param {Array} words (Optional) An array of 32-bit words. - * @param {number} sigBytes (Optional) The number of significant bytes in the words. - * - * @example - * - * var wordArray = CryptoJS.lib.WordArray.create(); - * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); - * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); - */ - init: function (words, sigBytes) { - words = this.words = words || []; - - if (sigBytes != undefined$1) { - this.sigBytes = sigBytes; - } else { - this.sigBytes = words.length * 4; - } - }, - - /** - * Converts this word array to a string. - * - * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex - * - * @return {string} The stringified word array. - * - * @example - * - * var string = wordArray + ''; - * var string = wordArray.toString(); - * var string = wordArray.toString(CryptoJS.enc.Utf8); - */ - toString: function (encoder) { - return (encoder || Hex).stringify(this); - }, - - /** - * Concatenates a word array to this word array. - * - * @param {WordArray} wordArray The word array to append. - * - * @return {WordArray} This word array. - * - * @example - * - * wordArray1.concat(wordArray2); - */ - concat: function (wordArray) { - // Shortcuts - var thisWords = this.words; - var thatWords = wordArray.words; - var thisSigBytes = this.sigBytes; - var thatSigBytes = wordArray.sigBytes; - - // Clamp excess bits - this.clamp(); - - // Concat - if (thisSigBytes % 4) { - // Copy one byte at a time - for (var i = 0; i < thatSigBytes; i++) { - var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); - } - } else { - // Copy one word at a time - for (var j = 0; j < thatSigBytes; j += 4) { - thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2]; - } - } - this.sigBytes += thatSigBytes; - - // Chainable - return this; - }, - - /** - * Removes insignificant bits. - * - * @example - * - * wordArray.clamp(); - */ - clamp: function () { - // Shortcuts - var words = this.words; - var sigBytes = this.sigBytes; - - // Clamp - words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); - words.length = Math.ceil(sigBytes / 4); - }, - - /** - * Creates a copy of this word array. - * - * @return {WordArray} The clone. - * - * @example - * - * var clone = wordArray.clone(); - */ - clone: function () { - var clone = Base.clone.call(this); - clone.words = this.words.slice(0); - - return clone; - }, - - /** - * Creates a word array filled with random bytes. - * - * @param {number} nBytes The number of random bytes to generate. - * - * @return {WordArray} The random word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.lib.WordArray.random(16); - */ - random: function (nBytes) { - var words = []; - - for (var i = 0; i < nBytes; i += 4) { - words.push(cryptoSecureRandomInt()); - } - - return new WordArray.init(words, nBytes); - } - }); - - /** - * Encoder namespace. - */ - var C_enc = C.enc = {}; - - /** - * Hex encoding strategy. - */ - var Hex = C_enc.Hex = { - /** - * Converts a word array to a hex string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The hex string. - * - * @static - * - * @example - * - * var hexString = CryptoJS.enc.Hex.stringify(wordArray); - */ - stringify: function (wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var hexChars = []; - for (var i = 0; i < sigBytes; i++) { - var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - hexChars.push((bite >>> 4).toString(16)); - hexChars.push((bite & 0x0f).toString(16)); - } - - return hexChars.join(''); - }, - - /** - * Converts a hex string to a word array. - * - * @param {string} hexStr The hex string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Hex.parse(hexString); - */ - parse: function (hexStr) { - // Shortcut - var hexStrLength = hexStr.length; - - // Convert - var words = []; - for (var i = 0; i < hexStrLength; i += 2) { - words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); - } - - return new WordArray.init(words, hexStrLength / 2); - } - }; - - /** - * Latin1 encoding strategy. - */ - var Latin1 = C_enc.Latin1 = { - /** - * Converts a word array to a Latin1 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The Latin1 string. - * - * @static - * - * @example - * - * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); - */ - stringify: function (wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var latin1Chars = []; - for (var i = 0; i < sigBytes; i++) { - var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - latin1Chars.push(String.fromCharCode(bite)); - } - - return latin1Chars.join(''); - }, - - /** - * Converts a Latin1 string to a word array. - * - * @param {string} latin1Str The Latin1 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); - */ - parse: function (latin1Str) { - // Shortcut - var latin1StrLength = latin1Str.length; - - // Convert - var words = []; - for (var i = 0; i < latin1StrLength; i++) { - words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); - } - - return new WordArray.init(words, latin1StrLength); - } - }; - - /** - * UTF-8 encoding strategy. - */ - var Utf8 = C_enc.Utf8 = { - /** - * Converts a word array to a UTF-8 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-8 string. - * - * @static - * - * @example - * - * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); - */ - stringify: function (wordArray) { - try { - return decodeURIComponent(escape(Latin1.stringify(wordArray))); - } catch (e) { - throw new Error('Malformed UTF-8 data'); - } - }, - - /** - * Converts a UTF-8 string to a word array. - * - * @param {string} utf8Str The UTF-8 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); - */ - parse: function (utf8Str) { - return Latin1.parse(unescape(encodeURIComponent(utf8Str))); - } - }; - - /** - * Abstract buffered block algorithm template. - * - * The property blockSize must be implemented in a concrete subtype. - * - * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 - */ - var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ - /** - * Resets this block algorithm's data buffer to its initial state. - * - * @example - * - * bufferedBlockAlgorithm.reset(); - */ - reset: function () { - // Initial values - this._data = new WordArray.init(); - this._nDataBytes = 0; - }, - - /** - * Adds new data to this block algorithm's buffer. - * - * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. - * - * @example - * - * bufferedBlockAlgorithm._append('data'); - * bufferedBlockAlgorithm._append(wordArray); - */ - _append: function (data) { - // Convert string to WordArray, else assume WordArray already - if (typeof data == 'string') { - data = Utf8.parse(data); - } - - // Append - this._data.concat(data); - this._nDataBytes += data.sigBytes; - }, - - /** - * Processes available data blocks. - * - * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. - * - * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. - * - * @return {WordArray} The processed data. - * - * @example - * - * var processedData = bufferedBlockAlgorithm._process(); - * var processedData = bufferedBlockAlgorithm._process(!!'flush'); - */ - _process: function (doFlush) { - var processedWords; - - // Shortcuts - var data = this._data; - var dataWords = data.words; - var dataSigBytes = data.sigBytes; - var blockSize = this.blockSize; - var blockSizeBytes = blockSize * 4; - - // Count blocks ready - var nBlocksReady = dataSigBytes / blockSizeBytes; - if (doFlush) { - // Round up to include partial blocks - nBlocksReady = Math.ceil(nBlocksReady); - } else { - // Round down to include only full blocks, - // less the number of blocks that must remain in the buffer - nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); - } - - // Count words ready - var nWordsReady = nBlocksReady * blockSize; - - // Count bytes ready - var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); - - // Process blocks - if (nWordsReady) { - for (var offset = 0; offset < nWordsReady; offset += blockSize) { - // Perform concrete-algorithm logic - this._doProcessBlock(dataWords, offset); - } - - // Remove processed words - processedWords = dataWords.splice(0, nWordsReady); - data.sigBytes -= nBytesReady; - } - - // Return processed words - return new WordArray.init(processedWords, nBytesReady); - }, - - /** - * Creates a copy of this object. - * - * @return {Object} The clone. - * - * @example - * - * var clone = bufferedBlockAlgorithm.clone(); - */ - clone: function () { - var clone = Base.clone.call(this); - clone._data = this._data.clone(); - - return clone; - }, - - _minBufferSize: 0 - }); - - /** - * Abstract hasher template. - * - * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) - */ - var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({ - /** - * Configuration options. - */ - cfg: Base.extend(), - - /** - * Initializes a newly created hasher. - * - * @param {Object} cfg (Optional) The configuration options to use for this hash computation. - * - * @example - * - * var hasher = CryptoJS.algo.SHA256.create(); - */ - init: function (cfg) { - // Apply config defaults - this.cfg = this.cfg.extend(cfg); - - // Set initial values - this.reset(); - }, - - /** - * Resets this hasher to its initial state. - * - * @example - * - * hasher.reset(); - */ - reset: function () { - // Reset data buffer - BufferedBlockAlgorithm.reset.call(this); - - // Perform concrete-hasher logic - this._doReset(); - }, - - /** - * Updates this hasher with a message. - * - * @param {WordArray|string} messageUpdate The message to append. - * - * @return {Hasher} This hasher. - * - * @example - * - * hasher.update('message'); - * hasher.update(wordArray); - */ - update: function (messageUpdate) { - // Append - this._append(messageUpdate); - - // Update the hash - this._process(); - - // Chainable - return this; - }, - - /** - * Finalizes the hash computation. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} messageUpdate (Optional) A final message update. - * - * @return {WordArray} The hash. - * - * @example - * - * var hash = hasher.finalize(); - * var hash = hasher.finalize('message'); - * var hash = hasher.finalize(wordArray); - */ - finalize: function (messageUpdate) { - // Final message update - if (messageUpdate) { - this._append(messageUpdate); - } - - // Perform concrete-hasher logic - var hash = this._doFinalize(); - - return hash; - }, - - blockSize: 512/32, - - /** - * Creates a shortcut function to a hasher's object interface. - * - * @param {Hasher} hasher The hasher to create a helper for. - * - * @return {Function} The shortcut function. - * - * @static - * - * @example - * - * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); - */ - _createHelper: function (hasher) { - return function (message, cfg) { - return new hasher.init(cfg).finalize(message); - }; - }, - - /** - * Creates a shortcut function to the HMAC's object interface. - * - * @param {Hasher} hasher The hasher to use in this HMAC helper. - * - * @return {Function} The shortcut function. - * - * @static - * - * @example - * - * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); - */ - _createHmacHelper: function (hasher) { - return function (message, key) { - return new C_algo.HMAC.init(hasher, key).finalize(message); - }; - } - }); - - /** - * Algorithm namespace. - */ - var C_algo = C.algo = {}; - - return C; - }(Math)); - - - return CryptoJS; - -})); -}); - -var sha256 = createCommonjsModule(function (module, exports) { -(function (root, factory) { - { - // CommonJS - module.exports = exports = factory(core); - } -}(commonjsGlobal, function (CryptoJS) { - - (function (Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Initialization and round constants tables - var H = []; - var K = []; - - // Compute constants - (function () { - function isPrime(n) { - var sqrtN = Math.sqrt(n); - for (var factor = 2; factor <= sqrtN; factor++) { - if (!(n % factor)) { - return false; - } - } - - return true; - } - - function getFractionalBits(n) { - return ((n - (n | 0)) * 0x100000000) | 0; - } - - var n = 2; - var nPrime = 0; - while (nPrime < 64) { - if (isPrime(n)) { - if (nPrime < 8) { - H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2)); - } - K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3)); - - nPrime++; - } - - n++; - } - }()); - - // Reusable object - var W = []; - - /** - * SHA-256 hash algorithm. - */ - var SHA256 = C_algo.SHA256 = Hasher.extend({ - _doReset: function () { - this._hash = new WordArray.init(H.slice(0)); - }, - - _doProcessBlock: function (M, offset) { - // Shortcut - var H = this._hash.words; - - // Working variables - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - var e = H[4]; - var f = H[5]; - var g = H[6]; - var h = H[7]; - - // Computation - for (var i = 0; i < 64; i++) { - if (i < 16) { - W[i] = M[offset + i] | 0; - } else { - var gamma0x = W[i - 15]; - var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^ - ((gamma0x << 14) | (gamma0x >>> 18)) ^ - (gamma0x >>> 3); - - var gamma1x = W[i - 2]; - var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^ - ((gamma1x << 13) | (gamma1x >>> 19)) ^ - (gamma1x >>> 10); - - W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; - } - - var ch = (e & f) ^ (~e & g); - var maj = (a & b) ^ (a & c) ^ (b & c); - - var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22)); - var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25)); - - var t1 = h + sigma1 + ch + K[i] + W[i]; - var t2 = sigma0 + maj; - - h = g; - g = f; - f = e; - e = (d + t1) | 0; - d = c; - c = b; - b = a; - a = (t1 + t2) | 0; - } - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - H[4] = (H[4] + e) | 0; - H[5] = (H[5] + f) | 0; - H[6] = (H[6] + g) | 0; - H[7] = (H[7] + h) | 0; - }, - - _doFinalize: function () { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Return final computed hash - return this._hash; - }, - - clone: function () { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA256('message'); - * var hash = CryptoJS.SHA256(wordArray); - */ - C.SHA256 = Hasher._createHelper(SHA256); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA256(message, key); - */ - C.HmacSHA256 = Hasher._createHmacHelper(SHA256); - }(Math)); - - - return CryptoJS.SHA256; - -})); -}); - -function Common() {} - -Common.prototype.exampleMethod = function () { - return 'I am an example'; -}; - -Common.prototype.logId5Id = function (id5Id) { - if (!id5Id) { - return; - } - - var integrationAttributes = { - encryptedId5Id: id5Id, - id5IdType: this.id5IdType, - }; - - window.mParticle.setIntegrationAttribute(this.moduleId, integrationAttributes); -}; - -Common.prototype.buildPartnerData = function (mParticleUser) { - var pdKeys = {}; - var userIdentities = mParticleUser.getUserIdentities(); - - var email = this.normalizeEmail(userIdentities.userIdentities['email']); - var phone = this.normalizePhone(userIdentities.userIdentities['mobile_number']); - - if (!email && !phone) { - return null; - } - - if (email) { - pdKeys[1] = sha256(email); - } - - if (phone) { - pdKeys[2]= sha256(phone); - } - - var pdRaw = Object.keys(pdKeys).map(function(key){ - return key + '=' + pdKeys[key] - }).join('&'); - - return btoa(pdRaw); -}; - -Common.prototype.normalizeEmail = function(email) { - if (!email || !this.validateEmail(email)) { - return null; - } - var parts = email.split("@"); - var charactersToRemove = ['+', '.']; - - if (parts[1] != 'gmail.com') { - return email; - } - - parts[0]= this.replace(parts[0], charactersToRemove); - - return parts.join('@'); -}; - -Common.prototype.normalizePhone = function(phone) { - if (!phone) { - return null; - } - var charactersToRemove = [' ', '-', '(', ')']; - var normalizedPhone = this.replace(phone, charactersToRemove); - - if (normalizedPhone[0] !== '+') { - normalizedPhone = '+' + normalizedPhone; - } - - if (!this.validatePhone(normalizedPhone)) { - return null; - } - return normalizedPhone; -}; - -Common.prototype.replace = function(string, targets) { - var newString = ''; - for(var i = 0; i < string.length; i++){ - var char = string[i]; - if (!targets.includes(char)){ - newString += char; - } - } - return newString.toLowerCase(); -}; - -Common.prototype.validateEmail = function(email){ - if (!email) { - return false; - } - var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - return emailRegex.test(email); -}; - -Common.prototype.validatePhone = function(phone) { - if (!phone){ - return false; - } - var e164Regex = /^\+?[1-9]\d{1,14}$/; - - return e164Regex.test(phone); -}; -var common = Common; - -function CommerceHandler(common) { - this.common = common || {}; -} - -CommerceHandler.prototype.logCommerceEvent = function() { - /* - Sample ecommerce event schema: - { - CurrencyCode: 'USD', - DeviceId:'a80eea1c-57f5-4f84-815e-06fe971b6ef2', // MP generated - EventAttributes: { key1: 'value1', key2: 'value2' }, - EventType: 16, - EventCategory: 10, // (This is an add product to cart event, see below for additional ecommerce EventCategories) - EventName: "eCommerce - AddToCart", - MPID: "8278431810143183490", - ProductAction: { - Affiliation: 'aff1', - CouponCode: 'coupon', - ProductActionType: 7, - ProductList: [ - { - Attributes: { prodKey1: 'prodValue1', prodKey2: 'prodValue2' }, - Brand: 'Apple', - Category: 'phones', - CouponCode: 'coupon1', - Name: 'iPhone', - Price: '600', - Quantity: 2, - Sku: "SKU123", - TotalAmount: 1200, - Variant: '64GB' - } - ], - TransactionId: "tid1", - ShippingAmount: 10, - TaxAmount: 5, - TotalAmount: 1215, - }, - UserAttributes: { userKey1: 'userValue1', userKey2: 'userValue2' } - UserIdentities: [ - { - Identity: 'test@gmail.com', Type: 7 - } - ] - } - - If your SDK has specific ways to log different eCommerce events, see below for - mParticle's additional ecommerce EventCategory types: - - 10: ProductAddToCart, (as shown above) - 11: ProductRemoveFromCart, - 12: ProductCheckout, - 13: ProductCheckoutOption, - 14: ProductClick, - 15: ProductViewDetail, - 16: ProductPurchase, - 17: ProductRefund, - 18: PromotionView, - 19: PromotionClick, - 20: ProductAddToWishlist, - 21: ProductRemoveFromWishlist, - 22: ProductImpression - */ -}; - -var commerceHandler = CommerceHandler; - -/* -A non-ecommerce event has the following schema: - -{ - DeviceId: "a80eea1c-57f5-4f84-815e-06fe971b6ef2", - EventAttributes: {test: "Error", t: 'stack trace in string form'}, - EventName: "Error", - MPID: "123123123123", - UserAttributes: {userAttr1: 'value1', userAttr2: 'value2'}, - UserIdentities: [{Identity: 'email@gmail.com', Type: 7}] - User Identity Types can be found here: -} - -*/ - -function EventHandler(common) { - this.common = common || {}; -} -EventHandler.prototype.logEvent = function() {}; -EventHandler.prototype.logError = function() { - // The schema for a logError event is the same, but noteworthy differences are as follows: - // { - // EventAttributes: {m: 'name of error passed into MP', s: "Error", t: 'stack trace in string form if applicable'}, - // EventName: "Error" - // } -}; -EventHandler.prototype.logPageView = function() { - /* The schema for a logPagView event is the same, but noteworthy differences are as follows: - { - EventAttributes: {hostname: "www.google.com", title: 'Test Page'}, // These are event attributes only if no additional event attributes are explicitly provided to mParticle.logPageView(...) - } - */ -}; - -var eventHandler = EventHandler; - -/* -The 'mParticleUser' is an object with methods get user Identities and set/get user attributes -Partners can determine what userIds are available to use in their SDK -Call mParticleUser.getUserIdentities() to return an object of userIdentities --> { userIdentities: {customerid: '1234', email: 'email@gmail.com'} } -For more identity types, see https://docs.mparticle.com/developers/sdk/web/idsync/#supported-identity-types -Call mParticleUser.getMPID() to get mParticle ID -For any additional methods, see https://docs.mparticle.com/developers/sdk/web/core-apidocs/classes/mParticle.Identity.getCurrentUser().html -*/ - -/* -identityApiRequest has the schema: -{ - userIdentities: { - customerid: '123', - email: 'abc' - } -} -For more userIdentity types, see https://docs.mparticle.com/developers/sdk/web/idsync/#supported-identity-types -*/ - -function IdentityHandler(common) { - this.common = common || {}; -} -IdentityHandler.prototype.onUserIdentified = function() {}; -IdentityHandler.prototype.onIdentifyComplete = function() {}; - -//Must re-initialize ID5 with partner identities(pd) in the config to collect an updated ID5 ID -IdentityHandler.prototype.onLoginComplete = function( - mParticleUser -) { - var partnerData = this.common.buildPartnerData(mParticleUser); - - if (partnerData) { - var id5Instance = window.ID5.init({ - partnerId: this.common.partnerId, - pd: partnerData, - consentData: { - allowedVendors: [ '131', 'ID5-1747' ] - } - }); - var logId5Id = this.common.logId5Id; - - id5Instance.onAvailable(function(status){ - logId5Id(status.getUserId()); - }.bind(logId5Id)); - } -}; - -//Must re-initialize ID5 without partner identities (pd) in the config to revert to an anonymous ID5 ID -IdentityHandler.prototype.onLogoutComplete = function( -) { - var id5Instance = window.ID5.init({ - partnerId: this.common.partnerId, - consentData: { - allowedVendors: [ '131', 'ID5-1747' ] - } - }); - var logId5Id = this.common.logId5Id; - - id5Instance.onAvailable(function(status){ - logId5Id(status.getUserId()); - }.bind(logId5Id)); -}; - -IdentityHandler.prototype.onModifyComplete = function() {}; - -/* In previous versions of the mParticle web SDK, setting user identities on - kits is only reachable via the onSetUserIdentity method below. We recommend - filling out `onSetUserIdentity` for maximum compatibility -*/ -IdentityHandler.prototype.onSetUserIdentity = function() {}; - -var identityHandler = IdentityHandler; - -var initialization = { - name: 'ID5', - moduleId: 248, - /* ****** Fill out initForwarder to load your SDK ****** - Note that not all arguments may apply to your SDK initialization. - These are passed from mParticle, but leave them even if they are not being used. - forwarderSettings contain settings that your SDK requires in order to initialize - userAttributes example: {gender: 'male', age: 25} - userIdentities example: { 1: 'customerId', 2: 'facebookId', 7: 'emailid@email.com' } - additional identityTypes can be found at https://github.com/mParticle/mparticle-sdk-javascript/blob/master-v2/src/types.js#L88-L101 -*/ - initForwarder: function(forwarderSettings, testMode, userAttributes, userIdentities, processEvent, eventQueue, isInitialized, common) { - /* `forwarderSettings` contains your SDK specific settings such as apiKey that your customer needs in order to initialize your SDK properly */ - common.partnerId = forwarderSettings.partnerId; - common.id5IdType = forwarderSettings.id5IdType; - common.moduleId = this.moduleId; - - if (!testMode) { - /* Load your Web SDK here using a variant of your snippet from your readme that your customers would generally put into their tags - Generally, our integrations create script tags and append them to the . Please follow the following format as a guide: - */ - //ID5 docs on initialization can be found here: https://github.com/id5io/id5-api.js/blob/master/README.md - var id5Script = document.createElement('script'); - id5Script.src = 'https://cdn.id5-sync.com/api/1.0/id5-api.js'; - (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(id5Script); - - id5Script.onload = function() { - - var id5Instance = window.ID5.init({ - partnerId: common.partnerId, - consentData: { - allowedVendors: [ '131', 'ID5-1747' ] - } - }); - - id5Instance.onAvailable(function(status){ - common.logId5Id(status.getUserId()); - }.bind(common)); - }; - } else { - - var id5Instance = window.ID5.init({partnerId: common.partnerId}); - - id5Instance.onAvailable(function(status){ - common.logId5Id(status.getUserId()); - }.bind(common)); - } - } -}; - -var initialization_1 = initialization; - -var sessionHandler = { - onSessionStart: function() { - - }, - onSessionEnd: function() { - - } -}; - -var sessionHandler_1 = sessionHandler; - -/* -The 'mParticleUser' is an object with methods on it to get user Identities and set/get user attributes -Partners can determine what userIds are available to use in their SDK -Call mParticleUser.getUserIdentities() to return an object of userIdentities --> { userIdentities: {customerid: '1234', email: 'email@gmail.com'} } -For more identity types, see http://docs.mparticle.com/developers/sdk/javascript/identity#allowed-identity-types -Call mParticleUser.getMPID() to get mParticle ID -For any additional methods, see http://docs.mparticle.com/developers/sdk/javascript/apidocs/classes/mParticle.Identity.getCurrentUser().html -*/ - -function UserAttributeHandler(common) { - this.common = common || {}; -} -UserAttributeHandler.prototype.onRemoveUserAttribute = function() {}; -UserAttributeHandler.prototype.onSetUserAttribute = function() {}; -UserAttributeHandler.prototype.onConsentStateUpdated = function() {}; - -var userAttributeHandler = UserAttributeHandler; - -// =============== REACH OUT TO MPARTICLE IF YOU HAVE ANY QUESTIONS =============== -// -// Copyright 2018 mParticle, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - - - - - - - - -var name = initialization_1.name, - moduleId = initialization_1.moduleId, - MessageType = { - SessionStart: 1, - SessionEnd: 2, - PageView: 3, - PageEvent: 4, - CrashReport: 5, - OptOut: 6, - Commerce: 16, - Media: 20, - }; - -var constructor = function() { - var self = this, - isInitialized = false, - forwarderSettings, - reportingService, - eventQueue = []; - - self.name = initialization_1.name; - self.moduleId = initialization_1.moduleId; - self.common = new common(); - - function initForwarder( - settings, - service, - testMode, - trackerId, - userAttributes, - userIdentities, - appVersion, - appName, - customFlags, - clientId - ) { - forwarderSettings = settings; - - if ( - typeof window !== 'undefined' && - window.mParticle.isTestEnvironment - ) { - reportingService = function() {}; - } else { - reportingService = service; - } - - try { - initialization_1.initForwarder( - settings, - testMode, - userAttributes, - userIdentities, - processEvent, - eventQueue, - isInitialized, - self.common, - appVersion, - appName, - customFlags, - clientId - ); - self.eventHandler = new eventHandler(self.common); - self.identityHandler = new identityHandler(self.common); - self.userAttributeHandler = new userAttributeHandler(self.common); - self.commerceHandler = new commerceHandler(self.common); - - isInitialized = true; - } catch (e) { - console.log('Failed to initialize ' + name + ' - ' + e); - } - } - - function processEvent(event) { - var reportEvent = false; - if (isInitialized) { - try { - if (event.EventDataType === MessageType.SessionStart) { - reportEvent = logSessionStart(event); - } else if (event.EventDataType === MessageType.SessionEnd) { - reportEvent = logSessionEnd(event); - } else if (event.EventDataType === MessageType.CrashReport) { - reportEvent = logError(event); - } else if (event.EventDataType === MessageType.PageView) { - reportEvent = logPageView(event); - } else if (event.EventDataType === MessageType.Commerce) { - reportEvent = logEcommerceEvent(event); - } else if (event.EventDataType === MessageType.PageEvent) { - reportEvent = logEvent(event); - } else if (event.EventDataType === MessageType.Media) { - // Kits should just treat Media Events as generic Events - reportEvent = logEvent(event); - } - if (reportEvent === true && reportingService) { - reportingService(self, event); - return 'Successfully sent to ' + name; - } else { - return ( - 'Error logging event or event type not supported on forwarder ' + - name - ); - } - } catch (e) { - return 'Failed to send to ' + name + ' ' + e; - } - } else { - eventQueue.push(event); - return ( - "Can't send to forwarder " + - name + - ', not initialized. Event added to queue.' - ); - } - } - - function logSessionStart(event) { - try { - return sessionHandler_1.onSessionStart(event); - } catch (e) { - return { - error: 'Error starting session on forwarder ' + name + '; ' + e, - }; - } - } - - function logSessionEnd(event) { - try { - return sessionHandler_1.onSessionEnd(event); - } catch (e) { - return { - error: 'Error ending session on forwarder ' + name + '; ' + e, - }; - } - } - - function logError(event) { - try { - return self.eventHandler.logError(event); - } catch (e) { - return { - error: 'Error logging error on forwarder ' + name + '; ' + e, - }; - } - } - - function logPageView(event) { - try { - return self.eventHandler.logPageView(event); - } catch (e) { - return { - error: - 'Error logging page view on forwarder ' + name + '; ' + e, - }; - } - } - - function logEvent(event) { - try { - return self.eventHandler.logEvent(event); - } catch (e) { - return { - error: 'Error logging event on forwarder ' + name + '; ' + e, - }; - } - } - - function logEcommerceEvent(event) { - try { - return self.commerceHandler.logCommerceEvent(event); - } catch (e) { - return { - error: - 'Error logging purchase event on forwarder ' + - name + - '; ' + - e, - }; - } - } - - function setUserAttribute(key, value) { - if (isInitialized) { - try { - self.userAttributeHandler.onSetUserAttribute( - key, - value, - forwarderSettings - ); - return 'Successfully set user attribute on forwarder ' + name; - } catch (e) { - return ( - 'Error setting user attribute on forwarder ' + - name + - '; ' + - e - ); - } - } else { - return ( - "Can't set user attribute on forwarder " + - name + - ', not initialized' - ); - } - } - - function removeUserAttribute(key) { - if (isInitialized) { - try { - self.userAttributeHandler.onRemoveUserAttribute( - key, - forwarderSettings - ); - return ( - 'Successfully removed user attribute on forwarder ' + name - ); - } catch (e) { - return ( - 'Error removing user attribute on forwarder ' + - name + - '; ' + - e - ); - } - } else { - return ( - "Can't remove user attribute on forwarder " + - name + - ', not initialized' - ); - } - } - - function setUserIdentity(id, type) { - if (isInitialized) { - try { - self.identityHandler.onSetUserIdentity( - forwarderSettings, - id, - type - ); - return 'Successfully set user Identity on forwarder ' + name; - } catch (e) { - return ( - 'Error removing user attribute on forwarder ' + - name + - '; ' + - e - ); - } - } else { - return ( - "Can't call setUserIdentity on forwarder " + - name + - ', not initialized' - ); - } - } - - function onUserIdentified(user) { - if (isInitialized) { - try { - self.identityHandler.onUserIdentified(user); - - return ( - 'Successfully called onUserIdentified on forwarder ' + name - ); - } catch (e) { - return { - error: - 'Error calling onUserIdentified on forwarder ' + - name + - '; ' + - e, - }; - } - } else { - return ( - "Can't set new user identities on forwader " + - name + - ', not initialized' - ); - } - } - - function onIdentifyComplete(user, filteredIdentityRequest) { - if (isInitialized) { - try { - self.identityHandler.onIdentifyComplete( - user, - filteredIdentityRequest - ); - - return ( - 'Successfully called onIdentifyComplete on forwarder ' + - name - ); - } catch (e) { - return { - error: - 'Error calling onIdentifyComplete on forwarder ' + - name + - '; ' + - e, - }; - } - } else { - return ( - "Can't call onIdentifyCompleted on forwader " + - name + - ', not initialized' - ); - } - } - - function onLoginComplete(user, filteredIdentityRequest) { - if (isInitialized) { - try { - self.identityHandler.onLoginComplete( - user, - filteredIdentityRequest - ); - - return ( - 'Successfully called onLoginComplete on forwarder ' + name - ); - } catch (e) { - return { - error: - 'Error calling onLoginComplete on forwarder ' + - name + - '; ' + - e, - }; - } - } else { - return ( - "Can't call onLoginComplete on forwader " + - name + - ', not initialized' - ); - } - } - - function onLogoutComplete(user, filteredIdentityRequest) { - if (isInitialized) { - try { - self.identityHandler.onLogoutComplete( - user, - filteredIdentityRequest - ); - - return ( - 'Successfully called onLogoutComplete on forwarder ' + name - ); - } catch (e) { - return { - error: - 'Error calling onLogoutComplete on forwarder ' + - name + - '; ' + - e, - }; - } - } else { - return ( - "Can't call onLogoutComplete on forwader " + - name + - ', not initialized' - ); - } - } - - function onModifyComplete(user, filteredIdentityRequest) { - if (isInitialized) { - try { - self.identityHandler.onModifyComplete( - user, - filteredIdentityRequest - ); - - return ( - 'Successfully called onModifyComplete on forwarder ' + name - ); - } catch (e) { - return { - error: - 'Error calling onModifyComplete on forwarder ' + - name + - '; ' + - e, - }; - } - } else { - return ( - "Can't call onModifyComplete on forwader " + - name + - ', not initialized' - ); - } - } - - function setOptOut(isOptingOutBoolean) { - if (isInitialized) { - try { - self.initialization.setOptOut(isOptingOutBoolean); - - return 'Successfully called setOptOut on forwarder ' + name; - } catch (e) { - return { - error: - 'Error calling setOptOut on forwarder ' + - name + - '; ' + - e, - }; - } - } else { - return ( - "Can't call setOptOut on forwader " + - name + - ', not initialized' - ); - } - } - - this.init = initForwarder; - this.process = processEvent; - this.setUserAttribute = setUserAttribute; - this.removeUserAttribute = removeUserAttribute; - this.onUserIdentified = onUserIdentified; - this.setUserIdentity = setUserIdentity; - this.onIdentifyComplete = onIdentifyComplete; - this.onLoginComplete = onLoginComplete; - this.onLogoutComplete = onLogoutComplete; - this.onModifyComplete = onModifyComplete; - this.setOptOut = setOptOut; -}; - -function getId() { - return moduleId; -} - -function isObject(val) { - return ( - val != null && typeof val === 'object' && Array.isArray(val) === false - ); -} - -function register(config) { - if (!config) { - console.log( - 'You must pass a config object to register the kit ' + name - ); - return; - } - - if (!isObject(config)) { - console.log( - "'config' must be an object. You passed in a " + typeof config - ); - return; - } - - if (isObject(config.kits)) { - config.kits[name] = { - constructor: constructor, - }; - } else { - config.kits = {}; - config.kits[name] = { - constructor: constructor, - }; - } - console.log( - 'Successfully registered ' + name + ' to your mParticle configuration' - ); -} - -if (typeof window !== 'undefined') { - if (window && window.mParticle && window.mParticle.addForwarder) { - window.mParticle.addForwarder({ - name: name, - constructor: constructor, - getId: getId, - }); - } -} - -var webKitWrapper = { - register: register, -}; -var webKitWrapper_1 = webKitWrapper.register; - -exports.default = webKitWrapper; -exports.register = webKitWrapper_1;