From ac360f58199691e8675bf18d410629a727d22f81 Mon Sep 17 00:00:00 2001 From: folex <0xdxdy@gmail.com> Date: Fri, 4 Dec 2020 19:46:37 +0300 Subject: [PATCH] Automate build, enable --mode production (#4) --- .dockerignore | 5 + .github/workflows/container.yml | 74 +++++++++++++++ .github/workflows/deploy.yml | 18 ++++ Caddyfile | 13 +++ caddy.Dockerfile | 20 ++++ elm.json | 2 +- favicon.ico => images/favicon.ico | Bin index.html | 6 +- nginx.Dockerfile | 4 + nginx.conf | 9 ++ package-lock.json | 87 ------------------ package.json | 4 +- src/environments.ts | 148 +++++++++++++++++++++--------- src/index.ts | 8 +- webpack.config.js | 145 +++++++++++++++-------------- 15 files changed, 333 insertions(+), 210 deletions(-) create mode 100644 .dockerignore create mode 100644 .github/workflows/container.yml create mode 100644 .github/workflows/deploy.yml create mode 100644 Caddyfile create mode 100644 caddy.Dockerfile rename favicon.ico => images/favicon.ico (100%) create mode 100644 nginx.Dockerfile create mode 100644 nginx.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d5e2da4 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +* +**/* +!bundle/ +!Caddyfile +!nginx.conf diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml new file mode 100644 index 0000000..4d2236a --- /dev/null +++ b/.github/workflows/container.yml @@ -0,0 +1,74 @@ +name: container +on: + push: + # branches: + # - master + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + ### extract branch name + - name: Extract branch name + if: github.event_name != 'pull_request' + shell: bash + run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV + id: extract_branch + + - name: Extract branch name + if: github.event_name == 'pull_request' + run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV + + - uses: actions/checkout@v2 + + - name: Use Node.js 14 + uses: actions/setup-node@v1 + with: + node-version: 14 + + - run: npm install + - run: npm run pack + env: + CI: true + + ### Prepare docker & login to Dockerhub + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + ### Set container tag to 'latest' if branch is master, and to $BRANCH_NAME otherwise + - if: ${{ env.BRANCH_NAME }} == 'master' + run: echo "CONTAINER_TAG=latest" >> $GITHUB_ENV + - if: ${{ env.BRANCH_NAME }} != 'master' + run: echo "CONTAINER_TAG=${{ env.BRANCH_NAME }}" >> $GITHUB_ENV + + ### Build and push docker image + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + context: . + file: ./caddy.Dockerfile + push: true + tags: fluencelabs/dashboard:${{ env.CONTAINER_TAG }} + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} + +# docker commit --change='ENTRYPOINT ["caddy", "file-server", "--root", "/build", "--browse"]' caddy fluencelabs/fluence:demo \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..3751572 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,18 @@ +name: deploy +on: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Deploy dashboard@master to DigitalOcean via SSH + uses: appleboy/ssh-action@v0.1.4 + with: + HOST: ${{ secrets.DASHBOARD_HOST }} + USERNAME: ${{ secrets.DASHBOARD_USERNAME }} + KEY: ${{ secrets.DASHBOARD_SSHKEY }} + script: | + docker pull fluencelabs/dashboard:latest + docker rm -f dashboard + docker run -d --name dashboard -p443:443 -p80:80 -v caddy_data:/data fluencelabs/dashboard:latest diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 0000000..eb84de7 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,13 @@ +:8080, dash.fluence.dev { + + log { + output stderr + format console + } + + tls alexey@fluence.one + encode zstd gzip + file_server + root * /bundle + try_files {path} /index.html +} diff --git a/caddy.Dockerfile b/caddy.Dockerfile new file mode 100644 index 0000000..10ab4ef --- /dev/null +++ b/caddy.Dockerfile @@ -0,0 +1,20 @@ +FROM caddy +WORKDIR / +COPY ./bundle /bundle +COPY Caddyfile /Caddyfile + +#RUN printf '\n\ +#dash.fluence.dev {\n\ +# try_files /bundle/{path} /bundle/index.html?{query}&p={path}\n\ +#}\n\ +#'\ +#>> /tmp/hello + +#RUN echo 'try_files /bundle/{path} /bundle/index.html?{query}&p={path}' > Caddyfile + +VOLUME /data + +#CMD ["caddy", "file-server", "--root", "/bundle", "--browse"] +CMD ["caddy", "run", "--config", "/Caddyfile"] + +# DO NOT FORGET TO USE VOLUME OR CERTBOT WILL BAN: -v caddy_data:/data diff --git a/elm.json b/elm.json index a8e15bc..fe97a81 100644 --- a/elm.json +++ b/elm.json @@ -23,7 +23,7 @@ "elm-community/intdict": "3.0.0", "elm-community/list-extra": "8.2.4", "elm-community/maybe-extra": "5.2.0", - "ivadzy/bbase64": "1.1.1", + "chelovek0v/bbase64": "1.0.1", "lukewestby/elm-string-interpolate": "1.0.4", "mpizenberg/elm-pointer-events": "4.0.2", "rtfeldman/elm-iso8601-date-strings": "1.1.3" diff --git a/favicon.ico b/images/favicon.ico similarity index 100% rename from favicon.ico rename to images/favicon.ico diff --git a/index.html b/index.html index bb784a5..a92036a 100644 --- a/index.html +++ b/index.html @@ -1,7 +1,7 @@ - + @@ -16,9 +16,7 @@ Fluence Network Dashboard - +
- - diff --git a/nginx.Dockerfile b/nginx.Dockerfile new file mode 100644 index 0000000..e5a8aeb --- /dev/null +++ b/nginx.Dockerfile @@ -0,0 +1,4 @@ +FROM nginx +COPY ./nginx.conf /etc/nginx/conf.d/default.conf + +COPY ./bundle /usr/share/nginx/html diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..a61c1a9 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,9 @@ +server { + listen 80; + server_name frontend; + location / { + # This would be the directory where your React app's static files are stored at + root /usr/share/nginx/html; + try_files $uri /index.html; + } +} diff --git a/package-lock.json b/package-lock.json index 13ce246..2129063 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1937,12 +1937,6 @@ "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true }, - "acorn-walk": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.0.0.tgz", - "integrity": "sha512-oZRad/3SMOI/pxbbmqyurIx7jHw1wZDcR9G44L8pUVFEomX/0dH89SrM1KaDXuv1NpzAXz6Op/Xu/Qd5XXzdEA==", - "dev": true - }, "address": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", @@ -15903,87 +15897,6 @@ } } }, - "webpack-bundle-analyzer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.2.0.tgz", - "integrity": "sha512-gmjpdL/AJeGAftSzA+bjIPiChUffjBelcH2+3woCUiRpQfuwrTJuWRyZuqegiwBAroMJp7gIwcJaGeol039zbQ==", - "dev": true, - "requires": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^6.2.0", - "express": "^4.17.1", - "filesize": "^6.1.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "ws": "^7.3.1" - }, - "dependencies": { - "acorn": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", - "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "commander": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", - "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", - "dev": true - }, - "filesize": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", - "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==", - "dev": true - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "requires": { - "duplexer": "^0.1.2" - } - } - } - }, "webpack-cli": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.2.0.tgz", diff --git a/package.json b/package.json index 6bc9bda..b96733c 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,7 @@ "main": "index.js", "scripts": { "start": "webpack-serve --open", - "pack": "webpack", - "dev": "parcel index.html", + "pack": "webpack --mode production", "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' --write" }, "repository": { @@ -50,7 +49,6 @@ "ts-loader": "8.0.11", "typescript": "4.1.2", "webpack": "5.7.0", - "webpack-bundle-analyzer": "^4.2.0", "webpack-cli": "4.2.0", "webpack-nano": "^1.1.0", "webpack-plugin-serve": "^1.2.0", diff --git a/src/environments.ts b/src/environments.ts index 82a7804..4d0790a 100644 --- a/src/environments.ts +++ b/src/environments.ts @@ -1,4 +1,6 @@ -export const stage: { peerId: string; multiaddr: string }[] = [ +export type Node = { peerId: string; multiaddr: string }; + +export const stage: Node[] = [ { multiaddr: '/dns4/stage.fluence.dev/tcp/19001/wss/p2p/12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9', peerId: '12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9', @@ -29,53 +31,117 @@ export const stage: { peerId: string; multiaddr: string }[] = [ }, ]; -export const faasNet: { peerId: string; multiaddr: string }[] = [ +// net01.fluence.dev /ip4/165.227.164.206/tcp/9001/ws 12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9 +// net01.fluence.dev /ip4/165.227.164.206/tcp/9990/ws 12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz +// net01.fluence.dev /ip4/165.227.164.206/tcp/9100/ws 12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM +// net02.fluence.dev /ip4/138.197.189.50/tcp/9001/ws 12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er +// net03.fluence.dev /ip4/157.230.23.49/tcp/9001/ws 12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb +// net04.fluence.dev /ip4/159.65.126.102/tcp/9001/ws 12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB +// net05.fluence.dev /ip4/142.93.169.49/tcp/9001/ws 12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb +// net06.fluence.dev /ip4/139.59.148.53/tcp/9001/ws 12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH +// net07.fluence.dev /ip4/206.81.30.129/tcp/9001/ws 12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv +// net08.fluence.dev /ip4/157.230.98.51/tcp/9001/ws 12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H +// net09.fluence.dev /ip4/159.89.2.70/tcp/9001/ws 12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg +// net10.fluence.dev /ip4/157.230.98.75/tcp/9001/ws 12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy + +export const faasNet: Node[] = [ { - multiaddr: '/ip4/138.68.102.254/tcp/9001/ws/p2p/12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy', - peerId: '12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy', - }, - { - multiaddr: '/ip4/165.227.165.192/tcp/9001/ws/p2p/12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB', - peerId: '12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB', - }, - { - multiaddr: '/ip4/165.227.167.87/tcp/9001/ws/p2p/12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg', - peerId: '12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg', - }, - { - multiaddr: '/ip4/138.68.70.143/tcp/9001/ws/p2p/12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH', - peerId: '12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH', - }, - { - multiaddr: '/ip4/165.227.161.121/tcp/9001/ws/p2p/12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb', - peerId: '12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb', - }, - { - multiaddr: '/ip4/159.89.12.142/tcp/9001/ws/p2p/12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb', - peerId: '12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb', - }, - { - multiaddr: '/ip4/139.59.146.127/tcp/9001/ws/p2p/12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9', + multiaddr: '/ip4/165.227.164.206/tcp/9001/ws/p2p/12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9', peerId: '12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9', }, { - multiaddr: '/ip4/159.89.9.74/tcp/9001/ws/p2p/12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er', - peerId: '12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er', - }, - { - multiaddr: '/ip4/159.89.6.161/tcp/9001/ws/p2p/12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H', - peerId: '12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H', - }, - { - multiaddr: '/ip4/165.227.163.146/tcp/9001/ws/p2p/12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv', - peerId: '12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv', - }, - { - multiaddr: '/ip4/139.59.146.127/tcp/9990/ws/p2p/12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz', + multiaddr: '/ip4/165.227.164.206/tcp/9990/ws/p2p/12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz', peerId: '12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz', }, { - multiaddr: '/ip4/139.59.146.127/tcp/9100/ws/p2p/12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM', + multiaddr: '/ip4/165.227.164.206/tcp/9100/ws/p2p/12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM', peerId: '12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM', }, + { + multiaddr: '/ip4/138.197.189.50/tcp/9001/ws/p2p/12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er', + peerId: '12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er', + }, + { + multiaddr: '/ip4/157.230.23.49/tcp/9001/ws/p2p/12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb', + peerId: '12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb', + }, + { + multiaddr: '/ip4/159.65.126.102/tcp/9001/ws/p2p/12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB', + peerId: '12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB', + }, + { + multiaddr: '/ip4/142.93.169.49/tcp/9001/ws/p2p/12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb', + peerId: '12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb', + }, + { + multiaddr: '/ip4/139.59.148.53/tcp/9001/ws/p2p/12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH', + peerId: '12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH', + }, + { + multiaddr: '/ip4/206.81.30.129/tcp/9001/ws/p2p/12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv', + peerId: '12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv', + }, + { + multiaddr: '/ip4/157.230.98.51/tcp/9001/ws/p2p/12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H', + peerId: '12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H', + }, + { + multiaddr: '/ip4/159.89.2.70/tcp/9001/ws/p2p/12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg', + peerId: '12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg', + }, + { + multiaddr: '/ip4/157.230.98.75/tcp/9001/ws/p2p/12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy', + peerId: '12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy', + }, +]; + +export const faasNetHttps: Node[] = [ + { + multiaddr: '/dns4/net01.fluence.dev/tcp/19001/wss/p2p/12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9', + peerId: '12D3KooWEXNUbCXooUwHrHBbrmjsrpHXoEphPwbjQXEGyzbqKnE9', + }, + { + multiaddr: '/dns4/net01.fluence.dev/tcp/19990/wss/p2p/12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz', + peerId: '12D3KooWMhVpgfQxBLkQkJed8VFNvgN4iE6MD7xCybb1ZYWW2Gtz', + }, + { + multiaddr: '/dns4/net01.fluence.dev/tcp/19100/wss/p2p/12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM', + peerId: '12D3KooWPnLxnY71JDxvB3zbjKu9k1BCYNthGZw6iGrLYsR1RnWM', + }, + { + multiaddr: '/dns4/net02.fluence.dev/tcp/19001/wss/p2p/12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er', + peerId: '12D3KooWHk9BjDQBUqnavciRPhAYFvqKBe4ZiPPvde7vDaqgn5er', + }, + { + multiaddr: '/dns4/net03.fluence.dev/tcp/19001/wss/p2p/12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb', + peerId: '12D3KooWBUJifCTgaxAUrcM9JysqCcS4CS8tiYH5hExbdWCAoNwb', + }, + { + multiaddr: '/dns4/net04.fluence.dev/tcp/19001/wss/p2p/12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB', + peerId: '12D3KooWJbJFaZ3k5sNd8DjQgg3aERoKtBAnirEvPV8yp76kEXHB', + }, + { + multiaddr: '/dns4/net05.fluence.dev/tcp/19001/wss/p2p/12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb', + peerId: '12D3KooWCKCeqLPSgMnDjyFsJuWqREDtKNHx1JEBiwaMXhCLNTRb', + }, + { + multiaddr: '/dns4/net06.fluence.dev/tcp/19001/wss/p2p/12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH', + peerId: '12D3KooWKnRcsTpYx9axkJ6d69LPfpPXrkVLe96skuPTAo76LLVH', + }, + { + multiaddr: '/dns4/net07.fluence.dev/tcp/19001/wss/p2p/12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv', + peerId: '12D3KooWBSdm6TkqnEFrgBuSkpVE3dR1kr6952DsWQRNwJZjFZBv', + }, + { + multiaddr: '/dns4/net08.fluence.dev/tcp/19001/wss/p2p/12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H', + peerId: '12D3KooWGzNvhSDsgFoHwpWHAyPf1kcTYCGeRBPfznL8J6qdyu2H', + }, + { + multiaddr: '/dns4/net09.fluence.dev/tcp/19001/wss/p2p/12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg', + peerId: '12D3KooWF7gjXhQ4LaKj6j7ntxsPpGk34psdQicN2KNfBi9bFKXg', + }, + { + multiaddr: '/dns4/net10.fluence.dev/tcp/19001/wss/p2p/12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy', + peerId: '12D3KooWB9P1xmV3c7ZPpBemovbwCiRRTKd3Kq2jsVPQN4ZukDfy', + }, ]; diff --git a/src/index.ts b/src/index.ts index d8fe595..6ab94b5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,17 +22,17 @@ import { registerService } from 'fluence/dist/globalState'; import { ServiceOne } from 'fluence/dist/service'; import * as serviceWorker from './serviceWorker'; import { Elm } from './Main.elm'; -import {faasNet, stage} from './environments'; +import { faasNetHttps, faasNet, stage } from './environments'; const relayIdx = 1; -export const relays: { peerId: string; multiaddr: string }[] = stage; +export const relays: { peerId: string; multiaddr: string }[] = faasNetHttps; function genFlags(peerId: string): any { return { peerId, relayId: relays[relayIdx].peerId, - knownPeers: relays.map((v) => v.peerId) + knownPeers: relays.map((v) => v.peerId), }; } @@ -98,8 +98,6 @@ function event(name: string,peer: string,peers?: string[],identify?: string[],se }); })(); -Fluence.setLogLevel('trace') - // If you want your app to work offline and load faster, you can change // unregister() to register() below. Note this comes with some pitfalls. // Learn more about service workers: https://bit.ly/CRA-PWA diff --git a/webpack.config.js b/webpack.config.js index e6526d8..925fb5a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,75 +1,82 @@ const path = require('path'); -const CopyWebpackPlugin = require('copy-webpack-plugin') +const CopyWebpackPlugin = require('copy-webpack-plugin'); const webpack = require('webpack'); const { WebpackPluginServe: Serve } = require('webpack-plugin-serve'); +const TerserPlugin = require('terser-webpack-plugin'); -module.exports = { - entry: { - app: ['./src/index.ts'] - }, - resolve: { - extensions: ['.js', '.ts', ".elm"] - }, - devServer: { - contentBase: './bundle', - hot: false, - inline: false - }, - devtool: "eval-source-map", - module: { - rules: [ - { - test: /\.html$/, - use: [{loader: "file-loader?name=[name].[ext]"}] +module.exports = (env, argv) => { + const isDebug = argv.mode === 'development'; + const isProduction = argv.mode === 'production'; - }, - { - test: [/\.elm$/], - exclude: [/elm-stuff/, /node_modules/], - use: [ - {loader: "elm-hot-webpack-loader"}, - { - loader: "elm-webpack-loader", - options: - {debug: true, forceWatch: false} - } - ] - }, - {test: /\.ts$/, loader: "ts-loader"}, - { - test: /\.(png)$/, - loader: 'file-loader', - }, - { - test: /\.css$/i, - use: ['style-loader', 'css-loader'], - }, - ] - }, - mode: "development", - watch: true, - output: { - filename: 'bundle.js', - path: path.resolve(__dirname, 'bundle'), - publicPath: "/" - }, - plugins: [ - new CopyWebpackPlugin({ - patterns: [ - {from: './*.html'}, - {from: './images/*.svg'}, - {from: './favicon.ico'}, - ] - }), - new webpack.ProvidePlugin({ - process: 'process/browser.js', - Buffer: ['buffer', 'Buffer'], - }), - new Serve({ - historyFallback: true, - port: 55553, - host: 'localhost', - }) - ] + return { + entry: { + app: ['./src/index.ts'], + }, + resolve: { + extensions: ['.js', '.ts', '.elm'], + }, + devServer: { + contentBase: './bundle', + hot: false, + inline: false, + }, + devtool: 'eval-source-map', + module: { + rules: [ + { + test: /\.html$/, + use: [{ loader: 'file-loader?name=[name].[ext]' }], + }, + { + test: [/\.elm$/], + exclude: [/elm-stuff/, /node_modules/], + use: [ + { loader: 'elm-hot-webpack-loader' }, + { + loader: 'elm-webpack-loader', + options: { + debug: isDebug, + optimize: isProduction, + forceWatch: false, + }, + }, + ], + }, + { test: /\.ts$/, loader: 'ts-loader' }, + { + test: /\.(png)$/, + loader: 'file-loader', + }, + { + test: /\.css$/i, + use: ['style-loader', 'css-loader'], + }, + ], + }, + mode: 'development', + watch: isDebug, + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'bundle'), + publicPath: '/', + }, + optimization: { + minimize: isProduction, + minimizer: [new TerserPlugin()], + }, + plugins: [ + new CopyWebpackPlugin({ + patterns: [{ from: './*.html' }, { from: './images/*.svg' }], + }), + new webpack.ProvidePlugin({ + process: 'process/browser.js', + Buffer: ['buffer', 'Buffer'], + }), + new Serve({ + historyFallback: true, + port: 55553, + host: 'localhost', + }), + ], + }; }; -