From fc7ff813de35de35ff29290b7d51dd60f6e5a5a6 Mon Sep 17 00:00:00 2001
From: David Beniamine <david.beniamine@tetras-libre.fr>
Date: Wed, 2 Nov 2022 12:11:58 +0100
Subject: [PATCH] Customize annotot endpoint and environment

Close #13
---
 annotot.yml       |  6 +++---
 package-lock.json | 52 +++++++++++++++++++++++++++++++++++++++++++++++
 package.json      |  1 +
 src/index.js      |  2 +-
 webpack.config.js |  4 +++-
 5 files changed, 60 insertions(+), 5 deletions(-)

diff --git a/annotot.yml b/annotot.yml
index 8781687..ab34884 100644
--- a/annotot.yml
+++ b/annotot.yml
@@ -3,7 +3,7 @@ services:
   annotot:
     image: tetraslibre/annotot-app
     ports:
-      - 3000:3000
+      - ${ANNOTOT_PORT}:3000
     environment:
-      - IP=0.0.0.0
-      - ENV=production
+      - IP=${ANNOTOT_LISTEN_IP}
+      - ENV=${ANNOTOT_ENV}
diff --git a/package-lock.json b/package-lock.json
index 1baffad..e9a4f01 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
       "license": "ISC",
       "dependencies": {
         "css-loader": "^3.6.0",
+        "dotenv-webpack": "^8.0.1",
         "mirador": "git+https://gitlab.tetras-libre.fr/iiif/mirador-video-annotation#wip-webpack-from-git",
         "mirador-annotations": "0.4.0",
         "react": "^16.13.1",
@@ -2470,6 +2471,36 @@
       "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.0.tgz",
       "integrity": "sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA=="
     },
+    "node_modules/dotenv": {
+      "version": "8.6.0",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+      "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/dotenv-defaults": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz",
+      "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==",
+      "dependencies": {
+        "dotenv": "^8.2.0"
+      }
+    },
+    "node_modules/dotenv-webpack": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.0.1.tgz",
+      "integrity": "sha512-CdrgfhZOnx4uB18SgaoP9XHRN2v48BbjuXQsZY5ixs5A8579NxQkmMxRtI7aTwSiSQcM2ao12Fdu+L3ZS3bG4w==",
+      "dependencies": {
+        "dotenv-defaults": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "webpack": "^4 || ^5"
+      }
+    },
     "node_modules/draft-js": {
       "version": "0.11.7",
       "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz",
@@ -10145,6 +10176,27 @@
       "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.0.tgz",
       "integrity": "sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA=="
     },
+    "dotenv": {
+      "version": "8.6.0",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+      "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g=="
+    },
+    "dotenv-defaults": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz",
+      "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==",
+      "requires": {
+        "dotenv": "^8.2.0"
+      }
+    },
+    "dotenv-webpack": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.0.1.tgz",
+      "integrity": "sha512-CdrgfhZOnx4uB18SgaoP9XHRN2v48BbjuXQsZY5ixs5A8579NxQkmMxRtI7aTwSiSQcM2ao12Fdu+L3ZS3bG4w==",
+      "requires": {
+        "dotenv-defaults": "^2.0.2"
+      }
+    },
     "draft-js": {
       "version": "0.11.7",
       "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz",
diff --git a/package.json b/package.json
index 1ed8a19..a47ef83 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
   "license": "ISC",
   "dependencies": {
     "css-loader": "^3.6.0",
+    "dotenv-webpack": "^8.0.1",
     "mirador": "git+https://gitlab.tetras-libre.fr/iiif/mirador-video-annotation#wip-webpack-from-git",
     "mirador-annotations": "0.4.0",
     "react": "^16.13.1",
diff --git a/src/index.js b/src/index.js
index 19ab11f..c7e940b 100644
--- a/src/index.js
+++ b/src/index.js
@@ -3,7 +3,7 @@ import annotationPlugins from 'mirador-annotations/es/index';
 import LocalStorageAdapter from 'mirador-annotations/es/LocalStorageAdapter';
 import AnnototAdapter from 'mirador-annotations/es/AnnototAdapter';
 
-const endpointUrl = 'http://localhost:3000/annotations';
+const endpointUrl = `http://${process.env.ANNOTOT_HOST}:${process.env.ANNOTOT_PORT}/annotations`;
 const config = {
   annotation: {
    // adapter: (canvasId) => new LocalStorageAdapter(`localStorage://?canvasId=${canvasId}`),
diff --git a/webpack.config.js b/webpack.config.js
index 8f2a543..d9fda3b 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,5 +1,6 @@
 const path = require('path');
 const webpack = require('webpack');
+const Dotenv = require('dotenv-webpack');
 
 module.exports = {
     mode: process.env.WEBPACK_MODE,
@@ -35,6 +36,7 @@ module.exports = {
       new webpack.IgnorePlugin({
         /* cf https://gitlab.tetras-libre.fr/iiif/mirador-video-annotation/-/blob/annotation-on-video/webpack.config.js#L42 */
         resourceRegExp: /@blueprintjs\/(core|icons)/, // ignore optional UI framework dependencies
-      })
+      }),
+      new Dotenv()
     ]
 };
-- 
GitLab