Skip to content

Commit 494d382

Browse files
committed
remove dependency on moment
1 parent fe14ad1 commit 494d382

File tree

6 files changed

+194
-19
lines changed

6 files changed

+194
-19
lines changed

package-lock.json

Lines changed: 142 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@
3636
"vue-loader": "~15.6.2",
3737
"vue-template-compiler": "~2.6.6",
3838
"webpack": "~4.29.0",
39+
"webpack-bundle-analyzer": "^4.5.0",
3940
"webpack-cli": "~3.2.1"
4041
},
4142
"dependencies": {
4243
"jsondiffpatch": "~0.4.1",
43-
"moment": "~2.29.0",
4444
"vue": "~2.6.12"
4545
}
4646
}

src/js/bundle/jsdiff-panel.js

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/js/view/api/time.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
const SECOND = 1000;
2+
const MINUTE = 60 * SECOND;
3+
const HOUR = 60 * MINUTE;
4+
const DAY = 24 * HOUR;
5+
const WEEK = 7 * DAY;
6+
const MONTH = 30 * DAY;
7+
const YEAR = 365 * DAY;
8+
const intervals = [
9+
{ge: YEAR, divisor: YEAR, unit: 'year'},
10+
{ge: MONTH, divisor: MONTH, unit: 'month'},
11+
{ge: WEEK, divisor: WEEK, unit: 'week'},
12+
{ge: DAY, divisor: DAY, unit: 'day'},
13+
{ge: HOUR, divisor: HOUR, unit: 'hour'},
14+
{ge: MINUTE, divisor: MINUTE, unit: 'minute'},
15+
{ge: SECOND, divisor: SECOND, unit: 'seconds'},
16+
{ge: 0, divisor: 1, text: 'now'}
17+
];
18+
const rtf = new Intl.RelativeTimeFormat(undefined, {numeric: 'auto'});
19+
20+
/**
21+
* @param test {number}
22+
* @param [now] {number}
23+
* @return {string}
24+
*/
25+
export function timeFromNow(test, now) {
26+
test = (typeof test === 'number' ? test : new Date(test).getTime());
27+
now = (typeof now === 'number' ? now : Date.now());
28+
const delta = now - test;
29+
const absDelta = Math.abs(delta);
30+
for (const interval of intervals) {
31+
if (absDelta >= interval.ge) {
32+
const time = Math.trunc(delta / interval.divisor);
33+
return interval.unit ? rtf.format(-time, interval.unit) : interval.text;
34+
}
35+
}
36+
}

src/js/view/panel.vue

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@
5858
</template>
5959

6060
<script>
61-
const jsondiffpatch = require('jsondiffpatch');
62-
const formatters = jsondiffpatch.formatters;
63-
require('jsondiffpatch/dist/formatters-styles/html.css');
64-
const Vue = require('vue').default;
65-
const moment = require('moment');
61+
import jsondiffpatch from 'jsondiffpatch';
62+
import 'jsondiffpatch/dist/formatters-styles/html.css';
63+
import Vue from 'vue'
64+
import {timeFromNow} from './api/time';
65+
const formatters = jsondiffpatch.formatters;
6666
67-
module.exports = Vue.extend({
67+
export default Vue.extend({
6868
name: 'jsdiff-panel',
6969
7070
data() {
@@ -103,7 +103,7 @@
103103
104104
computed: {
105105
lastUpdated() {
106-
return moment(this.compare.timestamp).from(this.now);
106+
return timeFromNow(this.compare.timestamp, this.now);
107107
},
108108
109109
hasBothSides() {

webpack.config.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const path = require('path');
22
const webpack = require('webpack');
33
const CleanWebpackPlugin = require('clean-webpack-plugin');
44
const VueLoaderPlugin = require('vue-loader/lib/plugin');
5+
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
56

67
module.exports = {
78
mode: 'development',
@@ -27,10 +28,13 @@ module.exports = {
2728
plugins: [
2829
new webpack.IgnorePlugin({
2930
resourceRegExp: /^\.\/locale$/,
30-
contextRegExp: /moment$/
3131
}),
3232
new CleanWebpackPlugin(['src/js/bundle']),
33-
new VueLoaderPlugin()
33+
new VueLoaderPlugin(),
34+
new BundleAnalyzerPlugin({
35+
openAnalyzer: false,
36+
logLevel: 'silent',
37+
}),
3438
],
3539

3640
module: {

0 commit comments

Comments
 (0)