From b79f08d3b3c81cd9a45b300e8769a88a81a80934 Mon Sep 17 00:00:00 2001 From: Takahiro Sato Date: Wed, 12 Oct 2022 22:34:37 +0900 Subject: [PATCH] Release (#2347) * :arrow_up: Bump @types/requestidlecallback from 0.3.4 to 0.3.5 in /web (#2326) Bumps [@types/requestidlecallback](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/requestidlecallback) from 0.3.4 to 0.3.5. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/requestidlecallback) --- updated-dependencies: - dependency-name: "@types/requestidlecallback" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump xo from 0.52.3 to 0.52.4 in /web (#2328) Bumps [xo](https://github.com/xojs/xo) from 0.52.3 to 0.52.4. - [Release notes](https://github.com/xojs/xo/releases) - [Commits](https://github.com/xojs/xo/compare/v0.52.3...v0.52.4) --- updated-dependencies: - dependency-name: xo dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump @types/node from 18.8.0 to 18.8.2 in /web (#2327) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.8.0 to 18.8.2. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump terser from 5.15.0 to 5.15.1 in /web (#2329) Bumps [terser](https://github.com/terser/terser) from 5.15.0 to 5.15.1. - [Release notes](https://github.com/terser/terser/releases) - [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md) - [Commits](https://github.com/terser/terser/compare/v5.15.0...v5.15.1) --- updated-dependencies: - dependency-name: terser dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump css-minimizer-webpack-plugin from 4.1.0 to 4.2.0 in /web (#2330) Bumps [css-minimizer-webpack-plugin](https://github.com/webpack-contrib/css-minimizer-webpack-plugin) from 4.1.0 to 4.2.0. - [Release notes](https://github.com/webpack-contrib/css-minimizer-webpack-plugin/releases) - [Changelog](https://github.com/webpack-contrib/css-minimizer-webpack-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/css-minimizer-webpack-plugin/compare/v4.1.0...v4.2.0) --- updated-dependencies: - dependency-name: css-minimizer-webpack-plugin dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump @types/node from 18.8.2 to 18.8.3 in /web (#2331) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.8.2 to 18.8.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump firebase from 9.10.0 to 9.11.0 in /web (#2332) Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 9.10.0 to 9.11.0. - [Release notes](https://github.com/firebase/firebase-js-sdk/releases) - [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@9.10.0...firebase@9.11.0) --- updated-dependencies: - dependency-name: firebase dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump css-minimizer-webpack-plugin from 4.2.0 to 4.2.1 in /web (#2333) Bumps [css-minimizer-webpack-plugin](https://github.com/webpack-contrib/css-minimizer-webpack-plugin) from 4.2.0 to 4.2.1. - [Release notes](https://github.com/webpack-contrib/css-minimizer-webpack-plugin/releases) - [Changelog](https://github.com/webpack-contrib/css-minimizer-webpack-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/css-minimizer-webpack-plugin/compare/v4.2.0...v4.2.1) --- updated-dependencies: - dependency-name: css-minimizer-webpack-plugin dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump @sentry/browser from 7.14.1 to 7.14.2 in /web (#2334) Bumps [@sentry/browser](https://github.com/getsentry/sentry-javascript) from 7.14.1 to 7.14.2. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.14.1...7.14.2) --- updated-dependencies: - dependency-name: "@sentry/browser" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump firebase-tools from 11.13.0 to 11.14.0 in /web (#2335) Bumps [firebase-tools](https://github.com/firebase/firebase-tools) from 11.13.0 to 11.14.0. - [Release notes](https://github.com/firebase/firebase-tools/releases) - [Changelog](https://github.com/firebase/firebase-tools/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/firebase-tools/compare/v11.13.0...v11.14.0) --- updated-dependencies: - dependency-name: firebase-tools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :sparkles: Fix lint * :arrow_up: Bump firebase-tools from 11.14.0 to 11.14.1 in /web (#2336) Bumps [firebase-tools](https://github.com/firebase/firebase-tools) from 11.14.0 to 11.14.1. - [Release notes](https://github.com/firebase/firebase-tools/releases) - [Changelog](https://github.com/firebase/firebase-tools/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/firebase-tools/compare/v11.14.0...v11.14.1) --- updated-dependencies: - dependency-name: firebase-tools dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :recycle: Refactor * :arrow_up: Bump cloud.google.com/go/firestore in /server (#2337) Bumps [cloud.google.com/go/firestore](https://github.com/googleapis/google-cloud-go) from 1.6.1 to 1.7.0. - [Release notes](https://github.com/googleapis/google-cloud-go/releases) - [Changelog](https://github.com/googleapis/google-cloud-go/blob/main/documentai/CHANGES.md) - [Commits](https://github.com/googleapis/google-cloud-go/compare/pubsub/v1.6.1...asset/v1.7.0) --- updated-dependencies: - dependency-name: cloud.google.com/go/firestore dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump google.golang.org/grpc from 1.49.0 to 1.50.0 in /server (#2338) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.49.0 to 1.50.0. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.49.0...v1.50.0) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump github.com/samber/mo from 1.5.0 to 1.5.1 in /server (#2340) Bumps [github.com/samber/mo](https://github.com/samber/mo) from 1.5.0 to 1.5.1. - [Release notes](https://github.com/samber/mo/releases) - [Commits](https://github.com/samber/mo/compare/v1.5.0...v1.5.1) --- updated-dependencies: - dependency-name: github.com/samber/mo dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump firebase.google.com/go/v4 from 4.8.0 to 4.9.0 in /server (#2339) Bumps [firebase.google.com/go/v4](https://github.com/firebase/firebase-admin-go) from 4.8.0 to 4.9.0. - [Release notes](https://github.com/firebase/firebase-admin-go/releases) - [Commits](https://github.com/firebase/firebase-admin-go/compare/v4.8.0...v4.9.0) --- updated-dependencies: - dependency-name: firebase.google.com/go/v4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump @sentry/browser from 7.14.2 to 7.15.0 in /web (#2341) Bumps [@sentry/browser](https://github.com/getsentry/sentry-javascript) from 7.14.2 to 7.15.0. - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/7.14.2...7.15.0) --- updated-dependencies: - dependency-name: "@sentry/browser" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump @babel/preset-env from 7.19.3 to 7.19.4 in /web (#2342) Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.19.3 to 7.19.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.19.4/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump @types/node from 18.8.3 to 18.8.4 in /web (#2343) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.8.3 to 18.8.4. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump firebase-tools from 11.14.1 to 11.14.2 in /web (#2344) Bumps [firebase-tools](https://github.com/firebase/firebase-tools) from 11.14.1 to 11.14.2. - [Release notes](https://github.com/firebase/firebase-tools/releases) - [Commits](https://github.com/firebase/firebase-tools/compare/v11.14.1...v11.14.2) --- updated-dependencies: - dependency-name: firebase-tools dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump firebase from 9.11.0 to 9.12.0 in /web (#2345) Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 9.11.0 to 9.12.0. - [Release notes](https://github.com/firebase/firebase-js-sdk/releases) - [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md) - [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@9.11.0...firebase@9.12.0) --- updated-dependencies: - dependency-name: firebase dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :arrow_up: Bump cypress from 10.9.0 to 10.10.0 in /web (#2346) Bumps [cypress](https://github.com/cypress-io/cypress) from 10.9.0 to 10.10.0. - [Release notes](https://github.com/cypress-io/cypress/releases) - [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md) - [Commits](https://github.com/cypress-io/cypress/commits) --- updated-dependencies: - dependency-name: cypress dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * :sparkles: Add theme to settings * :art: Format code Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- server/go.mod | 15 +- server/go.sum | 51 +- web/package-lock.json | 3070 ++++++++++++------------ web/package.json | 22 +- web/src/elm/Components/Diagram.elm | 44 +- web/src/elm/Dialog/Confirm.elm | 40 +- web/src/elm/Dialog/Input.elm | 48 +- web/src/elm/Dialog/Share.elm | 162 +- web/src/elm/Main.elm | 55 +- web/src/elm/Models/DiagramLocation.elm | 7 - web/src/elm/Models/Model.elm | 2 + web/src/elm/Models/Theme.elm | 66 + web/src/elm/Page/Embed.elm | 6 +- web/src/elm/Page/Help.elm | 38 +- web/src/elm/Page/List.elm | 88 +- web/src/elm/Page/New.elm | 28 +- web/src/elm/Page/NotFound.elm | 12 +- web/src/elm/Page/Settings.elm | 85 +- web/src/elm/Settings.elm | 29 +- web/src/elm/Views/Diagram/ER.elm | 126 +- web/src/elm/Views/Diagram/Toolbar.elm | 52 +- web/src/elm/Views/DropDownList.elm | 24 +- web/src/elm/Views/Footer.elm | 8 +- web/src/elm/Views/Header.elm | 57 +- web/src/elm/Views/Icon.elm | 100 +- web/src/elm/Views/Loading.elm | 4 +- web/src/elm/Views/Logo.elm | 24 +- web/src/elm/Views/Menu.elm | 24 +- web/src/elm/Views/Notification.elm | 10 +- web/src/elm/Views/Progress.elm | 4 +- web/src/elm/Views/Snackbar.elm | 8 +- web/src/elm/Views/Spinner.elm | 4 +- web/src/elm/Views/SplitWindow.elm | 22 +- web/src/elm/Views/Switch.elm | 10 +- web/src/elm/Views/SwitchWindow.elm | 12 +- web/src/elm/Views/Tooltip.elm | 6 +- web/src/ts/editor/lang.ts | 181 +- web/src/ts/index.ts | 9 +- web/src/ts/model.ts | 6 + web/src/ts/settings.ts | 4 + web/src/ts/utils.ts | 1 + web/tests/Models/Fuzzer.elm | 1 - 42 files changed, 2330 insertions(+), 2235 deletions(-) create mode 100644 web/src/elm/Models/Theme.elm create mode 100644 web/src/ts/utils.ts diff --git a/server/go.mod b/server/go.mod index 83ee56cb1..a518f1f72 100644 --- a/server/go.mod +++ b/server/go.mod @@ -1,8 +1,8 @@ module github.com/harehare/textusm require ( - cloud.google.com/go/firestore v1.6.1 - firebase.google.com/go/v4 v4.8.0 + cloud.google.com/go/firestore v1.7.0 + firebase.google.com/go/v4 v4.9.0 github.com/99designs/gqlgen v0.17.20 github.com/form3tech-oss/jwt-go v3.2.5+incompatible github.com/go-chi/chi/v5 v5.0.7 @@ -10,21 +10,21 @@ require ( github.com/go-chi/httprate v0.7.0 github.com/kelseyhightower/envconfig v1.4.0 github.com/rs/zerolog v1.28.0 - github.com/samber/mo v1.5.0 + github.com/samber/mo v1.5.1 github.com/satori/go.uuid v1.2.0 github.com/stretchr/testify v1.8.0 github.com/vektah/gqlparser/v2 v2.5.1 golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde google.golang.org/api v0.98.0 - google.golang.org/grpc v1.49.0 + google.golang.org/grpc v1.50.0 ) require ( cloud.google.com/go v0.104.0 // indirect cloud.google.com/go/compute v1.9.0 // indirect cloud.google.com/go/iam v0.3.0 // indirect - cloud.google.com/go/storage v1.25.0 // indirect + cloud.google.com/go/storage v1.26.0 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -43,13 +43,14 @@ require ( github.com/stretchr/objx v0.4.0 // indirect go.opencensus.io v0.23.0 // indirect golang.org/x/net v0.0.0-20220909164309-bea034e7d591 // indirect - golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094 // indirect + golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 // indirect golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64 // indirect golang.org/x/text v0.3.7 // indirect + golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/appengine/v2 v2.0.2 // indirect - google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc // indirect + google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/server/go.sum b/server/go.sum index c8781048d..6d040aa7c 100644 --- a/server/go.sum +++ b/server/go.sum @@ -26,7 +26,6 @@ cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+Y cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.104.0 h1:gSmWO7DY1vOm0MVU6DNXM11BWHHsTUmsC5cv1fuW5X8= @@ -38,7 +37,6 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.2.0/go.mod h1:xlogom/6gr8RJGBe7nT2eGsQYAFUbbv8dbC29qE3Xmw= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= @@ -48,9 +46,8 @@ cloud.google.com/go/compute v1.9.0 h1:ED/FP4xv8GJw63v556/ASNc1CeeLUO2Bs8nzaHchkH cloud.google.com/go/compute v1.9.0/go.mod h1:lWv1h/zUWTm/LozzfTJhBSkd6ShQq8la8VeeuOEGxfY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.6.1 h1:8rBq3zRjnHx8UtBvaOWqBB1xq9jH6/wltfQLlTMh2Fw= -cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= -cloud.google.com/go/iam v0.1.1/go.mod h1:CKqrcnI/suGpybEHxZ7BMehL0oA4LpdyJdUlTl9jVMw= +cloud.google.com/go/firestore v1.7.0 h1:cNkQyruzd5v7FjmL6eeDqwqgX+FbPCjbHxz7vsMhGoo= +cloud.google.com/go/firestore v1.7.0/go.mod h1:0b8DxQkXhbg/PmsjhCUAg4EExIuifAvbHj5Z/iX3BYI= cloud.google.com/go/iam v0.3.0 h1:exkAomrVUuzx9kWFI1wm3KI0uoDeUFPB4kKGzx6x+Gc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -62,13 +59,12 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.21.0/go.mod h1:XmRlxkgPjlBONznT2dDUU/5XlpU2OjMnKuqnZI01LAA= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.25.0 h1:D2Dn0PslpK7Z3B2AvuUHyIC762bDbGJdlmQlCBR71os= -cloud.google.com/go/storage v1.25.0/go.mod h1:Qys4JU+jeup3QnuKKAosWuxrD95C4MSqxfVDnSirDsI= +cloud.google.com/go/storage v1.26.0 h1:lYAGjknyDJirSzfwUlkv4Nsnj7od7foxQNH/fqZqles= +cloud.google.com/go/storage v1.26.0/go.mod h1:mk/N7YwIKEWyTvXAWQCIeiCTdLoRH6Pd5xmSnolQLTI= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -firebase.google.com/go/v4 v4.8.0 h1:ooJqjFEh1G6DQ5+wyb/RAXAgku0E2RzJeH6WauSpWSo= -firebase.google.com/go/v4 v4.8.0/go.mod h1:y+j6xX7BgBco/XaN+YExIBVm6pzvYutheDV3nprvbWc= +firebase.google.com/go/v4 v4.9.0 h1:VCagv+hYOxUGeuyu7J+o2rKJkDp5JQBbA3Bzlof+LMk= +firebase.google.com/go/v4 v4.9.0/go.mod h1:bHhRkM3VtGJx19rQdW7GDNLdnA8/T6SsnN5nXk/xdw8= github.com/99designs/gqlgen v0.17.20 h1:O7WzccIhKB1dm+7g6dhQcULINftfiLSBg2l/mwbpJMw= github.com/99designs/gqlgen v0.17.20/go.mod h1:Mja2HI23kWT1VRH09hvWshFgOzKswpO20o4ScpJIES4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -260,8 +256,8 @@ github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY= github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/samber/mo v1.5.0 h1:ku5v8jK2JWpEVPmhvtZk0Bny69nVCPNUdIKxSESZDLg= -github.com/samber/mo v1.5.0/go.mod h1:pDuQgWscOVGGoEz+NAeth/Xq+MPAcXxCeph1XIAm/DU= +github.com/samber/mo v1.5.1 h1:5dRSevAB33Q/OrYwTmtksHHxquuf2urnRSUTsdTFysY= +github.com/samber/mo v1.5.1/go.mod h1:pDuQgWscOVGGoEz+NAeth/Xq+MPAcXxCeph1XIAm/DU= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= @@ -404,14 +400,14 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094 h1:2o1E+E8TpNLklK9nHiPiK1uzIYrIHt+cQx3ynCwq9V8= golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 h1:lxqLZaMad/dJHMFZH0NiNpiEZI/nhgWhe4wgzpE+MuA= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -474,16 +470,13 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -510,6 +503,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -600,16 +595,11 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.64.0/go.mod h1:931CdxA8Rm4t6zqTFGSsgwbAEZ2+GMYurbndwSimebM= -google.golang.org/api v0.66.0/go.mod h1:I1dmXYpX7HGwz/ejRxwQp2qj5bFAz93HiCU1C1oYd9M= google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.69.0/go.mod h1:boanBiw+h5c3s+tBPgEzLDRHfFLWV0qXxRHz3ws7C80= google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.73.0/go.mod h1:lbd/q6BRFJbdpV6OUCXstVeiI5mL/d3/WifG7iNKnjI= google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= @@ -625,7 +615,6 @@ google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine/v2 v2.0.1/go.mod h1:XgltgQxPOF3ShivrVrZyfvYCx8Dunh73bKjUuXUZb8Q= google.golang.org/appengine/v2 v2.0.2 h1:MSqyWy2shDLwG7chbwBJ5uMyw6SNqJzhJHNDwYB0Akk= google.golang.org/appengine/v2 v2.0.2/go.mod h1:PkgRUWz4o1XOvbqtWTkBtCitEJ5Tp4HoVEdMMYQR/8E= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -685,20 +674,12 @@ google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211223182754-3ac035c7e7cb/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220111164026-67b88f271998/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220114231437-d2e6a121cae0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220201184016-50beb8ab5c44/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220211171837-173942840c17/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220216160803-4663080d8bc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= @@ -715,8 +696,8 @@ google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc h1:Nf+EdcTLHR8qDNN/KfkQL0u0ssxt9OhbaWCl5C0ucEI= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006 h1:mmbq5q8M1t7dhkLw320YK4PsOXm6jdnUAkErImaIqOg= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -748,8 +729,8 @@ google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11 google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0 h1:WTLtQzmQori5FUH25Pq4WT22oCsv8USpQ+F6rqtsmxw= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0 h1:fPVVDxY9w++VjTZsYvXWqEf9Rqar/e+9zYfxKK+W+YU= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= diff --git a/web/package-lock.json b/web/package-lock.json index aa93e219b..423b5ca3e 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -9,10 +9,10 @@ "version": "0.11.4", "license": "MIT", "dependencies": { - "@sentry/browser": "^7.14.1", + "@sentry/browser": "^7.15.0", "clipboard-copy": "^4.0.1", "dexie": "^3.2.2", - "firebase": "^9.10.0", + "firebase": "^9.12.0", "html2canvas": "^1.4.1", "jspdf": "^2.5.1", "monaco-editor": "^0.34.0", @@ -23,7 +23,7 @@ }, "devDependencies": { "@babel/core": "^7.19.3", - "@babel/preset-env": "^7.19.3", + "@babel/preset-env": "^7.19.4", "@commitlint/cli": "^17.1.2", "@commitlint/config-conventional": "^17.1.0", "@dillonkearns/elm-graphql": "^4.3.0", @@ -32,8 +32,8 @@ "@trivago/prettier-plugin-sort-imports": "^3.3.0", "@tsconfig/strictest": "^1.0.2", "@types/jspdf": "^2.0.0", - "@types/node": "^18.8.0", - "@types/requestidlecallback": "^0.3.4", + "@types/node": "^18.8.4", + "@types/requestidlecallback": "^0.3.5", "@types/svgo": "^2.6.4", "@types/uuid": "^8.3.4", "@types/wicg-file-system-access": "^2020.9.5", @@ -42,9 +42,9 @@ "concurrently": "^7.4.0", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.7.1", - "css-minimizer-webpack-plugin": "^4.1.0", + "css-minimizer-webpack-plugin": "^4.2.1", "cssnano-preset-advanced": "^5.3.8", - "cypress": "^10.9.0", + "cypress": "^10.10.0", "devcert": "^1.2.2", "elm": "^0.19.1-5", "elm-constants": "^1.0.0", @@ -53,7 +53,7 @@ "elm-review": "^2.7.5", "elm-test": "^0.19.1-revision9", "elm-webpack-loader": "^8.0.0", - "firebase-tools": "^11.13.0", + "firebase-tools": "^11.14.2", "html-inline-css-webpack-plugin": "^1.11.1", "html-webpack-plugin": "^5.5.0", "lint-staged": "^13.0.3", @@ -69,7 +69,7 @@ "stylelint-config-prettier": "^9.0.3", "stylelint-config-standard": "^28.0.0", "svg-inline-loader": "^0.8.2", - "terser": "^5.15.0", + "terser": "^5.15.1", "terser-webpack-plugin": "^5.3.6", "ts-loader": "^9.4.1", "typescript": "^4.8.4", @@ -79,7 +79,7 @@ "webpack-merge": "^5.8.0", "workbox-sw": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", - "xo": "^0.52.3" + "xo": "^0.52.4" } }, "node_modules/@ampproject/remapping": { @@ -124,9 +124,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz", - "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -481,9 +481,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -742,14 +742,14 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", + "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.18.8" }, @@ -1083,12 +1083,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1136,12 +1136,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", - "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1545,12 +1545,12 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.3.tgz", - "integrity": "sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", + "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.19.4", "@babel/helper-compilation-targets": "^7.19.3", "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", @@ -1565,7 +1565,7 @@ "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-object-rest-spread": "^7.19.4", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", @@ -1589,10 +1589,10 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-block-scoping": "^7.19.4", "@babel/plugin-transform-classes": "^7.19.0", "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.13", + "@babel/plugin-transform-destructuring": "^7.19.4", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", @@ -1619,7 +1619,7 @@ "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.3", + "@babel/types": "^7.19.4", "babel-plugin-polyfill-corejs2": "^0.3.3", "babel-plugin-polyfill-corejs3": "^0.6.0", "babel-plugin-polyfill-regenerator": "^0.4.1", @@ -1726,12 +1726,12 @@ } }, "node_modules/@babel/types": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", - "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, @@ -2532,14 +2532,14 @@ } }, "node_modules/@firebase/analytics": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.8.0.tgz", - "integrity": "sha512-wkcwainNm8Cu2xkJpDSHfhBSdDJn86Q1TZNmLWc67VrhZUHXIKXxIqb65/tNUVE+I8+sFiDDNwA+9R3MqTQTaA==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.8.2.tgz", + "integrity": "sha512-WF0FK6MIiyM6Q8eNb2ysGxS8BhDvg6ZdVXNW8lp9tM5trqrvUMSeFEX89N/o0X0K0QZfDgjvzRgylRMMuM+XHQ==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/installations": "0.5.12", + "@firebase/component": "0.5.19", + "@firebase/installations": "0.5.14", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2547,14 +2547,14 @@ } }, "node_modules/@firebase/analytics-compat": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.1.13.tgz", - "integrity": "sha512-QC1DH/Dwc8fBihn0H+jocBWyE17GF1fOCpCrpAiQ2u16F/NqsVDVG4LjIqdhq963DXaXneNY7oDwa25Up682AA==", + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.1.15.tgz", + "integrity": "sha512-qGDWAMpLlT0zG8to7WrUoi8pv5BuGTOjm1+9qBiDWLeD1KQDKCeSGDuVGKJRFMEJwGW8lI7xvk/Cff/NCXZxzg==", "dependencies": { - "@firebase/analytics": "0.8.0", + "@firebase/analytics": "0.8.2", "@firebase/analytics-types": "0.7.0", - "@firebase/component": "0.5.17", - "@firebase/util": "1.6.3", + "@firebase/component": "0.5.19", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2567,25 +2567,25 @@ "integrity": "sha512-DNE2Waiwy5+zZnCfintkDtBfaW6MjIG883474v6Z0K1XZIvl76cLND4iv0YUb48leyF+PJK1KO2XrgHb/KpmhQ==" }, "node_modules/@firebase/app": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.7.33.tgz", - "integrity": "sha512-7K7ljuFhbT9uF0gTvuA7ZrpFFnS1eJLplfjJdjDQFWyjD6Cwk0FXNdu75WvoWgywoQCGiVBX8u5Jb437UQIhWQ==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.8.1.tgz", + "integrity": "sha512-/ctTwmSAc60Tv7pe9GXSLDsnHn+I0vp2f8AZLeZRdbbXLxvHc6LDmhKViRolNOGzwBYr0H1TpVVWgkxEkjwlXg==", "dependencies": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "idb": "7.0.1", "tslib": "^2.1.0" } }, "node_modules/@firebase/app-check": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.5.12.tgz", - "integrity": "sha512-l+MmvupSGT/F+I5ei7XjhEfpoL4hLVJr0vUwcG5NEf2hAkQnySli9fnbl9fZu1BJaQ2kthrMmtg1gcbcM9BUCQ==", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.5.14.tgz", + "integrity": "sha512-GZWgcxC53uCH1Yx+6Ll6/pZuskWrkfGhSsk6Wl8SFh/wZvJgdlNWRDkCKyoJPcai8ttkMJOl6u7WFKk4m5O3Bg==", "dependencies": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2593,15 +2593,15 @@ } }, "node_modules/@firebase/app-check-compat": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.2.12.tgz", - "integrity": "sha512-GFppNLlUyMN9Iq31ME/+GkjRVKlc+MeanzUKQ9UaR73ZsYH3oX3Ja+xjoYgixaVJDDG+ofBYR7ZXTkkQdSR/pw==", + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.2.14.tgz", + "integrity": "sha512-w1yvBfzr5Nl159ZlXl5DfKQENlBybwZ0Gk6tdVjI3CAOYvQZqp26q7CbVskY6TdckKUfl5nGBBgjTwCf4vkpGQ==", "dependencies": { - "@firebase/app-check": "0.5.12", + "@firebase/app-check": "0.5.14", "@firebase/app-check-types": "0.4.0", - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2619,21 +2619,21 @@ "integrity": "sha512-SsWafqMABIOu7zLgWbmwvHGOeQQVQlwm42kwwubsmfLmL4Sf5uGpBfDhQ0CAkpi7bkJ/NwNFKafNDL9prRNP0Q==" }, "node_modules/@firebase/app-compat": { - "version": "0.1.34", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.1.34.tgz", - "integrity": "sha512-3XSrHDgtASIH8j6sDngiKykDcqlEM0mYplJTYdyN69ruZ1o0M+bUhIvX9mUoRelWZGT1BcMpFmh/62vz/wN72Q==", + "version": "0.1.36", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.1.36.tgz", + "integrity": "sha512-7xLuYGCvdT7aPuZhiGlvshD/LOAHpF4t6pcUOxyEVQY6kx/ms3nEWIThsCMxhmOB7p16y/uY5O6q0/MUnXCu9A==", "dependencies": { - "@firebase/app": "0.7.33", - "@firebase/component": "0.5.17", + "@firebase/app": "0.8.1", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, "node_modules/@firebase/app-types": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.7.0.tgz", - "integrity": "sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg==" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.8.0.tgz", + "integrity": "sha512-Lec3VVquUwXPn2UReGSsfTxuMBVRmzGIwA/CJnF0LQuPgv9kOmXk9mVqsDMfHxHtqjai0n6wWHR2TqjdVV/bYA==" }, "node_modules/@firebase/app/node_modules/idb": { "version": "7.0.1", @@ -2641,13 +2641,13 @@ "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" }, "node_modules/@firebase/auth": { - "version": "0.20.7", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.20.7.tgz", - "integrity": "sha512-hKjnMZWOwn/HNSJNLAVmlBRQKRMOHGiD7vTMT2Og4oV8sFwRygxyoC7/OsupCUA6GuC4XsnDP/+WgE9LOcqB2A==", + "version": "0.20.9", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.20.9.tgz", + "integrity": "sha512-2HiJnVG8nn8UbjKQYcMSCCSRPFwewaeOuaLtsHsZyXkIR+l9Z6D1IPr0pT92xyl+G9lmKaljhF2qfpX7AQChyw==", "dependencies": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "node-fetch": "2.6.7", "selenium-webdriver": "4.1.2", "tslib": "^2.1.0" @@ -2657,14 +2657,14 @@ } }, "node_modules/@firebase/auth-compat": { - "version": "0.2.20", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.2.20.tgz", - "integrity": "sha512-UwDxCQ2/+8dTp0oE6CmrR1n5e78H8By3hNBiTtwSqP/H2ZWxn9SfCdGt5PXF6NTnWAZ/0rs490RPM0koCYxkjA==", + "version": "0.2.22", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.2.22.tgz", + "integrity": "sha512-42/4d1j6mdpCeU94UjC1YY46m7AzK2BIm9C1BcmN1O2GyX02KDggPBFLc0yW9QCcIyLEUPZzzQETxyfIQYDhYg==", "dependencies": { - "@firebase/auth": "0.20.7", + "@firebase/auth": "0.20.9", "@firebase/auth-types": "0.11.0", - "@firebase/component": "0.5.17", - "@firebase/util": "1.6.3", + "@firebase/component": "0.5.19", + "@firebase/util": "1.7.1", "node-fetch": "2.6.7", "selenium-webdriver": "4.1.2", "tslib": "^2.1.0" @@ -2692,58 +2692,58 @@ } }, "node_modules/@firebase/component": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.17.tgz", - "integrity": "sha512-mTM5CBSIlmI+i76qU4+DhuExnWtzcPS3cVgObA3VAjliPPr3GrUlTaaa8KBGfxsD27juQxMsYA0TvCR5X+GQ3Q==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.19.tgz", + "integrity": "sha512-n/1HH2graiuMkHfhbGLuO+0msStydxEKmIMUT7bpBmxR4U9myzIwsG81XJImqgIWtbhd05HgUC+vpjZ+atUMbw==", "dependencies": { - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, "node_modules/@firebase/database": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.13.6.tgz", - "integrity": "sha512-5IZIBw2LT50Z8mwmKYmdX37p+Gg2HgeJsrruZmRyOSVgbfoY4Pg87n1uFx6qWqDmfL6HwQgwcrrQfVIXE3C5SA==", + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.13.8.tgz", + "integrity": "sha512-XPrKglNEU3AVQ5sm33NDfBkUwtOtIug82RQDO6ykQIlDNr63MryyZg4qaejI4hp2BQ+OXtATB7lKiefZASso9w==", "dependencies": { "@firebase/auth-interop-types": "0.1.6", - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "faye-websocket": "0.11.4", "tslib": "^2.1.0" } }, "node_modules/@firebase/database-compat": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.2.6.tgz", - "integrity": "sha512-Ls1BAODaiDYgeJljrIgSuC7JkFIY/HNhhNYebzZSoGQU62RuvnaO3Qgp2EH6h2LzHyRnycNadfh1suROtPaUIA==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.2.8.tgz", + "integrity": "sha512-NuOMV3/Y7hcvQcD5GjdRiOGRfUOHTaoI/eF9OYaabSNYI4XwRWapC32sfOznEpkDZOxT7cXDDzsq8/SXtvQMdg==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/database": "0.13.6", - "@firebase/database-types": "0.9.13", + "@firebase/component": "0.5.19", + "@firebase/database": "0.13.8", + "@firebase/database-types": "0.9.15", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, "node_modules/@firebase/database-types": { - "version": "0.9.13", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.9.13.tgz", - "integrity": "sha512-dIJ1zGe3EHMhwcvukTOPzYlFYFIG1Et5Znl7s7y/ZTN2/toARRNnsv1qCKvqevIMYKvIrRsYOYfOXDS8l1YIJA==", + "version": "0.9.15", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.9.15.tgz", + "integrity": "sha512-VCFblWH/TPRoaU+H+DRk9PWsaYqQ26/BIHYq5D2Wj+vvY9DrG0CkiovTOWNQkWDGQqf6X+JgSafob8kBIeea5Q==", "dependencies": { - "@firebase/app-types": "0.7.0", - "@firebase/util": "1.6.3" + "@firebase/app-types": "0.8.0", + "@firebase/util": "1.7.1" } }, "node_modules/@firebase/firestore": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.5.0.tgz", - "integrity": "sha512-ZwpZROpHDAwX4dvthkYv5WTqzWMPDNIVFWifDYpelWclsRN0cBxqLZPzh2wBtOWwMLIOoau7QIltzapqLZaScw==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.7.0.tgz", + "integrity": "sha512-la5zbC/1W/a0ikapQgDy0QqaeK6sTIqZYzrmvrI0hDZu9XcwqoXbudvI+zD8r3CqV0w98bxyU5ADtJrdaNBgzQ==", "dependencies": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", - "@firebase/webchannel-wrapper": "0.7.0", + "@firebase/util": "1.7.1", + "@firebase/webchannel-wrapper": "0.8.0", "@grpc/grpc-js": "^1.3.2", "@grpc/proto-loader": "^0.6.13", "node-fetch": "2.6.7", @@ -2757,14 +2757,14 @@ } }, "node_modules/@firebase/firestore-compat": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.1.25.tgz", - "integrity": "sha512-Pf7Aa1dzG2/2bmC5kQmNo5U8RtnwGxEysuAJE9T7QrmEyi0RkzYFNp9sSfSIC7kWKhT/KfmGcDcQq4dtL9oFWQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.2.0.tgz", + "integrity": "sha512-fhyHq0imfnzZteL5W75DSucEvx94PJYTdc8y18fNAqb157CEcyAoGYq6qSQY+27L0lRBomnGginkZWp2svpJYw==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/firestore": "3.5.0", + "@firebase/component": "0.5.19", + "@firebase/firestore": "3.7.0", "@firebase/firestore-types": "2.5.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2781,15 +2781,15 @@ } }, "node_modules/@firebase/functions": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.8.4.tgz", - "integrity": "sha512-o1bB0xMyQKe+b246zGnjwHj4R6BH4mU2ZrSaa/3QvTpahUQ3hqYfkZPLOXCU7+vEFxHb3Hd4UUjkFhxoAcPqLA==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.8.6.tgz", + "integrity": "sha512-kFOW3hgEe4vz+do3qmv7joGdwv3JUnHHh36tGopk9/7m/P6LSpGGLtO1tbjLVC4dh3bXZ2NJpAiIQMW8t+cJGw==", "dependencies": { "@firebase/app-check-interop-types": "0.1.0", "@firebase/auth-interop-types": "0.1.6", - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/messaging-interop-types": "0.1.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "node-fetch": "2.6.7", "tslib": "^2.1.0" }, @@ -2798,14 +2798,14 @@ } }, "node_modules/@firebase/functions-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.2.4.tgz", - "integrity": "sha512-Crfn6il1yXGuXkjSd8nKrqR4XxPvuP19g64bXpM6Ix67qOkQg676kyOuww0FF17xN0NSXHfG8Pyf+CUrx8wJ5g==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.2.6.tgz", + "integrity": "sha512-UxkxnclADYE6GlP2F0U63I/2+DlTuzw8NA0Ur6tGVAlQ/0DfvydKq6c3CE4DMeBRbxgokXrjK24C8rfEIxMZ6w==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/functions": "0.8.4", + "@firebase/component": "0.5.19", + "@firebase/functions": "0.8.6", "@firebase/functions-types": "0.5.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2818,12 +2818,12 @@ "integrity": "sha512-qza0M5EwX+Ocrl1cYI14zoipUX4gI/Shwqv0C1nB864INAD42Dgv4v94BCyxGHBg2kzlWy8PNafdP7zPO8aJQA==" }, "node_modules/@firebase/installations": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.5.12.tgz", - "integrity": "sha512-Zq43fCE0PB5tGJ3ojzx5RNQzKdej1188qgAk22rwjuhP7npaG/PlJqDG1/V0ZjTLRePZ1xGrfXSPlA17c/vtNw==", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.5.14.tgz", + "integrity": "sha512-J6F4wOuaCBK8PW+c5clPTfxnDJ4nOM2uiY4A3NF/QA/k+jsaA/ibobAwep+wXjfQN/eyL1DNhgPFl5NvuqEEwQ==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/util": "1.6.3", + "@firebase/component": "0.5.19", + "@firebase/util": "1.7.1", "idb": "7.0.1", "tslib": "^2.1.0" }, @@ -2832,14 +2832,14 @@ } }, "node_modules/@firebase/installations-compat": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.1.12.tgz", - "integrity": "sha512-BIhFpWIn/GkuOa+jnXkp3SDJT2RLYJF6MWpinHIBKFJs7MfrgYZ3zQ1AlhobDEql+bkD1dK4dB5sNcET2T+EyA==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.1.14.tgz", + "integrity": "sha512-oqhK2JRPCbXLQOXoBJIW/YKK2Qc2XyLUWGwQPU9Q3RzZG6wHtLcNPfTPUbF5Aq277sMZVQQQLPTQkUraXPAP1g==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/installations": "0.5.12", + "@firebase/component": "0.5.19", + "@firebase/installations": "0.5.14", "@firebase/installations-types": "0.4.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2868,14 +2868,14 @@ } }, "node_modules/@firebase/messaging": { - "version": "0.9.16", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.9.16.tgz", - "integrity": "sha512-Yl9gGrAvJF6C1gg3+Cr2HxlL6APsDEkrorkFafmSP1l+rg1epZKoOAcKJbSF02Vtb50wfb9FqGGy8tzodgETxg==", + "version": "0.9.18", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.9.18.tgz", + "integrity": "sha512-hQQLrdOkn0HQy3BjscIJCq8dGuUH9fEFFc+98OJCFXYd9M9tIGs6ztOXYJEAZzkzkWdvf6hrrISl7p+414SUYA==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/installations": "0.5.12", + "@firebase/component": "0.5.19", + "@firebase/installations": "0.5.14", "@firebase/messaging-interop-types": "0.1.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "idb": "7.0.1", "tslib": "^2.1.0" }, @@ -2884,13 +2884,13 @@ } }, "node_modules/@firebase/messaging-compat": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.1.16.tgz", - "integrity": "sha512-uG7rWcXJzU8vvlEBFpwG1ndw/GURrrmKcwsHopEWbsPGjMRaVWa7XrdKbvIR7IZohqPzcC/V9L8EeqF4Q4lz8w==", + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.1.18.tgz", + "integrity": "sha512-rW/O3W3a6KTB4SWNUOPDyUm2pBxKOZNA1GXIlSPHFR+UZEX7dL5IQePrtaALHmY0rDXwJRBw2d0b0fy0PYpY3g==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/messaging": "0.9.16", - "@firebase/util": "1.6.3", + "@firebase/component": "0.5.19", + "@firebase/messaging": "0.9.18", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2908,14 +2908,14 @@ "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" }, "node_modules/@firebase/performance": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.5.12.tgz", - "integrity": "sha512-MPVTkOkGrm2SMQgI1FPNBm85y2pPqlPb6VDjIMCWkVpAr6G1IZzUT24yEMySRcIlK/Hh7/Qu1Nu5ASRzRuX6+Q==", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.5.14.tgz", + "integrity": "sha512-VKHyy7YIiHMNu4kO0l6hC+JiKwQ+8oqjDmlaRie+Pm+UQ1SgVwyE7L1O11+aXE0jiMXxupcaVVHceZ1i2palTQ==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/installations": "0.5.12", + "@firebase/component": "0.5.19", + "@firebase/installations": "0.5.14", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2923,15 +2923,15 @@ } }, "node_modules/@firebase/performance-compat": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.1.12.tgz", - "integrity": "sha512-IBORzUeGY1MGdZnsix9Mu5z4+C3WHIwalu0usxvygL0EZKHztGG8bppYPGH/b5vvg8QyHs9U+Pn1Ot2jZhffQQ==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.1.14.tgz", + "integrity": "sha512-jZG9rB9/9dnCqBEPhk+bMhLiCQUEgJDyNA7K1xwmrr4jXeJ3y1o84i71g7uKZrSzP5p68iLXKPohb2dMfgirzw==", "dependencies": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/performance": "0.5.12", + "@firebase/performance": "0.5.14", "@firebase/performance-types": "0.1.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2944,14 +2944,14 @@ "integrity": "sha512-6p1HxrH0mpx+622Ql6fcxFxfkYSBpE3LSuwM7iTtYU2nw91Hj6THC8Bc8z4nboIq7WvgsT/kOTYVVZzCSlXl8w==" }, "node_modules/@firebase/remote-config": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.3.11.tgz", - "integrity": "sha512-qA84dstrvVpO7rWT/sb2CLv1kjHVmz59SRFPKohJJYFBcPOGK4Pe4FWWhKAE9yg1Gnl0qYAGkahOwNawq3vE0g==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.3.13.tgz", + "integrity": "sha512-BS8mLDa6uqLzausrXjo+zma0zvN3DDMDNOQF0fZjNLa02gA2doC3Ee1EoWeZoS1tOCpHJ7eCfz5bPbg/Z4ostA==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/installations": "0.5.12", + "@firebase/component": "0.5.19", + "@firebase/installations": "0.5.14", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2959,15 +2959,15 @@ } }, "node_modules/@firebase/remote-config-compat": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.1.12.tgz", - "integrity": "sha512-Yz7Gtb2rLa7ykXZX9DnSTId8CXd++jFFLW3foUImrYwJEtWgLJc7gwkRfd1M73IlKGNuQAY+DpUNF0n1dLbecA==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.1.14.tgz", + "integrity": "sha512-huul0UFXjHLt9T6grPr10uDjwignm29K3/xhf+Ga2eGuiBPVQUsEhQf1S+hr9uGhk/s7GZ7sl8Z7BKKmtJoiLg==", "dependencies": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/remote-config": "0.3.11", + "@firebase/remote-config": "0.3.13", "@firebase/remote-config-types": "0.2.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2980,12 +2980,12 @@ "integrity": "sha512-hqK5sCPeZvcHQ1D6VjJZdW6EexLTXNMJfPdTwbD8NrXUw6UjWC4KWhLK/TSlL0QPsQtcKRkaaoP+9QCgKfMFPw==" }, "node_modules/@firebase/storage": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.9.9.tgz", - "integrity": "sha512-Zch7srLT2SIh9y2nCVv/4Kne0HULn7OPkmreY70BJTUJ+g5WLRjggBq6x9fV5ls9V38iqMWfn4prxzX8yIc08A==", + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.9.11.tgz", + "integrity": "sha512-7UviKzxOCVAhQ+CrbRRngE+n3j+jPX8RWHu+4x4xWnbzv3icNKLXG6lqAUVSoCB9acKvoK9b7O9LsNu+ok5ihg==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/util": "1.6.3", + "@firebase/component": "0.5.19", + "@firebase/util": "1.7.1", "node-fetch": "2.6.7", "tslib": "^2.1.0" }, @@ -2994,14 +2994,14 @@ } }, "node_modules/@firebase/storage-compat": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.1.17.tgz", - "integrity": "sha512-nOYmnpI0gwoz5nROseMi9WbmHGf+xumfsOvdPyMZAjy0VqbDnpKIwmTUZQBdR+bLuB5oIkHQsvw9nbb1SH+PzQ==", + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.1.19.tgz", + "integrity": "sha512-0m+o8hbl6lFr6mcQbQfm4aKsy2ZeIZJwj1YEc0r3n/atVMQbsTIP/K2SHNi+iKNVtla5zlIjYelr9wlvQOduTQ==", "dependencies": { - "@firebase/component": "0.5.17", - "@firebase/storage": "0.9.9", + "@firebase/component": "0.5.19", + "@firebase/storage": "0.9.11", "@firebase/storage-types": "0.6.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3018,22 +3018,22 @@ } }, "node_modules/@firebase/util": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.6.3.tgz", - "integrity": "sha512-FujteO6Zjv6v8A4HS+t7c+PjU0Kaxj+rOnka0BsI/twUaCC9t8EQPmXpWZdk7XfszfahJn2pqsflUWUhtUkRlg==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.7.1.tgz", + "integrity": "sha512-9do4oXJfznJERFqtZgmKbMRB3W0btSPsEH/5yBYdDVI5OicISZoQPg8qqOgZX6po0tQTNxkNS5E3w4ZNF84k2Q==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@firebase/webchannel-wrapper": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.7.0.tgz", - "integrity": "sha512-4ACd/c6ushrLuhn0+yjB9hznhnsc2IML6pf0Ulb1Q7w8SvR1jNGPu/Y7i4kvOm6R+WJkMHwyy5z3i3gN+Tawug==" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.8.0.tgz", + "integrity": "sha512-Q8erQds5LuAUgNuFOt/tu/abffYUHYxN+Ogp2V5EOssfFG7Ja4ce324Sqyq41u/vB5CSr+tfYS3JzTDrDxCvdw==" }, "node_modules/@grpc/grpc-js": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.0.tgz", - "integrity": "sha512-wvKxal+40Xx11DXO2q5PfY3UiE25iwTb8SOz6A9IJII/V7d19x2ex0he+GJfVW0JZCaBjCPSjUB0yU9Ecm4WCw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.1.tgz", + "integrity": "sha512-GVtMU4oh/TeKkWGzXUEsyZtyvSUIT1z49RtGH1UnEGeL+sLuxKl8QH3KZTlSB329R1sWJmesm5hQ5CxXdYH9dg==", "dependencies": { "@grpc/proto-loader": "^0.7.0", "@types/node": ">=12.12.47" @@ -3043,9 +3043,9 @@ } }, "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.2.tgz", - "integrity": "sha512-jCdyLIT/tdQ1zhrbTQnJNK5nbDf0GoBpy5jVNywBzzMDF+Vs6uEaHnfz46dMtDxkvwrF2hzk5Z67goliceH0sA==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.3.tgz", + "integrity": "sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA==", "dependencies": { "@types/long": "^4.0.1", "lodash.camelcase": "^4.3.0", @@ -3071,9 +3071,9 @@ } }, "node_modules/@grpc/grpc-js/node_modules/protobufjs": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.1.tgz", - "integrity": "sha512-d0nMQqS/aT3lfV8bKi9Gbg73vPd2LcDdTDOu6RE/M+h9DY8g1EmDzk3ADPccthEWfTBjkR2oxNdx9Gs8YubT+g==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz", + "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -3222,6 +3222,105 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@jest/schemas": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.1.2.tgz", + "integrity": "sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.0.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -3455,13 +3554,13 @@ "dev": true }, "node_modules/@sentry/browser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.14.1.tgz", - "integrity": "sha512-b9nW2+kT9Jl/tfzJmvzpnS6F8ziC62TDx04a7kZDtuaVA5rKKTTlLDg8ZamCRFjjnuwuFhLnzxO34N0KfeTqHg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.15.0.tgz", + "integrity": "sha512-vZYr8L2JmniV8cns4yGOpX32moazz6tsllB1uv7XmmELW98sIuuugVFX0k6cBi89R8pyhdqULFCf9CL8CRguRg==", "dependencies": { - "@sentry/core": "7.14.1", - "@sentry/types": "7.14.1", - "@sentry/utils": "7.14.1", + "@sentry/core": "7.15.0", + "@sentry/types": "7.15.0", + "@sentry/utils": "7.15.0", "tslib": "^1.9.3" }, "engines": { @@ -3523,13 +3622,12 @@ } }, "node_modules/@sentry/core": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.14.1.tgz", - "integrity": "sha512-sjk60Gf5o9zynhWe1e0ro9uQO4OrKZ3H9xfgBf2ExgKXeMfKzYp5r2v2OKNevEde36Sr/DzlpiPj8EK67xrWPA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.15.0.tgz", + "integrity": "sha512-W8d44g04GShBn4Z9VBTUhf1T9LTMfzUnETEx237zzUucv0kkyj3LsWQsJapWchMbmwr1V/CdnNDN+lGDm8iXQA==", "dependencies": { - "@sentry/hub": "7.14.1", - "@sentry/types": "7.14.1", - "@sentry/utils": "7.14.1", + "@sentry/types": "7.15.0", + "@sentry/utils": "7.15.0", "tslib": "^1.9.3" }, "engines": { @@ -3541,38 +3639,20 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/@sentry/hub": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.14.1.tgz", - "integrity": "sha512-BWh5jUvGmzCsJtYy6EX3qA6gTOxwGhA64IEXHbzwIAnBoG+VWao3addaL77AGR9pIgAqn6ssfkX665OZa+GPGw==", - "dependencies": { - "@sentry/types": "7.14.1", - "@sentry/utils": "7.14.1", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/hub/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@sentry/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.14.1.tgz", - "integrity": "sha512-PxAfrIwBci6ouHOuRsfVq1B16i92nQNV5IvlqfJIYciazVhDWJvbF52caJAPOFS1WnuQZ4zqBDMYvtnwld3JCA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.15.0.tgz", + "integrity": "sha512-MN9haDRh9ZOsTotoDTHu2BT3sT8Vs1F0alhizUpDyjN2YgBCqR6JV+AbAE1XNHwS2+5zbppch1PwJUVeE58URQ==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.14.1.tgz", - "integrity": "sha512-CErQFbJMuhnHFKGkfIazQj5ETKoS7hG8PkoQEBt19F5QMh4+sbrJgnpIrIW8fVGtp0qKWKuIxQwD3b+1cFBozA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.15.0.tgz", + "integrity": "sha512-akic22/6xa/RG5Mj7UN6pLc23VnX9zQlKM53L/q3yIr0juckSVthJiiFNdgdqrX03S1tHYlBgPeShKFFTHpkjA==", "dependencies": { - "@sentry/types": "7.14.1", + "@sentry/types": "7.15.0", "tslib": "^1.9.3" }, "engines": { @@ -3596,6 +3676,12 @@ "node": ">= 8" } }, + "node_modules/@sinclair/typebox": { + "version": "0.24.44", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.44.tgz", + "integrity": "sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg==", + "dev": true + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -3983,6 +4069,30 @@ "@types/node": "*" } }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, "node_modules/@types/json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", @@ -4059,9 +4169,9 @@ } }, "node_modules/@types/node": { - "version": "18.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.0.tgz", - "integrity": "sha512-u+h43R6U8xXDt2vzUaVP3VwjjLyOJk6uEciZS8OSyziUQGOwmk+l+4drxcsDboHXwyTaqS1INebghmWMRxq3LA==" + "version": "18.8.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.4.tgz", + "integrity": "sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -4094,9 +4204,9 @@ "dev": true }, "node_modules/@types/requestidlecallback": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@types/requestidlecallback/-/requestidlecallback-0.3.4.tgz", - "integrity": "sha512-aTSyiZuRemRLTQkJPb25L7A4/eR2Teo5l4yJ1V6P3+MFxEZckTDkNKNtr/V1zEOMzS6H8DgxF22U6jPAPrzQvw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@types/requestidlecallback/-/requestidlecallback-0.3.5.tgz", + "integrity": "sha512-Uh49VrVTPfU0y/qIvXXYuRmd/sKLfVgQWZU1t8FWH22AIJyQbCei1aSmXdMDAijwGUFhBDpJmksiHEDsfiE/cg==", "dev": true }, "node_modules/@types/resolve": { @@ -4214,6 +4324,21 @@ "@types/node": "*" } }, + "node_modules/@types/yargs": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", + "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, "node_modules/@types/yauzl": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", @@ -6531,14 +6656,14 @@ "dev": true }, "node_modules/css-minimizer-webpack-plugin": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.1.0.tgz", - "integrity": "sha512-Zd+yz4nta4GXi3pMqF6skO8kjzuCUbr62z8SLMGZZtxWxTGTLopOiabPGNDEyjHCRhnhdA1EfHmqLa2Oekjtng==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.1.tgz", + "integrity": "sha512-ub12STsk3uXfHFTn9dtkI9nebvUKQ9rB0pn/6WNMRV77nqAOlOOJrrvsP8S8jngcnu+8ll3/9/xa7RCUNBVdOA==", "dev": true, "dependencies": { "cssnano": "^5.1.8", - "jest-worker": "^27.5.1", - "postcss": "^8.4.13", + "jest-worker": "^29.1.2", + "postcss": "^8.4.17", "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0", "source-map": "^0.6.1" @@ -6557,6 +6682,9 @@ "@parcel/css": { "optional": true }, + "@swc/css": { + "optional": true + }, "clean-css": { "optional": true }, @@ -6593,17 +6721,18 @@ } }, "node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.1.2.tgz", + "integrity": "sha512-AdTZJxKjTSPHbXT/AIOjQVmoFx0LHFcVabWu0sxI7PAy7rFf8c0upyvgBKgguVXdM4vY74JdwkyD4hSmpTW8jA==", "dev": true, "dependencies": { "@types/node": "*", + "jest-util": "^29.1.2", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { @@ -6824,9 +6953,9 @@ } }, "node_modules/cypress": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.9.0.tgz", - "integrity": "sha512-MjIWrRpc+bQM9U4kSSdATZWZ2hUqHGFEQTF7dfeZRa4MnalMtc88FIE49USWP2ZVtfy5WPBcgfBX+YorFqGElA==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.10.0.tgz", + "integrity": "sha512-bU8r44x1NIYAUNNXt3CwJpLOVth7HUv2hUhYCxZmgZ1IugowDvuHNpevnoZRQx1KKOEisLvIJW+Xen5Pjn41pg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -10167,42 +10296,42 @@ } }, "node_modules/firebase": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.10.0.tgz", - "integrity": "sha512-oSuED6BT+gQrOoXPV/xkxBLMk03A9nDXosW0xy4loQtGRJr9gW6JXgEOr0nmXFMTGzP87CpoC8Kd6y7XKSAeqQ==", - "dependencies": { - "@firebase/analytics": "0.8.0", - "@firebase/analytics-compat": "0.1.13", - "@firebase/app": "0.7.33", - "@firebase/app-check": "0.5.12", - "@firebase/app-check-compat": "0.2.12", - "@firebase/app-compat": "0.1.34", - "@firebase/app-types": "0.7.0", - "@firebase/auth": "0.20.7", - "@firebase/auth-compat": "0.2.20", - "@firebase/database": "0.13.6", - "@firebase/database-compat": "0.2.6", - "@firebase/firestore": "3.5.0", - "@firebase/firestore-compat": "0.1.25", - "@firebase/functions": "0.8.4", - "@firebase/functions-compat": "0.2.4", - "@firebase/installations": "0.5.12", - "@firebase/installations-compat": "0.1.12", - "@firebase/messaging": "0.9.16", - "@firebase/messaging-compat": "0.1.16", - "@firebase/performance": "0.5.12", - "@firebase/performance-compat": "0.1.12", - "@firebase/remote-config": "0.3.11", - "@firebase/remote-config-compat": "0.1.12", - "@firebase/storage": "0.9.9", - "@firebase/storage-compat": "0.1.17", - "@firebase/util": "1.6.3" + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.12.0.tgz", + "integrity": "sha512-g619mBBrm3Cwvwh297EIPpOWrGB7hAKAS2aXpXWaihhDOjLMj8+ua4vWmehmOyhjOVZDiWT36FIkGgVpkN8ggA==", + "dependencies": { + "@firebase/analytics": "0.8.2", + "@firebase/analytics-compat": "0.1.15", + "@firebase/app": "0.8.1", + "@firebase/app-check": "0.5.14", + "@firebase/app-check-compat": "0.2.14", + "@firebase/app-compat": "0.1.36", + "@firebase/app-types": "0.8.0", + "@firebase/auth": "0.20.9", + "@firebase/auth-compat": "0.2.22", + "@firebase/database": "0.13.8", + "@firebase/database-compat": "0.2.8", + "@firebase/firestore": "3.7.0", + "@firebase/firestore-compat": "0.2.0", + "@firebase/functions": "0.8.6", + "@firebase/functions-compat": "0.2.6", + "@firebase/installations": "0.5.14", + "@firebase/installations-compat": "0.1.14", + "@firebase/messaging": "0.9.18", + "@firebase/messaging-compat": "0.1.18", + "@firebase/performance": "0.5.14", + "@firebase/performance-compat": "0.1.14", + "@firebase/remote-config": "0.3.13", + "@firebase/remote-config-compat": "0.1.14", + "@firebase/storage": "0.9.11", + "@firebase/storage-compat": "0.1.19", + "@firebase/util": "1.7.1" } }, "node_modules/firebase-tools": { - "version": "11.13.0", - "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-11.13.0.tgz", - "integrity": "sha512-8p3AAG0DtDl/FF7Zaq5C5y2UoyWGvzVOgPDBjI+ZIPqBXdrAUHhQ/tVN+5J0IbtV+YXTyCmxIKf7kcIenzl2Xg==", + "version": "11.14.2", + "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-11.14.2.tgz", + "integrity": "sha512-ahduDgvR9q3zVMl42k/H2II8Mo4uzgDqp6Wp2wtygpB3diGhmjDCpsIJHYBZoDXOHKgXXXHYpK2W56gUUPPI9w==", "dev": true, "hasShrinkwrap": true, "dependencies": { @@ -10254,7 +10383,7 @@ "stream-chain": "^2.2.4", "stream-json": "^1.7.3", "strip-ansi": "^6.0.1", - "superstatic": "^8.0.0", + "superstatic": "^9.0.0", "tar": "^6.1.11", "tcp-port-used": "^1.0.2", "tmp": "^0.2.1", @@ -10299,9 +10428,9 @@ } }, "node_modules/firebase-tools/node_modules/@gar/promisify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", - "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true, "optional": true }, @@ -10586,23 +10715,23 @@ "dev": true }, "node_modules/firebase-tools/node_modules/@npmcli/fs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz", - "integrity": "sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "optional": true, "dependencies": { - "@gar/promisify": "^1.0.1", + "@gar/promisify": "^1.1.3", "semver": "^7.3.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/firebase-tools/node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "optional": true, "dependencies": { @@ -10616,9 +10745,9 @@ } }, "node_modules/firebase-tools/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "optional": true, "dependencies": { @@ -10626,7 +10755,7 @@ "rimraf": "^3.0.2" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/firebase-tools/node_modules/@npmcli/move-file/node_modules/mkdirp": { @@ -10754,12 +10883,6 @@ "node": ">= 6" } }, - "node_modules/firebase-tools/node_modules/@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, "node_modules/firebase-tools/node_modules/@types/duplexify": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.0.tgz", @@ -10870,9 +10993,9 @@ "dev": true }, "node_modules/firebase-tools/node_modules/agentkeepalive": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz", - "integrity": "sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "optional": true, "dependencies": { @@ -10885,9 +11008,9 @@ } }, "node_modules/firebase-tools/node_modules/agentkeepalive/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "optional": true, "dependencies": { @@ -11014,15 +11137,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/firebase-tools/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/firebase-tools/node_modules/ansicolors": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", @@ -11110,9 +11224,9 @@ "dev": true }, "node_modules/firebase-tools/node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "optional": true, "dependencies": { @@ -11120,7 +11234,7 @@ "readable-stream": "^3.6.0" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/firebase-tools/node_modules/argparse": { @@ -11356,96 +11470,6 @@ "node": ">= 0.8" } }, - "node_modules/firebase-tools/node_modules/boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/firebase-tools/node_modules/boxen/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/firebase-tools/node_modules/boxen/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/firebase-tools/node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/firebase-tools/node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/firebase-tools/node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/firebase-tools/node_modules/boxen/node_modules/supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/firebase-tools/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -11535,33 +11559,43 @@ } }, "node_modules/firebase-tools/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, "optional": true, "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" }, "engines": { - "node": ">= 10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/firebase-tools/node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/firebase-tools/node_modules/cacache/node_modules/chownr": { @@ -11574,6 +11608,49 @@ "node": ">=10" } }, + "node_modules/firebase-tools/node_modules/cacache/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/firebase-tools/node_modules/cacache/node_modules/lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/firebase-tools/node_modules/cacache/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "optional": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/firebase-tools/node_modules/cacache/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -11648,15 +11725,6 @@ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", "dev": true }, - "node_modules/firebase-tools/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/firebase-tools/node_modules/cardinal": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", @@ -11947,15 +12015,6 @@ "node": ">= 6" } }, - "node_modules/firebase-tools/node_modules/compare-semver": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/compare-semver/-/compare-semver-1.1.0.tgz", - "integrity": "sha1-fAp5onu4C2xplERfgpWCWdPQIVM=", - "dev": true, - "dependencies": { - "semver": "^5.0.1" - } - }, "node_modules/firebase-tools/node_modules/compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -12084,7 +12143,7 @@ "node_modules/firebase-tools/node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true, "optional": true }, @@ -12371,7 +12430,7 @@ "node_modules/firebase-tools/node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true, "optional": true }, @@ -13165,34 +13224,23 @@ "dev": true }, "node_modules/firebase-tools/node_modules/gauge": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", - "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "optional": true, "dependencies": { - "ansi-regex": "^5.0.1", "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", "has-unicode": "^2.0.1", - "signal-exit": "^3.0.0", + "signal-exit": "^3.0.7", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" + "wide-align": "^1.1.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" - } - }, - "node_modules/firebase-tools/node_modules/gauge/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/firebase-tools/node_modules/gaxios": { @@ -13391,18 +13439,6 @@ "toxic": "^1.0.0" } }, - "node_modules/firebase-tools/node_modules/global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", - "dev": true, - "dependencies": { - "ini": "^1.3.5" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/firebase-tools/node_modules/google-auth-library": { "version": "7.14.1", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz", @@ -13554,22 +13590,10 @@ "node": ">=6" } }, - "node_modules/firebase-tools/node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/firebase-tools/node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true, "optional": true }, @@ -13694,7 +13718,7 @@ "node_modules/firebase-tools/node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "optional": true, "dependencies": { @@ -13913,9 +13937,9 @@ } }, "node_modules/firebase-tools/node_modules/install-artifact-from-github": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.3.0.tgz", - "integrity": "sha512-iT8v1GwOAX0pPXifF/5ihnMhHOCo3OeK7z3TQa4CtSNCIg8k0UxqBEk9jRwz8OP68hHXvJ2gxRa89KYHtBkqGA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.3.1.tgz", + "integrity": "sha512-3l3Bymg2eKDsN5wQuMfgGEj2x6l5MCAv0zPL6rxHESufFVlEAKW/6oY9F1aGgvY/EgWm5+eWGRjINveL4X7Hgg==", "dev": true, "optional": true, "bin": { @@ -14001,22 +14025,6 @@ "node": ">=0.10.0" } }, - "node_modules/firebase-tools/node_modules/is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "dependencies": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/firebase-tools/node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -14029,19 +14037,10 @@ "node_modules/firebase-tools/node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true, "optional": true }, - "node_modules/firebase-tools/node_modules/is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/firebase-tools/node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -14686,37 +14685,47 @@ } }, "node_modules/firebase-tools/node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "optional": true, "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", + "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", + "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", + "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/firebase-tools/node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "optional": true, "engines": { "node": ">= 10" } }, "node_modules/firebase-tools/node_modules/make-fetch-happen/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "optional": true, "dependencies": { @@ -14731,6 +14740,31 @@ } } }, + "node_modules/firebase-tools/node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "optional": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/firebase-tools/node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=12" + } + }, "node_modules/firebase-tools/node_modules/make-fetch-happen/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -14738,16 +14772,26 @@ "dev": true, "optional": true }, + "node_modules/firebase-tools/node_modules/make-fetch-happen/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/firebase-tools/node_modules/make-fetch-happen/node_modules/socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, "optional": true, "dependencies": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { "node": ">= 10" @@ -14916,21 +14960,21 @@ } }, "node_modules/firebase-tools/node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "optional": true, "dependencies": { - "minipass": "^3.1.0", + "minipass": "^3.1.6", "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "minizlib": "^2.1.2" }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, "optionalDependencies": { - "encoding": "^0.1.12" + "encoding": "^0.1.13" } }, "node_modules/firebase-tools/node_modules/minipass-flush": { @@ -15035,9 +15079,9 @@ "dev": true }, "node_modules/firebase-tools/node_modules/nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", "dev": true, "optional": true }, @@ -15095,16 +15139,16 @@ } }, "node_modules/firebase-tools/node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", + "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", "dev": true, "optional": true, "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", + "make-fetch-happen": "^10.0.3", "nopt": "^5.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -15116,13 +15160,13 @@ "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">= 10.12.0" + "node": "^12.22 || ^14.13 || >=16" } }, "node_modules/firebase-tools/node_modules/node-gyp/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "optional": true, "dependencies": { @@ -15186,19 +15230,19 @@ } }, "node_modules/firebase-tools/node_modules/npmlog": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", - "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "optional": true, "dependencies": { - "are-we-there-yet": "^2.0.0", + "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", + "gauge": "^4.0.3", "set-blocking": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/firebase-tools/node_modules/oauth-sign": { @@ -15640,7 +15684,7 @@ "node_modules/firebase-tools/node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true, "optional": true }, @@ -15661,7 +15705,7 @@ "node_modules/firebase-tools/node_modules/promise-retry/node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "optional": true, "engines": { @@ -15862,16 +15906,16 @@ } }, "node_modules/firebase-tools/node_modules/re2": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/re2/-/re2-1.17.3.tgz", - "integrity": "sha512-Dp5iWVR8W3C7Nm9DziMY4BleMPRb/pe6kvfbzLv80dVYaXRc9jRnwwNqU0oE/taRm0qYR1+Qrtzk9rPjS9ecaQ==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/re2/-/re2-1.17.7.tgz", + "integrity": "sha512-X8GSuiBoVWwcjuppqSjsIkRxNUKDdjhkO9SBekQbZ2ksqWUReCy7DQPWOVpoTnpdtdz5PIpTTxTFzvJv5UMfjA==", "dev": true, "hasInstallScript": true, "optional": true, "dependencies": { - "install-artifact-from-github": "^1.3.0", - "nan": "^2.15.0", - "node-gyp": "^8.4.1" + "install-artifact-from-github": "^1.3.1", + "nan": "^2.16.0", + "node-gyp": "^9.0.0" } }, "node_modules/firebase-tools/node_modules/readable-stream": { @@ -16296,13 +16340,13 @@ } }, "node_modules/firebase-tools/node_modules/socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", "dev": true, "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" }, "engines": { "node": ">= 10.13.0", @@ -16346,6 +16390,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/firebase-tools/node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, "node_modules/firebase-tools/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -16388,16 +16438,16 @@ } }, "node_modules/firebase-tools/node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, "optional": true, "dependencies": { "minipass": "^3.1.1" }, "engines": { - "node": ">= 8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/firebase-tools/node_modules/stack-trace": { @@ -16448,30 +16498,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/firebase-tools/node_modules/string-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", - "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "dev": true, - "dependencies": { - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/firebase-tools/node_modules/string-length/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/firebase-tools/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -16517,205 +16543,83 @@ } }, "node_modules/firebase-tools/node_modules/superstatic": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-8.0.0.tgz", - "integrity": "sha512-PqlA2xuEwOlRZsknl58A/rZEmgCUcfWIFec0bn10wYE5/tbMhEbMXGHCYDppiXLXcuhGHyOp1IimM2hLqkLLuw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-9.0.0.tgz", + "integrity": "sha512-4rvzTZdqBPtCjeo/V4YkbBeDnHxI2+3jP1FHGzvTeDswq+HQFB7l3JTjq31BfyJFTogn8JmbDW9sKOeBUGDAhg==", "dev": true, "dependencies": { "basic-auth-connect": "^1.0.0", - "chalk": "^1.1.3", - "commander": "^9.2.0", - "compare-semver": "^1.0.0", + "commander": "^9.4.0", "compression": "^1.7.0", - "connect": "^3.6.2", + "connect": "^3.7.0", "destroy": "^1.0.4", "fast-url-parser": "^1.1.3", "glob-slasher": "^1.0.1", "is-url": "^1.2.2", "join-path": "^1.1.1", "lodash": "^4.17.19", - "mime-types": "^2.1.16", - "minimatch": "^3.0.4", + "mime-types": "^2.1.35", + "minimatch": "^5.1.0", "morgan": "^1.8.2", "on-finished": "^2.2.0", "on-headers": "^1.0.0", "path-to-regexp": "^1.8.0", "router": "^1.3.1", - "string-length": "^1.0.0", - "update-notifier": "^4.1.1" + "update-notifier": "^5.1.0" }, "bin": { - "superstatic": "bin/server" + "superstatic": "lib/bin/server.js" }, "engines": { - "node": ">= 12.20" + "node": "^14.18.0 || >=16.4.0" }, "optionalDependencies": { - "re2": "^1.15.8" + "re2": "^1.17.7" } }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/color-convert": { + "node_modules/firebase-tools/node_modules/superstatic/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/firebase-tools/node_modules/superstatic/node_modules/commander": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", - "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", "dev": true, "engines": { "node": "^12.20.0 || >=14" } }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/firebase-tools/node_modules/superstatic/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dev": true, - "dependencies": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/update-notifier/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "node_modules/firebase-tools/node_modules/superstatic/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/firebase-tools/node_modules/superstatic/node_modules/update-notifier/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/firebase-tools/node_modules/superstatic/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "isarray": "0.0.1" } }, "node_modules/firebase-tools/node_modules/supports-hyperlinks": { @@ -16839,18 +16743,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/firebase-tools/node_modules/term-size": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", - "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/firebase-tools/node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -16978,15 +16870,6 @@ "node": ">= 0.8.0" } }, - "node_modules/firebase-tools/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/firebase-tools/node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -17010,23 +16893,29 @@ } }, "node_modules/firebase-tools/node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, "optional": true, "dependencies": { - "unique-slug": "^2.0.0" + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/firebase-tools/node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, "optional": true, "dependencies": { "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/firebase-tools/node_modules/universal-analytics": { @@ -19619,6 +19508,93 @@ "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", "dev": true }, + "node_modules/jest-util": { + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.1.2.tgz", + "integrity": "sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.1.2", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-worker": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", @@ -24842,9 +24818,9 @@ } }, "node_modules/terser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", - "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -26574,9 +26550,9 @@ } }, "node_modules/xo": { - "version": "0.52.3", - "resolved": "https://registry.npmjs.org/xo/-/xo-0.52.3.tgz", - "integrity": "sha512-liCEteZ5z+QRyh3XzsYWQyxedBHBvx8CDlNvvi+BJz74L0E5/ID2v7JtoX3bD541AlMuOy4e/iWif6hhNGBFNw==", + "version": "0.52.4", + "resolved": "https://registry.npmjs.org/xo/-/xo-0.52.4.tgz", + "integrity": "sha512-5K+2bSy+nPO1fE6TS5KydgqhZ5pyXvO1P6Rw98aflxHi2LFWoShLmDpJOCxSpIP5867LVOCdH/WO+7iXk6/WVQ==", "bundleDependencies": [ "@typescript-eslint/eslint-plugin", "@typescript-eslint/parser", @@ -26673,16 +26649,15 @@ "license": "MIT" }, "node_modules/xo/node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.36.1", + "version": "5.39.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.36.1", - "@typescript-eslint/type-utils": "5.36.1", - "@typescript-eslint/utils": "5.36.1", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/type-utils": "5.39.0", + "@typescript-eslint/utils": "5.39.0", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", "regexpp": "^3.2.0", "semver": "^7.3.7", @@ -26706,14 +26681,14 @@ } }, "node_modules/xo/node_modules/@typescript-eslint/parser": { - "version": "5.36.1", + "version": "5.39.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "5.36.1", - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/typescript-estree": "5.36.1", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", "debug": "^4.3.4" }, "engines": { @@ -26733,13 +26708,13 @@ } }, "node_modules/xo/node_modules/@typescript-eslint/scope-manager": { - "version": "5.36.1", + "version": "5.39.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/visitor-keys": "5.36.1" + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -26750,13 +26725,13 @@ } }, "node_modules/xo/node_modules/@typescript-eslint/type-utils": { - "version": "5.36.1", + "version": "5.39.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.36.1", - "@typescript-eslint/utils": "5.36.1", + "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/utils": "5.39.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -26777,7 +26752,7 @@ } }, "node_modules/xo/node_modules/@typescript-eslint/types": { - "version": "5.36.1", + "version": "5.39.0", "dev": true, "inBundle": true, "license": "MIT", @@ -26790,13 +26765,13 @@ } }, "node_modules/xo/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.36.1", + "version": "5.39.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/visitor-keys": "5.36.1", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -26846,15 +26821,15 @@ } }, "node_modules/xo/node_modules/@typescript-eslint/utils": { - "version": "5.36.1", + "version": "5.39.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.36.1", - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/typescript-estree": "5.36.1", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -26870,12 +26845,12 @@ } }, "node_modules/xo/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.36.1", + "version": "5.39.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/types": "5.39.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -27139,7 +27114,7 @@ } }, "node_modules/xo/node_modules/fast-glob": { - "version": "3.2.11", + "version": "3.2.12", "dev": true, "inBundle": true, "license": "MIT", @@ -27191,12 +27166,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xo/node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/xo/node_modules/glob-parent": { "version": "5.1.2", "dev": true, @@ -27908,9 +27877,9 @@ } }, "@babel/compat-data": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz", - "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", "dev": true }, "@babel/core": { @@ -28177,9 +28146,9 @@ } }, "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true }, "@babel/helper-validator-identifier": { @@ -28348,14 +28317,14 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", + "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.18.8" } @@ -28578,12 +28547,12 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-classes": { @@ -28613,12 +28582,12 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", - "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-dotall-regex": { @@ -28866,12 +28835,12 @@ } }, "@babel/preset-env": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.3.tgz", - "integrity": "sha512-ziye1OTc9dGFOAXSWKUqQblYHNlBOaDl8wzqf2iKXJAltYiR3hKHUKmkt+S9PppW7RQpq4fFCrwwpIDj/f5P4w==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", + "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", "dev": true, "requires": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.19.4", "@babel/helper-compilation-targets": "^7.19.3", "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-validator-option": "^7.18.6", @@ -28886,7 +28855,7 @@ "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-object-rest-spread": "^7.19.4", "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", "@babel/plugin-proposal-optional-chaining": "^7.18.9", "@babel/plugin-proposal-private-methods": "^7.18.6", @@ -28910,10 +28879,10 @@ "@babel/plugin-transform-arrow-functions": "^7.18.6", "@babel/plugin-transform-async-to-generator": "^7.18.6", "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-block-scoping": "^7.19.4", "@babel/plugin-transform-classes": "^7.19.0", "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.13", + "@babel/plugin-transform-destructuring": "^7.19.4", "@babel/plugin-transform-dotall-regex": "^7.18.6", "@babel/plugin-transform-duplicate-keys": "^7.18.9", "@babel/plugin-transform-exponentiation-operator": "^7.18.6", @@ -28940,7 +28909,7 @@ "@babel/plugin-transform-unicode-escapes": "^7.18.10", "@babel/plugin-transform-unicode-regex": "^7.18.6", "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.3", + "@babel/types": "^7.19.4", "babel-plugin-polyfill-corejs2": "^0.3.3", "babel-plugin-polyfill-corejs3": "^0.6.0", "babel-plugin-polyfill-regenerator": "^0.4.1", @@ -29032,12 +29001,12 @@ } }, "@babel/types": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", - "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } @@ -29651,26 +29620,26 @@ } }, "@firebase/analytics": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.8.0.tgz", - "integrity": "sha512-wkcwainNm8Cu2xkJpDSHfhBSdDJn86Q1TZNmLWc67VrhZUHXIKXxIqb65/tNUVE+I8+sFiDDNwA+9R3MqTQTaA==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.8.2.tgz", + "integrity": "sha512-WF0FK6MIiyM6Q8eNb2ysGxS8BhDvg6ZdVXNW8lp9tM5trqrvUMSeFEX89N/o0X0K0QZfDgjvzRgylRMMuM+XHQ==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/installations": "0.5.12", + "@firebase/component": "0.5.19", + "@firebase/installations": "0.5.14", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, "@firebase/analytics-compat": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.1.13.tgz", - "integrity": "sha512-QC1DH/Dwc8fBihn0H+jocBWyE17GF1fOCpCrpAiQ2u16F/NqsVDVG4LjIqdhq963DXaXneNY7oDwa25Up682AA==", + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.1.15.tgz", + "integrity": "sha512-qGDWAMpLlT0zG8to7WrUoi8pv5BuGTOjm1+9qBiDWLeD1KQDKCeSGDuVGKJRFMEJwGW8lI7xvk/Cff/NCXZxzg==", "requires": { - "@firebase/analytics": "0.8.0", + "@firebase/analytics": "0.8.2", "@firebase/analytics-types": "0.7.0", - "@firebase/component": "0.5.17", - "@firebase/util": "1.6.3", + "@firebase/component": "0.5.19", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, @@ -29680,13 +29649,13 @@ "integrity": "sha512-DNE2Waiwy5+zZnCfintkDtBfaW6MjIG883474v6Z0K1XZIvl76cLND4iv0YUb48leyF+PJK1KO2XrgHb/KpmhQ==" }, "@firebase/app": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.7.33.tgz", - "integrity": "sha512-7K7ljuFhbT9uF0gTvuA7ZrpFFnS1eJLplfjJdjDQFWyjD6Cwk0FXNdu75WvoWgywoQCGiVBX8u5Jb437UQIhWQ==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.8.1.tgz", + "integrity": "sha512-/ctTwmSAc60Tv7pe9GXSLDsnHn+I0vp2f8AZLeZRdbbXLxvHc6LDmhKViRolNOGzwBYr0H1TpVVWgkxEkjwlXg==", "requires": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "idb": "7.0.1", "tslib": "^2.1.0" }, @@ -29699,26 +29668,26 @@ } }, "@firebase/app-check": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.5.12.tgz", - "integrity": "sha512-l+MmvupSGT/F+I5ei7XjhEfpoL4hLVJr0vUwcG5NEf2hAkQnySli9fnbl9fZu1BJaQ2kthrMmtg1gcbcM9BUCQ==", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.5.14.tgz", + "integrity": "sha512-GZWgcxC53uCH1Yx+6Ll6/pZuskWrkfGhSsk6Wl8SFh/wZvJgdlNWRDkCKyoJPcai8ttkMJOl6u7WFKk4m5O3Bg==", "requires": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, "@firebase/app-check-compat": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.2.12.tgz", - "integrity": "sha512-GFppNLlUyMN9Iq31ME/+GkjRVKlc+MeanzUKQ9UaR73ZsYH3oX3Ja+xjoYgixaVJDDG+ofBYR7ZXTkkQdSR/pw==", + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.2.14.tgz", + "integrity": "sha512-w1yvBfzr5Nl159ZlXl5DfKQENlBybwZ0Gk6tdVjI3CAOYvQZqp26q7CbVskY6TdckKUfl5nGBBgjTwCf4vkpGQ==", "requires": { - "@firebase/app-check": "0.5.12", + "@firebase/app-check": "0.5.14", "@firebase/app-check-types": "0.4.0", - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, @@ -29733,44 +29702,44 @@ "integrity": "sha512-SsWafqMABIOu7zLgWbmwvHGOeQQVQlwm42kwwubsmfLmL4Sf5uGpBfDhQ0CAkpi7bkJ/NwNFKafNDL9prRNP0Q==" }, "@firebase/app-compat": { - "version": "0.1.34", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.1.34.tgz", - "integrity": "sha512-3XSrHDgtASIH8j6sDngiKykDcqlEM0mYplJTYdyN69ruZ1o0M+bUhIvX9mUoRelWZGT1BcMpFmh/62vz/wN72Q==", + "version": "0.1.36", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.1.36.tgz", + "integrity": "sha512-7xLuYGCvdT7aPuZhiGlvshD/LOAHpF4t6pcUOxyEVQY6kx/ms3nEWIThsCMxhmOB7p16y/uY5O6q0/MUnXCu9A==", "requires": { - "@firebase/app": "0.7.33", - "@firebase/component": "0.5.17", + "@firebase/app": "0.8.1", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, "@firebase/app-types": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.7.0.tgz", - "integrity": "sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg==" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.8.0.tgz", + "integrity": "sha512-Lec3VVquUwXPn2UReGSsfTxuMBVRmzGIwA/CJnF0LQuPgv9kOmXk9mVqsDMfHxHtqjai0n6wWHR2TqjdVV/bYA==" }, "@firebase/auth": { - "version": "0.20.7", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.20.7.tgz", - "integrity": "sha512-hKjnMZWOwn/HNSJNLAVmlBRQKRMOHGiD7vTMT2Og4oV8sFwRygxyoC7/OsupCUA6GuC4XsnDP/+WgE9LOcqB2A==", + "version": "0.20.9", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.20.9.tgz", + "integrity": "sha512-2HiJnVG8nn8UbjKQYcMSCCSRPFwewaeOuaLtsHsZyXkIR+l9Z6D1IPr0pT92xyl+G9lmKaljhF2qfpX7AQChyw==", "requires": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "node-fetch": "2.6.7", "selenium-webdriver": "4.1.2", "tslib": "^2.1.0" } }, "@firebase/auth-compat": { - "version": "0.2.20", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.2.20.tgz", - "integrity": "sha512-UwDxCQ2/+8dTp0oE6CmrR1n5e78H8By3hNBiTtwSqP/H2ZWxn9SfCdGt5PXF6NTnWAZ/0rs490RPM0koCYxkjA==", + "version": "0.2.22", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.2.22.tgz", + "integrity": "sha512-42/4d1j6mdpCeU94UjC1YY46m7AzK2BIm9C1BcmN1O2GyX02KDggPBFLc0yW9QCcIyLEUPZzzQETxyfIQYDhYg==", "requires": { - "@firebase/auth": "0.20.7", + "@firebase/auth": "0.20.9", "@firebase/auth-types": "0.11.0", - "@firebase/component": "0.5.17", - "@firebase/util": "1.6.3", + "@firebase/component": "0.5.19", + "@firebase/util": "1.7.1", "node-fetch": "2.6.7", "selenium-webdriver": "4.1.2", "tslib": "^2.1.0" @@ -29787,58 +29756,58 @@ "integrity": "sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==" }, "@firebase/component": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.17.tgz", - "integrity": "sha512-mTM5CBSIlmI+i76qU4+DhuExnWtzcPS3cVgObA3VAjliPPr3GrUlTaaa8KBGfxsD27juQxMsYA0TvCR5X+GQ3Q==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.5.19.tgz", + "integrity": "sha512-n/1HH2graiuMkHfhbGLuO+0msStydxEKmIMUT7bpBmxR4U9myzIwsG81XJImqgIWtbhd05HgUC+vpjZ+atUMbw==", "requires": { - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, "@firebase/database": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.13.6.tgz", - "integrity": "sha512-5IZIBw2LT50Z8mwmKYmdX37p+Gg2HgeJsrruZmRyOSVgbfoY4Pg87n1uFx6qWqDmfL6HwQgwcrrQfVIXE3C5SA==", + "version": "0.13.8", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.13.8.tgz", + "integrity": "sha512-XPrKglNEU3AVQ5sm33NDfBkUwtOtIug82RQDO6ykQIlDNr63MryyZg4qaejI4hp2BQ+OXtATB7lKiefZASso9w==", "requires": { "@firebase/auth-interop-types": "0.1.6", - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "faye-websocket": "0.11.4", "tslib": "^2.1.0" } }, "@firebase/database-compat": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.2.6.tgz", - "integrity": "sha512-Ls1BAODaiDYgeJljrIgSuC7JkFIY/HNhhNYebzZSoGQU62RuvnaO3Qgp2EH6h2LzHyRnycNadfh1suROtPaUIA==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.2.8.tgz", + "integrity": "sha512-NuOMV3/Y7hcvQcD5GjdRiOGRfUOHTaoI/eF9OYaabSNYI4XwRWapC32sfOznEpkDZOxT7cXDDzsq8/SXtvQMdg==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/database": "0.13.6", - "@firebase/database-types": "0.9.13", + "@firebase/component": "0.5.19", + "@firebase/database": "0.13.8", + "@firebase/database-types": "0.9.15", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, "@firebase/database-types": { - "version": "0.9.13", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.9.13.tgz", - "integrity": "sha512-dIJ1zGe3EHMhwcvukTOPzYlFYFIG1Et5Znl7s7y/ZTN2/toARRNnsv1qCKvqevIMYKvIrRsYOYfOXDS8l1YIJA==", + "version": "0.9.15", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.9.15.tgz", + "integrity": "sha512-VCFblWH/TPRoaU+H+DRk9PWsaYqQ26/BIHYq5D2Wj+vvY9DrG0CkiovTOWNQkWDGQqf6X+JgSafob8kBIeea5Q==", "requires": { - "@firebase/app-types": "0.7.0", - "@firebase/util": "1.6.3" + "@firebase/app-types": "0.8.0", + "@firebase/util": "1.7.1" } }, "@firebase/firestore": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.5.0.tgz", - "integrity": "sha512-ZwpZROpHDAwX4dvthkYv5WTqzWMPDNIVFWifDYpelWclsRN0cBxqLZPzh2wBtOWwMLIOoau7QIltzapqLZaScw==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.7.0.tgz", + "integrity": "sha512-la5zbC/1W/a0ikapQgDy0QqaeK6sTIqZYzrmvrI0hDZu9XcwqoXbudvI+zD8r3CqV0w98bxyU5ADtJrdaNBgzQ==", "requires": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", - "@firebase/webchannel-wrapper": "0.7.0", + "@firebase/util": "1.7.1", + "@firebase/webchannel-wrapper": "0.8.0", "@grpc/grpc-js": "^1.3.2", "@grpc/proto-loader": "^0.6.13", "node-fetch": "2.6.7", @@ -29846,14 +29815,14 @@ } }, "@firebase/firestore-compat": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.1.25.tgz", - "integrity": "sha512-Pf7Aa1dzG2/2bmC5kQmNo5U8RtnwGxEysuAJE9T7QrmEyi0RkzYFNp9sSfSIC7kWKhT/KfmGcDcQq4dtL9oFWQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.2.0.tgz", + "integrity": "sha512-fhyHq0imfnzZteL5W75DSucEvx94PJYTdc8y18fNAqb157CEcyAoGYq6qSQY+27L0lRBomnGginkZWp2svpJYw==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/firestore": "3.5.0", + "@firebase/component": "0.5.19", + "@firebase/firestore": "3.7.0", "@firebase/firestore-types": "2.5.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, @@ -29863,28 +29832,28 @@ "integrity": "sha512-I6c2m1zUhZ5SH0cWPmINabDyH5w0PPFHk2UHsjBpKdZllzJZ2TwTkXbDtpHUZNmnc/zAa0WNMNMvcvbb/xJLKA==" }, "@firebase/functions": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.8.4.tgz", - "integrity": "sha512-o1bB0xMyQKe+b246zGnjwHj4R6BH4mU2ZrSaa/3QvTpahUQ3hqYfkZPLOXCU7+vEFxHb3Hd4UUjkFhxoAcPqLA==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.8.6.tgz", + "integrity": "sha512-kFOW3hgEe4vz+do3qmv7joGdwv3JUnHHh36tGopk9/7m/P6LSpGGLtO1tbjLVC4dh3bXZ2NJpAiIQMW8t+cJGw==", "requires": { "@firebase/app-check-interop-types": "0.1.0", "@firebase/auth-interop-types": "0.1.6", - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/messaging-interop-types": "0.1.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "node-fetch": "2.6.7", "tslib": "^2.1.0" } }, "@firebase/functions-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.2.4.tgz", - "integrity": "sha512-Crfn6il1yXGuXkjSd8nKrqR4XxPvuP19g64bXpM6Ix67qOkQg676kyOuww0FF17xN0NSXHfG8Pyf+CUrx8wJ5g==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.2.6.tgz", + "integrity": "sha512-UxkxnclADYE6GlP2F0U63I/2+DlTuzw8NA0Ur6tGVAlQ/0DfvydKq6c3CE4DMeBRbxgokXrjK24C8rfEIxMZ6w==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/functions": "0.8.4", + "@firebase/component": "0.5.19", + "@firebase/functions": "0.8.6", "@firebase/functions-types": "0.5.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, @@ -29894,12 +29863,12 @@ "integrity": "sha512-qza0M5EwX+Ocrl1cYI14zoipUX4gI/Shwqv0C1nB864INAD42Dgv4v94BCyxGHBg2kzlWy8PNafdP7zPO8aJQA==" }, "@firebase/installations": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.5.12.tgz", - "integrity": "sha512-Zq43fCE0PB5tGJ3ojzx5RNQzKdej1188qgAk22rwjuhP7npaG/PlJqDG1/V0ZjTLRePZ1xGrfXSPlA17c/vtNw==", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.5.14.tgz", + "integrity": "sha512-J6F4wOuaCBK8PW+c5clPTfxnDJ4nOM2uiY4A3NF/QA/k+jsaA/ibobAwep+wXjfQN/eyL1DNhgPFl5NvuqEEwQ==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/util": "1.6.3", + "@firebase/component": "0.5.19", + "@firebase/util": "1.7.1", "idb": "7.0.1", "tslib": "^2.1.0" }, @@ -29912,14 +29881,14 @@ } }, "@firebase/installations-compat": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.1.12.tgz", - "integrity": "sha512-BIhFpWIn/GkuOa+jnXkp3SDJT2RLYJF6MWpinHIBKFJs7MfrgYZ3zQ1AlhobDEql+bkD1dK4dB5sNcET2T+EyA==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.1.14.tgz", + "integrity": "sha512-oqhK2JRPCbXLQOXoBJIW/YKK2Qc2XyLUWGwQPU9Q3RzZG6wHtLcNPfTPUbF5Aq277sMZVQQQLPTQkUraXPAP1g==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/installations": "0.5.12", + "@firebase/component": "0.5.19", + "@firebase/installations": "0.5.14", "@firebase/installations-types": "0.4.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, @@ -29937,14 +29906,14 @@ } }, "@firebase/messaging": { - "version": "0.9.16", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.9.16.tgz", - "integrity": "sha512-Yl9gGrAvJF6C1gg3+Cr2HxlL6APsDEkrorkFafmSP1l+rg1epZKoOAcKJbSF02Vtb50wfb9FqGGy8tzodgETxg==", + "version": "0.9.18", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.9.18.tgz", + "integrity": "sha512-hQQLrdOkn0HQy3BjscIJCq8dGuUH9fEFFc+98OJCFXYd9M9tIGs6ztOXYJEAZzkzkWdvf6hrrISl7p+414SUYA==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/installations": "0.5.12", + "@firebase/component": "0.5.19", + "@firebase/installations": "0.5.14", "@firebase/messaging-interop-types": "0.1.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "idb": "7.0.1", "tslib": "^2.1.0" }, @@ -29957,13 +29926,13 @@ } }, "@firebase/messaging-compat": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.1.16.tgz", - "integrity": "sha512-uG7rWcXJzU8vvlEBFpwG1ndw/GURrrmKcwsHopEWbsPGjMRaVWa7XrdKbvIR7IZohqPzcC/V9L8EeqF4Q4lz8w==", + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.1.18.tgz", + "integrity": "sha512-rW/O3W3a6KTB4SWNUOPDyUm2pBxKOZNA1GXIlSPHFR+UZEX7dL5IQePrtaALHmY0rDXwJRBw2d0b0fy0PYpY3g==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/messaging": "0.9.16", - "@firebase/util": "1.6.3", + "@firebase/component": "0.5.19", + "@firebase/messaging": "0.9.18", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, @@ -29973,27 +29942,27 @@ "integrity": "sha512-DbvUl/rXAZpQeKBnwz0NYY5OCqr2nFA0Bj28Fmr3NXGqR4PAkfTOHuQlVtLO1Nudo3q0HxAYLa68ZDAcuv2uKQ==" }, "@firebase/performance": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.5.12.tgz", - "integrity": "sha512-MPVTkOkGrm2SMQgI1FPNBm85y2pPqlPb6VDjIMCWkVpAr6G1IZzUT24yEMySRcIlK/Hh7/Qu1Nu5ASRzRuX6+Q==", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.5.14.tgz", + "integrity": "sha512-VKHyy7YIiHMNu4kO0l6hC+JiKwQ+8oqjDmlaRie+Pm+UQ1SgVwyE7L1O11+aXE0jiMXxupcaVVHceZ1i2palTQ==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/installations": "0.5.12", + "@firebase/component": "0.5.19", + "@firebase/installations": "0.5.14", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, "@firebase/performance-compat": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.1.12.tgz", - "integrity": "sha512-IBORzUeGY1MGdZnsix9Mu5z4+C3WHIwalu0usxvygL0EZKHztGG8bppYPGH/b5vvg8QyHs9U+Pn1Ot2jZhffQQ==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.1.14.tgz", + "integrity": "sha512-jZG9rB9/9dnCqBEPhk+bMhLiCQUEgJDyNA7K1xwmrr4jXeJ3y1o84i71g7uKZrSzP5p68iLXKPohb2dMfgirzw==", "requires": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/performance": "0.5.12", + "@firebase/performance": "0.5.14", "@firebase/performance-types": "0.1.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, @@ -30003,27 +29972,27 @@ "integrity": "sha512-6p1HxrH0mpx+622Ql6fcxFxfkYSBpE3LSuwM7iTtYU2nw91Hj6THC8Bc8z4nboIq7WvgsT/kOTYVVZzCSlXl8w==" }, "@firebase/remote-config": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.3.11.tgz", - "integrity": "sha512-qA84dstrvVpO7rWT/sb2CLv1kjHVmz59SRFPKohJJYFBcPOGK4Pe4FWWhKAE9yg1Gnl0qYAGkahOwNawq3vE0g==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.3.13.tgz", + "integrity": "sha512-BS8mLDa6uqLzausrXjo+zma0zvN3DDMDNOQF0fZjNLa02gA2doC3Ee1EoWeZoS1tOCpHJ7eCfz5bPbg/Z4ostA==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/installations": "0.5.12", + "@firebase/component": "0.5.19", + "@firebase/installations": "0.5.14", "@firebase/logger": "0.3.3", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, "@firebase/remote-config-compat": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.1.12.tgz", - "integrity": "sha512-Yz7Gtb2rLa7ykXZX9DnSTId8CXd++jFFLW3foUImrYwJEtWgLJc7gwkRfd1M73IlKGNuQAY+DpUNF0n1dLbecA==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.1.14.tgz", + "integrity": "sha512-huul0UFXjHLt9T6grPr10uDjwignm29K3/xhf+Ga2eGuiBPVQUsEhQf1S+hr9uGhk/s7GZ7sl8Z7BKKmtJoiLg==", "requires": { - "@firebase/component": "0.5.17", + "@firebase/component": "0.5.19", "@firebase/logger": "0.3.3", - "@firebase/remote-config": "0.3.11", + "@firebase/remote-config": "0.3.13", "@firebase/remote-config-types": "0.2.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, @@ -30033,25 +30002,25 @@ "integrity": "sha512-hqK5sCPeZvcHQ1D6VjJZdW6EexLTXNMJfPdTwbD8NrXUw6UjWC4KWhLK/TSlL0QPsQtcKRkaaoP+9QCgKfMFPw==" }, "@firebase/storage": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.9.9.tgz", - "integrity": "sha512-Zch7srLT2SIh9y2nCVv/4Kne0HULn7OPkmreY70BJTUJ+g5WLRjggBq6x9fV5ls9V38iqMWfn4prxzX8yIc08A==", + "version": "0.9.11", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.9.11.tgz", + "integrity": "sha512-7UviKzxOCVAhQ+CrbRRngE+n3j+jPX8RWHu+4x4xWnbzv3icNKLXG6lqAUVSoCB9acKvoK9b7O9LsNu+ok5ihg==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/util": "1.6.3", + "@firebase/component": "0.5.19", + "@firebase/util": "1.7.1", "node-fetch": "2.6.7", "tslib": "^2.1.0" } }, "@firebase/storage-compat": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.1.17.tgz", - "integrity": "sha512-nOYmnpI0gwoz5nROseMi9WbmHGf+xumfsOvdPyMZAjy0VqbDnpKIwmTUZQBdR+bLuB5oIkHQsvw9nbb1SH+PzQ==", + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.1.19.tgz", + "integrity": "sha512-0m+o8hbl6lFr6mcQbQfm4aKsy2ZeIZJwj1YEc0r3n/atVMQbsTIP/K2SHNi+iKNVtla5zlIjYelr9wlvQOduTQ==", "requires": { - "@firebase/component": "0.5.17", - "@firebase/storage": "0.9.9", + "@firebase/component": "0.5.19", + "@firebase/storage": "0.9.11", "@firebase/storage-types": "0.6.0", - "@firebase/util": "1.6.3", + "@firebase/util": "1.7.1", "tslib": "^2.1.0" } }, @@ -30061,31 +30030,31 @@ "integrity": "sha512-1LpWhcCb1ftpkP/akhzjzeFxgVefs6eMD2QeKiJJUGH1qOiows2w5o0sKCUSQrvrRQS1lz3SFGvNR1Ck/gqxeA==" }, "@firebase/util": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.6.3.tgz", - "integrity": "sha512-FujteO6Zjv6v8A4HS+t7c+PjU0Kaxj+rOnka0BsI/twUaCC9t8EQPmXpWZdk7XfszfahJn2pqsflUWUhtUkRlg==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.7.1.tgz", + "integrity": "sha512-9do4oXJfznJERFqtZgmKbMRB3W0btSPsEH/5yBYdDVI5OicISZoQPg8qqOgZX6po0tQTNxkNS5E3w4ZNF84k2Q==", "requires": { "tslib": "^2.1.0" } }, "@firebase/webchannel-wrapper": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.7.0.tgz", - "integrity": "sha512-4ACd/c6ushrLuhn0+yjB9hznhnsc2IML6pf0Ulb1Q7w8SvR1jNGPu/Y7i4kvOm6R+WJkMHwyy5z3i3gN+Tawug==" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.8.0.tgz", + "integrity": "sha512-Q8erQds5LuAUgNuFOt/tu/abffYUHYxN+Ogp2V5EOssfFG7Ja4ce324Sqyq41u/vB5CSr+tfYS3JzTDrDxCvdw==" }, "@grpc/grpc-js": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.0.tgz", - "integrity": "sha512-wvKxal+40Xx11DXO2q5PfY3UiE25iwTb8SOz6A9IJII/V7d19x2ex0he+GJfVW0JZCaBjCPSjUB0yU9Ecm4WCw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.1.tgz", + "integrity": "sha512-GVtMU4oh/TeKkWGzXUEsyZtyvSUIT1z49RtGH1UnEGeL+sLuxKl8QH3KZTlSB329R1sWJmesm5hQ5CxXdYH9dg==", "requires": { "@grpc/proto-loader": "^0.7.0", "@types/node": ">=12.12.47" }, "dependencies": { "@grpc/proto-loader": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.2.tgz", - "integrity": "sha512-jCdyLIT/tdQ1zhrbTQnJNK5nbDf0GoBpy5jVNywBzzMDF+Vs6uEaHnfz46dMtDxkvwrF2hzk5Z67goliceH0sA==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.3.tgz", + "integrity": "sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA==", "requires": { "@types/long": "^4.0.1", "lodash.camelcase": "^4.3.0", @@ -30105,9 +30074,9 @@ } }, "protobufjs": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.1.tgz", - "integrity": "sha512-d0nMQqS/aT3lfV8bKi9Gbg73vPd2LcDdTDOu6RE/M+h9DY8g1EmDzk3ADPccthEWfTBjkR2oxNdx9Gs8YubT+g==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.2.tgz", + "integrity": "sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -30227,6 +30196,80 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@jest/schemas": { + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", + "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, + "@jest/types": { + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.1.2.tgz", + "integrity": "sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg==", + "dev": true, + "requires": { + "@jest/schemas": "^29.0.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -30416,13 +30459,13 @@ } }, "@sentry/browser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.14.1.tgz", - "integrity": "sha512-b9nW2+kT9Jl/tfzJmvzpnS6F8ziC62TDx04a7kZDtuaVA5rKKTTlLDg8ZamCRFjjnuwuFhLnzxO34N0KfeTqHg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.15.0.tgz", + "integrity": "sha512-vZYr8L2JmniV8cns4yGOpX32moazz6tsllB1uv7XmmELW98sIuuugVFX0k6cBi89R8pyhdqULFCf9CL8CRguRg==", "requires": { - "@sentry/core": "7.14.1", - "@sentry/types": "7.14.1", - "@sentry/utils": "7.14.1", + "@sentry/core": "7.15.0", + "@sentry/types": "7.15.0", + "@sentry/utils": "7.15.0", "tslib": "^1.9.3" }, "dependencies": { @@ -30469,30 +30512,12 @@ } }, "@sentry/core": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.14.1.tgz", - "integrity": "sha512-sjk60Gf5o9zynhWe1e0ro9uQO4OrKZ3H9xfgBf2ExgKXeMfKzYp5r2v2OKNevEde36Sr/DzlpiPj8EK67xrWPA==", - "requires": { - "@sentry/hub": "7.14.1", - "@sentry/types": "7.14.1", - "@sentry/utils": "7.14.1", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "@sentry/hub": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-7.14.1.tgz", - "integrity": "sha512-BWh5jUvGmzCsJtYy6EX3qA6gTOxwGhA64IEXHbzwIAnBoG+VWao3addaL77AGR9pIgAqn6ssfkX665OZa+GPGw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.15.0.tgz", + "integrity": "sha512-W8d44g04GShBn4Z9VBTUhf1T9LTMfzUnETEx237zzUucv0kkyj3LsWQsJapWchMbmwr1V/CdnNDN+lGDm8iXQA==", "requires": { - "@sentry/types": "7.14.1", - "@sentry/utils": "7.14.1", + "@sentry/types": "7.15.0", + "@sentry/utils": "7.15.0", "tslib": "^1.9.3" }, "dependencies": { @@ -30504,16 +30529,16 @@ } }, "@sentry/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.14.1.tgz", - "integrity": "sha512-PxAfrIwBci6ouHOuRsfVq1B16i92nQNV5IvlqfJIYciazVhDWJvbF52caJAPOFS1WnuQZ4zqBDMYvtnwld3JCA==" + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.15.0.tgz", + "integrity": "sha512-MN9haDRh9ZOsTotoDTHu2BT3sT8Vs1F0alhizUpDyjN2YgBCqR6JV+AbAE1XNHwS2+5zbppch1PwJUVeE58URQ==" }, "@sentry/utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.14.1.tgz", - "integrity": "sha512-CErQFbJMuhnHFKGkfIazQj5ETKoS7hG8PkoQEBt19F5QMh4+sbrJgnpIrIW8fVGtp0qKWKuIxQwD3b+1cFBozA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.15.0.tgz", + "integrity": "sha512-akic22/6xa/RG5Mj7UN6pLc23VnX9zQlKM53L/q3yIr0juckSVthJiiFNdgdqrX03S1tHYlBgPeShKFFTHpkjA==", "requires": { - "@sentry/types": "7.14.1", + "@sentry/types": "7.15.0", "tslib": "^1.9.3" }, "dependencies": { @@ -30533,6 +30558,12 @@ "@sentry/cli": "^1.74.4" } }, + "@sinclair/typebox": { + "version": "0.24.44", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.44.tgz", + "integrity": "sha512-ka0W0KN5i6LfrSocduwliMMpqVgohtPFidKdMEOUjoOFCHcOOYkKsPRxfs5f15oPNHTm6ERAm0GV/+/LTKeiWg==", + "dev": true + }, "@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -30869,6 +30900,30 @@ "@types/node": "*" } }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, "@types/json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", @@ -30944,9 +30999,9 @@ } }, "@types/node": { - "version": "18.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.0.tgz", - "integrity": "sha512-u+h43R6U8xXDt2vzUaVP3VwjjLyOJk6uEciZS8OSyziUQGOwmk+l+4drxcsDboHXwyTaqS1INebghmWMRxq3LA==" + "version": "18.8.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.4.tgz", + "integrity": "sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -30979,9 +31034,9 @@ "dev": true }, "@types/requestidlecallback": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@types/requestidlecallback/-/requestidlecallback-0.3.4.tgz", - "integrity": "sha512-aTSyiZuRemRLTQkJPb25L7A4/eR2Teo5l4yJ1V6P3+MFxEZckTDkNKNtr/V1zEOMzS6H8DgxF22U6jPAPrzQvw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@types/requestidlecallback/-/requestidlecallback-0.3.5.tgz", + "integrity": "sha512-Uh49VrVTPfU0y/qIvXXYuRmd/sKLfVgQWZU1t8FWH22AIJyQbCei1aSmXdMDAijwGUFhBDpJmksiHEDsfiE/cg==", "dev": true }, "@types/resolve": { @@ -31099,6 +31154,21 @@ "@types/node": "*" } }, + "@types/yargs": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz", + "integrity": "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, "@types/yauzl": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", @@ -32837,14 +32907,14 @@ } }, "css-minimizer-webpack-plugin": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.1.0.tgz", - "integrity": "sha512-Zd+yz4nta4GXi3pMqF6skO8kjzuCUbr62z8SLMGZZtxWxTGTLopOiabPGNDEyjHCRhnhdA1EfHmqLa2Oekjtng==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.1.tgz", + "integrity": "sha512-ub12STsk3uXfHFTn9dtkI9nebvUKQ9rB0pn/6WNMRV77nqAOlOOJrrvsP8S8jngcnu+8ll3/9/xa7RCUNBVdOA==", "dev": true, "requires": { "cssnano": "^5.1.8", - "jest-worker": "^27.5.1", - "postcss": "^8.4.13", + "jest-worker": "^29.1.2", + "postcss": "^8.4.17", "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0", "source-map": "^0.6.1" @@ -32866,12 +32936,13 @@ "dev": true }, "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.1.2.tgz", + "integrity": "sha512-AdTZJxKjTSPHbXT/AIOjQVmoFx0LHFcVabWu0sxI7PAy7rFf8c0upyvgBKgguVXdM4vY74JdwkyD4hSmpTW8jA==", "dev": true, "requires": { "@types/node": "*", + "jest-util": "^29.1.2", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } @@ -33030,9 +33101,9 @@ } }, "cypress": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.9.0.tgz", - "integrity": "sha512-MjIWrRpc+bQM9U4kSSdATZWZ2hUqHGFEQTF7dfeZRa4MnalMtc88FIE49USWP2ZVtfy5WPBcgfBX+YorFqGElA==", + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.10.0.tgz", + "integrity": "sha512-bU8r44x1NIYAUNNXt3CwJpLOVth7HUv2hUhYCxZmgZ1IugowDvuHNpevnoZRQx1KKOEisLvIJW+Xen5Pjn41pg==", "dev": true, "requires": { "@cypress/request": "^2.88.10", @@ -35561,42 +35632,42 @@ } }, "firebase": { - "version": "9.10.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.10.0.tgz", - "integrity": "sha512-oSuED6BT+gQrOoXPV/xkxBLMk03A9nDXosW0xy4loQtGRJr9gW6JXgEOr0nmXFMTGzP87CpoC8Kd6y7XKSAeqQ==", - "requires": { - "@firebase/analytics": "0.8.0", - "@firebase/analytics-compat": "0.1.13", - "@firebase/app": "0.7.33", - "@firebase/app-check": "0.5.12", - "@firebase/app-check-compat": "0.2.12", - "@firebase/app-compat": "0.1.34", - "@firebase/app-types": "0.7.0", - "@firebase/auth": "0.20.7", - "@firebase/auth-compat": "0.2.20", - "@firebase/database": "0.13.6", - "@firebase/database-compat": "0.2.6", - "@firebase/firestore": "3.5.0", - "@firebase/firestore-compat": "0.1.25", - "@firebase/functions": "0.8.4", - "@firebase/functions-compat": "0.2.4", - "@firebase/installations": "0.5.12", - "@firebase/installations-compat": "0.1.12", - "@firebase/messaging": "0.9.16", - "@firebase/messaging-compat": "0.1.16", - "@firebase/performance": "0.5.12", - "@firebase/performance-compat": "0.1.12", - "@firebase/remote-config": "0.3.11", - "@firebase/remote-config-compat": "0.1.12", - "@firebase/storage": "0.9.9", - "@firebase/storage-compat": "0.1.17", - "@firebase/util": "1.6.3" + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.12.0.tgz", + "integrity": "sha512-g619mBBrm3Cwvwh297EIPpOWrGB7hAKAS2aXpXWaihhDOjLMj8+ua4vWmehmOyhjOVZDiWT36FIkGgVpkN8ggA==", + "requires": { + "@firebase/analytics": "0.8.2", + "@firebase/analytics-compat": "0.1.15", + "@firebase/app": "0.8.1", + "@firebase/app-check": "0.5.14", + "@firebase/app-check-compat": "0.2.14", + "@firebase/app-compat": "0.1.36", + "@firebase/app-types": "0.8.0", + "@firebase/auth": "0.20.9", + "@firebase/auth-compat": "0.2.22", + "@firebase/database": "0.13.8", + "@firebase/database-compat": "0.2.8", + "@firebase/firestore": "3.7.0", + "@firebase/firestore-compat": "0.2.0", + "@firebase/functions": "0.8.6", + "@firebase/functions-compat": "0.2.6", + "@firebase/installations": "0.5.14", + "@firebase/installations-compat": "0.1.14", + "@firebase/messaging": "0.9.18", + "@firebase/messaging-compat": "0.1.18", + "@firebase/performance": "0.5.14", + "@firebase/performance-compat": "0.1.14", + "@firebase/remote-config": "0.3.13", + "@firebase/remote-config-compat": "0.1.14", + "@firebase/storage": "0.9.11", + "@firebase/storage-compat": "0.1.19", + "@firebase/util": "1.7.1" } }, "firebase-tools": { - "version": "11.13.0", - "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-11.13.0.tgz", - "integrity": "sha512-8p3AAG0DtDl/FF7Zaq5C5y2UoyWGvzVOgPDBjI+ZIPqBXdrAUHhQ/tVN+5J0IbtV+YXTyCmxIKf7kcIenzl2Xg==", + "version": "11.14.2", + "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-11.14.2.tgz", + "integrity": "sha512-ahduDgvR9q3zVMl42k/H2II8Mo4uzgDqp6Wp2wtygpB3diGhmjDCpsIJHYBZoDXOHKgXXXHYpK2W56gUUPPI9w==", "dev": true, "requires": { "@google-cloud/pubsub": "^3.0.1", @@ -35648,7 +35719,7 @@ "stream-chain": "^2.2.4", "stream-json": "^1.7.3", "strip-ansi": "^6.0.1", - "superstatic": "^8.0.0", + "superstatic": "^9.0.0", "tar": "^6.1.11", "tcp-port-used": "^1.0.2", "tmp": "^0.2.1", @@ -35681,9 +35752,9 @@ "optional": true }, "@gar/promisify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", - "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true, "optional": true }, @@ -35907,20 +35978,20 @@ "dev": true }, "@npmcli/fs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz", - "integrity": "sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, "optional": true, "requires": { - "@gar/promisify": "^1.0.1", + "@gar/promisify": "^1.1.3", "semver": "^7.3.5" }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "optional": true, "requires": { @@ -35930,9 +36001,9 @@ } }, "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", "dev": true, "optional": true, "requires": { @@ -36046,12 +36117,6 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, "@types/duplexify": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.0.tgz", @@ -36138,9 +36203,9 @@ } }, "agentkeepalive": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz", - "integrity": "sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "optional": true, "requires": { @@ -36150,9 +36215,9 @@ }, "dependencies": { "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "optional": true, "requires": { @@ -36246,12 +36311,6 @@ } } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, "ansicolors": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", @@ -36334,9 +36393,9 @@ } }, "are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, "optional": true, "requires": { @@ -36535,74 +36594,6 @@ "type-is": "~1.6.17" } }, - "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -36663,32 +36654,42 @@ "dev": true }, "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, "optional": true, "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" }, "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -36696,6 +36697,37 @@ "dev": true, "optional": true }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true, + "optional": true + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -36753,12 +36785,6 @@ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "cardinal": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", @@ -36985,15 +37011,6 @@ "integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==", "dev": true }, - "compare-semver": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/compare-semver/-/compare-semver-1.1.0.tgz", - "integrity": "sha1-fAp5onu4C2xplERfgpWCWdPQIVM=", - "dev": true, - "requires": { - "semver": "^5.0.1" - } - }, "compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -37099,7 +37116,7 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true, "optional": true }, @@ -37323,7 +37340,7 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true, "optional": true }, @@ -37981,30 +37998,20 @@ } }, "gauge": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", - "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "optional": true, "requires": { - "ansi-regex": "^5.0.1", "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", "has-unicode": "^2.0.1", - "signal-exit": "^3.0.0", + "signal-exit": "^3.0.7", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "optional": true - } + "wide-align": "^1.1.5" } }, "gaxios": { @@ -38165,15 +38172,6 @@ "toxic": "^1.0.0" } }, - "global-dirs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", - "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", - "dev": true, - "requires": { - "ini": "^1.3.5" - } - }, "google-auth-library": { "version": "7.14.1", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz", @@ -38306,19 +38304,10 @@ "har-schema": "^2.0.0" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true, "optional": true }, @@ -38424,7 +38413,7 @@ "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "optional": true, "requires": { @@ -38583,9 +38572,9 @@ } }, "install-artifact-from-github": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.3.0.tgz", - "integrity": "sha512-iT8v1GwOAX0pPXifF/5ihnMhHOCo3OeK7z3TQa4CtSNCIg8k0UxqBEk9jRwz8OP68hHXvJ2gxRa89KYHtBkqGA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/install-artifact-from-github/-/install-artifact-from-github-1.3.1.tgz", + "integrity": "sha512-3l3Bymg2eKDsN5wQuMfgGEj2x6l5MCAv0zPL6rxHESufFVlEAKW/6oY9F1aGgvY/EgWm5+eWGRjINveL4X7Hgg==", "dev": true, "optional": true }, @@ -38646,16 +38635,6 @@ "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - } - }, "is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -38665,16 +38644,10 @@ "is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true, "optional": true }, - "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", - "dev": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -39235,40 +39208,66 @@ } }, "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, "optional": true, "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", + "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", + "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", + "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" }, "dependencies": { + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "optional": true + }, "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "optional": true, "requires": { "ms": "2.1.2" } }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "optional": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "dev": true, + "optional": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -39276,16 +39275,23 @@ "dev": true, "optional": true }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "optional": true + }, "socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, "optional": true, "requires": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" } } } @@ -39404,16 +39410,16 @@ } }, "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, "optional": true, "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", + "encoding": "^0.1.13", + "minipass": "^3.1.6", "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "minizlib": "^2.1.2" } }, "minipass-flush": { @@ -39499,9 +39505,9 @@ "dev": true }, "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", "dev": true, "optional": true }, @@ -39542,16 +39548,16 @@ } }, "node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", + "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", "dev": true, "optional": true, "requires": { "env-paths": "^2.2.0", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", + "make-fetch-happen": "^10.0.3", "nopt": "^5.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -39561,9 +39567,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "optional": true, "requires": { @@ -39605,15 +39611,15 @@ "dev": true }, "npmlog": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", - "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "optional": true, "requires": { - "are-we-there-yet": "^2.0.0", + "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", + "gauge": "^4.0.3", "set-blocking": "^2.0.0" } }, @@ -39954,7 +39960,7 @@ "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true, "optional": true }, @@ -39972,7 +39978,7 @@ "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "optional": true } @@ -40139,15 +40145,15 @@ } }, "re2": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/re2/-/re2-1.17.3.tgz", - "integrity": "sha512-Dp5iWVR8W3C7Nm9DziMY4BleMPRb/pe6kvfbzLv80dVYaXRc9jRnwwNqU0oE/taRm0qYR1+Qrtzk9rPjS9ecaQ==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/re2/-/re2-1.17.7.tgz", + "integrity": "sha512-X8GSuiBoVWwcjuppqSjsIkRxNUKDdjhkO9SBekQbZ2ksqWUReCy7DQPWOVpoTnpdtdz5PIpTTxTFzvJv5UMfjA==", "dev": true, "optional": true, "requires": { - "install-artifact-from-github": "^1.3.0", - "nan": "^2.15.0", - "node-gyp": "^8.4.1" + "install-artifact-from-github": "^1.3.1", + "nan": "^2.16.0", + "node-gyp": "^9.0.0" } }, "readable-stream": { @@ -40503,13 +40509,21 @@ "dev": true }, "socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", "dev": true, "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "dependencies": { + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + } } }, "socks-proxy-agent": { @@ -40571,9 +40585,9 @@ } }, "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, "optional": true, "requires": { @@ -40622,26 +40636,6 @@ "safe-buffer": "~5.1.0" } }, - "string-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", - "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "dev": true, - "requires": { - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -40677,79 +40671,45 @@ "dev": true }, "superstatic": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-8.0.0.tgz", - "integrity": "sha512-PqlA2xuEwOlRZsknl58A/rZEmgCUcfWIFec0bn10wYE5/tbMhEbMXGHCYDppiXLXcuhGHyOp1IimM2hLqkLLuw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/superstatic/-/superstatic-9.0.0.tgz", + "integrity": "sha512-4rvzTZdqBPtCjeo/V4YkbBeDnHxI2+3jP1FHGzvTeDswq+HQFB7l3JTjq31BfyJFTogn8JmbDW9sKOeBUGDAhg==", "dev": true, "requires": { "basic-auth-connect": "^1.0.0", - "chalk": "^1.1.3", - "commander": "^9.2.0", - "compare-semver": "^1.0.0", + "commander": "^9.4.0", "compression": "^1.7.0", - "connect": "^3.6.2", + "connect": "^3.7.0", "destroy": "^1.0.4", "fast-url-parser": "^1.1.3", "glob-slasher": "^1.0.1", "is-url": "^1.2.2", "join-path": "^1.1.1", "lodash": "^4.17.19", - "mime-types": "^2.1.16", - "minimatch": "^3.0.4", + "mime-types": "^2.1.35", + "minimatch": "^5.1.0", "morgan": "^1.8.2", "on-finished": "^2.2.0", "on-headers": "^1.0.0", "path-to-regexp": "^1.8.0", - "re2": "^1.15.8", + "re2": "^1.17.7", "router": "^1.3.1", - "string-length": "^1.0.0", - "update-notifier": "^4.1.1" + "update-notifier": "^5.1.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "color-convert": { + "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { - "color-name": "~1.1.4" + "balanced-match": "^1.0.0" } }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "commander": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", - "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==", "dev": true }, "isarray": { @@ -40758,6 +40718,15 @@ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, "path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", @@ -40766,72 +40735,6 @@ "requires": { "isarray": "0.0.1" } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "update-notifier": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", - "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", - "dev": true, - "requires": { - "boxen": "^4.2.0", - "chalk": "^3.0.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } } } }, @@ -40930,12 +40833,6 @@ } } }, - "term-size": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", - "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", - "dev": true - }, "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -41039,12 +40936,6 @@ "prelude-ls": "~1.1.2" } }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -41065,19 +40956,19 @@ } }, "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, "optional": true, "requires": { - "unique-slug": "^2.0.0" + "unique-slug": "^3.0.0" } }, "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, "optional": true, "requires": { @@ -42994,6 +42885,71 @@ "integrity": "sha1-+eIwPUUH9tdDVac2ZNFED7Wg71k=", "dev": true }, + "jest-util": { + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.1.2.tgz", + "integrity": "sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ==", + "dev": true, + "requires": { + "@jest/types": "^29.1.2", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "jest-worker": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", @@ -46873,9 +46829,9 @@ } }, "terser": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", - "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -48181,9 +48137,9 @@ "dev": true }, "xo": { - "version": "0.52.3", - "resolved": "https://registry.npmjs.org/xo/-/xo-0.52.3.tgz", - "integrity": "sha512-liCEteZ5z+QRyh3XzsYWQyxedBHBvx8CDlNvvi+BJz74L0E5/ID2v7JtoX3bD541AlMuOy4e/iWif6hhNGBFNw==", + "version": "0.52.4", + "resolved": "https://registry.npmjs.org/xo/-/xo-0.52.4.tgz", + "integrity": "sha512-5K+2bSy+nPO1fE6TS5KydgqhZ5pyXvO1P6Rw98aflxHi2LFWoShLmDpJOCxSpIP5867LVOCdH/WO+7iXk6/WVQ==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.0", @@ -48253,15 +48209,14 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.36.1", + "version": "5.39.0", "bundled": true, "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.36.1", - "@typescript-eslint/type-utils": "5.36.1", - "@typescript-eslint/utils": "5.36.1", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/type-utils": "5.39.0", + "@typescript-eslint/utils": "5.39.0", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", "regexpp": "^3.2.0", "semver": "^7.3.7", @@ -48269,48 +48224,48 @@ } }, "@typescript-eslint/parser": { - "version": "5.36.1", + "version": "5.39.0", "bundled": true, "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.36.1", - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/typescript-estree": "5.36.1", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.36.1", + "version": "5.39.0", "bundled": true, "dev": true, "requires": { - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/visitor-keys": "5.36.1" + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0" } }, "@typescript-eslint/type-utils": { - "version": "5.36.1", + "version": "5.39.0", "bundled": true, "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.36.1", - "@typescript-eslint/utils": "5.36.1", + "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/utils": "5.39.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.36.1", + "version": "5.39.0", "bundled": true, "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.36.1", + "version": "5.39.0", "bundled": true, "dev": true, "requires": { - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/visitor-keys": "5.36.1", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -48339,24 +48294,24 @@ } }, "@typescript-eslint/utils": { - "version": "5.36.1", + "version": "5.39.0", "bundled": true, "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.36.1", - "@typescript-eslint/types": "5.36.1", - "@typescript-eslint/typescript-estree": "5.36.1", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.36.1", + "version": "5.39.0", "bundled": true, "dev": true, "requires": { - "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/types": "5.39.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -48502,7 +48457,7 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", + "version": "3.2.12", "bundled": true, "dev": true, "requires": { @@ -48539,11 +48494,6 @@ "path-exists": "^5.0.0" } }, - "functional-red-black-tree": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "glob-parent": { "version": "5.1.2", "bundled": true, diff --git a/web/package.json b/web/package.json index c1cfc0e35..d0e12363e 100644 --- a/web/package.json +++ b/web/package.json @@ -1,16 +1,16 @@ { "name": "textusm", "description": "Online tool for Generate a User Story Mapping from indented text.", - "version": "0.11.4", + "version": "0.11.5", "author": "harehare", "bugs": { "url": "https://github.com/harehare/textusm/issues" }, "dependencies": { - "@sentry/browser": "^7.14.1", + "@sentry/browser": "^7.15.0", "clipboard-copy": "^4.0.1", "dexie": "^3.2.2", - "firebase": "^9.10.0", + "firebase": "^9.12.0", "html2canvas": "^1.4.1", "jspdf": "^2.5.1", "monaco-editor": "^0.34.0", @@ -21,7 +21,7 @@ }, "devDependencies": { "@babel/core": "^7.19.3", - "@babel/preset-env": "^7.19.3", + "@babel/preset-env": "^7.19.4", "@commitlint/cli": "^17.1.2", "@commitlint/config-conventional": "^17.1.0", "@dillonkearns/elm-graphql": "^4.3.0", @@ -30,8 +30,8 @@ "@trivago/prettier-plugin-sort-imports": "^3.3.0", "@tsconfig/strictest": "^1.0.2", "@types/jspdf": "^2.0.0", - "@types/node": "^18.8.0", - "@types/requestidlecallback": "^0.3.4", + "@types/node": "^18.8.4", + "@types/requestidlecallback": "^0.3.5", "@types/svgo": "^2.6.4", "@types/uuid": "^8.3.4", "@types/wicg-file-system-access": "^2020.9.5", @@ -40,9 +40,9 @@ "concurrently": "^7.4.0", "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.7.1", - "css-minimizer-webpack-plugin": "^4.1.0", + "css-minimizer-webpack-plugin": "^4.2.1", "cssnano-preset-advanced": "^5.3.8", - "cypress": "^10.9.0", + "cypress": "^10.10.0", "devcert": "^1.2.2", "elm": "^0.19.1-5", "elm-constants": "^1.0.0", @@ -51,7 +51,7 @@ "elm-review": "^2.7.5", "elm-test": "^0.19.1-revision9", "elm-webpack-loader": "^8.0.0", - "firebase-tools": "^11.13.0", + "firebase-tools": "^11.14.2", "html-inline-css-webpack-plugin": "^1.11.1", "html-webpack-plugin": "^5.5.0", "lint-staged": "^13.0.3", @@ -67,7 +67,7 @@ "stylelint-config-prettier": "^9.0.3", "stylelint-config-standard": "^28.0.0", "svg-inline-loader": "^0.8.2", - "terser": "^5.15.0", + "terser": "^5.15.1", "terser-webpack-plugin": "^5.3.6", "ts-loader": "^9.4.1", "typescript": "^4.8.4", @@ -77,7 +77,7 @@ "webpack-merge": "^5.8.0", "workbox-sw": "^6.5.4", "workbox-webpack-plugin": "^6.5.4", - "xo": "^0.52.3" + "xo": "^0.52.4" }, "homepage": "https://github.com/harehare/textusm", "license": "MIT", diff --git a/web/src/elm/Components/Diagram.elm b/web/src/elm/Components/Diagram.elm index b8186db51..77cf462ca 100644 --- a/web/src/elm/Components/Diagram.elm +++ b/web/src/elm/Components/Diagram.elm @@ -40,8 +40,8 @@ import Css.Global as Global exposing (global) import Events import File import Html.Events.Extra.Touch as Touch -import Html.Styled as Html exposing (Html, div) -import Html.Styled.Attributes as Attr exposing (css) +import Html.Styled as Html exposing (Html) +import Html.Styled.Attributes as Attr import Html.Styled.Events as Event import Html.Styled.Lazy as Lazy import Json.Decode as D @@ -591,9 +591,9 @@ view model = (Size.getWidth model.size) |> round in - div + Html.div [ Attr.id "usm-area" - , css + , Attr.css [ position relative , Style.heightFull , case model.moveState of @@ -681,8 +681,8 @@ view model = } , Lazy.lazy4 svgView model centerPosition ( svgWidth, svgHeight ) mainSvg , if SearchModel.isSearch model.search then - div - [ css + Html.div + [ Attr.css [ position absolute , top <| px 62 , right <| px 32 @@ -1397,9 +1397,9 @@ zoomControl isFullscreen scale = s = round <| scale * 100.0 in - div + Html.div [ Attr.id "zoom-control" - , css + , Attr.css [ position absolute , alignItems center , displayFlex @@ -1413,8 +1413,8 @@ zoomControl isFullscreen scale = , border3 (px 1) solid (rgba 0 0 0 0.1) ] ] - [ div - [ css + [ Html.div + [ Attr.css [ width <| px 24 , height <| px 24 , cursor pointer @@ -1425,8 +1425,8 @@ zoomControl isFullscreen scale = ] [ Icon.search (Color.toString Color.disabledIconColor) 18 ] - , div - [ css + , Html.div + [ Attr.css [ width <| px 24 , height <| px 24 , cursor pointer @@ -1437,8 +1437,8 @@ zoomControl isFullscreen scale = ] [ Icon.expandAlt 14 ] - , div - [ css + , Html.div + [ Attr.css [ width <| px 24 , height <| px 24 , cursor pointer @@ -1449,8 +1449,8 @@ zoomControl isFullscreen scale = ] [ Icon.map 14 ] - , div - [ css + , Html.div + [ Attr.css [ width <| px 24 , height <| px 24 , cursor pointer @@ -1459,8 +1459,8 @@ zoomControl isFullscreen scale = ] [ Icon.remove 24 ] - , div - [ css + , Html.div + [ Attr.css [ Css.fontSize <| rem 0.7 , color <| hex <| Color.toString Color.labelDefalut , cursor pointer @@ -1470,8 +1470,8 @@ zoomControl isFullscreen scale = ] [ Html.text (String.fromInt s ++ "%") ] - , div - [ css + , Html.div + [ Attr.css [ width <| px 24 , height <| px 24 , cursor pointer @@ -1480,8 +1480,8 @@ zoomControl isFullscreen scale = ] [ Icon.add 24 ] - , div - [ css + , Html.div + [ Attr.css [ width <| px 24 , height <| px 24 , cursor pointer diff --git a/web/src/elm/Dialog/Confirm.elm b/web/src/elm/Dialog/Confirm.elm index cdfd35e85..5601c9c7b 100644 --- a/web/src/elm/Dialog/Confirm.elm +++ b/web/src/elm/Dialog/Confirm.elm @@ -18,8 +18,8 @@ import Css , translateX , translateY ) -import Html.Styled exposing (Html, button, div, text) -import Html.Styled.Attributes exposing (css, type_) +import Html.Styled as Html exposing (Html) +import Html.Styled.Attributes as Attr import Html.Styled.Events exposing (onClick) import Style.Color as Color import Style.Font as Font @@ -43,9 +43,9 @@ type alias Props msg = view : Props msg -> Html msg view { title, message, okButton, cancelButton } = - div [ css [ Style.dialogBackdrop ] ] - [ div - [ css + Html.div [ Attr.css [ Style.dialogBackdrop ] ] + [ Html.div + [ Attr.css [ Color.bgDefault , Color.textColor , Style.shadowSm @@ -58,35 +58,35 @@ view { title, message, okButton, cancelButton } = , Style.roundedSm ] ] - [ div - [ css + [ Html.div + [ Attr.css [ Text.lg , Font.fontBold , paddingTop <| rem 0.5 , paddingBottom <| rem 0.5 ] ] - [ text title ] - , div - [ css + [ Html.text title ] + , Html.div + [ Attr.css [ paddingTop <| rem 0.75 , paddingBottom <| rem 0.75 ] ] - [ text message ] - , div [ css [ Style.flexCenter, Style.gap4 ] ] - [ button - [ type_ "button" - , css [ Style.submit, marginTop <| px 8, Style.roundedSm ] + [ Html.text message ] + , Html.div [ Attr.css [ Style.flexCenter, Style.gap4 ] ] + [ Html.button + [ Attr.type_ "button" + , Attr.css [ Style.submit, marginTop <| px 8, Style.roundedSm ] , onClick okButton.onClick ] - [ text okButton.text ] - , button - [ type_ "button" - , css [ Style.submit, Color.bgDisabled, Color.textDark, marginTop <| px 8, Style.roundedSm ] + [ Html.text okButton.text ] + , Html.button + [ Attr.type_ "button" + , Attr.css [ Style.submit, Color.bgDisabled, Color.textDark, marginTop <| px 8, Style.roundedSm ] , onClick cancelButton.onClick ] - [ text cancelButton.text ] + [ Html.text cancelButton.text ] ] ] ] diff --git a/web/src/elm/Dialog/Input.elm b/web/src/elm/Dialog/Input.elm index 7cd9a76cd..168b99821 100644 --- a/web/src/elm/Dialog/Input.elm +++ b/web/src/elm/Dialog/Input.elm @@ -26,8 +26,8 @@ import Css , zero ) import Events -import Html.Styled exposing (Html, button, div, input, text) -import Html.Styled.Attributes exposing (classList, css, maxlength, placeholder, type_, value) +import Html.Styled as Html exposing (Html) +import Html.Styled.Attributes as Attr import Html.Styled.Events exposing (onClick, onInput) import Message exposing (Lang, Message) import Style.Color as Color @@ -51,9 +51,9 @@ type alias Props msg = view : Props msg -> Html msg view props = - div [ css [ Style.dialogBackdrop ] ] - [ div - [ css + Html.div [ Attr.css [ Style.dialogBackdrop ] ] + [ Html.div + [ Attr.css [ Color.bgDefault , Color.textColor , Style.shadowSm @@ -65,10 +65,10 @@ view props = , Style.roundedSm ] ] - [ div [ css [ Font.fontBold, padding2 zero (px 8) ] ] [ text props.title ] - , div [ css [ Style.flexCenter, flexDirection column, padding <| px 8 ] ] - [ input - [ css + [ Html.div [ Attr.css [ Font.fontBold, padding2 zero (px 8) ] ] [ Html.text props.title ] + , Html.div [ Attr.css [ Style.flexCenter, flexDirection column, padding <| px 8 ] ] + [ Html.input + [ Attr.css [ Css.batch [ Style.inputLight , Text.sm @@ -85,17 +85,17 @@ view props = ] ] , if props.inProcess then - classList [] + Attr.classList [] else Events.onEnter props.onEnter - , type_ "password" - , placeholder "Enter password" - , maxlength 72 - , value props.value + , Attr.type_ "password" + , Attr.placeholder "Enter password" + , Attr.maxlength 72 + , Attr.value props.value , onInput props.onInput , if props.inProcess then - classList [] + Attr.classList [] else Events.onEnter props.onEnter @@ -103,8 +103,8 @@ view props = [] , case props.errorMessage of Just msg -> - div - [ css + Html.div + [ Attr.css [ Style.widthFull , Text.sm , Font.fontBold @@ -112,24 +112,24 @@ view props = , color Color.errorColor ] ] - [ text (msg props.lang) ] + [ Html.text (msg props.lang) ] Nothing -> Empty.view - , button - [ type_ "button" - , css [ Style.submit, marginTop <| px 8, Style.roundedSm ] + , Html.button + [ Attr.type_ "button" + , Attr.css [ Style.submit, marginTop <| px 8, Style.roundedSm ] , if props.inProcess then - classList [] + Attr.classList [] else onClick props.onEnter ] [ if props.inProcess then - div [ css [ Style.widthFull, Style.flexCenter ] ] [ Spinner.small ] + Html.div [ Attr.css [ Style.widthFull, Style.flexCenter ] ] [ Spinner.small ] else - text "Submit" + Html.text "Submit" ] ] ] diff --git a/web/src/elm/Dialog/Share.elm b/web/src/elm/Dialog/Share.elm index d4d62df59..40eed3afb 100644 --- a/web/src/elm/Dialog/Share.elm +++ b/web/src/elm/Dialog/Share.elm @@ -39,8 +39,8 @@ import Css ) import Env import Events -import Html.Styled exposing (Html, div, input, text, textarea) -import Html.Styled.Attributes as Attr exposing (css, id, maxlength, placeholder, readonly, type_, value) +import Html.Styled as Html exposing (Html) +import Html.Styled.Attributes as Attr import Html.Styled.Events exposing (onClick, onFocus, onInput) import Html.Styled.Lazy as Lazy import Maybe.Extra as MaybeEx @@ -666,8 +666,8 @@ update msg model = copyButton : CopyState -> Msg -> Html Msg copyButton copy msg = - div - [ css + Html.div + [ Attr.css [ Style.flexCenter , cursor pointer , position absolute @@ -693,15 +693,15 @@ copyButton copy msg = Spinner.small Copied -> - text "Copied" + Html.text "Copied" ] view : Model -> Html Msg view model = - div [ css [ Style.dialogBackdrop ] ] - [ div - [ css + Html.div [ Attr.css [ Style.dialogBackdrop ] ] + [ Html.div + [ Attr.css [ Breakpoint.style [ Style.shadowSm , top <| pct 50 @@ -718,43 +718,43 @@ view model = [ Breakpoint.small [ Style.widthAuto, Style.heightAuto, Style.rounded ] ] ] ] - [ div - [ css [ displayFlex, alignItems center, justifyContent start, Font.fontSemiBold ] + [ Html.div + [ Attr.css [ displayFlex, alignItems center, justifyContent start, Font.fontSemiBold ] ] - [ div [ css [ Style.widthFull ] ] - [ div [] - [ div [ css [ Style.label, padding3 (px 8) (px 8) (px 16) ] ] [ text "Link to share" ] - , div [ css [ Style.flexHCenter, Style.paddingSm ] ] - [ div [ css [ Text.sm, Style.mrSm ] ] [ text "Expire in" ] - , input - [ css [ Style.inputLight, Text.sm, Style.paddingXs ] - , type_ "date" + [ Html.div [ Attr.css [ Style.widthFull ] ] + [ Html.div [] + [ Html.div [ Attr.css [ Style.label, padding3 (px 8) (px 8) (px 16) ] ] [ Html.text "Link to share" ] + , Html.div [ Attr.css [ Style.flexHCenter, Style.paddingSm ] ] + [ Html.div [ Attr.css [ Text.sm, Style.mrSm ] ] [ Html.text "Expire in" ] + , Html.input + [ Attr.css [ Style.inputLight, Text.sm, Style.paddingXs ] + , Attr.type_ "date" , Attr.min <| DateUtils.millisToDateString model.timeZone model.now - , value <| model.expireDate + , Attr.value <| model.expireDate , Events.onChangeStyled DateChange ] [] - , input - [ css [ Style.inputLight, Text.sm, Style.paddingXs ] - , type_ "time" - , value <| model.expireTime + , Html.input + [ Attr.css [ Style.inputLight, Text.sm, Style.paddingXs ] + , Attr.type_ "time" + , Attr.value <| model.expireTime , Events.onChangeStyled TimeChange ] [] ] - , div [ css [ Style.flexSpace, Style.paddingSm ] ] - [ div [ css [ Text.sm ] ] [ text "Password protection" ] + , Html.div [ Attr.css [ Style.flexSpace, Style.paddingSm ] ] + [ Html.div [ Attr.css [ Text.sm ] ] [ Html.text "Password protection" ] , Switch.view (MaybeEx.isJust model.password) UsePassword ] , case model.password of Just p -> - div [ css [ Style.paddingSm ] ] - [ input - [ css [ Style.inputLight, Text.sm, color <| hex "#555555", width <| px 305 ] - , type_ "password" - , placeholder "Password" - , value p - , maxlength 72 + Html.div [ Attr.css [ Style.paddingSm ] ] + [ Html.input + [ Attr.css [ Style.inputLight, Text.sm, color <| hex "#555555", width <| px 305 ] + , Attr.type_ "password" + , Attr.placeholder "Password" + , Attr.value p + , Attr.maxlength 72 , onInput EditPassword ] [] @@ -762,15 +762,15 @@ view model = Nothing -> Empty.view - , div [ css [ Style.flexSpace, Style.paddingSm ] ] - [ div [ css [ Text.sm ] ] [ text "Limit access by ip address" ] + , Html.div [ Attr.css [ Style.flexSpace, Style.paddingSm ] ] + [ Html.div [ Attr.css [ Text.sm ] ] [ Html.text "Limit access by ip address" ] , Switch.view (MaybeEx.isJust model.ip.input) UseLimitByIP ] , case model.ip.input of Just i -> - div [ css [ Style.paddingSm ] ] - [ textarea - [ css + Html.div [ Attr.css [ Style.paddingSm ] ] + [ Html.textarea + [ Attr.css [ Style.inputLight , Text.sm , resize none @@ -783,14 +783,14 @@ view model = else borderStyle none ] - , placeholder "127.0.0.1" - , maxlength 150 + , Attr.placeholder "127.0.0.1" + , Attr.maxlength 150 , onInput EditIP ] - [ text i ] + [ Html.text i ] , if model.ip.error then - div [ css [ Style.widthFull, Text.sm, Font.fontBold, textAlign right, Color.textError ] ] - [ text "Invalid ip address entered" ] + Html.div [ Attr.css [ Style.widthFull, Text.sm, Font.fontBold, textAlign right, Color.textError ] ] + [ Html.text "Invalid ip address entered" ] else Empty.view @@ -798,15 +798,15 @@ view model = Nothing -> Empty.view - , div [ css [ Style.flexSpace, Style.paddingSm ] ] - [ div [ css [ Text.sm ] ] [ text "Limit access by mail address" ] + , Html.div [ Attr.css [ Style.flexSpace, Style.paddingSm ] ] + [ Html.div [ Attr.css [ Text.sm ] ] [ Html.text "Limit access by mail address" ] , Switch.view (MaybeEx.isJust model.email.input) UseLimitByEmail ] , case model.email.input of Just m -> - div [ css [ Style.paddingSm ] ] - [ textarea - [ css + Html.div [ Attr.css [ Style.paddingSm ] ] + [ Html.textarea + [ Attr.css [ Style.inputLight , Text.sm , resize none @@ -819,14 +819,14 @@ view model = else borderStyle none ] - , placeholder "example@textusm.com" - , maxlength 150 + , Attr.placeholder "example@textusm.com" + , Attr.maxlength 150 , onInput EditEmail ] - [ text m ] + [ Html.text m ] , if model.email.error then - div [ css [ Style.widthFull, Text.sm, Font.fontBold, textAlign right, Color.textError ] ] - [ text "Invalid mail address entered" ] + Html.div [ Attr.css [ Style.widthFull, Text.sm, Font.fontBold, textAlign right, Color.textError ] ] + [ Html.text "Invalid mail address entered" ] else Empty.view @@ -834,17 +834,17 @@ view model = Nothing -> Empty.view - , div [ css [ position relative, Style.paddingSm ] ] - [ input - [ css + , Html.div [ Attr.css [ position relative, Style.paddingSm ] ] + [ Html.input + [ Attr.css [ Style.inputLight , Text.sm , color <| hex "#555555" , width <| px 305 ] - , readonly True - , value <| sharUrl model.token model.diagramType - , id "share-url" + , Attr.readonly True + , Attr.value <| sharUrl model.token model.diagramType + , Attr.id "share-url" , onClick <| SelectAll "share-url" , onFocus UrlCopy ] @@ -852,52 +852,52 @@ view model = , Lazy.lazy2 copyButton model.urlCopyState UrlCopy ] ] - , div [ css [ paddingTop <| px 24 ] ] - [ div [ css [ Style.label, displayFlex, alignItems center, padding3 (px 8) (px 8) (px 16) ] ] - [ text "Embed" + , Html.div [ Attr.css [ paddingTop <| px 24 ] ] + [ Html.div [ Attr.css [ Style.label, displayFlex, alignItems center, padding3 (px 8) (px 8) (px 16) ] ] + [ Html.text "Embed" ] - , div [ css [ displayFlex, alignItems center, Style.paddingSm ] ] - [ div [ css [ Text.sm, Style.mrSm ] ] [ text "Embed size" ] - , input - [ css + , Html.div [ Attr.css [ displayFlex, alignItems center, Style.paddingSm ] ] + [ Html.div [ Attr.css [ Text.sm, Style.mrSm ] ] [ Html.text "Embed size" ] + , Html.input + [ Attr.css [ Style.inputLight , Text.sm , color <| hex "#555555" , width <| px 60 , height <| px 32 ] - , type_ "number" - , value <| String.fromInt (Size.getWidth model.embedSize) + , Attr.type_ "number" + , Attr.value <| String.fromInt (Size.getWidth model.embedSize) , onInput ChangeEmbedWidth ] [] - , div [] [ text "x" ] - , input - [ css + , Html.div [] [ Html.text "x" ] + , Html.input + [ Attr.css [ Style.inputLight , Text.sm , color <| hex "#555555" , width <| px 60 , height <| px 32 ] - , type_ "number" - , value <| String.fromInt (Size.getHeight model.embedSize) + , Attr.type_ "number" + , Attr.value <| String.fromInt (Size.getHeight model.embedSize) , onInput ChangeEmbedHeight ] [] - , div [] [ text "px" ] + , Html.div [] [ Html.text "px" ] ] - , div [ css [ position relative, Style.paddingSm ] ] - [ input - [ css + , Html.div [ Attr.css [ position relative, Style.paddingSm ] ] + [ Html.input + [ Attr.css [ Style.inputLight , Text.sm , color <| hex "#555555" , width <| px 305 ] - , readonly True - , value <| embedUrl { token = model.token, diagramType = model.diagramType, title = model.title, embedSize = model.embedSize } - , id "embed" + , Attr.readonly True + , Attr.value <| embedUrl { token = model.token, diagramType = model.diagramType, title = model.title, embedSize = model.embedSize } + , Attr.id "embed" , onClick <| SelectAll "embed" , onFocus EmbedCopy ] @@ -907,8 +907,8 @@ view model = ] ] ] - , div - [ css [ position absolute, cursor pointer, top <| rem 1, right <| rem 1 ] + , Html.div + [ Attr.css [ position absolute, cursor pointer, top <| rem 1, right <| rem 1 ] , onClick Close ] [ Icon.times Color.white 24 ] diff --git a/web/src/elm/Main.elm b/web/src/elm/Main.elm index 7a74dbbed..89c842af3 100644 --- a/web/src/elm/Main.elm +++ b/web/src/elm/Main.elm @@ -21,8 +21,8 @@ import Dialog.Input as InputDialog import Dialog.Share as Share import Env import File.Download as Download -import Html.Styled as Html exposing (Html, div, img, main_, text) -import Html.Styled.Attributes exposing (alt, attribute, css, id) +import Html.Styled as Html exposing (Html) +import Html.Styled.Attributes as Attr import Html.Styled.Events as E import Html.Styled.Lazy as Lazy import Json.Decode as D @@ -49,6 +49,7 @@ import Models.Shortcuts as Shortcuts import Models.Size as Size exposing (Size) import Models.Snackbar as SnackbarModel import Models.Text as Text +import Models.Theme as Theme import Models.Title as Title import Models.Window as Window exposing (Window) import Page.Embed as Embed @@ -260,29 +261,29 @@ editor model = editorSettings = defaultEditorSettings model.settingsModel.settings.editor in - div [ id "editor", css [ Style.full, Style.paddingSm ] ] + Html.div [ Attr.id "editor", Attr.css [ Style.full, Style.paddingSm ] ] [ Html.node "monaco-editor" - [ attribute "value" <| Text.toString model.diagramModel.text - , attribute "fontSize" <| String.fromInt <| .fontSize <| defaultEditorSettings model.settingsModel.settings.editor - , attribute "wordWrap" <| + [ Attr.attribute "value" <| Text.toString model.diagramModel.text + , Attr.attribute "fontSize" <| String.fromInt <| .fontSize <| defaultEditorSettings model.settingsModel.settings.editor + , Attr.attribute "wordWrap" <| if editorSettings.wordWrap then "true" else "false" - , attribute "showLineNumber" <| + , Attr.attribute "showLineNumber" <| if editorSettings.showLineNumber then "true" else "false" - , attribute "changed" <| + , Attr.attribute "changed" <| if Text.isChanged model.diagramModel.text then "true" else "false" - , attribute "diagramType" <| DiagramType.toTypeString model.currentDiagram.diagram + , Attr.attribute "diagramType" <| DiagramType.toTypeString model.currentDiagram.diagram , Attributes.dataTest "editor" ] [] @@ -305,7 +306,7 @@ init flags url key = initSettings : Settings initSettings = D.decodeValue settingsDecoder flags.settings - |> Result.withDefault (defaultSettings flags.isDarkMode) + |> Result.withDefault (defaultSettings (Theme.System flags.isDarkMode)) lang : Message.Lang lang = @@ -338,6 +339,7 @@ init flags url key = , snackbar = SnackbarModel.Hide , notification = Notification.Hide , settingsCache = SettingsCache.new + , theme = Theme.System flags.isDarkMode } ( settingsModel, _ ) = @@ -1008,6 +1010,7 @@ update message = , editor = m.settingsModel.settings.editor , diagram = Just m.currentDiagram , location = m.settingsModel.settings.location + , theme = m.settingsModel.settings.theme } ( newSettingsModel, _ ) = @@ -1169,7 +1172,7 @@ update message = >> Return.andThen (setDiagramSettings settings) LoadSettings (Err _) -> - Return.andThen (\m -> setDiagramSettings (.storyMap (defaultSettings m.browserStatus.isDarkMode)) m) + Return.andThen (\m -> setDiagramSettings (.storyMap (defaultSettings (Theme.System m.browserStatus.isDarkMode))) m) >> Return.andThen stopProgress LoadSettingsFromLocal settingsJson -> @@ -1412,8 +1415,8 @@ updateShare m msg = view : Model -> Html Msg view model = - main_ - [ css [ position relative, Style.widthScreen ] + Html.main_ + [ Attr.css [ position relative, Style.widthScreen ] , E.onClick CloseMenu ] [ GlobalStyle.style @@ -1435,8 +1438,8 @@ view model = , Lazy.lazy Notification.view model.notification , Lazy.lazy Snackbar.view model.snackbar , Lazy.lazy showProgress model.progress - , div - [ css + , Html.div + [ Attr.css [ displayFlex , overflow hidden , position relative @@ -1488,8 +1491,8 @@ view model = case ShareToken.unwrap id_ |> Maybe.andThen Jwt.fromString of Just jwt -> if jwt.checkEmail && Session.isGuest model.session then - div - [ css + Html.div + [ Attr.css [ Style.flexCenter , TextStyle.xl , FontStyle.fontSemiBold @@ -1499,17 +1502,17 @@ view model = , height <| calc (vh 100) minus (px 40) ] ] - [ img + [ Html.img [ Asset.src Asset.logo - , css [ width <| px 32 ] - , alt "NOT FOUND" + , Attr.css [ width <| px 32 ] + , Attr.alt "NOT FOUND" ] [] - , div [ css [ Style.mSm ] ] [ text "Sign in required" ] + , Html.div [ Attr.css [ Style.mSm ] ] [ Html.text "Sign in required" ] ] else - div [ css [ Style.full, backgroundColor <| hex model.settingsModel.settings.storyMap.backgroundColor ] ] + Html.div [ Attr.css [ Style.full, backgroundColor <| hex model.settingsModel.settings.storyMap.backgroundColor ] ] [ Lazy.lazy Diagram.view model.diagramModel |> Html.map UpdateDiagram ] @@ -1526,8 +1529,8 @@ view model = SwitchWindow model.diagramModel.settings.backgroundColor model.window - (div - [ css + (Html.div + [ Attr.css [ Breakpoint.style [ Style.hMain , Style.widthFull @@ -1547,8 +1550,8 @@ view model = , onToggleEditor = ShowEditor , onResize = HandleStartWindowResize } - (div - [ css + (Html.div + [ Attr.css [ Breakpoint.style [ Style.hMain , Style.widthFull diff --git a/web/src/elm/Models/DiagramLocation.elm b/web/src/elm/Models/DiagramLocation.elm index b94db7c32..76f954af8 100644 --- a/web/src/elm/Models/DiagramLocation.elm +++ b/web/src/elm/Models/DiagramLocation.elm @@ -22,7 +22,6 @@ type DiagramLocation = Local | Remote | Gist - | GoogleDrive | LocalFileSystem @@ -70,9 +69,6 @@ fromString s = "gist" -> Gist - "googledrive" -> - GoogleDrive - "local" -> Local @@ -108,8 +104,5 @@ toString loc = Gist -> "gist" - GoogleDrive -> - "googledrive" - LocalFileSystem -> "localfilesystem" diff --git a/web/src/elm/Models/Model.elm b/web/src/elm/Models/Model.elm index e8ebe076f..a96abb74a 100644 --- a/web/src/elm/Models/Model.elm +++ b/web/src/elm/Models/Model.elm @@ -27,6 +27,7 @@ import Models.SettingsCache exposing (SettingsCache) import Models.ShareState exposing (ShareState) import Models.Shortcuts exposing (Shortcuts) import Models.Snackbar exposing (Snackbar) +import Models.Theme exposing (Theme) import Models.Window exposing (Window) import Monocle.Lens exposing (Lens) import Page.List as DiagramList @@ -70,6 +71,7 @@ type alias Model = , snackbar : Snackbar Msg , notification : Notification , settingsCache : SettingsCache + , theme : Theme } diff --git a/web/src/elm/Models/Theme.elm b/web/src/elm/Models/Theme.elm new file mode 100644 index 000000000..12c23acb3 --- /dev/null +++ b/web/src/elm/Models/Theme.elm @@ -0,0 +1,66 @@ +module Models.Theme exposing (Theme(..), decoder, encoder, fromString, toDisplayString, toString) + +import Json.Decode as D +import Json.Encode as E + + +type alias IsDarkMode = + Bool + + +type Theme + = System IsDarkMode + | Light + | Dark + + +decoder : D.Decoder Theme +decoder = + D.map fromString D.string + + +encoder : Theme -> E.Value +encoder theme = + E.string <| toString theme + + +fromString : String -> Theme +fromString t = + case t of + "system" -> + System True + + "light" -> + Light + + "dark" -> + Dark + + _ -> + System True + + +toString : Theme -> String +toString t = + case t of + System _ -> + "system" + + Light -> + "light" + + Dark -> + "dark" + + +toDisplayString : Theme -> String +toDisplayString t = + case t of + System _ -> + "System" + + Light -> + "Light" + + Dark -> + "Dark" diff --git a/web/src/elm/Page/Embed.elm b/web/src/elm/Page/Embed.elm index 7d0ecca74..1104db95a 100644 --- a/web/src/elm/Page/Embed.elm +++ b/web/src/elm/Page/Embed.elm @@ -15,7 +15,7 @@ import Css , solid ) import Html.Styled as Html exposing (Html, div) -import Html.Styled.Attributes exposing (css) +import Html.Styled.Attributes as Attr import Html.Styled.Lazy as Lazy import Models.Model exposing (Model, Msg(..)) import Style.Color as Color @@ -26,7 +26,7 @@ import Views.Logo as Logo view : Model -> Html Msg view model = div - [ css + [ Attr.css [ border3 (px 1) solid Color.darkTextColor , backgroundColor <| hex model.settingsModel.settings.storyMap.backgroundColor , Style.full @@ -35,5 +35,5 @@ view model = ] [ Lazy.lazy Diagram.view model.diagramModel |> Html.map UpdateDiagram - , div [ css [ position absolute, bottom <| px 8, right <| px 8 ] ] [ Logo.view ] + , div [ Attr.css [ position absolute, bottom <| px 8, right <| px 8 ] ] [ Logo.view ] ] diff --git a/web/src/elm/Page/Help.elm b/web/src/elm/Page/Help.elm index 849ff8569..6269c92f9 100644 --- a/web/src/elm/Page/Help.elm +++ b/web/src/elm/Page/Help.elm @@ -28,7 +28,7 @@ import Css , zero ) import Html.Styled exposing (Html, div, img, span, text) -import Html.Styled.Attributes exposing (alt, css) +import Html.Styled.Attributes as Attr import Maybe.Extra exposing (isNothing) import Style.Color as Color import Style.Font as Font @@ -39,10 +39,10 @@ import Style.Text as Text view : Html msg view = div - [ css [ Text.xs, Color.bgDefault, Style.widthFull, Color.textColor, overflowX hidden ] + [ Attr.css [ Text.xs, Color.bgDefault, Style.widthFull, Color.textColor, overflowX hidden ] ] [ div - [ css + [ Attr.css [ Font.fontSemiBold , displayFlex , alignItems center @@ -51,10 +51,10 @@ view = , Style.padding3 ] ] - [ img [ Asset.src Asset.logo, css [ Style.ml2, width <| px 32 ], alt "logo" ] [] - , span [ css [ Text.xl2, Style.ml2 ] ] [ text "TextUSM" ] + [ img [ Asset.src Asset.logo, Attr.css [ Style.ml2, width <| px 32 ], Attr.alt "logo" ] [] + , span [ Attr.css [ Text.xl2, Style.ml2 ] ] [ text "TextUSM" ] ] - , div [ css [ Text.sm, padding2 zero (px 16) ] ] + , div [ Attr.css [ Text.sm, padding2 zero (px 16) ] ] [ text "TextUSM is a simple tool. Help you draw user story map using indented text." ] @@ -150,24 +150,24 @@ view = -- Hot Keys , section (Just "Hotkeys") , div - [ css + [ Attr.css [ displayFlex , Text.base , flexDirection column , padding <| px 16 ] ] - [ div [ css [ Font.fontSemiBold, displayFlex ] ] + [ div [ Attr.css [ Font.fontSemiBold, displayFlex ] ] [ itemView [ text "Windows" ] , itemView [ text "Mac" ] , itemView [ text "Action" ] ] - , div [ css [ displayFlex ] ] + , div [ Attr.css [ displayFlex ] ] [ itemView [ text "Ctrl+S" ] , itemView [ text "Command+S" ] , itemView [ text "Save" ] ] - , div [ css [ displayFlex ] ] + , div [ Attr.css [ displayFlex ] ] [ itemView [ text "Ctrl+O" ] , itemView [ text "Command+O" ] , itemView [ text "Open" ] @@ -178,7 +178,7 @@ view = activityView : List (Html msg) -> Html msg activityView chlldren = - div [ css [ Color.textActivity ] ] chlldren + div [ Attr.css [ Color.textActivity ] ] chlldren indentedText : String -> Int -> Html msg @@ -190,13 +190,13 @@ indentedText s indent = itemView : List (Html msg) -> Html msg itemView children = - div [ css [ width <| px 96, Text.sm, Style.flexCenter, border3 (px 1) solid Color.borderColor, Style.paddingSm ] ] children + div [ Attr.css [ width <| px 96, Text.sm, Style.flexCenter, border3 (px 1) solid Color.borderColor, Style.paddingSm ] ] children section : Maybe String -> Html msg section title = div - [ css + [ Attr.css [ if isNothing title then Css.batch [] @@ -216,29 +216,29 @@ section title = storyView : List (Html msg) -> Html msg storyView children = - div [ css [ color <| hex "#ffffff" ] ] children + div [ Attr.css [ color <| hex "#ffffff" ] ] children taskView : List (Html msg) -> Html msg taskView children = - div [ css [ Color.textAccent ] ] children + div [ Attr.css [ Color.textAccent ] ] children textActivityView : List (Html msg) -> Html msg textActivityView children = - div [ css [ Text.base, Color.textActivity, padding3 zero (px 16) zero ] ] children + div [ Attr.css [ Text.base, Color.textActivity, padding3 zero (px 16) zero ] ] children textCommentView : List (Html msg) -> Html msg textCommentView children = - div [ css [ Text.base, Color.textComment, padding3 zero (px 16) zero ] ] children + div [ Attr.css [ Text.base, Color.textComment, padding3 zero (px 16) zero ] ] children textTaskStyle : List (Html msg) -> Html msg textTaskStyle children = - div [ css [ Text.base, Color.textAccent, padding3 zero (px 16) zero ] ] children + div [ Attr.css [ Text.base, Color.textAccent, padding3 zero (px 16) zero ] ] children textView : List (Html msg) -> Html msg textView children = - div [ css [ Text.base, padding3 zero (px 16) zero ] ] children + div [ Attr.css [ Text.base, padding3 zero (px 16) zero ] ] children diff --git a/web/src/elm/Page/List.elm b/web/src/elm/Page/List.elm index f1b21781e..ae89365c0 100644 --- a/web/src/elm/Page/List.elm +++ b/web/src/elm/Page/List.elm @@ -87,7 +87,7 @@ import File.Download as Download import File.Select as Select import Graphql.Object.GistItem exposing (diagram) import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes exposing (class, css, placeholder) +import Html.Styled.Attributes as Attr import Html.Styled.Events exposing (onClick, onInput, stopPropagationOn) import Html.Styled.Lazy as Lazy import Http @@ -335,7 +335,7 @@ selectedItemStyle = sideMenu : Session -> DiagramList -> Bool -> Html Msg sideMenu session diagramList isOnline = Html.div - [ css + [ Attr.css [ Breakpoint.style [ display none ] [ Breakpoint.large [ TextStyle.base @@ -351,50 +351,50 @@ sideMenu session diagramList isOnline = ] [ Html.div [ if isAllList diagramList then - css [ selectedItemStyle ] + Attr.css [ selectedItemStyle ] else - css [ itemStyle ] + Attr.css [ itemStyle ] , onClick GetDiagrams ] [ Html.text "All" ] , if Session.isSignedIn session && isOnline then Html.div [ if isPublicList diagramList then - css [ selectedItemStyle ] + Attr.css [ selectedItemStyle ] else - css [ itemStyle ] + Attr.css [ itemStyle ] , onClick <| GetPublicDiagrams 1 ] - [ Icon.globe Color.iconColor 16, Html.div [ css [ Style.paddingSm ] ] [ Html.text "Public" ] ] + [ Icon.globe Color.iconColor 16, Html.div [ Attr.css [ Style.paddingSm ] ] [ Html.text "Public" ] ] else Empty.view , if Session.isSignedIn session && isOnline then Html.div [ if isBookMarkList diagramList then - css [ selectedItemStyle ] + Attr.css [ selectedItemStyle ] else - css [ itemStyle ] + Attr.css [ itemStyle ] , onClick <| GetBookmarkDiagrams 1 ] - [ Icon.bookmark Color.iconColor 14, Html.div [ css [ Style.paddingSm ] ] [ Html.text "Bookmarks" ] ] + [ Icon.bookmark Color.iconColor 14, Html.div [ Attr.css [ Style.paddingSm ] ] [ Html.text "Bookmarks" ] ] else Empty.view , if Session.isGithubUser session && isOnline then Html.div [ if isGistList diagramList then - css [ selectedItemStyle ] + Attr.css [ selectedItemStyle ] else - css [ itemStyle ] + Attr.css [ itemStyle ] , onClick <| GetGistDiagrams 1 ] [ Icon.github Color.iconColor 14 - , Html.div [ css [ Style.paddingSm ] ] [ Html.text "Gist" ] + , Html.div [ Attr.css [ Style.paddingSm ] ] [ Html.text "Gist" ] ] else @@ -405,7 +405,7 @@ sideMenu session diagramList isOnline = mainView : List (Html msg) -> Html msg mainView children = Html.div - [ css + [ Attr.css [ Breakpoint.style [ Style.widthFull , height <| calc (vh 100) minus (px 128) @@ -544,9 +544,9 @@ diagramListView : -> Html Msg diagramListView props = Html.div - [ css [ Style.widthFull ] ] + [ Attr.css [ Style.widthFull ] ] [ Html.div - [ css + [ Attr.css [ displayFlex , alignItems center , justifyContent end @@ -554,14 +554,14 @@ diagramListView props = , color <| hex <| Color.toString Color.white ] ] - [ Html.div [ css [ displayFlex, alignItems center, Style.widthFull, position relative ] ] + [ Html.div [ Attr.css [ displayFlex, alignItems center, Style.widthFull, position relative ] ] [ Html.div - [ css [ position absolute, left <| px 3, top <| px 5 ] + [ Attr.css [ position absolute, left <| px 3, top <| px 5 ] ] [ Icon.search (Color.toString Color.labelDefalut) 24 ] , Html.input - [ placeholder "Search" - , css + [ Attr.placeholder "Search" + , Attr.css [ Style.widthFull , TextStyle.sm , borderStyle none @@ -578,19 +578,29 @@ diagramListView props = [] ] , Html.div - [ css [ Style.button, marginLeft <| px 8 ] + [ Attr.css [ Style.button, marginLeft <| px 8 ] , onClick Export ] - [ Icon.cloudDownload Color.white 24, Html.span [ class "bottom-tooltip" ] [ Html.span [ class "text" ] [ Html.text <| Message.toolTipExport props.lang ] ] ] + [ Icon.cloudDownload Color.white 24 + , Html.span + [ Attr.class "bottom-tooltip" + ] + [ Html.span [ Attr.class "text" ] + [ Html.text <| Message.toolTipExport props.lang ] + ] + ] , Html.div - [ css [ Style.button ] + [ Attr.css [ Style.button ] , onClick Import ] - [ Icon.cloudUpload Color.white 24, Html.span [ class "bottom-tooltip" ] [ Html.span [ class "text" ] [ Html.text <| Message.toolTipImport props.lang ] ] ] + [ Icon.cloudUpload Color.white 24 + , Html.span [ Attr.class "bottom-tooltip" ] + [ Html.span [ Attr.class "text" ] [ Html.text <| Message.toolTipImport props.lang ] ] + ] ] - , Html.div [ css [ overflowY auto, height <| calc (vh 100) minus (px 148) ] ] + , Html.div [ Attr.css [ overflowY auto, height <| calc (vh 100) minus (px 148) ] ] [ Html.div - [ css + [ Attr.css [ Breakpoint.style [ Style.full , ColorStyle.bgDefault @@ -625,9 +635,9 @@ diagramListView props = (\d -> Lazy.lazy2 diagramView props.timeZone d) ) , if props.hasMorePage then - Html.div [ css [ Style.widthFull, Style.flexCenter ] ] + Html.div [ Attr.css [ Style.widthFull, Style.flexCenter ] ] [ Html.div - [ css [ Style.button, ColorStyle.bgActivity, textAlign center, Style.mSm ] + [ Attr.css [ Style.button, ColorStyle.bgActivity, textAlign center, Style.mSm ] , onClick <| LoadNextPage props.diagramList <| props.pageNo + 1 ] [ Html.text "Load more" ] @@ -642,23 +652,23 @@ diagramListView props = cloudIconView : List (Html msg) -> Html msg cloudIconView children = - Html.div [ css [ display block, position absolute, top <| px 5, right <| px 32 ] ] children + Html.div [ Attr.css [ display block, position absolute, top <| px 5, right <| px 32 ] ] children publicIconView : List (Html msg) -> Html msg publicIconView children = - Html.div [ css [ display block, position absolute, top <| px 5, right <| px 8 ] ] children + Html.div [ Attr.css [ display block, position absolute, top <| px 5, right <| px 8 ] ] children bookmarkIconView : DiagramItem -> List (Html Msg) -> Html Msg bookmarkIconView diagram children = - Html.div [ css [ display block, position absolute, bottom <| px 40, right <| px 8 ], stopPropagationOn "click" (D.succeed ( Bookmark diagram, True )) ] children + Html.div [ Attr.css [ display block, position absolute, bottom <| px 40, right <| px 8 ], stopPropagationOn "click" (D.succeed ( Bookmark diagram, True )) ] children diagramView : Zone -> DiagramItem -> Html Msg diagramView timezone diagram = Html.div - [ css + [ Attr.css [ displayFlex , alignItems end , justifyContent end @@ -694,7 +704,7 @@ diagramView timezone diagram = , Attributes.dataTest "diagram-list-item" ] [ Html.div - [ css + [ Attr.css [ TextStyle.sm , Style.widthFull , textOverflow ellipsis @@ -707,11 +717,11 @@ diagramView timezone diagram = ] ] [ Html.div - [ css [ overflow hidden, textOverflow ellipsis, TextStyle.base, FontStyle.fontSemiBold ] ] + [ Attr.css [ overflow hidden, textOverflow ellipsis, TextStyle.base, FontStyle.fontSemiBold ] ] [ Html.text (Title.toString diagram.title) ] , Html.div - [ css [ displayFlex, alignItems center, justifyContent spaceBetween ] ] - [ Html.div [ css [ TextStyle.xs, display block, ColorStyle.textDark ] ] [ Html.text (DateUtils.millisToString timezone diagram.updatedAt) ] ] + [ Attr.css [ displayFlex, alignItems center, justifyContent spaceBetween ] ] + [ Html.div [ Attr.css [ TextStyle.xs, display block, ColorStyle.textDark ] ] [ Html.text (DateUtils.millisToString timezone diagram.updatedAt) ] ] ] , case diagram.location of Just DiagramLocation.Gist -> @@ -732,7 +742,7 @@ diagramView timezone diagram = else Html.div - [ css + [ Attr.css [ bottom <| px -4 , right <| px -1 , Style.button @@ -758,7 +768,7 @@ errorView : Http.Error -> Html Msg errorView e = mainView [ Html.div - [ css + [ Attr.css [ Style.flexCenter , Style.heightFull , TextStyle.xl2 @@ -766,7 +776,7 @@ errorView e = , color <| hex <| Color.toString Color.labelDefalut ] ] - [ Html.div [ css [ Style.mbSm ] ] + [ Html.div [ Attr.css [ Style.mbSm ] ] [ Html.text ("Failed " ++ Utils.httpErrorToString e) ] ] diff --git a/web/src/elm/Page/New.elm b/web/src/elm/Page/New.elm index 0411dff8c..ffb0d79a1 100644 --- a/web/src/elm/Page/New.elm +++ b/web/src/elm/Page/New.elm @@ -21,8 +21,8 @@ import Css , solid , transparent ) -import Html.Styled exposing (Html, a, div, img, text) -import Html.Styled.Attributes exposing (attribute, class, css, href) +import Html.Styled as Html exposing (Attribute, Html) +import Html.Styled.Attributes as Attr import Models.DiagramType as DiagramType exposing (DiagramType(..)) import Route import Style.Breakpoint as Breakpoint @@ -34,9 +34,9 @@ import Style.Text as Text view : Html msg view = - div [ css [ Style.full ] ] - [ div - [ css + Html.div [ Attr.css [ Style.full ] ] + [ Html.div + [ Attr.css [ Breakpoint.style [ Style.widthScreen , Style.hMobileContent @@ -60,17 +60,17 @@ view = <| List.map (\item -> - a [ href item.url, attribute "aria-label" <| DiagramType.toLongString item.type_ ] - [ div - [ class "new-item" + Html.a [ Attr.href item.url, Attr.attribute "aria-label" <| DiagramType.toLongString item.type_ ] + [ Html.div + [ Attr.class "new-item" , newItemStyle , Attributes.dataTest <| "new-" ++ DiagramType.toString item.type_ ] - [ img [ Asset.src item.image, css [ property "object-fit" "contain", Style.widthFull, height <| px 100 ] ] [] - , div - [ css [ Text.sm, Font.fontSemiBold ] + [ Html.img [ Asset.src item.image, Attr.css [ property "object-fit" "contain", Style.widthFull, height <| px 100 ] ] [] + , Html.div + [ Attr.css [ Text.sm, Font.fontSemiBold ] ] - [ text <| DiagramType.toLongString item.type_ ] + [ Html.text <| DiagramType.toLongString item.type_ ] ] ] ) @@ -85,9 +85,9 @@ type alias NewItem = } -newItemStyle : Html.Styled.Attribute msg +newItemStyle : Attribute msg newItemStyle = - css + Attr.css [ Style.flexCenter , flexDirection column , cursor pointer diff --git a/web/src/elm/Page/NotFound.elm b/web/src/elm/Page/NotFound.elm index 0f5c09ac0..c551ce6dd 100644 --- a/web/src/elm/Page/NotFound.elm +++ b/web/src/elm/Page/NotFound.elm @@ -12,8 +12,8 @@ import Css , vh , width ) -import Html.Styled exposing (Html, div, img, text) -import Html.Styled.Attributes exposing (alt, css) +import Html.Styled as Html exposing (Html) +import Html.Styled.Attributes as Attr import Style.Color as Color import Style.Font as Font import Style.Style as Style @@ -22,8 +22,8 @@ import Style.Text as Text view : Html msg view = - div - [ css + Html.div + [ Attr.css [ Style.flexCenter , Text.xl , Font.fontSemiBold @@ -33,6 +33,6 @@ view = , margin <| px 8 ] ] - [ img [ Asset.src Asset.logo, css [ width <| px 32 ], alt "Not found" ] [] - , div [ css [ padding <| px 8 ] ] [ text "Not found" ] + [ Html.img [ Asset.src Asset.logo, Attr.css [ width <| px 32 ], Attr.alt "Not found" ] [] + , Html.div [ Attr.css [ padding <| px 8 ] ] [ Html.text "Not found" ] ] diff --git a/web/src/elm/Page/Settings.elm b/web/src/elm/Page/Settings.elm index 0900dc79a..bc2ed3b1f 100644 --- a/web/src/elm/Page/Settings.elm +++ b/web/src/elm/Page/Settings.elm @@ -35,8 +35,8 @@ import Css , wrap , zero ) -import Html.Styled exposing (Html, div, text) -import Html.Styled.Attributes exposing (css) +import Html.Styled as Html exposing (Html) +import Html.Styled.Attributes as Attr import Html.Styled.Events exposing (onClick) import Maybe.Extra exposing (isNothing) import Message exposing (Lang) @@ -45,6 +45,7 @@ import Models.DiagramLocation as DiagramLocation import Models.DiagramType exposing (DiagramType) import Models.FontSize as FontSize import Models.Session as Session exposing (Session) +import Models.Theme as Theme import RemoteData exposing (isLoading) import Return import Settings @@ -218,13 +219,13 @@ baseSizeItems = columnView : List (Html msg) -> Html msg columnView children = - div [ css [ width <| px 300 ] ] children + Html.div [ Attr.css [ width <| px 300 ] ] children conrtolRowView : List (Html msg) -> Html msg conrtolRowView children = - div - [ css + Html.div + [ Attr.css [ displayFlex , alignItems center , justifyContent spaceBetween @@ -237,12 +238,12 @@ conrtolRowView children = conrtolView : List (Html msg) -> Html msg conrtolView children = - div [ css [ Style.flexStart, flexDirection column, marginBottom <| px 8 ] ] children + Html.div [ Attr.css [ Style.flexStart, flexDirection column, marginBottom <| px 8 ] ] children conrtolsView : List (Html msg) -> Html msg conrtolsView children = - div [ css [ padding2 (px 4) (px 8), marginBottom <| px 8 ] ] children + Html.div [ Attr.css [ padding2 (px 4) (px 8), marginBottom <| px 8 ] ] children fontFamilyItems : FontList -> List { name : String, value : DropDownValue } @@ -266,18 +267,18 @@ fontSizeItems = inputAreaView : List (Html msg) -> Html msg inputAreaView children = - div [ css [ maxWidth <| px 300, width <| pct 90, padding2 (px 4) (px 8) ] ] children + Html.div [ Attr.css [ maxWidth <| px 300, width <| pct 90, padding2 (px 4) (px 8) ] ] children nameView : List (Html msg) -> Html msg nameView children = - div [ css [ Text.sm, Font.fontBold, padding2 (px 1) (px 8) ] ] children + Html.div [ Attr.css [ Text.sm, Font.fontBold, padding2 (px 1) (px 8) ] ] children section : Maybe String -> Html Msg section title = - div - [ css + Html.div + [ Attr.css [ fontWeight <| int 400 , margin4 zero zero (px 16) zero , if isNothing title then @@ -292,7 +293,7 @@ section title = Css.batch [ padding4 (px 16) zero zero (px 16) ] ] ] - [ div [ css [ Text.xl, Font.fontSemiBold ] ] [ text (title |> Maybe.withDefault "") ] + [ Html.div [ Attr.css [ Text.xl, Font.fontSemiBold ] ] [ Html.text (title |> Maybe.withDefault "") ] ] @@ -306,8 +307,8 @@ view_ : } -> Html Msg view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList, isLoading } = - div - [ css + Html.div + [ Attr.css [ Breakpoint.style [ Color.bgDefault , Style.widthFull @@ -329,7 +330,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList [ section (Just "Basic") , conrtolsView [ conrtolView - [ nameView [ text "Font Family" ] + [ nameView [ Html.text "Font Family" ] , inputAreaView [ if isLoading then DropDownList.loadingView "Loading..." @@ -348,7 +349,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ] ] , conrtolView - [ nameView [ text "Background color" ] + [ nameView [ Html.text "Background color" ] , inputAreaView [ DropDownList.view ToggleDropDownList "background-color" @@ -363,7 +364,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ] ] , conrtolView - [ nameView [ text "Save location" ] + [ nameView [ Html.text "Save location" ] , inputAreaView [ DropDownList.view ToggleDropDownList "save-location" @@ -391,8 +392,26 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ) ] ] + , conrtolView + [ nameView [ Html.text "Theme" ] + , inputAreaView + [ DropDownList.view ToggleDropDownList + "editor-theme" + dropDownIndex + (UpdateSettings + (\x -> + { settings | theme = Just <| Theme.fromString x } + ) + ) + [ { name = Theme.toDisplayString <| Theme.System True, value = DropDownList.stringValue <| Theme.toString <| Theme.System True } + , { name = Theme.toDisplayString Theme.Light, value = DropDownList.stringValue <| Theme.toString Theme.Light } + , { name = Theme.toDisplayString Theme.Dark, value = DropDownList.stringValue <| Theme.toString Theme.Dark } + ] + (settings.theme |> Maybe.map Theme.toString |> Maybe.withDefault (Theme.toString <| Theme.System True)) + ] + ] , conrtolRowView - [ nameView [ text "Zoom Control" ] + [ nameView [ Html.text "Zoom Control" ] , Switch.view (Maybe.withDefault True settings.storyMap.zoomControl) (\v -> UpdateSettings @@ -401,7 +420,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ) ] , conrtolRowView - [ nameView [ text "Toolbar" ] + [ nameView [ Html.text "Toolbar" ] , Switch.view (Maybe.withDefault True settings.storyMap.toolbar) (\v -> UpdateSettings @@ -415,7 +434,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList [ section (Just "Editor") , conrtolsView [ conrtolView - [ nameView [ text "Font Size" ] + [ nameView [ Html.text "Font Size" ] , inputAreaView [ DropDownList.view ToggleDropDownList "editor-font-size" @@ -430,7 +449,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ] ] , conrtolRowView - [ nameView [ text "Show Line Number" ] + [ nameView [ Html.text "Show Line Number" ] , Switch.view (settings.editor |> defaultEditorSettings |> .showLineNumber) (\v -> UpdateSettings @@ -439,7 +458,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ) ] , conrtolRowView - [ nameView [ text "Word Wrap" ] + [ nameView [ Html.text "Word Wrap" ] , Switch.view (settings.editor |> defaultEditorSettings |> .wordWrap) (\v -> UpdateSettings @@ -455,7 +474,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList [ section (Just "Card Size") , conrtolsView [ conrtolView - [ nameView [ text "Card Width" ] + [ nameView [ Html.text "Card Width" ] , inputAreaView [ DropDownList.view ToggleDropDownList "card-width" @@ -470,7 +489,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ] ] , conrtolView - [ nameView [ text "Card Height" ] + [ nameView [ Html.text "Card Height" ] , inputAreaView [ DropDownList.view ToggleDropDownList "card-height" @@ -490,7 +509,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList [ section (Just "Color") , conrtolsView [ conrtolView - [ nameView [ text "Background Color1" ] + [ nameView [ Html.text "Background Color1" ] , inputAreaView [ DropDownList.view ToggleDropDownList "activity-background-color" @@ -505,7 +524,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ] ] , conrtolView - [ nameView [ text "Foreground Color1" ] + [ nameView [ Html.text "Foreground Color1" ] , inputAreaView [ DropDownList.view ToggleDropDownList "activity-foreground-color" @@ -523,7 +542,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList , section Nothing , conrtolsView [ conrtolView - [ nameView [ text "Background Color2" ] + [ nameView [ Html.text "Background Color2" ] , inputAreaView [ DropDownList.view ToggleDropDownList "task-background-color" @@ -538,7 +557,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ] ] , conrtolView - [ nameView [ text "Foreground Color2" ] + [ nameView [ Html.text "Foreground Color2" ] , inputAreaView [ DropDownList.view ToggleDropDownList "task-foreground-color" @@ -556,7 +575,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList , section Nothing , conrtolsView [ conrtolView - [ nameView [ text "Background Color3" ] + [ nameView [ Html.text "Background Color3" ] , inputAreaView [ DropDownList.view ToggleDropDownList "story-background-color" @@ -571,7 +590,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ] ] , conrtolView - [ nameView [ text "Foreground Color3" ] + [ nameView [ Html.text "Foreground Color3" ] , inputAreaView [ DropDownList.view ToggleDropDownList "story-foreground-color" @@ -590,7 +609,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList , section Nothing , conrtolsView [ conrtolView - [ nameView [ text "Line Color" ] + [ nameView [ Html.text "Line Color" ] , inputAreaView [ DropDownList.view ToggleDropDownList "line-color" @@ -605,7 +624,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ] ] , conrtolView - [ nameView [ text "Label Color" ] + [ nameView [ Html.text "Label Color" ] , inputAreaView [ DropDownList.view ToggleDropDownList "label-color" @@ -620,7 +639,7 @@ view_ { dropDownIndex, canUseNativeFileSystem, settings, session, usableFontList ] ] , conrtolView - [ nameView [ text "Text Color" ] + [ nameView [ Html.text "Text Color" ] , inputAreaView [ DropDownList.view ToggleDropDownList "text-color" diff --git a/web/src/elm/Settings.elm b/web/src/elm/Settings.elm index 7972223c9..0f6377b51 100644 --- a/web/src/elm/Settings.elm +++ b/web/src/elm/Settings.elm @@ -1,6 +1,5 @@ module Settings exposing ( EditorSettings - , IsDarkMode , Settings , defaultEditorSettings , defaultSettings @@ -35,6 +34,7 @@ import Models.Color as Color import Models.DiagramItem as DiagramItem exposing (DiagramItem) import Models.DiagramLocation as DiagramLocation exposing (DiagramLocation) import Models.DiagramSettings as DiagramSettings +import Models.Theme as Theme exposing (Theme) import Monocle.Compose as Compose import Monocle.Lens exposing (Lens) import Monocle.Optional exposing (Optional) @@ -47,10 +47,6 @@ type alias EditorSettings = } -type alias IsDarkMode = - Bool - - type alias Settings = { position : Maybe Int , font : String @@ -61,6 +57,7 @@ type alias Settings = , editor : Maybe EditorSettings , diagram : Maybe DiagramItem , location : Maybe DiagramLocation + , theme : Maybe Theme } @@ -74,8 +71,8 @@ defaultEditorSettings settings = settings -defaultSettings : IsDarkMode -> Settings -defaultSettings isDarkMode = +defaultSettings : Theme -> Settings +defaultSettings theme = { position = Just -10 , font = "Nunito Sans" , diagramId = Nothing @@ -100,11 +97,18 @@ defaultSettings isDarkMode = , text = Just <| Color.toString Color.textDefalut } , backgroundColor = - if isDarkMode then - Color.toString Color.backgroundDarkDefalut + case theme of + Theme.System True -> + Color.toString Color.backgroundDarkDefalut + + Theme.System False -> + Color.toString Color.backgroundDefalut + + Theme.Dark -> + Color.toString Color.backgroundDarkDefalut - else - Color.toString Color.backgroundDefalut + Theme.Light -> + Color.toString Color.backgroundDefalut , zoomControl = Just True , scale = Just 1.0 , toolbar = Nothing @@ -114,6 +118,7 @@ defaultSettings isDarkMode = , editor = Nothing , diagram = Nothing , location = Nothing + , theme = Nothing } @@ -219,6 +224,7 @@ settingsDecoder = |> optional "editor" (D.map Just editorSettingsDecoder) Nothing |> optional "diagram" (D.map Just DiagramItem.decoder) Nothing |> optional "location" (D.map Just DiagramLocation.decoder) Nothing + |> optional "theme" (D.map Just Theme.decoder) Nothing settingsEncoder : Settings -> E.Value @@ -233,6 +239,7 @@ settingsEncoder settings = , ( "editor", maybe editorSettingsEncoder settings.editor ) , ( "diagram", maybe DiagramItem.encoder settings.diagram ) , ( "location", maybe DiagramLocation.encoder settings.location ) + , ( "theme", maybe Theme.encoder settings.theme ) ] diff --git a/web/src/elm/Views/Diagram/ER.elm b/web/src/elm/Views/Diagram/ER.elm index a3adfdfe4..50ac64b87 100644 --- a/web/src/elm/Views/Diagram/ER.elm +++ b/web/src/elm/Views/Diagram/ER.elm @@ -33,7 +33,7 @@ import Models.Size exposing (Size, getHeight, getWidth) import State exposing (Step(..)) import String import Svg.Styled as Svg exposing (Svg) -import Svg.Styled.Attributes exposing (fill, fontFamily, fontSize, fontWeight, height, stroke, strokeWidth, width, x, y) +import Svg.Styled.Attributes as SvgAttr import Utils.Utils as Utils import Views.Diagram.Path as Path import Views.Empty as Empty @@ -296,18 +296,18 @@ columnView settings columnWidth ( posX, posY ) (Column name_ type_ attrs) = in Svg.g [] [ Svg.rect - [ width <| String.fromInt columnWidth - , height <| String.fromInt Constants.tableRowHeight - , x colX - , y colY - , fill settings.color.story.backgroundColor + [ SvgAttr.width <| String.fromInt columnWidth + , SvgAttr.height <| String.fromInt Constants.tableRowHeight + , SvgAttr.x colX + , SvgAttr.y colY + , SvgAttr.fill settings.color.story.backgroundColor ] [] , Svg.foreignObject - [ x colX - , y colY - , width <| String.fromInt columnWidth - , height <| String.fromInt Constants.tableRowHeight + [ SvgAttr.x colX + , SvgAttr.y colY + , SvgAttr.width <| String.fromInt columnWidth + , SvgAttr.height <| String.fromInt Constants.tableRowHeight ] [ Html.div [ css @@ -447,67 +447,67 @@ relationLabelView settings table1 table2 label = in if tableX1 == tableX2 && tableY1 < tableY2 then Svg.text_ - [ x <| String.fromInt <| tableX1 + getWidth table1.size // 2 + 10 - , y <| String.fromInt <| tableY1 + getHeight table1.size + 15 - , fontFamily (DiagramSettings.fontStyle settings) - , fill settings.color.label - , fontSize "14" - , fontWeight "bold" + [ SvgAttr.x <| String.fromInt <| tableX1 + getWidth table1.size // 2 + 10 + , SvgAttr.y <| String.fromInt <| tableY1 + getHeight table1.size + 15 + , SvgAttr.fontFamily (DiagramSettings.fontStyle settings) + , SvgAttr.fill settings.color.label + , SvgAttr.fontSize "14" + , SvgAttr.fontWeight "bold" ] [ Svg.text label ] else if tableX1 == tableX2 && tableY1 > tableY2 then Svg.text_ - [ x <| String.fromInt <| tableX1 + getWidth table1.size // 2 + 10 - , y <| String.fromInt <| tableY1 - 15 - , fontFamily (DiagramSettings.fontStyle settings) - , fill settings.color.label - , fontSize "14" - , fontWeight "bold" + [ SvgAttr.x <| String.fromInt <| tableX1 + getWidth table1.size // 2 + 10 + , SvgAttr.y <| String.fromInt <| tableY1 - 15 + , SvgAttr.fontFamily (DiagramSettings.fontStyle settings) + , SvgAttr.fill settings.color.label + , SvgAttr.fontSize "14" + , SvgAttr.fontWeight "bold" ] [ Svg.text label ] else if tableX1 < tableX2 && tableY1 == tableY2 then Svg.text_ - [ x <| String.fromInt <| tableX1 + getWidth table1.size + 10 - , y <| String.fromInt <| tableY1 + getHeight table1.size // 2 - 15 - , fontFamily (DiagramSettings.fontStyle settings) - , fill settings.color.label - , fontSize "14" - , fontWeight "bold" + [ SvgAttr.x <| String.fromInt <| tableX1 + getWidth table1.size + 10 + , SvgAttr.y <| String.fromInt <| tableY1 + getHeight table1.size // 2 - 15 + , SvgAttr.fontFamily (DiagramSettings.fontStyle settings) + , SvgAttr.fill settings.color.label + , SvgAttr.fontSize "14" + , SvgAttr.fontWeight "bold" ] [ Svg.text label ] else if tableX1 > tableX2 && tableY1 == tableY2 then Svg.text_ - [ x <| String.fromInt <| tableX1 - 15 - , y <| String.fromInt <| tableY1 + getHeight table1.size // 2 + 15 - , fontFamily (DiagramSettings.fontStyle settings) - , fill settings.color.label - , fontSize "14" - , fontWeight "bold" + [ SvgAttr.x <| String.fromInt <| tableX1 - 15 + , SvgAttr.y <| String.fromInt <| tableY1 + getHeight table1.size // 2 + 15 + , SvgAttr.fontFamily (DiagramSettings.fontStyle settings) + , SvgAttr.fill settings.color.label + , SvgAttr.fontSize "14" + , SvgAttr.fontWeight "bold" ] [ Svg.text label ] else if tableX1 < tableX2 then Svg.text_ - [ x <| String.fromInt <| tableX1 + getWidth table1.size + 10 - , y <| String.fromInt <| tableY1 + getHeight table1.size // 2 + 15 - , fontFamily (DiagramSettings.fontStyle settings) - , fill settings.color.label - , fontSize "14" - , fontWeight "bold" + [ SvgAttr.x <| String.fromInt <| tableX1 + getWidth table1.size + 10 + , SvgAttr.y <| String.fromInt <| tableY1 + getHeight table1.size // 2 + 15 + , SvgAttr.fontFamily (DiagramSettings.fontStyle settings) + , SvgAttr.fill settings.color.label + , SvgAttr.fontSize "14" + , SvgAttr.fontWeight "bold" ] [ Svg.text label ] else Svg.text_ - [ x <| String.fromInt <| tableX1 - 15 - , y <| String.fromInt <| tableY1 + getHeight table1.size // 2 - 10 - , fontFamily (DiagramSettings.fontStyle settings) - , fill settings.color.label - , fontSize "14" - , fontWeight "bold" + [ SvgAttr.x <| String.fromInt <| tableX1 - 15 + , SvgAttr.y <| String.fromInt <| tableY1 + getHeight table1.size // 2 - 10 + , SvgAttr.fontFamily (DiagramSettings.fontStyle settings) + , SvgAttr.fill settings.color.label + , SvgAttr.fontSize "14" + , SvgAttr.fontWeight "bold" ] [ Svg.text label ] @@ -570,20 +570,20 @@ tableHeaderView : DiagramSettings.Settings -> String -> Int -> Position -> Svg M tableHeaderView settings headerText headerWidth ( posX, posY ) = Svg.g [] [ Svg.rect - [ width <| String.fromInt headerWidth - , height <| String.fromInt Constants.tableRowHeight - , x (String.fromInt posX) - , y (String.fromInt posY) - , fill settings.color.activity.backgroundColor + [ SvgAttr.width <| String.fromInt headerWidth + , SvgAttr.height <| String.fromInt Constants.tableRowHeight + , SvgAttr.x (String.fromInt posX) + , SvgAttr.y (String.fromInt posY) + , SvgAttr.fill settings.color.activity.backgroundColor ] [] , Svg.text_ - [ x <| String.fromInt <| posX + 8 - , y <| String.fromInt <| posY + 24 - , fontFamily (DiagramSettings.fontStyle settings) - , fill settings.color.activity.color - , fontSize "16" - , fontWeight "bold" + [ SvgAttr.x <| String.fromInt <| posX + 8 + , SvgAttr.y <| String.fromInt <| posY + 24 + , SvgAttr.fontFamily (DiagramSettings.fontStyle settings) + , SvgAttr.fill settings.color.activity.color + , SvgAttr.fontSize "16" + , SvgAttr.fontWeight "bold" ] [ Svg.text headerText ] ] @@ -613,12 +613,12 @@ tableView { settings, svgSize, pos, tableSize, table } = Svg.g [ onDragStart table (Utils.isPhone (getWidth svgSize)) ] (Svg.rect - [ width <| String.fromInt <| getWidth tableSize - , height <| String.fromInt <| getHeight tableSize - , x (String.fromInt tableX) - , y (String.fromInt tableY) - , strokeWidth "1" - , stroke settings.color.activity.backgroundColor + [ SvgAttr.width <| String.fromInt <| getWidth tableSize + , SvgAttr.height <| String.fromInt <| getHeight tableSize + , SvgAttr.x (String.fromInt tableX) + , SvgAttr.y (String.fromInt tableY) + , SvgAttr.strokeWidth "1" + , SvgAttr.stroke settings.color.activity.backgroundColor ] [] :: tableHeaderView settings tableName (getWidth tableSize) ( tableX, tableY ) diff --git a/web/src/elm/Views/Diagram/Toolbar.elm b/web/src/elm/Views/Diagram/Toolbar.elm index b97522453..a6af4054e 100644 --- a/web/src/elm/Views/Diagram/Toolbar.elm +++ b/web/src/elm/Views/Diagram/Toolbar.elm @@ -38,7 +38,7 @@ import Models.Item as Item exposing (Item) import Models.ItemSettings as ItemSettings import Style.Style as Style import Svg.Styled as Svg exposing (Svg, svg) -import Svg.Styled.Attributes as SvgAttr exposing (stroke, strokeWidth, x1, x2, y1, y2) +import Svg.Styled.Attributes as SvgAttr type alias ClickEvent msg = @@ -145,14 +145,56 @@ freeForm e = , Button <| iconView (Svg.g [] - [ Svg.line [ x1 "4", y1 "4", x2 "26", y2 "4", stroke <| Color.toString Color.lineDefalut, strokeWidth "4" ] [] - , Svg.line [ x1 "14", y1 "2", x2 "14", y2 "22", stroke <| Color.toString Color.lineDefalut, strokeWidth "4" ] [] + [ Svg.line + [ SvgAttr.x1 "4" + , SvgAttr.y1 "4" + , SvgAttr.x2 "26" + , SvgAttr.y2 "4" + , SvgAttr.stroke <| Color.toString Color.lineDefalut + , SvgAttr.strokeWidth "4" + ] + [] + , Svg.line + [ SvgAttr.x1 "14" + , SvgAttr.y1 "2" + , SvgAttr.x2 "14" + , SvgAttr.y2 "22" + , SvgAttr.stroke <| Color.toString Color.lineDefalut + , SvgAttr.strokeWidth "4" + ] + [] ] ) createTextItem e - , Button <| iconView (Svg.line [ x1 "14", y1 "2", x2 "14", y2 "22", stroke <| Color.toString Color.lineDefalut, strokeWidth "4" ] []) createVerticalLineItem e - , Button <| iconView (Svg.line [ x1 "0", y1 "12", x2 "24", y2 "12", stroke <| Color.toString Color.lineDefalut, strokeWidth "3" ] []) createHorizontalLineItem e + , Button <| + iconView + (Svg.line + [ SvgAttr.x1 "14" + , SvgAttr.y1 "2" + , SvgAttr.x2 "14" + , SvgAttr.y2 "22" + , SvgAttr.stroke <| Color.toString Color.lineDefalut + , SvgAttr.strokeWidth "4" + ] + [] + ) + createVerticalLineItem + e + , Button <| + iconView + (Svg.line + [ SvgAttr.x1 "0" + , SvgAttr.y1 "12" + , SvgAttr.x2 "24" + , SvgAttr.y2 "12" + , SvgAttr.stroke <| Color.toString Color.lineDefalut + , SvgAttr.strokeWidth "3" + ] + [] + ) + createHorizontalLineItem + e ] diff --git a/web/src/elm/Views/DropDownList.elm b/web/src/elm/Views/DropDownList.elm index 15a41c7fc..c08c63763 100644 --- a/web/src/elm/Views/DropDownList.elm +++ b/web/src/elm/Views/DropDownList.elm @@ -47,7 +47,7 @@ import Css ) import Events import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes exposing (css) +import Html.Styled.Attributes as Attr import Html.Styled.Events as Events import List.Extra as ListEx import Style.Color as Color @@ -86,7 +86,7 @@ view onToggleDropDownList dropDownId currentId onChange items selectedValue = |> Maybe.withDefault { name = "", value = stringValue selectedValue } in Html.div - [ css + [ Attr.css [ Style.widthFull , Text.sm , position relative @@ -109,7 +109,7 @@ view onToggleDropDownList dropDownId currentId onChange items selectedValue = loadingView : String -> Html msg loadingView text = Html.div - [ css + [ Attr.css [ Style.widthFull , Text.sm , position relative @@ -127,7 +127,7 @@ loadingView text = dropDownItemView : DropDownItem -> (String -> msg) -> Html msg dropDownItemView item onChange = Html.div - [ css + [ Attr.css [ Style.widthFull , display block , Style.paddingSm @@ -142,7 +142,7 @@ dropDownItemView item onChange = [ case getColor item.value of Just rgb -> Html.span - [ css + [ Attr.css [ padding2 (px 0) (px 12) , marginRight <| px 5 , backgroundColor <| hex rgb @@ -153,14 +153,14 @@ dropDownItemView item onChange = Nothing -> Html.span [] [] - , Html.span [ css [ Style.paddingSm ] ] [ Html.text item.name ] + , Html.span [ Attr.css [ Style.paddingSm ] ] [ Html.text item.name ] ] dropdownView : List DropDownItem -> (String -> msg) -> Html msg dropdownView items onChange = Html.div - [ css + [ Attr.css [ position absolute , Color.bgTransparent , Style.m0 @@ -195,7 +195,7 @@ getColor value = itemView : DropDownItem -> msg -> Html msg itemView item onActive = Html.div - [ css + [ Attr.css [ display block , Color.bgLight , position relative @@ -218,7 +218,7 @@ itemView item onActive = [ case getColor item.value of Just rgb -> Html.span - [ css + [ Attr.css [ padding2 (px 0) (px 12) , marginRight <| px 5 , backgroundColor <| hex rgb @@ -229,14 +229,14 @@ itemView item onActive = Nothing -> Html.span [] [] - , Html.span [ css [ Style.paddingSm ] ] [ Html.text item.name ] + , Html.span [ Attr.css [ Style.paddingSm ] ] [ Html.text item.name ] ] textItemView : String -> Html msg textItemView text = Html.div - [ css + [ Attr.css [ display block , Color.bgLight , position relative @@ -255,7 +255,7 @@ textItemView text = ] ] ] - [ Html.span [ css [ Style.paddingSm ] ] [ Html.text text ] + [ Html.span [ Attr.css [ Style.paddingSm ] ] [ Html.text text ] ] diff --git a/web/src/elm/Views/Footer.elm b/web/src/elm/Views/Footer.elm index e2305f7cc..0718c16c8 100644 --- a/web/src/elm/Views/Footer.elm +++ b/web/src/elm/Views/Footer.elm @@ -17,7 +17,7 @@ import Css ) import Env import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes as Attr exposing (css) +import Html.Styled.Attributes as Attr import Models.Color as Color import Style.Color as ColorStyle import Style.Font as Font @@ -29,7 +29,7 @@ import Views.Icon as Icon view : Html msg view = Html.div - [ css + [ Attr.css [ height <| rem 2 , ColorStyle.bgMain , Style.widthScreen @@ -42,7 +42,7 @@ view = , ColorStyle.bgFooterColor ] ] - [ Html.div [ css [ padding <| rem 0.5, cursor pointer ] ] + [ Html.div [ Attr.css [ padding <| rem 0.5, cursor pointer ] ] [ Html.a [ Attr.href Env.repoUrl , Attr.target "_blank" @@ -51,7 +51,7 @@ view = [ Icon.github Color.darkIconColor 16 ] ] , Html.div - [ css + [ Attr.css [ ColorStyle.textSecondaryColor , Text.xs , Font.fontBold diff --git a/web/src/elm/Views/Header.elm b/web/src/elm/Views/Header.elm index 41541e530..6000738c3 100644 --- a/web/src/elm/Views/Header.elm +++ b/web/src/elm/Views/Header.elm @@ -30,7 +30,6 @@ import Css , padding , padding4 , paddingLeft - , paddingRight , pct , pointer , position @@ -45,7 +44,7 @@ import Css ) import Events as E import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes as Attr exposing (css) +import Html.Styled.Attributes as Attr import Html.Styled.Events as Events import Html.Styled.Lazy as Lazy import Json.Decode as D @@ -88,7 +87,7 @@ type alias Props = view : Props -> Html Msg view props = Html.header - [ css + [ Attr.css [ displayFlex , alignItems center , Style.widthScreen @@ -98,7 +97,7 @@ view props = ] ] (Html.div - [ css + [ Attr.css [ displayFlex , alignItems center , width <| pct 100 @@ -108,13 +107,13 @@ view props = [ case props.page of Page.Main -> Html.div - [ css [ Style.flexCenter, width <| px 32, height <| px 32, marginTop <| px 8 ] + [ Attr.css [ Style.flexCenter, width <| px 32, height <| px 32, marginTop <| px 8 ] , Attributes.dataTest "header-logo" ] [ Html.a [ Attr.href "/", Attr.attribute "aria-label" "Top" ] [ Html.img [ Asset.src Asset.logo - , css [ width <| px 28, height <| px 28, marginLeft <| px 4 ] + , Attr.css [ width <| px 28, height <| px 28, marginLeft <| px 4 ] , Attr.alt "logo" ] [] @@ -125,7 +124,7 @@ view props = case props.prevRoute of Just r -> Html.div - [ css [ Style.flexCenter, padding4 (px 8) (px 8) (px 8) (px 12), cursor pointer ] + [ Attr.css [ Style.flexCenter, padding4 (px 8) (px 8) (px 8) (px 12), cursor pointer ] , Events.onClick <| MoveTo r , Attributes.dataTest "header-back" ] @@ -133,14 +132,14 @@ view props = Nothing -> Html.div - [ css [ Style.flexCenter, padding4 (px 8) (px 8) (px 8) (px 12), cursor pointer ] ] + [ Attr.css [ Style.flexCenter, padding4 (px 8) (px 8) (px 8) (px 12), cursor pointer ] ] [ Icon.arrowLeft Color.disabledIconColor 16 ] , case props.page of Page.Main -> if canEdit props && Title.isEdit props.currentDiagram.title then Html.input [ Attr.id "title" - , css + , Attr.css [ Style.widthFull , ColorStyle.bgHeaderColor , borderStyle none @@ -164,7 +163,7 @@ view props = else viewTitle - [ css + [ Attr.css [ cursor pointer , hover [] ] @@ -173,7 +172,7 @@ view props = ] [ Html.text <| Title.toString props.currentDiagram.title , Html.div - [ css [ marginLeft <| px 8 ] ] + [ Attr.css [ marginLeft <| px 8 ] ] [ if canEdit props && Text.isChanged props.currentText then Icon.circle Color.white 10 @@ -264,7 +263,7 @@ viewChangePublicStateButton : Lang -> Bool -> Bool -> Html Msg viewChangePublicStateButton lang isPublic_ canChangePublicState_ = if canChangePublicState_ then Html.div - [ css [ Style.button ], Events.onClick <| ChangePublicStatus (not isPublic_) ] + [ Attr.css [ Style.button ], Events.onClick <| ChangePublicStatus (not isPublic_) ] [ if isPublic_ then Icon.lockOpen Color.iconColor 14 @@ -279,7 +278,7 @@ viewChangePublicStateButton lang isPublic_ canChangePublicState_ = ] else - Html.div [ css [ Style.button ] ] + Html.div [ Attr.css [ Style.button ] ] [ Icon.lock Color.disabledIconColor 14 , Tooltip.view <| Message.toolTipPrivate lang ] @@ -289,11 +288,11 @@ viewHelpButton : Lang -> Html Msg viewHelpButton lang = Html.a [ Attr.attribute "aria-label" "Help" - , css [ displayFlex ] + , Attr.css [ displayFlex ] , Attr.href <| Route.toString Route.Help , Attributes.dataTest "header-help" ] - [ Html.div [ css [ Style.button ] ] + [ Html.div [ Attr.css [ Style.button ] ] [ Icon.helpOutline 16 , Tooltip.view <| Message.toolTipHelp lang ] @@ -304,13 +303,13 @@ viewSettingsButton : Lang -> DiagramType -> Html Msg viewSettingsButton lang diagramType = Html.a [ Attr.attribute "aria-label" "Help" - , css [ displayFlex ] + , Attr.css [ displayFlex ] , Attr.href <| Route.toString (Route.Settings diagramType) , Attr.attribute "aria-label" "Settings" , Attributes.dataTest "header-help" ] - [ Html.div [ css [ Style.button ] ] + [ Html.div [ Attr.css [ Style.button ] ] [ Icon.settings Color.iconColor 16 , Tooltip.view <| Message.toolTipSettings lang ] @@ -322,21 +321,21 @@ viewLocationButton lang session location = case ( session, location ) of ( Session.SignedIn _, Just DiagramLocation.Remote ) -> Html.div - [ css [ Style.button ] ] + [ Attr.css [ Style.button ] ] [ Icon.cloudOn Color.iconColor 14 , Tooltip.view <| Message.toolTipRemote lang ] ( Session.SignedIn _, Just DiagramLocation.Gist ) -> Html.div - [ css [ Style.button ] ] + [ Attr.css [ Style.button ] ] [ Icon.github Color.iconColor 14 , Tooltip.view Message.toolTipGist ] _ -> Html.div - [ css [ Style.button ] ] + [ Attr.css [ Style.button ] ] [ Icon.cloudOff Color.iconColor 14 , Tooltip.view <| Message.toolTipLocal lang ] @@ -346,12 +345,12 @@ viewShareButton : Lang -> Bool -> Html Msg viewShareButton lang canShare_ = if canShare_ then Html.a - [ css [ displayFlex ] + [ Attr.css [ displayFlex ] , Attr.href <| Route.toString Route.Share , Attr.attribute "aria-label" "Share" , Attributes.dataTest "header-share" ] - [ Html.div [ css [ Style.button ] ] + [ Html.div [ Attr.css [ Style.button ] ] [ Icon.people Color.iconColor 20 , Tooltip.view <| Message.toolTipShare lang ] @@ -359,7 +358,7 @@ viewShareButton lang canShare_ = else Html.div - [ css [ Style.button ] + [ Attr.css [ Style.button ] , Attributes.dataTest "header-share" ] [ Icon.people Color.disabledIconColor 20 @@ -376,7 +375,7 @@ viewSignInButton menu session = Session.getUser session in Html.div - [ css + [ Attr.css [ Breakpoint.style [ width <| px 32 ] [ Breakpoint.small [ Style.button @@ -389,11 +388,11 @@ viewSignInButton menu session = , Attributes.dataTest "header-signin" ] [ Html.div - [ css [ Text.sm, marginRight <| px 4 ] + [ Attr.css [ Text.sm, marginRight <| px 4 ] ] [ Html.img [ Avatar.src <| Avatar (Maybe.map .email user) (Maybe.map .photoURL user) - , css + , Attr.css [ Breakpoint.style [ width <| rem 1.25 , Style.heightFull @@ -455,7 +454,7 @@ viewSignInButton menu session = else Html.div - [ css [ Style.button, width <| px 96, height <| px 50, Style.borderContent ] + [ Attr.css [ Style.button, width <| px 96, height <| px 50, Style.borderContent ] , case menu of Just LoginMenu -> Events.stopPropagationOn "click" (D.succeed ( CloseMenu, True )) @@ -464,7 +463,7 @@ viewSignInButton menu session = Events.stopPropagationOn "click" (D.succeed ( OpenMenu LoginMenu, True )) , Attributes.dataTest "header-signin" ] - [ Html.div [ css [ Text.base, Font.fontBold ] ] + [ Html.div [ Attr.css [ Text.base, Font.fontBold ] ] [ Html.text "SIGN IN" ] , case menu of Just LoginMenu -> @@ -492,7 +491,7 @@ viewSignInButton menu session = viewTitle : List (Html.Attribute msg) -> List (Html msg) -> Html msg viewTitle attrs children = Html.div - (css + (Attr.css [ Style.widthFull , displayFlex , Text.base diff --git a/web/src/elm/Views/Icon.elm b/web/src/elm/Views/Icon.elm index fbf052e08..8bd4d09c2 100644 --- a/web/src/elm/Views/Icon.elm +++ b/web/src/elm/Views/Icon.elm @@ -49,223 +49,223 @@ module Views.Icon exposing import Models.Color as Color exposing (Color) import Svg.Styled as Svg exposing (Svg) -import Svg.Styled.Attributes exposing (d, fill, height, stroke, strokeWidth, viewBox, width) +import Svg.Styled.Attributes as Attr add : Int -> Svg msg add size = - icon (Color.toString Color.disabledIconColor) size size "0 0 48 48" [ Svg.path [ d "M38 26H26v12h-4V26H10v-4h12V10h4v12h12v4z" ] [] ] + icon (Color.toString Color.disabledIconColor) size size "0 0 48 48" [ Svg.path [ Attr.d "M38 26H26v12h-4V26H10v-4h12V10h4v12h12v4z" ] [] ] angleLeft : Color -> Int -> Svg msg angleLeft color size = - icon (Color.toString color) size size "0 0 256 512" [ Svg.path [ d "M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z" ] [] ] + icon (Color.toString color) size size "0 0 256 512" [ Svg.path [ Attr.d "M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z" ] [] ] angleRight : Color -> Int -> Svg msg angleRight color size = - icon (Color.toString color) size size "0 0 256 512" [ Svg.path [ d "M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z" ] [] ] + icon (Color.toString color) size size "0 0 256 512" [ Svg.path [ Attr.d "M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z" ] [] ] arrowLeft : Color -> Int -> Svg msg arrowLeft color size = - icon (Color.toString color) size size "0 0 448 512" [ Svg.path [ d "M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z" ] [] ] + icon (Color.toString color) size size "0 0 448 512" [ Svg.path [ Attr.d "M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z" ] [] ] bold : Color -> Int -> Svg msg bold color size = - icon (Color.toString color) size size "0 0 384 512" [ Svg.path [ d "M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z" ] [] ] + icon (Color.toString color) size size "0 0 384 512" [ Svg.path [ Attr.d "M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z" ] [] ] bookmark : Color -> Int -> Svg msg bookmark color size = - icon (Color.toString color) size size "0 0 576 512" [ Svg.path [ d "M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" ] [] ] + icon (Color.toString color) size size "0 0 576 512" [ Svg.path [ Attr.d "M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z" ] [] ] circle : Color -> Int -> Svg msg circle color size = - icon (Color.toString color) size size "0 0 512 512" [ Svg.path [ d "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z" ] [] ] + icon (Color.toString color) size size "0 0 512 512" [ Svg.path [ Attr.d "M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z" ] [] ] clear : String -> Int -> Svg msg clear color size = - icon color size size "0 0 48 48" [ Svg.path [ d "M38 12.83L35.17 10 24 21.17 12.83 10 10 12.83 21.17 24 10 35.17 12.83 38 24 26.83 35.17 38 38 35.17 26.83 24z" ] [] ] + icon color size size "0 0 48 48" [ Svg.path [ Attr.d "M38 12.83L35.17 10 24 21.17 12.83 10 10 12.83 21.17 24 10 35.17 12.83 38 24 26.83 35.17 38 38 35.17 26.83 24z" ] [] ] cloudDownload : Color -> Int -> Svg msg cloudDownload color size = - icon (Color.toString color) size size "0 0 640 512" [ Svg.path [ d "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z" ] [] ] + icon (Color.toString color) size size "0 0 640 512" [ Svg.path [ Attr.d "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z" ] [] ] cloudOff : Color -> Int -> Svg msg cloudOff color size = - icon (Color.toString color) size size "0 0 48 48" [ Svg.path [ d "M38.71 20.07C37.35 13.19 31.28 8 24 8c-2.95 0-5.7.87-8.02 2.34l2.92 2.92C20.43 12.47 22.16 12 24 12c6.08 0 11 4.92 11 11v1h3c3.31 0 6 2.69 6 6 0 2.27-1.27 4.22-3.13 5.24l2.9 2.9C46.32 36.33 48 33.37 48 30c0-5.28-4.11-9.56-9.29-9.93zM6 10.55l5.5 5.48C5.12 16.3 0 21.55 0 28c0 6.63 5.37 12 12 12h23.45l4 4L42 41.46 8.55 8 6 10.55zM15.45 20l16 16H12c-4.42 0-8-3.58-8-8s3.58-8 8-8h3.45z" ] [] ] + icon (Color.toString color) size size "0 0 48 48" [ Svg.path [ Attr.d "M38.71 20.07C37.35 13.19 31.28 8 24 8c-2.95 0-5.7.87-8.02 2.34l2.92 2.92C20.43 12.47 22.16 12 24 12c6.08 0 11 4.92 11 11v1h3c3.31 0 6 2.69 6 6 0 2.27-1.27 4.22-3.13 5.24l2.9 2.9C46.32 36.33 48 33.37 48 30c0-5.28-4.11-9.56-9.29-9.93zM6 10.55l5.5 5.48C5.12 16.3 0 21.55 0 28c0 6.63 5.37 12 12 12h23.45l4 4L42 41.46 8.55 8 6 10.55zM15.45 20l16 16H12c-4.42 0-8-3.58-8-8s3.58-8 8-8h3.45z" ] [] ] cloudOn : Color -> Int -> Svg msg cloudOn color size = - icon (Color.toString color) size size "0 0 48 48" [ Svg.path [ d "M38.71 20.07C37.35 13.19 31.28 8 24 8c-5.78 0-10.79 3.28-13.3 8.07C4.69 16.72 0 21.81 0 28c0 6.63 5.37 12 12 12h26c5.52 0 10-4.48 10-10 0-5.28-4.11-9.56-9.29-9.93zM38 36H12c-4.42 0-8-3.58-8-8s3.58-8 8-8h1.42c1.31-4.61 5.54-8 10.58-8 6.08 0 11 4.92 11 11v1h3c3.31 0 6 2.69 6 6s-2.69 6-6 6z" ] [] ] + icon (Color.toString color) size size "0 0 48 48" [ Svg.path [ Attr.d "M38.71 20.07C37.35 13.19 31.28 8 24 8c-5.78 0-10.79 3.28-13.3 8.07C4.69 16.72 0 21.81 0 28c0 6.63 5.37 12 12 12h26c5.52 0 10-4.48 10-10 0-5.28-4.11-9.56-9.29-9.93zM38 36H12c-4.42 0-8-3.58-8-8s3.58-8 8-8h1.42c1.31-4.61 5.54-8 10.58-8 6.08 0 11 4.92 11 11v1h3c3.31 0 6 2.69 6 6s-2.69 6-6 6z" ] [] ] cloudUpload : Color -> Int -> Svg msg cloudUpload color size = - icon (Color.toString color) size size "0 0 640 512" [ Svg.path [ d "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z" ] [] ] + icon (Color.toString color) size size "0 0 640 512" [ Svg.path [ Attr.d "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z" ] [] ] copy : Color -> Int -> Svg msg copy color size = - icon (Color.toString color) size size "0 0 448 512" [ Svg.path [ d "M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z" ] [] ] + icon (Color.toString color) size size "0 0 448 512" [ Svg.path [ Attr.d "M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z" ] [] ] download : String -> Int -> Svg msg download color size = - icon color size size "0 0 512 512" [ Svg.path [ d "M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z" ] [] ] + icon color size size "0 0 512 512" [ Svg.path [ Attr.d "M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z" ] [] ] edit : Int -> Svg msg edit size = - icon (Color.toString Color.white) size size "0 0 48 48" [ Svg.path [ d "M6 34.5V42h7.5l22.13-22.13-7.5-7.5L6 34.5zm35.41-20.41c.78-.78.78-2.05 0-2.83l-4.67-4.67c-.78-.78-2.05-.78-2.83 0l-3.66 3.66 7.5 7.5 3.66-3.66z" ] [] ] + icon (Color.toString Color.white) size size "0 0 48 48" [ Svg.path [ Attr.d "M6 34.5V42h7.5l22.13-22.13-7.5-7.5L6 34.5zm35.41-20.41c.78-.78.78-2.05 0-2.83l-4.67-4.67c-.78-.78-2.05-.78-2.83 0l-3.66 3.66 7.5 7.5 3.66-3.66z" ] [] ] error : Int -> Svg msg error size = - icon "#E73F34" size size "0 0 48 48" [ Svg.path [ d "M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm2 30h-4V22h4v12zm0-16h-4v-4h4v4z" ] [] ] + icon "#E73F34" size size "0 0 48 48" [ Svg.path [ Attr.d "M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm2 30h-4V22h4v12zm0-16h-4v-4h4v4z" ] [] ] expandAlt : Int -> Svg msg expandAlt size = - icon (Color.toString Color.disabledIconColor) size size "0 0 448 512" [ Svg.path [ d "M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z" ] [] ] + icon (Color.toString Color.disabledIconColor) size size "0 0 448 512" [ Svg.path [ Attr.d "M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z" ] [] ] file : Color -> Int -> Svg msg file color size = - icon (Color.toString color) size size "0 0 512 512" [ Svg.path [ d "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z" ] [] ] + icon (Color.toString color) size size "0 0 512 512" [ Svg.path [ Attr.d "M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z" ] [] ] folderOpen : String -> Int -> Svg msg folderOpen color size = - icon color size size "0 0 512 512" [ Svg.path [ d "M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z" ] [] ] + icon color size size "0 0 512 512" [ Svg.path [ Attr.d "M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z" ] [] ] font : Color -> Color -> Int -> Svg msg font color backgroundColor size = - iconWithBorder color backgroundColor size size "0 0 448 512" [ Svg.path [ stroke "#C0C0C0", strokeWidth "16", d "M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z" ] [] ] + iconWithBorder color backgroundColor size size "0 0 448 512" [ Svg.path [ Attr.stroke "#C0C0C0", Attr.strokeWidth "16", Attr.d "M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z" ] [] ] fullscreen : Int -> Svg msg fullscreen size = - icon (Color.toString Color.disabledIconColor) size size "0 0 48 48" [ Svg.path [ d "M14 28h-4v10h10v-4h-6v-6zm-4-8h4v-6h6v-4H10v10zm24 14h-6v4h10V28h-4v6zm-6-24v4h6v6h4V10H28z" ] [] ] + icon (Color.toString Color.disabledIconColor) size size "0 0 48 48" [ Svg.path [ Attr.d "M14 28h-4v10h10v-4h-6v-6zm-4-8h4v-6h6v-4H10v10zm24 14h-6v4h10V28h-4v6zm-6-24v4h6v6h4V10H28z" ] [] ] fullscreenExit : Int -> Svg msg fullscreenExit size = - icon (Color.toString Color.disabledIconColor) size size "0 0 48 48" [ Svg.path [ d "M10 32h6v6h4V28H10v4zm6-16h-6v4h10V10h-4v6zm12 22h4v-6h6v-4H28v10zm4-22v-6h-4v10h10v-4h-6z" ] [] ] + icon (Color.toString Color.disabledIconColor) size size "0 0 48 48" [ Svg.path [ Attr.d "M10 32h6v6h4V28H10v4zm6-16h-6v4h10V10h-4v6zm12 22h4v-6h6v-4H28v10zm4-22v-6h-4v10h10v-4h-6z" ] [] ] github : Color -> Int -> Svg msg github color size = - icon (Color.toString color) size size "0 0 496 512" [ Svg.path [ d "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z" ] [] ] + icon (Color.toString color) size size "0 0 496 512" [ Svg.path [ Attr.d "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z" ] [] ] globe : Color -> Int -> Svg msg globe color size = - icon (Color.toString color) size size "0 0 496 512" [ Svg.path [ d "M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z" ] [] ] + icon (Color.toString color) size size "0 0 496 512" [ Svg.path [ Attr.d "M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z" ] [] ] helpOutline : Int -> Svg msg helpOutline size = - icon (Color.toString Color.iconColor) size size "0 0 24 24" [ Svg.path [ d "M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z" ] [] ] + icon (Color.toString Color.iconColor) size size "0 0 24 24" [ Svg.path [ Attr.d "M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z" ] [] ] info : Int -> Svg msg info size = - icon (Color.toString Color.background2Defalut) size size "0 0 48 48" [ Svg.path [ d "M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm2 30h-4V22h4v12zm0-16h-4v-4h4v4z" ] [] ] + icon (Color.toString Color.background2Defalut) size size "0 0 48 48" [ Svg.path [ Attr.d "M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm2 30h-4V22h4v12zm0-16h-4v-4h4v4z" ] [] ] italic : Color -> Int -> Svg msg italic color size = - icon (Color.toString color) size size "0 0 320 512" [ Svg.path [ d "M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z" ] [] ] + icon (Color.toString color) size size "0 0 320 512" [ Svg.path [ Attr.d "M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z" ] [] ] key : String -> Int -> Svg msg key color size = - icon color size size "0 0 512 512" [ Svg.path [ d "M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" ] [] ] + icon color size size "0 0 512 512" [ Svg.path [ Attr.d "M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" ] [] ] lock : Color -> Int -> Svg msg lock color size = - icon (Color.toString color) size size "0 0 448 512" [ Svg.path [ d "M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z" ] [] ] + icon (Color.toString color) size size "0 0 448 512" [ Svg.path [ Attr.d "M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z" ] [] ] lockOpen : Color -> Int -> Svg msg lockOpen color size = - icon (Color.toString color) size size "0 0 576 512" [ Svg.path [ d "M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z" ] [] ] + icon (Color.toString color) size size "0 0 576 512" [ Svg.path [ Attr.d "M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z" ] [] ] map : Int -> Svg msg map size = - icon (Color.toString Color.disabledIconColor) size size "0 0 576 512" [ Svg.path [ d "M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z" ] [] ] + icon (Color.toString Color.disabledIconColor) size size "0 0 576 512" [ Svg.path [ Attr.d "M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z" ] [] ] people : Color -> Int -> Svg msg people color size = - icon (Color.toString color) size size "0 0 48 48" [ Svg.path [ d "M32 22c3.31 0 5.98-2.69 5.98-6s-2.67-6-5.98-6c-3.31 0-6 2.69-6 6s2.69 6 6 6zm-16 0c3.31 0 5.98-2.69 5.98-6s-2.67-6-5.98-6c-3.31 0-6 2.69-6 6s2.69 6 6 6zm0 4c-4.67 0-14 2.34-14 7v5h28v-5c0-4.66-9.33-7-14-7zm16 0c-.58 0-1.23.04-1.93.11C32.39 27.78 34 30.03 34 33v5h12v-5c0-4.66-9.33-7-14-7z" ] [] ] + icon (Color.toString color) size size "0 0 48 48" [ Svg.path [ Attr.d "M32 22c3.31 0 5.98-2.69 5.98-6s-2.67-6-5.98-6c-3.31 0-6 2.69-6 6s2.69 6 6 6zm-16 0c3.31 0 5.98-2.69 5.98-6s-2.67-6-5.98-6c-3.31 0-6 2.69-6 6s2.69 6 6 6zm0 4c-4.67 0-14 2.34-14 7v5h28v-5c0-4.66-9.33-7-14-7zm16 0c-.58 0-1.23.04-1.93.11C32.39 27.78 34 30.03 34 33v5h12v-5c0-4.66-9.33-7-14-7z" ] [] ] remove : Int -> Svg msg remove size = - icon (Color.toString Color.disabledIconColor) size size "0 0 48 48" [ Svg.path [ d "M38 26H10v-4h28v4z" ] [] ] + icon (Color.toString Color.disabledIconColor) size size "0 0 48 48" [ Svg.path [ Attr.d "M38 26H10v-4h28v4z" ] [] ] save : String -> Int -> Svg msg save color size = - icon color size size "0 0 48 48" [ Svg.path [ d "M34 6H10c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h28c2.21 0 4-1.79 4-4V14l-8-8zM24 38c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm6-20H10v-8h20v8z" ] [] ] + icon color size size "0 0 48 48" [ Svg.path [ Attr.d "M34 6H10c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h28c2.21 0 4-1.79 4-4V14l-8-8zM24 38c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm6-20H10v-8h20v8z" ] [] ] search : String -> Int -> Svg msg search color size = - icon color size size "0 0 48 48" [ Svg.path [ d "M31 28h-1.59l-.55-.55C30.82 25.18 32 22.23 32 19c0-7.18-5.82-13-13-13S6 11.82 6 19s5.82 13 13 13c3.23 0 6.18-1.18 8.45-3.13l.55.55V31l10 9.98L40.98 38 31 28zm-12 0c-4.97 0-9-4.03-9-9s4.03-9 9-9 9 4.03 9 9-4.03 9-9 9z" ] [] ] + icon color size size "0 0 48 48" [ Svg.path [ Attr.d "M31 28h-1.59l-.55-.55C30.82 25.18 32 22.23 32 19c0-7.18-5.82-13-13-13S6 11.82 6 19s5.82 13 13 13c3.23 0 6.18-1.18 8.45-3.13l.55.55V31l10 9.98L40.98 38 31 28zm-12 0c-4.97 0-9-4.03-9-9s4.03-9 9-9 9 4.03 9 9-4.03 9-9 9z" ] [] ] settings : Color -> Int -> Svg msg settings color size = - icon (Color.toString color) size size "0 0 48 48" [ Svg.path [ d "M38.86 25.95c.08-.64.14-1.29.14-1.95s-.06-1.31-.14-1.95l4.23-3.31c.38-.3.49-.84.24-1.28l-4-6.93c-.25-.43-.77-.61-1.22-.43l-4.98 2.01c-1.03-.79-2.16-1.46-3.38-1.97L29 4.84c-.09-.47-.5-.84-1-.84h-8c-.5 0-.91.37-.99.84l-.75 5.3c-1.22.51-2.35 1.17-3.38 1.97L9.9 10.1c-.45-.17-.97 0-1.22.43l-4 6.93c-.25.43-.14.97.24 1.28l4.22 3.31C9.06 22.69 9 23.34 9 24s.06 1.31.14 1.95l-4.22 3.31c-.38.3-.49.84-.24 1.28l4 6.93c.25.43.77.61 1.22.43l4.98-2.01c1.03.79 2.16 1.46 3.38 1.97l.75 5.3c.08.47.49.84.99.84h8c.5 0 .91-.37.99-.84l.75-5.3c1.22-.51 2.35-1.17 3.38-1.97l4.98 2.01c.45.17.97 0 1.22-.43l4-6.93c.25-.43.14-.97-.24-1.28l-4.22-3.31zM24 31c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z" ] [] ] + icon (Color.toString color) size size "0 0 48 48" [ Svg.path [ Attr.d "M38.86 25.95c.08-.64.14-1.29.14-1.95s-.06-1.31-.14-1.95l4.23-3.31c.38-.3.49-.84.24-1.28l-4-6.93c-.25-.43-.77-.61-1.22-.43l-4.98 2.01c-1.03-.79-2.16-1.46-3.38-1.97L29 4.84c-.09-.47-.5-.84-1-.84h-8c-.5 0-.91.37-.99.84l-.75 5.3c-1.22.51-2.35 1.17-3.38 1.97L9.9 10.1c-.45-.17-.97 0-1.22.43l-4 6.93c-.25.43-.14.97.24 1.28l4.22 3.31C9.06 22.69 9 23.34 9 24s.06 1.31.14 1.95l-4.22 3.31c-.38.3-.49.84-.24 1.28l4 6.93c.25.43.77.61 1.22.43l4.98-2.01c1.03.79 2.16 1.46 3.38 1.97l.75 5.3c.08.47.49.84.99.84h8c.5 0 .91-.37.99-.84l.75-5.3c1.22-.51 2.35-1.17 3.38-1.97l4.98 2.01c.45.17.97 0 1.22-.43l4-6.93c.25-.43.14-.97-.24-1.28l-4.22-3.31zM24 31c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z" ] [] ] strikethrough : Color -> Int -> Svg msg strikethrough color size = - icon (Color.toString color) size size "0 0 512 512" [ Svg.path [ d "M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z" ] [] ] + icon (Color.toString color) size size "0 0 512 512" [ Svg.path [ Attr.d "M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z" ] [] ] times : Color -> Int -> Svg msg times color size = - icon (Color.toString color) size size "0 0 352 512" [ Svg.path [ d "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z" ] [] ] + icon (Color.toString color) size size "0 0 352 512" [ Svg.path [ Attr.d "M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z" ] [] ] unbookmark : Color -> Int -> Svg msg unbookmark color size = - icon (Color.toString color) size size "0 0 576 512" [ Svg.path [ d "M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z" ] [] ] + icon (Color.toString color) size size "0 0 576 512" [ Svg.path [ Attr.d "M528.1 171.5L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6zM388.6 312.3l23.7 138.4L288 385.4l-124.3 65.3 23.7-138.4-100.6-98 139-20.2 62.2-126 62.2 126 139 20.2-100.6 98z" ] [] ] visibility : Int -> Svg msg visibility size = - icon (Color.toString Color.iconColor) size size "0 0 48 48" [ Svg.path [ d "M24 9C14 9 5.46 15.22 2 24c3.46 8.78 12 15 22 15 10.01 0 18.54-6.22 22-15-3.46-8.78-11.99-15-22-15zm0 25c-5.52 0-10-4.48-10-10s4.48-10 10-10 10 4.48 10 10-4.48 10-10 10zm0-16c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6z" ] [] ] + icon (Color.toString Color.iconColor) size size "0 0 48 48" [ Svg.path [ Attr.d "M24 9C14 9 5.46 15.22 2 24c3.46 8.78 12 15 22 15 10.01 0 18.54-6.22 22-15-3.46-8.78-11.99-15-22-15zm0 25c-5.52 0-10-4.48-10-10s4.48-10 10-10 10 4.48 10 10-4.48 10-10 10zm0-16c-3.31 0-6 2.69-6 6s2.69 6 6 6 6-2.69 6-6-2.69-6-6-6z" ] [] ] warning : Color -> Int -> Svg msg warning color size = - icon (Color.toString color) size size "0 0 48 48" [ Svg.path [ d "M2 42h44L24 4 2 42zm24-6h-4v-4h4v4zm0-8h-4v-8h4v8z" ] [] ] + icon (Color.toString color) size size "0 0 48 48" [ Svg.path [ Attr.d "M2 42h44L24 4 2 42zm24-6h-4v-4h4v4zm0-8h-4v-8h4v8z" ] [] ] icon : String -> Int -> Int -> String -> List (Svg msg) -> Svg msg icon color w h v children = Svg.svg - [ width <| String.fromInt w - , height <| String.fromInt h - , viewBox v + [ Attr.width <| String.fromInt w + , Attr.height <| String.fromInt h + , Attr.viewBox v ] [ Svg.g - [ fill color ] + [ Attr.fill color ] children ] @@ -273,11 +273,11 @@ icon color w h v children = iconWithBorder : Color -> Color -> Int -> Int -> String -> List (Svg msg) -> Svg msg iconWithBorder foreGroundcolor backgroundColor w h v children = Svg.svg - [ width <| String.fromInt w - , height <| String.fromInt h - , viewBox v + [ Attr.width <| String.fromInt w + , Attr.height <| String.fromInt h + , Attr.viewBox v ] [ Svg.g - [ fill <| Color.toString backgroundColor, stroke <| Color.toString foreGroundcolor ] + [ Attr.fill <| Color.toString backgroundColor, Attr.stroke <| Color.toString foreGroundcolor ] children ] diff --git a/web/src/elm/Views/Loading.elm b/web/src/elm/Views/Loading.elm index ce650839c..c3b5f7067 100644 --- a/web/src/elm/Views/Loading.elm +++ b/web/src/elm/Views/Loading.elm @@ -2,7 +2,7 @@ module Views.Loading exposing (view) import Css exposing (scale, transform) import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes exposing (css) +import Html.Styled.Attributes as Attr import Models.Color as Color import Svg.Styled as Svg import Svg.Styled.Attributes as SvgAttr @@ -10,7 +10,7 @@ import Svg.Styled.Attributes as SvgAttr view : Html msg view = - Html.div [ css [ transform <| scale 0.2 ] ] + Html.div [ Attr.css [ transform <| scale 0.2 ] ] [ Svg.svg [ SvgAttr.viewBox "0 0 320 320" , SvgAttr.width "320" diff --git a/web/src/elm/Views/Logo.elm b/web/src/elm/Views/Logo.elm index 0096cd607..67b1d19e7 100644 --- a/web/src/elm/Views/Logo.elm +++ b/web/src/elm/Views/Logo.elm @@ -2,8 +2,8 @@ module Views.Logo exposing (view) import Asset import Css exposing (cursor, pointer, px, width) -import Html.Styled exposing (Html, a, div, img, span, text) -import Html.Styled.Attributes exposing (alt, css, href, rel, target) +import Html.Styled as Html exposing (Html) +import Html.Styled.Attributes as Attr import Style.Font as Font import Style.Style import Style.Text as Text @@ -11,19 +11,19 @@ import Style.Text as Text view : Html msg view = - div [ css [ cursor pointer ] ] - [ a - [ css [ Style.Style.flexCenter ] - , href "https://textusm.com" - , target "_black" - , rel "noopener noreferrer" + Html.div [ Attr.css [ cursor pointer ] ] + [ Html.a + [ Attr.css [ Style.Style.flexCenter ] + , Attr.href "https://textusm.com" + , Attr.target "_black" + , Attr.rel "noopener noreferrer" ] - [ img + [ Html.img [ Asset.src Asset.logo - , css [ width <| px 24 ] - , alt "logo" + , Attr.css [ width <| px 24 ] + , Attr.alt "logo" ] [] - , span [ css [ Text.xs, Font.fontBold ] ] [ text "TextUSM" ] + , Html.span [ Attr.css [ Text.xs, Font.fontBold ] ] [ Html.text "TextUSM" ] ] ] diff --git a/web/src/elm/Views/Menu.elm b/web/src/elm/Views/Menu.elm index 079aa3b1b..b41467c0b 100644 --- a/web/src/elm/Views/Menu.elm +++ b/web/src/elm/Views/Menu.elm @@ -49,7 +49,7 @@ import Css.Global exposing (class, descendants) import Css.Transitions as Transitions import Events import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes as Attr exposing (css) +import Html.Styled.Attributes as Attr import Html.Styled.Events as Events import Json.Decode as D import List @@ -101,7 +101,7 @@ type alias Props = menu : { bottom : Maybe Int, left : Maybe Int, right : Maybe Int, top : Maybe Int } -> List (MenuItem msg) -> Html msg menu pos items = Html.div - [ css + [ Attr.css [ Maybe.map (\p -> Css.batch [ top <| px <| toFloat <| p ]) pos.top |> Maybe.withDefault (Css.batch []) , Maybe.map (\p -> Css.batch [ left <| px <| toFloat <| p ]) pos.left |> Maybe.withDefault (Css.batch []) , Maybe.map (\p -> Css.batch [ right <| px <| toFloat <| p ]) pos.right |> Maybe.withDefault (Css.batch []) @@ -122,7 +122,7 @@ menu pos items = |> List.map (\(MenuItem menuItem) -> Html.div - [ css + [ Attr.css [ TextStyle.base , Color.textColor , cursor pointer @@ -141,7 +141,7 @@ menu pos items = |> Attributes.dataTest ] [ Html.div - [ css + [ Attr.css [ Breakpoint.style [ cursor pointer , TextStyle.sm @@ -163,7 +163,7 @@ menu pos items = view : Props -> Html Msg view props = Html.nav - [ css + [ Attr.css [ Breakpoint.style [ displayFlex , flexDirection row @@ -197,7 +197,7 @@ view props = , Attributes.dataTest "new-menu" ] [ Html.div - [ css + [ Attr.css [ Style.mlXs , menuButtonStyle ] @@ -207,7 +207,7 @@ view props = ] ] , Html.div - [ css [ menuButtonStyle ] ] + [ Attr.css [ menuButtonStyle ] ] [ case props.settings.location of Just DiagramLocation.LocalFileSystem -> Html.div @@ -244,7 +244,7 @@ view props = _ -> Events.onClick Save - , css [ menuButtonStyle ] + , Attr.css [ menuButtonStyle ] , Attributes.dataTest "save-menu" ] [ Icon.save (Color.toString Color.iconColor) 22 @@ -253,7 +253,7 @@ view props = else Html.div - [ css [ menuButtonStyle ] + [ Attr.css [ menuButtonStyle ] , Attributes.dataTest "disabled-save-menu" ] [ Icon.save (Color.toString Color.disabledIconColor) 22 @@ -261,7 +261,7 @@ view props = ] , Html.div [ Events.stopPropagationOn "click" (D.succeed ( OpenMenu Export, True )) - , css [ menuButtonStyle ] + , Attr.css [ menuButtonStyle ] , Attributes.dataTest "download-menu" ] [ Icon.download @@ -277,7 +277,7 @@ view props = ] , if Text.isChanged props.text then Html.div - [ css [ menuButtonStyle ] + [ Attr.css [ menuButtonStyle ] , Attributes.dataTest "copy-menu" ] [ Icon.copy Color.disabledIconColor 19 @@ -286,7 +286,7 @@ view props = else Html.div - [ css [ menuButtonStyle ] + [ Attr.css [ menuButtonStyle ] , Events.onClickStopPropagation Copy , Attributes.dataTest "copy-menu" ] diff --git a/web/src/elm/Views/Notification.elm b/web/src/elm/Views/Notification.elm index 61938b71a..a03d2d670 100644 --- a/web/src/elm/Views/Notification.elm +++ b/web/src/elm/Views/Notification.elm @@ -24,7 +24,7 @@ import Css ) import Css.Transitions as Transitions import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes exposing (css) +import Html.Styled.Attributes as Attr import Models.Color as Color import Models.Notification as Notification import Style.Breakpoint as Breakpoint @@ -52,7 +52,7 @@ view notification = ( "", Icon.info 0 ) in Html.div - [ css + [ Attr.css [ Breakpoint.style [ Text.sm , position fixed @@ -86,9 +86,9 @@ view notification = ] ] [ Html.div - [ css [ displayFlex, alignItems center, Style.mrMd ] + [ Attr.css [ displayFlex, alignItems center, Style.mrMd ] ] - [ Html.div [ css [ Style.mlSm ] ] [ icon ] - , Html.div [ css [ Style.mlSm ] ] [ Html.text text_ ] + [ Html.div [ Attr.css [ Style.mlSm ] ] [ icon ] + , Html.div [ Attr.css [ Style.mlSm ] ] [ Html.text text_ ] ] ] diff --git a/web/src/elm/Views/Progress.elm b/web/src/elm/Views/Progress.elm index 51b6a9f45..7ed0508c5 100644 --- a/web/src/elm/Views/Progress.elm +++ b/web/src/elm/Views/Progress.elm @@ -2,7 +2,7 @@ module Views.Progress exposing (view) import Css exposing (absolute, backgroundColor, int, left, position, px, rgba, top, zIndex) import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes exposing (css) +import Html.Styled.Attributes as Attr import Style.Style as Style import Views.Loading as Loading @@ -10,7 +10,7 @@ import Views.Loading as Loading view : Html msg view = Html.div - [ css + [ Attr.css [ position absolute , top <| px 0 , left <| px 0 diff --git a/web/src/elm/Views/Snackbar.elm b/web/src/elm/Views/Snackbar.elm index 648055020..ffbe91ea7 100644 --- a/web/src/elm/Views/Snackbar.elm +++ b/web/src/elm/Views/Snackbar.elm @@ -26,7 +26,7 @@ import Css , zIndex ) import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes exposing (css) +import Html.Styled.Attributes as Attr import Html.Styled.Events as Events import Models.Snackbar as Snackbar import Style.Breakpoint as Breakpoint @@ -42,7 +42,7 @@ view snackbar = case snackbar of Snackbar.Show model -> Html.div - [ css + [ Attr.css [ Breakpoint.style [ position fixed , displayFlex @@ -71,9 +71,9 @@ view snackbar = ] ] ] - [ Html.div [ css [ Style.padding3 ] ] [ Html.text model.message ] + [ Html.div [ Attr.css [ Style.padding3 ] ] [ Html.text model.message ] , Html.div - [ css [ Style.padding3, Color.textAccent, cursor pointer, Font.fontBold ] + [ Attr.css [ Style.padding3, Color.textAccent, cursor pointer, Font.fontBold ] , Events.onClick model.action ] [ Html.text model.text ] diff --git a/web/src/elm/Views/Spinner.elm b/web/src/elm/Views/Spinner.elm index 23b68fc20..8846ea9e4 100644 --- a/web/src/elm/Views/Spinner.elm +++ b/web/src/elm/Views/Spinner.elm @@ -33,13 +33,13 @@ import Css ) import Css.Animations as Animations exposing (keyframes) import Html.Styled exposing (Html, div) -import Html.Styled.Attributes exposing (css) +import Html.Styled.Attributes as Attr small : Html msg small = div - [ css + [ Attr.css [ margin <| px 4 , fontSize <| px 2 , position relative diff --git a/web/src/elm/Views/SplitWindow.elm b/web/src/elm/Views/SplitWindow.elm index 3376f3e31..76cdd4b08 100644 --- a/web/src/elm/Views/SplitWindow.elm +++ b/web/src/elm/Views/SplitWindow.elm @@ -2,7 +2,7 @@ module Views.SplitWindow exposing (Props, view) import Css exposing (absolute, alignItems, backgroundColor, borderBottomRightRadius, borderTopRightRadius, calc, center, colResize, cursor, display, displayFlex, height, hex, int, minus, none, plus, pointer, position, px, relative, right, top, vw, width, zIndex) import Html.Styled as Html exposing (Attribute, Html) -import Html.Styled.Attributes exposing (css) +import Html.Styled.Attributes as Attr import Html.Styled.Events as Events import Json.Decode as D import Models.Color as Color @@ -44,31 +44,31 @@ view { background, window, onToggleEditor, onResize } left right = in if Window.isFullscreen window then Html.div - [ css [ displayFlex, backgroundColor <| hex background ] ] - [ Html.div [ css [ display none ] ] [ left ] - , Html.div [ css [ Style.fullScreen ] ] [ right ] + [ Attr.css [ displayFlex, backgroundColor <| hex background ] ] + [ Html.div [ Attr.css [ display none ] ] [ left ] + , Html.div [ Attr.css [ Style.fullScreen ] ] [ right ] ] else Html.div - [ css [ displayFlex ] ] + [ Attr.css [ displayFlex ] ] [ Html.div - [ css [ width leftPos, Style.hContent, Color.bgMain, position relative ] ] + [ Attr.css [ width leftPos, Style.hContent, Color.bgMain, position relative ] ] [ left, toggleEditorButton window onToggleEditor ] , Html.div - [ css [ Color.bgMain, width <| px 20, cursor colResize ] + [ Attr.css [ Color.bgMain, width <| px 20, cursor colResize ] , onStartWindowResize onResize ] [] , Html.div - [ css [ width rightPos, Style.hContent, backgroundColor <| hex background ] ] + [ Attr.css [ width rightPos, Style.hContent, backgroundColor <| hex background ] ] [ right ] ] hideEditorButton : msg -> Html msg hideEditorButton m = - Html.div [ css [ Style.full, displayFlex, alignItems center ], Events.onClick m ] [ Icon.angleLeft Color.white 12 ] + Html.div [ Attr.css [ Style.full, displayFlex, alignItems center ], Events.onClick m ] [ Icon.angleLeft Color.white 12 ] onStartWindowResize : (Int -> msg) -> Attribute msg @@ -83,13 +83,13 @@ pageX = showEditorButton : msg -> Html msg showEditorButton m = - Html.div [ css [ Style.full, displayFlex, alignItems center ], Events.onClick m ] [ Icon.angleRight Color.white 12 ] + Html.div [ Attr.css [ Style.full, displayFlex, alignItems center ], Events.onClick m ] [ Icon.angleRight Color.white 12 ] toggleEditorButton : Window -> (Window -> msg) -> Html msg toggleEditorButton window onToggleEditor = Html.div - [ css + [ Attr.css [ position absolute , zIndex <| int 50 , cursor pointer diff --git a/web/src/elm/Views/Switch.elm b/web/src/elm/Views/Switch.elm index f88c67ca1..f6653ae9a 100644 --- a/web/src/elm/Views/Switch.elm +++ b/web/src/elm/Views/Switch.elm @@ -26,7 +26,7 @@ import Css , zero ) import Html.Styled exposing (Html, div, input, label) -import Html.Styled.Attributes as Attr exposing (css, type_) +import Html.Styled.Attributes as Attr import Html.Styled.Events as E import Style.Color as ColorStyle import Style.Style as Style @@ -34,10 +34,10 @@ import Style.Style as Style view : Bool -> (Bool -> msg) -> Html msg view check onCheck = - div [ css [ Style.flexCenter, position relative ] ] + div [ Attr.css [ Style.flexCenter, position relative ] ] [ input - [ type_ "checkbox" - , css + [ Attr.type_ "checkbox" + , Attr.css [ position absolute , left zero , top zero @@ -51,7 +51,7 @@ view check onCheck = ] [] , label - [ css + [ Attr.css [ width <| px 32 , height <| px 16 , backgroundColor <| ColorStyle.disabledColor diff --git a/web/src/elm/Views/SwitchWindow.elm b/web/src/elm/Views/SwitchWindow.elm index bbd0a26d7..fa631e35b 100644 --- a/web/src/elm/Views/SwitchWindow.elm +++ b/web/src/elm/Views/SwitchWindow.elm @@ -2,7 +2,7 @@ module Views.SwitchWindow exposing (view) import Css exposing (backgroundColor, block, bottom, column, display, displayFlex, fixed, flexDirection, hex, int, none, position, px, relative, right, zIndex) import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes as Attr exposing (css) +import Html.Styled.Attributes as Attr import Html.Styled.Events exposing (onClick) import Models.Window as Window exposing (Window) import Style.Breakpoint as Breakpoint @@ -15,7 +15,7 @@ import Views.Icon as Icon view : (Window -> msg) -> String -> Window -> Html msg -> Html msg -> Html msg view onSwitchWindow background window view1 view2 = Html.div - [ css + [ Attr.css [ displayFlex , flexDirection column , position relative @@ -24,7 +24,7 @@ view onSwitchWindow background window view1 view2 = ] ] [ Html.div - [ css + [ Attr.css [ displayFlex , position fixed , Style.flexCenter @@ -55,7 +55,7 @@ view onSwitchWindow background window view1 view2 = Empty.view ] , Html.div - [ css + [ Attr.css [ Breakpoint.style [ Style.hMain , Style.widthFull @@ -64,7 +64,7 @@ view onSwitchWindow background window view1 view2 = ] ] [ Html.div - [ css + [ Attr.css [ Style.full , if Window.isDisplayPreview window then display none @@ -75,7 +75,7 @@ view onSwitchWindow background window view1 view2 = ] [ view1 ] , Html.div - [ css + [ Attr.css [ Style.full , backgroundColor <| hex background , if Window.isDisplayEditor window then diff --git a/web/src/elm/Views/Tooltip.elm b/web/src/elm/Views/Tooltip.elm index 89330881c..fb5a9cd47 100644 --- a/web/src/elm/Views/Tooltip.elm +++ b/web/src/elm/Views/Tooltip.elm @@ -1,11 +1,11 @@ module Views.Tooltip exposing (view) import Html.Styled as Html exposing (Html) -import Html.Styled.Attributes exposing (class) +import Html.Styled.Attributes as Attr view : String -> Html msg view text = - Html.span [ class "bottom-tooltip" ] - [ Html.span [ class "text" ] [ Html.text <| text ] + Html.span [ Attr.class "bottom-tooltip" ] + [ Html.span [ Attr.class "text" ] [ Html.text <| text ] ] diff --git a/web/src/ts/editor/lang.ts b/web/src/ts/editor/lang.ts index 16c76e6bd..2a89544fc 100644 --- a/web/src/ts/editor/lang.ts +++ b/web/src/ts/editor/lang.ts @@ -1,109 +1,116 @@ import * as monaco from 'monaco-editor'; -monaco.editor.defineTheme('default', { - base: 'vs-dark', +import type { Settings } from '../model'; +import { isDarkMode } from '../utils'; + +export const loadEditor = (settings: Settings) => { + const isDark = settings.theme === 'dark' || ((settings.theme ?? 'system') === 'system' && isDarkMode); + + monaco.editor.defineTheme('default', { + base: isDark ? 'vs-dark' : 'vs', inherit: true, colors: { - 'editor.background': '#273037', + 'editor.background': isDark ? '#273037' : '#FEFEFE', }, rules: [ - { - token: 'comment', - foreground: '#008800', - }, - { - token: 'hidden', - foreground: '#323d46', - }, - { - token: 'indent1', - foreground: '#439ad9', - fontStyle: 'bold', - }, - { - token: 'indent2', - foreground: '#3a5aba', - }, - { - token: 'indent3', - foreground: '#c4c0b9', - }, - { - token: 'attribute', - foreground: '#ce9887', - fontStyle: 'bold', - }, - { - token: 'property', - foreground: '#f9c859', - fontStyle: 'bold', - }, - { - token: 'constant', - foreground: '#9f7efe', - fontStyle: 'bold', - }, + { + token: 'comment', + foreground: '#008800', + }, + { + token: 'hidden', + foreground: '#323d46', + }, + { + token: 'indent1', + foreground: '#439ad9', + fontStyle: 'bold', + }, + { + token: 'indent2', + foreground: '#3a5aba', + }, + { + token: 'indent3', + foreground: isDark ? '#c4c0b9' : '#000000', + }, + { + token: 'attribute', + foreground: '#ce9887', + fontStyle: 'bold', + }, + { + token: 'property', + foreground: '#f9c859', + fontStyle: 'bold', + }, + { + token: 'constant', + foreground: '#9f7efe', + fontStyle: 'bold', + }, ], -}); + }); +}; const addUserStoryMap = () => { - monaco.languages.register({ - id: 'UserStoryMap', - }); + monaco.languages.register({ + id: 'UserStoryMap', + }); - monaco.languages.setMonarchTokensProvider('UserStoryMap', { - tokenizer: { - root: [ - [/#[^.*#[^:]+:[^:]+$/, 'property'], - [/#[^#|]+/, 'comment'], - [/^[^ ][^#:||]+/, 'indent1'], - [/^ {20}[^#:||]+/, 'indent3'], - [/^ {12}[^#:||]+/, 'indent1'], - [/^ {16}[^#:||]+/, 'indent2'], - [/^ {8}[^#:||]+/, 'indent3'], - [/^ {4}[^#:||]+/, 'indent2'], - [/\|[^|]+/, 'hidden'], - ], - }, - }); + monaco.languages.setMonarchTokensProvider('UserStoryMap', { + tokenizer: { + root: [ + [/#[^.*#[^:]+:[^:]+$/, 'property'], + [/#[^#|]+/, 'comment'], + [/^[^ ][^#:|]+/, 'indent1'], + [/^ {20}[^#:|]+/, 'indent3'], + [/^ {12}[^#:|]+/, 'indent1'], + [/^ {16}[^#:|]+/, 'indent2'], + [/^ {8}[^#:|]+/, 'indent3'], + [/^ {4}[^#:|]+/, 'indent2'], + [/\|[^|]+/, 'hidden'], + ], + }, + }); }; const addGanttChart = () => { - monaco.languages.register({ - id: 'GanttChart', - }); + monaco.languages.register({ + id: 'GanttChart', + }); - monaco.languages.setMonarchTokensProvider('GanttChart', { - tokenizer: { - root: [ - [/#[^#|]+/, 'comment'], - [/^ {8}[^#:||]+/, 'indent3'], - [/^ {4}[^#:||]+/, 'indent2'], - [/[0-9]{4}-[0-9]{2}-[0-9]{2}.*/, 'attribute'], - ], - }, - }); + monaco.languages.setMonarchTokensProvider('GanttChart', { + tokenizer: { + root: [ + [/#[^#|]+/, 'comment'], + [/^ {8}[^#:|]+/, 'indent3'], + [/^ {4}[^#:|]+/, 'indent2'], + [/\d{4}-\d{2}-\d{2}.*/, 'attribute'], + ], + }, + }); }; const addBusinessModelCanvas = () => { - monaco.languages.register({ - id: 'BusinessModelCanvas', - }); + monaco.languages.register({ + id: 'BusinessModelCanvas', + }); - monaco.languages.setMonarchTokensProvider('BusinessModelCanvas', { - tokenizer: { - root: [ - [/#[^.*#[^:]+:[^:]+$/, 'property'], - [/#[^#|]+/, 'comment'], - [/^[^ ][^#:||]+/, 'indent1'], - [/\|[^|]+/, 'hidden'], - ], - }, - }); + monaco.languages.setMonarchTokensProvider('BusinessModelCanvas', { + tokenizer: { + root: [ + [/#[^.*#[^:]+:[^:]+$/, 'property'], + [/#[^#|]+/, 'comment'], + [/^[^ ][^#:|]+/, 'indent1'], + [/\|[^|]+/, 'hidden'], + ], + }, + }); }; export const registerLang = () => { - addUserStoryMap(); - addGanttChart(); - addBusinessModelCanvas(); + addUserStoryMap(); + addGanttChart(); + addBusinessModelCanvas(); }; diff --git a/web/src/ts/index.ts b/web/src/ts/index.ts index 0f0c5b6c5..3d80a1ae0 100644 --- a/web/src/ts/index.ts +++ b/web/src/ts/index.ts @@ -16,13 +16,14 @@ import { import { initDB } from './db'; import { initDownload } from './download'; import { setElmApp } from './editor'; +import { loadEditor } from './editor/lang'; import type { ElmApp, Provider } from './elm'; import { initFile, canUseNativeFileSystem } from './file'; import type { Settings } from './model'; import { loadSettings, saveSettings } from './settings'; +import { isDarkMode } from './utils'; const lang = navigator.languages[0] ?? navigator.language ?? navigator.userLanguage ?? navigator.browserLanguage; -const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches; type Flags = { lang: string | string[]; @@ -39,10 +40,14 @@ declare type ElmType = { }; }; +const settings = loadSettings(isDarkMode); + +loadEditor(settings); + const app: ElmApp = (Elm as ElmType).Main.init({ flags: { lang, - settings: loadSettings(isDarkMode), + settings, isOnline: window.navigator.onLine ?? true, isDarkMode, canUseClipboardItem: Boolean(ClipboardItem), diff --git a/web/src/ts/model.ts b/web/src/ts/model.ts index 4e1994fff..2a265cd5d 100644 --- a/web/src/ts/model.ts +++ b/web/src/ts/model.ts @@ -23,6 +23,10 @@ export type Diagram = { location: 'local' | 'gist' | 'system' | 'googledrive'; }; +export type Theme = 'system' | 'dark' | 'light'; + +export type DiagramLocation = 'gist' | 'local' | 'localfilesystem' | 'remote'; + export type DiagramType = | 'UserStoryMap' | 'OpportunityCanvas' @@ -70,6 +74,8 @@ export type Settings = { diagramId: string | undefined; storyMap: DiagramSettings; diagram: Diagram | undefined; + location: DiagramLocation | undefined; + theme: Theme | undefined; }; export type DiagramSettings = { diff --git a/web/src/ts/settings.ts b/web/src/ts/settings.ts index 318912209..43795576a 100644 --- a/web/src/ts/settings.ts +++ b/web/src/ts/settings.ts @@ -44,6 +44,8 @@ const getDefaultSettings = (isDarkMode: boolean) => ({ }, diagramId: undefined, diagram: undefined, + location: undefined, + theme: undefined, }); export const loadSettings = (isDarkMode: boolean, diagram?: string): Settings => { @@ -86,6 +88,8 @@ export const saveSettings = (settings: Settings): void => { diagramId: settings.diagramId, storyMap: settings.storyMap, diagram: settings.diagram, + location: settings.location, + theme: settings.theme, }) ); diff --git a/web/src/ts/utils.ts b/web/src/ts/utils.ts new file mode 100644 index 000000000..4317b5e68 --- /dev/null +++ b/web/src/ts/utils.ts @@ -0,0 +1 @@ +export const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches; diff --git a/web/tests/Models/Fuzzer.elm b/web/tests/Models/Fuzzer.elm index 669320b3e..7ddf5d571 100644 --- a/web/tests/Models/Fuzzer.elm +++ b/web/tests/Models/Fuzzer.elm @@ -149,7 +149,6 @@ diagramLocationFuzzer = [ Fuzz.constant DiagramLocation.Local , Fuzz.constant DiagramLocation.Remote , Fuzz.constant DiagramLocation.Gist - , Fuzz.constant DiagramLocation.GoogleDrive ]