use firebase realtime database

Seto Elkahfi committed Mar 3, 2019 at 15:59 UTC 3bc212204aa1b0673e36716ec9af0857f287d78a
9 files changed +1084 -231
.firebase/hosting.YnVpbGQ.cache
+12 -15
@@ -1,15 +1,12 @@
1 -asset-manifest.json,1550775623208,42a84d4480c886cbc5cdd5f3328093033720287c32c50365706d29bd8e17ed2b
2 -favicon.ico,499162500000,b72f7455f00e4e58792d2bca892abb068e2213838c0316d6b7a0d6d16acd1955
3 -index.html,1550775623208,55b994e74635f2d068af8f6f94f4d309e69dc867325f1d72ef159f8163795b52
4 -precache-manifest.1f7cd86a927e38fadda9ede832b18379.js,1550775623208,a5ae87ce7af84854921fbc60cf7e83dfc116351a4f5b0fc266aa2b2618ee5e69
5 -service-worker.js,1550775623208,9a889e88c07e144f3d32375d740a5a39ff4387f1d9cf9d4751a60c5a7f8f05ae
6 -static/css/main.47abdc83.chunk.css,1550775623209,1e150b977e937e6a586f318bf45b28297d317a972de6bb9583f3f3a03377c875
7 -static/css/main.47abdc83.chunk.css.map,1550775623212,5ef86a5df29807e5b4d174a6ea7171159f6d4dec4f14321c6fd80042dbec992f
8 -static/js/main.fa159366.chunk.js,1550775623212,9bf986269748867390871d604cd9a8996f540e0a70fb32501ba705b902abe587
9 -static/js/runtime~main.fdfcfda2.js,1550775623212,a98f099106e478773adc01f15f58f2f6ebe0f2e84233f7b37d118f90685dee40
10 -static/js/main.fa159366.chunk.js.map,1550775623212,7bc8bdd30a891e1c23e4ad299fb7fc5011380b9eae77505f967c7ab27eaa397a
11 -static/js/runtime~main.fdfcfda2.js.map,1550775623212,16648a77266513083ee7168e4552050ef50476172bcf27485998ef99f2dc848b
12 -static/media/logo.5d5d9eef.svg,1550775623212,45e3776da5a899185aa64ba11c8a59406f29a2de1d14efd166c59ff758019c9a
13 -manifest.json,499162500000,6aaf3d87dd9bb1e96f9c691c50d0ed378ed98a120a76dea78291281834cd36e9
14 -static/js/2.5bf9b2cd.chunk.js,1550775623212,6f0e09e497d1da7c4617c12b50a60ce4d4a73314b550aa16853ba500c40be5b1
15 -static/js/2.5bf9b2cd.chunk.js.map,1550775623212,fdbe2b3d34b8464ac7253abea9ba232e8194685b77aca6fbafdfa3d7a8a0b96d
1 +asset-manifest.json,1550788740935,17f63c5d58dee863b7de6fde0407091e6cd9300648e255a7822d4658458bab2f
2 +favicon.ico,1550784086149,5804cffc6fb8150c7355a8008821e92b78bf8780975ae3a37680a71dcef46291
3 +precache-manifest.bd4163bb6ce37c2eec37e02f22ac93b5.js,1550788740935,5922c476c04929e4e095abec2cc359565aba5b70ef2b8b52176dbb4709a0cd8b
4 +index.html,1550788740935,e094b5fd2f35042ab7c170136e7c447075dd59f5ee27055a36e46fa46113cd97
5 +service-worker.js,1550788740935,475f3467028c71b7c824a54ee23248a3a8579adeeeaece2008fa5da208f292d8
6 +static/js/main.522788af.chunk.js,1550788740939,b0a20ff71fd0d288bb86c771a550a3284555447cd804c92e6ca560a58db59677
7 +static/js/runtime~main.fdfcfda2.js,1550788740936,a98f099106e478773adc01f15f58f2f6ebe0f2e84233f7b37d118f90685dee40
8 +static/js/main.522788af.chunk.js.map,1550788740939,d0248060ec930a6e5d0255385c276c54f3625cb5b0054faf9d7f7a803b557ffe
9 +static/js/runtime~main.fdfcfda2.js.map,1550788740939,16648a77266513083ee7168e4552050ef50476172bcf27485998ef99f2dc848b
10 +manifest.json,1550784219081,f5cfc525bc87a1aa9d3b82e2d0dce68ff7c0f0cc87b44b84563c3275a0a5c162
11 +static/js/2.5ec8d5d9.chunk.js,1550788740939,fe0c1de23cd038fba02d81cdebdf2e62ca68d5066b148e560e08ce4ada84ef20
12 +static/js/2.5ec8d5d9.chunk.js.map,1550788740939,99298735a48408fbb97744a324d6ce2f919266dc0a022c8a8d6ee7256588d853
package-lock.json
+988 -170
@@ -853,6 +853,204 @@
853 "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz",
854 "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw=="
855 },
856 + "@firebase/app": {
857 + "version": "0.3.9",
858 + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.3.9.tgz",
859 + "integrity": "sha512-mjgBSQsjln5vAV4zDIn3gjsRlcvn6KxMVNGdhdJmrHRPfjBYUQJycn2X3xwF0krwB41WS8SQCsHHQssXY+kfVQ==",
860 + "requires": {
861 + "@firebase/app-types": "0.3.4",
862 + "@firebase/util": "0.2.7",
863 + "dom-storage": "2.1.0",
864 + "tslib": "1.9.0",
865 + "xmlhttprequest": "1.8.0"
866 + },
867 + "dependencies": {
868 + "tslib": {
869 + "version": "1.9.0",
870 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
871 + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
872 + }
873 + }
874 + },
875 + "@firebase/app-types": {
876 + "version": "0.3.4",
877 + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.3.4.tgz",
878 + "integrity": "sha512-XIc1wu7CJ0469STQPwyuokcBGFpRr7BVKKdajj/wAxzNntatDTXo1jdGfmjA8UYcuvW+QJmMkOE9KIOf5HgSzw=="
879 + },
880 + "@firebase/auth": {
881 + "version": "0.9.3",
882 + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.9.3.tgz",
883 + "integrity": "sha512-6NytqF693I+Y0iKvL+JNOOToBgA7fPRHCoGK4PCBzzGfpRB7Ou5QUdhNA/2HWNxQyA/GyqHhtUH3lQeV4nBJMg==",
884 + "requires": {
885 + "@firebase/auth-types": "0.5.2"
886 + }
887 + },
888 + "@firebase/auth-types": {
889 + "version": "0.5.2",
890 + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.5.2.tgz",
891 + "integrity": "sha512-EU/b3eakCgmOFTti+DOQFgdtA62exlN12VaAZc7Yw8Ld7r7nP4fL9+S9JP1uBOTcpJEoTPE75Wc/+RBClxlf8g=="
892 + },
893 + "@firebase/database": {
894 + "version": "0.3.12",
895 + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.3.12.tgz",
896 + "integrity": "sha512-Gim1kYUXBOX7xYwrBY6sOgQerOkhYGYvwwPCFeuBTXVy6X8b98SCSk7oMrmrG0+tG6gosmq7CT59AOxZEx4/0Q==",
897 + "requires": {
898 + "@firebase/database-types": "0.3.5",
899 + "@firebase/logger": "0.1.6",
900 + "@firebase/util": "0.2.7",
901 + "faye-websocket": "0.11.1",
902 + "tslib": "1.9.0"
903 + },
904 + "dependencies": {
905 + "tslib": {
906 + "version": "1.9.0",
907 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
908 + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
909 + }
910 + }
911 + },
912 + "@firebase/database-types": {
913 + "version": "0.3.5",
914 + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.3.5.tgz",
915 + "integrity": "sha512-MB98w9DsZtTN45sf651s5z4f2zdn5gPi2SMaZk32HLihPDgKv5pepzZ+grxioM7z5ZU1EvjjXRL7oM81OH3mZQ=="
916 + },
917 + "@firebase/firestore": {
918 + "version": "1.0.4",
919 + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.0.4.tgz",
920 + "integrity": "sha512-WgeCEeCNcqOHMJmvAoyo18wfuuJR1+O7zbi7Myt/oaIBWQSC5z4+vt6b/xJiqhMkjDJgMddP567kcsiV/nYvsw==",
921 + "requires": {
922 + "@firebase/firestore-types": "1.0.2",
923 + "@firebase/logger": "0.1.6",
924 + "@firebase/webchannel-wrapper": "0.2.13",
925 + "grpc": "1.18.0",
926 + "tslib": "1.9.0"
927 + },
928 + "dependencies": {
929 + "tslib": {
930 + "version": "1.9.0",
931 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
932 + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
933 + }
934 + }
935 + },
936 + "@firebase/firestore-types": {
937 + "version": "1.0.2",
938 + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.0.2.tgz",
939 + "integrity": "sha512-VJFxX3gC8hRm+UiKFk4rniQro3hRzeN9jFmmc2qq0qOO2KXrArc49tl7mj2c9pNPT+8la2xnmNXZ3g7ddJyd8Q=="
940 + },
941 + "@firebase/functions": {
942 + "version": "0.3.7",
943 + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.3.7.tgz",
944 + "integrity": "sha512-Z6GZSnM98pu7BpkKw4wzZEQ5z41A/N0PZKp4AmDc/Sc0kD0vveSJLV14ztykaxTU4b38w534LRJ0cZEIeLyicg==",
945 + "requires": {
946 + "@firebase/functions-types": "0.2.3",
947 + "@firebase/messaging-types": "0.2.5",
948 + "isomorphic-fetch": "2.2.1",
949 + "tslib": "1.9.0"
950 + },
951 + "dependencies": {
952 + "tslib": {
953 + "version": "1.9.0",
954 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
955 + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
956 + }
957 + }
958 + },
959 + "@firebase/functions-types": {
960 + "version": "0.2.3",
961 + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.2.3.tgz",
962 + "integrity": "sha512-/26AIgmwM9CQwWOXqK/A6AojTEYwEU/c6KbRk7ljny3k5aqRr+4fbYgDzCS2lriaExhLkXfYPx9MtjpDLO7YCQ=="
963 + },
964 + "@firebase/logger": {
965 + "version": "0.1.6",
966 + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.1.6.tgz",
967 + "integrity": "sha512-74COMdYK/CZBgCSzEJGtQYpi1wGg1QlCUTQ/BrqqEIGg7GcnEcUCyjtRLogRQPYj3P7qaJLzHTSErJ8ZUAGotQ=="
968 + },
969 + "@firebase/messaging": {
970 + "version": "0.3.11",
971 + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.3.11.tgz",
972 + "integrity": "sha512-2kcJ7YIcik0qTe/ot33QnGqyRFW+QKGfw/SHcX1Ta7p8fptEPO3T5dCrnPTPBjQJZ5hsIiYg493O1ebgm/BVWg==",
973 + "requires": {
974 + "@firebase/messaging-types": "0.2.5",
975 + "@firebase/util": "0.2.7",
976 + "tslib": "1.9.0"
977 + },
978 + "dependencies": {
979 + "tslib": {
980 + "version": "1.9.0",
981 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
982 + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
983 + }
984 + }
985 + },
986 + "@firebase/messaging-types": {
987 + "version": "0.2.5",
988 + "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.2.5.tgz",
989 + "integrity": "sha512-t0wyC8KdT+4ahV7DdaDov8S2zrcNOkxHjg0nP1XwaP5RpBmCQKIQ+acLKp81aR7ihRRabY8krpJ0wYTHv1+cqA=="
990 + },
991 + "@firebase/polyfill": {
992 + "version": "0.3.6",
993 + "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.6.tgz",
994 + "integrity": "sha512-C75qCebkyKnR2q65zEMB/bUe8dR+lDk8CiWBM5QedRijVIZBsXRjCjausvk6sgl6QUTBDlRG89+ohT/dg/uRVw==",
995 + "requires": {
996 + "core-js": "2.5.5",
997 + "promise-polyfill": "7.1.2",
998 + "whatwg-fetch": "2.0.4"
999 + },
1000 + "dependencies": {
1001 + "core-js": {
1002 + "version": "2.5.5",
1003 + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz",
1004 + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs="
1005 + },
1006 + "whatwg-fetch": {
1007 + "version": "2.0.4",
1008 + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
1009 + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
1010 + }
1011 + }
1012 + },
1013 + "@firebase/storage": {
1014 + "version": "0.2.8",
1015 + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.2.8.tgz",
1016 + "integrity": "sha512-Tj4nCSAptuMo2gvowP7EZerIuTBXE25HAdUAapBhwsaoKLXEPTzaCh40pfOV8PlQ7DPntqQhGWlpDEmDYdiJ6Q==",
1017 + "requires": {
1018 + "@firebase/storage-types": "0.2.5",
1019 + "tslib": "1.9.0"
1020 + },
1021 + "dependencies": {
1022 + "tslib": {
1023 + "version": "1.9.0",
1024 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
1025 + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
1026 + }
1027 + }
1028 + },
1029 + "@firebase/storage-types": {
1030 + "version": "0.2.5",
1031 + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.2.5.tgz",
1032 + "integrity": "sha512-6M7iIPhhyA2Vgn+Hfqtonns5mo+hSPeK3UgaYCTmnmQ+CNcjYuo5srBa/z6YvaLByfhiEhrrR5I8iCk4HyzQDQ=="
1033 + },
1034 + "@firebase/util": {
1035 + "version": "0.2.7",
1036 + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.7.tgz",
1037 + "integrity": "sha512-I6rN6smH1XEXUIDySI2jr4pM8r2tBnE40mANYco2lbzs2D0nk9aiwKp5MTWRAmqRy4WDe7sx9sqs0cFefzsD6A==",
1038 + "requires": {
1039 + "tslib": "1.9.0"
1040 + },
1041 + "dependencies": {
1042 + "tslib": {
1043 + "version": "1.9.0",
1044 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz",
1045 + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ=="
1046 + }
1047 + }
1048 + },
1049 + "@firebase/webchannel-wrapper": {
1050 + "version": "0.2.13",
1051 + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.13.tgz",
1052 + "integrity": "sha512-wsw8PBkojAfdz3ROMmO6Kk8BbzVsDO4Mhrh2EHJMxSzzKjd7NyXMKpGh9YOA1BY5gfMGQn/M+IVNR0KMryc5Xg=="
1053 + },
1054 "@mrmlnc/readdir-enhanced": {
1055 "version": "2.2.1",
1056 "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
@@ -1675,6 +1873,15 @@
1873 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
1874 "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
1875 },
1876 + "ascli": {
1877 + "version": "1.0.1",
1878 + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz",
1879 + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=",
1880 + "requires": {
1881 + "colour": "~0.7.1",
1882 + "optjs": "~3.2.2"
1883 + }
1884 + },
1885 "asn1": {
1886 "version": "0.2.4",
1887 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -2522,6 +2729,14 @@
2729 "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
2730 "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
2731 },
2732 + "bytebuffer": {
2733 + "version": "5.0.1",
2734 + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz",
2735 + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=",
2736 + "requires": {
2737 + "long": "~3"
2738 + }
2739 + },
2740 "bytes": {
2741 "version": "3.0.0",
2742 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -3440,6 +3655,11 @@
3655 "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
3656 "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM="
3657 },
3658 + "colour": {
3659 + "version": "0.7.1",
3660 + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz",
3661 + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g="
3662 + },
3663 "combined-stream": {
3664 "version": "1.0.7",
3665 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
@@ -4462,6 +4682,11 @@
4682 "entities": "^1.1.1"
4683 }
4684 },
4685 + "dom-storage": {
4686 + "version": "2.1.0",
4687 + "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz",
4688 + "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q=="
4689 + },
4690 "domain-browser": {
4691 "version": "1.2.0",
4692 "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
@@ -4579,6 +4804,14 @@
4804 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
4805 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
4806 },
4807 + "encoding": {
4808 + "version": "0.1.12",
4809 + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
4810 + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
4811 + "requires": {
4812 + "iconv-lite": "~0.4.13"
4813 + }
4814 + },
4815 "end-of-stream": {
4816 "version": "1.4.1",
4817 "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
@@ -5697,6 +5930,21 @@
5930 "locate-path": "^2.0.0"
5931 }
5932 },
5933 + "firebase": {
5934 + "version": "5.8.4",
5935 + "resolved": "https://registry.npmjs.org/firebase/-/firebase-5.8.4.tgz",
5936 + "integrity": "sha512-weILpmo3b4PWKMGQMbGu93OytkHt7tGVXL62mtfpBoIR2iPDpZiOv/LIFK/H7Y9Vr4H5EFuIBWXlramxsQlKfA==",
5937 + "requires": {
5938 + "@firebase/app": "0.3.9",
5939 + "@firebase/auth": "0.9.3",
5940 + "@firebase/database": "0.3.12",
5941 + "@firebase/firestore": "1.0.4",
5942 + "@firebase/functions": "0.3.7",
5943 + "@firebase/messaging": "0.3.11",
5944 + "@firebase/polyfill": "0.3.6",
5945 + "@firebase/storage": "0.2.8"
5946 + }
5947 + },
5948 "flat-cache": {
5949 "version": "1.3.4",
5950 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
@@ -6447,7 +6695,574 @@
6695 "readable-stream": {
6696 "version": "2.3.6",
6697 "bundled": true,
6450 - "optional": true,
6698 + "optional": true,
6699 + "requires": {
6700 + "core-util-is": "~1.0.0",
6701 + "inherits": "~2.0.3",
6702 + "isarray": "~1.0.0",
6703 + "process-nextick-args": "~2.0.0",
6704 + "safe-buffer": "~5.1.1",
6705 + "string_decoder": "~1.1.1",
6706 + "util-deprecate": "~1.0.1"
6707 + }
6708 + },
6709 + "rimraf": {
6710 + "version": "2.6.2",
6711 + "bundled": true,
6712 + "optional": true,
6713 + "requires": {
6714 + "glob": "^7.0.5"
6715 + }
6716 + },
6717 + "safe-buffer": {
6718 + "version": "5.1.1",
6719 + "bundled": true
6720 + },
6721 + "safer-buffer": {
6722 + "version": "2.1.2",
6723 + "bundled": true,
6724 + "optional": true
6725 + },
6726 + "sax": {
6727 + "version": "1.2.4",
6728 + "bundled": true,
6729 + "optional": true
6730 + },
6731 + "semver": {
6732 + "version": "5.5.0",
6733 + "bundled": true,
6734 + "optional": true
6735 + },
6736 + "set-blocking": {
6737 + "version": "2.0.0",
6738 + "bundled": true,
6739 + "optional": true
6740 + },
6741 + "signal-exit": {
6742 + "version": "3.0.2",
6743 + "bundled": true,
6744 + "optional": true
6745 + },
6746 + "string-width": {
6747 + "version": "1.0.2",
6748 + "bundled": true,
6749 + "requires": {
6750 + "code-point-at": "^1.0.0",
6751 + "is-fullwidth-code-point": "^1.0.0",
6752 + "strip-ansi": "^3.0.0"
6753 + }
6754 + },
6755 + "string_decoder": {
6756 + "version": "1.1.1",
6757 + "bundled": true,
6758 + "optional": true,
6759 + "requires": {
6760 + "safe-buffer": "~5.1.0"
6761 + }
6762 + },
6763 + "strip-ansi": {
6764 + "version": "3.0.1",
6765 + "bundled": true,
6766 + "requires": {
6767 + "ansi-regex": "^2.0.0"
6768 + }
6769 + },
6770 + "strip-json-comments": {
6771 + "version": "2.0.1",
6772 + "bundled": true,
6773 + "optional": true
6774 + },
6775 + "tar": {
6776 + "version": "4.4.1",
6777 + "bundled": true,
6778 + "optional": true,
6779 + "requires": {
6780 + "chownr": "^1.0.1",
6781 + "fs-minipass": "^1.2.5",
6782 + "minipass": "^2.2.4",
6783 + "minizlib": "^1.1.0",
6784 + "mkdirp": "^0.5.0",
6785 + "safe-buffer": "^5.1.1",
6786 + "yallist": "^3.0.2"
6787 + }
6788 + },
6789 + "util-deprecate": {
6790 + "version": "1.0.2",
6791 + "bundled": true,
6792 + "optional": true
6793 + },
6794 + "wide-align": {
6795 + "version": "1.1.2",
6796 + "bundled": true,
6797 + "optional": true,
6798 + "requires": {
6799 + "string-width": "^1.0.2"
6800 + }
6801 + },
6802 + "wrappy": {
6803 + "version": "1.0.2",
6804 + "bundled": true
6805 + },
6806 + "yallist": {
6807 + "version": "3.0.2",
6808 + "bundled": true
6809 + }
6810 + }
6811 + },
6812 + "function-bind": {
6813 + "version": "1.1.1",
6814 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
6815 + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
6816 + },
6817 + "functional-red-black-tree": {
6818 + "version": "1.0.1",
6819 + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
6820 + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
6821 + },
6822 + "get-caller-file": {
6823 + "version": "1.0.3",
6824 + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
6825 + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
6826 + },
6827 + "get-own-enumerable-property-symbols": {
6828 + "version": "3.0.0",
6829 + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz",
6830 + "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg=="
6831 + },
6832 + "get-stream": {
6833 + "version": "3.0.0",
6834 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
6835 + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
6836 + },
6837 + "get-value": {
6838 + "version": "2.0.6",
6839 + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
6840 + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
6841 + },
6842 + "getpass": {
6843 + "version": "0.1.7",
6844 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
6845 + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
6846 + "requires": {
6847 + "assert-plus": "^1.0.0"
6848 + }
6849 + },
6850 + "glob": {
6851 + "version": "7.1.3",
6852 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
6853 + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
6854 + "requires": {
6855 + "fs.realpath": "^1.0.0",
6856 + "inflight": "^1.0.4",
6857 + "inherits": "2",
6858 + "minimatch": "^3.0.4",
6859 + "once": "^1.3.0",
6860 + "path-is-absolute": "^1.0.0"
6861 + }
6862 + },
6863 + "glob-base": {
6864 + "version": "0.3.0",
6865 + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
6866 + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
6867 + "requires": {
6868 + "glob-parent": "^2.0.0",
6869 + "is-glob": "^2.0.0"
6870 + }
6871 + },
6872 + "glob-parent": {
6873 + "version": "2.0.0",
6874 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
6875 + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
6876 + "requires": {
6877 + "is-glob": "^2.0.0"
6878 + }
6879 + },
6880 + "glob-to-regexp": {
6881 + "version": "0.3.0",
6882 + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
6883 + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs="
6884 + },
6885 + "global-modules": {
6886 + "version": "2.0.0",
6887 + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
6888 + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
6889 + "requires": {
6890 + "global-prefix": "^3.0.0"
6891 + }
6892 + },
6893 + "global-prefix": {
6894 + "version": "3.0.0",
6895 + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
6896 + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
6897 + "requires": {
6898 + "ini": "^1.3.5",
6899 + "kind-of": "^6.0.2",
6900 + "which": "^1.3.1"
6901 + },
6902 + "dependencies": {
6903 + "kind-of": {
6904 + "version": "6.0.2",
6905 + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
6906 + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
6907 + }
6908 + }
6909 + },
6910 + "globals": {
6911 + "version": "11.11.0",
6912 + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
6913 + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw=="
6914 + },
6915 + "globby": {
6916 + "version": "8.0.2",
6917 + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz",
6918 + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==",
6919 + "requires": {
6920 + "array-union": "^1.0.1",
6921 + "dir-glob": "2.0.0",
6922 + "fast-glob": "^2.0.2",
6923 + "glob": "^7.1.2",
6924 + "ignore": "^3.3.5",
6925 + "pify": "^3.0.0",
6926 + "slash": "^1.0.0"
6927 + },
6928 + "dependencies": {
6929 + "ignore": {
6930 + "version": "3.3.10",
6931 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
6932 + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug=="
6933 + },
6934 + "pify": {
6935 + "version": "3.0.0",
6936 + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
6937 + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
6938 + }
6939 + }
6940 + },
6941 + "graceful-fs": {
6942 + "version": "4.1.15",
6943 + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
6944 + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
6945 + },
6946 + "growly": {
6947 + "version": "1.3.0",
6948 + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
6949 + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
6950 + },
6951 + "grpc": {
6952 + "version": "1.18.0",
6953 + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.18.0.tgz",
6954 + "integrity": "sha512-M0K67Zhv2ZzCjrTbQvjWgYFPB929L+qAVnbNgXepbfO5kJxUYc30dP8m8vb+o8QdahLHAeYfIqRoIzZRcCB98Q==",
6955 + "requires": {
6956 + "lodash.camelcase": "^4.3.0",
6957 + "lodash.clone": "^4.5.0",
6958 + "nan": "^2.0.0",
6959 + "node-pre-gyp": "^0.12.0",
6960 + "protobufjs": "^5.0.3"
6961 + },
6962 + "dependencies": {
6963 + "abbrev": {
6964 + "version": "1.1.1",
6965 + "bundled": true
6966 + },
6967 + "ansi-regex": {
6968 + "version": "2.1.1",
6969 + "bundled": true
6970 + },
6971 + "aproba": {
6972 + "version": "1.2.0",
6973 + "bundled": true
6974 + },
6975 + "are-we-there-yet": {
6976 + "version": "1.1.5",
6977 + "bundled": true,
6978 + "requires": {
6979 + "delegates": "^1.0.0",
6980 + "readable-stream": "^2.0.6"
6981 + }
6982 + },
6983 + "balanced-match": {
6984 + "version": "1.0.0",
6985 + "bundled": true
6986 + },
6987 + "brace-expansion": {
6988 + "version": "1.1.11",
6989 + "bundled": true,
6990 + "requires": {
6991 + "balanced-match": "^1.0.0",
6992 + "concat-map": "0.0.1"
6993 + }
6994 + },
6995 + "chownr": {
6996 + "version": "1.1.1",
6997 + "bundled": true
6998 + },
6999 + "code-point-at": {
7000 + "version": "1.1.0",
7001 + "bundled": true
7002 + },
7003 + "concat-map": {
7004 + "version": "0.0.1",
7005 + "bundled": true
7006 + },
7007 + "console-control-strings": {
7008 + "version": "1.1.0",
7009 + "bundled": true
7010 + },
7011 + "core-util-is": {
7012 + "version": "1.0.2",
7013 + "bundled": true
7014 + },
7015 + "debug": {
7016 + "version": "2.6.9",
7017 + "bundled": true,
7018 + "requires": {
7019 + "ms": "2.0.0"
7020 + }
7021 + },
7022 + "deep-extend": {
7023 + "version": "0.6.0",
7024 + "bundled": true
7025 + },
7026 + "delegates": {
7027 + "version": "1.0.0",
7028 + "bundled": true
7029 + },
7030 + "detect-libc": {
7031 + "version": "1.0.3",
7032 + "bundled": true
7033 + },
7034 + "fs-minipass": {
7035 + "version": "1.2.5",
7036 + "bundled": true,
7037 + "requires": {
7038 + "minipass": "^2.2.1"
7039 + }
7040 + },
7041 + "fs.realpath": {
7042 + "version": "1.0.0",
7043 + "bundled": true
7044 + },
7045 + "gauge": {
7046 + "version": "2.7.4",
7047 + "bundled": true,
7048 + "requires": {
7049 + "aproba": "^1.0.3",
7050 + "console-control-strings": "^1.0.0",
7051 + "has-unicode": "^2.0.0",
7052 + "object-assign": "^4.1.0",
7053 + "signal-exit": "^3.0.0",
7054 + "string-width": "^1.0.1",
7055 + "strip-ansi": "^3.0.1",
7056 + "wide-align": "^1.1.0"
7057 + }
7058 + },
7059 + "glob": {
7060 + "version": "7.1.2",
7061 + "bundled": true,
7062 + "requires": {
7063 + "fs.realpath": "^1.0.0",
7064 + "inflight": "^1.0.4",
7065 + "inherits": "2",
7066 + "minimatch": "^3.0.4",
7067 + "once": "^1.3.0",
7068 + "path-is-absolute": "^1.0.0"
7069 + }
7070 + },
7071 + "has-unicode": {
7072 + "version": "2.0.1",
7073 + "bundled": true
7074 + },
7075 + "iconv-lite": {
7076 + "version": "0.4.23",
7077 + "bundled": true,
7078 + "requires": {
7079 + "safer-buffer": ">= 2.1.2 < 3"
7080 + }
7081 + },
7082 + "ignore-walk": {
7083 + "version": "3.0.1",
7084 + "bundled": true,
7085 + "requires": {
7086 + "minimatch": "^3.0.4"
7087 + }
7088 + },
7089 + "inflight": {
7090 + "version": "1.0.6",
7091 + "bundled": true,
7092 + "requires": {
7093 + "once": "^1.3.0",
7094 + "wrappy": "1"
7095 + }
7096 + },
7097 + "inherits": {
7098 + "version": "2.0.3",
7099 + "bundled": true
7100 + },
7101 + "ini": {
7102 + "version": "1.3.5",
7103 + "bundled": true
7104 + },
7105 + "is-fullwidth-code-point": {
7106 + "version": "1.0.0",
7107 + "bundled": true,
7108 + "requires": {
7109 + "number-is-nan": "^1.0.0"
7110 + }
7111 + },
7112 + "isarray": {
7113 + "version": "1.0.0",
7114 + "bundled": true
7115 + },
7116 + "minimatch": {
7117 + "version": "3.0.4",
7118 + "bundled": true,
7119 + "requires": {
7120 + "brace-expansion": "^1.1.7"
7121 + }
7122 + },
7123 + "minimist": {
7124 + "version": "1.2.0",
7125 + "bundled": true
7126 + },
7127 + "minipass": {
7128 + "version": "2.3.5",
7129 + "bundled": true,
7130 + "requires": {
7131 + "safe-buffer": "^5.1.2",
7132 + "yallist": "^3.0.0"
7133 + }
7134 + },
7135 + "minizlib": {
7136 + "version": "1.1.1",
7137 + "bundled": true,
7138 + "requires": {
7139 + "minipass": "^2.2.1"
7140 + }
7141 + },
7142 + "mkdirp": {
7143 + "version": "0.5.1",
7144 + "bundled": true,
7145 + "requires": {
7146 + "minimist": "0.0.8"
7147 + },
7148 + "dependencies": {
7149 + "minimist": {
7150 + "version": "0.0.8",
7151 + "bundled": true
7152 + }
7153 + }
7154 + },
7155 + "ms": {
7156 + "version": "2.0.0",
7157 + "bundled": true
7158 + },
7159 + "needle": {
7160 + "version": "2.2.4",
7161 + "bundled": true,
7162 + "requires": {
7163 + "debug": "^2.1.2",
7164 + "iconv-lite": "^0.4.4",
7165 + "sax": "^1.2.4"
7166 + }
7167 + },
7168 + "node-pre-gyp": {
7169 + "version": "0.12.0",
7170 + "bundled": true,
7171 + "requires": {
7172 + "detect-libc": "^1.0.2",
7173 + "mkdirp": "^0.5.1",
7174 + "needle": "^2.2.1",
7175 + "nopt": "^4.0.1",
7176 + "npm-packlist": "^1.1.6",
7177 + "npmlog": "^4.0.2",
7178 + "rc": "^1.2.7",
7179 + "rimraf": "^2.6.1",
7180 + "semver": "^5.3.0",
7181 + "tar": "^4"
7182 + }
7183 + },
7184 + "nopt": {
7185 + "version": "4.0.1",
7186 + "bundled": true,
7187 + "requires": {
7188 + "abbrev": "1",
7189 + "osenv": "^0.1.4"
7190 + }
7191 + },
7192 + "npm-bundled": {
7193 + "version": "1.0.5",
7194 + "bundled": true
7195 + },
7196 + "npm-packlist": {
7197 + "version": "1.1.12",
7198 + "bundled": true,
7199 + "requires": {
7200 + "ignore-walk": "^3.0.1",
7201 + "npm-bundled": "^1.0.1"
7202 + }
7203 + },
7204 + "npmlog": {
7205 + "version": "4.1.2",
7206 + "bundled": true,
7207 + "requires": {
7208 + "are-we-there-yet": "~1.1.2",
7209 + "console-control-strings": "~1.1.0",
7210 + "gauge": "~2.7.3",
7211 + "set-blocking": "~2.0.0"
7212 + }
7213 + },
7214 + "number-is-nan": {
7215 + "version": "1.0.1",
7216 + "bundled": true
7217 + },
7218 + "object-assign": {
7219 + "version": "4.1.1",
7220 + "bundled": true
7221 + },
7222 + "once": {
7223 + "version": "1.4.0",
7224 + "bundled": true,
7225 + "requires": {
7226 + "wrappy": "1"
7227 + }
7228 + },
7229 + "os-homedir": {
7230 + "version": "1.0.2",
7231 + "bundled": true
7232 + },
7233 + "os-tmpdir": {
7234 + "version": "1.0.2",
7235 + "bundled": true
7236 + },
7237 + "osenv": {
7238 + "version": "0.1.5",
7239 + "bundled": true,
7240 + "requires": {
7241 + "os-homedir": "^1.0.0",
7242 + "os-tmpdir": "^1.0.0"
7243 + }
7244 + },
7245 + "path-is-absolute": {
7246 + "version": "1.0.1",
7247 + "bundled": true
7248 + },
7249 + "process-nextick-args": {
7250 + "version": "2.0.0",
7251 + "bundled": true
7252 + },
7253 + "rc": {
7254 + "version": "1.2.8",
7255 + "bundled": true,
7256 + "requires": {
7257 + "deep-extend": "^0.6.0",
7258 + "ini": "~1.3.0",
7259 + "minimist": "^1.2.0",
7260 + "strip-json-comments": "~2.0.1"
7261 + }
7262 + },
7263 + "readable-stream": {
7264 + "version": "2.3.6",
7265 + "bundled": true,
7266 "requires": {
7267 "core-util-is": "~1.0.0",
7268 "inherits": "~2.0.3",
@@ -6461,39 +7276,33 @@
7276 "rimraf": {
7277 "version": "2.6.2",
7278 "bundled": true,
6464 - "optional": true,
7279 "requires": {
7280 "glob": "^7.0.5"
7281 }
7282 },
7283 "safe-buffer": {
6470 - "version": "5.1.1",
7284 + "version": "5.1.2",
7285 "bundled": true
7286 },
7287 "safer-buffer": {
7288 "version": "2.1.2",
6475 - "bundled": true,
6476 - "optional": true
7289 + "bundled": true
7290 },
7291 "sax": {
7292 "version": "1.2.4",
6480 - "bundled": true,
6481 - "optional": true
7293 + "bundled": true
7294 },
7295 "semver": {
6484 - "version": "5.5.0",
6485 - "bundled": true,
6486 - "optional": true
7296 + "version": "5.6.0",
7297 + "bundled": true
7298 },
7299 "set-blocking": {
7300 "version": "2.0.0",
6490 - "bundled": true,
6491 - "optional": true
7301 + "bundled": true
7302 },
7303 "signal-exit": {
7304 "version": "3.0.2",
6495 - "bundled": true,
6496 - "optional": true
7305 + "bundled": true
7306 },
7307 "string-width": {
7308 "version": "1.0.2",
@@ -6507,7 +7316,6 @@
7316 "string_decoder": {
7317 "version": "1.1.1",
7318 "bundled": true,
6510 - "optional": true,
7319 "requires": {
7320 "safe-buffer": "~5.1.0"
7321 }
@@ -6521,34 +7329,30 @@
7329 },
7330 "strip-json-comments": {
7331 "version": "2.0.1",
6524 - "bundled": true,
6525 - "optional": true
7332 + "bundled": true
7333 },
7334 "tar": {
6528 - "version": "4.4.1",
7335 + "version": "4.4.8",
7336 "bundled": true,
6530 - "optional": true,
7337 "requires": {
6532 - "chownr": "^1.0.1",
7338 + "chownr": "^1.1.1",
7339 "fs-minipass": "^1.2.5",
6534 - "minipass": "^2.2.4",
6535 - "minizlib": "^1.1.0",
7340 + "minipass": "^2.3.4",
7341 + "minizlib": "^1.1.1",
7342 "mkdirp": "^0.5.0",
6537 - "safe-buffer": "^5.1.1",
7343 + "safe-buffer": "^5.1.2",
7344 "yallist": "^3.0.2"
7345 }
7346 },
7347 "util-deprecate": {
7348 "version": "1.0.2",
6543 - "bundled": true,
6544 - "optional": true
7349 + "bundled": true
7350 },
7351 "wide-align": {
6547 - "version": "1.1.2",
7352 + "version": "1.1.3",
7353 "bundled": true,
6549 - "optional": true,
7354 "requires": {
6551 - "string-width": "^1.0.2"
7355 + "string-width": "^1.0.2 || 2"
7356 }
7357 },
7358 "wrappy": {
@@ -6556,150 +7360,11 @@
7360 "bundled": true
7361 },
7362 "yallist": {
6559 - "version": "3.0.2",
7363 + "version": "3.0.3",
7364 "bundled": true
7365 }
7366 }
7367 },
6564 - "function-bind": {
6565 - "version": "1.1.1",
6566 - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
6567 - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
6568 - },
6569 - "functional-red-black-tree": {
6570 - "version": "1.0.1",
6571 - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
6572 - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
6573 - },
6574 - "get-caller-file": {
6575 - "version": "1.0.3",
6576 - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
6577 - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
6578 - },
6579 - "get-own-enumerable-property-symbols": {
6580 - "version": "3.0.0",
6581 - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz",
6582 - "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg=="
6583 - },
6584 - "get-stream": {
6585 - "version": "3.0.0",
6586 - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
6587 - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
6588 - },
6589 - "get-value": {
6590 - "version": "2.0.6",
6591 - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
6592 - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
6593 - },
6594 - "getpass": {
6595 - "version": "0.1.7",
6596 - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
6597 - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
6598 - "requires": {
6599 - "assert-plus": "^1.0.0"
6600 - }
6601 - },
6602 - "glob": {
6603 - "version": "7.1.3",
6604 - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
6605 - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
6606 - "requires": {
6607 - "fs.realpath": "^1.0.0",
6608 - "inflight": "^1.0.4",
6609 - "inherits": "2",
6610 - "minimatch": "^3.0.4",
6611 - "once": "^1.3.0",
6612 - "path-is-absolute": "^1.0.0"
6613 - }
6614 - },
6615 - "glob-base": {
6616 - "version": "0.3.0",
6617 - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
6618 - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
6619 - "requires": {
6620 - "glob-parent": "^2.0.0",
6621 - "is-glob": "^2.0.0"
6622 - }
6623 - },
6624 - "glob-parent": {
6625 - "version": "2.0.0",
6626 - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
6627 - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
6628 - "requires": {
6629 - "is-glob": "^2.0.0"
6630 - }
6631 - },
6632 - "glob-to-regexp": {
6633 - "version": "0.3.0",
6634 - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
6635 - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs="
6636 - },
6637 - "global-modules": {
6638 - "version": "2.0.0",
6639 - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
6640 - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
6641 - "requires": {
6642 - "global-prefix": "^3.0.0"
6643 - }
6644 - },
6645 - "global-prefix": {
6646 - "version": "3.0.0",
6647 - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
6648 - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
6649 - "requires": {
6650 - "ini": "^1.3.5",
6651 - "kind-of": "^6.0.2",
6652 - "which": "^1.3.1"
6653 - },
6654 - "dependencies": {
6655 - "kind-of": {
6656 - "version": "6.0.2",
6657 - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
6658 - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
6659 - }
6660 - }
6661 - },
6662 - "globals": {
6663 - "version": "11.11.0",
6664 - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz",
6665 - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw=="
6666 - },
6667 - "globby": {
6668 - "version": "8.0.2",
6669 - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz",
6670 - "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==",
6671 - "requires": {
6672 - "array-union": "^1.0.1",
6673 - "dir-glob": "2.0.0",
6674 - "fast-glob": "^2.0.2",
6675 - "glob": "^7.1.2",
6676 - "ignore": "^3.3.5",
6677 - "pify": "^3.0.0",
6678 - "slash": "^1.0.0"
6679 - },
6680 - "dependencies": {
6681 - "ignore": {
6682 - "version": "3.3.10",
6683 - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
6684 - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug=="
6685 - },
6686 - "pify": {
6687 - "version": "3.0.0",
6688 - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
6689 - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
6690 - }
6691 - }
6692 - },
6693 - "graceful-fs": {
6694 - "version": "4.1.15",
6695 - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
6696 - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
6697 - },
6698 - "growly": {
6699 - "version": "1.3.0",
6700 - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
6701 - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
6702 - },
7368 "gzip-size": {
7369 "version": "5.0.0",
7370 "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz",
@@ -7556,6 +8221,32 @@
8221 "ipaddr.js": "^1.5.2"
8222 }
8223 },
8224 + "intl-format-cache": {
8225 + "version": "2.1.0",
8226 + "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-2.1.0.tgz",
8227 + "integrity": "sha1-BKNp/sv61tpgBbrh8UMzMy3PkxY="
8228 + },
8229 + "intl-messageformat": {
8230 + "version": "2.2.0",
8231 + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-2.2.0.tgz",
8232 + "integrity": "sha1-NFvNRt5jC3aDMwwuUhd/9eq0hPw=",
8233 + "requires": {
8234 + "intl-messageformat-parser": "1.4.0"
8235 + }
8236 + },
8237 + "intl-messageformat-parser": {
8238 + "version": "1.4.0",
8239 + "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz",
8240 + "integrity": "sha1-tD1FqXRoytvkQzHXS7Ho3qRPwHU="
8241 + },
8242 + "intl-relativeformat": {
8243 + "version": "2.1.0",
8244 + "resolved": "https://registry.npmjs.org/intl-relativeformat/-/intl-relativeformat-2.1.0.tgz",
8245 + "integrity": "sha1-AQ8RBYAiUfQKxH0OPhogE0iiVd8=",
8246 + "requires": {
8247 + "intl-messageformat": "^2.0.0"
8248 + }
8249 + },
8250 "invariant": {
8251 "version": "2.2.4",
8252 "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
@@ -7874,6 +8565,15 @@
8565 "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
8566 "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
8567 },
8568 + "isomorphic-fetch": {
8569 + "version": "2.2.1",
8570 + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
8571 + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
8572 + "requires": {
8573 + "node-fetch": "^1.0.1",
8574 + "whatwg-fetch": ">=0.10.0"
8575 + }
8576 + },
8577 "isstream": {
8578 "version": "0.1.2",
8579 "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
@@ -8838,6 +9538,11 @@
9538 "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
9539 "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
9540 },
9541 + "lodash.clone": {
9542 + "version": "4.5.0",
9543 + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
9544 + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
9545 + },
9546 "lodash.get": {
9547 "version": "4.4.2",
9548 "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
@@ -8885,6 +9590,11 @@
9590 "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
9591 "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po="
9592 },
9593 + "long": {
9594 + "version": "3.2.0",
9595 + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
9596 + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s="
9597 + },
9598 "loose-envify": {
9599 "version": "1.4.0",
9600 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -9223,8 +9933,7 @@
9933 "nan": {
9934 "version": "2.12.1",
9935 "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
9226 - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==",
9227 - "optional": true
9936 + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw=="
9937 },
9938 "nanomatch": {
9939 "version": "1.2.13",
@@ -9289,6 +9998,15 @@
9998 "lower-case": "^1.1.1"
9999 }
10000 },
10001 + "node-fetch": {
10002 + "version": "1.7.3",
10003 + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
10004 + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
10005 + "requires": {
10006 + "encoding": "^0.1.11",
10007 + "is-stream": "^1.0.1"
10008 + }
10009 + },
10010 "node-forge": {
10011 "version": "0.7.5",
10012 "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
@@ -9608,6 +10326,11 @@
10326 "wordwrap": "~1.0.0"
10327 }
10328 },
10329 + "optjs": {
10330 + "version": "3.2.2",
10331 + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz",
10332 + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4="
10333 + },
10334 "original": {
10335 "version": "1.0.2",
10336 "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
@@ -12260,6 +12983,11 @@
12983 "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
12984 "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM="
12985 },
12986 + "promise-polyfill": {
12987 + "version": "7.1.2",
12988 + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.2.tgz",
12989 + "integrity": "sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ=="
12990 + },
12991 "prompts": {
12992 "version": "0.1.14",
12993 "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz",
@@ -12287,6 +13015,74 @@
13015 "xtend": "^4.0.1"
13016 }
13017 },
13018 + "protobufjs": {
13019 + "version": "5.0.3",
13020 + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz",
13021 + "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==",
13022 + "requires": {
13023 + "ascli": "~1",
13024 + "bytebuffer": "~5",
13025 + "glob": "^7.0.5",
13026 + "yargs": "^3.10.0"
13027 + },
13028 + "dependencies": {
13029 + "camelcase": {
13030 + "version": "2.1.1",
13031 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
13032 + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
13033 + },
13034 + "cliui": {
13035 + "version": "3.2.0",
13036 + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
13037 + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
13038 + "requires": {
13039 + "string-width": "^1.0.1",
13040 + "strip-ansi": "^3.0.1",
13041 + "wrap-ansi": "^2.0.0"
13042 + }
13043 + },
13044 + "is-fullwidth-code-point": {
13045 + "version": "1.0.0",
13046 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
13047 + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
13048 + "requires": {
13049 + "number-is-nan": "^1.0.0"
13050 + }
13051 + },
13052 + "os-locale": {
13053 + "version": "1.4.0",
13054 + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
13055 + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
13056 + "requires": {
13057 + "lcid": "^1.0.0"
13058 + }
13059 + },
13060 + "string-width": {
13061 + "version": "1.0.2",
13062 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
13063 + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
13064 + "requires": {
13065 + "code-point-at": "^1.0.0",
13066 + "is-fullwidth-code-point": "^1.0.0",
13067 + "strip-ansi": "^3.0.0"
13068 + }
13069 + },
13070 + "yargs": {
13071 + "version": "3.32.0",
13072 + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
13073 + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
13074 + "requires": {
13075 + "camelcase": "^2.0.1",
13076 + "cliui": "^3.0.3",
13077 + "decamelize": "^1.1.1",
13078 + "os-locale": "^1.4.0",
13079 + "string-width": "^1.0.1",
13080 + "window-size": "^0.1.4",
13081 + "y18n": "^3.2.0"
13082 + }
13083 + }
13084 + }
13085 + },
13086 "proxy-addr": {
13087 "version": "2.0.4",
13088 "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
@@ -12607,6 +13403,18 @@
13403 "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.1.3.tgz",
13404 "integrity": "sha512-GoqeM3Xadie7XUApXOjkY3Qhs8RkwB/Za4WMedBGrOKH1eTuKGyoAECff7jiVonJchOx6KZ9i8ILO5XIoHB+Tg=="
13405 },
13406 + "react-intl": {
13407 + "version": "2.8.0",
13408 + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.8.0.tgz",
13409 + "integrity": "sha512-1cSasNkHxZOXYYhms9Q1tSEWF8AWZQNq3nPLB/j8mYV0ZTSt2DhGQXHfKrKQMu4cgj9J1Crqg7xFPICTBgzqtQ==",
13410 + "requires": {
13411 + "hoist-non-react-statics": "^2.5.5",
13412 + "intl-format-cache": "^2.0.5",
13413 + "intl-messageformat": "^2.1.0",
13414 + "intl-relativeformat": "^2.1.0",
13415 + "invariant": "^2.1.1"
13416 + }
13417 + },
13418 "react-is": {
13419 "version": "16.8.3",
13420 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.3.tgz",
@@ -15896,6 +16704,11 @@
16704 "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
16705 "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
16706 },
16707 + "window-size": {
16708 + "version": "0.1.4",
16709 + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
16710 + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
16711 + },
16712 "wordwrap": {
16713 "version": "1.0.0",
16714 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
@@ -16131,6 +16944,11 @@
16944 "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
16945 "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
16946 },
16947 + "xmlhttprequest": {
16948 + "version": "1.8.0",
16949 + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
16950 + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
16951 + },
16952 "xregexp": {
16953 "version": "4.0.0",
16954 "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
package.json
+2
@@ -3,8 +3,10 @@
3 "version": "0.1.0",
4 "private": true,
5 "dependencies": {
6 + "firebase": "^5.8.4",
7 "react": "^16.8.3",
8 "react-dom": "^16.8.3",
9 + "react-intl": "^2.8.0",
10 "react-rotating-text": "^1.2.1",
11 "react-router-dom": "^4.3.1",
12 "react-scripts": "2.1.5"
src/components/Firebase/context.js new
+5
@@ -0,0 +1,5 @@
1 +import React from 'react';
2 +
3 +const FirebaseContext = React.createContext(null);
4 +
5 +export default FirebaseContext;
\ No newline at end of file
src/components/Firebase/firebase.js new
+24
@@ -0,0 +1,24 @@
1 + import app from 'firebase/app';
2 + import 'firebase/database';
3 +
4 + // Initialize Firebase
5 + const config = {
6 + apiKey: "AIzaSyBDMgSgpCGpPQVs2ziPm5igl2nL8I6jdeQ",
7 + authDomain: "blazing-fire-5965.firebaseapp.com",
8 + databaseURL: "https://blazing-fire-5965.firebaseio.com",
9 + projectId: "blazing-fire-5965",
10 + storageBucket: "blazing-fire-5965.appspot.com",
11 + messagingSenderId: "1043865982157"
12 + };
13 +
14 + class Firebase {
15 + constructor() {
16 + app.initializeApp(config);
17 + this.db = app.database();
18 + }
19 +
20 + rootRef = () => this.db.ref('setoelkahfi-web-id');
21 + whoAmIRef = () => this.rootRef().child('i am');
22 + }
23 +
24 + export default Firebase;
\ No newline at end of file
src/components/Firebase/index.js new
+6
@@ -0,0 +1,6 @@
1 +import FirebaseContext from './context';
2 +import Firebase from './firebase';
3 +
4 +export default Firebase;
5 +
6 +export { FirebaseContext };
\ No newline at end of file
src/components/Home.js
+37 -44
@@ -17,59 +17,52 @@ const wordStyle = {
17 boxShadow: '0px 1px 1px #000'
18 };
19
20 -function shuffle(array) {
21 - var currentIndex = array.length, temporaryValue, randomIndex;
22 -
23 - // While there remain elements to shuffle...
24 - while (0 !== currentIndex) {
25 -
26 - // Pick a remaining element...
27 - randomIndex = Math.floor(Math.random() * currentIndex);
28 - currentIndex -= 1;
29 -
30 - // And swap it with the current element.
31 - temporaryValue = array[currentIndex];
32 - array[currentIndex] = array[randomIndex];
33 - array[randomIndex] = temporaryValue;
34 - }
35 -
36 - return array;
37 -}
38 -
39 -var alterEgos = [
40 - 'an Android developer',
41 - 'an iOS developer',
42 - 'a vlogger',
43 - 'a guitarist',
44 - 'a public speaker',
45 - 'an LPDP awardee',
46 - 'a Darwinian',
47 - 'funny (sometimes)',
48 - 'a language enthusiast',
49 - 'a Javanese',
50 - 'an Indonesian',
51 - 'in love with you',
52 - 'a bassist',
53 - 'a man with vision',
54 - 'a man with mission',
55 - 'a gamelan player',
56 - 'living in Stockholm'
57 -];
58 -alterEgos = shuffle(alterEgos);
59 -
20 class Home extends Component {
21
22 constructor(props) {
23 super(props);
64 - this.state = {pStyle: pStyle, wordStyle: wordStyle, alterEgos: alterEgos}
24 + this.whoAmIRef = this.props.firebase.whoAmIRef();
25 + this.state = {
26 + pStyle: pStyle,
27 + wordStyle: wordStyle,
28 + alterEgos: ["an Android developer", "an iOS developer"]
29 + }
30 }
31
67 - componentDidMount() {
32 + componentWillMount() {
33 + this.whoAmIRef.on('value', (snapshot) => {
34 + let items = snapshot.val();
35 + let whoAmI = [];
36 + for (let item in items) {
37 + whoAmI.push(items[item].content);
38 + }
39 + this.setState({
40 + alterEgos: this.shuffle(whoAmI)
41 + });
42 + });
43 + }
44
45 + componentWillUnmount() {
46 + this.whoAmIRef.off();
47 }
48
71 - componentWillMount() {
72 -
49 + shuffle(array) {
50 + var currentIndex = array.length, temporaryValue, randomIndex;
51 +
52 + // While there remain elements to shuffle...
53 + while (0 !== currentIndex) {
54 +
55 + // Pick a remaining element...
56 + randomIndex = Math.floor(Math.random() * currentIndex);
57 + currentIndex -= 1;
58 +
59 + // And swap it with the current element.
60 + temporaryValue = array[currentIndex];
61 + array[currentIndex] = array[randomIndex];
62 + array[randomIndex] = temporaryValue;
63 + }
64 +
65 + return array;
66 }
67
68 render() {
src/components/Main.js
+6 -1
@@ -4,6 +4,7 @@ import Home from './Home';
4 import About from './About';
5 import Cv from './Cv';
6 import Contact from './Contact';
7 +import { FirebaseContext } from './Firebase';
8
9 const mainStyle = {
10 minHeight: 500,
@@ -18,7 +19,11 @@ const mainStyle = {
19 const Main = () => (
20 <main style={mainStyle}>
21 <Switch>
21 - <Route exact path='/' component={Home} />
22 + <Route exact path='/'>
23 + <FirebaseContext.Consumer>
24 + {firebase => <Home firebase={firebase} />}
25 + </FirebaseContext.Consumer>
26 + </Route>
27 <Route path='/about' component={About} />
28 <Route path='/cv' component={Cv} />
29 <Route path='/contact' component={Contact} />
src/index.js
+4 -1
@@ -3,10 +3,13 @@ import { render } from 'react-dom';
3 import App from './components/App';
4 import * as serviceWorker from './serviceWorker';
5 import { BrowserRouter } from 'react-router-dom';
6 +import Firebase, { FirebaseContext } from './components/Firebase';
7
8 render((
9 <BrowserRouter>
9 - <App />
10 + <FirebaseContext.Provider value={new Firebase()}>
11 + <App />
12 + </FirebaseContext.Provider>
13 </BrowserRouter>
14 ), document.getElementById('root'));
15