diff --git a/garlic-vue/garlic.js b/garlic-vue/garlic.js new file mode 100644 index 0000000..78c0d61 --- /dev/null +++ b/garlic-vue/garlic.js @@ -0,0 +1,53 @@ +class Garlic { + + static clove(element) { + // if the element is a text node + if (element.nodeType === 3) { + // convert the text to base64 + element.textContent = btoa(element.textContent); + } + // if the element has children + if (element.childNodes) { + // loop through the children + for (let i = 0; i < element.childNodes.length; i++) { + // recursively call the function on the child + Garlic.clove(element.childNodes[i]); + } + } + // return the element + return element; + } + + static addSalt(salt) { + // set a static variable to the salt + this.salt = "_yummy_" + salt; + document.salt = salt; + } + + static encode(string) { + return btoa(string+(this.salt || "")); + } + static decodeBase64(root) { + for (let i = 0; i < root.childNodes.length; i++) { + const child = root.childNodes[i]; + if (child.childNodes.length === 1 && child.childNodes[0].nodeType === 3) { + const decoded = atob(child.childNodes[0].nodeValue).split("_yummy_")[0]; + child.innerHTML = decoded; + console.log(child); + } else { + this.decodeBase64(child); + } + } + } + + + static peal(document, id) { + document.addEventListener("DOMContentLoaded", function() { + Garlic.decodeBase64(document.getElementById(id)); + }); + } +} + + + +export default Garlic; diff --git a/garlic-vue/package.json b/garlic-vue/package.json new file mode 100644 index 0000000..09b6c49 --- /dev/null +++ b/garlic-vue/package.json @@ -0,0 +1,12 @@ +{ + "name": "garlic-vue", + "version": "1.0.0", + "description": "", + "main": "garlic.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +}