From 674baa5306cbcef0cb7a041f3fc861435478e324 Mon Sep 17 00:00:00 2001
From: Alexander Rose <alex.rose@rcsb.org>
Date: Mon, 11 Feb 2019 11:38:37 -0800
Subject: [PATCH] localize plugin timestamp in browser, use
 webpack.DefinePlugin, enable in watch mode

---
 package-lock.json         | Bin 530677 -> 531034 bytes
 package.json              |   1 -
 src/mol-plugin/context.ts |   2 +-
 src/mol-plugin/version.ts |   8 ++++++--
 webpack.config.js         |  14 +++++---------
 5 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 1da5d5be1c5d3772395d954677aef4f451a7ba62..6558c4bc4fcf8c6f35afdf000c314437ffb22ffc 100644
GIT binary patch
delta 874
zcmYLHUr1AN6z2YR?>$rZ=Qf9%vf)C}C8kD;z;c^pSr5)(SP_;MkwrFz5-BuCK^iU5
zMmt4OQiK#GGp!$LvOV+=OWM$fFrrpkq*(T#6eQT)y<%_Qx!?Jn@0{;`O9PhoLzdu2
z8}>%nG{4gfgUhzigjCT9U_Q6|Evx|>zOfl}x`TOHj!iMfOh=>4My1@e@{U>DA;V-7
zAxE(2DzVY5HZr~egOA7-e4`>7oS)&6aN!a!pm&OBX-OZkaTxOwZQvHk3#2IX1H(jz
zjwUdp_XcA@cNaNGk3J<A6w*BW9VCYm$clBtoRPK+kWYYugEwGZvT}x2jgY7noljUJ
zhV*<JcJ~oA7Jnh?j_5R@(P_oQNMc0;_4TuQ(^_LHjYQZErBu@slWcdIG?NN*tU6V?
zY4D!EiNU;TMuX3fG3i)00^4w`lgXf#6}DAaTVb4f1#WM??8Dr4?sfb>g-tm`g;RQ^
z7JC;V2|YiE9=%!2R-9i16FwUPE8UaHFKOi`;VwlwZ7k%?2XM^DD`~+MzCpLPa)6fK
z;XiP)Q1N~K!A*?2z)6>j!9^s9q2q)@PYJYRutsE5cIaeerob!O5_UkXT-u#*PDcF~
zc`g0wgcfz8E~Tw5C}ia4kxKB$5Nmo!4!*5`Y>fE{i+6j(JHl#(4#PcU9cs&<F+rrD
zuT1=n!Wpq;Ulq8eG1yfP+Uv7`nY$F?ox6df3so?>I=KJ7XwctDR)diWu%eq|IVw~`
zW|FiWbsdJ>)y`{YMFT?>u$jhc;g!sz`?M&f^@++-%<O+S(ceVOex8Ke3R&OxnB-zn
zJpitl_(Ev|)Z{Sh(Y=#o(@GCqmJ~`+GeX4pi661i&+=4^<O^0dNz9-Df9)p%S~iJ-
nj%KhYh$4)iVzOzl8C2&nJ_|;S%>z%T7Qmb))l|(Zzw7=1H<CmL

delta 1161
zcmZ9Le{54#6vy*!-+QMW{j~?{YGF`x%H~r0Ha3uLr6p_~PPTR85}0Od*;aKw+X^Mj
zuvPylF){})a!eR;n3$o?QJi`ss5C(|3?q$bL<Omc{(-0^YK*ctU;D=9{O_J~Kj)n9
zIp^N5-?IL3+#36~R1#M%pS)Fi>N7M}FlN+Fftr2=%*8?UIye(f|HxYC)hP2`O~$5g
zpJ!I9G4eZOrZZnMziq^LKQU9yGQ#+z<jGvReh>Mi5J&T6r*n*Sau_*5Heuv@&`E|D
zIBI=^<gjTF?>$Dc&>IFFMvfD=WIcBm<=-S%0KNP8Jbe8g<_b-oAm<Ad8L6`@hYdOW
zZZy6|^r-tAw9%GpgtlB$y)uQyldPFqj<HLYEu;-}+c`F>R+RsFf!%Myn3FA}vFq%#
zkm+~wC8>|W@sB`HT{G-;<6QNRGn&z<X9{t+j8xEpZ0>3iCU$UUY`zRj=>Z2fp8OA<
z7$90|TfvVQ(N)40)4%L|-c|^81iF1~9ca8kR-&hgUxTh*!mYB+`fc5PzV?og-DZDs
zN9c*($NuNX?=0NiQcTY_iS^-K#ha_zy4|H^8{G9fw|UyCN@~MhVX<e|c6)o{mfqUt
zy71${n$W{V{rx?mK+WogT6fhNQ4IPU{q;@lWxk+4u-3n^r=+K`&hK8^zj^y^srcCn
zY}n72sKon9@#chTDK+fnpAr@h@c_O55Pyk7ufUmU(GmXT7v=qB;b=LSsJ<NP$ZazR
zTcg0?XeA6%mjlL_`HSZq@}A#!Ga4NHLVi?<r%5&r_kn$$m^nl&__GsQ=Uh_!a|7OZ
zhUhTW3`;PzhgpQ4t)ND+61r&l2Dqr5WAV%oS)Aqssi0Yhmkxsl6E5gP@m)D>@(zAB
zNnFDlFxJ6w>Dx+qv8omLi-pg})SZxz-plfnd~o=7#RYID#wQ4i&Ie=xr#uiuxkD?C
zR6;g>I>j2Xwwe?u$Onz!pBI*i`c)!;eGkb|>5A041%6;M$Af-YL_JOLh$a(}@PP@R
z-%AYiRtw}R2u|#jo6!yt1J+lQd^+TX4`=DFG@SxH){V)UhpUM|<DGC+rBpfE3pS#(
z_~;px0aN2dQ2I>#!}8P{gm=<EF|)~>x$mgVKlLgUqGh?9I(C|9r1fV7415FYaQZZ{
zP_aPOPUugQAdhi?vRTyILO2EkBdQ7<Z6$&<xN5PKJeW%dB5)+2JSN>Z1JrR7@=S`o
MPGU_o3hE2OzYavLUjP6A

diff --git a/package.json b/package.json
index 7f7083981..b13905466 100644
--- a/package.json
+++ b/package.json
@@ -104,7 +104,6 @@
     "raw-loader": "^1.0.0",
     "resolve-url-loader": "^3.0.0",
     "sass-loader": "^7.1.0",
-    "string-replace-loader": "^2.1.1",
     "style-loader": "^0.23.1",
     "ts-jest": "^23.10.5",
     "tslint": "^5.12.1",
diff --git a/src/mol-plugin/context.ts b/src/mol-plugin/context.ts
index 46e16196c..2749c5eee 100644
--- a/src/mol-plugin/context.ts
+++ b/src/mol-plugin/context.ts
@@ -182,7 +182,7 @@ export class PluginContext {
         this.lociLabels = new LociLabelManager(this);
 
         // TODO: find a better solution for this.
-        setTimeout(() => this.log.message(`Mol* Plugin ${PLUGIN_VERSION} [${PLUGIN_VERSION_DATE}]`), 500);
+        setTimeout(() => this.log.message(`Mol* Plugin ${PLUGIN_VERSION} [${PLUGIN_VERSION_DATE.toLocaleString()}]`), 500);
     }
 
     // settings = ;
diff --git a/src/mol-plugin/version.ts b/src/mol-plugin/version.ts
index 26b3a278f..fe3cfb827 100644
--- a/src/mol-plugin/version.ts
+++ b/src/mol-plugin/version.ts
@@ -1,8 +1,12 @@
 /**
- * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
+ * Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
+ * @author Alexander Rose <alexander.rose@weirdbyte.de>
  */
 
 export const PLUGIN_VERSION = '0.5.0';
-export const PLUGIN_VERSION_DATE = '$PLUGIN_VERSION_DATE$';
\ No newline at end of file
+/** unix time stamp, to be filled in at bundle build time */
+declare const __PLUGIN_VERSION_TIMESTAMP__: number
+export const PLUGIN_VERSION_TIMESTAMP = __PLUGIN_VERSION_TIMESTAMP__;
+export const PLUGIN_VERSION_DATE = new Date(PLUGIN_VERSION_TIMESTAMP);
\ No newline at end of file
diff --git a/webpack.config.js b/webpack.config.js
index b82967adc..3a2db2529 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,4 +1,5 @@
 const path = require('path');
+const webpack = require('webpack');
 const ExtraWatchWebpackPlugin = require('extra-watch-webpack-plugin');
 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 // const CircularDependencyPlugin = require('circular-dependency-plugin');
@@ -28,15 +29,7 @@ const sharedConfig = {
             {
                 test: /\.(s*)css$/,
                 use: [MiniCssExtractPlugin.loader, 'css-loader', 'resolve-url-loader', 'sass-loader']
-            },
-            {
-                test: /version\.js$/,
-                loader: 'string-replace-loader',
-                options: {
-                  search: '$PLUGIN_VERSION_DATE$',
-                  replace: function (date) { return date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate() } (new Date()),
-                }
-              }
+            }
         ]
     },
     plugins: [
@@ -54,6 +47,9 @@ const sharedConfig = {
                 './build/src/**/*.html'
             ],
         }),
+        new webpack.DefinePlugin({
+            __PLUGIN_VERSION_TIMESTAMP__: webpack.DefinePlugin.runtimeValue(() => `${new Date().valueOf()}`, true),
+        }),
         new MiniCssExtractPlugin({ filename: 'app.css' })
     ],
     resolve: {
-- 
GitLab