Compare commits

...

351 Commits

Author SHA1 Message Date
Amir Raminfar
33fb99ca37 Release 3.10.1 2021-12-01 12:15:25 -08:00
Amir Raminfar
e126d6e825 Updates modules 2021-12-01 09:45:21 -08:00
Amir Raminfar
ba1ccc92a8 Cleans up code 2021-12-01 09:44:49 -08:00
Amir Raminfar
5cf74e3f95 Add reactiviy to fix some regression issues. See #1613 2021-11-30 19:56:29 -08:00
Amir Raminfar
2246b58aa9 Adds more logging for fetching logs between dates 2021-11-30 18:48:32 -08:00
kodiakhq[bot]
f0bd0f2c9b Merge pull request #1614 from amir20/dependabot/github_actions/actions/setup-node-2.5.0
Bump actions/setup-node from 2.4.1 to 2.5.0
2021-11-30 09:14:49 +00:00
dependabot[bot]
e6781f06ae Bump actions/setup-node from 2.4.1 to 2.5.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 2.4.1 to 2.5.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v2.4.1...v2.5.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-30 09:09:39 +00:00
Amir Raminfar
ef7ac5f2f6 Fixes release command 2021-11-29 10:53:37 -08:00
Amir Raminfar
5dc4d4c4d1 Release 3.10.0 2021-11-29 10:22:44 -08:00
Amir Raminfar
87d80d8284 Updates modules 2021-11-29 10:19:10 -08:00
Amir Raminfar
e216f54d6e fixes biuld 2021-11-27 15:48:59 -08:00
Amir Raminfar
cfa9c702d0 Revert "Updates node modules"
This reverts commit 05ae16df8b.
2021-11-27 15:46:31 -08:00
Amir Raminfar
15fa6ae8b0 Minor clean up 2021-11-27 14:26:30 -08:00
Amir Raminfar
05ae16df8b Updates node modules 2021-11-27 14:14:26 -08:00
Amir Raminfar
34232ef956 Fixes file in gzip when downloading 2021-11-27 13:40:49 -08:00
Amir Raminfar
da35a13d04 Updates snapshots and fixes bugs 2021-11-22 14:22:04 -08:00
Amir Raminfar
cdca0efd05 Adds more tests for routes 2021-11-21 19:56:10 -08:00
Amir Raminfar
320bbfe8b2 Adds more tests 2021-11-21 19:25:44 -08:00
Amir Raminfar
bf42fd4fea Adds more tests 2021-11-21 18:33:58 -08:00
Amir Raminfar
958a1463e6 Updats node packages 2021-11-21 09:33:19 -08:00
Amir Raminfar
4138630fc4 Updates packages 2021-11-21 09:08:41 -08:00
Amir Raminfar
91545f932c Fixes icon 2021-11-20 20:00:35 -08:00
Amir Raminfar
36cc93dacc Fixes types for stat 2021-11-20 19:58:49 -08:00
Amir Raminfar
43e777687d Adds container stats 2021-11-20 19:51:44 -08:00
Amir Raminfar
037a76f5c7 Fixes toolbar 2021-11-20 19:32:07 -08:00
Coteh
41c54a02eb Move actions toolbar to side menu 2021-11-20 15:23:09 -08:00
Amir Raminfar
7901c21843 Pinia (#1606)
* Migrates to pinia

* Does more pinia migration

* Fixes types

* Move pinia

* Adds search cleans up pinia

* Removes unused files

* Removes vuex

* More clean up

* Makes js tests pass

* Fixes bugs and removing active container
2021-11-20 15:22:13 -08:00
Amir Raminfar
257110bc64 Moves default dev port to 3100. See #1601 2021-11-19 09:55:44 -08:00
Amir Raminfar
e2072d35c8 Settings to useStorage (#1602)
* Uses storage for settings

* Cleans settings

* Fixes tests for storage

* Removes store.js

* Uses ts

* Fixes tests

* Removes autoprefixer
2021-11-18 14:06:54 -08:00
kodiakhq[bot]
4a303d3ffa Merge pull request #1600 from amir20/dependabot/go_modules/github.com/docker/docker-20.10.11incompatible
Bump github.com/docker/docker from 20.10.10+incompatible to 20.10.11+incompatible
2021-11-18 09:40:47 +00:00
dependabot[bot]
57d8a90000 Bump github.com/docker/docker
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 20.10.10+incompatible to 20.10.11+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Changelog](https://github.com/moby/moby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/docker/docker/compare/v20.10.10...v20.10.11)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-18 09:33:45 +00:00
Amir Raminfar
0d54a265d9 Updats modules 2021-11-16 14:33:19 -08:00
Amir Raminfar
412a10256d Vue3 (#1594)
* WIP vue3

* WIP vue3

* WIP vue3

* Migrates to vitejs

* Fixes js tests and removes not needed modules

* Fixes unmount

* Updates to use css instead for space

* Fixes tests and rebases one more time

* Uses orgua

* Fixes migrations bugs with oruga and fixes scroll

* Fixes v-deep

* Fixes icons to prod

* Fixes icons to prod

* Adds favicon back

* Transitions some to composition api

* Updates another component to comp api

* Cleans defineProps

* Updates log messages

* Moves more to compose api

* Cleans up styles and rewrites event source

* Tries to fix DOMPurify

* Removes postcss

* WIP typescript

* Improves importing

* Converts all to ts

* Converts main to ts

* Makes changes for tsconfig

* Moves more to ts

* Adds typing to store

* More typing

* Updates to ts

* Updates the rest to ts

* Fixes computes

* Fixes unmount

* Adds cypress with custom base fixed

* Fixes jest tests

* Fixes golang tests

* Adds gitignore for cypress

* Removes int in favor of e2e with cypress

* Tries to fix int tests again

* Adds title

* Updates e2e tests

* Uses vue for isMobile

* Removes app spec

* Cleans up docker

* Adds drop down for settings

* Fixes bug with restart

* Fixes scroll up bug

* Adds tests for light mode
2021-11-16 10:55:44 -08:00
Amir Raminfar
215ea12e80 Fixes release 2021-11-09 14:53:57 -08:00
Amir Raminfar
b72e208f27 Release 3.9.0 2021-11-09 14:15:43 -08:00
Amir Raminfar
0714809fd9 Renames job 2021-11-09 14:07:50 -08:00
Amir Raminfar
17d43453cc Renames dev job 2021-11-09 14:05:07 -08:00
Amir Raminfar
ce120ac194 Adds pr pushes 2021-11-08 11:38:06 -08:00
Amir Raminfar
f19bbb8d38 Fixes int tests 2021-11-07 14:42:55 -08:00
Amir Raminfar
4f7cbb7cdf Fixes test cases 2021-11-07 14:39:27 -08:00
Coteh
3672a4729d Use .icon class instead of vertically aligning through CSS 2021-11-07 15:46:32 -05:00
Coteh
b0d1cd257c Add autoInstall setting for unplugin icons 2021-11-07 15:35:54 -05:00
Coteh
be23ef93eb Update pnpm-lock.yaml 2021-11-07 15:02:27 -05:00
Coteh
07d3176178 Switch to unplugin-icons for icons
The following icons are used:
Material Design Light
- Chevron Left (Hide Sidebar)
- Chevron Right (Show Sidebar)
- Chevron Double Down (Page Down)
- Magnify (Search)
- Cog (Settings)

Octicon
- Trash 24 (Clear Logs)
- Download 24 (Download Logs)
- Container 24 (Container Listing)

CoreUI Free
- Columns (Pin as Column)
2021-11-07 15:02:27 -05:00
Amir Raminfar
b01020dc0e Removes yarn 2021-11-07 07:20:56 -08:00
Amir Raminfar
4e5fedb18f Fixes pnpm 2021-11-07 07:03:46 -08:00
Amir Raminfar
dcd1fcfcde Updates gh actions 2021-11-07 07:02:09 -08:00
Amir Raminfar
fb777d4dbf Fixes yarn 2021-11-05 19:09:39 -07:00
Amir Raminfar
7b1f4f7f34 Remoges unused import 2021-11-05 19:09:39 -07:00
kodiakhq[bot]
d88eb339b4 Merge pull request #1591 from amir20/dependabot/docker/golang-1.17.3-alpine
Bump golang from 1.17.2-alpine to 1.17.3-alpine
2021-11-05 09:16:20 +00:00
dependabot[bot]
a84ef7be66 Bump golang from 1.17.2-alpine to 1.17.3-alpine
Bumps golang from 1.17.2-alpine to 1.17.3-alpine.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-05 09:11:37 +00:00
Amir Raminfar
fc798985fd Fixes follow ups #1584 2021-11-04 19:03:33 -07:00
Amir Raminfar
df176c39f5 Updates go modules 2021-11-04 18:54:42 -07:00
James Cote
49b39fb3af Add clear logs functionality (#1584)
* Add clear logs functionality

Other Changes:
- Add actions toolbar for actions pertaining to container logs
- Move Download button to actions toolbar, remove text and margin to match clear logs button
- Move search box below actions toolbar
- Turn off pointer events for scroll progress component so that Download button can be clicked
- Adjust spacing of container bar to accomodate the new actions toolbar

* Change actions toolbar into a floating menu

Other Changes:
- Move actions toolbar into its own component
- Move clear hotkey from LogEventSource to LogActionsToolbar, where the button is
- Move search back to where it was before
- Add tooltip component from buefy to annotate action buttons
- Add CSS variable for action toolbar background color, changes based on theme
2021-11-04 18:48:51 -07:00
Amir Raminfar
d9e8cca867 Fixes #1589 2021-11-04 15:52:53 -07:00
kodiakhq[bot]
bdead5c55d Merge pull request #1590 from amir20/dependabot/npm_and_yarn/integration/puppeteer-11.0.0
Bump puppeteer from 10.4.0 to 11.0.0 in /integration
2021-11-04 09:08:44 +00:00
dependabot[bot]
05b0525a4b Bump puppeteer from 10.4.0 to 11.0.0 in /integration
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 10.4.0 to 11.0.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/puppeteer/puppeteer/compare/v10.4.0...v11.0.0)

---
updated-dependencies:
- dependency-name: puppeteer
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-04 09:04:10 +00:00
kodiakhq[bot]
fa502cdda3 Merge pull request #1588 from amir20/dependabot/github_actions/actions/checkout-2.4.0
Bump actions/checkout from 2.3.5 to 2.4.0
2021-11-03 09:12:58 +00:00
dependabot[bot]
dee345b618 Bump actions/checkout from 2.3.5 to 2.4.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 2.3.5 to 2.4.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2.3.5...v2.4.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-03 09:08:25 +00:00
Amir Raminfar
d55f78829e Moves stats to narrow and possibly improves #1582 2021-11-01 14:42:00 -07:00
Amir Raminfar
8f4264e26a Update README.md 2021-10-29 15:07:03 -07:00
Amir Raminfar
c79ce7237e Release 3.8.5 2021-10-29 14:47:56 -07:00
Amir Raminfar
eeec34b018 Removes @sha... 2021-10-29 14:26:50 -07:00
Amir Raminfar
69acb24aee Fixes prod deps 2021-10-29 14:26:27 -07:00
kodiakhq[bot]
61afc74215 Merge pull request #1580 from amir20/dependabot/docker/node-17-alpine
Bump node from 16-alpine to 17-alpine
2021-10-29 18:13:43 +00:00
dependabot[bot]
396f4be965 Bump node from 16-alpine to 17-alpine
Bumps node from 16-alpine to 17-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-29 18:09:33 +00:00
Amir Raminfar
0f7541dfab Release 3.8.4 2021-10-29 11:09:07 -07:00
Amir Raminfar
4031fb4f0e Adds python for js builds 2021-10-29 11:08:55 -07:00
Amir Raminfar
494982fb77 Release 3.8.3 2021-10-29 10:10:46 -07:00
Amir Raminfar
aa1911cfcd Adds image tag and fixes #1582 2021-10-29 10:09:37 -07:00
kodiakhq[bot]
92cd724b31 Merge pull request #1583 from amir20/pnpm
Moves everything to pnpm
2021-10-29 16:56:13 +00:00
Amir Raminfar
17a0e3a62d Fixes and rebases 2021-10-29 09:33:59 -07:00
kodiakhq[bot]
6b3f5822a5 Merge pull request #1581 from amir20/dependabot/npm_and_yarn/autoprefixer-10.4.0
Bump autoprefixer from 10.3.7 to 10.4.0
2021-10-29 09:08:41 +00:00
dependabot[bot]
23b722bac1 Bump autoprefixer from 10.3.7 to 10.4.0
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.3.7 to 10.4.0.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.3.7...10.4.0)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-29 09:03:21 +00:00
kodiakhq[bot]
b95494051d Merge pull request #1579 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001272
Bump caniuse-lite from 1.0.30001271 to 1.0.30001272
2021-10-28 09:08:41 +00:00
kodiakhq[bot]
2e9b673e27 Merge pull request #1578 from amir20/dependabot/npm_and_yarn/sass-loader-12.3.0
Bump sass-loader from 12.2.0 to 12.3.0
2021-10-28 09:08:16 +00:00
kodiakhq[bot]
f6cdf9b691 Merge pull request #1577 from amir20/dependabot/npm_and_yarn/webpack-dev-server-4.4.0
Bump webpack-dev-server from 4.3.1 to 4.4.0
2021-10-28 09:08:06 +00:00
dependabot[bot]
520a015c09 Bump caniuse-lite from 1.0.30001271 to 1.0.30001272
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001271 to 1.0.30001272.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/compare/1.0.30001271...1.0.30001272)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-28 09:03:37 +00:00
dependabot[bot]
06cc3693c6 Bump sass-loader from 12.2.0 to 12.3.0
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 12.2.0 to 12.3.0.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v12.2.0...v12.3.0)

---
updated-dependencies:
- dependency-name: sass-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-28 09:03:26 +00:00
dependabot[bot]
5dc4fb3b78 Bump webpack-dev-server from 4.3.1 to 4.4.0
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.3.1 to 4.4.0.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.3.1...v4.4.0)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-28 09:03:18 +00:00
kodiakhq[bot]
310695a981 Merge pull request #1576 from amir20/dependabot/npm_and_yarn/vue-router-3.5.3
Bump vue-router from 3.5.2 to 3.5.3
2021-10-27 09:08:27 +00:00
kodiakhq[bot]
dc9c10cc53 Merge pull request #1575 from amir20/dependabot/npm_and_yarn/lint-staged-11.2.6
Bump lint-staged from 11.2.4 to 11.2.6
2021-10-27 09:08:18 +00:00
kodiakhq[bot]
bf0e0e2429 Merge pull request #1574 from amir20/dependabot/npm_and_yarn/sass-1.43.4
Bump sass from 1.43.3 to 1.43.4
2021-10-27 09:08:08 +00:00
kodiakhq[bot]
86a6ff1f66 Merge pull request #1573 from amir20/dependabot/npm_and_yarn/css-loader-6.5.0
Bump css-loader from 6.4.0 to 6.5.0
2021-10-27 09:07:58 +00:00
dependabot[bot]
6a756f62e4 Bump vue-router from 3.5.2 to 3.5.3
Bumps [vue-router](https://github.com/vuejs/vue-router) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/vuejs/vue-router/releases)
- [Changelog](https://github.com/vuejs/vue-router/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-router/compare/v3.5.2...v3.5.3)

---
updated-dependencies:
- dependency-name: vue-router
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-27 09:03:54 +00:00
dependabot[bot]
3f11a525b8 Bump lint-staged from 11.2.4 to 11.2.6
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 11.2.4 to 11.2.6.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v11.2.4...v11.2.6)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-27 09:03:40 +00:00
dependabot[bot]
cfe1f45cd2 Bump sass from 1.43.3 to 1.43.4
Bumps [sass](https://github.com/sass/dart-sass) from 1.43.3 to 1.43.4.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.43.3...1.43.4)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-27 09:03:27 +00:00
dependabot[bot]
497da82485 Bump css-loader from 6.4.0 to 6.5.0
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.4.0 to 6.5.0.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v6.4.0...v6.5.0)

---
updated-dependencies:
- dependency-name: css-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-27 09:03:15 +00:00
kodiakhq[bot]
95bc2b475e Merge pull request #1572 from amir20/dependabot/go_modules/github.com/docker/docker-20.10.10incompatible
Bump github.com/docker/docker from 20.10.9+incompatible to 20.10.10+incompatible
2021-10-26 09:32:19 +00:00
dependabot[bot]
e603c709fc Bump github.com/docker/docker
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 20.10.9+incompatible to 20.10.10+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Changelog](https://github.com/moby/moby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/docker/docker/compare/v20.10.9...v20.10.10)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-26 09:27:42 +00:00
kodiakhq[bot]
f958af50fe Merge pull request #1571 from amir20/dependabot/npm_and_yarn/webpack-5.60.0
Bump webpack from 5.59.1 to 5.60.0
2021-10-26 09:08:12 +00:00
kodiakhq[bot]
e8761fd2fd Merge pull request #1570 from amir20/dependabot/npm_and_yarn/vue/component-compiler-utils-3.3.0
Bump @vue/component-compiler-utils from 3.2.2 to 3.3.0
2021-10-26 09:08:02 +00:00
kodiakhq[bot]
9a9aa5864e Merge pull request #1569 from amir20/dependabot/npm_and_yarn/html-webpack-plugin-5.5.0
Bump html-webpack-plugin from 5.4.0 to 5.5.0
2021-10-26 09:07:05 +00:00
dependabot[bot]
453b05f6c9 Bump webpack from 5.59.1 to 5.60.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.59.1 to 5.60.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.59.1...v5.60.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-26 09:03:13 +00:00
dependabot[bot]
b056fa8f88 Bump @vue/component-compiler-utils from 3.2.2 to 3.3.0
Bumps [@vue/component-compiler-utils](https://github.com/vuejs/component-compiler-utils) from 3.2.2 to 3.3.0.
- [Release notes](https://github.com/vuejs/component-compiler-utils/releases)
- [Changelog](https://github.com/vuejs/component-compiler-utils/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/component-compiler-utils/compare/v3.2.2...v3.3.0)

---
updated-dependencies:
- dependency-name: "@vue/component-compiler-utils"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-26 09:02:54 +00:00
dependabot[bot]
d3313ede2c Bump html-webpack-plugin from 5.4.0 to 5.5.0
Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 5.4.0 to 5.5.0.
- [Release notes](https://github.com/jantimon/html-webpack-plugin/releases)
- [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v5.4.0...v5.5.0)

---
updated-dependencies:
- dependency-name: html-webpack-plugin
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-26 09:02:27 +00:00
kodiakhq[bot]
47a2c71f18 Merge pull request #1568 from amir20/dependabot/npm_and_yarn/lint-staged-11.2.4
Bump lint-staged from 11.2.3 to 11.2.4
2021-10-25 09:07:33 +00:00
dependabot[bot]
105e6424f9 Bump lint-staged from 11.2.3 to 11.2.4
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 11.2.3 to 11.2.4.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v11.2.3...v11.2.4)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-25 09:02:29 +00:00
kodiakhq[bot]
0feab4cdf8 Merge pull request #1567 from amir20/dependabot/npm_and_yarn/sass-1.43.3
Bump sass from 1.43.2 to 1.43.3
2021-10-22 09:09:20 +00:00
kodiakhq[bot]
4657817922 Merge pull request #1566 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001271
Bump caniuse-lite from 1.0.30001270 to 1.0.30001271
2021-10-22 09:09:00 +00:00
kodiakhq[bot]
279b5e21e0 Merge pull request #1565 from amir20/dependabot/npm_and_yarn/mini-css-extract-plugin-2.4.3
Bump mini-css-extract-plugin from 2.4.2 to 2.4.3
2021-10-22 09:08:24 +00:00
kodiakhq[bot]
472344bcf4 Merge pull request #1564 from amir20/dependabot/npm_and_yarn/postcss-8.3.11
Bump postcss from 8.3.10 to 8.3.11
2021-10-22 09:08:02 +00:00
dependabot[bot]
a60a5432e8 Bump sass from 1.43.2 to 1.43.3
Bumps [sass](https://github.com/sass/dart-sass) from 1.43.2 to 1.43.3.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.43.2...1.43.3)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-22 09:03:43 +00:00
dependabot[bot]
60975b51c7 Bump caniuse-lite from 1.0.30001270 to 1.0.30001271
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001270 to 1.0.30001271.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/compare/1.0.30001270...1.0.30001271)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-22 09:03:33 +00:00
dependabot[bot]
240814c53a Bump mini-css-extract-plugin from 2.4.2 to 2.4.3
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 2.4.2 to 2.4.3.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v2.4.2...v2.4.3)

---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-22 09:03:09 +00:00
dependabot[bot]
97c7525d7e Bump postcss from 8.3.10 to 8.3.11
Bumps [postcss](https://github.com/postcss/postcss) from 8.3.10 to 8.3.11.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.3.10...8.3.11)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-22 09:02:58 +00:00
kodiakhq[bot]
d2a6631dec Merge pull request #1563 from amir20/dependabot/npm_and_yarn/husky-7.0.4
Bump husky from 7.0.2 to 7.0.4
2021-10-21 09:09:24 +00:00
kodiakhq[bot]
69188fa8b6 Merge pull request #1562 from amir20/dependabot/npm_and_yarn/postcss-8.3.10
Bump postcss from 8.3.9 to 8.3.10
2021-10-21 09:09:09 +00:00
kodiakhq[bot]
182e24fbc8 Merge pull request #1561 from amir20/dependabot/npm_and_yarn/webpack-5.59.1
Bump webpack from 5.59.0 to 5.59.1
2021-10-21 09:08:56 +00:00
kodiakhq[bot]
f3ec0033aa Merge pull request #1560 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001270
Bump caniuse-lite from 1.0.30001269 to 1.0.30001270
2021-10-21 09:08:41 +00:00
dependabot[bot]
91a3653468 Bump husky from 7.0.2 to 7.0.4
Bumps [husky](https://github.com/typicode/husky) from 7.0.2 to 7.0.4.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v7.0.2...v7.0.4)

---
updated-dependencies:
- dependency-name: husky
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-21 09:03:37 +00:00
dependabot[bot]
5bbf0bccdb Bump postcss from 8.3.9 to 8.3.10
Bumps [postcss](https://github.com/postcss/postcss) from 8.3.9 to 8.3.10.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.3.9...8.3.10)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-21 09:03:27 +00:00
dependabot[bot]
f3c77a8081 Bump webpack from 5.59.0 to 5.59.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.59.0 to 5.59.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.59.0...v5.59.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-21 09:03:11 +00:00
dependabot[bot]
a37eefe0ad Bump caniuse-lite from 1.0.30001269 to 1.0.30001270
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001269 to 1.0.30001270.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/compare/1.0.30001269...1.0.30001270)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-21 09:02:59 +00:00
kodiakhq[bot]
2c0dd61b79 Merge pull request #1558 from amir20/dependabot/npm_and_yarn/webpack-5.59.0
Bump webpack from 5.58.2 to 5.59.0
2021-10-20 09:06:51 +00:00
dependabot[bot]
cffb2f6100 Bump webpack from 5.58.2 to 5.59.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.58.2 to 5.59.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.58.2...v5.59.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-20 09:02:24 +00:00
kodiakhq[bot]
cf1d42ce89 Merge pull request #1556 from amir20/dependabot/npm_and_yarn/jest-27.3.1
Bump jest from 27.3.0 to 27.3.1
2021-10-19 09:15:30 +00:00
dependabot[bot]
5d9c17a83b Bump jest from 27.3.0 to 27.3.1
Bumps [jest](https://github.com/facebook/jest) from 27.3.0 to 27.3.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.3.0...v27.3.1)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-19 09:11:10 +00:00
kodiakhq[bot]
7406db0999 Merge pull request #1557 from amir20/dependabot/npm_and_yarn/integration/jest-27.3.1
Bump jest from 27.3.0 to 27.3.1 in /integration
2021-10-19 09:08:34 +00:00
kodiakhq[bot]
ef6bd38fe2 Merge pull request #1555 from amir20/dependabot/npm_and_yarn/babel-jest-27.3.1
Bump babel-jest from 27.3.0 to 27.3.1
2021-10-19 09:07:34 +00:00
kodiakhq[bot]
689628d64f Merge pull request #1554 from amir20/dependabot/npm_and_yarn/webpack-cli-4.9.1
Bump webpack-cli from 4.9.0 to 4.9.1
2021-10-19 09:07:24 +00:00
dependabot[bot]
08b991a7b1 Bump jest from 27.3.0 to 27.3.1 in /integration
Bumps [jest](https://github.com/facebook/jest) from 27.3.0 to 27.3.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.3.0...v27.3.1)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-19 09:03:21 +00:00
dependabot[bot]
ef25d470f1 Bump babel-jest from 27.3.0 to 27.3.1
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.3.0 to 27.3.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.3.1/packages/babel-jest)

---
updated-dependencies:
- dependency-name: babel-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-19 09:02:19 +00:00
dependabot[bot]
41005f907e Bump webpack-cli from 4.9.0 to 4.9.1
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 4.9.0 to 4.9.1.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@4.9.0...webpack-cli@4.9.1)

---
updated-dependencies:
- dependency-name: webpack-cli
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-19 09:02:04 +00:00
Amir Raminfar
7b6c77644c Fixes move cache 2021-10-18 10:23:37 -07:00
Amir Raminfar
cd18f527bf Updates cache 2021-10-18 10:17:58 -07:00
Amir Raminfar
13c8d9665a Updates to docker/meta 2021-10-18 10:11:43 -07:00
kodiakhq[bot]
14d4b03bdd Merge pull request #1553 from amir20/dependabot/github_actions/actions/checkout-2.3.5
Bump actions/checkout from 2.3.4 to 2.3.5
2021-10-18 09:16:24 +00:00
kodiakhq[bot]
35cee8e686 Merge pull request #1550 from amir20/dependabot/npm_and_yarn/babel-jest-27.3.0
Bump babel-jest from 27.2.5 to 27.3.0
2021-10-18 09:16:02 +00:00
dependabot[bot]
e55335440f Bump actions/checkout from 2.3.4 to 2.3.5
Bumps [actions/checkout](https://github.com/actions/checkout) from 2.3.4 to 2.3.5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2.3.4...v2.3.5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-18 09:11:09 +00:00
dependabot[bot]
fefc0cca32 Bump babel-jest from 27.2.5 to 27.3.0
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.2.5 to 27.3.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.3.0/packages/babel-jest)

---
updated-dependencies:
- dependency-name: babel-jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-18 09:11:02 +00:00
kodiakhq[bot]
60378e7482 Merge pull request #1552 from amir20/dependabot/npm_and_yarn/integration/jest-27.3.0
Bump jest from 27.2.5 to 27.3.0 in /integration
2021-10-18 09:08:45 +00:00
kodiakhq[bot]
67e17e1953 Merge pull request #1551 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001269
Bump caniuse-lite from 1.0.30001267 to 1.0.30001269
2021-10-18 09:08:34 +00:00
kodiakhq[bot]
7c099b8ef3 Merge pull request #1549 from amir20/dependabot/npm_and_yarn/jest-27.3.0
Bump jest from 27.2.5 to 27.3.0
2021-10-18 09:08:14 +00:00
kodiakhq[bot]
f7d5af24bc Merge pull request #1548 from amir20/dependabot/npm_and_yarn/html-webpack-plugin-5.4.0
Bump html-webpack-plugin from 5.3.2 to 5.4.0
2021-10-18 09:06:48 +00:00
dependabot[bot]
0c63aae600 Bump jest from 27.2.5 to 27.3.0 in /integration
Bumps [jest](https://github.com/facebook/jest) from 27.2.5 to 27.3.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.5...v27.3.0)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-18 09:04:20 +00:00
dependabot[bot]
e821251c4c Bump caniuse-lite from 1.0.30001267 to 1.0.30001269
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001267 to 1.0.30001269.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/compare/1.0.30001267...1.0.30001269)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-18 09:03:08 +00:00
dependabot[bot]
4e4f445000 Bump jest from 27.2.5 to 27.3.0
Bumps [jest](https://github.com/facebook/jest) from 27.2.5 to 27.3.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.5...v27.3.0)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-18 09:02:47 +00:00
dependabot[bot]
9c0d14e13a Bump html-webpack-plugin from 5.3.2 to 5.4.0
Bumps [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) from 5.3.2 to 5.4.0.
- [Release notes](https://github.com/jantimon/html-webpack-plugin/releases)
- [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v5.3.2...v5.4.0)

---
updated-dependencies:
- dependency-name: html-webpack-plugin
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-18 09:02:30 +00:00
Amir Raminfar
d8e48c0784 Adds no-transform cache control headers 2021-10-15 11:52:41 -07:00
Amir Raminfar
bef1fdce1b Removes deprecated option for inline 2021-10-15 10:49:42 -07:00
Amir Raminfar
d867b96e98 Release 3.8.2 2021-10-15 10:27:40 -07:00
kodiakhq[bot]
d1c9a71d57 Merge pull request #1546 from amir20/dependabot/npm_and_yarn/sass-1.43.2
Bump sass from 1.42.1 to 1.43.2
2021-10-14 09:09:09 +00:00
kodiakhq[bot]
424c052123 Merge pull request #1545 from amir20/dependabot/npm_and_yarn/postcss-loader-6.2.0
Bump postcss-loader from 6.1.1 to 6.2.0
2021-10-14 09:08:56 +00:00
kodiakhq[bot]
a8b3ee33b2 Merge pull request #1544 from amir20/dependabot/npm_and_yarn/webpack-5.58.2
Bump webpack from 5.58.1 to 5.58.2
2021-10-14 09:08:45 +00:00
kodiakhq[bot]
1ab4ced332 Merge pull request #1543 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001267
Bump caniuse-lite from 1.0.30001265 to 1.0.30001267
2021-10-14 09:07:35 +00:00
dependabot[bot]
a29cc15553 Bump sass from 1.42.1 to 1.43.2
Bumps [sass](https://github.com/sass/dart-sass) from 1.42.1 to 1.43.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.42.1...1.43.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-14 09:03:22 +00:00
dependabot[bot]
edb2703c81 Bump postcss-loader from 6.1.1 to 6.2.0
Bumps [postcss-loader](https://github.com/webpack-contrib/postcss-loader) from 6.1.1 to 6.2.0.
- [Release notes](https://github.com/webpack-contrib/postcss-loader/releases)
- [Changelog](https://github.com/webpack-contrib/postcss-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/postcss-loader/compare/v6.1.1...v6.2.0)

---
updated-dependencies:
- dependency-name: postcss-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-14 09:03:10 +00:00
dependabot[bot]
c6005fa04c Bump webpack from 5.58.1 to 5.58.2
Bumps [webpack](https://github.com/webpack/webpack) from 5.58.1 to 5.58.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.58.1...v5.58.2)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-14 09:02:57 +00:00
dependabot[bot]
dd7ea672d5 Bump caniuse-lite from 1.0.30001265 to 1.0.30001267
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001265 to 1.0.30001267.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/compare/1.0.30001265...1.0.30001267)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-14 09:02:38 +00:00
kodiakhq[bot]
033fb58adc Merge pull request #1542 from amir20/dependabot/npm_and_yarn/sass-loader-12.2.0
Bump sass-loader from 12.1.0 to 12.2.0
2021-10-13 09:06:48 +00:00
dependabot[bot]
ebd18d9303 Bump sass-loader from 12.1.0 to 12.2.0
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 12.1.0 to 12.2.0.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v12.1.0...v12.2.0)

---
updated-dependencies:
- dependency-name: sass-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-13 09:02:27 +00:00
kodiakhq[bot]
0db49da124 Merge pull request #1539 from amir20/dependabot/npm_and_yarn/jest-27.2.5
Bump jest from 27.2.4 to 27.2.5
2021-10-11 09:18:32 +00:00
dependabot[bot]
c8b228cd52 Bump jest from 27.2.4 to 27.2.5
Bumps [jest](https://github.com/facebook/jest) from 27.2.4 to 27.2.5.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.4...v27.2.5)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 09:13:55 +00:00
kodiakhq[bot]
aede88c5c1 Merge pull request #1541 from amir20/dependabot/npm_and_yarn/integration/jest-27.2.5
Bump jest from 27.2.4 to 27.2.5 in /integration
2021-10-11 09:08:45 +00:00
kodiakhq[bot]
ecef6a2bab Merge pull request #1540 from amir20/dependabot/npm_and_yarn/css-loader-6.4.0
Bump css-loader from 6.3.0 to 6.4.0
2021-10-11 09:08:25 +00:00
kodiakhq[bot]
225ad2a7be Merge pull request #1538 from amir20/dependabot/npm_and_yarn/babel-jest-27.2.5
Bump babel-jest from 27.2.4 to 27.2.5
2021-10-11 09:08:12 +00:00
kodiakhq[bot]
9d5869a8f2 Merge pull request #1537 from amir20/dependabot/npm_and_yarn/lint-staged-11.2.3
Bump lint-staged from 11.2.0 to 11.2.3
2021-10-11 09:07:31 +00:00
kodiakhq[bot]
aa2268c970 Merge pull request #1536 from amir20/dependabot/npm_and_yarn/webpack-5.58.1
Bump webpack from 5.58.0 to 5.58.1
2021-10-11 09:07:13 +00:00
dependabot[bot]
f7f0aac880 Bump jest from 27.2.4 to 27.2.5 in /integration
Bumps [jest](https://github.com/facebook/jest) from 27.2.4 to 27.2.5.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.4...v27.2.5)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 09:03:51 +00:00
dependabot[bot]
b6acd150b2 Bump css-loader from 6.3.0 to 6.4.0
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.3.0 to 6.4.0.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v6.3.0...v6.4.0)

---
updated-dependencies:
- dependency-name: css-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 09:03:27 +00:00
dependabot[bot]
af05eb6fe3 Bump babel-jest from 27.2.4 to 27.2.5
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.2.4 to 27.2.5.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.2.5/packages/babel-jest)

---
updated-dependencies:
- dependency-name: babel-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 09:02:57 +00:00
dependabot[bot]
f9f4ee601e Bump lint-staged from 11.2.0 to 11.2.3
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 11.2.0 to 11.2.3.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v11.2.0...v11.2.3)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 09:02:43 +00:00
dependabot[bot]
2d9ccab8f5 Bump webpack from 5.58.0 to 5.58.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.58.0 to 5.58.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.58.0...v5.58.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-11 09:02:29 +00:00
kodiakhq[bot]
a286b0f895 Merge pull request #1535 from amir20/dependabot/docker/golang-1.17.2-alpine
Bump golang from 1.17.1-alpine to 1.17.2-alpine
2021-10-08 09:14:04 +00:00
dependabot[bot]
e2a5812ffa Bump golang from 1.17.1-alpine to 1.17.2-alpine
Bumps golang from 1.17.1-alpine to 1.17.2-alpine.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-08 09:09:59 +00:00
kodiakhq[bot]
e8b33d351b Merge pull request #1534 from amir20/dependabot/npm_and_yarn/mini-css-extract-plugin-2.4.2
Bump mini-css-extract-plugin from 2.4.1 to 2.4.2
2021-10-08 09:08:03 +00:00
kodiakhq[bot]
3dea6c0971 Merge pull request #1533 from amir20/dependabot/npm_and_yarn/webpack-5.58.0
Bump webpack from 5.57.1 to 5.58.0
2021-10-08 09:07:55 +00:00
dependabot[bot]
015e43b700 Bump mini-css-extract-plugin from 2.4.1 to 2.4.2
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 2.4.1 to 2.4.2.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v2.4.1...v2.4.2)

---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-08 09:02:52 +00:00
dependabot[bot]
f5a595f899 Bump webpack from 5.57.1 to 5.58.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.57.1 to 5.58.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.57.1...v5.58.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-08 09:02:36 +00:00
James Cote
06a4244126 Change page scroll icon to chevrons-down (#1529) 2021-10-07 15:07:55 -07:00
kodiakhq[bot]
8b190a3c02 Merge pull request #1532 from amir20/dependabot/npm_and_yarn/babel/core-7.15.8
Bump @babel/core from 7.15.5 to 7.15.8
2021-10-07 09:14:32 +00:00
dependabot[bot]
8c47496947 Bump @babel/core from 7.15.5 to 7.15.8
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.15.5 to 7.15.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.8/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-07 09:09:17 +00:00
kodiakhq[bot]
675c70291c Merge pull request #1531 from amir20/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.15.8
Bump @babel/plugin-transform-runtime from 7.15.0 to 7.15.8
2021-10-07 09:07:35 +00:00
kodiakhq[bot]
c87feaa4cb Merge pull request #1530 from amir20/dependabot/npm_and_yarn/webpack-cli-4.9.0
Bump webpack-cli from 4.8.0 to 4.9.0
2021-10-07 09:07:03 +00:00
dependabot[bot]
d8131d5e9e Bump @babel/plugin-transform-runtime from 7.15.0 to 7.15.8
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.15.0 to 7.15.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.8/packages/babel-plugin-transform-runtime)

---
updated-dependencies:
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-07 09:02:42 +00:00
dependabot[bot]
e55a7e2768 Bump webpack-cli from 4.8.0 to 4.9.0
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 4.8.0 to 4.9.0.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@4.8.0...webpack-cli@4.9.0)

---
updated-dependencies:
- dependency-name: webpack-cli
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-07 09:02:31 +00:00
kodiakhq[bot]
2c500775b8 Merge pull request #1528 from amir20/dependabot/npm_and_yarn/mini-css-extract-plugin-2.4.1
Bump mini-css-extract-plugin from 2.3.0 to 2.4.1
2021-10-06 09:10:38 +00:00
kodiakhq[bot]
c87a157997 Merge pull request #1527 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001265
Bump caniuse-lite from 1.0.30001264 to 1.0.30001265
2021-10-06 09:09:52 +00:00
kodiakhq[bot]
51166b59ab Merge pull request #1526 from amir20/dependabot/npm_and_yarn/webpack-5.57.1
Bump webpack from 5.56.1 to 5.57.1
2021-10-06 09:09:20 +00:00
dependabot[bot]
04c64ca20c Bump mini-css-extract-plugin from 2.3.0 to 2.4.1
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 2.3.0 to 2.4.1.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v2.3.0...v2.4.1)

---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-06 09:05:50 +00:00
dependabot[bot]
c8d435c61f Bump caniuse-lite from 1.0.30001264 to 1.0.30001265
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001264 to 1.0.30001265.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/commits/1.0.30001265)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-06 09:05:23 +00:00
dependabot[bot]
c71baddb73 Bump webpack from 5.56.1 to 5.57.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.56.1 to 5.57.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.56.1...v5.57.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-06 09:04:45 +00:00
kodiakhq[bot]
cc1654177a Merge pull request #1525 from amir20/dependabot/go_modules/github.com/docker/docker-20.10.9incompatible
Bump github.com/docker/docker from 20.10.8+incompatible to 20.10.9+incompatible
2021-10-05 09:28:34 +00:00
dependabot[bot]
a0e88f71fc Bump github.com/docker/docker
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 20.10.8+incompatible to 20.10.9+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Changelog](https://github.com/moby/moby/blob/master/CHANGELOG.md)
- [Commits](https://github.com/docker/docker/compare/v20.10.8...v20.10.9)

---
updated-dependencies:
- dependency-name: github.com/docker/docker
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-05 09:24:19 +00:00
kodiakhq[bot]
2a9dcc564b Merge pull request #1522 from amir20/dependabot/npm_and_yarn/autoprefixer-10.3.7
Bump autoprefixer from 10.3.6 to 10.3.7
2021-10-05 09:19:46 +00:00
dependabot[bot]
9eb53b4934 Bump autoprefixer from 10.3.6 to 10.3.7
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.3.6 to 10.3.7.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.3.6...10.3.7)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-05 09:14:37 +00:00
kodiakhq[bot]
ceb86b3c79 Merge pull request #1524 from amir20/dependabot/npm_and_yarn/ansi-to-html-0.7.2
Bump ansi-to-html from 0.7.1 to 0.7.2
2021-10-05 09:13:44 +00:00
dependabot[bot]
c0e635db94 Bump ansi-to-html from 0.7.1 to 0.7.2
Bumps [ansi-to-html](https://github.com/rburns/ansi-to-html) from 0.7.1 to 0.7.2.
- [Release notes](https://github.com/rburns/ansi-to-html/releases)
- [Commits](https://github.com/rburns/ansi-to-html/commits)

---
updated-dependencies:
- dependency-name: ansi-to-html
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-05 09:09:33 +00:00
kodiakhq[bot]
5af580004b Merge pull request #1523 from amir20/dependabot/npm_and_yarn/lint-staged-11.2.0
Bump lint-staged from 11.1.2 to 11.2.0
2021-10-05 09:08:32 +00:00
kodiakhq[bot]
5db0c25382 Merge pull request #1521 from amir20/dependabot/npm_and_yarn/date-fns-2.25.0
Bump date-fns from 2.24.0 to 2.25.0
2021-10-05 09:07:51 +00:00
kodiakhq[bot]
141eee9884 Merge pull request #1520 from amir20/dependabot/npm_and_yarn/postcss-8.3.9
Bump postcss from 8.3.8 to 8.3.9
2021-10-05 09:07:39 +00:00
kodiakhq[bot]
4ae5ea978a Merge pull request #1519 from amir20/dependabot/npm_and_yarn/webpack-dev-server-4.3.1
Bump webpack-dev-server from 4.3.0 to 4.3.1
2021-10-05 09:07:29 +00:00
dependabot[bot]
b2bf4a56c7 Bump lint-staged from 11.1.2 to 11.2.0
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 11.1.2 to 11.2.0.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v11.1.2...v11.2.0)

---
updated-dependencies:
- dependency-name: lint-staged
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-05 09:03:24 +00:00
dependabot[bot]
8022f1a5db Bump date-fns from 2.24.0 to 2.25.0
Bumps [date-fns](https://github.com/date-fns/date-fns) from 2.24.0 to 2.25.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.24.0...v2.25.0)

---
updated-dependencies:
- dependency-name: date-fns
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-05 09:02:58 +00:00
dependabot[bot]
d2b77b1c4d Bump postcss from 8.3.8 to 8.3.9
Bumps [postcss](https://github.com/postcss/postcss) from 8.3.8 to 8.3.9.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.3.8...8.3.9)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-05 09:02:38 +00:00
dependabot[bot]
8630f57832 Bump webpack-dev-server from 4.3.0 to 4.3.1
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.3.0...v4.3.1)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-05 09:02:21 +00:00
Amir Raminfar
fde39b5d5b Release 3.8.1 2021-10-04 10:41:31 -07:00
kodiakhq[bot]
48fbafff8c Merge pull request #1516 from amir20/dependabot/npm_and_yarn/webpack-5.56.1
Bump webpack from 5.55.1 to 5.56.1
2021-10-04 09:07:50 +00:00
kodiakhq[bot]
68886e38ff Merge pull request #1515 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001264
Bump caniuse-lite from 1.0.30001261 to 1.0.30001264
2021-10-04 09:07:38 +00:00
dependabot[bot]
ea31da49fd Bump webpack from 5.55.1 to 5.56.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.55.1 to 5.56.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.55.1...v5.56.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-04 09:02:56 +00:00
dependabot[bot]
373f22dd62 Bump caniuse-lite from 1.0.30001261 to 1.0.30001264
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001261 to 1.0.30001264.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/commits)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-04 09:02:33 +00:00
kodiakhq[bot]
73b69832e3 Merge pull request #1512 from amir20/dependabot/npm_and_yarn/jest-27.2.4
Bump jest from 27.2.3 to 27.2.4
2021-09-30 09:13:47 +00:00
kodiakhq[bot]
775fe6e92d Merge pull request #1513 from amir20/dependabot/npm_and_yarn/integration/jest-27.2.4
Bump jest from 27.2.3 to 27.2.4 in /integration
2021-09-30 09:13:05 +00:00
dependabot[bot]
b819f3822b Bump jest from 27.2.3 to 27.2.4
Bumps [jest](https://github.com/facebook/jest) from 27.2.3 to 27.2.4.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.3...v27.2.4)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-30 09:08:53 +00:00
dependabot[bot]
65b9da6da5 Bump jest from 27.2.3 to 27.2.4 in /integration
Bumps [jest](https://github.com/facebook/jest) from 27.2.3 to 27.2.4.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.3...v27.2.4)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-30 09:08:23 +00:00
kodiakhq[bot]
20079fec66 Merge pull request #1511 from amir20/dependabot/npm_and_yarn/babel-jest-27.2.4
Bump babel-jest from 27.2.3 to 27.2.4
2021-09-30 09:07:03 +00:00
dependabot[bot]
a365c47e66 Bump babel-jest from 27.2.3 to 27.2.4
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.2.3 to 27.2.4.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.2.4/packages/babel-jest)

---
updated-dependencies:
- dependency-name: babel-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-30 09:02:31 +00:00
kodiakhq[bot]
a2ba37a2f6 Merge pull request #1508 from amir20/dependabot/npm_and_yarn/jest-27.2.3
Bump jest from 27.2.2 to 27.2.3
2021-09-29 09:13:24 +00:00
kodiakhq[bot]
b3661319dd Merge pull request #1509 from amir20/dependabot/npm_and_yarn/webpack-5.55.1
Bump webpack from 5.54.0 to 5.55.1
2021-09-29 09:13:12 +00:00
kodiakhq[bot]
7343276c10 Merge pull request #1507 from amir20/dependabot/npm_and_yarn/integration/jest-27.2.3
Bump jest from 27.2.2 to 27.2.3 in /integration
2021-09-29 09:13:01 +00:00
dependabot[bot]
1175b665b4 Bump jest from 27.2.2 to 27.2.3
Bumps [jest](https://github.com/facebook/jest) from 27.2.2 to 27.2.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.2...v27.2.3)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-29 09:08:39 +00:00
dependabot[bot]
b39c27d1c3 Bump jest from 27.2.2 to 27.2.3 in /integration
Bumps [jest](https://github.com/facebook/jest) from 27.2.2 to 27.2.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.2...v27.2.3)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-29 09:07:52 +00:00
kodiakhq[bot]
6773faef4a Merge pull request #1506 from amir20/dependabot/npm_and_yarn/babel-jest-27.2.3
Bump babel-jest from 27.2.2 to 27.2.3
2021-09-29 09:06:37 +00:00
dependabot[bot]
a7f30c4fbd Bump webpack from 5.54.0 to 5.55.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.54.0 to 5.55.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.54.0...v5.55.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-29 09:03:24 +00:00
dependabot[bot]
2c764632ae Bump babel-jest from 27.2.2 to 27.2.3
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.2.2 to 27.2.3.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.2.3/packages/babel-jest)

---
updated-dependencies:
- dependency-name: babel-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-29 09:02:44 +00:00
kodiakhq[bot]
fb000f0368 Merge pull request #1505 from amir20/dependabot/github_actions/actions/setup-node-2.4.1
Bump actions/setup-node from 2.4.0 to 2.4.1
2021-09-28 09:16:15 +00:00
dependabot[bot]
e7cafcc06c Bump actions/setup-node from 2.4.0 to 2.4.1
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v2.4.0...v2.4.1)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-28 09:11:05 +00:00
kodiakhq[bot]
188b37ecdf Merge pull request #1504 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001261
Bump caniuse-lite from 1.0.30001260 to 1.0.30001261
2021-09-28 09:07:28 +00:00
dependabot[bot]
3a1ed1667a Bump caniuse-lite from 1.0.30001260 to 1.0.30001261
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001260 to 1.0.30001261.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/commits)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-28 09:02:46 +00:00
kodiakhq[bot]
8f52a2ceda Merge pull request #1503 from amir20/dependabot/npm_and_yarn/jest-27.2.2
Bump jest from 27.2.1 to 27.2.2
2021-09-27 09:23:03 +00:00
dependabot[bot]
d5fd678341 Bump jest from 27.2.1 to 27.2.2
Bumps [jest](https://github.com/facebook/jest) from 27.2.1 to 27.2.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.1...v27.2.2)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-27 09:18:24 +00:00
kodiakhq[bot]
e57b27c8b1 Merge pull request #1499 from amir20/dependabot/npm_and_yarn/autoprefixer-10.3.6
Bump autoprefixer from 10.3.5 to 10.3.6
2021-09-27 09:18:06 +00:00
kodiakhq[bot]
840745136c Merge pull request #1502 from amir20/dependabot/npm_and_yarn/webpack-5.54.0
Bump webpack from 5.53.0 to 5.54.0
2021-09-27 09:14:30 +00:00
dependabot[bot]
cd6d2e8354 Bump autoprefixer from 10.3.5 to 10.3.6
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.3.5 to 10.3.6.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.3.5...10.3.6)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-27 09:13:42 +00:00
dependabot[bot]
a4e0284635 Bump webpack from 5.53.0 to 5.54.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.53.0 to 5.54.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.53.0...v5.54.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-27 09:09:51 +00:00
kodiakhq[bot]
d5b64e915b Merge pull request #1500 from amir20/dependabot/npm_and_yarn/babel-jest-27.2.2
Bump babel-jest from 27.2.1 to 27.2.2
2021-09-27 09:08:52 +00:00
kodiakhq[bot]
f53cad5d80 Merge pull request #1501 from amir20/dependabot/npm_and_yarn/integration/jest-27.2.2
Bump jest from 27.2.1 to 27.2.2 in /integration
2021-09-27 09:08:40 +00:00
kodiakhq[bot]
5118cfea7c Merge pull request #1498 from amir20/dependabot/npm_and_yarn/postcss-8.3.8
Bump postcss from 8.3.7 to 8.3.8
2021-09-27 09:07:12 +00:00
kodiakhq[bot]
9fca8a8bec Merge pull request #1497 from amir20/dependabot/npm_and_yarn/webpack-dev-server-4.3.0
Bump webpack-dev-server from 4.2.1 to 4.3.0
2021-09-27 09:06:57 +00:00
dependabot[bot]
9995747fba Bump jest from 27.2.1 to 27.2.2 in /integration
Bumps [jest](https://github.com/facebook/jest) from 27.2.1 to 27.2.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.1...v27.2.2)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-27 09:03:31 +00:00
dependabot[bot]
b27b1b3972 Bump babel-jest from 27.2.1 to 27.2.2
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.2.1 to 27.2.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.2.2/packages/babel-jest)

---
updated-dependencies:
- dependency-name: babel-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-27 09:03:18 +00:00
dependabot[bot]
acee1e8e28 Bump postcss from 8.3.7 to 8.3.8
Bumps [postcss](https://github.com/postcss/postcss) from 8.3.7 to 8.3.8.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.3.7...8.3.8)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-27 09:02:49 +00:00
dependabot[bot]
79085b2409 Bump webpack-dev-server from 4.2.1 to 4.3.0
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.2.1...v4.3.0)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-27 09:02:41 +00:00
kodiakhq[bot]
67ea155718 Merge pull request #1496 from amir20/dependabot/npm_and_yarn/integration/puppeteer-10.4.0
Bump puppeteer from 9.1.1 to 10.4.0 in /integration
2021-09-24 09:08:59 +00:00
dependabot[bot]
67f7b7ca18 Bump puppeteer from 9.1.1 to 10.4.0 in /integration
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 9.1.1 to 10.4.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/puppeteer/puppeteer/compare/v9.1.1...v10.4.0)

---
updated-dependencies:
- dependency-name: puppeteer
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-24 09:04:02 +00:00
kodiakhq[bot]
e653458883 Merge pull request #1495 from amir20/dependabot/npm_and_yarn/integration/jest-puppeteer-6.0.0
Bump jest-puppeteer from 5.0.4 to 6.0.0 in /integration
2021-09-23 09:08:41 +00:00
kodiakhq[bot]
537b1de08b Merge pull request #1494 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001260
Bump caniuse-lite from 1.0.30001259 to 1.0.30001260
2021-09-23 09:07:00 +00:00
dependabot[bot]
75ee6e5d7d Bump jest-puppeteer from 5.0.4 to 6.0.0 in /integration
Bumps [jest-puppeteer](https://github.com/smooth-code/jest-puppeteer) from 5.0.4 to 6.0.0.
- [Release notes](https://github.com/smooth-code/jest-puppeteer/releases)
- [Changelog](https://github.com/smooth-code/jest-puppeteer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/smooth-code/jest-puppeteer/compare/v5.0.4...v6.0.0)

---
updated-dependencies:
- dependency-name: jest-puppeteer
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-23 09:04:04 +00:00
dependabot[bot]
7957ddbec0 Bump caniuse-lite from 1.0.30001259 to 1.0.30001260
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001259 to 1.0.30001260.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/commits)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-23 09:02:39 +00:00
kodiakhq[bot]
86c39936a9 Merge pull request #1492 from amir20/dependabot/npm_and_yarn/release-it-14.11.6
Bump release-it from 14.11.5 to 14.11.6
2021-09-22 10:06:05 +00:00
dependabot[bot]
8381abd86d Bump release-it from 14.11.5 to 14.11.6
Bumps [release-it](https://github.com/release-it/release-it) from 14.11.5 to 14.11.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/14.11.5...14.11.6)

---
updated-dependencies:
- dependency-name: release-it
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-22 10:01:33 +00:00
kodiakhq[bot]
7345c4cf88 Merge pull request #1493 from amir20/dependabot/npm_and_yarn/autoprefixer-10.3.5
Bump autoprefixer from 10.3.4 to 10.3.5
2021-09-22 09:12:56 +00:00
dependabot[bot]
81fc4981c0 Bump autoprefixer from 10.3.4 to 10.3.5
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.3.4 to 10.3.5.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.3.4...10.3.5)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-22 09:08:52 +00:00
kodiakhq[bot]
e61cd5b716 Merge pull request #1491 from amir20/dependabot/npm_and_yarn/postcss-8.3.7
Bump postcss from 8.3.6 to 8.3.7
2021-09-22 09:07:22 +00:00
kodiakhq[bot]
10fcf54dff Merge pull request #1490 from amir20/dependabot/npm_and_yarn/sass-1.42.1
Bump sass from 1.42.0 to 1.42.1
2021-09-22 09:06:23 +00:00
dependabot[bot]
ad40d4ea06 Bump postcss from 8.3.6 to 8.3.7
Bumps [postcss](https://github.com/postcss/postcss) from 8.3.6 to 8.3.7.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.3.6...8.3.7)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-22 09:02:35 +00:00
dependabot[bot]
f75f0890bd Bump sass from 1.42.0 to 1.42.1
Bumps [sass](https://github.com/sass/dart-sass) from 1.42.0 to 1.42.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.42.0...1.42.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-22 09:02:22 +00:00
kodiakhq[bot]
fd56473c7a Merge pull request #1488 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001259
Bump caniuse-lite from 1.0.30001258 to 1.0.30001259
2021-09-21 10:05:40 +00:00
dependabot[bot]
b52c16664e Bump caniuse-lite from 1.0.30001258 to 1.0.30001259
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001258 to 1.0.30001259.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/commits)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 10:01:15 +00:00
kodiakhq[bot]
9c720965dc Merge pull request #1482 from amir20/dependabot/npm_and_yarn/jest-27.2.1
Bump jest from 27.2.0 to 27.2.1
2021-09-21 09:17:46 +00:00
kodiakhq[bot]
21b129ce98 Merge pull request #1487 from amir20/dependabot/npm_and_yarn/integration/tmpl-1.0.5
Bump tmpl from 1.0.4 to 1.0.5 in /integration
2021-09-21 09:15:53 +00:00
kodiakhq[bot]
b2880d4a1d Merge pull request #1486 from amir20/dependabot/npm_and_yarn/nth-check-2.0.1
Bump nth-check from 2.0.0 to 2.0.1
2021-09-21 09:15:40 +00:00
kodiakhq[bot]
759d0016f6 Merge pull request #1485 from amir20/dependabot/npm_and_yarn/tmpl-1.0.5
Bump tmpl from 1.0.4 to 1.0.5
2021-09-21 09:15:28 +00:00
kodiakhq[bot]
3ab4929e92 Merge pull request #1484 from amir20/dependabot/npm_and_yarn/integration/jest-27.2.1
Bump jest from 27.2.0 to 27.2.1 in /integration
2021-09-21 09:15:15 +00:00
dependabot[bot]
6fb6b2bb3e Bump jest from 27.2.0 to 27.2.1
Bumps [jest](https://github.com/facebook/jest) from 27.2.0 to 27.2.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.0...v27.2.1)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 09:12:10 +00:00
dependabot[bot]
10a6834e8b Bump jest from 27.2.0 to 27.2.1 in /integration
Bumps [jest](https://github.com/facebook/jest) from 27.2.0 to 27.2.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.2.0...v27.2.1)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 09:10:34 +00:00
kodiakhq[bot]
34dd5014cb Merge pull request #1483 from amir20/dependabot/npm_and_yarn/sass-1.42.0
Bump sass from 1.41.1 to 1.42.0
2021-09-21 09:08:41 +00:00
dependabot[bot]
554bb5be0a Bump tmpl from 1.0.4 to 1.0.5 in /integration
Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/daaku/nodejs-tmpl/releases)
- [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5)

---
updated-dependencies:
- dependency-name: tmpl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 09:07:56 +00:00
dependabot[bot]
d47601f76d Bump nth-check from 2.0.0 to 2.0.1
Bumps [nth-check](https://github.com/fb55/nth-check) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/fb55/nth-check/releases)
- [Commits](https://github.com/fb55/nth-check/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: nth-check
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 09:07:56 +00:00
dependabot[bot]
6360eff25c Bump tmpl from 1.0.4 to 1.0.5
Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/daaku/nodejs-tmpl/releases)
- [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5)

---
updated-dependencies:
- dependency-name: tmpl
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 09:07:56 +00:00
kodiakhq[bot]
59e74e7a5d Merge pull request #1481 from amir20/dependabot/npm_and_yarn/dompurify-2.3.3
Bump dompurify from 2.3.2 to 2.3.3
2021-09-21 09:07:27 +00:00
kodiakhq[bot]
bef8fd9a61 Merge pull request #1480 from amir20/dependabot/npm_and_yarn/babel-jest-27.2.1
Bump babel-jest from 27.2.0 to 27.2.1
2021-09-21 09:07:17 +00:00
dependabot[bot]
75d405daaf Bump sass from 1.41.1 to 1.42.0
Bumps [sass](https://github.com/sass/dart-sass) from 1.41.1 to 1.42.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.41.1...1.42.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 09:03:02 +00:00
dependabot[bot]
5ee6ec4159 Bump dompurify from 2.3.2 to 2.3.3
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.3.2...2.3.3)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 09:02:34 +00:00
dependabot[bot]
5aa0674dba Bump babel-jest from 27.2.0 to 27.2.1
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.2.0 to 27.2.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.2.1/packages/babel-jest)

---
updated-dependencies:
- dependency-name: babel-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-21 09:02:24 +00:00
kodiakhq[bot]
21977269b7 Merge pull request #1478 from amir20/dependabot/npm_and_yarn/css-loader-6.3.0
Bump css-loader from 6.2.0 to 6.3.0
2021-09-20 09:07:44 +00:00
dependabot[bot]
8106955979 Bump css-loader from 6.2.0 to 6.3.0
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: css-loader
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-20 09:02:31 +00:00
kodiakhq[bot]
de5952ef21 Merge pull request #1477 from amir20/dependabot/npm_and_yarn/date-fns-2.24.0
Bump date-fns from 2.23.0 to 2.24.0
2021-09-17 09:09:15 +00:00
kodiakhq[bot]
f1dee82f54 Merge pull request #1476 from amir20/dependabot/npm_and_yarn/webpack-5.53.0
Bump webpack from 5.52.1 to 5.53.0
2021-09-17 09:09:06 +00:00
kodiakhq[bot]
28295c24cc Merge pull request #1475 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001258
Bump caniuse-lite from 1.0.30001257 to 1.0.30001258
2021-09-17 09:08:17 +00:00
kodiakhq[bot]
bae995387c Merge pull request #1474 from amir20/dependabot/npm_and_yarn/sass-1.41.1
Bump sass from 1.41.0 to 1.41.1
2021-09-17 09:07:24 +00:00
dependabot[bot]
91d32324c6 Bump date-fns from 2.23.0 to 2.24.0
Bumps [date-fns](https://github.com/date-fns/date-fns) from 2.23.0 to 2.24.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.23.0...v2.24.0)

---
updated-dependencies:
- dependency-name: date-fns
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-17 09:03:47 +00:00
dependabot[bot]
65392f1bad Bump webpack from 5.52.1 to 5.53.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.52.1 to 5.53.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.52.1...v5.53.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-17 09:03:30 +00:00
dependabot[bot]
cf23e6ce01 Bump caniuse-lite from 1.0.30001257 to 1.0.30001258
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001257 to 1.0.30001258.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/commits)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-17 09:03:17 +00:00
dependabot[bot]
7eb4511450 Bump sass from 1.41.0 to 1.41.1
Bumps [sass](https://github.com/sass/dart-sass) from 1.41.0 to 1.41.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.41.0...1.41.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-17 09:03:08 +00:00
kodiakhq[bot]
989c17ab0c Merge pull request #1473 from amir20/dependabot/npm_and_yarn/prettier-2.4.1
Bump prettier from 2.4.0 to 2.4.1
2021-09-16 09:07:38 +00:00
kodiakhq[bot]
d13a8046fd Merge pull request #1472 from amir20/dependabot/npm_and_yarn/dompurify-2.3.2
Bump dompurify from 2.3.1 to 2.3.2
2021-09-16 09:07:02 +00:00
dependabot[bot]
07ca9017e9 Bump prettier from 2.4.0 to 2.4.1
Bumps [prettier](https://github.com/prettier/prettier) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.4.0...2.4.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-16 09:02:45 +00:00
dependabot[bot]
2900df79f6 Bump dompurify from 2.3.1 to 2.3.2
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.3.1...2.3.2)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-16 09:02:30 +00:00
kodiakhq[bot]
c97fd2f61c Merge pull request #1470 from amir20/dependabot/npm_and_yarn/sass-1.41.0
Bump sass from 1.40.1 to 1.41.0
2021-09-15 09:06:11 +00:00
dependabot[bot]
0cde88fc00 Bump sass from 1.40.1 to 1.41.0
Bumps [sass](https://github.com/sass/dart-sass) from 1.40.1 to 1.41.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.40.1...1.41.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-15 09:02:12 +00:00
kodiakhq[bot]
2669b97b6b Merge pull request #1469 from amir20/dependabot/npm_and_yarn/sass-1.40.1
Bump sass from 1.39.2 to 1.40.1
2021-09-14 09:08:30 +00:00
kodiakhq[bot]
1fe4ae5d24 Merge pull request #1468 from amir20/dependabot/npm_and_yarn/webpack-dev-server-4.2.1
Bump webpack-dev-server from 4.2.0 to 4.2.1
2021-09-14 09:07:06 +00:00
dependabot[bot]
3a79e59d5c Bump sass from 1.39.2 to 1.40.1
Bumps [sass](https://github.com/sass/dart-sass) from 1.39.2 to 1.40.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.39.2...1.40.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-14 09:03:33 +00:00
dependabot[bot]
383807e0bb Bump webpack-dev-server from 4.2.0 to 4.2.1
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.2.0...v4.2.1)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-14 09:03:04 +00:00
kodiakhq[bot]
cdd25ca9a8 Merge pull request #1466 from amir20/dependabot/npm_and_yarn/jest-27.2.0
Bump jest from 27.1.1 to 27.2.0
2021-09-13 09:20:06 +00:00
dependabot[bot]
13b8e2edc5 Bump jest from 27.1.1 to 27.2.0
Bumps [jest](https://github.com/facebook/jest) from 27.1.1 to 27.2.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.1.1...v27.2.0)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-13 09:14:59 +00:00
kodiakhq[bot]
4d4f0fcfd9 Merge pull request #1467 from amir20/dependabot/npm_and_yarn/integration/jest-27.2.0
Bump jest from 27.1.1 to 27.2.0 in /integration
2021-09-13 09:08:59 +00:00
kodiakhq[bot]
37f0219008 Merge pull request #1465 from amir20/dependabot/npm_and_yarn/mini-css-extract-plugin-2.3.0
Bump mini-css-extract-plugin from 2.2.2 to 2.3.0
2021-09-13 09:08:04 +00:00
kodiakhq[bot]
31378b0431 Merge pull request #1464 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001257
Bump caniuse-lite from 1.0.30001255 to 1.0.30001257
2021-09-13 09:07:57 +00:00
kodiakhq[bot]
a952c6c6ef Merge pull request #1463 from amir20/dependabot/npm_and_yarn/babel-jest-27.2.0
Bump babel-jest from 27.1.1 to 27.2.0
2021-09-13 09:07:49 +00:00
dependabot[bot]
59afee5de0 Bump jest from 27.1.1 to 27.2.0 in /integration
Bumps [jest](https://github.com/facebook/jest) from 27.1.1 to 27.2.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.1.1...v27.2.0)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-13 09:04:10 +00:00
dependabot[bot]
42961d7314 Bump mini-css-extract-plugin from 2.2.2 to 2.3.0
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 2.2.2 to 2.3.0.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v2.2.2...v2.3.0)

---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-13 09:02:40 +00:00
dependabot[bot]
2f1446cfdc Bump caniuse-lite from 1.0.30001255 to 1.0.30001257
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001255 to 1.0.30001257.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/commits)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-13 09:02:30 +00:00
dependabot[bot]
6ae7261ad4 Bump babel-jest from 27.1.1 to 27.2.0
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.1.1 to 27.2.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.2.0/packages/babel-jest)

---
updated-dependencies:
- dependency-name: babel-jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-13 09:02:19 +00:00
kodiakhq[bot]
ae4be167e7 Merge pull request #1462 from amir20/dependabot/docker/golang-1.17.1-alpine
Bump golang from 1.17.0-alpine to 1.17.1-alpine
2021-09-10 09:12:05 +00:00
kodiakhq[bot]
528570e977 Merge pull request #1461 from amir20/dependabot/npm_and_yarn/prettier-2.4.0
Bump prettier from 2.3.2 to 2.4.0
2021-09-10 09:08:52 +00:00
kodiakhq[bot]
d2e00a3dd1 Merge pull request #1460 from amir20/dependabot/npm_and_yarn/webpack-dev-server-4.2.0
Bump webpack-dev-server from 4.1.1 to 4.2.0
2021-09-10 09:08:40 +00:00
kodiakhq[bot]
64d91b49eb Merge pull request #1459 from amir20/dependabot/npm_and_yarn/sass-1.39.2
Bump sass from 1.39.0 to 1.39.2
2021-09-10 09:07:58 +00:00
kodiakhq[bot]
aed0da1873 Merge pull request #1458 from amir20/dependabot/npm_and_yarn/webpack-5.52.1
Bump webpack from 5.52.0 to 5.52.1
2021-09-10 09:07:39 +00:00
dependabot[bot]
0ea807c715 Bump golang from 1.17.0-alpine to 1.17.1-alpine
Bumps golang from 1.17.0-alpine to 1.17.1-alpine.

---
updated-dependencies:
- dependency-name: golang
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-10 09:07:22 +00:00
dependabot[bot]
76627a2d33 Bump prettier from 2.3.2 to 2.4.0
Bumps [prettier](https://github.com/prettier/prettier) from 2.3.2 to 2.4.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.3.2...2.4.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-10 09:03:28 +00:00
dependabot[bot]
ff67b73892 Bump webpack-dev-server from 4.1.1 to 4.2.0
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.1.1 to 4.2.0.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.1.1...v4.2.0)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-10 09:03:11 +00:00
dependabot[bot]
ac9e4bea56 Bump sass from 1.39.0 to 1.39.2
Bumps [sass](https://github.com/sass/dart-sass) from 1.39.0 to 1.39.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.39.0...1.39.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-10 09:02:56 +00:00
dependabot[bot]
66f21223b3 Bump webpack from 5.52.0 to 5.52.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.52.0 to 5.52.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.52.0...v5.52.1)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-10 09:02:40 +00:00
kodiakhq[bot]
b93befbfdb Merge pull request #1456 from amir20/dependabot/npm_and_yarn/jest-27.1.1
Bump jest from 27.1.0 to 27.1.1
2021-09-09 09:16:09 +00:00
dependabot[bot]
ddcf60495f Bump jest from 27.1.0 to 27.1.1
Bumps [jest](https://github.com/facebook/jest) from 27.1.0 to 27.1.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.1.0...v27.1.1)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-09 09:11:53 +00:00
kodiakhq[bot]
6522b8c580 Merge pull request #1457 from amir20/dependabot/npm_and_yarn/integration/jest-27.1.1
Bump jest from 27.1.0 to 27.1.1 in /integration
2021-09-09 09:09:37 +00:00
kodiakhq[bot]
09a5ec6429 Merge pull request #1455 from amir20/dependabot/npm_and_yarn/babel-jest-27.1.1
Bump babel-jest from 27.1.0 to 27.1.1
2021-09-09 09:08:21 +00:00
dependabot[bot]
c81a5b7f2c Bump jest from 27.1.0 to 27.1.1 in /integration
Bumps [jest](https://github.com/facebook/jest) from 27.1.0 to 27.1.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/compare/v27.1.0...v27.1.1)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-09 09:04:30 +00:00
dependabot[bot]
8fc706e8f9 Bump babel-jest from 27.1.0 to 27.1.1
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.1.0 to 27.1.1.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v27.1.1/packages/babel-jest)

---
updated-dependencies:
- dependency-name: babel-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-09 09:03:09 +00:00
kodiakhq[bot]
35db5801bd Merge pull request #1454 from amir20/dependabot/npm_and_yarn/integration/axios-0.21.4
Bump axios from 0.21.1 to 0.21.4 in /integration
2021-09-08 20:28:17 +00:00
dependabot[bot]
6dbbb321f1 Bump axios from 0.21.1 to 0.21.4 in /integration
Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-08 20:23:13 +00:00
Amir Raminfar
058c1eebe8 Updates mod files 2021-09-08 13:21:51 -07:00
kodiakhq[bot]
08980e64d1 Merge pull request #1453 from amir20/dependabot/npm_and_yarn/webpack-dev-server-4.1.1
Bump webpack-dev-server from 4.1.0 to 4.1.1
2021-09-08 09:06:13 +00:00
dependabot[bot]
e2f5500a99 Bump webpack-dev-server from 4.1.0 to 4.1.1
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-08 09:02:34 +00:00
kodiakhq[bot]
62e2b6b39f Merge pull request #1452 from amir20/dependabot/github_actions/docker/setup-buildx-action-1.6.0
Bump docker/setup-buildx-action from 1.5.1 to 1.6.0
2021-09-06 09:13:56 +00:00
dependabot[bot]
f6e840b082 Bump docker/setup-buildx-action from 1.5.1 to 1.6.0
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 1.5.1 to 1.6.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v1.5.1...v1.6.0)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-06 09:09:31 +00:00
kodiakhq[bot]
43b35b84a7 Merge pull request #1451 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001255
Bump caniuse-lite from 1.0.30001254 to 1.0.30001255
2021-09-06 09:07:00 +00:00
dependabot[bot]
f62d542454 Bump caniuse-lite from 1.0.30001254 to 1.0.30001255
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001254 to 1.0.30001255.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/commits)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-06 09:02:34 +00:00
kodiakhq[bot]
d036283d54 Merge pull request #1449 from amir20/dependabot/npm_and_yarn/babel/core-7.15.5
Bump @babel/core from 7.15.4 to 7.15.5
2021-09-04 10:24:28 +00:00
kodiakhq[bot]
ba89ee46a6 Merge pull request #1448 from amir20/dependabot/npm_and_yarn/webpack-5.52.0
Bump webpack from 5.51.2 to 5.52.0
2021-09-04 10:23:52 +00:00
kodiakhq[bot]
15cf64e0bb Merge pull request #1447 from amir20/dependabot/npm_and_yarn/caniuse-lite-1.0.30001254
Bump caniuse-lite from 1.0.30001252 to 1.0.30001254
2021-09-04 10:23:40 +00:00
dependabot[bot]
3038b15142 Bump @babel/core from 7.15.4 to 7.15.5
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.15.4 to 7.15.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-04 10:20:19 +00:00
dependabot[bot]
024f77db54 Bump webpack from 5.51.2 to 5.52.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.51.2 to 5.52.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.51.2...v5.52.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-04 10:19:54 +00:00
dependabot[bot]
b4d6e8b275 Bump caniuse-lite from 1.0.30001252 to 1.0.30001254
Bumps [caniuse-lite](https://github.com/browserslist/caniuse-lite) from 1.0.30001252 to 1.0.30001254.
- [Release notes](https://github.com/browserslist/caniuse-lite/releases)
- [Commits](https://github.com/browserslist/caniuse-lite/commits)

---
updated-dependencies:
- dependency-name: caniuse-lite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-04 10:19:21 +00:00
kodiakhq[bot]
3977107da1 Merge pull request #1445 from amir20/dependabot/npm_and_yarn/babel/core-7.15.4
Bump @babel/core from 7.15.0 to 7.15.4
2021-09-03 09:07:54 +00:00
kodiakhq[bot]
9fe9112893 Merge pull request #1446 from amir20/dependabot/npm_and_yarn/webpack-5.51.2
Bump webpack from 5.51.1 to 5.51.2
2021-09-03 09:07:44 +00:00
kodiakhq[bot]
52d79d1f29 Merge pull request #1444 from amir20/dependabot/npm_and_yarn/autoprefixer-10.3.4
Bump autoprefixer from 10.3.3 to 10.3.4
2021-09-03 09:07:15 +00:00
dependabot[bot]
32b6b8cb92 Bump webpack from 5.51.1 to 5.51.2
Bumps [webpack](https://github.com/webpack/webpack) from 5.51.1 to 5.51.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.51.1...v5.51.2)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-03 09:03:27 +00:00
dependabot[bot]
82a957fb57 Bump @babel/core from 7.15.0 to 7.15.4
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.15.0 to 7.15.4.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.15.4/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-03 09:03:08 +00:00
dependabot[bot]
0ec5f48a02 Bump autoprefixer from 10.3.3 to 10.3.4
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.3.3 to 10.3.4.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/commits)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-03 09:02:50 +00:00
kodiakhq[bot]
1582ee800b Merge pull request #1443 from amir20/dependabot/npm_and_yarn/mini-css-extract-plugin-2.2.2
Bump mini-css-extract-plugin from 2.2.1 to 2.2.2
2021-09-02 09:06:56 +00:00
kodiakhq[bot]
0ef11d9092 Merge pull request #1442 from amir20/dependabot/npm_and_yarn/sass-1.39.0
Bump sass from 1.38.2 to 1.39.0
2021-09-02 09:06:41 +00:00
dependabot[bot]
ecb3745118 Bump mini-css-extract-plugin from 2.2.1 to 2.2.2
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v2.2.1...v2.2.2)

---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-02 09:02:18 +00:00
dependabot[bot]
13c19165b0 Bump sass from 1.38.2 to 1.39.0
Bumps [sass](https://github.com/sass/dart-sass) from 1.38.2 to 1.39.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.38.2...1.39.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-02 09:02:09 +00:00
kodiakhq[bot]
69a91def58 Merge pull request #1440 from amir20/dependabot/npm_and_yarn/webpack-dev-server-4.1.0
Bump webpack-dev-server from 4.0.0 to 4.1.0
2021-09-01 09:06:35 +00:00
kodiakhq[bot]
b6abd340ac Merge pull request #1439 from amir20/dependabot/npm_and_yarn/mini-css-extract-plugin-2.2.1
Bump mini-css-extract-plugin from 2.2.0 to 2.2.1
2021-09-01 09:06:24 +00:00
dependabot[bot]
d9a5e4b76c Bump webpack-dev-server from 4.0.0 to 4.1.0
Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v4.0.0...v4.1.0)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 09:02:14 +00:00
dependabot[bot]
bdf5eabdf4 Bump mini-css-extract-plugin from 2.2.0 to 2.2.1
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v2.2.0...v2.2.1)

---
updated-dependencies:
- dependency-name: mini-css-extract-plugin
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 09:02:08 +00:00
kodiakhq[bot]
1d266ebbae Merge pull request #1437 from amir20/dependabot/npm_and_yarn/babel-jest-27.1.0
Bump babel-jest from 27.0.6 to 27.1.0
2021-08-30 09:17:26 +00:00
dependabot[bot]
93c292f51a Bump babel-jest from 27.0.6 to 27.1.0
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 27.0.6 to 27.1.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/v27.1.0/packages/babel-jest)

---
updated-dependencies:
- dependency-name: babel-jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-30 09:12:45 +00:00
kodiakhq[bot]
92d2c4dcd4 Merge pull request #1438 from amir20/dependabot/npm_and_yarn/integration/jest-27.1.0
Bump jest from 27.0.6 to 27.1.0 in /integration
2021-08-30 09:08:48 +00:00
kodiakhq[bot]
3bca2eb946 Merge pull request #1436 from amir20/dependabot/npm_and_yarn/sass-1.38.2
Bump sass from 1.38.1 to 1.38.2
2021-08-30 09:07:51 +00:00
kodiakhq[bot]
048d9ded8d Merge pull request #1435 from amir20/dependabot/npm_and_yarn/jest-27.1.0
Bump jest from 27.0.6 to 27.1.0
2021-08-30 09:07:39 +00:00
kodiakhq[bot]
dced2c8549 Merge pull request #1434 from amir20/dependabot/npm_and_yarn/buefy-0.9.10
Bump buefy from 0.9.9 to 0.9.10
2021-08-30 09:06:31 +00:00
dependabot[bot]
f5c80a568b Bump jest from 27.0.6 to 27.1.0 in /integration
Bumps [jest](https://github.com/facebook/jest) from 27.0.6 to 27.1.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/v27.0.6...v27.1.0)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-30 09:04:50 +00:00
dependabot[bot]
eedbc14226 Bump sass from 1.38.1 to 1.38.2
Bumps [sass](https://github.com/sass/dart-sass) from 1.38.1 to 1.38.2.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.38.1...1.38.2)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-30 09:03:15 +00:00
dependabot[bot]
c08ae63c46 Bump jest from 27.0.6 to 27.1.0
Bumps [jest](https://github.com/facebook/jest) from 27.0.6 to 27.1.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/v27.0.6...v27.1.0)

---
updated-dependencies:
- dependency-name: jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-30 09:03:04 +00:00
dependabot[bot]
5f158107c2 Bump buefy from 0.9.9 to 0.9.10
Bumps [buefy](https://github.com/buefy/buefy) from 0.9.9 to 0.9.10.
- [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.9.9...v0.9.10)

---
updated-dependencies:
- dependency-name: buefy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-30 09:02:42 +00:00
110 changed files with 10981 additions and 13551 deletions

View File

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

View File

@@ -1,8 +1,8 @@
node_modules
.cache
.idea
.github
dist
.git
static
integration
demo.gif
e2e

View File

@@ -31,7 +31,7 @@ updates:
schedule:
interval: daily
- package-ecosystem: npm
directory: "/integration"
directory: "/e2e"
labels:
- "npm"
- "dependencies"

View File

@@ -9,13 +9,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Install Node
uses: actions/setup-node@v2.4.0
uses: actions/setup-node@v2.5.0
- name: Install pnpm
uses: pnpm/action-setup@v2.0.1
with:
version: 6.20.1
- name: Install dependencies
run: yarn
run: pnpm install
- name: Run Tests
run: yarn test
run: pnpm run test
go-test:
name: Go Tests
runs-on: ubuntu-latest
@@ -25,7 +29,7 @@ jobs:
with:
go-version: 1.17.x
- name: Checkout code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Run Go Tests with Coverage
run: make test SKIP_ASSET=1
int-test:
@@ -33,11 +37,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Build images
run: docker-compose -f integration/docker-compose.test.yml build
run: docker-compose -f e2e/docker-compose.yml build
- name: Run tests
run: docker-compose -f integration/docker-compose.test.yml run integration
run: docker-compose -f e2e/docker-compose.yml up --build --force-recreate --exit-code-from cypress
buildx:
needs: [go-test, npm-test, int-test]
name: Release
@@ -45,25 +49,18 @@ jobs:
steps:
- name: Docker meta
id: meta
uses: crazy-max/ghaction-docker-meta@v3.5.0
uses: docker/metadata-action@v3
with:
images: amir20/dozzle
- name: Set up QEMU
uses: docker/setup-qemu-action@v1.2.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1.5.1
uses: docker/setup-buildx-action@v1.6.0
- name: Login to DockerHub
uses: docker/login-action@v1.10.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Cache Docker layers
uses: actions/cache@v2.1.6
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build and push
uses: docker/build-push-action@v2.7.0
with:
@@ -72,29 +69,26 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
build-args: TAG=${{ steps.meta.outputs.version }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- # Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
cache-from: type=registry,ref=amir20/dozzle:latest
cache-to: type=inline
git-release:
needs: [buildx]
name: Github Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
with:
fetch-depth: 0
- name: Install Node
uses: actions/setup-node@v2.4.0
uses: actions/setup-node@v2.5.0
- name: Install pnpm
uses: pnpm/action-setup@v2.0.1
with:
version: 6.20.1
- name: Install dependencies
run: yarn
run: pnpm install
- name: Release to Github
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: yarn release --github.release --no-increment --no-git --ci
run: pnpm run release -- --github.release --no-increment --no-git --ci

View File

@@ -2,33 +2,29 @@ on:
push:
branches:
- master
name: Push master container
pull_request:
branches:
- master
name: Push container
jobs:
buildx:
name: Push master
name: Push branches and PRs
runs-on: ubuntu-latest
steps:
- name: Docker meta
id: meta
uses: crazy-max/ghaction-docker-meta@v3.5.0
uses: docker/metadata-action@v3
with:
images: amir20/dozzle
- name: Set up QEMU
uses: docker/setup-qemu-action@v1.2.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1.5.1
uses: docker/setup-buildx-action@v1.6.0
- name: Login to DockerHub
uses: docker/login-action@v1.10.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Cache Docker layers
uses: actions/cache@v2.1.6
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build and push
uses: docker/build-push-action@v2.7.0
with:
@@ -37,12 +33,5 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
build-args: TAG=${{ steps.meta.outputs.version }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- # Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
cache-from: type=registry,ref=amir20/dozzle:master
cache-to: type=inline

View File

@@ -1,4 +1,10 @@
on: push
on:
push:
branches:
- "**"
pull_request:
branches:
- master
name: Test
jobs:
npm-test:
@@ -6,13 +12,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Install Node
uses: actions/setup-node@v2.4.0
uses: actions/setup-node@v2.5.0
- name: Install pnpm
uses: pnpm/action-setup@v2.0.1
with:
version: 6.20.1
- name: Install dependencies
run: yarn
run: pnpm install
- name: Run Tests
run: yarn test
run: pnpm run test
go-test:
name: Go Tests
runs-on: ubuntu-latest
@@ -22,7 +32,7 @@ jobs:
with:
go-version: 1.17.x
- name: Checkout code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Run Go Tests with Coverage
run: make test SKIP_ASSET=1
int-test:
@@ -30,8 +40,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2.3.4
uses: actions/checkout@v2.4.0
- name: Build images
run: docker-compose -f integration/docker-compose.test.yml build
run: docker-compose -f e2e/docker-compose.yml build
- name: Run tests
run: docker-compose -f integration/docker-compose.test.yml run integration
run: docker-compose -f e2e/docker-compose.yml up --build --force-recreate --exit-code-from cypress

View File

@@ -1,4 +1,4 @@
#!/bin/sh
. "$(dirname $0)/_/husky.sh"
yarn lint-staged
pnpm lint-staged

View File

@@ -1,27 +1,29 @@
# Build assets
FROM node:16-alpine as node
FROM node:17-alpine as node
RUN apk add --no-cache git openssh make g++ util-linux
RUN apk add --no-cache git openssh make g++ util-linux curl python3 && curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm
WORKDIR /build
# Install dependencies
COPY package*.json yarn.lock ./
RUN yarn install --ignore-scripts --network-timeout 1000000
# Install dependencies from lock file
COPY pnpm-lock.yaml ./
RUN pnpm fetch --prod
# Copy config files
COPY .* webpack*.js ./
# Copy files
COPY package.json .* vite.config.ts index.html ./
# Copy assets to build
COPY assets ./assets
# Install dependencies
RUN pnpm install -r --offline --prod
# Do the build
RUN yarn build
RUN pnpm build
FROM golang:1.17.0-alpine AS builder
FROM golang:1.17.3-alpine AS builder
RUN apk add --no-cache git ca-certificates
RUN mkdir /dozzle
RUN apk add --no-cache git ca-certificates && mkdir /dozzle
WORKDIR /dozzle
@@ -30,10 +32,13 @@ COPY go.* ./
RUN go mod download
# Copy assets built with node
COPY --from=node /build/static ./static
COPY --from=node /build/dist ./dist
# Copy all other files
COPY . .
COPY analytics ./analytics
COPY docker ./docker
COPY web ./web
COPY main.go ./
# Args
ARG TAG=dev

View File

@@ -1,24 +1,24 @@
.PHONY: clean
clean:
@rm -rf static
@rm -rf dist
@go clean -i
.PHONY: static
static:
@yarn build
.PHONY: dist
dist:
@pnpm build
.PHONY: fake_static
fake_static:
@echo 'Skipping yarn build'
@mkdir -p static
@echo "yarn build was skipped" > static/index.html
.PHONY: fake_assets
fake_assets:
@echo 'Skipping asset build'
@mkdir -p dist
@echo "assets build was skipped" > dist/index.html
.PHONY: test
test: fake_static
test: fake_assets
go test -cover ./...
.PHONY: build
build: static
build: dist
CGO_ENABLED=0 go build -ldflags "-s -w"
.PHONY: docker
@@ -27,8 +27,8 @@ docker:
.PHONY: dev
dev:
yarn dev
pnpm dev
.PHONY: int
int:
docker-compose -f integration/docker-compose.test.yml up --build --force-recreate --exit-code-from integration
docker-compose -f e2e/docker-compose.yml up --build --force-recreate --exit-code-from cypress

View File

@@ -6,8 +6,7 @@ Dozzle is a small lightweight application with a web based interface to monitor
[![Go Report Card](https://goreportcard.com/badge/github.com/amir20/dozzle)](https://goreportcard.com/report/github.com/amir20/dozzle)
[![Docker Pulls](https://img.shields.io/docker/pulls/amir20/dozzle.svg)](https://hub.docker.com/r/amir20/dozzle/)
[![Docker Size](https://images.microbadger.com/badges/image/amir20/dozzle.svg)](https://hub.docker.com/r/amir20/dozzle/)
[![Docker Version](https://images.microbadger.com/badges/version/amir20/dozzle.svg)](https://hub.docker.com/r/amir20/dozzle/)
[![Docker Version](https://img.shields.io/docker/v/amir20/dozzle?sort=semver)](https://hub.docker.com/r/amir20/dozzle/)
![Test](https://github.com/amir20/dozzle/workflows/Test/badge.svg)
## Features
@@ -172,5 +171,5 @@ To Build and test locally:
1. Install NodeJs.
2. Install Go.
3. Install [reflex](https://github.com/cespare/reflex) with `get -u github.com/cespare/reflex` outside of dozzle.
4. Install node modules with `yarn`.
5. Do `yarn dev`
4. Install node modules with `pnpm`.
5. Do `pnpm dev`

View File

@@ -1,54 +0,0 @@
import EventSource from "eventsourcemock";
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);
describe("<App />", () => {
const stubs = { RouterLink: RouterLinkStub, "router-view": true, icon: true };
let store;
beforeEach(() => {
global.EventSource = EventSource;
const state = {
settings: { menuWidth: 15 },
containers: [{ id: "abc", name: "Test 1" }],
};
const getters = {
visibleContainers(store) {
return store.containers;
},
activeContainers() {
return [];
},
};
store = new Vuex.Store({
state,
getters,
});
});
test("has right title", async () => {
const wrapper = shallowMount(App, { stubs, store, localVue });
wrapper.vm.$store.state.containers = [
{ id: "abc", name: "Test 1" },
{ id: "xyz", name: "Test 2" },
];
await wrapper.vm.$nextTick();
expect(wrapper.vm.title).toContain("2 containers");
});
test("renders correctly", async () => {
const wrapper = shallowMount(App, { stubs, store, localVue });
await wrapper.vm.$nextTick();
expect(wrapper.element).toMatchSnapshot();
});
});

View File

@@ -3,7 +3,7 @@
<mobile-menu v-if="isMobile && !authorizationNeeded"></mobile-menu>
<splitpanes @resized="onResized($event)">
<pane min-size="10" :size="settings.menuWidth" v-if="!authorizationNeeded && !isMobile && !collapseNav">
<pane min-size="10" :size="menuWidth" v-if="!authorizationNeeded && !isMobile && !collapseNav">
<side-menu @search="showFuzzySearch"></side-menu>
</pane>
<pane min-size="10">
@@ -18,7 +18,7 @@
show-title
scrollable
closable
@close="removeActiveContainer(other)"
@close="containerStore.removeActiveContainer(other)"
></log-container>
</pane>
</template>
@@ -27,122 +27,97 @@
</splitpanes>
<button
@click="collapseNav = !collapseNav"
class="button is-small is-rounded is-settings-control"
class="button is-rounded"
:class="{ collapsed: collapseNav }"
id="hide-nav"
v-if="!isMobile && !authorizationNeeded"
>
<span class="icon">
<icon :name="collapseNav ? 'chevron-right' : 'chevron-left'"></icon>
<span class="icon ml-2" v-if="collapseNav">
<mdi-light-chevron-right />
</span>
<span class="icon" v-else>
<mdi-light-chevron-left />
</span>
</button>
</main>
</template>
<script>
import { mapActions, mapGetters, mapState } from "vuex";
<script lang="ts" setup>
import { Splitpanes, Pane } from "splitpanes";
import { ref, onMounted, watchEffect } from "vue";
import { storeToRefs } from "pinia";
import { useProgrammatic } from "@oruga-ui/oruga-next";
import hotkeys from "hotkeys-js";
import LogContainer from "./components/LogContainer";
import SideMenu from "./components/SideMenu";
import MobileMenu from "./components/MobileMenu";
import { setTitle } from "@/composables/title";
import { isMobile } from "@/composables/media";
import { smallerScrollbars, lightTheme, menuWidth } from "@/composables/settings";
import { useContainerStore } from "@/stores/container";
import config from "@/stores/config";
import PastTime from "./components/PastTime";
import Icon from "./components/Icon";
import FuzzySearchModal from "./components/FuzzySearchModal";
import FuzzySearchModal from "@/components/FuzzySearchModal.vue";
import LogContainer from "@/components/LogContainer.vue";
import SideMenu from "@/components/SideMenu.vue";
import MobileMenu from "@/components/MobileMenu.vue";
export default {
name: "App",
components: {
Icon,
SideMenu,
LogContainer,
MobileMenu,
Splitpanes,
PastTime,
Pane,
},
data() {
return {
title: "",
collapseNav: false,
};
},
metaInfo() {
return {
title: this.title,
titleTemplate: "%s - Dozzle",
};
},
mounted() {
if (this.hasSmallerScrollbars) {
document.documentElement.classList.add("has-custom-scrollbars");
}
if (this.hasLightTheme) {
document.documentElement.setAttribute("data-theme", "light");
}
this.menuWidth = this.settings.menuWidth;
hotkeys("command+k, ctrl+k", (event, handler) => {
event.preventDefault();
this.showFuzzySearch();
});
},
watch: {
hasSmallerScrollbars(newValue, oldValue) {
if (newValue) {
document.documentElement.classList.add("has-custom-scrollbars");
} else {
document.documentElement.classList.remove("has-custom-scrollbars");
}
},
hasLightTheme(newValue, oldValue) {
if (newValue) {
document.documentElement.setAttribute("data-theme", "light");
} else {
document.documentElement.removeAttribute("data-theme");
}
},
visibleContainers() {
this.title = `${this.visibleContainers.length} containers`;
},
},
computed: {
...mapState(["isMobile", "settings", "containers", "authorizationNeeded"]),
...mapGetters(["visibleContainers", "activeContainers"]),
hasSmallerScrollbars() {
return this.settings.smallerScrollbars;
},
hasLightTheme() {
return this.settings.lightTheme;
},
},
methods: {
...mapActions({
removeActiveContainer: "REMOVE_ACTIVE_CONTAINER",
updateSetting: "UPDATE_SETTING",
}),
onResized(e) {
if (e.length == 2) {
const menuWidth = e[0].size;
this.updateSetting({ menuWidth });
}
},
showFuzzySearch() {
this.$buefy.modal.open({
parent: this,
component: FuzzySearchModal,
animation: "false",
width: 600,
});
},
},
};
const collapseNav = ref(false);
const { oruga } = useProgrammatic();
const { authorizationNeeded } = config;
const containerStore = useContainerStore();
const { activeContainers, visibleContainers } = storeToRefs(containerStore);
onMounted(() => {
if (smallerScrollbars.value) {
document.documentElement.classList.add("has-custom-scrollbars");
}
if (lightTheme.value) {
document.documentElement.setAttribute("data-theme", "light");
}
hotkeys("command+k, ctrl+k", (event, handler) => {
event.preventDefault();
showFuzzySearch();
});
});
watchEffect(() => {
setTitle(`${visibleContainers.value.length} containers`);
});
watchEffect(() => {
if (smallerScrollbars.value) {
document.documentElement.classList.add("has-custom-scrollbars");
} else {
document.documentElement.classList.remove("has-custom-scrollbars");
}
if (lightTheme.value) {
document.documentElement.setAttribute("data-theme", "light");
} else {
document.documentElement.removeAttribute("data-theme");
}
});
function showFuzzySearch() {
oruga.modal.open({
// parent: this,
component: FuzzySearchModal,
animation: "false",
width: 600,
active: true,
});
}
function onResized(e) {
if (e.length == 2) {
menuWidth.value = e[0].size;
}
}
</script>
<style scoped lang="scss">
::v-deep .splitpanes--vertical > .splitpanes__splitter {
:deep(.splitpanes--vertical > .splitpanes__splitter) {
min-width: 3px;
background: var(--border-color);
&:hover {

View File

@@ -1,52 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<App /> renders correctly 1`] = `
<main>
<!---->
<splitpanes-stub
dblclicksplitter="true"
pushotherpanes="true"
>
<pane-stub
maxsize="100"
minsize="10"
size="15"
>
<side-menu-stub />
</pane-stub>
<pane-stub
maxsize="100"
minsize="10"
>
<splitpanes-stub
dblclicksplitter="true"
pushotherpanes="true"
>
<pane-stub
class="has-min-height router-view"
maxsize="100"
minsize="0"
>
<router-view-stub />
</pane-stub>
</splitpanes-stub>
</pane-stub>
</splitpanes-stub>
<button
class="button is-small is-rounded is-settings-control"
id="hide-nav"
>
<span
class="icon"
>
<icon-stub
name="chevron-left"
/>
</span>
</button>
</main>
`;

37
assets/components.d.ts vendored Normal file
View File

@@ -0,0 +1,37 @@
// generated by unplugin-vue-components
// We suggest you to commit this file into source control
// Read more: https://github.com/vuejs/vue-next/pull/3399
declare module 'vue' {
export interface GlobalComponents {
CarbonCaretDown: typeof import('~icons/carbon/caret-down')['default']
CilColumns: typeof import('~icons/cil/columns')['default']
ContainerStat: typeof import('./components/ContainerStat.vue')['default']
ContainerTitle: typeof import('./components/ContainerTitle.vue')['default']
FuzzySearchModal: typeof import('./components/FuzzySearchModal.vue')['default']
InfiniteLoader: typeof import('./components/InfiniteLoader.vue')['default']
LogActionsToolbar: typeof import('./components/LogActionsToolbar.vue')['default']
LogContainer: typeof import('./components/LogContainer.vue')['default']
LogEventSource: typeof import('./components/LogEventSource.vue')['default']
LogViewer: typeof import('./components/LogViewer.vue')['default']
LogViewerWithSource: typeof import('./components/LogViewerWithSource.vue')['default']
MdiDotsVertical: typeof import('~icons/mdi/dots-vertical')['default']
MdiLightChevronDoubleDown: typeof import('~icons/mdi-light/chevron-double-down')['default']
MdiLightChevronLeft: typeof import('~icons/mdi-light/chevron-left')['default']
MdiLightChevronRight: typeof import('~icons/mdi-light/chevron-right')['default']
MdiLightCog: typeof import('~icons/mdi-light/cog')['default']
MdiLightMagnify: typeof import('~icons/mdi-light/magnify')['default']
MobileMenu: typeof import('./components/MobileMenu.vue')['default']
OcticonContainer24: typeof import('~icons/octicon/container24')['default']
OcticonDownload24: typeof import('~icons/octicon/download24')['default']
OcticonTrash24: typeof import('~icons/octicon/trash24')['default']
PastTime: typeof import('./components/PastTime.vue')['default']
RelativeTime: typeof import('./components/RelativeTime.vue')['default']
ScrollableView: typeof import('./components/ScrollableView.vue')['default']
ScrollProgress: typeof import('./components/ScrollProgress.vue')['default']
Search: typeof import('./components/Search.vue')['default']
SideMenu: typeof import('./components/SideMenu.vue')['default']
}
}
export { }

View File

@@ -4,37 +4,44 @@
{{ state }}
</div>
<div class="column is-narrow" v-if="stat.memoryUsage !== null">
<span class="has-text-weight-light">mem</span>
<span class="has-text-weight-light has-spacer">mem</span>
<span class="has-text-weight-bold">
{{ formatBytes(stat.memoryUsage) }}
</span>
</div>
<div class="column is-narrow" v-if="stat.cpu !== null">
<span class="has-text-weight-light">load</span>
<span class="has-text-weight-light has-spacer">load</span>
<span class="has-text-weight-bold"> {{ stat.cpu }}% </span>
</div>
</div>
</template>
<script>
export default {
props: {
stat: Object,
state: String,
<script lang="ts" setup>
import { ContainerStat } from "@/types/Container";
import { PropType } from "vue";
defineProps({
stat: {
type: Object as PropType<ContainerStat>,
required: true,
},
name: "ContainerStat",
methods: {
formatBytes(bytes, decimals = 2) {
if (bytes === 0) return "0 Bytes";
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
},
},
};
state: String,
});
function formatBytes(bytes: number, decimals = 2) {
if (bytes === 0) return "0 Bytes";
const k = 1024;
const dm = decimals < 0 ? 0 : decimals;
const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
const i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.has-spacer {
&::after {
content: " ";
}
}
</style>

View File

@@ -1,16 +1,16 @@
<template>
<div class="columns is-marginless has-text-weight-bold is-family-monospace">
<span class="column is-ellipsis">{{ value }}</span>
<span class="column is-ellipsis">
{{ container.name }}
<span class="tag is-dark">{{ container.image.replace(/@sha.*/, "") }}</span>
</span>
</div>
</template>
<script>
export default {
props: {
value: String,
},
name: "ContainerTitle",
};
<script lang="ts" setup>
defineProps({
container: Object,
});
</script>
<style lang="scss" scoped></style>

View File

@@ -1,9 +1,9 @@
<template>
<div class="panel">
<b-autocomplete
<o-autocomplete
ref="autocomplete"
v-model="query"
placeholder="Search containers using ⌘ + k, ⌃k"
placeholder="Search containers using ⌘ + k or ctrl + k"
field="name"
open-on-focus
keep-first
@@ -11,101 +11,96 @@
:data="results"
@select="selected"
>
<template slot-scope="props">
<template #default="props">
<div class="media">
<div class="media-left">
<span class="icon is-small" :class="props.option.state"><icon name="crate"></icon></span>
<span class="icon is-small" :class="props.option.state">
<octicon-container-24 />
</span>
</div>
<div class="media-content">
{{ props.option.name }}
</div>
<div class="media-right">
<span class="icon is-small column-icon" @click.stop.prevent="addColumn(props.option)" title="Pin as column">
<icon name="column"></icon>
<cil-columns />
</span>
</div>
</div>
</template>
</b-autocomplete>
</o-autocomplete>
</div>
</template>
<script>
import { mapState, mapActions } from "vuex";
<script lang="ts" setup>
import fuzzysort from "fuzzysort";
import { computed, nextTick, onMounted, ref, reactive } from "vue";
import { useRouter } from "vue-router";
import { useContainerStore } from "@/stores/container";
import { storeToRefs } from "pinia";
import { Container } from "@/types/Container";
import PastTime from "./PastTime";
import Icon from "./Icon";
const props = defineProps({
maxResults: {
default: 20,
type: Number,
},
});
export default {
props: {
maxResults: {
default: 20,
type: Number,
},
},
data() {
return {
query: "",
};
},
name: "FuzzySearchModal",
components: {
Icon,
PastTime,
},
mounted() {
this.$nextTick(() => this.$refs.autocomplete.focus());
},
watch: {},
methods: {
...mapActions({
appendActiveContainer: "APPEND_ACTIVE_CONTAINER",
}),
selected(item) {
this.$router.push({ name: "container", params: { id: item.id, name: item.name } });
this.$emit("close");
},
addColumn(container) {
this.appendActiveContainer(container);
this.$emit("close");
},
},
computed: {
...mapState(["containers"]),
preparedContainers() {
return this.containers.map((c) => ({
name: c.name,
id: c.id,
created: c.created,
state: c.state,
preparedName: fuzzysort.prepare(c.name),
}));
},
results() {
const options = {
limit: this.maxResults,
key: "preparedName",
};
if (this.query) {
const results = fuzzysort.go(this.query, this.preparedContainers, options);
results.forEach((result) => {
if (result.obj.state === "running") {
result.score += 1;
}
});
return results.sort((a, b) => b.score - a.score).map((i) => i.obj);
} else {
return [...this.containers].sort((a, b) => b.created - a.created);
const emit = defineEmits(["close"]);
const query = ref("");
const autocomplete = ref<HTMLElement>();
const router = useRouter();
const store = useContainerStore();
const { containers } = storeToRefs(store);
const preparedContainers = computed(() =>
containers.value.map(({ name, id, created, state }) =>
reactive({
name,
id,
created,
state,
preparedName: fuzzysort.prepare(name),
})
)
);
const results = computed(() => {
const options = {
limit: props.maxResults,
key: "preparedName",
};
if (query.value) {
const results = fuzzysort.go(query.value, preparedContainers.value, options);
results.forEach((result) => {
if (result.obj.state === "running") {
// @ts-ignore
result.score += 1;
}
},
},
};
});
return [...results].sort((a, b) => b.score - a.score).map((i) => i.obj);
} else {
return [...preparedContainers.value].sort((a, b) => b.created - a.created);
}
});
onMounted(() => nextTick(() => autocomplete.value?.focus()));
function selected(item: { id: string; name: string }) {
router.push({ name: "container", params: { id: item.id, name: item.name } });
emit("close");
}
function addColumn(container: Container) {
store.appendActiveContainer(container);
emit("close");
}
</script>
<style lang="scss" scoped>
.panel {
min-height: 400px;
width: 580px;
}
.running {
@@ -122,7 +117,7 @@ export default {
}
}
::v-deep a.dropdown-item {
:deep(a.dropdown-item) {
padding-right: 1em;
.media-right {
visibility: hidden;
@@ -131,4 +126,8 @@ export default {
visibility: visible;
}
}
.icon {
vertical-align: middle;
}
</style>

View File

@@ -1,32 +0,0 @@
<template functional>
<svg class="icomoon" :class="['icon-' + props.name]">
<use :href="'#icon-' + props.name"></use>
</svg>
</template>
<script>
export default {
props: {
name: {
required: true,
type: String,
},
},
name: "Icon",
};
</script>
<style lang="scss" scoped>
.icomoon {
display: inline-block;
width: 1em;
height: 1em;
stroke-width: 0;
stroke: currentColor;
fill: currentColor;
.icon:not(.keep-size) & {
width: 100%;
height: 100%;
}
}
</style>

View File

@@ -1,5 +1,5 @@
<template>
<div ref="observer" class="infinte-loader">
<div ref="root" class="infinte-loader">
<div class="spinner" v-show="isLoading">
<div class="bounce1"></div>
<div class="bounce2"></div>
@@ -8,40 +8,34 @@
</div>
</template>
<script>
export default {
name: "InfiniteLoader",
data() {
return {
isLoading: false,
};
},
props: {
onLoadMore: Function,
enabled: Boolean,
},
mounted() {
const intersectionObserver = new IntersectionObserver(
async (entries) => {
if (entries[0].intersectionRatio <= 0) return;
if (this.onLoadMore && this.enabled) {
const scrollingParent = this.$el.closest("[data-scrolling]") || document.documentElement;
const previousHeight = scrollingParent.scrollHeight;
this.isLoading = true;
await this.onLoadMore();
this.isLoading = false;
this.$nextTick(() => (scrollingParent.scrollTop += scrollingParent.scrollHeight - previousHeight));
}
},
{ threshholds: 1 }
);
<script lang="ts" setup>
import { ref, onMounted, onUnmounted, nextTick } from "vue";
intersectionObserver.observe(this.$refs.observer);
const props = defineProps({
onLoadMore: Function,
enabled: Boolean,
});
this.$once("hook:beforeDestroy", () => intersectionObserver.disconnect());
},
};
const isLoading = ref(false);
const root = ref<HTMLElement>();
const observer = new IntersectionObserver(async (entries) => {
if (entries[0].intersectionRatio <= 0) return;
if (props.onLoadMore && props.enabled) {
const scrollingParent = root.value.closest("[data-scrolling]") || document.documentElement;
const previousHeight = scrollingParent.scrollHeight;
isLoading.value = true;
await props.onLoadMore();
isLoading.value = false;
await nextTick();
scrollingParent.scrollTop += scrollingParent.scrollHeight - previousHeight;
}
});
onMounted(() => observer.observe(root.value));
onUnmounted(() => observer.disconnect());
</script>
<style scoped lang="scss">
.infinte-loader {
min-height: 1px;

View File

@@ -0,0 +1,120 @@
<template>
<div class="dropdown is-right is-hoverable">
<div class="dropdown-trigger">
<button class="button" aria-haspopup="true" aria-controls="dropdown-menu">
<span class="icon">
<mdi-dots-vertical />
</span>
</button>
</div>
<div class="dropdown-menu" id="dropdown-menu" role="menu">
<div class="dropdown-content">
<a class="dropdown-item" @click="onClearClicked">
<div class="level is-justify-content-start">
<div class="level-left">
<div class="level-item">
<octicon-trash-24 class="mr-4" />
</div>
</div>
<div class="level-right">
<div class="level-item">Clear</div>
</div>
</div>
</a>
<a class="dropdown-item" :href="`${base}/api/logs/download?id=${container.id}`">
<div class="level is-justify-content-start">
<div class="level-left">
<div class="level-item">
<octicon-download-24 class="mr-4" />
</div>
</div>
<div class="level-right">
<div class="level-item">Download</div>
</div>
</div>
</a>
<hr class="dropdown-divider" />
<a class="dropdown-item" @click="showSearch = true">
<div class="level is-justify-content-start">
<div class="level-left">
<div class="level-item">
<mdi-light-magnify class="mr-4" />
</div>
</div>
<div class="level-right">
<div class="level-item">Search</div>
</div>
</div>
</a>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import { onMounted, onUnmounted, PropType } from "vue";
import hotkeys from "hotkeys-js";
import config from "@/stores/config";
import { Container } from "@/types/Container";
import { useSearchFilter } from "@/composables/search";
const { showSearch } = useSearchFilter();
const { base } = config;
const props = defineProps({
onClearClicked: {
type: Function as PropType<(e: Event) => void>,
default: (e: Event) => {},
},
container: {
type: Object as () => Container,
required: true,
},
});
const onHotkey = (event: Event) => {
props.onClearClicked(event);
event.preventDefault();
};
onMounted(() => hotkeys("shift+command+l, shift+ctrl+l", onHotkey));
onUnmounted(() => hotkeys.unbind("shift+command+l, shift+ctrl+l", onHotkey));
</script>
<style lang="scss" scoped>
#download.button,
#clear.button {
.icon {
height: 80%;
}
&:hover {
color: var(--primary-color);
border-color: var(--primary-color);
}
}
.toolbar {
position: absolute;
left: 50%;
transform: translateX(-50%);
width: 200px;
background-color: var(--action-toolbar-background-color);
border-radius: 8em;
margin-top: 0.5em;
& > div {
margin: 0 2em;
padding: 0.5em 0;
}
.button {
background-color: rgba(0, 0, 0, 0) !important;
&.is-small {
font-size: 0.65rem;
}
}
}
</style>

View File

@@ -1,79 +1,64 @@
<template>
<scrollable-view :scrollable="scrollable" v-if="container">
<template v-slot:header v-if="showTitle">
<div class="mr-0 columns is-vcentered is-hidden-mobile">
<div class="column is-clipped">
<container-title :value="container.name" @close="$emit('close')"></container-title>
<template #header v-if="showTitle">
<div class="mr-0 columns is-vcentered is-marginless is-hidden-mobile">
<div class="column is-clipped is-paddingless">
<container-title :container="container" @close="$emit('close')" />
</div>
<div class="column is-clipped">
<container-stat :stat="container.stat" :state="container.state"></container-stat>
<div class="column is-narrow is-paddingless">
<container-stat :stat="container.stat" :state="container.state" v-if="container.stat" />
</div>
<div class="column is-narrow">
<a
class="button is-small is-outlined"
id="download"
:href="`${base}/api/logs/download?id=${container.id}`"
download
>
<span class="icon">
<icon name="save"></icon>
</span>
Download
</a>
<div class="mr-2 column is-narrow is-paddingless">
<log-actions-toolbar :container="container" :onClearClicked="onClearClicked" />
</div>
<div class="column is-narrow" v-if="closable">
<button class="delete is-medium" @click="$emit('close')"></button>
<div class="mr-2 column is-narrow is-paddingless" v-if="closable">
<button class="delete is-medium" @click="emit('close')"></button>
</div>
</div>
</template>
<template v-slot="{ setLoading }">
<log-viewer-with-source :id="id" @loading-more="setLoading($event)"></log-viewer-with-source>
<template #default="{ setLoading }">
<log-viewer-with-source ref="viewer" :id="id" @loading-more="setLoading($event)" />
</template>
</scrollable-view>
</template>
<script>
import LogViewerWithSource from "./LogViewerWithSource";
import ScrollableView from "./ScrollableView";
import ContainerTitle from "./ContainerTitle";
import ContainerStat from "./ContainerStat";
import Icon from "./Icon";
import config from "../store/config";
import containerMixin from "./mixins/container";
<script lang="ts" setup>
import { ref, toRefs } from "vue";
import LogViewerWithSource from "./LogViewerWithSource.vue";
import { useContainerStore } from "@/stores/container";
export default {
mixins: [containerMixin],
props: {
id: {
type: String,
},
showTitle: {
type: Boolean,
default: false,
},
scrollable: {
type: Boolean,
default: false,
},
closable: {
type: Boolean,
default: false,
},
const props = defineProps({
id: {
type: String,
required: true,
},
name: "LogContainer",
components: {
LogViewerWithSource,
ScrollableView,
ContainerTitle,
ContainerStat,
Icon,
showTitle: {
type: Boolean,
default: false,
},
computed: {
base() {
return config.base;
},
scrollable: {
type: Boolean,
default: false,
},
};
closable: {
type: Boolean,
default: false,
},
});
const emit = defineEmits(["close"]);
const { id } = toRefs(props);
const store = useContainerStore();
const container = store.currentContainer(id);
const viewer = ref<InstanceType<typeof LogViewerWithSource>>();
function onClearClicked() {
viewer.value?.clear();
}
</script>
<style lang="scss" scoped>
button.delete {
@@ -88,16 +73,4 @@ button.delete {
opacity: 1;
}
}
#download.button {
.icon {
margin-right: 5px;
height: 80%;
}
&:hover {
color: var(--primary-color);
border-color: var(--primary-color);
}
}
</style>

View File

@@ -1,10 +1,14 @@
import { mount } from "@vue/test-utils";
import { createTestingPinia } from "@pinia/testing";
// @ts-ignore
import EventSource, { sources } from "eventsourcemock";
import debounce from "lodash.debounce";
import EventSource from "eventsourcemock";
import { sources } from "eventsourcemock";
import { shallowMount, mount, createLocalVue } from "@vue/test-utils";
import Vuex from "vuex";
import LogEventSource from "./LogEventSource.vue";
import LogViewer from "./LogViewer.vue";
import { settings } from "../composables/settings";
import { useSearchFilter } from "@/composables/search";
import { mocked } from "ts-jest/utils";
import { computed, Ref } from "vue";
jest.mock("lodash.debounce", () =>
jest.fn((fn) => {
@@ -13,69 +17,77 @@ jest.mock("lodash.debounce", () =>
})
);
jest.mock("../store/config.js", () => ({ base: "" }));
describe("<LogEventSource />", () => {
beforeEach(() => {
global.EventSource = EventSource;
window.scrollTo = jest.fn();
const observe = jest.fn();
const disconnect = jest.fn();
global.IntersectionObserver = jest.fn(() => ({
observe,
disconnect,
}));
debounce.mockClear();
});
function createLogEventSource({ hourStyle = "auto", searchFilter = null } = {}) {
const localVue = createLocalVue();
localVue.use(Vuex);
localVue.component("log-viewer", LogViewer);
const state = { searchFilter, settings: { size: "medium", showTimestamp: true, hourStyle } };
const getters = {
allContainersById() {
return {
abc: { state: "running" },
};
jest.mock("@/stores/container", () => ({
__esModule: true,
useContainerStore() {
return {
currentContainer(id: Ref<string>) {
return computed(() => ({ id: id.value }));
},
};
},
}));
const store = new Vuex.Store({
state,
getters,
});
jest.mock("@/stores/config", () => ({ base: "" }));
describe("<LogEventSource />", () => {
const search = useSearchFilter();
beforeEach(() => {
// @ts-ignore
global.EventSource = EventSource;
window.scrollTo = jest.fn();
global.IntersectionObserver = jest.fn().mockImplementation(() => ({
observe: jest.fn(),
disconnect: jest.fn(),
}));
mocked(debounce).mockClear();
jest.resetModules();
});
function createLogEventSource(
{
searchFilter = undefined,
hourStyle = "auto",
}: { searchFilter?: string | undefined; hourStyle?: "auto" | "24" | "12" } = {
hourStyle: "auto",
}
) {
settings.value.hourStyle = hourStyle;
search.searchFilter.value = searchFilter;
return mount(LogEventSource, {
localVue,
store,
scopedSlots: {
global: {
plugins: [createTestingPinia()],
components: {
LogViewer,
},
},
slots: {
default: `
<log-viewer :messages="props.messages"></log-viewer>
<template #scoped="params"><log-viewer :messages="params.messages"></log-viewer></template>
`,
},
propsData: { id: "abc" },
props: { id: "abc" },
});
}
test("renders correctly", async () => {
const wrapper = createLogEventSource();
expect(wrapper.element).toMatchSnapshot();
expect(wrapper.html()).toMatchSnapshot();
});
test("should connect to EventSource", async () => {
const wrapper = createLogEventSource();
sources["/api/logs/stream?id=abc&lastEventId="].emitOpen();
expect(sources["/api/logs/stream?id=abc&lastEventId="].readyState).toBe(1);
wrapper.destroy();
wrapper.unmount();
});
test("should close EventSource", async () => {
const wrapper = createLogEventSource();
sources["/api/logs/stream?id=abc&lastEventId="].emitOpen();
wrapper.destroy();
wrapper.unmount();
expect(sources["/api/logs/stream?id=abc&lastEventId="].readyState).toBe(2);
});
@@ -121,7 +133,7 @@ describe("<LogEventSource />", () => {
sources["/api/logs/stream?id=abc&lastEventId="].emitMessage({
data: `2019-06-12T10:55:42.459034602Z "This is a message."`,
});
const [message, _] = wrapper.findComponent(LogViewer).vm.messages;
const [message, _] = wrapper.getComponent(LogViewer).vm.messages;
const { key, ...messageWithoutKey } = message;
@@ -138,8 +150,10 @@ describe("<LogEventSource />", () => {
describe("render html correctly", () => {
const RealDate = Date;
beforeAll(() => {
// @ts-ignore
global.Date = class extends RealDate {
constructor(arg) {
constructor(arg: any | number) {
super(arg);
if (arg) {
return new RealDate(arg);
} else {
@@ -158,11 +172,9 @@ describe("<LogEventSource />", () => {
});
await wrapper.vm.$nextTick();
expect(wrapper.find("ul.events")).toMatchInlineSnapshot(`
<ul class="events medium">
<li><span class="date"><time datetime="2019-06-12T10:55:42.459Z">today at 10:55:42 AM</time></span> <span class="text">"This is a message."</span></li>
</ul>
`);
expect(wrapper.find("ul.events").html()).toMatchInlineSnapshot(
`"<ul class=\\"events medium\\"><li><span class=\\"date\\"><time datetime=\\"2019-06-12T10:55:42.459Z\\">today at 10:55:42 AM</time></span><span class=\\"text\\">\\"This is a message.\\"</span></li></ul>"`
);
});
test("should render messages with color", async () => {
@@ -173,11 +185,9 @@ describe("<LogEventSource />", () => {
});
await wrapper.vm.$nextTick();
expect(wrapper.find("ul.events")).toMatchInlineSnapshot(`
<ul class="events medium">
<li><span class="date"><time datetime="2019-06-12T10:55:42.459Z">today at 10:55:42 AM</time></span> <span class="text"><span style="color:#000">black<span style="color:#AAA">white</span></span></span></li>
</ul>
`);
expect(wrapper.find("ul.events").html()).toMatchInlineSnapshot(
`"<ul class=\\"events medium\\"><li><span class=\\"date\\"><time datetime=\\"2019-06-12T10:55:42.459Z\\">today at 10:55:42 AM</time></span><span class=\\"text\\"><span style=\\"color:#000\\">black<span style=\\"color:#AAA\\">white</span></span></span></li></ul>"`
);
});
test("should render messages with html entities", async () => {
@@ -188,11 +198,9 @@ describe("<LogEventSource />", () => {
});
await wrapper.vm.$nextTick();
expect(wrapper.find("ul.events")).toMatchInlineSnapshot(`
<ul class="events medium">
<li><span class="date"><time datetime="2019-06-12T10:55:42.459Z">today at 10:55:42 AM</time></span> <span class="text">&lt;test&gt;foo bar&lt;/test&gt;</span></li>
</ul>
`);
expect(wrapper.find("ul.events").html()).toMatchInlineSnapshot(
`"<ul class=\\"events medium\\"><li><span class=\\"date\\"><time datetime=\\"2019-06-12T10:55:42.459Z\\">today at 10:55:42 AM</time></span><span class=\\"text\\">&lt;test&gt;foo bar&lt;/test&gt;</span></li></ul>"`
);
});
test("should render dates with 12 hour style", async () => {
@@ -203,11 +211,9 @@ describe("<LogEventSource />", () => {
});
await wrapper.vm.$nextTick();
expect(wrapper.find("ul.events")).toMatchInlineSnapshot(`
<ul class="events medium">
<li><span class="date"><time datetime="2019-06-12T23:55:42.459Z">today at 11:55:42 PM</time></span> <span class="text">&lt;test&gt;foo bar&lt;/test&gt;</span></li>
</ul>
`);
expect(wrapper.find("ul.events").html()).toMatchInlineSnapshot(
`"<ul class=\\"events medium\\"><li><span class=\\"date\\"><time datetime=\\"2019-06-12T23:55:42.459Z\\">today at 11:55:42 PM</time></span><span class=\\"text\\">&lt;test&gt;foo bar&lt;/test&gt;</span></li></ul>"`
);
});
test("should render dates with 24 hour style", async () => {
@@ -218,11 +224,9 @@ describe("<LogEventSource />", () => {
});
await wrapper.vm.$nextTick();
expect(wrapper.find("ul.events")).toMatchInlineSnapshot(`
<ul class="events medium">
<li><span class="date"><time datetime="2019-06-12T23:55:42.459Z">today at 23:55:42</time></span> <span class="text">&lt;test&gt;foo bar&lt;/test&gt;</span></li>
</ul>
`);
expect(wrapper.find("ul.events").html()).toMatchInlineSnapshot(
`"<ul class=\\"events medium\\"><li><span class=\\"date\\"><time datetime=\\"2019-06-12T23:55:42.459Z\\">today at 23:55:42</time></span><span class=\\"text\\">&lt;test&gt;foo bar&lt;/test&gt;</span></li></ul>"`
);
});
test("should render messages with filter", async () => {
@@ -236,11 +240,9 @@ describe("<LogEventSource />", () => {
});
await wrapper.vm.$nextTick();
expect(wrapper.find("ul.events")).toMatchInlineSnapshot(`
<ul class="events medium">
<li><span class="date"><time datetime="2019-06-12T10:55:42.459Z">today at 10:55:42 AM</time></span> <span class="text">This is a <mark>test</mark> &lt;hi&gt;&lt;/hi&gt;</span></li>
</ul>
`);
expect(wrapper.find("ul.events").html()).toMatchInlineSnapshot(
`"<ul class=\\"events medium\\"><li><span class=\\"date\\"><time datetime=\\"2019-06-12T10:55:42.459Z\\">today at 10:55:42 AM</time></span><span class=\\"text\\">This is a <mark>test</mark> &lt;hi&gt;&lt;/hi&gt;</span></li></ul>"`
);
});
});
});

View File

@@ -1,122 +1,133 @@
<template>
<div>
<infinite-loader :onLoadMore="loadOlderLogs" :enabled="messages.length > 100"></infinite-loader>
<slot :messages="messages"></slot>
</div>
<infinite-loader :onLoadMore="loadOlderLogs" :enabled="messages.length > 100"></infinite-loader>
<slot :messages="messages"></slot>
</template>
<script>
<script lang="ts" setup>
import { toRefs, ref, watch, onUnmounted } from "vue";
import debounce from "lodash.debounce";
import InfiniteLoader from "./InfiniteLoader";
import config from "../store/config";
import containerMixin from "./mixins/container";
export default {
props: ["id"],
mixins: [containerMixin],
name: "LogEventSource",
components: {
InfiniteLoader,
},
data() {
return {
messages: [],
buffer: [],
es: null,
lastEventId: null,
};
},
created() {
this.flushBuffer = debounce(this.flushNow, 250, { maxWait: 1000 });
this.loadLogs();
},
beforeDestroy() {
this.es.close();
},
methods: {
loadLogs() {
this.reset();
this.connect();
},
onContainerStopped() {
this.es.close();
this.buffer.push({ event: "container-stopped", message: "Container stopped", date: new Date(), key: new Date() });
this.flushBuffer();
this.flushBuffer.flush();
},
onMessage(e) {
this.lastEventId = e.lastEventId;
this.buffer.push(this.parseMessage(e.data));
this.flushBuffer();
},
onContainerStateChange(newValue, oldValue) {
if (newValue == "running" && newValue != oldValue) {
this.buffer.push({
event: "container-started",
message: "Container started",
date: new Date(),
key: new Date(),
});
this.connect();
}
},
connect() {
this.es = new EventSource(`${config.base}/api/logs/stream?id=${this.id}&lastEventId=${this.lastEventId ?? ""}`);
this.es.addEventListener("container-stopped", (e) => this.onContainerStopped());
this.es.addEventListener("error", (e) => console.error("EventSource failed: " + JSON.stringify(e)));
this.es.onmessage = (e) => this.onMessage(e);
},
flushNow() {
this.messages.push(...this.buffer);
this.buffer = [];
},
reset() {
if (this.es) {
this.es.close();
}
this.flushBuffer.cancel();
this.es = null;
this.messages = [];
this.buffer = [];
this.lastEventId = null;
},
async loadOlderLogs() {
if (this.messages.length < 300) return;
import { LogEntry } from "@/types/LogEntry";
import InfiniteLoader from "./InfiniteLoader.vue";
import config from "@/stores/config";
import { useContainerStore } from "@/stores/container";
this.$emit("loading-more", true);
const to = this.messages[0].date;
const last = this.messages[299].date;
const delta = to - last;
const from = new Date(to.getTime() + delta);
const logs = await (
await fetch(`${config.base}/api/logs?id=${this.id}&from=${from.toISOString()}&to=${to.toISOString()}`)
).text();
if (logs) {
const newMessages = logs
.trim()
.split("\n")
.map((line) => this.parseMessage(line));
this.messages.unshift(...newMessages);
}
this.$emit("loading-more", false);
},
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 + 1);
return { key, date, message };
},
const props = defineProps({
id: {
type: String,
required: true,
},
watch: {
id(newValue, oldValue) {
if (oldValue !== newValue) {
this.loadLogs();
}
},
},
};
});
const { id } = toRefs(props);
const emit = defineEmits(["loading-more"]);
const store = useContainerStore();
const container = store.currentContainer(id);
const messages = ref<LogEntry[]>([]);
const buffer = ref<LogEntry[]>([]);
function flushNow() {
messages.value.push(...buffer.value);
buffer.value = [];
}
const flushBuffer = debounce(flushNow, 250, { maxWait: 1000 });
let es: EventSource | null = null;
let lastEventId = "";
function connect({ clear } = { clear: true }) {
es?.close();
if (clear) {
flushBuffer.cancel();
messages.value = [];
buffer.value = [];
lastEventId = "";
}
es = new EventSource(`${config.base}/api/logs/stream?id=${props.id}&lastEventId=${lastEventId}`);
es.addEventListener("container-stopped", () => {
es?.close();
es = null;
buffer.value.push({
event: "container-stopped",
message: "Container stopped",
date: new Date(),
key: new Date().toString(),
});
flushBuffer();
flushBuffer.flush();
});
es.addEventListener("error", (e) => console.error("EventSource failed: " + JSON.stringify(e)));
es.onmessage = (e) => {
lastEventId = e.lastEventId;
if (e.data) {
buffer.value.push(parseMessage(e.data));
flushBuffer();
}
};
}
async function loadOlderLogs() {
if (messages.value.length < 300) return;
emit("loading-more", true);
const to = messages.value[0].date;
const last = messages.value[299].date;
const delta = to.getTime() - last.getTime();
const from = new Date(to.getTime() + delta);
const logs = await (
await fetch(`${config.base}/api/logs?id=${props.id}&from=${from.toISOString()}&to=${to.toISOString()}`)
).text();
if (logs) {
const newMessages = logs
.trim()
.split("\n")
.map((line) => parseMessage(line));
messages.value.unshift(...newMessages);
}
emit("loading-more", false);
}
function parseMessage(data: String): LogEntry {
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 + 1);
return { key, date, message };
}
watch(
() => container.value.state,
(newValue, oldValue) => {
console.log("LogEventSource: container changed", newValue, oldValue);
if (newValue == "running" && newValue != oldValue) {
buffer.value.push({
event: "container-started",
message: "Container started",
date: new Date(),
key: new Date().toString(),
});
connect({ clear: false });
}
}
);
onUnmounted(() => {
if (es) {
es.close();
}
});
connect();
watch(id, () => connect());
defineExpose({
clear: () => (messages.value = []),
});
</script>

View File

@@ -1,65 +1,33 @@
<template>
<ul class="events" :class="settings.size">
<ul class="events" :class="size">
<li v-for="item in filtered" :key="item.key" :data-event="item.event">
<span class="date" v-if="settings.showTimestamp"><relative-time :date="item.date"></relative-time></span>
<span class="date" v-if="showTimestamp"> <relative-time :date="item.date"></relative-time></span>
<span class="text" v-html="colorize(item.message)"></span>
</li>
</ul>
</template>
<script>
import { mapState } from "vuex";
<script lang="ts" setup>
import { PropType, toRefs } from "vue";
import { size, showTimestamp } from "@/composables/settings";
import RelativeTime from "./RelativeTime.vue";
import AnsiConvertor from "ansi-to-html";
import DOMPurify from "dompurify";
import RelativeTime from "./RelativeTime";
import { LogEntry } from "@/types/LogEntry";
import { useSearchFilter } from "@/composables/search";
const props = defineProps({
messages: {
type: Array as PropType<LogEntry[]>,
required: true,
},
});
const ansiConvertor = new AnsiConvertor({ escapeXML: true });
if (window.trustedTypes && trustedTypes.createPolicy) {
trustedTypes.createPolicy("default", {
createHTML: (string, sink) => DOMPurify.sanitize(string, { RETURN_TRUSTED_TYPE: true }),
});
}
export default {
props: ["messages"],
name: "LogViewer",
components: { RelativeTime },
data() {
return {
showSearch: false,
};
},
methods: {
colorize: function (value) {
return ansiConvertor.toHtml(value).replace("&lt;mark&gt;", "<mark>").replace("&lt;/mark&gt;", "</mark>");
},
},
computed: {
...mapState(["searchFilter", "settings"]),
filtered() {
const { searchFilter, messages } = this;
if (searchFilter) {
const isSmartCase = searchFilter === searchFilter.toLowerCase();
try {
const regex = isSmartCase ? new RegExp(searchFilter, "i") : new RegExp(searchFilter);
return messages
.filter((d) => d.message.match(regex))
.map((d) => ({
...d,
message: d.message.replace(regex, "<mark>$&</mark>"),
}));
} catch (e) {
if (e instanceof SyntaxError) {
console.info(`Ignoring SytaxError from search.`, e);
return messages;
}
throw e;
}
}
return messages;
},
},
};
const colorize = (value: string) =>
ansiConvertor.toHtml(value).replace("&lt;mark&gt;", "<mark>").replace("&lt;/mark&gt;", "</mark>");
const { messages } = toRefs(props);
const filtered = useSearchFilter().filteredMessages(messages);
</script>
<style scoped lang="scss">
.events {
@@ -108,9 +76,12 @@ export default {
.text {
white-space: pre-wrap;
&::before {
content: " ";
}
}
::v-deep mark {
:deep(mark) {
border-radius: 2px;
background-color: var(--secondary-color);
animation: pops 200ms ease-out;

View File

@@ -1,19 +1,26 @@
<template>
<log-event-source :id="id" v-slot="eventSource" @loading-more="$emit('loading-more', $event)">
<log-viewer :messages="eventSource.messages"></log-viewer>
<log-event-source ref="source" :id="id" #default="{ messages }" @loading-more="emit('loading-more', $event)">
<log-viewer :messages="messages"></log-viewer>
</log-event-source>
</template>
<script>
import LogEventSource from "./LogEventSource";
import LogViewer from "./LogViewer";
export default {
props: ["id"],
name: "LogViewerWithSource",
components: {
LogEventSource,
LogViewer,
<script lang="ts" setup>
import LogViewer from "./LogViewer.vue";
import { ref } from "vue";
defineProps({
id: {
type: String,
required: true,
},
};
});
const emit = defineEmits(["loading-more"]);
const source = ref<InstanceType<typeof LogViewer>>();
function clear() {
source.value?.clear();
}
defineExpose({
clear,
});
</script>

View File

@@ -9,7 +9,7 @@
</router-link>
</div>
<div class="column ml-4 is-family-monospace is-ellipsis" v-if="$route.name == 'container'">
{{ allContainersById[$route.params.id].name }}
{{ allContainersById[route.params.id].name }}
</div>
<div class="column is-narrow push-right">
@@ -41,32 +41,26 @@
</aside>
</template>
<script>
import { mapGetters } from "vuex";
<script lang="ts" setup>
import { ref, watch } from "vue";
import { useContainerStore } from "@/stores/container";
import { storeToRefs } from "pinia";
import { useRoute } from "vue-router";
export default {
props: [],
name: "MobileMenu",
data() {
return {
showNav: false,
};
},
computed: {
...mapGetters(["visibleContainers", "allContainersById"]),
},
watch: {
$route(to, from) {
this.showNav = false;
},
},
};
const store = useContainerStore();
const route = useRoute();
const { visibleContainers, allContainersById } = storeToRefs(store);
const showNav = ref(false);
watch(route, () => {
showNav.value = false;
});
</script>
<style scoped lang="scss">
aside {
padding: 1em;
position: fixed;
top: 0;
left: 0;
right: 0;
background: var(--scheme-main-ter);

View File

@@ -2,7 +2,7 @@
<time :datetime="date.toISOString()">{{ text }}</time>
</template>
<script>
<script lang="ts">
import formatDistance from "date-fns/formatDistance";
export default {
@@ -14,7 +14,7 @@ export default {
},
data() {
return {
text: "",
text: "" as string,
interval: null,
};
},

View File

@@ -1,10 +1,10 @@
<template>
<time :datetime="date.toISOString()">{{ date | relativeTime(locale) }}</time>
<time :datetime="date.toISOString()">{{ relativeTime(date, locale) }}</time>
</template>
<script>
import { mapState } from "vuex";
<script lang="ts">
import { formatRelative } from "date-fns";
import { hourStyle } from "@/composables/settings";
import enGB from "date-fns/locale/en-GB";
import enUS from "date-fns/locale/en-US";
@@ -27,11 +27,9 @@ export default {
},
name: "RelativeTime",
components: {},
computed: {
...mapState(["settings"]),
locale() {
const locale = styles[this.settings.hourStyle];
const locale = styles[hourStyle.value];
const oldFormatter = locale.formatRelative;
return {
...locale,
@@ -41,7 +39,7 @@ export default {
};
},
},
filters: {
methods: {
relativeTime(date, locale) {
return formatRelative(date, new Date(), { locale });
},

View File

@@ -1,5 +1,5 @@
<template>
<div class="scroll-progress">
<div class="scroll-progress" ref="root">
<svg width="100" height="100" viewBox="0 0 100 100" :class="{ indeterminate }">
<circle r="44" cx="50" cy="50" :style="{ '--progress': scrollProgress }" />
</svg>
@@ -17,79 +17,76 @@
</div>
</template>
<script>
import { mapGetters } from "vuex";
<script lang="ts" setup>
import { useContainerStore } from "@/stores/container";
import throttle from "lodash.throttle";
import { storeToRefs } from "pinia";
import { onMounted, onUnmounted, ref, watchPostEffect } from "vue";
export default {
name: "ScrollProgress",
props: {
indeterminate: {
default: false,
type: Boolean,
},
autoHide: {
default: true,
type: Boolean,
},
const props = defineProps({
indeterminate: {
default: false,
type: Boolean,
},
data() {
return {
scrollProgress: 0,
animation: { cancel: () => {} },
parentElement: document,
};
autoHide: {
default: true,
type: Boolean,
},
created() {
this.onScrollThrottled = throttle(this.onScroll, 150);
},
mounted() {
this.attachEvents();
this.$once("hook:beforeDestroy", this.detachEvents);
},
watch: {
activeContainers() {
this.detachEvents();
this.attachEvents();
},
indeterminate() {
this.$nextTick(() => this.onScroll());
},
},
computed: {
...mapGetters(["activeContainers"]),
},
methods: {
attachEvents() {
this.parentElement = this.$el.closest("[data-scrolling]") || document;
this.parentElement.addEventListener("scroll", this.onScrollThrottled);
},
detachEvents() {
this.parentElement.removeEventListener("scroll", this.onScrollThrottled);
},
onScroll() {
const p = this.parentElement == document ? document.documentElement : this.parentElement;
this.scrollProgress = p.scrollTop / (p.scrollHeight - p.clientHeight);
this.animation.cancel();
if (this.autoHide) {
this.animation = this.$el.animate(
{ opacity: [1, 0] },
{
duration: 500,
delay: 2000,
fill: "both",
easing: "ease-out",
}
);
});
const scrollProgress = ref(0);
const animation = ref({ cancel: () => {} });
const parentElement = ref<Node>(document);
const root = ref<HTMLElement>();
const store = useContainerStore();
const { activeContainers } = storeToRefs(store);
const onScrollThrottled = throttle(onScroll, 150);
function onScroll() {
const parent = parentElement.value == document ? document.documentElement : (parentElement.value as HTMLElement);
scrollProgress.value = parent.scrollTop / (parent.scrollHeight - parent.clientHeight);
animation.value.cancel();
if (props.autoHide && root.value) {
animation.value = root.value.animate(
{ opacity: [1, 0] },
{
duration: 500,
delay: 2000,
fill: "both",
easing: "ease-out",
}
},
},
};
);
}
}
function attachEvents() {
parentElement.value = root.value?.closest("[data-scrolling]") || document;
parentElement.value.addEventListener("scroll", onScrollThrottled);
}
function detachEvents() {
parentElement.value.removeEventListener("scroll", onScrollThrottled);
}
onMounted(() => {
attachEvents();
});
onUnmounted(() => {
detachEvents();
});
watchPostEffect(() => {
activeContainers.value.length;
detachEvents();
attachEvents();
});
</script>
<style scoped lang="scss">
.scroll-progress {
display: inline-block;
position: relative;
pointer-events: none;
svg {
filter: drop-shadow(0px 1px 1px rgba(0, 0, 0, 0.2));

View File

@@ -3,7 +3,7 @@
<header v-if="$slots.header">
<slot name="header"></slot>
</header>
<main ref="content" :data-scrolling="scrollable">
<main ref="content" :data-scrolling="scrollable ? true : undefined">
<div class="is-scrollbar-progress is-hidden-mobile">
<scroll-progress v-show="paused" :indeterminate="loading" :auto-hide="!loading"></scroll-progress>
</div>
@@ -14,17 +14,14 @@
<div class="is-scrollbar-notification">
<transition name="fade">
<button class="button" :class="hasMore ? 'has-more' : ''" @click="scrollToBottom('instant')" v-show="paused">
<icon name="download"></icon>
<mdi-light-chevron-double-down />
</button>
</transition>
</div>
</section>
</template>
<script>
import Icon from "./Icon";
import ScrollProgress from "./ScrollProgress";
<script lang="ts">
export default {
props: {
scrollable: {
@@ -32,21 +29,20 @@ export default {
default: true,
},
},
components: {
Icon,
ScrollProgress,
},
name: "ScrollableView",
data() {
return {
paused: false,
hasMore: false,
loading: false,
mutationObserver: null,
intersectionObserver: null,
};
},
mounted() {
const { content } = this.$refs;
const mutationObserver = new MutationObserver((e) => {
this.mutationObserver = new MutationObserver((e) => {
if (!this.paused) {
this.scrollToBottom("instant");
} else {
@@ -58,17 +54,18 @@ export default {
}
}
});
mutationObserver.observe(content, { childList: true, subtree: true });
this.$once("hook:beforeDestroy", () => mutationObserver.disconnect());
this.mutationObserver.observe(content, { childList: true, subtree: true });
const intersectionObserver = new IntersectionObserver(
this.intersectionObserver = new IntersectionObserver(
(entries) => (this.paused = entries[0].intersectionRatio == 0),
{ threshholds: [0, 1], rootMargin: "80px 0px" }
);
intersectionObserver.observe(this.$refs.scrollObserver);
this.$once("hook:beforeDestroy", () => intersectionObserver.disconnect());
this.intersectionObserver.observe(this.$refs.scrollObserver);
},
beforeUnmount() {
this.mutationObserver.disconnect();
this.intersectionObserver.disconnect();
},
methods: {
scrollToBottom(behavior = "instant") {
this.$refs.scrollObserver.scrollIntoView({ behavior });

View File

@@ -1,17 +1,17 @@
<template>
<div class="search columns is-gapless is-vcentered" v-show="showSearch" v-if="settings.search">
<div class="search columns is-gapless is-vcentered" v-show="showSearch" v-if="search">
<div class="column">
<p class="control has-icons-left">
<input
class="input"
type="text"
placeholder="Find / RegEx"
ref="filter"
v-model="filter"
ref="input"
v-model="searchFilter"
@keyup.esc="resetSearch()"
/>
<span class="icon is-left">
<icon name="search"></icon>
<mdi-light-magnify />
</span>
</p>
</div>
@@ -21,57 +21,36 @@
</div>
</template>
<script>
import { mapActions, mapState } from "vuex";
<script lang="ts" setup>
import hotkeys from "hotkeys-js";
import Icon from "./Icon";
export default {
props: [],
name: "Search",
components: {
Icon,
},
data() {
return {
showSearch: false,
};
},
mounted() {
hotkeys("command+f, ctrl+f", (event, handler) => {
this.showSearch = true;
this.$nextTick(() => this.$refs.filter.focus() || this.$refs.filter.select());
event.preventDefault();
});
hotkeys("esc", (event, handler) => {
this.resetSearch();
});
},
beforeDestroy() {
this.updateSearchFilter("");
hotkeys.unbind("command+f, ctrl+f, esc");
},
methods: {
...mapActions({
updateSearchFilter: "SET_SEARCH",
}),
resetSearch() {
this.showSearch = false;
this.filter = "";
},
},
computed: {
...mapState(["searchFilter", "settings"]),
filter: {
get() {
return this.searchFilter;
},
set(value) {
this.updateSearchFilter(value);
},
},
},
};
import { search } from "@/composables/settings";
import { useSearchFilter } from "@/composables/search";
import { ref, nextTick, onMounted, onUnmounted } from "vue";
const input = ref<HTMLInputElement>();
const { searchFilter, showSearch } = useSearchFilter();
onMounted(() => {
hotkeys("command+f, ctrl+f", (event, handler) => {
showSearch.value = true;
nextTick(() => input.value?.focus() || input.value?.select());
event.preventDefault();
});
hotkeys("esc", () => resetSearch());
});
onUnmounted(() => {
searchFilter.value = "";
showSearch.value = false;
hotkeys.unbind("command+f, ctrl+f");
hotkeys.unbind("esc");
});
function resetSearch() {
searchFilter.value = "";
showSearch.value = false;
}
</script>
<style lang="scss" scoped>

View File

@@ -9,24 +9,16 @@
</router-link>
</div>
<div class="column is-narrow has-text-right px-1">
<button
class="button is-small is-rounded is-settings-control"
@click="$emit('search')"
title="Search containers (⌘ + k, ⌃k)"
>
<button class="button is-rounded" @click="$emit('search')" title="Search containers (⌘ + k, ⌃k)">
<span class="icon">
<icon name="search"></icon>
<mdi-light-magnify />
</span>
</button>
</div>
<div class="column is-narrow has-text-right px-0">
<router-link
:to="{ name: 'settings' }"
active-class="is-active"
class="button is-small is-rounded is-settings-control"
>
<router-link :to="{ name: 'settings' }" active-class="is-active" class="button is-rounded">
<span class="icon">
<icon name="cog"></icon>
<mdi-light-cog />
</span>
</router-link>
</div>
@@ -46,11 +38,11 @@
<div class="is-flex-shrink-1 column-icon">
<span
class="icon is-small"
@click.stop.prevent="appendActiveContainer(item)"
@click.stop.prevent="store.appendActiveContainer(item)"
v-show="!activeContainersById[item.id]"
title="Pin as column"
>
<icon name="column"></icon>
<cil-columns />
</span>
</div>
</div>
@@ -60,35 +52,22 @@
</aside>
</template>
<script>
import { mapActions, mapGetters, mapState } from "vuex";
<script lang="ts" setup>
import { computed } from "vue";
import { storeToRefs } from "pinia";
import { useContainerStore } from "@/stores/container";
import type { Container } from "@/types/Container";
import Icon from "./Icon";
const store = useContainerStore();
export default {
props: [],
name: "SideMenu",
components: {
Icon,
},
data() {
return {};
},
computed: {
...mapGetters(["visibleContainers", "activeContainers"]),
activeContainersById() {
return this.activeContainers.reduce((map, obj) => {
map[obj.id] = obj;
return map;
}, {});
},
},
methods: {
...mapActions({
appendActiveContainer: "APPEND_ACTIVE_CONTAINER",
}),
},
};
const { activeContainers, visibleContainers } = storeToRefs(store);
const activeContainersById = computed(() =>
activeContainers.value.reduce((acc, item) => {
acc[item.id] = item;
return acc;
}, {} as Record<string, Container>)
);
</script>
<style scoped lang="scss">
aside {
@@ -116,6 +95,10 @@ li.exited a {
.menu-list li {
.column-icon {
visibility: hidden;
& > span {
vertical-align: middle;
}
}
&:hover .column-icon {

View File

@@ -1,30 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<LogEventSource /> renders correctly 1`] = `
<div>
<div
class="infinte-loader"
>
<div
class="spinner"
style="display: none;"
>
<div
class="bounce1"
/>
<div
class="bounce2"
/>
<div
class="bounce3"
/>
</div>
</div>
<ul
class="events medium"
/>
</div>
`;

View File

@@ -0,0 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<LogEventSource /> renders correctly 1`] = `
"<div class=\\"infinte-loader\\">
<div class=\\"spinner\\" style=\\"display: none;\\">
<div class=\\"bounce1\\"></div>
<div class=\\"bounce2\\"></div>
<div class=\\"bounce3\\"></div>
</div>
</div>
<ul class=\\"events medium\\"></ul>"
`;

View File

@@ -1,19 +0,0 @@
import { mapGetters } from "vuex";
export default {
computed: {
...mapGetters(["allContainersById"]),
container() {
return this.allContainersById[this.id];
},
},
watch: {
["container.state"](newValue, oldValue) {
if (newValue == "running" && newValue != oldValue) {
this.onContainerStateChange(newValue, oldValue);
}
},
},
methods: {
onContainerStateChange(newValue, oldValue) {},
},
};

View File

@@ -0,0 +1,3 @@
import { useMediaQuery } from "@vueuse/core";
export const isMobile = useMediaQuery("(max-width: 770px)");

View File

@@ -0,0 +1,39 @@
import { ref, computed, Ref } from "vue";
const searchFilter = ref<string>();
const showSearch = ref(false);
import type { LogEntry } from "@/types/LogEntry";
export function useSearchFilter() {
function filteredMessages(messages: Ref<LogEntry[]>) {
return computed(() => {
if (searchFilter && searchFilter.value) {
const isSmartCase = searchFilter.value === searchFilter.value.toLowerCase();
try {
const regex = isSmartCase ? new RegExp(searchFilter.value, "i") : new RegExp(searchFilter.value);
return messages.value
.filter((d) => d.message.match(regex))
.map((d) => ({
...d,
message: d.message.replace(regex, "<mark>$&</mark>"),
}));
} catch (e) {
if (e instanceof SyntaxError) {
console.info(`Ignoring SytaxError from search.`, e);
return messages.value;
}
throw e;
}
}
return messages.value;
});
}
return {
filteredMessages,
searchFilter,
showSearch
};
}

View File

@@ -0,0 +1,65 @@
import { useStorage } from "@vueuse/core";
import { computed } from "vue";
export const DOZZLE_SETTINGS_KEY = "DOZZLE_SETTINGS";
export const DEFAULT_SETTINGS: {
search: boolean;
size: "small" | "medium" | "large";
menuWidth: number;
smallerScrollbars: boolean;
showTimestamp: boolean;
showAllContainers: boolean;
lightTheme: boolean;
hourStyle: "auto" | "24" | "12";
} = {
search: true,
size: "medium",
menuWidth: 15,
smallerScrollbars: false,
showTimestamp: true,
showAllContainers: false,
lightTheme: false,
hourStyle: "auto",
};
export const settings = useStorage(DOZZLE_SETTINGS_KEY, DEFAULT_SETTINGS);
export const search = computed({
get: () => settings.value.search,
set: (value) => (settings.value.search = value),
});
export const size = computed({
get: () => settings.value.size,
set: (value) => (settings.value.size = value),
});
export const menuWidth = computed({
get: () => settings.value.menuWidth,
set: (value) => (settings.value.menuWidth = value),
});
export const smallerScrollbars = computed({
get: () => settings.value.smallerScrollbars,
set: (value) => (settings.value.smallerScrollbars = value),
});
export const showTimestamp = computed({
get: () => settings.value.showTimestamp,
set: (value) => (settings.value.showTimestamp = value),
});
export const showAllContainers = computed({
get: () => settings.value.showAllContainers,
set: (value) => (settings.value.showAllContainers = value),
});
export const lightTheme = computed({
get: () => settings.value.lightTheme,
set: (value) => (settings.value.lightTheme = value),
});
export const hourStyle = computed({
get: () => settings.value.hourStyle,
set: (value) => (settings.value.hourStyle = value),
});

View File

@@ -0,0 +1,12 @@
import { useTitle } from "@vueuse/core";
import { ref, computed } from "vue";
const subtitle = ref("");
const title = computed(() => `${subtitle.value} - Dozzle`);
useTitle(title);
export function setTitle(t: string) {
subtitle.value = t;
}

View File

@@ -1,72 +0,0 @@
import Vue from "vue";
import VueRouter from "vue-router";
import Meta from "vue-meta";
import Switch from "buefy/dist/esm/switch";
import Radio from "buefy/dist/esm/radio";
import Field from "buefy/dist/esm/field";
import Modal from "buefy/dist/esm/modal";
import Autocomplete from "buefy/dist/esm/autocomplete";
import store from "./store";
import config from "./store/config";
import App from "./App.vue";
import { Container, Settings, Index, Show, ContainerNotFound, PageNotFound, Login } from "./pages";
Vue.use(VueRouter);
Vue.use(Meta);
Vue.use(Switch);
Vue.use(Radio);
Vue.use(Field);
Vue.use(Modal);
Vue.use(Autocomplete);
const routes = [
{
path: "/",
component: Index,
name: "default",
},
{
path: "/container/:id",
component: Container,
name: "container",
props: true,
},
{
path: "/container/*",
component: ContainerNotFound,
name: "container-not-found",
},
{
path: "/settings",
component: Settings,
name: "settings",
},
{
path: "/show",
component: Show,
name: "show",
},
{
path: "/login",
component: Login,
name: "login",
},
{
path: "/*",
component: PageNotFound,
name: "page-not-found",
},
];
const router = new VueRouter({
mode: "history",
base: config.base + "/",
routes,
});
new Vue({
router,
store,
render: (h) => h(App),
}).$mount("#app");

67
assets/main.ts Normal file
View File

@@ -0,0 +1,67 @@
import "./styles.scss";
import { createApp } from "vue";
import { createRouter, createWebHistory } from "vue-router";
import { Autocomplete, Button, Dropdown, Switch, Radio, Field, Tooltip, Modal, Config } from "@oruga-ui/oruga-next";
import { bulmaConfig } from "@oruga-ui/theme-bulma";
import { createPinia } from "pinia";
import config from "./stores/config";
import App from "./App.vue";
import { Container, Settings, Index, Show, ContainerNotFound, PageNotFound, Login } from "./pages";
const routes = [
{
path: "/",
component: Index,
name: "default",
},
{
path: "/container/:id",
component: Container,
name: "container",
props: true,
},
{
path: "/container/:pathMatch(.*)",
component: ContainerNotFound,
name: "container-not-found",
},
{
path: "/settings",
component: Settings,
name: "settings",
},
{
path: "/show",
component: Show,
name: "show",
},
{
path: "/login",
component: Login,
name: "login",
},
{
path: "/:pathMatch(.*)*",
component: PageNotFound,
name: "page-not-found",
},
];
const router = createRouter({
history: createWebHistory(`${config.base}/`),
routes,
});
createApp(App)
.use(router)
.use(createPinia())
.use(Autocomplete)
.use(Button)
.use(Dropdown)
.use(Switch)
.use(Tooltip)
.use(Modal)
.use(Radio)
.use(Field)
.use(Config, bulmaConfig)
.mount("#app");

View File

@@ -5,43 +5,33 @@
</div>
</template>
<script>
import { mapGetters } from "vuex";
import Search from "../components/Search";
import LogContainer from "../components/LogContainer";
<script lang="ts" setup>
import { onMounted, toRefs, watchEffect } from "vue";
import Search from "@/components/Search.vue";
import LogContainer from "@/components/LogContainer.vue";
import { setTitle } from "@/composables/title";
import { useContainerStore } from "@/stores/container";
import { storeToRefs } from "pinia";
export default {
props: ["id"],
name: "Container",
components: {
LogContainer,
Search,
const store = useContainerStore();
const props = defineProps({
id: {
type: String,
required: true,
},
data() {
return {
title: "loading",
};
},
metaInfo() {
return {
title: this.title,
};
},
mounted() {
if (this.allContainersById[this.id]) {
this.title = this.allContainersById[this.id].name;
}
},
computed: {
...mapGetters(["allContainersById", "activeContainers"]),
},
watch: {
id() {
this.title = this.allContainersById[this.id].name;
},
allContainersById() {
this.title = this.allContainersById[this.id].name;
},
},
};
});
const { id } = toRefs(props);
const currentContainer = store.currentContainer(id);
const { activeContainers } = storeToRefs(store);
setTitle("loading");
onMounted(() => {
setTitle(currentContainer.value?.name);
});
watchEffect(() => setTitle(currentContainer.value?.name));
</script>

View File

@@ -11,13 +11,13 @@
</div>
</template>
<script>
<script lang="ts">
import { setTitle } from "@/composables/title";
export default {
name: "ContainerNotFound",
metaInfo() {
return {
title: "Not Found",
};
setup() {
setTitle("Container not found");
},
};
</script>

View File

@@ -50,7 +50,7 @@
@keyup.enter="onEnter()"
/>
<span class="icon is-left">
<icon name="search"></icon>
<search-icon />
</span>
</p>
</div>
@@ -76,60 +76,47 @@
</div>
</template>
<script>
import { mapState } from "vuex";
import Icon from "../components/Icon";
import PastTime from "../components/PastTime";
import config from "../store/config";
<script lang="ts" setup>
import { ref, computed } from "vue";
import { storeToRefs } from "pinia";
import { useRouter } from "vue-router";
import { useContainerStore } from "@/stores/container";
import fuzzysort from "fuzzysort";
import SearchIcon from "~icons/mdi-light/magnify";
import PastTime from "../components/PastTime.vue";
import config from "@/stores/config";
export default {
name: "Index",
components: { Icon, PastTime },
data() {
return {
version: config.version,
search: null,
sort: "running",
secured: config.secured,
base: config.base,
};
},
methods: {
onEnter() {
if (this.results.length == 1) {
const [item] = this.results;
this.$router.push({ name: "container", params: { id: item.id, name: item.name } });
}
},
},
computed: {
...mapState(["containers"]),
mostRecentContainers() {
return [...this.containers].sort((a, b) => b.created - a.created);
},
runningContainers() {
return this.mostRecentContainers.filter((c) => c.state === "running");
},
allContainers() {
return this.containers;
},
results() {
if (this.search) {
return fuzzysort.go(this.search, this.allContainers, { key: "name" }).map((i) => i.obj);
}
switch (this.sort) {
case "all":
return this.mostRecentContainers;
case "running":
return this.runningContainers;
const { base, version, secured } = config;
const containerStore = useContainerStore();
const { containers } = storeToRefs(containerStore);
const router = useRouter();
default:
throw `Invalid sort order: ${this.sort}`;
}
},
},
};
const sort = ref("running");
const search = ref();
const results = computed(() => {
if (search.value) {
return fuzzysort.go(search.value, containers.value, { key: "name" }).map((i) => i.obj);
}
switch (sort.value) {
case "all":
return mostRecentContainers.value;
case "running":
return runningContainers.value;
default:
throw `Invalid sort order: ${sort.value}`;
}
});
const mostRecentContainers = computed(() => [...containers.value].sort((a, b) => b.created - a.created));
const runningContainers = computed(() => mostRecentContainers.value.filter((c) => c.state === "running"));
function onEnter() {
if (results.value.length == 1) {
const [item] = results.value;
router.push({ name: "container", params: { id: item.id, name: item.name } });
}
}
</script>
<style lang="scss" scoped>
.panel {

View File

@@ -49,8 +49,9 @@
</div>
</template>
<script>
import config from "../store/config";
<script lang="ts">
import config from "@/stores/config";
import { setTitle } from "@/composables/title";
export default {
name: "Login",
data() {
@@ -60,10 +61,8 @@ export default {
error: false,
};
},
metaInfo() {
return {
title: "Authentication Required",
};
setup() {
setTitle("Authentication Required");
},
methods: {
async onLogin() {

View File

@@ -3,21 +3,20 @@
<div class="hero-body">
<div class="container has-text-centered">
<h1 class="title">
Oops,
<small class="subtitle">this page doesn't exist</small>
404.
<small class="subtitle">This page does not exist.</small>
</h1>
</div>
</div>
</div>
</template>
<script>
<script lang="ts">
import { setTitle } from "@/composables/title";
export default {
name: "PageNotFound",
metaInfo() {
return {
title: "404 Error",
};
setup() {
setTitle("Page not found");
},
};
</script>

View File

@@ -10,9 +10,8 @@
>.
<span v-if="hasUpdate">
New version is available! Update to
<a :href="nextRelease.html_url" class="next-release" target="_blank" rel="noreferrer noopener">{{
nextRelease.name
}}</a
<a :href="nextRelease.html_url" class="next-release" target="_blank" rel="noreferrer noopener">
{{ nextRelease.name }}</a
>.
</span>
</div>
@@ -25,16 +24,22 @@
<div class="item">
<div class="columns is-vcentered">
<div class="column is-narrow">
<b-field>
<b-radio-button
v-model="hourStyle"
:native-value="value"
v-for="value in ['auto', '12', '24']"
:key="value"
>
<span class="is-capitalized">{{ value }}</span>
</b-radio-button>
</b-field>
<o-field>
<o-dropdown v-model="hourStyle" aria-role="list">
<template #trigger>
<o-button variant="primary" type="button">
<span class="is-capitalized">{{ hourStyle }}</span>
<span class="icon">
<carbon-caret-down />
</span>
</o-button>
</template>
<o-dropdown-item :value="value" aria-role="listitem" v-for="value in ['auto', '12', '24']" :key="value">
<span class="is-capitalized">{{ value }}</span>
</o-dropdown-item>
</o-dropdown>
</o-field>
</div>
<div class="column">
By default, Dozzle will use your browser's locale to format time. You can force to 12 or 24 hour style.
@@ -42,26 +47,37 @@
</div>
<div class="item">
<b-switch v-model="smallerScrollbars"> Use smaller scrollbars </b-switch>
<o-switch v-model="smallerScrollbars"> Use smaller scrollbars </o-switch>
</div>
<div class="item">
<b-switch v-model="showTimestamp"> Show timestamps </b-switch>
<o-switch v-model="showTimestamp"> Show timestamps </o-switch>
</div>
</div>
<div class="item">
<div class="columns is-vcentered">
<div class="column is-narrow">
<b-field>
<b-radio-button
v-model="size"
:native-value="value"
v-for="value in ['small', 'medium', 'large']"
:key="value"
>
<span class="is-capitalized">{{ value }}</span>
</b-radio-button>
</b-field>
<o-field>
<o-dropdown v-model="size" aria-role="list">
<template #trigger>
<o-button variant="primary" type="button">
<span class="is-capitalized">{{ size }}</span>
<span class="icon">
<carbon-caret-down />
</span>
</o-button>
</template>
<o-dropdown-item
:value="value"
aria-role="listitem"
v-for="value in ['small', 'medium', 'large']"
:key="value"
>
<span class="is-capitalized">{{ value }}</span>
</o-dropdown-item>
</o-dropdown>
</o-field>
</div>
<div class="column">Font size to use for logs</div>
</div>
@@ -73,78 +89,57 @@
</div>
<div class="item">
<b-switch v-model="search">
<o-switch v-model="search">
Enable searching with Dozzle using <code>command+f</code> or <code>ctrl+f</code>
</b-switch>
</o-switch>
</div>
<div class="item">
<b-switch v-model="showAllContainers"> Show stopped containers </b-switch>
<o-switch v-model="showAllContainers"> Show stopped containers </o-switch>
</div>
<div class="item">
<b-switch v-model="lightTheme"> Use light theme </b-switch>
<o-switch v-model="lightTheme"> Use light theme </o-switch>
</div>
</section>
</div>
</template>
<script>
<script lang="ts" setup>
import { ref } from "vue";
import gt from "semver/functions/gt";
import { mapActions, mapState } from "vuex";
import Icon from "../components/Icon";
import config from "../store/config";
import config from "@/stores/config";
import { setTitle } from "@/composables/title";
import {
search,
lightTheme,
smallerScrollbars,
showTimestamp,
hourStyle,
showAllContainers,
size,
} from "@/composables/settings";
export default {
props: [],
name: "Settings",
components: {
Icon,
},
data() {
return {
currentVersion: config.version,
nextRelease: null,
hasUpdate: false,
};
},
async created() {
const releases = await (await fetch("https://api.github.com/repos/amir20/dozzle/releases")).json();
if (this.currentVersion !== "master") {
this.hasUpdate = gt(releases[0].tag_name, this.currentVersion);
} else {
this.hasUpdate = true;
setTitle("Settings");
const currentVersion = config.version;
const nextRelease = ref({ html_url: "", name: "" });
const hasUpdate = ref(false);
async function fetchNextRelease() {
if (!["dev", "master"].includes(currentVersion)) {
const response = await fetch("https://api.github.com/repos/dozzle/dozzle/releases/latest");
if (response.ok) {
const releases = await response.json();
hasUpdate.value = gt(releases[0].tag_name, currentVersion);
nextRelease.value = releases[0];
}
this.nextRelease = releases[0];
},
metaInfo() {
return {
title: "Settings",
};
},
methods: {
...mapActions({
updateSetting: "UPDATE_SETTING",
}),
},
computed: {
...mapState(["settings"]),
...["search", "size", "smallerScrollbars", "showTimestamp", "showAllContainers", "lightTheme", "hourStyle"].reduce(
(map, name) => {
map[name] = {
get() {
return this.settings[name];
},
set(value) {
this.updateSetting({ [name]: value });
},
};
return map;
},
{}
),
},
};
} else {
hasUpdate.value = true;
}
}
fetchNextRelease();
</script>
<style lang="scss" scoped>
.title {

View File

@@ -1,29 +1,29 @@
<template></template>
<script lang="ts" setup>
import { useContainerStore } from "@/stores/container";
import { storeToRefs } from "pinia";
import { watch } from "vue";
import { useRoute, useRouter } from "vue-router";
<script>
import { mapActions, mapGetters, mapState } from "vuex";
export default {
props: [],
name: "Show",
computed: mapGetters(["visibleContainers"]),
watch: {
visibleContainers(newValue) {
if (newValue) {
if (this.$route.query.name) {
const [container, _] = this.visibleContainers.filter((c) => c.name == this.$route.query.name);
if (container) {
this.$router.push({ name: "container", params: { id: container.id } });
} else {
console.error(`No containers found matching name=${this.$route.query.name}. Redirecting to /`);
this.$router.push({ name: "default" });
}
} else {
console.error(`Expection query parameter name to be set. Redirecting to /`);
this.$router.push({ name: "default" });
}
const router = useRouter();
const route = useRoute();
const store = useContainerStore();
const { visibleContainers } = storeToRefs(store);
watch(visibleContainers, (newValue) => {
if (newValue) {
if (route.query.name) {
const [container, _] = visibleContainers.value.filter((c) => c.name == route.query.name);
if (container) {
router.push({ name: "container", params: { id: container.id } });
} else {
console.error(`No containers found matching name=${route.query.name}. Redirecting to /`);
router.push({ name: "default" });
}
},
},
};
} else {
console.error(`Expection query parameter name to be set. Redirecting to /`);
router.push({ name: "default" });
}
}
});
</script>
<style scoped></style>

6
assets/shims-vue.d.ts vendored Normal file
View File

@@ -0,0 +1,6 @@
/* eslint-disable */
declare module "*.vue" {
import type { DefineComponent } from "vue";
const component: DefineComponent<{}, {}, any>;
export default component;
}

View File

@@ -1,120 +0,0 @@
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);
const mql = window.matchMedia("(max-width: 770px)");
storage.set(DOZZLE_SETTINGS_KEY, { ...DEFAULT_SETTINGS, ...storage.get(DOZZLE_SETTINGS_KEY) });
const state = {
containers: [],
activeContainerIds: [],
searchFilter: null,
isMobile: mql.matches,
settings: storage.get(DOZZLE_SETTINGS_KEY),
authorizationNeeded: config.authorizationNeeded,
};
const mutations = {
SET_CONTAINERS(state, containers) {
const containersById = getters.allContainersById({ containers });
containers.forEach((container) => {
container.stat =
containersById[container.id] && containersById[container.id].stat
? containersById[container.id].stat
: { memoryUsage: 0, cpu: 0 };
});
state.containers = containers;
},
ADD_ACTIVE_CONTAINERS(state, { id }) {
state.activeContainerIds.push(id);
},
REMOVE_ACTIVE_CONTAINER(state, { id }) {
state.activeContainerIds.splice(state.activeContainerIds.indexOf(id), 1);
},
SET_SEARCH(state, filter) {
state.searchFilter = filter;
},
SET_MOBILE_WIDTH(state, value) {
state.isMobile = value;
},
UPDATE_SETTINGS(state, newValues) {
state.settings = { ...state.settings, ...newValues };
storage.set(DOZZLE_SETTINGS_KEY, state.settings);
},
UPDATE_CONTAINER(_, { container, data }) {
for (const [key, value] of Object.entries(data)) {
Vue.set(container, key, value);
}
},
};
const actions = {
APPEND_ACTIVE_CONTAINER({ commit }, container) {
commit("ADD_ACTIVE_CONTAINERS", container);
},
REMOVE_ACTIVE_CONTAINER({ commit }, container) {
commit("REMOVE_ACTIVE_CONTAINER", container);
},
SET_SEARCH({ commit }, filter) {
commit("SET_SEARCH", filter);
},
UPDATE_SETTING({ commit }, setting) {
commit("UPDATE_SETTINGS", setting);
},
UPDATE_STATS({ commit, getters: { allContainersById } }, stat) {
const container = allContainersById[stat.id];
if (container) {
commit("UPDATE_CONTAINER", { container, data: { stat } });
}
},
UPDATE_CONTAINER({ commit, getters: { allContainersById } }, event) {
switch (event.name) {
case "die":
const container = allContainersById[event.actorId];
commit("UPDATE_CONTAINER", { container, data: { state: "exited" } });
break;
default:
}
},
};
const getters = {
allContainersById({ containers }) {
return containers.reduce((map, obj) => {
map[obj.id] = obj;
return map;
}, {});
},
visibleContainers({ containers, settings: { showAllContainers } }) {
const filter = showAllContainers ? () => true : (c) => c.state === "running";
return containers.filter(filter);
},
activeContainers({ activeContainerIds }, { allContainersById }) {
return activeContainerIds.map((id) => allContainersById[id]);
},
};
if (!config.authorizationNeeded) {
const es = new EventSource(`${config.base}/api/events/stream`);
es.addEventListener("containers-changed", (e) => store.commit("SET_CONTAINERS", JSON.parse(e.data)), false);
es.addEventListener("container-stat", (e) => store.dispatch("UPDATE_STATS", JSON.parse(e.data)), false);
es.addEventListener("container-die", (e) => store.dispatch("UPDATE_CONTAINER", JSON.parse(e.data)), false);
}
mql.addEventListener("change", (e) => store.commit("SET_MOBILE_WIDTH", e.matches));
const store = new Vuex.Store({
state,
getters,
actions,
mutations,
});
export default store;

View File

@@ -1,11 +0,0 @@
export const DOZZLE_SETTINGS_KEY = "DOZZLE_SETTINGS";
export const DEFAULT_SETTINGS = {
search: true,
size: "medium",
menuWidth: 15,
smallerScrollbars: false,
showTimestamp: true,
showAllContainers: false,
lightTheme: false,
hourStyle: "auto",
};

View File

@@ -1,4 +1,6 @@
const config = JSON.parse(document.querySelector("script#config__json").textContent);
const text = document.querySelector("script#config__json")?.textContent || "{}";
const config = JSON.parse(text);
if (config.version == "{{ .Version }}") {
config.version = "master";
config.base = "";
@@ -9,5 +11,4 @@ if (config.version == "{{ .Version }}") {
config.authorizationNeeded = config.authorizationNeeded === "true";
config.secured = config.secured === "true";
}
export default config;

View File

@@ -0,0 +1,66 @@
import { acceptHMRUpdate, defineStore } from "pinia";
import { ref, Ref, computed } from "vue";
import { showAllContainers } from "@/composables/settings";
import config from "@/stores/config";
import type { Container, ContainerStat } from "@/types/Container";
export const useContainerStore = defineStore("container", () => {
const containers = ref<Container[]>([]);
const activeContainerIds = ref<string[]>([]);
const allContainersById = computed(() =>
containers.value.reduce((acc, container) => {
acc[container.id] = container;
return acc;
}, {} as Record<string, Container>)
);
const visibleContainers = computed(() => {
const filter = showAllContainers.value ? () => true : (c: Container) => c.state === "running";
return containers.value.filter(filter);
});
const activeContainers = computed(() => activeContainerIds.value.map((id) => allContainersById.value[id]));
const es = new EventSource(`${config.base}/api/events/stream`);
es.addEventListener(
"containers-changed",
(e: Event) => (containers.value = JSON.parse((e as MessageEvent).data)),
false
);
es.addEventListener(
"container-stat",
(e) => {
const stat = JSON.parse((e as MessageEvent).data) as ContainerStat;
const container = allContainersById.value[stat.id];
if (container) {
container.stat = stat;
}
},
false
);
// es.addEventListener("container-die", (e) => store.dispatch("UPDATE_CONTAINER", JSON.parse(e.data)), false);
const currentContainer = (id: Ref<string>) => computed(() => allContainersById.value[id.value]);
const appendActiveContainer = ({ id }: Container) => activeContainerIds.value.push(id);
const removeActiveContainer = ({ id }: Container) =>
activeContainerIds.value.splice(activeContainerIds.value.indexOf(id), 1);
return {
containers,
activeContainerIds,
allContainersById,
visibleContainers,
activeContainers,
currentContainer,
appendActiveContainer,
removeActiveContainer,
};
});
// @ts-ignore
if (import.meta.hot) {
// @ts-ignore
import.meta.hot.accept(acceptHMRUpdate(useContainerStore, import.meta.hot));
}

View File

@@ -1,6 +1,5 @@
@charset "utf-8";
@import "~bulma/sass/utilities/initial-variables.sass";
@import "bulma/sass/utilities/initial-variables.sass";
$body-background-color: var(--body-background-color);
@@ -25,13 +24,18 @@ $panel-heading-color: var(--panel-heading-color);
$link: $turquoise;
$link-active: $grey-dark;
@import "~bulma";
@import "../node_modules/splitpanes/dist/splitpanes.css";
@import "~buefy/src/scss/utils/_all";
@import "~buefy/src/scss/components/_switch";
@import "~buefy/src/scss/components/_radio";
@import "~buefy/src/scss/components/_modal";
@import "~buefy/src/scss/components/_autocomplete";
$dark-toolbar-color: rgba($black-bis, 0.7);
$light-toolbar-color: rgba($grey-darker, 0.7);
@import "bulma/bulma.sass";
@import "@oruga-ui/theme-bulma/dist/scss/components/utils/all.scss";
@import "@oruga-ui/theme-bulma/dist/scss/components/autocomplete.scss";
@import "@oruga-ui/theme-bulma/dist/scss/components/button.scss";
@import "@oruga-ui/theme-bulma/dist/scss/components/modal.scss";
@import "@oruga-ui/theme-bulma/dist/scss/components/switch.scss";
@import "@oruga-ui/theme-bulma/dist/scss/components/tooltip.scss";
@import "@oruga-ui/theme-bulma/dist/scss/components/dropdown.scss";
@import "splitpanes/dist/splitpanes.css";
html {
--scheme-main: #{$black};
@@ -46,6 +50,7 @@ html {
--secondary-color: #{$yellow};
--body-background-color: #{$black-bis};
--action-toolbar-background-color: #{$dark-toolbar-color};
--menu-item-active-background-color: var(--primary-color);
--menu-item-color: hsl(0, 6%, 87%);
@@ -72,6 +77,7 @@ html {
--secondary-color: #d8f0ca;
--body-background-color: #{$white-bis};
--action-toolbar-background-color: #{$light-toolbar-color};
--body-color: #{$grey-darker};
--menu-item-color: #{$grey-dark};
@@ -121,22 +127,6 @@ html.has-custom-scrollbars {
}
}
.is-settings-control {
background: rgba(0, 0, 0, 0.4);
color: #fff;
border-color: transparent;
&:hover {
border-color: var(--border-hover-color) !important;
background: rgba(0, 0, 0, 0.8) !important;
color: #fff !important;
}
&:focus {
box-shadow: none !important;
color: unset;
border-color: transparent;
}
}
@media screen and (min-width: 770px) {
.splitpanes__pane {
overflow: unset;
@@ -156,3 +146,7 @@ html.has-custom-scrollbars {
.modal {
z-index: 1000;
}
.button .button-wrapper > span {
display: contents;
}

16
assets/types/Container.d.ts vendored Normal file
View File

@@ -0,0 +1,16 @@
export interface Container {
readonly id: string;
readonly created: number;
readonly image: string;
readonly name: string;
readonly state: "created" | "running" | "exited" | "dead" | "paused" | "restarting";
readonly status: string;
stat?: ContainerStat;
}
export interface ContainerStat {
readonly id: string;
readonly cpu: number;
readonly memory: number;
readonly memoryUsage: number;
}

6
assets/types/LogEntry.d.ts vendored Normal file
View File

@@ -0,0 +1,6 @@
export interface LogEntry {
date: Date;
message: string;
key: string;
event?: string;
}

View File

@@ -75,8 +75,8 @@ func (d *dockerClient) FindContainer(id string) (Container, error) {
break
}
}
if found == false {
return container, fmt.Errorf("Unable to find container with id: %s", id)
if !found {
return container, fmt.Errorf("unable to find container with id: %s", id)
}
return container, nil
@@ -174,6 +174,7 @@ func (d *dockerClient) ContainerLogs(ctx context.Context, id string, tailSize in
Since: since,
}
log.Debugf("streaming logs from Docker with option: %+v", options)
reader, err := d.cli.ContainerLogs(ctx, id, options)
if err != nil {
return nil, err
@@ -221,10 +222,12 @@ func (d *dockerClient) ContainerLogsBetweenDates(ctx context.Context, id string,
ShowStdout: true,
ShowStderr: true,
Timestamps: true,
Since: strconv.FormatInt(from.Unix(), 10),
Until: strconv.FormatInt(to.Unix(), 10),
Since: from.Format(time.RFC3339),
Until: to.Format(time.RFC3339),
}
log.Debugf("fetching logs from Docker with option: %+v", options)
reader, err := d.cli.ContainerLogs(ctx, id, options)
if err != nil {

3
e2e/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
videos
screenshots
__diff_output__

12
e2e/Dockerfile Normal file
View File

@@ -0,0 +1,12 @@
FROM cypress/included:9.0.0
RUN curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm
WORKDIR /e2e
COPY pnpm-lock.yaml ./
RUN pnpm fetch
COPY package.json ./
RUN pnpm install -r --offline

3
e2e/cypress.env.json Normal file
View File

@@ -0,0 +1,3 @@
{
"DOZZLE_DEFAULT": "http://localhost:3000/"
}

3
e2e/cypress.json Normal file
View File

@@ -0,0 +1,3 @@
{
"fixturesFolder": false
}

View File

@@ -0,0 +1,25 @@
/// <reference types="cypress" />
context("Dozzle default mode", { baseUrl: Cypress.env("DOZZLE_DEFAULT") }, () => {
beforeEach(() => {
cy.visit("/");
});
it("home screen", () => {
cy.get("li.running", { timeout: 10000 }).removeDates().matchImageSnapshot();
});
it("correct title", () => {
cy.title().should("eq", "1 containers - Dozzle");
cy.get("li.running:first a").click();
cy.title().should("include", "- Dozzle");
});
it("settings page", () => {
cy.get("a[href='/settings']").click();
cy.contains("About");
});
});

View File

@@ -0,0 +1,20 @@
/// <reference types="cypress" />
context("Dozzle settings mode", { baseUrl: Cypress.env("DOZZLE_DEFAULT") }, () => {
beforeEach(() => {
cy.visit("/version").clearLocalStorage().visit("/settings");
});
it("scrollbars", () => {
cy.contains("Use smaller scrollbars").click();
cy.get("html").should("have.class", "has-custom-scrollbars");
});
it("stopped containers", () => {
cy.contains("Show stopped containers")
.click()
.then(() => {
expect(JSON.parse(localStorage.getItem("DOZZLE_SETTINGS")).showAllContainers).to.be.true;
});
});
});

View File

@@ -0,0 +1,15 @@
/// <reference types="cypress" />
context("Dozzle light mode", { baseUrl: Cypress.env("DOZZLE_DEFAULT") }, () => {
before(() => {
cy.visit("/settings");
cy.contains("Use light theme").click();
});
beforeEach(() => {
cy.visit("/");
});
it("home screen", () => {
cy.get("li.running", { timeout: 10000 }).removeDates().matchImageSnapshot();
});
});

View File

@@ -0,0 +1,7 @@
/// <reference types="cypress" />
context("Dozzle routes", { baseUrl: Cypress.env("DOZZLE_DEFAULT") }, () => {
it("show", () => {
cy.visit("/show?name=dozzle").url().should("include", "/container/");
});
});

View File

@@ -0,0 +1,26 @@
/// <reference types="cypress" />
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************
// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)
const { addMatchImageSnapshotPlugin } = require("cypress-image-snapshot/plugin");
/**
* @type {Cypress.PluginConfig}
*/
// eslint-disable-next-line no-unused-vars
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
addMatchImageSnapshotPlugin(on, config);
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,33 @@
// ***********************************************
// This example commands.js shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add('login', (email, password) => { ... })
//
//
// -- This is a child command --
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
import { addMatchImageSnapshotCommand } from "cypress-image-snapshot/command";
addMatchImageSnapshotCommand();
Cypress.Commands.add("removeDates", () => {
cy.window().then((win) => win.document.querySelectorAll("time").forEach((el) => el.remove()));
});

View File

@@ -0,0 +1,20 @@
// ***********************************************************
// This example support/index.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.js using ES2015 syntax:
import "./commands";
// Alternatively you can use CommonJS syntax:
// require('./commands')

View File

@@ -8,6 +8,8 @@ services:
- DOZZLE_FILTER=name=custom_base
- DOZZLE_BASE=/foobarbase
- DOZZLE_NO_ANALYTICS=1
ports:
- "8080:8080"
build:
context: ..
dozzle:
@@ -17,18 +19,20 @@ services:
environment:
- DOZZLE_FILTER=name=dozzle
- DOZZLE_NO_ANALYTICS=1
ports:
- "9090:8080"
build:
context: ..
integration:
cypress:
build:
context: .
command: yarn test
working_dir: /e2e
volumes:
- ./__tests__:/app/__tests__
- ./cypress:/e2e/cypress
- ./cypress.json:/e2e/cypress.json
environment:
- DEFAULT_URL=http://dozzle:8080/
- CUSTOM_URL=http://custom_base:8080/foobarbase
- DOZZLE_NO_ANALYTICS=1
- CYPRESS_DOZZLE_DEFAULT=http://dozzle:8080/
- CYPRESS_CUSTOM_DEFAULT=http://custom_base:8080/foobarbase
depends_on:
- dozzle
- custom_base

10
e2e/package.json Normal file
View File

@@ -0,0 +1,10 @@
{
"name": "e2e",
"version": "1.0.0",
"scripts": {},
"license": "ISC",
"dependencies": {
"cypress": "^9.0.0",
"cypress-image-snapshot": "^4.0.1"
}
}

1447
e2e/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

29
go.mod
View File

@@ -1,12 +1,12 @@
module github.com/amir20/dozzle
require (
github.com/Microsoft/go-winio v0.4.18 // indirect
github.com/Microsoft/go-winio v0.5.1 // indirect
github.com/alexflint/go-arg v1.4.2
github.com/beme/abide v0.0.0-20190723115211-635a09831760
github.com/containerd/containerd v1.4.4 // indirect
github.com/containerd/containerd v1.5.7 // indirect
github.com/docker/distribution v2.7.1+incompatible // indirect
github.com/docker/docker v20.10.8+incompatible
github.com/docker/docker v20.10.11+incompatible
github.com/docker/go-connections v0.4.0 // indirect
github.com/docker/go-units v0.4.0 // indirect
github.com/dustin/go-humanize v1.0.0
@@ -23,13 +23,22 @@ require (
github.com/spf13/afero v1.6.0
github.com/stretchr/objx v0.3.0 // indirect
github.com/stretchr/testify v1.7.0
golang.org/x/net v0.0.0-20210420072503-d25e30425868 // indirect
golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe // indirect
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect
google.golang.org/genproto v0.0.0-20210420162539-3c870d7478d2 // indirect
google.golang.org/grpc v1.37.0 // indirect
golang.org/x/net v0.0.0-20211104170005-ce137452f963 // indirect
golang.org/x/sys v0.0.0-20211103235746-7861aae1554b // indirect
google.golang.org/genproto v0.0.0-20211104193956-4c6863e31247 // indirect
google.golang.org/grpc v1.42.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
gotest.tools/v3 v3.0.3 // indirect
)
go 1.16
require (
github.com/alexflint/go-scalar v1.1.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/gorilla/securecookie v1.1.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
golang.org/x/text v0.3.6 // indirect
google.golang.org/protobuf v1.27.1 // indirect
)
go 1.17

844
go.sum

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
node_modules

View File

@@ -1 +0,0 @@
__diff_output__

View File

@@ -1,8 +0,0 @@
FROM amir20/docker-alpine-puppeteer:v1
COPY package*.json yarn.lock /app/
RUN yarn
COPY . /app/
CMD ["yarn", "test"]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -1,22 +0,0 @@
const { removeTimes } = require("../utils");
const { CUSTOM_URL: URL } = process.env;
describe("Dozzle with custom base", () => {
beforeEach(async () => {
await page.goto(URL, { waitUntil: "networkidle2" });
});
it("renders full page on desktop", async () => {
await removeTimes(page);
const image = await page.screenshot({ fullPage: true });
expect(image).toMatchImageSnapshot();
});
it("and shows one container with correct title", async () => {
await removeTimes(page);
const menuTitle = await page.$eval("aside ul.menu-list li a", (e) => e.title);
expect(menuTitle).toEqual("custom_base");
});
});

View File

@@ -1,76 +0,0 @@
const puppeteer = require("puppeteer");
const { removeTimes } = require("../utils");
const iPhoneX = puppeteer.devices["iPhone X"];
const iPadLandscape = puppeteer.devices["iPad landscape"];
const { DEFAULT_URL: URL } = process.env;
describe("home page", () => {
beforeEach(async () => {
await page.goto(URL, { waitUntil: "networkidle2" });
});
it("renders full page on desktop", async () => {
await removeTimes(page);
const image = await page.screenshot({ fullPage: true });
expect(image).toMatchImageSnapshot();
});
it("renders ipad viewport", async () => {
await page.emulate(iPadLandscape);
await removeTimes(page);
const image = await page.screenshot();
expect(image).toMatchImageSnapshot();
});
it("renders iphone viewport", async () => {
await page.emulate(iPhoneX);
await removeTimes(page);
const image = await page.screenshot();
expect(image).toMatchImageSnapshot();
});
it("displays iphone menu", async () => {
await page.emulate(iPhoneX);
await page.click("a.navbar-burger");
const menuText = await page.$eval("aside ul.menu-list.is-hidden-mobile li a", (e) => e.textContent);
expect(menuText.trim()).toEqual("dozzle");
});
describe("has menu visible", () => {
beforeAll(async () => {
await jestPuppeteer.resetBrowser();
});
beforeEach(async () => {
await page.goto(URL, { waitUntil: "networkidle2" });
});
it("and shows one container with correct title", async () => {
const menuTitle = await page.$eval("aside ul.menu-list li a", (e) => e.title);
expect(menuTitle).toEqual("dozzle");
});
it("and menu is clickable", async () => {
await page.click("aside ul.menu-list li a");
const className = await page.$eval("aside ul.menu-list li a", (e) => e.className);
expect(className).toContain("router-link-exact-active");
});
it("and when clicked shows logs", async () => {
await page.click("aside ul.menu-list li a");
await page.waitForSelector("ul.events li span.text");
const text = await page.$eval("ul.events li:nth-child(1) span.text", (e) => e.textContent);
expect(text).toContain("Dozzle version dev");
});
});
});

View File

@@ -1,41 +0,0 @@
const puppeteer = require("puppeteer");
const { removeTimes } = require("../utils");
const iPhoneX = puppeteer.devices["iPhone X"];
const iPadLandscape = puppeteer.devices["iPad landscape"];
const { DEFAULT_URL: URL } = process.env;
describe("Dozzle with light mode", () => {
beforeAll(async () => {
await page.goto(URL + "/settings", { waitUntil: "networkidle2" });
await page.$$eval("label.switch", (elements) => {
elements.filter((e) => e.textContent.trim() === "Use light theme")[0].click();
});
});
beforeEach(async () => {
await page.goto(URL, { waitUntil: "networkidle2" });
});
it("renders full page on desktop", async () => {
await removeTimes(page);
const image = await page.screenshot({ fullPage: true });
expect(image).toMatchImageSnapshot();
});
it("renders ipad viewport", async () => {
await page.emulate(iPadLandscape);
await removeTimes(page);
const image = await page.screenshot();
expect(image).toMatchImageSnapshot();
});
it("renders iphone viewport", async () => {
await page.emulate(iPhoneX);
await removeTimes(page);
const image = await page.screenshot();
expect(image).toMatchImageSnapshot();
});
});

View File

@@ -1,9 +0,0 @@
module.exports = {
launch: {
headless: process.env.HEADLESS !== "false",
defaultViewport: { width: 1920, height: 1200 },
args: ["--no-sandbox", "--disable-setuid-sandbox"],
executablePath: process.env.CHROME_EXE_PATH || "",
},
browserContext: "incognito",
};

View File

@@ -1,5 +0,0 @@
const { toMatchImageSnapshot } = require("jest-image-snapshot");
expect.extend({ toMatchImageSnapshot });
jest.setTimeout(5000);

View File

@@ -1,24 +0,0 @@
{
"name": "test",
"version": "1.0.0",
"description": "",
"scripts": {
"test": "jest"
},
"author": "",
"license": "ISC",
"dependencies": {
"jest": "^27.0.6",
"jest-image-snapshot": "^4.0.0",
"puppeteer": "^9.0.0"
},
"jest": {
"preset": "jest-puppeteer",
"setupFilesAfterEnv": [
"<rootDir>/jest-setup.js"
]
},
"devDependencies": {
"jest-puppeteer": "^5.0.1"
}
}

View File

@@ -1,8 +0,0 @@
async function removeTimes(page) {
await page.waitForSelector("time");
await page.evaluate(() => {
(document.querySelectorAll("time") || []).forEach((el) => el.remove());
});
}
module.exports = { removeTimes };

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +0,0 @@
module.exports = {
clearMocks: true,
testEnvironment: "jsdom",
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",
},
};

15
jest.config.ts Normal file
View File

@@ -0,0 +1,15 @@
import type { Config } from "@jest/types";
const config: Config.InitialOptions = {
preset: "ts-jest",
testEnvironment: "jsdom",
testPathIgnorePatterns: ["node_modules", "<rootDir>/integration/", "<rootDir>/e2e/"],
transform: {
"^.+\\.vue$": "@vue/vue3-jest",
},
moduleNameMapper: {
"@/(.*)": ["<rootDir>/assets/$1"],
},
};
export default config;

View File

@@ -1,3 +0,0 @@
{
"include": ["./assets/**/*"]
}

12
main.go
View File

@@ -41,7 +41,7 @@ func (args) Version() string {
return version
}
//go:embed static
//go:embed dist
var content embed.FS
func main() {
@@ -95,17 +95,17 @@ func main() {
Password: args.Password,
}
static, err := fs.Sub(content, "static")
assets, err := fs.Sub(content, "dist")
if err != nil {
log.Fatalf("Could not open embedded static folder: %v", err)
log.Fatalf("Could not open embedded dist folder: %v", err)
}
if _, ok := os.LookupEnv("LIVE_FS"); ok {
log.Info("Using live filesystem at ./static")
static = os.DirFS("./static")
log.Info("Using live filesystem at ./dist")
assets = os.DirFS("./dist")
}
srv := web.CreateServer(dockerClient, static, config)
srv := web.CreateServer(dockerClient, assets, config)
go doStartEvent(args)
go func() {
log.Infof("Accepting connections on %s", srv.Addr)

View File

@@ -1,96 +1,89 @@
{
"name": "dozzle",
"version": "3.8.0",
"description": "Realtime log viewer for docker containers. ",
"scripts": {
"watch": "npm-run-all -p watch:*",
"watch:assets": "webpack --mode=development --watch",
"watch:server": "LIVE_FS=true reflex -c .reflex",
"predev": "make fake_static",
"dev": "npm-run-all -p dev-server watch:server",
"dev-server": "webpack serve --mode=development",
"prebuild": "yarn clean",
"build": "yarn webpack --mode=production",
"clean": "rm -rf static",
"release": "release-it",
"test": "TZ=UTC jest",
"postinstall": "husky install"
},
"repository": {
"type": "git",
"url": "git+https://github.com/amir20/dozzle.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/amir20/dozzle/issues"
},
"homepage": "https://github.com/amir20/dozzle#readme",
"dependencies": {
"ansi-to-html": "^0.7.1",
"buefy": "^0.9.9",
"bulma": "^0.9.3",
"date-fns": "^2.23.0",
"dompurify": "^2.3.1",
"fuzzysort": "^1.1.4",
"hotkeys-js": "^3.8.7",
"lodash.debounce": "^4.0.8",
"lodash.throttle": "^4.1.1",
"semver": "^7.3.5",
"splitpanes": "^2.3.8",
"store": "^2.0.12",
"vue": "^2.6.14",
"vue-meta": "^2.4.0",
"vue-router": "^3.5.2",
"vuex": "^3.6.2"
},
"devDependencies": {
"@babel/core": "^7.15.0",
"@babel/plugin-transform-runtime": "^7.15.0",
"@vue/component-compiler-utils": "^3.2.2",
"@vue/test-utils": "^1.2.2",
"autoprefixer": "^10.3.3",
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "^27.0.6",
"babel-preset-env": "^1.7.0",
"caniuse-lite": "^1.0.30001252",
"css-loader": "^6.2.0",
"eventsourcemock": "^2.0.0",
"html-webpack-plugin": "^5.3.2",
"husky": "^7.0.2",
"jest": "^27.0.6",
"jest-serializer-vue": "^2.0.2",
"lint-staged": "^11.1.2",
"mini-css-extract-plugin": "^2.2.0",
"npm-run-all": "^4.1.5",
"postcss": "^8.3.6",
"postcss-loader": "^6.1.1",
"prettier": "^2.3.2",
"release-it": "^14.11.5",
"sass": "^1.38.1",
"sass-loader": "^12.1.0",
"vue-hot-reload-api": "^2.3.4",
"vue-jest": "^3.0.7",
"vue-loader": "^15.9.8",
"vue-style-loader": "^4.1.3",
"vue-template-compiler": "^2.6.14",
"webpack": "^5.51.1",
"webpack-cli": "^4.8.0",
"webpack-dev-server": "^4.0.0",
"webpack-pwa-manifest": "^4.3.0"
},
"lint-staged": {
"*.{js,vue,css}": [
"prettier --write"
]
},
"release-it": {
"github": {
"release": false,
"releaseNotes": "git log --pretty=format:\"* %s (%h)\" $(git describe --abbrev=0 --tags $(git rev-list --tags --skip=1 --max-count=1))...HEAD~1"
"name": "dozzle",
"version": "3.10.1",
"description": "Realtime log viewer for docker containers. ",
"homepage": "https://github.com/amir20/dozzle#readme",
"bugs": {
"url": "https://github.com/amir20/dozzle/issues"
},
"npm": {
"publish": false
"repository": {
"type": "git",
"url": "git+https://github.com/amir20/dozzle.git"
},
"license": "ISC",
"author": "Amir Raminfar <findamir@gmail.com>",
"scripts": {
"watch:assets": "vite --open",
"watch:server": "LIVE_FS=true DOZZLE_ADDR=:3100 reflex -c .reflex",
"dev": "make fake_assets && npm-run-all -p watch:assets watch:server",
"build": "vite build",
"release": "release-it",
"test": "TZ=UTC jest",
"postinstall": "husky install"
},
"dependencies": {
"@iconify-json/carbon": "^1.0.11",
"@iconify-json/cil": "^1.0.1",
"@iconify-json/mdi": "^1.0.11",
"@iconify-json/mdi-light": "^1.0.1",
"@iconify-json/octicon": "^1.0.5",
"@oruga-ui/oruga-next": "^0.4.8",
"@oruga-ui/theme-bulma": "^0.1.5",
"@vitejs/plugin-vue": "^1.10.1",
"@vue/compiler-sfc": "^3.2.23",
"@vueuse/core": "^7.1.2",
"ansi-to-html": "^0.7.2",
"bulma": "^0.9.3",
"date-fns": "^2.27.0",
"fuzzysort": "^1.1.4",
"hotkeys-js": "^3.8.7",
"lodash.debounce": "^4.0.8",
"lodash.throttle": "^4.1.1",
"pinia": "^2.0.5",
"sass": "^1.44.0",
"semver": "^7.3.5",
"splitpanes": "^3.0.6",
"typescript": "^4.5.2",
"unplugin-auto-import": "^0.5.1",
"unplugin-icons": "^0.12.22",
"unplugin-vue-components": "^0.17.2",
"vite": "^2.6.14",
"vue": "^3.2.22",
"vue-router": "^4.0.12"
},
"devDependencies": {
"@babel/plugin-transform-runtime": "^7.16.4",
"@babel/preset-env": "^7.16.4",
"@pinia/testing": "^0.0.7",
"@types/jest": "^27.0.3",
"@types/lodash.debounce": "^4.0.6",
"@types/lodash.throttle": "^4.1.6",
"@types/semver": "^7.3.9",
"@vue/test-utils": "^2.0.0-rc.16",
"@vue/vue3-jest": "^27.0.0-alpha.4",
"eventsourcemock": "^2.0.0",
"husky": "^7.0.4",
"jest": "^27.4.3",
"jest-serializer-vue": "^2.0.2",
"lint-staged": "^12.1.2",
"npm-run-all": "^4.1.5",
"prettier": "^2.5.0",
"release-it": "^14.11.8",
"ts-jest": "^27.0.7",
"ts-node": "^10.4.0"
},
"lint-staged": {
"*.{js,vue,css}": [
"prettier --write"
]
},
"release-it": {
"github": {
"release": false,
"releaseNotes": "git log --pretty=format:\"* %s (%h)\" $(git describe --abbrev=0 --tags $(git rev-list --tags --skip=1 --max-count=1))...HEAD~1"
},
"npm": {
"publish": false
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More