Compare commits

...

168 Commits

Author SHA1 Message Date
Amir Raminfar
456e6fa087 Release 1.24.1 2020-05-09 14:02:39 -07:00
Amir Raminfar
ce8186cc15 Fixes connect for github api 2020-05-09 14:02:29 -07:00
Amir Raminfar
17a9a6777a Release 1.24.0 2020-05-09 10:29:06 -07:00
Amir Raminfar
0752bb9a10 Fixes tests 2020-05-08 20:10:01 -07:00
Amir Raminfar
0360950eec Adds require trusted 2020-05-08 19:57:34 -07:00
Amir Raminfar
99f7e0d980 Implements Content-Security-Policy (#442) 2020-05-08 19:45:08 -07:00
dependabot-preview[bot]
b04e950358 Merge pull request #441 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001054 2020-05-08 03:43:16 +00:00
dependabot-preview[bot]
328bc80c14 Bump caniuse-lite from 1.0.30001053 to 1.0.30001054
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001053 to 1.0.30001054.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001053...v1.0.30001054)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-08 03:37:30 +00:00
Amir Raminfar
203e6ab780 Removes transition 2020-05-07 19:21:45 -07:00
Amir Raminfar
2f467ff83e Uses --force-recreate 2020-05-07 19:06:51 -07:00
Amir Raminfar
e9234a827c Release 1.23.2 2020-05-07 16:15:05 -07:00
Amir Raminfar
b773e61c69 Fixes int test 2020-05-07 16:14:52 -07:00
Amir Raminfar
898b5379da Release 1.23.1 2020-05-07 15:41:22 -07:00
Amir Raminfar
68833e4786 Fixes broken buildx 2020-05-07 15:41:14 -07:00
Amir Raminfar
6a26c4ecf0 Fixes broken splitter 2020-05-07 15:39:06 -07:00
Amir Raminfar
6118cda6de Release 1.23.0 2020-05-07 15:31:44 -07:00
Amir Raminfar
d5bac298ec Updates tests 2020-05-07 15:26:05 -07:00
Amir Raminfar
2286bc65a7 Adds w.Header().Set("X-Accel-Buffering", "no") for server events 2020-05-07 15:23:53 -07:00
Amir Raminfar
254faa7145 Fixes buffer bug 2020-05-07 15:22:47 -07:00
Amir Raminfar
a927ba66a5 Fixes nginx buffer problem by adding X-Accel-Buffering: no 2020-05-07 15:22:21 -07:00
Amir Raminfar
6c9b6b7768 Fixes title bug 2020-05-07 15:18:22 -07:00
dependabot-preview[bot]
77abe748f0 Merge pull request #439 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001053 2020-05-07 22:07:16 +00:00
dependabot-preview[bot]
6e17e178da Bump caniuse-lite from 1.0.30001052 to 1.0.30001053
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001052 to 1.0.30001053.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001052...v1.0.30001053)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-07 06:05:19 +00:00
Amir Raminfar
55f4cff699 Adds web manifest 2020-05-06 16:00:15 -07:00
Amir Raminfar
6ed4dcc86a Uses webpack instead of parcel (#438) 2020-05-06 15:44:12 -07:00
dependabot-preview[bot]
fad25076f7 Merge pull request #437 from amir20/dependabot/npm_and_yarn/date-fns-2.13.0 2020-05-06 21:34:05 +00:00
dependabot-preview[bot]
6c796ecd2c Bump date-fns from 2.12.0 to 2.13.0
Bumps [date-fns](https://github.com/date-fns/date-fns) from 2.12.0 to 2.13.0.
- [Release notes](https://github.com/date-fns/date-fns/releases)
- [Changelog](https://github.com/date-fns/date-fns/blob/master/CHANGELOG.md)
- [Commits](https://github.com/date-fns/date-fns/compare/v2.12.0...v2.13.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-06 21:29:04 +00:00
dependabot-preview[bot]
df9c0f6863 Merge pull request #436 from amir20/dependabot/npm_and_yarn/vue/test-utils-1.0.2 2020-05-06 16:52:25 +00:00
dependabot-preview[bot]
6be5d7e42d Bump @vue/test-utils from 1.0.0 to 1.0.2
Bumps [@vue/test-utils](https://github.com/vuejs/vue-test-utils/tree/HEAD/packages/test-utils) from 1.0.0 to 1.0.2.
- [Release notes](https://github.com/vuejs/vue-test-utils/releases)
- [Changelog](https://github.com/vuejs/vue-test-utils/blob/dev/packages/test-utils/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-test-utils/commits/v1.0.2/packages/test-utils)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-06 16:47:28 +00:00
dependabot-preview[bot]
69dd53d669 Merge pull request #435 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001052 2020-05-06 00:43:13 +00:00
dependabot-preview[bot]
3673ea9b72 Bump caniuse-lite from 1.0.30001051 to 1.0.30001052
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001051 to 1.0.30001052.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001051...v1.0.30001052)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-06 00:36:53 +00:00
dependabot-preview[bot]
0a4f53b7c9 Merge pull request #434 from amir20/dependabot/npm_and_yarn/vue/test-utils-1.0.0 2020-05-05 17:14:46 +00:00
dependabot-preview[bot]
f5a84c249a Bump @vue/test-utils from 1.0.0-beta.33 to 1.0.0
Bumps [@vue/test-utils](https://github.com/vuejs/vue-test-utils/tree/HEAD/packages/test-utils) from 1.0.0-beta.33 to 1.0.0.
- [Release notes](https://github.com/vuejs/vue-test-utils/releases)
- [Changelog](https://github.com/vuejs/vue-test-utils/blob/dev/packages/test-utils/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-test-utils/commits/v1.0.0/packages/test-utils)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-05 17:08:27 +00:00
dependabot-preview[bot]
63a9f24193 Merge pull request #433 from amir20/dependabot/npm_and_yarn/jest-26.0.1 2020-05-05 15:43:05 +00:00
dependabot-preview[bot]
fa37625f36 Bump jest from 26.0.0 to 26.0.1
Bumps [jest](https://github.com/facebook/jest) from 26.0.0 to 26.0.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v26.0.0...v26.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-05 15:37:27 +00:00
dependabot-preview[bot]
a73fda2a29 Merge pull request #432 from amir20/dependabot/npm_and_yarn/babel-jest-26.0.1 2020-05-05 14:53:57 +00:00
dependabot-preview[bot]
75c80bdc96 Bump babel-jest from 26.0.0 to 26.0.1
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 26.0.0 to 26.0.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v26.0.1/packages/babel-jest)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-05 14:47:55 +00:00
dependabot-preview[bot]
2414a65371 Merge pull request #431 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001051 2020-05-05 06:14:30 +00:00
dependabot-preview[bot]
83ca9b0a89 Bump caniuse-lite from 1.0.30001050 to 1.0.30001051
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001050 to 1.0.30001051.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001050...v1.0.30001051)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-05 06:08:57 +00:00
dependabot-preview[bot]
6bceaee801 Merge pull request #430 from amir20/dependabot/npm_and_yarn/jest-26.0.0 2020-05-04 19:14:21 +00:00
dependabot-preview[bot]
70dfa399e4 Bump jest from 25.5.4 to 26.0.0
Bumps [jest](https://github.com/facebook/jest) from 25.5.4 to 26.0.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.5.4...v26.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 19:08:23 +00:00
dependabot-preview[bot]
8e89aa7a28 Merge pull request #429 from amir20/dependabot/npm_and_yarn/babel-jest-26.0.0 2020-05-04 19:06:26 +00:00
dependabot-preview[bot]
9a1938c071 Bump babel-jest from 25.5.1 to 26.0.0
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 25.5.1 to 26.0.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v26.0.0/packages/babel-jest)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 19:00:44 +00:00
dependabot-preview[bot]
7e150daac7 Merge pull request #428 from amir20/dependabot/go_modules/github.com/sirupsen/logrus-1.6.0 2020-05-04 13:23:23 +00:00
dependabot-preview[bot]
3386dd3af9 Bump github.com/sirupsen/logrus from 1.5.0 to 1.6.0
Bumps [github.com/sirupsen/logrus](https://github.com/sirupsen/logrus) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/sirupsen/logrus/releases)
- [Changelog](https://github.com/sirupsen/logrus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sirupsen/logrus/compare/v1.5.0...v1.6.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 13:17:15 +00:00
dependabot-preview[bot]
293a03153c Merge pull request #427 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001050 2020-05-04 06:57:00 +00:00
dependabot-preview[bot]
092fa34e1a Bump caniuse-lite from 1.0.30001049 to 1.0.30001050
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001049 to 1.0.30001050.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001049...v1.0.30001050)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 06:51:31 +00:00
dependabot-preview[bot]
20d42bf83c Merge pull request #426 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001049 2020-05-04 03:45:17 +00:00
dependabot-preview[bot]
a7ee8c6061 Bump caniuse-lite from 1.0.30001048 to 1.0.30001049
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001048 to 1.0.30001049.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001048...v1.0.30001049)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-04 03:40:19 +00:00
dependabot-preview[bot]
1afcedc3e3 Merge pull request #425 from amir20/dependabot/npm_and_yarn/release-it-13.5.8 2020-05-03 18:58:36 +00:00
dependabot-preview[bot]
8e49c76039 Bump release-it from 13.5.7 to 13.5.8
Bumps [release-it](https://github.com/release-it/release-it) from 13.5.7 to 13.5.8.
- [Release notes](https://github.com/release-it/release-it/releases)
- [Changelog](https://github.com/release-it/release-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/release-it/release-it/compare/13.5.7...13.5.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-03 18:53:37 +00:00
Amir Raminfar
c9599676c9 Adds target="_blank" rel="noopener" for settings 2020-05-02 19:20:54 -07:00
dependabot-preview[bot]
d547a4ca81 Merge pull request #424 from amir20/dependabot/npm_and_yarn/jest-25.5.4 2020-05-02 08:43:53 +00:00
dependabot-preview[bot]
f2764fad0c Bump jest from 25.5.3 to 25.5.4
Bumps [jest](https://github.com/facebook/jest) from 25.5.3 to 25.5.4.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.5.3...v25.5.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-02 08:39:04 +00:00
dependabot-preview[bot]
cf381dfc1a Merge pull request #423 from amir20/dependabot/npm_and_yarn/integration/jest-25.5.4 2020-05-02 08:30:56 +00:00
dependabot-preview[bot]
0806405099 Bump jest from 25.5.3 to 25.5.4 in /integration
Bumps [jest](https://github.com/facebook/jest) from 25.5.3 to 25.5.4.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.5.3...v25.5.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-02 08:26:08 +00:00
Amir Raminfar
d4f2b50a5e Updates readme 2020-05-01 18:57:08 -07:00
dependabot-preview[bot]
584166f80d Merge pull request #422 from amir20/dependabot/npm_and_yarn/lint-staged-10.2.2 2020-05-01 04:36:48 +00:00
dependabot-preview[bot]
23f5d5e4e7 Bump lint-staged from 10.2.1 to 10.2.2
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.2.1 to 10.2.2.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.2.1...v10.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-01 04:31:34 +00:00
dependabot-preview[bot]
57d0c70ad7 Merge pull request #421 from amir20/dependabot/npm_and_yarn/jest-25.5.3 2020-04-30 22:46:00 +00:00
dependabot-preview[bot]
d3e02e24c5 Bump jest from 25.5.2 to 25.5.3
Bumps [jest](https://github.com/facebook/jest) from 25.5.2 to 25.5.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.5.2...v25.5.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-30 22:40:47 +00:00
dependabot-preview[bot]
9fd2f387c5 Merge pull request #420 from amir20/dependabot/npm_and_yarn/integration/jest-25.5.3 2020-04-30 22:25:32 +00:00
dependabot-preview[bot]
2f71ef6063 Bump jest from 25.5.2 to 25.5.3 in /integration
Bumps [jest](https://github.com/facebook/jest) from 25.5.2 to 25.5.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.5.2...v25.5.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-30 22:20:40 +00:00
Amir Raminfar
1a7416d5c7 Release 1.22.8 2020-04-30 15:18:51 -07:00
Amir Raminfar
eec14bbe18 Revert to node 13 2020-04-30 15:18:36 -07:00
Amir Raminfar
9a9997d5e0 Release 1.22.7 2020-04-30 14:33:53 -07:00
Amir Raminfar
2c041bc351 Removes file again 2020-04-30 14:33:35 -07:00
Amir Raminfar
8f98c28b96 Adds dev build back 2020-04-30 14:29:03 -07:00
Amir Raminfar
da3071cfa0 Uses absolute file path 2020-04-30 14:12:02 -07:00
Amir Raminfar
5484947ee3 Docker readme does not support 2fa so disabling 2020-04-30 14:01:43 -07:00
Amir Raminfar
c0f31b2ac5 Adds steps to update README on dockerhub 2020-04-30 13:59:34 -07:00
Amir Raminfar
d39c0e65aa Updates readme 2020-04-30 13:54:17 -07:00
Aaron
d090da9dcf Add sample Nginx config to README.md (#419) 2020-04-30 13:50:05 -07:00
Amir Raminfar
2ea63a2609 Updates to node v14 2020-04-30 12:58:27 -07:00
dependabot-preview[bot]
5766f7d1c5 Merge pull request #418 from amir20/dependabot/npm_and_yarn/lint-staged-10.2.1 2020-04-30 14:55:02 +00:00
dependabot-preview[bot]
0b762f6b88 Bump lint-staged from 10.2.0 to 10.2.1
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.2.0 to 10.2.1.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.2.0...v10.2.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-30 14:49:08 +00:00
dependabot-preview[bot]
51e708742d Merge pull request #417 from amir20/dependabot/npm_and_yarn/jest-25.5.2 2020-04-29 22:43:18 +00:00
dependabot-preview[bot]
99d74aefa4 Bump jest from 25.5.1 to 25.5.2
Bumps [jest](https://github.com/facebook/jest) from 25.5.1 to 25.5.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.5.1...v25.5.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-29 22:37:43 +00:00
dependabot-preview[bot]
0105f6d1a4 Merge pull request #416 from amir20/dependabot/npm_and_yarn/integration/jest-25.5.2 2020-04-29 21:59:14 +00:00
dependabot-preview[bot]
9168739140 Bump jest from 25.5.1 to 25.5.2 in /integration
Bumps [jest](https://github.com/facebook/jest) from 25.5.1 to 25.5.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.5.1...v25.5.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-29 21:54:10 +00:00
dependabot-preview[bot]
429c82c372 Merge pull request #415 from amir20/dependabot/npm_and_yarn/babel/core-7.9.6 2020-04-29 19:20:14 +00:00
dependabot-preview[bot]
4f65f43267 Bump @babel/core from 7.9.0 to 7.9.6
Bumps [@babel/core](https://github.com/babel/babel) from 7.9.0 to 7.9.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.9.0...v7.9.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-29 19:14:22 +00:00
dependabot-preview[bot]
bae86f4956 Merge pull request #414 from amir20/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.9.6 2020-04-29 18:49:53 +00:00
dependabot-preview[bot]
e0f550374f Bump @babel/plugin-transform-runtime from 7.9.0 to 7.9.6
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel) from 7.9.0 to 7.9.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.9.0...v7.9.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-29 18:43:36 +00:00
dependabot-preview[bot]
2dc9b9d921 Merge pull request #413 from amir20/dependabot/npm_and_yarn/jest-25.5.1 2020-04-29 13:43:09 +00:00
dependabot-preview[bot]
bb11e88e26 Bump jest from 25.5.0 to 25.5.1
Bumps [jest](https://github.com/facebook/jest) from 25.5.0 to 25.5.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.5.0...v25.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-29 13:37:30 +00:00
dependabot-preview[bot]
63392b9aab Merge pull request #412 from amir20/dependabot/npm_and_yarn/babel-jest-25.5.1 2020-04-29 13:35:51 +00:00
dependabot-preview[bot]
6fe24d3bbf Bump babel-jest from 25.5.0 to 25.5.1
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 25.5.0 to 25.5.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v25.5.1/packages/babel-jest)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-29 13:29:46 +00:00
dependabot-preview[bot]
340f4d9baa Merge pull request #411 from amir20/dependabot/npm_and_yarn/integration/jest-25.5.1 2020-04-29 11:03:52 +00:00
dependabot-preview[bot]
aa37ca02b5 Bump jest from 25.5.0 to 25.5.1 in /integration
Bumps [jest](https://github.com/facebook/jest) from 25.5.0 to 25.5.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.5.0...v25.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-29 10:59:00 +00:00
dependabot-preview[bot]
34b3b7e1e3 Merge pull request #409 from amir20/dependabot/npm_and_yarn/babel-jest-25.5.0 2020-04-28 20:29:06 +00:00
dependabot-preview[bot]
11067205e9 Bump babel-jest from 25.4.0 to 25.5.0
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 25.4.0 to 25.5.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v25.5.0/packages/babel-jest)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-28 20:22:58 +00:00
dependabot-preview[bot]
753e909411 Merge pull request #410 from amir20/dependabot/npm_and_yarn/jest-25.5.0 2020-04-28 20:20:51 +00:00
dependabot-preview[bot]
14d2ae53bc Bump jest from 25.4.0 to 25.5.0
Bumps [jest](https://github.com/facebook/jest) from 25.4.0 to 25.5.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.4.0...v25.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-28 20:14:54 +00:00
dependabot-preview[bot]
93ab440dd9 Merge pull request #408 from amir20/dependabot/npm_and_yarn/integration/jest-25.5.0 2020-04-28 19:57:26 +00:00
dependabot-preview[bot]
612cf9408f Bump jest from 25.4.0 to 25.5.0 in /integration
Bumps [jest](https://github.com/facebook/jest) from 25.4.0 to 25.5.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.4.0...v25.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-28 19:52:41 +00:00
Amir Raminfar
da6287d060 Release 1.22.6 2020-04-28 10:50:28 -07:00
Amir Raminfar
b84b5a2d8d Uses specific imports 2020-04-28 08:21:06 -07:00
dependabot-preview[bot]
b219c984c4 Merge pull request #407 from amir20/dependabot/npm_and_yarn/lint-staged-10.2.0 2020-04-28 15:06:01 +00:00
dependabot-preview[bot]
b11dc46d7b Bump lint-staged from 10.1.7 to 10.2.0
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.1.7 to 10.2.0.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.1.7...v10.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-28 15:00:52 +00:00
dependabot-preview[bot]
bff0f0a5bb Merge pull request #406 from amir20/dependabot/npm_and_yarn/release-it-13.5.7 2020-04-28 12:17:42 +00:00
dependabot-preview[bot]
61637599d8 Bump release-it from 13.5.6 to 13.5.7
Bumps [release-it](https://github.com/release-it/release-it) from 13.5.6 to 13.5.7.
- [Release notes](https://github.com/release-it/release-it/releases)
- [Changelog](https://github.com/release-it/release-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/release-it/release-it/compare/13.5.6...13.5.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-28 12:12:48 +00:00
Amir Raminfar
d9642eec3f Release 1.22.5 2020-04-27 15:07:21 -07:00
Amir Raminfar
d277b4e878 Fixes bad date 2020-04-27 15:07:04 -07:00
Amir Raminfar
e84c9c874b Adds relative date debug console 2020-04-27 14:50:50 -07:00
Amir Raminfar
682822eef7 Adds debug mode 2020-04-27 14:35:56 -07:00
Amir Raminfar
9fcbcadba7 Release 1.22.4 2020-04-27 12:44:05 -07:00
Amir Raminfar
198ba36dbd Fixes user/pass 2020-04-27 12:36:50 -07:00
Amir Raminfar
3a48f9f194 Adds latest docker 2020-04-27 12:35:20 -07:00
Amir Raminfar
df0b584c8e Fixes key 2020-04-27 12:14:12 -07:00
Raphael Piccolo
d794ca1c7f support more timestamp formats (#405) 2020-04-27 12:03:51 -07:00
dependabot-preview[bot]
00c143a8c8 Merge pull request #404 from amir20/dependabot/npm_and_yarn/release-it-13.5.6 2020-04-27 18:20:39 +00:00
dependabot-preview[bot]
c2d8f330af Bump release-it from 13.5.5 to 13.5.6
Bumps [release-it](https://github.com/release-it/release-it) from 13.5.5 to 13.5.6.
- [Release notes](https://github.com/release-it/release-it/releases)
- [Changelog](https://github.com/release-it/release-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/release-it/release-it/compare/13.5.5...13.5.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 18:15:28 +00:00
dependabot-preview[bot]
c5d89dc981 Merge pull request #402 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001048 2020-04-25 17:42:52 +00:00
dependabot-preview[bot]
784bc40e76 Bump caniuse-lite from 1.0.30001047 to 1.0.30001048
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001047 to 1.0.30001048.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001047...v1.0.30001048)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-25 17:37:09 +00:00
dependabot-preview[bot]
74e13abded Merge pull request #401 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001047 2020-04-25 16:45:12 +00:00
dependabot-preview[bot]
2519bf2815 Bump caniuse-lite from 1.0.30001046 to 1.0.30001047
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001046 to 1.0.30001047.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001046...v1.0.30001047)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-25 16:39:51 +00:00
dependabot-preview[bot]
7b0477755d Merge pull request #400 from amir20/dependabot/npm_and_yarn/buefy-0.8.17 2020-04-25 16:02:45 +00:00
dependabot-preview[bot]
a6cec39b16 Bump buefy from 0.8.16 to 0.8.17
Bumps [buefy](https://github.com/buefy/buefy) from 0.8.16 to 0.8.17.
- [Release notes](https://github.com/buefy/buefy/releases)
- [Changelog](https://github.com/buefy/buefy/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/buefy/buefy/compare/v0.8.16...v0.8.17)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-25 15:56:41 +00:00
dependabot-preview[bot]
277648b4ff Merge pull request #399 from amir20/dependabot/npm_and_yarn/vuex-3.3.0 2020-04-25 06:18:44 +00:00
dependabot-preview[bot]
b76f0aa3f8 Bump vuex from 3.2.0 to 3.3.0
Bumps [vuex](https://github.com/vuejs/vuex) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/vuejs/vuex/releases)
- [Changelog](https://github.com/vuejs/vuex/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vuex/compare/v3.2.0...v3.3.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-25 06:13:16 +00:00
dependabot-preview[bot]
5a35458586 Merge pull request #398 from amir20/dependabot/npm_and_yarn/concurrently-5.2.0 2020-04-25 04:19:45 +00:00
dependabot-preview[bot]
fb0bec2950 Bump concurrently from 5.1.0 to 5.2.0
Bumps [concurrently](https://github.com/kimmobrunfeldt/concurrently) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/kimmobrunfeldt/concurrently/releases)
- [Commits](https://github.com/kimmobrunfeldt/concurrently/compare/v5.1.0...v5.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-25 04:14:13 +00:00
dependabot-preview[bot]
7af36da76e Merge pull request #397 from amir20/dependabot/npm_and_yarn/sass-1.26.5 2020-04-24 03:08:43 +00:00
dependabot-preview[bot]
4017da77fb Bump sass from 1.26.3 to 1.26.5
Bumps [sass](https://github.com/sass/dart-sass) from 1.26.3 to 1.26.5.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.26.3...1.26.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-24 03:02:27 +00:00
Amir Raminfar
6f336bbcae Verifies go mod 2020-04-23 13:55:40 -07:00
dependabot-preview[bot]
6db4c9ba65 Merge pull request #395 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001046 2020-04-23 10:40:07 +00:00
dependabot-preview[bot]
8fb35f9ff6 Bump caniuse-lite from 1.0.30001045 to 1.0.30001046
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001045 to 1.0.30001046.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001045...v1.0.30001046)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-23 10:34:44 +00:00
dependabot-preview[bot]
e41e34d45c Merge pull request #394 from amir20/dependabot/npm_and_yarn/buefy-0.8.16 2020-04-22 21:57:34 +00:00
dependabot-preview[bot]
cb82e5d221 Bump buefy from 0.8.15 to 0.8.16
Bumps [buefy](https://github.com/buefy/buefy) from 0.8.15 to 0.8.16.
- [Release notes](https://github.com/buefy/buefy/releases)
- [Changelog](https://github.com/buefy/buefy/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/buefy/buefy/compare/v0.8.15...v0.8.16)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-22 21:52:26 +00:00
dependabot-preview[bot]
23aba02e41 Merge pull request #393 from amir20/dependabot/npm_and_yarn/prettier-2.0.5 2020-04-21 17:28:01 +00:00
dependabot-preview[bot]
c281818579 Bump prettier from 2.0.4 to 2.0.5
Bumps [prettier](https://github.com/prettier/prettier) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.0.4...2.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-21 17:22:16 +00:00
Amir Raminfar
42a8a9af80 Moves demo 2020-04-21 10:14:53 -07:00
Amir Raminfar
33e86ac18e Moves demo 2020-04-21 10:14:30 -07:00
dependabot-preview[bot]
b4dae48a5e Merge pull request #392 from amir20/dependabot/npm_and_yarn/release-it-13.5.5 2020-04-21 16:44:55 +00:00
dependabot-preview[bot]
8b9704bc69 Bump release-it from 13.5.4 to 13.5.5
Bumps [release-it](https://github.com/release-it/release-it) from 13.5.4 to 13.5.5.
- [Release notes](https://github.com/release-it/release-it/releases)
- [Changelog](https://github.com/release-it/release-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/release-it/release-it/compare/13.5.4...13.5.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-21 16:23:50 +00:00
dependabot-preview[bot]
def504ca04 Merge pull request #391 from amir20/dependabot/npm_and_yarn/lint-staged-10.1.7 2020-04-21 15:12:33 +00:00
dependabot-preview[bot]
451dbefc93 Bump lint-staged from 10.1.6 to 10.1.7
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.1.6 to 10.1.7.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.1.6...v10.1.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-21 15:07:48 +00:00
dependabot-preview[bot]
1e35ffb1fe Merge pull request #390 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001045 2020-04-21 10:46:33 +00:00
dependabot-preview[bot]
570b0246b7 Bump caniuse-lite from 1.0.30001043 to 1.0.30001045
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001043 to 1.0.30001045.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001043...v1.0.30001045)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-21 10:41:55 +00:00
dependabot-preview[bot]
b91360220c Merge pull request #389 from amir20/dependabot/npm_and_yarn/integration/jest-25.4.0 2020-04-20 13:50:18 +00:00
dependabot-preview[bot]
1c82ba87ba Bump jest from 25.3.0 to 25.4.0 in /integration
Bumps [jest](https://github.com/facebook/jest) from 25.3.0 to 25.4.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.3.0...v25.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 13:44:57 +00:00
dependabot-preview[bot]
14e64b8460 Merge pull request #388 from amir20/dependabot/npm_and_yarn/integration/jest-image-snapshot-3.1.0 2020-04-20 13:43:19 +00:00
dependabot-preview[bot]
314549c038 Bump jest-image-snapshot from 3.0.1 to 3.1.0 in /integration
Bumps [jest-image-snapshot](https://github.com/americanexpress/jest-image-snapshot) from 3.0.1 to 3.1.0.
- [Release notes](https://github.com/americanexpress/jest-image-snapshot/releases)
- [Changelog](https://github.com/americanexpress/jest-image-snapshot/blob/master/CHANGELOG.md)
- [Commits](https://github.com/americanexpress/jest-image-snapshot/compare/v3.0.1...v3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 13:38:00 +00:00
Amir Raminfar
df059f7e63 Adds missing routes 2020-04-19 17:11:43 -07:00
Amir Raminfar
2a620d8c6e Moves routes to own file 2020-04-19 17:05:21 -07:00
dependabot-preview[bot]
ba0de92f84 Merge pull request #386 from amir20/dependabot/npm_and_yarn/jest-25.4.0 2020-04-19 22:49:40 +00:00
dependabot-preview[bot]
38fd3dd372 Bump jest from 25.3.0 to 25.4.0
Bumps [jest](https://github.com/facebook/jest) from 25.3.0 to 25.4.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v25.3.0...v25.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-19 22:44:21 +00:00
dependabot-preview[bot]
14b5eac802 Merge pull request #385 from amir20/dependabot/npm_and_yarn/babel-jest-25.4.0 2020-04-19 22:31:12 +00:00
dependabot-preview[bot]
25fc2710fc Bump babel-jest from 25.3.0 to 25.4.0
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 25.3.0 to 25.4.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v25.4.0/packages/babel-jest)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-19 22:20:31 +00:00
dependabot-preview[bot]
54fff1e191 Merge pull request #384 from amir20/dependabot/npm_and_yarn/vuex-3.2.0 2020-04-19 11:21:41 +00:00
dependabot-preview[bot]
0f7a940e11 Bump vuex from 3.1.3 to 3.2.0
Bumps [vuex](https://github.com/vuejs/vuex) from 3.1.3 to 3.2.0.
- [Release notes](https://github.com/vuejs/vuex/releases)
- [Changelog](https://github.com/vuejs/vuex/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vuex/compare/v3.1.3...v3.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-19 11:16:01 +00:00
dependabot-preview[bot]
b53895dead Merge pull request #383 from amir20/dependabot/npm_and_yarn/lint-staged-10.1.6 2020-04-19 09:58:01 +00:00
dependabot-preview[bot]
d0cb1cad44 Bump lint-staged from 10.1.5 to 10.1.6
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.1.5 to 10.1.6.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.1.5...v10.1.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-19 09:52:41 +00:00
dependabot-preview[bot]
ebdd78d6b0 Merge pull request #382 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001043 2020-04-19 04:48:14 +00:00
dependabot-preview[bot]
3f5be54938 Bump caniuse-lite from 1.0.30001042 to 1.0.30001043
Bumps [caniuse-lite](https://github.com/ben-eb/caniuse-lite) from 1.0.30001042 to 1.0.30001043.
- [Release notes](https://github.com/ben-eb/caniuse-lite/releases)
- [Changelog](https://github.com/ben-eb/caniuse-lite/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ben-eb/caniuse-lite/compare/v1.0.30001042...v1.0.30001043)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-19 04:42:24 +00:00
dependabot-preview[bot]
fca8ef26c5 Merge pull request #381 from amir20/dependabot/npm_and_yarn/lint-staged-10.1.5 2020-04-18 08:28:05 +00:00
dependabot-preview[bot]
aa12682a42 Bump lint-staged from 10.1.4 to 10.1.5
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.1.4 to 10.1.5.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.1.4...v10.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-18 08:22:40 +00:00
dependabot-preview[bot]
bfa3714634 Merge pull request #380 from amir20/dependabot/npm_and_yarn/release-it-13.5.4 2020-04-17 15:37:53 +00:00
dependabot-preview[bot]
a7c3ee024b Bump release-it from 13.5.3 to 13.5.4
Bumps [release-it](https://github.com/release-it/release-it) from 13.5.3 to 13.5.4.
- [Release notes](https://github.com/release-it/release-it/releases)
- [Changelog](https://github.com/release-it/release-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/release-it/release-it/compare/13.5.3...13.5.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-17 15:32:42 +00:00
dependabot-preview[bot]
63eb64cbde Merge pull request #379 from amir20/dependabot/npm_and_yarn/lint-staged-10.1.4 2020-04-17 14:17:01 +00:00
dependabot-preview[bot]
fd58b5c248 Bump lint-staged from 10.1.3 to 10.1.4
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.1.3 to 10.1.4.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.1.3...v10.1.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-17 14:11:01 +00:00
dependabot-preview[bot]
126d121e34 Merge pull request #378 from amir20/dependabot/npm_and_yarn/release-it-13.5.3 2020-04-17 14:08:36 +00:00
dependabot-preview[bot]
30331275f6 Bump release-it from 13.5.2 to 13.5.3
Bumps [release-it](https://github.com/release-it/release-it) from 13.5.2 to 13.5.3.
- [Release notes](https://github.com/release-it/release-it/releases)
- [Changelog](https://github.com/release-it/release-it/blob/master/CHANGELOG.md)
- [Commits](https://github.com/release-it/release-it/compare/13.5.2...13.5.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-17 14:02:06 +00:00
Amir Raminfar
8571dddd98 Release 1.22.3 2020-04-16 15:53:06 -07:00
Amir Raminfar
cf6f3945b5 Updates push.yml 2020-04-16 14:35:03 -07:00
Amir Raminfar
f644f7b9b3 Separates build in push.yml 2020-04-16 14:31:49 -07:00
Amir Raminfar
2e656e8882 Removes DOCKER_API_VERSION 2020-04-16 14:29:19 -07:00
39 changed files with 5064 additions and 4160 deletions

View File

@@ -1,9 +1,8 @@
{
"presets": [["@babel/preset-env", { "modules": false }]],
"plugins": [["@babel/plugin-transform-runtime", { "regenerator": true }]],
"presets": [["env", { "modules": false }]],
"env": {
"test": {
"presets": [["@babel/preset-env", { "targets": { "node": "current" } }]]
"presets": [["env", { "targets": { "node": "current" } }]]
}
}
}

View File

Before

Width:  |  Height:  |  Size: 24 MiB

After

Width:  |  Height:  |  Size: 24 MiB

View File

@@ -5,17 +5,19 @@ on:
name: Test and Release
jobs:
npm-test:
name: npm test
name: JavaScript Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: npm test
- name: Install Node
uses: actions/setup-node@v1
- name: npm it
run: npm it
- name: Install depdencies
run: yarn
- name: Run Tests
run: yarn test
go-test:
name: go test
name: Go Tests
runs-on: ubuntu-latest
steps:
- name: Install Go
@@ -24,10 +26,21 @@ jobs:
go-version: 1.14.x
- name: Checkout code
uses: actions/checkout@v2
- name: Test
- name: Run Go Tests with Coverage
run: go test -cover ./...
buildx:
int-test:
needs: [go-test, npm-test]
name: Integration Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build images
run: docker-compose -f integration/docker-compose.test.yml build
- name: Run tests
run: docker-compose -f integration/docker-compose.test.yml run integration
buildx:
needs: [int-test]
name: Release
runs-on: ubuntu-latest
steps:
@@ -37,7 +50,8 @@ jobs:
id: buildx
uses: crazy-max/ghaction-docker-buildx@v1
with:
version: latest
buildx-version: latest
qemu-version: latest
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Docker Login

View File

@@ -25,11 +25,13 @@ jobs:
uses: actions/checkout@v2
- name: Run Go Tests with Coverage
run: go test -cover ./...
docker-build:
int-test:
name: Integration Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build images
run: docker-compose -f integration/docker-compose.test.yml build
- name: Run tests
run: docker-compose -f integration/docker-compose.test.yml run integration

View File

@@ -1,3 +0,0 @@
module.exports = {
minifySvg: false,
};

View File

@@ -1 +1 @@
-r '\.go$' -R '^node_modules/' -R '^static/' -R '^.cache/' -G '*_test.go' -s -- go run main.go --level debug
-r '\.go$' -R '^node_modules/' -R '^static/' -R '^.cache/' -G '*_test.go' -s -- go run main.go routes.go --level debug

View File

@@ -10,16 +10,14 @@ COPY package*.json yarn.lock ./
RUN yarn install --network-timeout 1000000
# Copy config files
COPY .* ./
COPY .* webpack*.js ./
# Copy assets to build
COPY assets ./assets
# Do the build
RUN yarn build
FROM golang:1.14-alpine AS builder
RUN apk add --no-cache git ca-certificates
@@ -52,7 +50,6 @@ RUN CGO_ENABLED=0 go build -ldflags "-s -w -X main.version=$TAG" -o dozzle
FROM scratch
ENV PATH=/bin
ENV DOCKER_API_VERSION 1.38
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=builder /dozzle/dozzle /dozzle

View File

@@ -6,13 +6,13 @@
# Dozzle - [dozzle.dev](https://dozzle.dev/)
Dozzle is a real-time log viewer for Docker. It's free. It's small. And it's in your browser.
Dozzle is a simple, lightweight application that provides you with a web based interface to monitor your Docker container logs live. It doesnt store log information, it is for live monitoring of your container logs only.
While dozzle should work for most, it is not meant to be a full logging solution. For enterprise use, I recommend you look at [Loggly](https://www.loggly.com), [Papertrail](https://papertrailapp.com) or [Kibana](https://www.elastic.co/products/kibana).
While dozzle should work for most, it is not meant to be a full logging solution. For enterprise applications, products like [Loggly](https://www.loggly.com), [Papertrail](https://papertrailapp.com) or [Kibana](https://www.elastic.co/products/kibana) are more suited.
But if you don't want to pay for these services, then Dozzle can help! Dozzle will be able to capture all logs from your containers and send them in real-time to your browser. Installation is also very easy. Dozzle is not a database. It does not store or save any logs. You can only see live logs while using Dozzle.
Dozzle doesn't cost any money. Dozzle aims to stay simple, small and free.
![Image](demo.gif)
![Image](https://github.com/amir20/dozzle/blob/master/.github/demo.gif?raw=true)
## Getting dozzle
@@ -82,10 +82,50 @@ Dozzle follows the [12-factor](https://12factor.net/) model. Configurations can
| `--base` | `DOZZLE_BASE` | `/` |
| `--level` | `DOZZLE_LEVEL` | `info` |
| `--showAll` | `DOZZLE_SHOWALL` | `false` |
| n/a | `DOCKER_API_VERSION` | `1.38` |
| n/a | `DOCKER_API_VERSION` | not set |
| `--tailSize` | `DOZZLE_TAILSIZE` | `300` |
| `--filter` | `DOZZLE_FILTER` | `""` |
## Troubleshooting
### Nginx Config
If you are using nginx as a reverse proxy, then you need to configure `/api` to enable server-sent events.
Below is an example configuration using SSL and `proxy_pass` with correct settings.
```
server {
listen 80;
server_name <example.com>;
return 301 https://<example.com>$request_uri;
}
server {
listen 443 ssl http2;
server_name <example.com>;
ssl_certificate </path/to/your/certificate>;
ssl_certificate_key </path/to/your/key>;
location / {
proxy_pass http://<dozzle.container.ip.address>:8080;
}
location /api {
proxy_pass http://<dozzle.container.ip.address>:8080;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_cache off;
chunked_transfer_encoding off;
}
}
```
## License
[MIT](LICENSE)
@@ -101,4 +141,3 @@ To Build and test locally:
5. Install node modules with `npm install`.
6. Do `npm start`
Instructions for Github actions can be found [here](.github/goreleaser/Dockerfile) which build and tests Dozzle.

View File

@@ -1,6 +1,7 @@
/* snapshot: Test_createRoutes_foobar */
HTTP/1.1 200 OK
Connection: close
Content-Security-Policy: default-src 'none'; script-src 'self'; style-src 'self' fonts.googleapis.com; img-src 'self'; manifest-src 'self'; font-src fonts.gstatic.com; connect-src 'self' api.github.com; require-trusted-types-for 'script'
Content-Type: text/plain; charset=utf-8
foo page
@@ -8,6 +9,7 @@ foo page
/* snapshot: Test_createRoutes_index */
HTTP/1.1 200 OK
Connection: close
Content-Security-Policy: default-src 'none'; script-src 'self'; style-src 'self' fonts.googleapis.com; img-src 'self'; manifest-src 'self'; font-src fonts.gstatic.com; connect-src 'self' api.github.com; require-trusted-types-for 'script'
Content-Type: text/plain; charset=utf-8
index page
@@ -15,6 +17,7 @@ index page
/* snapshot: Test_createRoutes_redirect */
HTTP/1.1 301 Moved Permanently
Connection: close
Content-Security-Policy: default-src 'none'; script-src 'self'; style-src 'self' fonts.googleapis.com; img-src 'self'; manifest-src 'self'; font-src fonts.gstatic.com; connect-src 'self' api.github.com; require-trusted-types-for 'script'
Content-Type: text/html; charset=utf-8
Location: /foobar/
@@ -23,6 +26,7 @@ Location: /foobar/
/* snapshot: Test_createRoutes_version */
HTTP/1.1 200 OK
Connection: close
Content-Security-Policy: default-src 'none'; script-src 'self'; style-src 'self' fonts.googleapis.com; img-src 'self'; manifest-src 'self'; font-src fonts.gstatic.com; connect-src 'self' api.github.com; require-trusted-types-for 'script'
Content-Type: text/plain; charset=utf-8
dev
@@ -39,14 +43,16 @@ HTTP/1.1 200 OK
Connection: close
Cache-Control: no-cache
Connection: keep-alive
Content-Type: text/event-stream
Content-Type: text/event-stream
X-Accel-Buffering: no
/* snapshot: Test_handler_streamEvents_error_request */
HTTP/1.1 200 OK
Connection: close
Cache-Control: no-cache
Connection: keep-alive
Content-Type: text/event-stream
Content-Type: text/event-stream
X-Accel-Buffering: no
/* snapshot: Test_handler_streamEvents_happy */
HTTP/1.1 200 OK
@@ -54,6 +60,7 @@ Connection: close
Cache-Control: no-cache
Connection: keep-alive
Content-Type: text/event-stream
X-Accel-Buffering: no
event: containers-changed
data: start
@@ -71,7 +78,8 @@ HTTP/1.1 200 OK
Connection: close
Cache-Control: no-cache
Connection: keep-alive
Content-Type: text/event-stream
Content-Type: text/event-stream
X-Accel-Buffering: no
/* snapshot: Test_handler_streamLogs_happy */
HTTP/1.1 200 OK
@@ -79,5 +87,6 @@ Connection: close
Cache-Control: no-cache
Connection: keep-alive
Content-Type: text/event-stream
X-Accel-Buffering: no
data: INFO Testing logs...

View File

@@ -3,6 +3,8 @@ import { shallowMount, RouterLinkStub, createLocalVue } from "@vue/test-utils";
import Vuex from "vuex";
import App from "./App";
jest.mock("./store/config.js", () => ({ base: "" }));
const localVue = createLocalVue();
localVue.use(Vuex);
@@ -12,7 +14,6 @@ describe("<App />", () => {
let store;
beforeEach(() => {
global.BASE_PATH = "";
global.EventSource = EventSource;
const state = {
containers: [
@@ -32,11 +33,6 @@ describe("<App />", () => {
});
});
test("is a Vue instance", async () => {
const wrapper = shallowMount(App, { stubs, store, localVue });
expect(wrapper.isVueInstance()).toBeTruthy();
});
test("has right title", async () => {
const wrapper = shallowMount(App, { stubs, store, localVue });
await wrapper.vm.$nextTick();

View File

@@ -116,8 +116,8 @@ export default {
</script>
<style scoped lang="scss">
::v-deep .splitpanes__splitter {
min-width: 4px;
::v-deep .splitpanes--vertical > .splitpanes__splitter {
min-width: 3px;
background: #666;
&:hover {
background: rgb(255, 221, 87);

View File

@@ -1,12 +1,11 @@
<template>
<svg class="icomoon" :class="['icon-' + name]">
<use :href="'#icon-' + name"></use>
<template functional>
<svg class="icomoon" :class="['icon-' + props.name]">
<use :href="'#icon-' + props.name"></use>
</svg>
</template>
<script>
export default {
functional: true,
props: {
name: {
required: true,

View File

@@ -13,9 +13,10 @@ jest.mock("lodash.debounce", () =>
})
);
jest.mock("../store/config.js", () => ({ base: "" }));
describe("<LogEventSource />", () => {
beforeEach(() => {
global.BASE_PATH = "";
global.EventSource = EventSource;
MockDate.set("6/12/2019", 0);
window.scrollTo = jest.fn();
@@ -55,24 +56,9 @@ describe("<LogEventSource />", () => {
});
}
test("is a Vue instance", async () => {
const wrapper = shallowMount(LogEventSource);
expect(wrapper.isVueInstance()).toBeTruthy();
});
test("renders correctly", async () => {
const wrapper = createLogEventSource();
expect(wrapper.element).toMatchInlineSnapshot(`
<div>
<div
class="control"
/>
<ul
class="events medium"
/>
</div>
`);
expect(wrapper.element).toMatchSnapshot();
});
test("should connect to EventSource", async () => {
@@ -105,11 +91,28 @@ describe("<LogEventSource />", () => {
`);
});
test("should parse messages with loki's timestamp format", async () => {
const wrapper = createLogEventSource();
sources["/api/logs/stream?id=abc"].emitOpen();
sources["/api/logs/stream?id=abc"].emitMessage({ data: `2020-04-27T12:35:43.272974324+02:00 xxxxx` });
const [message, _] = wrapper.vm.messages;
const { key, ...messageWithoutKey } = message;
expect(key).toBe("2020-04-27T12:35:43.272974324+02:00");
expect(messageWithoutKey).toMatchInlineSnapshot(`
Object {
"date": 2020-04-27T10:35:43.272Z,
"message": "xxxxx",
}
`);
});
test("should pass messages to slot", async () => {
const wrapper = createLogEventSource();
sources["/api/logs/stream?id=abc"].emitOpen();
sources["/api/logs/stream?id=abc"].emitMessage({ data: `2019-06-12T10:55:42.459034602Z "This is a message."` });
const [message, _] = wrapper.find(LogViewer).vm.messages;
const [message, _] = wrapper.findComponent(LogViewer).vm.messages;
const { key, ...messageWithoutKey } = message;

View File

@@ -8,17 +8,7 @@
<script>
import debounce from "lodash.debounce";
import InfiniteLoader from "./InfiniteLoader";
function parseMessage(data) {
const date = new Date(data.substring(0, 30));
const key = data.substring(0, 30);
const message = data.substring(30).trim();
return {
key,
date,
message,
};
}
import config from "../store/config";
export default {
props: ["id"],
@@ -41,9 +31,10 @@ export default {
if (this.es) {
this.es.close();
this.messages = [];
this.buffer = [];
this.es = null;
}
this.es = new EventSource(`${BASE_PATH}/api/logs/stream?id=${this.id}`);
this.es = new EventSource(`${config.base}/api/logs/stream?id=${this.id}`);
const flushBuffer = debounce(
() => {
this.messages.push(...this.buffer);
@@ -53,7 +44,7 @@ export default {
{ maxWait: 1000 }
);
this.es.onmessage = (e) => {
this.buffer.push(parseMessage(e.data));
this.buffer.push(this.parseMessage(e.data));
flushBuffer();
};
this.es.onerror = (e) => console.log("EventSource failed." + e);
@@ -73,10 +64,20 @@ export default {
const newMessages = logs
.trim()
.split("\n")
.map((line) => parseMessage(line));
.map((line) => this.parseMessage(line));
this.messages.unshift(...newMessages);
}
},
parseMessage(data) {
let i = data.indexOf(" ");
if (i == -1) {
i = data.length;
}
const key = data.substring(0, i);
const date = new Date(key);
const message = data.substring(i).trim();
return { key, date, message };
},
},
watch: {
id(newValue, oldValue) {

View File

@@ -0,0 +1,13 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<LogEventSource /> renders correctly 1`] = `
<div>
<div
class="control"
/>
<ul
class="events medium"
/>
</div>
`;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

5
assets/favicon.svg Normal file
View File

@@ -0,0 +1,5 @@
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="128" height="128" rx="6" fill="#222222"/>
<path d="M82.3248 94.3863H123V104.093H67.8025V95.3506L106.164 44.3736H68.3808V34.5382H121.072V42.9594L82.3248 94.3863Z" fill="#FFDD57"/>
<path d="M8 107.107L17.5656 14L43.8372 16.7013C51.9339 17.5338 58.9091 20.0604 64.7629 24.2812C70.6166 28.5019 74.8873 34.0893 77.5749 41.0432C80.3052 48.0016 81.2514 55.7674 80.4137 64.3407L79.8027 70.2877C78.9005 79.0698 76.4053 86.5894 72.3173 92.8468C68.2719 99.1084 62.914 103.684 56.2436 106.574C49.6158 109.468 42.1213 110.529 33.7602 109.755L8 107.107ZM28.8005 25.3655L21.3043 98.3288L34.2164 99.6565C43.6767 100.629 51.3299 98.4435 57.1758 93.0993C63.0644 87.7595 66.5671 79.6542 67.684 68.7832L68.2424 63.3477C69.3286 52.7752 67.6788 44.3123 63.293 37.9592C58.9542 31.5678 52.2295 27.8607 43.1188 26.8377L28.8005 25.3655Z" fill="#FFDD57"/>
</svg>

After

Width:  |  Height:  |  Size: 949 B

View File

@@ -5,19 +5,17 @@
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Dozzle</title>
<link href="https://fonts.googleapis.com/css?family=Roboto|Roboto+Mono|Gafata" rel="stylesheet" />
<link rel="manifest" href="manifest.webmanifest" />
<link href="styles.scss" rel="stylesheet" />
<link rel="icon" href="favicon.ico" />
<script>
window["BASE_PATH"] = "{{ .Base }}";
window["VERSION"] = "{{ .Version }}";
<script type="application/json" id="config__json">
{
"base": "{{ .Base }}",
"version": "{{ .Version }}"
}
</script>
</head>
<body>
<svg
aria-hidden="true"
style="position: absolute; width: 0; height: 0; overflow: hidden;"
class="is-hidden"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
@@ -69,6 +67,5 @@
</defs>
</svg>
<div id="app"></div>
<script src="main.js"></script>
</body>
</html>

View File

@@ -1,8 +1,10 @@
import Vue from "vue";
import VueRouter from "vue-router";
import Meta from "vue-meta";
import { Dropdown, Switch } from "buefy";
import Dropdown from "buefy/dist/esm/dropdown";
import Switch from "buefy/dist/esm/switch";
import store from "./store";
import config from "./store/config";
import App from "./App.vue";
import Container from "./pages/Container.vue";
import Settings from "./pages/Settings.vue";
@@ -34,7 +36,7 @@ const routes = [
const router = new VueRouter({
mode: "history",
base: BASE_PATH + "/",
base: config.base + "/",
routes,
});

View File

@@ -1,9 +0,0 @@
{
"name": "Dozzle Log Viewer",
"short_name": "Dozzle",
"theme_color": "#111111",
"background_color": "#111111",
"display": "standalone",
"scope": "/",
"start_url": "/"
}

View File

@@ -2,11 +2,6 @@ import { shallowMount } from "@vue/test-utils";
import Index from "./Index";
describe("<Index />", () => {
test("is a Vue instance", () => {
const wrapper = shallowMount(Index);
expect(wrapper.isVueInstance()).toBeTruthy();
});
test("renders correctly", () => {
const wrapper = shallowMount(Index);
expect(wrapper.element).toMatchSnapshot();

View File

@@ -10,7 +10,7 @@
>.
<span v-if="hasUpdate">
New version is available! Update to
<a :href="nextRelease.html_url" class="next-release">{{ nextRelease.name }}</a
<a :href="nextRelease.html_url" class="next-release" target="_blank" rel="noopener">{{ nextRelease.name }}</a
>.
</span>
</div>
@@ -46,7 +46,12 @@
<span class="is-capitalized">{{ size }}</span>
<span class="icon"><icon name="chevron-down"></icon></span>
</button>
<b-dropdown-item :value="value" aria-role="listitem" v-for="value in ['small', 'medium', 'large']">
<b-dropdown-item
:value="value"
aria-role="listitem"
v-for="value in ['small', 'medium', 'large']"
:key="value"
>
<div class="media">
<span class="icon keep-size">
<icon name="check" v-if="value == size"></icon>
@@ -67,6 +72,7 @@ import gt from "semver/functions/gt";
import valid from "semver/functions/valid";
import { mapActions, mapState } from "vuex";
import Icon from "../components/Icon";
import config from "../store/config";
export default {
props: [],
@@ -76,7 +82,7 @@ export default {
},
data() {
return {
currentVersion: VERSION,
currentVersion: config.version,
nextRelease: null,
hasUpdate: false,
};
@@ -112,7 +118,7 @@ export default {
},
};
</script>
<style lang="scss">
<style lang="scss" scoped>
.title {
color: #eee;
}

2
assets/store/config.js Normal file
View File

@@ -0,0 +1,2 @@
const config = JSON.parse(document.querySelector("script#config__json").textContent);
export default config;

View File

@@ -2,6 +2,7 @@ import Vue from "vue";
import Vuex from "vuex";
import storage from "store/dist/store.modern";
import { DEFAULT_SETTINGS, DOZZLE_SETTINGS_KEY } from "./settings";
import config from "./config";
Vue.use(Vuex);
@@ -50,7 +51,7 @@ const actions = {
commit("SET_SEARCH", filter);
},
async FETCH_CONTAINERS({ commit }) {
const containers = await (await fetch(`${BASE_PATH}/api/containers.json`)).json();
const containers = await (await fetch(`${config.base}/api/containers.json`)).json();
commit("SET_CONTAINERS", containers);
},
UPDATE_SETTING({ commit }, setting) {
@@ -72,7 +73,7 @@ const getters = {
},
};
const es = new EventSource(`${BASE_PATH}/api/events/stream`);
const es = new EventSource(`${config.base}/api/events/stream`);
es.addEventListener("containers-changed", (e) => setTimeout(() => store.dispatch("FETCH_CONTAINERS"), 1000), false);
mql.addListener((e) => store.commit("SET_MOBILE_WIDTH", e.matches));

View File

@@ -56,11 +56,9 @@ html.has-custom-scrollbars {
}
.is-settings-control {
background: rgba(0, 0, 0, 0.4);
color: #fff;
border-color: transparent;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:hover {
border-color: rgb(255, 221, 87) !important;
background: rgba(0, 0, 0, 0.8) !important;
@@ -73,4 +71,3 @@ html.has-custom-scrollbars {
border-color: transparent;
}
}

2
go.mod
View File

@@ -34,7 +34,7 @@ require (
github.com/pkg/errors v0.9.1 // indirect
github.com/rogpeppe/go-internal v1.5.2 // indirect
github.com/sergi/go-diff v1.0.0 // indirect
github.com/sirupsen/logrus v1.5.0
github.com/sirupsen/logrus v1.6.0
github.com/spf13/afero v1.2.2 // indirect
github.com/spf13/cast v1.3.1 // indirect
github.com/spf13/jwalterweatherman v1.1.0 // indirect

7
go.sum
View File

@@ -131,6 +131,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@@ -204,6 +206,8 @@ github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.5.0 h1:1N5EYkVAPEywqZRJd7cwnRtCb6xJx7NH3T3WUTF980Q=
github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo=
github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
@@ -231,8 +235,6 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M=
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
github.com/spf13/viper v1.6.2 h1:7aKfF+e8/k68gda3LOjo5RxiUqddoFxVq4BKBPrxk5E=
github.com/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k=
github.com/spf13/viper v1.6.3 h1:pDDu1OyEDTKzpJwdq4TiuLyMsUgRa/BT5cn5O62NoHs=
github.com/spf13/viper v1.6.3/go.mod h1:jUMtyi0/lB5yZH/FjyGAoH7IMNrIhlBf6pXZmbMDvzw=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -249,7 +251,6 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5
github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=

View File

@@ -1,6 +1,6 @@
FROM amir20/docker-alpine-puppeteer:edge
COPY --chown=pptruser:pptruser package*.json /app/
COPY --chown=pptruser:pptruser package*.json yarn.lock /app/
RUN yarn
COPY --chown=pptruser:pptruser . /app/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -7,11 +7,11 @@ services:
environment:
- DOZZLE_FILTER=name=dozzle
build:
context: ..
context: ..
integration:
build:
context: .
command: npm test
command: yarn test
environment:
- BASE=http://dozzle:8080/
depends_on:

View File

@@ -8,9 +8,9 @@
"author": "",
"license": "ISC",
"dependencies": {
"jest": "^25.2.6",
"jest": "^26.0.1",
"jest-image-snapshot": "^3.0.1",
"puppeteer": "^2.1.1"
"puppeteer": "^3.0.4"
},
"jest": {
"preset": "jest-puppeteer",

File diff suppressed because it is too large Load Diff

13
jest.config.js Normal file
View File

@@ -0,0 +1,13 @@
module.exports = {
clearMocks: true,
moduleFileExtensions: ["js", "json", "vue"],
coveragePathIgnorePatterns: ["node_modules"],
testPathIgnorePatterns: ["node_modules", "<rootDir>/integration/"],
transformIgnorePatterns: ["node_modules"],
watchPathIgnorePatterns: ["<rootDir>/node_modules/"],
snapshotSerializers: ["jest-serializer-vue"],
transform: {
".*\\.vue$": "vue-jest",
"^.+\\.js$": "babel-jest",
},
};

176
main.go
View File

@@ -2,20 +2,15 @@ package main
import (
"context"
"encoding/json"
"fmt"
"html/template"
"net/http"
"net/url"
"os"
"os/signal"
"runtime"
"strings"
"time"
"github.com/amir20/dozzle/docker"
"github.com/gobuffalo/packr"
"github.com/gorilla/mux"
log "github.com/sirupsen/logrus"
"github.com/spf13/pflag"
"github.com/spf13/viper"
@@ -79,23 +74,6 @@ func init() {
})
}
func createRoutes(base string, h *handler) *mux.Router {
r := mux.NewRouter()
if base != "/" {
r.HandleFunc(base, http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
http.Redirect(w, req, base+"/", http.StatusMovedPermanently)
}))
}
s := r.PathPrefix(base).Subrouter()
s.HandleFunc("/api/containers.json", h.listContainers)
s.HandleFunc("/api/logs/stream", h.streamLogs)
s.HandleFunc("/api/logs", h.fetchLogsBetweenDates)
s.HandleFunc("/api/events/stream", h.streamEvents)
s.HandleFunc("/version", h.version)
s.PathPrefix("/").Handler(http.StripPrefix(base, http.HandlerFunc(h.index)))
return r
}
func main() {
log.Infof("Dozzle version %s", version)
dockerClient := docker.NewClientWithFilters(filters)
@@ -130,157 +108,3 @@ func main() {
srv.Shutdown(ctx)
os.Exit(0)
}
func (h *handler) index(w http.ResponseWriter, req *http.Request) {
fileServer := http.FileServer(h.box)
if h.box.Has(req.URL.Path) && req.URL.Path != "" && req.URL.Path != "/" {
fileServer.ServeHTTP(w, req)
} else {
text, err := h.box.FindString("index.html")
if err != nil {
panic(err)
}
text = strings.Replace(text, "__BASE__", "{{ .Base }}", -1)
tmpl, err := template.New("index.html").Parse(text)
if err != nil {
panic(err)
}
path := ""
if base != "/" {
path = base
}
data := struct {
Base string
Version string
}{path, version}
err = tmpl.Execute(w, data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
}
func (h *handler) listContainers(w http.ResponseWriter, r *http.Request) {
containers, err := h.client.ListContainers(h.showAll)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
err = json.NewEncoder(w).Encode(containers)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
func (h *handler) fetchLogsBetweenDates(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain; charset=UTF-8")
from, _ := time.Parse(time.RFC3339, r.URL.Query().Get("from"))
to, _ := time.Parse(time.RFC3339, r.URL.Query().Get("to"))
id := r.URL.Query().Get("id")
messages, _ := h.client.ContainerLogsBetweenDates(r.Context(), id, from, to)
for _, m := range messages {
fmt.Fprintln(w, m)
}
}
func (h *handler) streamLogs(w http.ResponseWriter, r *http.Request) {
id := r.URL.Query().Get("id")
if id == "" {
http.Error(w, "id is required", http.StatusBadRequest)
return
}
f, ok := w.(http.Flusher)
if !ok {
http.Error(w, "Streaming unsupported!", http.StatusInternalServerError)
return
}
container, e := h.client.FindContainer(id)
if e != nil {
http.Error(w, e.Error(), http.StatusInternalServerError)
return
}
messages, err := h.client.ContainerLogs(r.Context(), container.ID, tailSize)
w.Header().Set("Content-Type", "text/event-stream")
w.Header().Set("Cache-Control", "no-cache")
w.Header().Set("Connection", "keep-alive")
w.Header().Set("Transfer-Encoding", "chunked")
log.Debugf("Starting to stream logs for %s", id)
Loop:
for {
select {
case message, ok := <-messages:
if !ok {
break Loop
}
_, e := fmt.Fprintf(w, "data: %s\n\n", message)
if e != nil {
log.Debugf("Error while writing to log stream: %v", e)
break Loop
}
f.Flush()
case e := <-err:
log.Debugf("Error while reading from log stream: %v", e)
break Loop
}
}
log.WithField("NumGoroutine", runtime.NumGoroutine()).Debug("runtime stats")
}
func (h *handler) streamEvents(w http.ResponseWriter, r *http.Request) {
f, ok := w.(http.Flusher)
if !ok {
http.Error(w, "Streaming unsupported!", http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "text/event-stream")
w.Header().Set("Cache-Control", "no-cache")
w.Header().Set("Connection", "keep-alive")
w.Header().Set("Transfer-Encoding", "chunked")
ctx := r.Context()
messages, err := h.client.Events(ctx)
Loop:
for {
select {
case message, ok := <-messages:
if !ok {
break Loop
}
switch message.Action {
case "connect", "disconnect", "create", "destroy", "start", "stop":
log.Debugf("Triggering docker event: %v", message.Action)
_, err := fmt.Fprintf(w, "event: containers-changed\ndata: %s\n\n", message.Action)
if err != nil {
log.Debugf("Error while writing to event stream: %v", err)
break
}
f.Flush()
default:
log.Debugf("Ignoring docker event: %v", message.Action)
}
case <-ctx.Done():
break Loop
case <-err:
break Loop
}
}
}
func (h *handler) version(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, version)
}

View File

@@ -1,18 +1,18 @@
{
"name": "dozzle",
"version": "1.22.2",
"version": "1.24.1",
"description": "Realtime log viewer for docker containers. ",
"scripts": {
"prestart": "npm run clean",
"start": "DOCKER_API_VERSION=1.38 concurrently 'npm run watch-server' 'npm run watch-assets'",
"watch-assets": "npx parcel watch --no-source-maps --public-url '__BASE__' assets/index.html -d static",
"prestart": "yarn clean",
"start": "concurrently 'yarn watch-server' 'yarn watch-assets'",
"watch-assets": "webpack --mode=development --watch",
"watch-server": "reflex -c .reflex",
"prebuild": "npm run clean",
"build": "npx parcel build --no-source-maps --public-url '__BASE__' assets/index.html -d static",
"prebuild": "yarn clean",
"build": "yarn webpack --mode=production",
"clean": "rm -rf static/ a_main-packr.go",
"release": "release-it",
"test": "jest",
"integration": "docker-compose -f integration/docker-compose.test.yml run --rm integration"
"integration": "docker-compose -f integration/docker-compose.test.yml up --build --force-recreate integration"
},
"repository": {
"type": "git",
@@ -26,10 +26,9 @@
"homepage": "https://github.com/amir20/dozzle#readme",
"dependencies": {
"ansi-to-html": "^0.6.14",
"buefy": "^0.8.15",
"buefy": "^0.8.17",
"bulma": "^0.8.2",
"caniuse-lite": "^1.0.30001042",
"date-fns": "^2.12.0",
"date-fns": "^2.13.0",
"hotkeys-js": "^3.7.6",
"lodash.debounce": "^4.0.8",
"semver": "^7.3.2",
@@ -38,30 +37,45 @@
"vue": "^2.6.11",
"vue-meta": "^2.3.3",
"vue-router": "^3.1.6",
"vuex": "^3.1.3"
"vuex": "^3.3.0"
},
"devDependencies": {
"@babel/core": "^7.9.0",
"@babel/plugin-transform-runtime": "^7.9.0",
"@babel/core": "^7.9.6",
"@babel/plugin-transform-runtime": "^7.9.6",
"@vue/component-compiler-utils": "^3.1.2",
"@vue/test-utils": "^1.0.0-beta.33",
"@vue/test-utils": "^1.0.2",
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "^25.3.0",
"concurrently": "^5.1.0",
"babel-jest": "^26.0.1",
"babel-loader": "^8.1.0",
"babel-preset-env": "^1.7.0",
"caniuse-lite": "^1.0.30001054",
"concurrently": "^5.2.0",
"css-loader": "^3.5.3",
"eventsourcemock": "^2.0.0",
"html-webpack-plugin": "^4.3.0",
"husky": "^4.2.5",
"jest": "^25.3.0",
"jest": "^26.0.1",
"jest-serializer-vue": "^2.0.2",
"lint-staged": "^10.1.3",
"lint-staged": "^10.2.2",
"mini-css-extract-plugin": "^0.9.0",
"mockdate": "^2.0.5",
"node-fetch": "^2.6.0",
"parcel-bundler": "^1.12.4",
"prettier": "^2.0.4",
"release-it": "^13.5.2",
"sass": "^1.26.3",
"postcss-cssnext": "^3.1.0",
"postcss-import": "^12.0.1",
"postcss-loader": "^3.0.0",
"prettier": "^2.0.5",
"release-it": "^13.5.8",
"sass": "^1.26.5",
"sass-loader": "^8.0.2",
"vue-hot-reload-api": "^2.3.4",
"vue-jest": "^3.0.5",
"vue-template-compiler": "^2.6.11"
"vue-loader": "^15.9.2",
"vue-style-loader": "^4.1.2",
"vue-template-compiler": "^2.6.11",
"webpack": "^4.43.0",
"webpack-cli": "^3.3.11",
"webpack-manifest-plugin": "^2.2.0",
"webpack-pwa-manifest": "^4.2.0"
},
"husky": {
"hooks": {
@@ -73,40 +87,6 @@
"prettier --write"
]
},
"browserslist": [
">5%"
],
"alias": {
"vue": "./node_modules/vue/dist/vue.runtime.esm.js"
},
"jest": {
"clearMocks": true,
"moduleFileExtensions": [
"js",
"json",
"vue"
],
"coveragePathIgnorePatterns": [
"node_modules"
],
"testPathIgnorePatterns": [
"node_modules",
"<rootDir>/integration/"
],
"transformIgnorePatterns": [
"node_modules"
],
"watchPathIgnorePatterns": [
"<rootDir>/node_modules/"
],
"snapshotSerializers": [
"jest-serializer-vue"
],
"transform": {
".*\\.vue$": "vue-jest",
".+\\.js$": "babel-jest"
}
},
"release-it": {
"github": {
"release": true

191
routes.go Normal file
View File

@@ -0,0 +1,191 @@
package main
import (
"encoding/json"
"fmt"
"html/template"
"net/http"
"runtime"
"time"
"github.com/gorilla/mux"
log "github.com/sirupsen/logrus"
)
func createRoutes(base string, h *handler) *mux.Router {
r := mux.NewRouter()
r.Use(setCSPHeaders)
if base != "/" {
r.HandleFunc(base, http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
http.Redirect(w, req, base+"/", http.StatusMovedPermanently)
}))
}
s := r.PathPrefix(base).Subrouter()
s.HandleFunc("/api/containers.json", h.listContainers)
s.HandleFunc("/api/logs/stream", h.streamLogs)
s.HandleFunc("/api/logs", h.fetchLogsBetweenDates)
s.HandleFunc("/api/events/stream", h.streamEvents)
s.HandleFunc("/version", h.version)
s.PathPrefix("/").Handler(http.StripPrefix(base, http.HandlerFunc(h.index)))
return r
}
func setCSPHeaders(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Security-Policy", "default-src 'none'; script-src 'self'; style-src 'self' fonts.googleapis.com; img-src 'self'; manifest-src 'self'; font-src fonts.gstatic.com; connect-src 'self' api.github.com; require-trusted-types-for 'script'")
next.ServeHTTP(w, r)
})
}
func (h *handler) index(w http.ResponseWriter, req *http.Request) {
fileServer := http.FileServer(h.box)
if h.box.Has(req.URL.Path) && req.URL.Path != "" && req.URL.Path != "/" {
fileServer.ServeHTTP(w, req)
} else {
text, err := h.box.FindString("index.html")
if err != nil {
panic(err)
}
tmpl, err := template.New("index.html").Parse(text)
if err != nil {
panic(err)
}
path := ""
if base != "/" {
path = base
}
data := struct {
Base string
Version string
}{path, version}
err = tmpl.Execute(w, data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
}
func (h *handler) listContainers(w http.ResponseWriter, r *http.Request) {
containers, err := h.client.ListContainers(h.showAll)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
err = json.NewEncoder(w).Encode(containers)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
func (h *handler) fetchLogsBetweenDates(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain; charset=UTF-8")
from, _ := time.Parse(time.RFC3339, r.URL.Query().Get("from"))
to, _ := time.Parse(time.RFC3339, r.URL.Query().Get("to"))
id := r.URL.Query().Get("id")
messages, _ := h.client.ContainerLogsBetweenDates(r.Context(), id, from, to)
for _, m := range messages {
fmt.Fprintln(w, m)
}
}
func (h *handler) streamLogs(w http.ResponseWriter, r *http.Request) {
id := r.URL.Query().Get("id")
if id == "" {
http.Error(w, "id is required", http.StatusBadRequest)
return
}
f, ok := w.(http.Flusher)
if !ok {
http.Error(w, "Streaming unsupported!", http.StatusInternalServerError)
return
}
container, e := h.client.FindContainer(id)
if e != nil {
http.Error(w, e.Error(), http.StatusInternalServerError)
return
}
messages, err := h.client.ContainerLogs(r.Context(), container.ID, tailSize)
w.Header().Set("Content-Type", "text/event-stream")
w.Header().Set("Cache-Control", "no-cache")
w.Header().Set("Connection", "keep-alive")
w.Header().Set("X-Accel-Buffering", "no")
log.Debugf("Starting to stream logs for %s", id)
Loop:
for {
select {
case message, ok := <-messages:
if !ok {
break Loop
}
_, e := fmt.Fprintf(w, "data: %s\n\n", message)
if e != nil {
log.Debugf("Error while writing to log stream: %v", e)
break Loop
}
f.Flush()
case e := <-err:
log.Debugf("Error while reading from log stream: %v", e)
break Loop
}
}
log.WithField("NumGoroutine", runtime.NumGoroutine()).Debug("runtime stats")
}
func (h *handler) streamEvents(w http.ResponseWriter, r *http.Request) {
f, ok := w.(http.Flusher)
if !ok {
http.Error(w, "Streaming unsupported!", http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "text/event-stream")
w.Header().Set("Cache-Control", "no-cache")
w.Header().Set("Connection", "keep-alive")
w.Header().Set("X-Accel-Buffering", "no")
ctx := r.Context()
messages, err := h.client.Events(ctx)
Loop:
for {
select {
case message, ok := <-messages:
if !ok {
break Loop
}
switch message.Action {
case "connect", "disconnect", "create", "destroy", "start", "stop":
log.Debugf("Triggering docker event: %v", message.Action)
_, err := fmt.Fprintf(w, "event: containers-changed\ndata: %s\n\n", message.Action)
if err != nil {
log.Debugf("Error while writing to event stream: %v", err)
break
}
f.Flush()
default:
log.Debugf("Ignoring docker event: %v", message.Action)
}
case <-ctx.Done():
break Loop
case <-err:
break Loop
}
}
}
func (h *handler) version(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, version)
}

78
webpack.config.js Normal file
View File

@@ -0,0 +1,78 @@
const path = require("path");
const { VueLoaderPlugin } = require("vue-loader");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const WebpackPwaManifest = require("webpack-pwa-manifest");
module.exports = (env, argv) => ({
stats: { children: false, entrypoints: false, modules: false },
performance: {
maxAssetSize: 350000,
maxEntrypointSize: 570000,
},
devtool: argv.mode === "development" ? "inline-cheap-source-map" : false,
entry: ["./assets/main.js", "./assets/styles.scss"],
output: {
path: path.resolve(__dirname, "./static"),
filename: "[name].js",
publicPath: "{{ .Base }}",
},
module: {
rules: [
{
test: /\.vue$/,
loader: "vue-loader",
},
{
test: /\.(sass|scss|css)$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: "css-loader",
query: {
importLoaders: 1,
},
},
{
loader: "postcss-loader",
options: {
ident: "postcss",
plugins: (loader) => [
require("postcss-import")(),
require("postcss-cssnext")({
features: {
customProperties: { warnings: false },
},
}),
],
},
},
"sass-loader",
],
},
],
},
plugins: [
new VueLoaderPlugin(),
new MiniCssExtractPlugin(),
new HtmlWebpackPlugin({
hash: true,
template: "assets/index.ejs",
scriptLoading: "defer",
favicon: "assets/favicon.svg",
}),
new WebpackPwaManifest({
name: "Dozzle Log Viewer",
short_name: "Dozzle",
theme_color: "#222",
background_color: "#222",
display: "standalone",
}),
],
resolve: {
alias: {
vue$: "vue/dist/vue.runtime.esm.js",
},
extensions: ["*", ".js", ".vue", ".json"],
},
});

6843
yarn.lock

File diff suppressed because it is too large Load Diff