Compare commits

...
10 Commits
Author SHA1 Message Date
nitowa 04eb6d78ec remove confusing readme 2023-08-15 22:35:06 +02:00
nitowa 29ad4588e7 init 2023-08-15 22:31:50 +02:00
nitowa d1d576edfa fix typo 2022-12-11 00:31:48 +01:00
nitowa 515b45de7c update README some more again 2022-11-23 11:17:01 +01:00
nitowa 604f3ecabc update README some more again 2022-11-23 11:14:51 +01:00
nitowa ad503bcabd update README some more again 2022-11-23 11:02:40 +01:00
nitowa c2c763962f update README some more again 2022-11-23 10:53:19 +01:00
nitowa a32617ff26 Updated README some more 2022-11-23 10:49:00 +01:00
nitowa 60ce8d4839 working prototype and updated README 2022-11-23 10:47:34 +01:00
nitowa a4b9635ee7 optimize webpack bundling, minimize gateway JS 2022-11-23 06:13:28 +01:00
27 changed files with 917 additions and 379 deletions
+6 -2
View File
@@ -1,14 +1,18 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<script src="https://bundle.run/browserify-zlib@0.2.0"></script> <script src="https://bundle.run/browserify-zlib@0.2.0"></script>
<script src="https://bundle.run/buffer@6.0.3"></script> <script src="https://bundle.run/buffer@6.0.3"></script>
<script src="https://cdn.jsdelivr.net/npm/ripple-lib@1.10.0/build/ripple-latest-min.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/ripple-lib@1.10.0/build/ripple-latest-min.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/xrpl@2.1.1"></script> <script src="https://cdn.jsdelivr.net/npm/xrpl@2.1.1"></script>
<script src="https://cdn.jsdelivr.net/npm/xrpio@0.1.7/lib/browser/xrpio.browser.js"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.15.4/css/all.css" integrity="sha384-DyZ88mC6Up2uqS4h/KRgHuoeGwBcD4Ng9SiP4dIRy0EXTlnuz47vAwmeGwVChigm" crossorigin="anonymous"/>
</head> </head>
<body> <body>
Loading ... <div style="text-align: center;">Downloading the application from the blockchain</div>
</body>
<script src="main.js"></script> <script src="main.js"></script>
</body>
</html> </html>
+49 -158
View File
@@ -9,10 +9,11 @@
"version": "1.0.0", "version": "1.0.0",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"buffer": "^6.0.3",
"chai": "^4.3.4", "chai": "^4.3.4",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"xrpio": "^0.1.6", "xrpio": "^0.1.8",
"xrpl": "^2.6.0-beta.0" "xrpl": "^2.7.0"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^18.11.9", "@types/node": "^18.11.9",
@@ -2790,11 +2791,11 @@
} }
}, },
"node_modules/ripple-address-codec": { "node_modules/ripple-address-codec": {
"version": "4.2.4", "version": "4.2.5",
"resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.2.4.tgz", "resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.2.5.tgz",
"integrity": "sha512-roAOjKz94+FboTItey1XRh5qynwt4xvfBLvbbcx+FiR94Yw2x3LrKLF2GVCMCSAh5I6PkcpADg6AbYsUbGN3nA==", "integrity": "sha512-SZ96zZH+0REeyEcYVFl0vqcsGRXiFXS2RUgHupHhtVkOEk6men53vngVjJwBrSnY+oa6Cri15q1zSni3DEoxNw==",
"dependencies": { "dependencies": {
"base-x": "3.0.9", "base-x": "^3.0.9",
"create-hash": "^1.1.2" "create-hash": "^1.1.2"
}, },
"engines": { "engines": {
@@ -2802,19 +2803,19 @@
} }
}, },
"node_modules/ripple-binary-codec": { "node_modules/ripple-binary-codec": {
"version": "1.4.2", "version": "1.4.3",
"resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.4.2.tgz", "resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.4.3.tgz",
"integrity": "sha512-EDKIyZMa/6Ay/oNgCwjD9b9CJv0zmBreeHVQeG4BYwy+9GPnIQjNeT5e/aB6OjAnhcmpgbPeBmzwmNVwzxlt0w==", "integrity": "sha512-P4ALjAJWBJpRApTQO+dJCrHE6mZxm7ypZot9OS0a3RCKOWTReNw0pDWfdhCGh1qXh71TeQnAk4CHdMLwR/76oQ==",
"dependencies": { "dependencies": {
"assert": "^2.0.0", "assert": "^2.0.0",
"big-integer": "^1.6.48", "big-integer": "^1.6.48",
"buffer": "5.6.0", "buffer": "5.6.0",
"create-hash": "^1.2.0", "create-hash": "^1.2.0",
"decimal.js": "^10.2.0", "decimal.js": "^10.2.0",
"ripple-address-codec": "^4.2.4" "ripple-address-codec": "^4.2.5"
}, },
"engines": { "engines": {
"node": ">=10.22.0" "node": ">= 10"
} }
}, },
"node_modules/ripple-binary-codec/node_modules/buffer": { "node_modules/ripple-binary-codec/node_modules/buffer": {
@@ -2827,15 +2828,15 @@
} }
}, },
"node_modules/ripple-keypairs": { "node_modules/ripple-keypairs": {
"version": "1.1.4", "version": "1.1.5",
"resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.1.4.tgz", "resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.1.5.tgz",
"integrity": "sha512-PMMjTOxZmCSBOvHPj6bA+V/HGx7oFgDtGGI8VcZYuaFO2H87UX0X0jhfHy+LA2Xy31WYlD7GaDIDDt2QO+AMtw==", "integrity": "sha512-wLJXIBsMVazn2Yp/7oP4PvgA4Gd1HtuZLftdEJFNOLgraf82phqa2AnNK3t9f3XeQnApW1jAe/FcFFOY6QUn5w==",
"dependencies": { "dependencies": {
"bn.js": "^5.1.1", "bn.js": "^5.1.1",
"brorand": "^1.0.5", "brorand": "^1.0.5",
"elliptic": "^6.5.4", "elliptic": "^6.5.4",
"hash.js": "^1.0.3", "hash.js": "^1.0.3",
"ripple-address-codec": "^4.2.4" "ripple-address-codec": "^4.2.5"
}, },
"engines": { "engines": {
"node": ">= 10" "node": ">= 10"
@@ -3684,97 +3685,33 @@
} }
}, },
"node_modules/xrpio": { "node_modules/xrpio": {
"version": "0.1.6", "version": "0.1.8",
"resolved": "https://registry.npmjs.org/xrpio/-/xrpio-0.1.6.tgz", "resolved": "https://registry.npmjs.org/xrpio/-/xrpio-0.1.8.tgz",
"integrity": "sha512-SHm3NfrRv9i82OWrUdyB+Djn0Zr6qwwMfs/wemNR1pf2ajorfiOPpWnvKQTgAZcfgS2DliIfMuF8nRiqfXlmmg==", "integrity": "sha512-lfPAOtX51/M1SIbJiInGWZ7BsIX0MunoOD1wVW2O0vH6fm+Qe+W6qak2ATY3lr5DXPP7Up/q/SyYhVE2p2idJw==",
"dependencies": { "dependencies": {
"ripple-lib": "^1.10.0", "ripple-lib": "^1.10.0",
"xrpl": "^2.1.1" "xrpl": "^2.7.0"
}
},
"node_modules/xrpio/node_modules/ws": {
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": "^5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"node_modules/xrpio/node_modules/xrpl": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/xrpl/-/xrpl-2.5.0.tgz",
"integrity": "sha512-NaGdOdNFQCVVfZ40etLvCzAdwzfArvKS8vhgZEPnueMuoPxupNZa8dX7ITVcTTD3T4qp+bj9q6jMrRbd/iXe3w==",
"dependencies": {
"bignumber.js": "^9.0.0",
"bip32": "^2.0.6",
"bip39": "^3.0.4",
"https-proxy-agent": "^5.0.0",
"lodash": "^4.17.4",
"ripple-address-codec": "^4.2.4",
"ripple-binary-codec": "^1.4.2",
"ripple-keypairs": "^1.1.4",
"ws": "^8.2.2"
},
"engines": {
"node": ">=10.13.0"
} }
}, },
"node_modules/xrpl": { "node_modules/xrpl": {
"version": "2.6.0-beta.0", "version": "2.7.0",
"resolved": "https://registry.npmjs.org/xrpl/-/xrpl-2.6.0-beta.0.tgz", "resolved": "https://registry.npmjs.org/xrpl/-/xrpl-2.7.0.tgz",
"integrity": "sha512-trxKBR5WKZ6ll0AJSipEJTlcO4pg3RhUJNiXwNQ7ONbKpgQf0wRfOTFHpAR9luIHsnSoUdS2B+xrC5w6P/jDlA==", "integrity": "sha512-P4M/Myxn2U7wl1avAG2Y/JuJMlKw2boLNx0f9woYQJLrS68sICmAfGOYKqPSzwRPc9P7kmydNrk+737nmFW5Vw==",
"dependencies": { "dependencies": {
"bignumber.js": "^9.0.0", "bignumber.js": "^9.0.0",
"bip32": "^2.0.6", "bip32": "^2.0.6",
"bip39": "^3.0.4", "bip39": "^3.0.4",
"https-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0",
"lodash": "^4.17.4", "lodash": "^4.17.4",
"ripple-address-codec": "^4.2.4", "ripple-address-codec": "^4.2.5",
"ripple-binary-codec": "^1.5.0-beta.2", "ripple-binary-codec": "^1.4.3",
"ripple-keypairs": "^1.1.4", "ripple-keypairs": "^1.1.5",
"ws": "^8.2.2" "ws": "^8.2.2"
}, },
"engines": { "engines": {
"node": ">=10.13.0" "node": ">=10.13.0"
} }
}, },
"node_modules/xrpl/node_modules/buffer": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
"integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
"dependencies": {
"base64-js": "^1.0.2",
"ieee754": "^1.1.4"
}
},
"node_modules/xrpl/node_modules/ripple-binary-codec": {
"version": "1.5.0-beta.2",
"resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.5.0-beta.2.tgz",
"integrity": "sha512-3KRezdZlgN567LiGBgJ4oakeZ2dMxgphoTaRMi9T/8diXUsjAxTlGc8ErjyRjqPo9oGtIBJUYkHyY0rGGWF5xg==",
"dependencies": {
"assert": "^2.0.0",
"big-integer": "^1.6.48",
"buffer": "5.6.0",
"create-hash": "^1.2.0",
"decimal.js": "^10.2.0",
"ripple-address-codec": "^4.2.4"
},
"engines": {
"node": ">=10.22.0"
}
},
"node_modules/xrpl/node_modules/ws": { "node_modules/xrpl/node_modules/ws": {
"version": "8.11.0", "version": "8.11.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
@@ -6075,25 +6012,25 @@
} }
}, },
"ripple-address-codec": { "ripple-address-codec": {
"version": "4.2.4", "version": "4.2.5",
"resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.2.4.tgz", "resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.2.5.tgz",
"integrity": "sha512-roAOjKz94+FboTItey1XRh5qynwt4xvfBLvbbcx+FiR94Yw2x3LrKLF2GVCMCSAh5I6PkcpADg6AbYsUbGN3nA==", "integrity": "sha512-SZ96zZH+0REeyEcYVFl0vqcsGRXiFXS2RUgHupHhtVkOEk6men53vngVjJwBrSnY+oa6Cri15q1zSni3DEoxNw==",
"requires": { "requires": {
"base-x": "3.0.9", "base-x": "^3.0.9",
"create-hash": "^1.1.2" "create-hash": "^1.1.2"
} }
}, },
"ripple-binary-codec": { "ripple-binary-codec": {
"version": "1.4.2", "version": "1.4.3",
"resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.4.2.tgz", "resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.4.3.tgz",
"integrity": "sha512-EDKIyZMa/6Ay/oNgCwjD9b9CJv0zmBreeHVQeG4BYwy+9GPnIQjNeT5e/aB6OjAnhcmpgbPeBmzwmNVwzxlt0w==", "integrity": "sha512-P4ALjAJWBJpRApTQO+dJCrHE6mZxm7ypZot9OS0a3RCKOWTReNw0pDWfdhCGh1qXh71TeQnAk4CHdMLwR/76oQ==",
"requires": { "requires": {
"assert": "^2.0.0", "assert": "^2.0.0",
"big-integer": "^1.6.48", "big-integer": "^1.6.48",
"buffer": "5.6.0", "buffer": "5.6.0",
"create-hash": "^1.2.0", "create-hash": "^1.2.0",
"decimal.js": "^10.2.0", "decimal.js": "^10.2.0",
"ripple-address-codec": "^4.2.4" "ripple-address-codec": "^4.2.5"
}, },
"dependencies": { "dependencies": {
"buffer": { "buffer": {
@@ -6108,15 +6045,15 @@
} }
}, },
"ripple-keypairs": { "ripple-keypairs": {
"version": "1.1.4", "version": "1.1.5",
"resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.1.4.tgz", "resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.1.5.tgz",
"integrity": "sha512-PMMjTOxZmCSBOvHPj6bA+V/HGx7oFgDtGGI8VcZYuaFO2H87UX0X0jhfHy+LA2Xy31WYlD7GaDIDDt2QO+AMtw==", "integrity": "sha512-wLJXIBsMVazn2Yp/7oP4PvgA4Gd1HtuZLftdEJFNOLgraf82phqa2AnNK3t9f3XeQnApW1jAe/FcFFOY6QUn5w==",
"requires": { "requires": {
"bn.js": "^5.1.1", "bn.js": "^5.1.1",
"brorand": "^1.0.5", "brorand": "^1.0.5",
"elliptic": "^6.5.4", "elliptic": "^6.5.4",
"hash.js": "^1.0.3", "hash.js": "^1.0.3",
"ripple-address-codec": "^4.2.4" "ripple-address-codec": "^4.2.5"
} }
}, },
"ripple-lib": { "ripple-lib": {
@@ -6717,76 +6654,30 @@
"requires": {} "requires": {}
}, },
"xrpio": { "xrpio": {
"version": "0.1.6", "version": "0.1.8",
"resolved": "https://registry.npmjs.org/xrpio/-/xrpio-0.1.6.tgz", "resolved": "https://registry.npmjs.org/xrpio/-/xrpio-0.1.8.tgz",
"integrity": "sha512-SHm3NfrRv9i82OWrUdyB+Djn0Zr6qwwMfs/wemNR1pf2ajorfiOPpWnvKQTgAZcfgS2DliIfMuF8nRiqfXlmmg==", "integrity": "sha512-lfPAOtX51/M1SIbJiInGWZ7BsIX0MunoOD1wVW2O0vH6fm+Qe+W6qak2ATY3lr5DXPP7Up/q/SyYhVE2p2idJw==",
"requires": { "requires": {
"ripple-lib": "^1.10.0", "ripple-lib": "^1.10.0",
"xrpl": "^2.1.1" "xrpl": "^2.7.0"
}, }
"dependencies": {
"ws": {
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
"requires": {}
}, },
"xrpl": { "xrpl": {
"version": "2.5.0", "version": "2.7.0",
"resolved": "https://registry.npmjs.org/xrpl/-/xrpl-2.5.0.tgz", "resolved": "https://registry.npmjs.org/xrpl/-/xrpl-2.7.0.tgz",
"integrity": "sha512-NaGdOdNFQCVVfZ40etLvCzAdwzfArvKS8vhgZEPnueMuoPxupNZa8dX7ITVcTTD3T4qp+bj9q6jMrRbd/iXe3w==", "integrity": "sha512-P4M/Myxn2U7wl1avAG2Y/JuJMlKw2boLNx0f9woYQJLrS68sICmAfGOYKqPSzwRPc9P7kmydNrk+737nmFW5Vw==",
"requires": { "requires": {
"bignumber.js": "^9.0.0", "bignumber.js": "^9.0.0",
"bip32": "^2.0.6", "bip32": "^2.0.6",
"bip39": "^3.0.4", "bip39": "^3.0.4",
"https-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0",
"lodash": "^4.17.4", "lodash": "^4.17.4",
"ripple-address-codec": "^4.2.4", "ripple-address-codec": "^4.2.5",
"ripple-binary-codec": "^1.4.2", "ripple-binary-codec": "^1.4.3",
"ripple-keypairs": "^1.1.4", "ripple-keypairs": "^1.1.5",
"ws": "^8.2.2"
}
}
}
},
"xrpl": {
"version": "2.6.0-beta.0",
"resolved": "https://registry.npmjs.org/xrpl/-/xrpl-2.6.0-beta.0.tgz",
"integrity": "sha512-trxKBR5WKZ6ll0AJSipEJTlcO4pg3RhUJNiXwNQ7ONbKpgQf0wRfOTFHpAR9luIHsnSoUdS2B+xrC5w6P/jDlA==",
"requires": {
"bignumber.js": "^9.0.0",
"bip32": "^2.0.6",
"bip39": "^3.0.4",
"https-proxy-agent": "^5.0.0",
"lodash": "^4.17.4",
"ripple-address-codec": "^4.2.4",
"ripple-binary-codec": "^1.5.0-beta.2",
"ripple-keypairs": "^1.1.4",
"ws": "^8.2.2" "ws": "^8.2.2"
}, },
"dependencies": { "dependencies": {
"buffer": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz",
"integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==",
"requires": {
"base64-js": "^1.0.2",
"ieee754": "^1.1.4"
}
},
"ripple-binary-codec": {
"version": "1.5.0-beta.2",
"resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.5.0-beta.2.tgz",
"integrity": "sha512-3KRezdZlgN567LiGBgJ4oakeZ2dMxgphoTaRMi9T/8diXUsjAxTlGc8ErjyRjqPo9oGtIBJUYkHyY0rGGWF5xg==",
"requires": {
"assert": "^2.0.0",
"big-integer": "^1.6.48",
"buffer": "5.6.0",
"create-hash": "^1.2.0",
"decimal.js": "^10.2.0",
"ripple-address-codec": "^4.2.4"
}
},
"ws": { "ws": {
"version": "8.11.0", "version": "8.11.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
+5 -4
View File
@@ -12,16 +12,17 @@
"build-gui": "cd src/frontend && npm run build", "build-gui": "cd src/frontend && npm run build",
"copy-gui": "cp src/frontend/build/index.html gui", "copy-gui": "cp src/frontend/build/index.html gui",
"webpack-gateway": "webpack --config webpack.gateway.js --progress && cp build/gateway/main.js gateway", "webpack-gateway": "webpack --config webpack.gateway.js --progress && cp build/gateway/main.js gateway",
"deploy": "node ./lib/Deploy.js" "deploy": "node ./lib/Deploy.js",
"github": "cp gateway/* ~/caisar.github.io && cd ~/caisar.github.io && git checkout master && git add -A && git commit -m \"update\" --allow-empty && git push origin master --force && git checkout main && git add -A && git commit -m \"update\" --allow-empty && git push origin main --force"
}, },
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"buffer": "^6.0.3",
"chai": "^4.3.4", "chai": "^4.3.4",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"xrpio": "^0.1.6", "xrpio": "^0.1.8",
"buffer": "^6.0.3", "xrpl": "^2.7.0"
"xrpl": "^2.6.0-beta.0"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^18.11.9", "@types/node": "^18.11.9",
-5
View File
@@ -1,5 +0,0 @@
(window as any).global = window;
(window as any).Buffer = (window as any).buffer.Buffer;
const rippleApi = require('xrpio')
window['xrpIO'] = rippleApi.xrpIO
+3 -3
View File
@@ -1,8 +1,8 @@
export const config = { export const config = {
"oracle": true, "oracle": true,
"secret": "sEdTP9Wkb4FSeaFhBavaob336sUTnqy", "secret": "sEdVwoxNkoxvRxRDaShXwWzVUkrgztd",
"treasuryAddress": "rffH6RPq8xcKAWVvdYsiGEFrz1mz2iH3oj", "treasuryAddress": "rnhVAr4ri5aTBUfoEzi4PPgc5yVo7jrAa5",
"contractAddress": "rDXi28Ud76cz9LtR2vAwsmGfqMcnfCTm8g", //pk: sEdSMv9Ztd2njbAhL3tTYqVRTKMQEME "contractAddress": "rakoA9cbkj9SbArhsQAiYFqm1fYYeWvrji", //pk: sEdVYHB7KJuK8jB1HF6Q8HQq62izZ9f
"rippleNode": "wss://s.altnet.rippletest.net:51233", "rippleNode": "wss://s.altnet.rippletest.net:51233",
} }
+3 -5
View File
@@ -1,13 +1,11 @@
(window as any).global = window;
(window as any).Buffer = (window as any).Buffer || require('buffer/').Buffer;
(window as any).buffer = (window as any).Buffer (window as any).buffer = (window as any).Buffer
import { xrpIO } from 'xrpio'; //import { xrpIO } from 'xrpio';
(window as any).xrpIO = xrpIO;
declare const xrpIO
declare const DATA_HASH: string declare const DATA_HASH: string
const api = new xrpIO("wss://s.altnet.rippletest.net:51233") const api = new xrpIO("wss://s.altnet.rippletest.net:51233")
api.connect().then(async _ => { api.connect().then(async _ => {
const data = await api.treeRead([DATA_HASH]); const data = await api.treeRead([DATA_HASH]);
alert("Writing to document now")
document.write(data) document.write(data)
}) })
+274 -167
View File
@@ -28,6 +28,7 @@
"rxjs": "~6.6.0", "rxjs": "~6.6.0",
"style-loader": "^3.3.1", "style-loader": "^3.3.1",
"tslib": "^2.1.0", "tslib": "^2.1.0",
"tur-toolkit": "^0.0.2",
"zone.js": "~0.11.4" "zone.js": "~0.11.4"
}, },
"devDependencies": { "devDependencies": {
@@ -184,6 +185,22 @@
} }
} }
}, },
"node_modules/@angular-devkit/build-angular/node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/@angular-devkit/build-angular/node_modules/ajv-keywords": { "node_modules/@angular-devkit/build-angular/node_modules/ajv-keywords": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -222,6 +239,12 @@
"webpack": "^5.0.0" "webpack": "^5.0.0"
} }
}, },
"node_modules/@angular-devkit/build-angular/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"node_modules/@angular-devkit/build-angular/node_modules/mini-css-extract-plugin": { "node_modules/@angular-devkit/build-angular/node_modules/mini-css-extract-plugin": {
"version": "2.6.0", "version": "2.6.0",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz",
@@ -305,6 +328,28 @@
} }
} }
}, },
"node_modules/@angular-devkit/core/node_modules/ajv": {
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
"integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/@angular-devkit/core/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"node_modules/@angular-devkit/schematics": { "node_modules/@angular-devkit/schematics": {
"version": "14.0.1", "version": "14.0.1",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.1.tgz", "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.1.tgz",
@@ -3236,13 +3281,13 @@
} }
}, },
"node_modules/ajv": { "node_modules/ajv": {
"version": "8.11.0", "version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": { "dependencies": {
"fast-deep-equal": "^3.1.1", "fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0", "fast-json-stable-stringify": "^2.0.0",
"require-from-string": "^2.0.2", "json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2" "uri-js": "^4.2.2"
}, },
"funding": { "funding": {
@@ -3267,6 +3312,28 @@
} }
} }
}, },
"node_modules/ajv-formats/node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/ajv-formats/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"node_modules/ajv-keywords": { "node_modules/ajv-keywords": {
"version": "3.5.2", "version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
@@ -4284,6 +4351,22 @@
"webpack": "^5.1.0" "webpack": "^5.1.0"
} }
}, },
"node_modules/copy-webpack-plugin/node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -4308,6 +4391,12 @@
"node": ">=10.13.0" "node": ">=10.13.0"
} }
}, },
"node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"node_modules/copy-webpack-plugin/node_modules/schema-utils": { "node_modules/copy-webpack-plugin/node_modules/schema-utils": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
@@ -7352,9 +7441,9 @@
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
}, },
"node_modules/json-schema-traverse": { "node_modules/json-schema-traverse": {
"version": "1.0.0", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
}, },
"node_modules/json5": { "node_modules/json5": {
"version": "2.2.1", "version": "2.2.1",
@@ -8294,26 +8383,6 @@
"webpack": "^4.4.0 || ^5.0.0" "webpack": "^4.4.0 || ^5.0.0"
} }
}, },
"node_modules/mini-css-extract-plugin/node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/mini-css-extract-plugin/node_modules/loader-utils": { "node_modules/mini-css-extract-plugin/node_modules/loader-utils": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
@@ -10581,6 +10650,7 @@
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true,
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
@@ -10899,28 +10969,6 @@
"url": "https://opencollective.com/webpack" "url": "https://opencollective.com/webpack"
} }
}, },
"node_modules/schema-utils/node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/schema-utils/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"node_modules/select-hose": { "node_modules/select-hose": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@@ -11757,26 +11805,6 @@
} }
} }
}, },
"node_modules/terser-webpack-plugin/node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/terser-webpack-plugin/node_modules/schema-utils": { "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -12011,6 +12039,11 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
"integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
}, },
"node_modules/tur-toolkit": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/tur-toolkit/-/tur-toolkit-0.0.2.tgz",
"integrity": "sha512-GI35K/XZcg8rqeIz+YS89RnfvlZ5nBJg3Bk9hdeX86W8fMNwCb4TT+4T1X6+/RTGfdQzQ60egn2eiPkl6DhQUg=="
},
"node_modules/type-check": { "node_modules/type-check": {
"version": "0.3.2", "version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
@@ -12365,6 +12398,22 @@
"webpack": "^4.0.0 || ^5.0.0" "webpack": "^4.0.0 || ^5.0.0"
} }
}, },
"node_modules/webpack-dev-middleware/node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -12377,6 +12426,12 @@
"ajv": "^8.8.2" "ajv": "^8.8.2"
} }
}, },
"node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"node_modules/webpack-dev-middleware/node_modules/schema-utils": { "node_modules/webpack-dev-middleware/node_modules/schema-utils": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
@@ -12446,6 +12501,22 @@
} }
} }
}, },
"node_modules/webpack-dev-server/node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/webpack-dev-server/node_modules/ajv-keywords": { "node_modules/webpack-dev-server/node_modules/ajv-keywords": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -12458,6 +12529,12 @@
"ajv": "^8.8.2" "ajv": "^8.8.2"
} }
}, },
"node_modules/webpack-dev-server/node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"node_modules/webpack-dev-server/node_modules/schema-utils": { "node_modules/webpack-dev-server/node_modules/schema-utils": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
@@ -12540,26 +12617,6 @@
} }
} }
}, },
"node_modules/webpack/node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/webpack/node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/webpack/node_modules/schema-utils": { "node_modules/webpack/node_modules/schema-utils": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -12899,6 +12956,18 @@
"webpack-subresource-integrity": "5.1.0" "webpack-subresource-integrity": "5.1.0"
}, },
"dependencies": { "dependencies": {
"ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
}
},
"ajv-keywords": { "ajv-keywords": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -12924,6 +12993,12 @@
"semver": "^7.3.5" "semver": "^7.3.5"
} }
}, },
"json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"mini-css-extract-plugin": { "mini-css-extract-plugin": {
"version": "2.6.0", "version": "2.6.0",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz",
@@ -12968,6 +13043,26 @@
"jsonc-parser": "3.0.0", "jsonc-parser": "3.0.0",
"rxjs": "6.6.7", "rxjs": "6.6.7",
"source-map": "0.7.3" "source-map": "0.7.3"
},
"dependencies": {
"ajv": {
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
"integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
}
},
"json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
}
} }
}, },
"@angular-devkit/schematics": { "@angular-devkit/schematics": {
@@ -15101,13 +15196,13 @@
} }
}, },
"ajv": { "ajv": {
"version": "8.11.0", "version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"requires": { "requires": {
"fast-deep-equal": "^3.1.1", "fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0", "fast-json-stable-stringify": "^2.0.0",
"require-from-string": "^2.0.2", "json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2" "uri-js": "^4.2.2"
} }
}, },
@@ -15118,6 +15213,26 @@
"dev": true, "dev": true,
"requires": { "requires": {
"ajv": "^8.0.0" "ajv": "^8.0.0"
},
"dependencies": {
"ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
}
},
"json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
}
} }
}, },
"ajv-keywords": { "ajv-keywords": {
@@ -15877,6 +15992,18 @@
"serialize-javascript": "^6.0.0" "serialize-javascript": "^6.0.0"
}, },
"dependencies": { "dependencies": {
"ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
}
},
"ajv-keywords": { "ajv-keywords": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -15895,6 +16022,12 @@
"is-glob": "^4.0.3" "is-glob": "^4.0.3"
} }
}, },
"json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"schema-utils": { "schema-utils": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
@@ -18073,9 +18206,9 @@
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
}, },
"json-schema-traverse": { "json-schema-traverse": {
"version": "1.0.0", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
}, },
"json5": { "json5": {
"version": "2.2.1", "version": "2.2.1",
@@ -18792,22 +18925,6 @@
"webpack-sources": "^1.1.0" "webpack-sources": "^1.1.0"
}, },
"dependencies": { "dependencies": {
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"loader-utils": { "loader-utils": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
@@ -20444,7 +20561,8 @@
"require-from-string": { "require-from-string": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true
}, },
"requires-port": { "requires-port": {
"version": "1.0.0", "version": "1.0.0",
@@ -20657,26 +20775,6 @@
"@types/json-schema": "^7.0.5", "@types/json-schema": "^7.0.5",
"ajv": "^6.12.4", "ajv": "^6.12.4",
"ajv-keywords": "^3.5.2" "ajv-keywords": "^3.5.2"
},
"dependencies": {
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
}
} }
}, },
"select-hose": { "select-hose": {
@@ -21359,22 +21457,6 @@
"terser": "^5.14.1" "terser": "^5.14.1"
}, },
"dependencies": { "dependencies": {
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"schema-utils": { "schema-utils": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -21528,6 +21610,11 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
"integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
}, },
"tur-toolkit": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/tur-toolkit/-/tur-toolkit-0.0.2.tgz",
"integrity": "sha512-GI35K/XZcg8rqeIz+YS89RnfvlZ5nBJg3Bk9hdeX86W8fMNwCb4TT+4T1X6+/RTGfdQzQ60egn2eiPkl6DhQUg=="
},
"type-check": { "type-check": {
"version": "0.3.2", "version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
@@ -21770,22 +21857,6 @@
"webpack-sources": "^3.2.3" "webpack-sources": "^3.2.3"
}, },
"dependencies": { "dependencies": {
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"schema-utils": { "schema-utils": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -21811,6 +21882,18 @@
"schema-utils": "^4.0.0" "schema-utils": "^4.0.0"
}, },
"dependencies": { "dependencies": {
"ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
}
},
"ajv-keywords": { "ajv-keywords": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -21820,6 +21903,12 @@
"fast-deep-equal": "^3.1.3" "fast-deep-equal": "^3.1.3"
} }
}, },
"json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"schema-utils": { "schema-utils": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
@@ -21870,6 +21959,18 @@
"ws": "^8.4.2" "ws": "^8.4.2"
}, },
"dependencies": { "dependencies": {
"ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
}
},
"ajv-keywords": { "ajv-keywords": {
"version": "5.1.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -21879,6 +21980,12 @@
"fast-deep-equal": "^3.1.3" "fast-deep-equal": "^3.1.3"
} }
}, },
"json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"schema-utils": { "schema-utils": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
+1
View File
@@ -33,6 +33,7 @@
"rxjs": "~6.6.0", "rxjs": "~6.6.0",
"style-loader": "^3.3.1", "style-loader": "^3.3.1",
"tslib": "^2.1.0", "tslib": "^2.1.0",
"tur-toolkit": "^0.0.2",
"zone.js": "~0.11.4" "zone.js": "~0.11.4"
}, },
"devDependencies": { "devDependencies": {
+20 -1
View File
@@ -1,7 +1,26 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { ResultsComponent } from './pages/results/results.component';
import { AppComponent } from './app.component';
import { HomeComponent } from './pages/home/home.component';
import { GetListedComponent } from './pages/getlisted/getlisted.component';
const routes: Routes = []; const routes: Routes = [{
path:'getlisted',
component: GetListedComponent,
pathMatch: "full"
},{
path: '',
component: HomeComponent,
pathMatch: "full"
},{
path: 'results/:searchterm',
component: ResultsComponent,
pathMatch: "full"
},{
path: '**',
redirectTo: ''
}];
@NgModule({ @NgModule({
imports: [RouterModule.forRoot(routes)], imports: [RouterModule.forRoot(routes)],
+1 -26
View File
@@ -1,26 +1 @@
<div class="main-container"> <router-outlet></router-outlet>
<header class="header-2">
<div class="branding">
<a class="nav-link">
<cds-icon shape="home" size="lg"></cds-icon>
<span class="title">Clarity</span>
</a>
</div>
<div class="header-nav">
<a class="active nav-link nav-text">Home</a>
</div>
</header>
<div class="content-container">
<div class="content-area">
<h3>Clarity Starter Instructions:</h3>
<ul>
<li>Start by clicking Fork in the toolbar above.</li>
<li>Implement the problem in the new editor.</li>
<li>
Save the result, and share the url in a GitHub or StackOverflow issue.
</li>
</ul>
</div>
</div>
</div>
+16 -3
View File
@@ -1,10 +1,23 @@
import { Component } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { TurgleDataService } from './services/TurgleData.service';
import { Router } from '@angular/router';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
templateUrl: './app.component.html', templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'], styleUrls: ['./app.component.scss'],
}) })
export class AppComponent { export class AppComponent implements OnInit{
title = 'angular-cli'; constructor(
private router: Router
){}
ngOnInit(): void {
}
onEnter():void {
this.router.navigate(['/results'])
}
} }
+28 -4
View File
@@ -1,4 +1,4 @@
import { NgModule } from '@angular/core'; import { APP_INITIALIZER, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser'; import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module'; import { AppRoutingModule } from './app-routing.module';
@@ -7,11 +7,35 @@ import { CdsModule } from '@cds/angular';
import { ClarityModule } from '@clr/angular'; import { ClarityModule } from '@clr/angular';
import { ClarityIcons, homeIcon } from '@cds/core/icon'; import { ClarityIcons, homeIcon } from '@cds/core/icon';
import { TurgleDataService, initShoutboxSvc } from './services/TurgleData.service';
import { FormsModule } from '@angular/forms';
import { ResultsComponent } from './pages/results/results.component';
import { HomeComponent } from './pages/home/home.component';
import { GetListedComponent } from './pages/getlisted/getlisted.component';
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [
imports: [BrowserModule, AppRoutingModule, ClarityModule, CdsModule], AppComponent,
providers: [], HomeComponent,
ResultsComponent,
GetListedComponent
],
imports: [
BrowserModule,
AppRoutingModule,
ClarityModule,
CdsModule,
FormsModule
],
providers: [
TurgleDataService,
{
provide: APP_INITIALIZER,
useFactory: initShoutboxSvc,
deps: [TurgleDataService],
multi: true
}
],
bootstrap: [AppComponent], bootstrap: [AppComponent],
}) })
export class AppModule { export class AppModule {
@@ -0,0 +1,28 @@
<div class="clr-row">
<div class="clr-col-3"></div>
<svg class="clr-col-6" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="716.667px" height="257.333px"
viewBox="0 0 716.667 257.333" enable-background="new 0 0 716.667 257.333" xml:space="preserve">
<g>
<path fill="#FF3333" d="M69.394,98.952h50.8h4.639v9.278h-4.639h-50.8v143.818v4.639h-9.279v-4.639V108.23H8.852h-4.64v-9.278h4.64
h51.264H69.394z" />
<path fill="#006600" d="M148.031,103.591v-4.407h9.743l-0.232,4.639l-0.232,101.833c0,23.195,20.877,41.754,46.393,41.754
s46.393-18.559,46.393-41.754V103.591v-4.407h9.742l-0.232,4.639l-0.232,101.833c0,27.836-24.588,51.031-55.671,51.031
s-55.671-23.195-55.671-51.031V103.591z" />
<path fill="#3333FF" d="M382.317,181.068c11.83,10.205,21.341,25.516,34.563,69.588l1.856,6.031h-9.743l-0.928-3.246
c-15.31-50.105-24.588-60.543-38.738-70.982h-58.919v69.59v4.639h-9.279v-4.639l0.232-148.225v-4.639h4.64l64.486-0.232
c25.98,0,46.625,19.021,46.625,41.985C417.112,160.191,402.499,176.427,382.317,181.068z M355.642,173.181h15.078
c20.181,0,37.114-14.15,37.114-32.244c0-18.325-16.934-32.707-37.346-32.707h-60.079v65.182
C325.486,173.413,340.564,173.181,355.642,173.181z" />
<path fill="#FFCC00" d="M515,182.458v-9.277h69.126v4.639c0,44.072-31.548,78.867-69.357,78.867
c-38.274,0-69.821-34.795-69.821-78.867c0-44.073,31.547-78.868,69.821-78.868c26.212-0.232,50.568,16.237,59.614,33.867
l-8.351,4.175c-7.654-15.31-28.764-28.996-51.264-28.764c-33.635,0-60.543,31.547-60.543,69.589
c0,38.041,26.908,69.59,60.543,69.59c33.171,0,60.078-31.549,60.078-64.951H515z" />
<path fill="#9900CC"
d="M621.239,103.591v-4.639h9.278v4.639V247.41h78.868h4.64v9.277h-4.64h-83.507h-4.64v-4.639V103.591z" />
</g>
<circle fill="none" stroke="#CC66FF" stroke-width="6" stroke-miterlimit="10" cx="170.667" cy="47" r="22" />
<circle fill="none" stroke="#33FF66" stroke-width="6" stroke-miterlimit="10" cx="236.667" cy="29" r="22" />
</svg>
<div class="clr-col-3"></div>
</div>
@@ -0,0 +1,23 @@
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'getlisted',
templateUrl: './getlisted.component.html',
styleUrls: ['./getlisted.component.scss'],
})
export class GetListedComponent implements OnInit{
constructor(
private router: Router
){}
ngOnInit(): void {
}
onEnter():void {
this.router.navigate(['/results'])
}
}
@@ -0,0 +1,54 @@
<div class="main-container">
<div class="clr-row">
<div class="clr-col-3"></div>
<svg class="clr-col-6" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="716.667px" height="257.333px"
viewBox="0 0 716.667 257.333" enable-background="new 0 0 716.667 257.333" xml:space="preserve">
<g>
<path fill="#FF3333" d="M69.394,98.952h50.8h4.639v9.278h-4.639h-50.8v143.818v4.639h-9.279v-4.639V108.23H8.852h-4.64v-9.278h4.64
h51.264H69.394z" />
<path fill="#006600" d="M148.031,103.591v-4.407h9.743l-0.232,4.639l-0.232,101.833c0,23.195,20.877,41.754,46.393,41.754
s46.393-18.559,46.393-41.754V103.591v-4.407h9.742l-0.232,4.639l-0.232,101.833c0,27.836-24.588,51.031-55.671,51.031
s-55.671-23.195-55.671-51.031V103.591z" />
<path fill="#3333FF" d="M382.317,181.068c11.83,10.205,21.341,25.516,34.563,69.588l1.856,6.031h-9.743l-0.928-3.246
c-15.31-50.105-24.588-60.543-38.738-70.982h-58.919v69.59v4.639h-9.279v-4.639l0.232-148.225v-4.639h4.64l64.486-0.232
c25.98,0,46.625,19.021,46.625,41.985C417.112,160.191,402.499,176.427,382.317,181.068z M355.642,173.181h15.078
c20.181,0,37.114-14.15,37.114-32.244c0-18.325-16.934-32.707-37.346-32.707h-60.079v65.182
C325.486,173.413,340.564,173.181,355.642,173.181z" />
<path fill="#FFCC00" d="M515,182.458v-9.277h69.126v4.639c0,44.072-31.548,78.867-69.357,78.867
c-38.274,0-69.821-34.795-69.821-78.867c0-44.073,31.547-78.868,69.821-78.868c26.212-0.232,50.568,16.237,59.614,33.867
l-8.351,4.175c-7.654-15.31-28.764-28.996-51.264-28.764c-33.635,0-60.543,31.547-60.543,69.589
c0,38.041,26.908,69.59,60.543,69.59c33.171,0,60.078-31.549,60.078-64.951H515z" />
<path fill="#9900CC"
d="M621.239,103.591v-4.639h9.278v4.639V247.41h78.868h4.64v9.277h-4.64h-83.507h-4.64v-4.639V103.591z" />
</g>
<circle fill="none" stroke="#CC66FF" stroke-width="6" stroke-miterlimit="10" cx="170.667" cy="47" r="22" />
<circle fill="none" stroke="#33FF66" stroke-width="6" stroke-miterlimit="10" cx="236.667" cy="29" r="22" />
</svg>
<div class="clr-col-3"></div>
</div>
<div class="clr-row" style="margin-top: 50px;">
<div class="clr-col-3"></div>
<div class="clr-col-5">
<input [(ngModel)]="searchData" style="width:100%; height: 45px; width: 100%; font-size: large;" type="text" (keydown.enter)="onEnter()" />
</div>
<div class="clr-col-1">
<input style="width:100%; height: 100%; font-size: large;" type="button" value="GO!" (click)="onEnter()">
</div>
<div class="clr-col-3"></div>
</div>
<div class="clr-row" style="height: 100px; margin-top: 50px; border: 1px green solid;">
<div class="clr-col-12" style="text-align:center">
your ad here
</div>
</div>
<div class="clr-row">
<div class="clr-col-3"></div>
<div class="clr-col-6" style="text-align: center;">
<a routerLink="/getlisted">Get listed on Turgl</a>
</div>
<div class="clr-col-3"></div>
</div>
</div>
@@ -0,0 +1,26 @@
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
@Component({
selector: 'home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss'],
})
export class HomeComponent implements OnInit{
searchData = ""
constructor(
private router: Router
){}
ngOnInit(): void {
}
onEnter():void {
console.log(this.searchData)
this.router.navigate([`/results/${this.searchData}`])
}
}
@@ -0,0 +1,52 @@
<div class="clr-row">
<a routerLink="/" class="clr-col-2" style="padding: 0px 10px 0px 10px; height: 75px">
<svg style="width:100%; height: 100%;" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="716.667px" height="257.333px"
viewBox="0 0 716.667 257.333" enable-background="new 0 0 716.667 257.333" xml:space="preserve">
<g>
<path fill="#FF3333" d="M69.394,98.952h50.8h4.639v9.278h-4.639h-50.8v143.818v4.639h-9.279v-4.639V108.23H8.852h-4.64v-9.278h4.64
h51.264H69.394z" />
<path fill="#006600" d="M148.031,103.591v-4.407h9.743l-0.232,4.639l-0.232,101.833c0,23.195,20.877,41.754,46.393,41.754
s46.393-18.559,46.393-41.754V103.591v-4.407h9.742l-0.232,4.639l-0.232,101.833c0,27.836-24.588,51.031-55.671,51.031
s-55.671-23.195-55.671-51.031V103.591z" />
<path fill="#3333FF" d="M382.317,181.068c11.83,10.205,21.341,25.516,34.563,69.588l1.856,6.031h-9.743l-0.928-3.246
c-15.31-50.105-24.588-60.543-38.738-70.982h-58.919v69.59v4.639h-9.279v-4.639l0.232-148.225v-4.639h4.64l64.486-0.232
c25.98,0,46.625,19.021,46.625,41.985C417.112,160.191,402.499,176.427,382.317,181.068z M355.642,173.181h15.078
c20.181,0,37.114-14.15,37.114-32.244c0-18.325-16.934-32.707-37.346-32.707h-60.079v65.182
C325.486,173.413,340.564,173.181,355.642,173.181z" />
<path fill="#FFCC00" d="M515,182.458v-9.277h69.126v4.639c0,44.072-31.548,78.867-69.357,78.867
c-38.274,0-69.821-34.795-69.821-78.867c0-44.073,31.547-78.868,69.821-78.868c26.212-0.232,50.568,16.237,59.614,33.867
l-8.351,4.175c-7.654-15.31-28.764-28.996-51.264-28.764c-33.635,0-60.543,31.547-60.543,69.589
c0,38.041,26.908,69.59,60.543,69.59c33.171,0,60.078-31.549,60.078-64.951H515z" />
<path fill="#9900CC"
d="M621.239,103.591v-4.639h9.278v4.639V247.41h78.868h4.64v9.277h-4.64h-83.507h-4.64v-4.639V103.591z" />
</g>
<circle fill="none" stroke="#CC66FF" stroke-width="6" stroke-miterlimit="10" cx="170.667" cy="47" r="22" />
<circle fill="none" stroke="#33FF66" stroke-width="6" stroke-miterlimit="10" cx="236.667" cy="29" r="22" />
</svg>
</a>
<div class="clr-col-6" style="margin-top: 26px;">
<input style="width:100%; height: 45px; width: 100%; font-size: large;" type="text" (keydown.enter)="onEnter()" />
</div>
<div class="clr-col-4"></div>
</div>
<div class="clr-row">
<div class="clr-col-2"></div>
<div class="clr-col-6">
<div class="clr-row" *ngFor="let item of searchResults">
<a class="card clickable" (click)="navigate(item)">
<h3 class="card-header">{{item.title}}</h3>
<div class="card-block">
<div class="card-text">
{{item.description}}
</div>
</div>
<div class="card-footer">
<span style="font-size: xx-small;">{{item.address}}</span>
</div>
</a>
</div>
</div>
<div class="clr-col-4"></div>
</div>
@@ -0,0 +1,54 @@
import { Component, Inject, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { TurgleDataService } from '../../services/TurgleData.service';
import { DOCUMENT } from '@angular/common';
import { postIpc } from 'tur-toolkit';
@Component({
selector: 'results',
templateUrl: './results.component.html',
styleUrls: ['./results.component.scss'],
})
export class ResultsComponent implements OnInit {
public window: Window;
searchResults = [{
title: "httxrp Shoutbox",
keywords: ["shoutbox", "httxrp", "cool", "nice"],
description: "The original httxrp proof of concept. A true all-time classic for both young and old.",
address: "45E61ED034C0D227274D8A2D211F592A8765407EAF82AB18E65792EBF20CD3AA"
}, {
title: "Turgl Search",
keywords: ["search", "google", "lookup", "frontpage"],
description: "The Tur index with a cool search function that you can use to find the dApp you are looking for!",
address: "F3ECFCDE08634A30D34132E400C77FD5786CD585A00651913F520A9F7E8FAD4C"
}]
constructor(
private router: Router,
private route: ActivatedRoute,
private dataSvc: TurgleDataService,
@Inject(DOCUMENT) document: Document
) {
this.window = document.defaultView as Window
}
ngOnInit(): void {
this.route.paramMap.subscribe(obs => {
const term = obs.get('searchterm')
console.log(term)
//this.searchResults = this.dataSvc.listings.filter(listing => listing.title.includes(term) || listing.keywords.includes(term))
})
}
onEnter(): void {
this.router.navigate(['/results'])
}
navigate(item: any): void {
postIpc({
type: 'Navigation',
data: item.address
})
}
}
@@ -0,0 +1,108 @@
import { Injectable } from "@angular/core";
import { DataParser } from "../util/Dataparser";
import { makeTestnetWallet } from "../util/TestnetUtils";
declare const xrpIO: any
declare const xrpl: any
const xrpNode = "wss://s.altnet.rippletest.net:51233"
@Injectable()
export class TurgleDataService {
public listings: any[] = []
private userWallet1: any
private userWallet2: any
private turgleAddress = "rD4wme6XmaU3MADtaxwe9TPubZgBDr11xZ"
private rippleApi: any;
private xrpio: any;
constructor(){
(window as any)['tds'] = this
}
private getTransactions = async () => {
const resp = await this.rippleApi.request({
command: "account_tx",
account: this.turgleAddress,
forward: false,
})
return resp.result.transactions.map((entry: any) => entry.tx)
}
private submit = async (shoutHash: string) => {
return await this.xrpio.writeRaw({ data: shoutHash }, this.turgleAddress, this.userWallet1.secret)
}
public getListed = async (listingRequest: any) => {
const listingRequestHash = await this.xrpio.treeWrite(JSON.stringify(listingRequest), this.userWallet1.address, this.userWallet2.secret)
return await this.submit(listingRequestHash)
}
private parseMemos = async (memos: any) => {
const listingrequests = await Promise.all(memos
.map((memo: any) => {
if (!memo.Memo || !memo.Memo.MemoData)
return
try {
return DataParser.parse('TxHash', hex_to_ascii(memo.Memo.MemoData))
} catch (e) {
return
}
})
.filter((hash: string) => hash != undefined)
.map((root_hash: string) => this.xrpio.treeRead([root_hash]))
)
return listingrequests.map((jsonStr: string) => JSON.parse(jsonStr))
}
private loadListings = async () => {
const raw_txs = await this.getTransactions()
return await this.parseMemos(raw_txs.flatMap((htx: any) => htx.Memos))
}
private subscribeTxs = async (callback: Function) => {
this.rippleApi.on('transaction', (tx: any) => callback(tx))
await this.rippleApi.connection.request({
command: 'subscribe',
accounts: [this.turgleAddress]
})
}
private listen = async () => {
await this.subscribeTxs(async (raw_tx: any) => {
const shouts = await this.parseMemos(raw_tx.transaction.Memos)
this.listings.unshift(...shouts)
})
}
initialize = async () => {
this.userWallet1 = await makeTestnetWallet()
this.userWallet2 = await makeTestnetWallet()
this.rippleApi = new xrpl.Client(xrpNode)
await this.rippleApi.connect()
this.xrpio = new xrpIO(xrpNode);
await this.xrpio.connect()
this.listings = await this.loadListings()
await this.listen();
}
}
export function initShoutboxSvc(svc: TurgleDataService): () => Promise<any> {
return svc.initialize;
}
function hex_to_ascii(input: any) {
var hex = input.toString();
var str = '';
for (var n = 0; n < hex.length; n += 2) {
str += String.fromCharCode(parseInt(hex.substr(n, 2), 16));
}
return str;
}
+73
View File
@@ -0,0 +1,73 @@
import { AMOUNT_DECIMALS, AMOUNT_FORMAT, NON_ZERO_TX_HASH } from "./protocol.constants"
import { Amount, ArgumentType, TxHash } from "./types"
export class DataParser {
public static parse(type: ArgumentType | string[], value: any){
if(typeof type === 'object' && type[0] != null){ //enum value type
if(! (type as string[]).includes(value)){
throw new Error(`Invalid enum value type: ${value} is not included in ${type}`)
}
return value
}else if(typeof type === 'string'){ //known defined type
if(!this.typeMap[type]){
throw new Error('Unknown parameter type'+type)
}
return this.typeMap[type](value)
}else{
throw new Error('FRAMEWORK_ERR: Datachecker.check(..): unknown argument type '+String(type))
}
}
private static typeMap : {[key in ArgumentType] : Function} = {
Amount: DataParser.parseAmount,
Boolean: DataParser.parseBoolean,
String: DataParser.parseString,
TxHash: DataParser.parseTxHash,
any: DataParser.parseAny
}
private static parseAmount(input: any): Amount{
if(typeof input === 'string' && typeof input !== 'number')
throw new Error('Input is not a number')
if(typeof input === 'string')
input = Number.parseFloat(input)
if(! AMOUNT_FORMAT.test(''+input)){
throw new Error('Input did not match the specification for `Amount`. The maximum number of decimals is '+AMOUNT_DECIMALS)
}
return input
}
private static parseString(input: any): string{
if(typeof input !== 'string')
throw new Error('Input is not a string')
return input
}
private static parseBoolean(input: any): boolean{
switch (typeof input) {
case 'boolean': return input;
case 'string': {
if(input === 'true') return true;
if(input === 'false') return false;
break;
}
}
throw new Error('Input is not a boolean')
}
private static parseAny(input: any): any{
return input
}
private static parseTxHash(input: any): TxHash{
if(typeof input !== 'string' || !NON_ZERO_TX_HASH.test(input)){
throw new Error('Input is not a trasnaction hash')
}
return input
}
}
+14
View File
@@ -0,0 +1,14 @@
export const makeTestnetWallet = () : Promise<{ secret: string, address: string }> => fetch('https://faucet.altnet.rippletest.net/accounts', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
}).then((raw:any) => {
return raw.json().then((content:any) => {
return({
secret: content.account.secret,
address: content.account.address
});
})
});
@@ -0,0 +1,14 @@
export const MSG_DELIM: string = ' '
export const MSG_DATA_MAX: number = 925
export const PUBKEY_LEN: number = 66
export const NON_ZERO_TX_HASH = new RegExp(`[0-9A-F]{64}`)
export const PTR_FORMAT = new RegExp(`^((${NON_ZERO_TX_HASH.source})|0)`)
export const DATA_FORMAT = new RegExp(`(.{1,${MSG_DATA_MAX}})`)
export const SIGNATURE_FORMAT = new RegExp(`(\\S{140}|\\S{142})$`)
export const SIGNER_FORMAT = new RegExp(`(\\S{${PUBKEY_LEN}})`)
export const MSG_FORMAT = new RegExp(`${PTR_FORMAT.source}${MSG_DELIM}${DATA_FORMAT.source}`, 'm')
export const AMOUNT_DECIMALS = 18
export const MAX_SUPPLY = 20_000_000
export const AMOUNT_FORMAT = new RegExp(`\d+(\.\d{1,${AMOUNT_DECIMALS}})?`)
export const MIN_XRP_FEE = "0.00001"
export const MIN_XRP_TX_VALUE = "0.000001"
+56
View File
@@ -0,0 +1,56 @@
export type Memo = {
type?: string
format?: string
data?: string
}
export type Signature = {signature: string, signer: PublicKey}
export type Environment = {
msg: {
sender: Address,
value: number,
data: XrpTransaction,
rawTx: string
}
}
export type Transition<Model> = {
call: keyof Model,
params: any[]
}
export type ArgumentType = 'String' | 'Amount' | 'TxHash' | 'Boolean' | 'any'
export type ReturnType = ArgumentType | 'Void'
export type MutableStateOperation = 'ARRAY_PUSH' | 'ARRAY_UNSHIFT' | 'ARRAY_SHIFT' | 'ARRAY_POP' | 'VALUE_SET' | 'VALUE_DELETE'
export const MutableStateOperationStrings = ['ARRAY_PUSH', 'ARRAY_UNSHIFT', 'ARRAY_SHIFT', 'ARRAY_POP', 'VALUE_SET', 'VALUE_DELETE']
export type ArgumentDefiniton = {
type: ArgumentType | string[],
name: string
}
export type ContractFunctionSignature<Of = any> = {
name: keyof Of
argTypes: ArgumentDefiniton[]
returnType: ReturnType
documentation?: string,
modifier?: Modifier[]
}
export type Modifier = "OWNER_ONLY" | "PAYABLE"
export type TransferListener = (transfer : { _from: Address, _to: Address, _value: Amount}) => void
export type ApprovalListener = (approval : { _from: Address, _spender: Address, _value: Amount}) => void
export type Address = string
export type Secret = string
export type PublicKey = string
export type Amount = number
export type TxHash = string
export type XrpTransaction = {
hash: TxHash,
sender: Address,
receiver: Address,
value: Amount,
fee: Amount,
ledger_index: number
}
+10 -2
View File
@@ -1,14 +1,22 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>AngularCli</title> <title>Türgle</title>
<base href="" /> <base href="" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" type="image/x-icon" href="favicon.ico" /> <link rel="icon" type="image/x-icon" href="favicon.ico" />
<script src="https://cdn.jsdelivr.net/npm/xrpl@2.7.0"></script>
<script src="https://cdn.jsdelivr.net/npm/xrpio@0.1.8/lib/browser/xrpio.browser.js"></script>
</head> </head>
<body cds-text="body"> <body cds-text="body">
<app-root></app-root> <app-root>
<div style="text-align: center;">Loading application state</div>
</app-root>
</body> </body>
</html> </html>