diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..9555ba3 --- /dev/null +++ b/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["next/babel"], + "plugins": [["styled-components", { "ssr": true }]] +} diff --git a/.bazelrc b/.bazelrc deleted file mode 100644 index 202591a..0000000 --- a/.bazelrc +++ /dev/null @@ -1,89 +0,0 @@ -build --workspace_status_command=hack/workspace_status.sh -test --workspace_status_command=hack/workspace_status.sh -run --workspace_status_command=hack/workspace_status.sh - -# Common Bazel settings for JavaScript/NodeJS workspaces -# This rc file is automatically discovered when Bazel is run in this workspace, -# see https://docs.bazel.build/versions/master/guide.html#bazelrc -# -# The full list of Bazel options: https://docs.bazel.build/versions/master/command-line-reference.html - -# Cache action outputs on disk so they persist across output_base and bazel shutdown (eg. changing branches) -build --disk_cache=~/.cache/bazel-disk-cache - -# Bazel will create symlinks from the workspace directory to output artifacts. -# Build results will be placed in a directory called "dist/bin" -# Other directories will be created like "dist/testlogs" -# Be aware that this will still create a bazel-out symlink in -# your project directory, which you must exclude from version control and your -# editor's search path. -build --symlink_prefix=dist/ -# To disable the symlinks altogether (including bazel-out) you can use -# build --symlink_prefix=/ -# however this makes it harder to find outputs. - -# Specifies desired output mode for running tests. -# Valid values are -# 'summary' to output only test status summary -# 'errors' to also print test logs for failed tests -# 'all' to print logs for all tests -# 'streamed' to output logs for all tests in real time -# (this will force tests to be executed locally one at a time regardless of --test_strategy value). -test --test_output=errors - -# Support for debugging NodeJS tests -# Add the Bazel option `--config=debug` to enable this -# --test_output=streamed -# Stream stdout/stderr output from each test in real-time. -# See https://docs.bazel.build/versions/master/user-manual.html#flag--test_output for more details. -# --test_strategy=exclusive -# Run one test at a time. -# --test_timeout=9999 -# Prevent long running tests from timing out -# See https://docs.bazel.build/versions/master/user-manual.html#flag--test_timeout for more details. -# --nocache_test_results -# Always run tests -# --node_options=--inspect-brk -# Pass the --inspect-brk option to all tests which enables the node inspector agent. -# See https://nodejs.org/de/docs/guides/debugging-getting-started/#command-line-options for more details. -# --define=VERBOSE_LOGS=1 -# Rules will output verbose logs if the VERBOSE_LOGS environment variable is set. `VERBOSE_LOGS` will be passed to -# `nodejs_binary` and `nodejs_test` via the default value of the `default_env_vars` attribute of those rules. -# --compilation_mode=dbg -# Rules may change their build outputs if the compilation mode is set to dbg. For example, -# mininfiers such as terser may make their output more human readable when this is set. Rules will pass `COMPILATION_MODE` -# to `nodejs_binary` executables via the actions.run env attribute. -# See https://docs.bazel.build/versions/master/user-manual.html#flag--compilation_mode for more details. -test:debug --test_output=streamed --test_strategy=exclusive --test_timeout=9999 --nocache_test_results --define=VERBOSE_LOGS=1 -# Use bazel run with `--config=debug` to turn on the NodeJS inspector agent. -# The node process will break before user code starts and wait for the debugger to connect. -run:debug --define=VERBOSE_LOGS=1 -- --node_options=--inspect-brk -# The following option will change the build output of certain rules such as terser and may not be desirable in all cases -build:debug --compilation_mode=dbg - -# Turn off legacy external runfiles -# This prevents accidentally depending on this feature, which Bazel will remove. -build --nolegacy_external_runfiles - -# Turn on --incompatible_strict_action_env which was on by default -# in Bazel 0.21.0 but turned off again in 0.22.0. Follow -# https://github.com/bazelbuild/bazel/issues/7026 for more details. -# This flag is needed to so that the bazel cache is not invalidated -# when running bazel via `yarn bazel`. -# See https://github.com/angular/angular/issues/27514. -build --incompatible_strict_action_env -run --incompatible_strict_action_env - -# When running `bazel coverage` --instrument_test_targets needs to be set in order to -# collect coverage information from test targets -coverage --instrument_test_targets - -# Load any settings specific to the current user. -# .bazelrc.user should appear in .gitignore so that settings are not shared with team members -# This needs to be last statement in this -# config, as the user configuration should be able to overwrite flags from this file. -# See https://docs.bazel.build/versions/master/best-practices.html#bazelrc -# (Note that we use .bazelrc.user so the file appears next to .bazelrc in directory listing, -# rather than user.bazelrc as suggested in the Bazel docs) -try-import %workspace%/.bazelrc.user - diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index 2c50497..0000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "Roleypoly (Bazel, Go, Node)", - // Docker Hub because easier to go fast - "image": "roleypoly/dev-container:main", - "settings": { - "terminal.integrated.shell.linux": "/bin/bash" - }, - "extensions": [ - "bazelbuild.vscode-bazel", - "dbaeumer.vscode-eslint", - "golang.go", - "hashicorp.terraform", - "firsttris.vscode-jest-runner", - "esbenp.prettier-vscode", - "zxh404.vscode-proto3", - "jpoissonnier.vscode-styled-components", - "eg2.vscode-npm-script", - "christian-kohler.npm-intellisense" - ] -} diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e1f7bc1 --- /dev/null +++ b/.env.example @@ -0,0 +1,30 @@ +# Make an application at https://discord.com/developers/applications +BOT_CLIENT_ID=000000000000000000 +BOT_CLIENT_SECRET=RnX8pXXXXXXXXXXXXXXXXXXXXXXXXXu- +BOT_TOKEN=Mzk2MjI3MTM0MjI3NXXXXXXXXXXXXXXXXXXXXXPUlYoARXXXXXXXXXXXXXX + +# Comma separated; put your user ID here. Gives elevated permissions to everything. +ROOT_USERS=62601275618889728 + +# Comma separated; list any bot IDs that are allowed to operate upon this bot. +ALLOWED_BOTS= + +# If 6600 or 6601 is taken, change this, and all other 6600/6601 references. +PORT=6600 +UI_PORT=6601 + +# This is probably right, unless you set a different port. +OAUTH_REDIRECT_URI=http://localhost:6600/login-handler + +# Again, probably right. Do not put a trailing / +UI_PUBLIC_URI=http://localhost:6601 +API_PUBLIC_URI=http://localhost:6600 + +# Google Cloud Project ID -- This only needs to be set for production/public cloud +GCP_PROJECT_ID=roleypoly-0000000 + +# Unset this if you're planning to use public cloud Firestore as opposed to local +# Or set this differently if you changed your local endpoint port. +FIRESTORE_EMULATOR_HOST=localhost:6691 + +REDIS_ENDPOINT=localhost:6692 diff --git a/.eslintrc.js b/.eslintrc.js index ea00331..18c8aaa 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -34,7 +34,6 @@ module.exports = { }, }, ], - '@typescript-eslint/naming-convention': 'error', '@typescript-eslint/no-empty-function': 'error', '@typescript-eslint/no-floating-promises': 'error', '@typescript-eslint/no-misused-new': 'error', diff --git a/.github/dependabot.yml b/.github/dependabot.yml index bbd41a4..62bc419 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,11 +10,6 @@ updates: schedule: interval: 'daily' - - package-ecosystem: 'docker' - directory: '/.devcontainer' - schedule: - interval: 'daily' - - package-ecosystem: 'gomod' directory: '/' schedule: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 40d4dd3..68c0256 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,61 +3,86 @@ name: Bazel Build on: push jobs: - bazel_build: - name: Bazel Build + go_test: runs-on: ubuntu-latest + name: Go CI + steps: + - uses: actions/checkout@master + - uses: actions/cache@v2 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + - uses: actions/setup-go@v2 + with: + go-version: '^1.15.5' + + - run: go vet ./... + + - run: go test ./... + + node_test: + runs-on: ubuntu-latest + name: Node CI steps: - uses: actions/checkout@master - - name: Mount bazel cache - uses: actions/cache@v2.1.2 + - uses: actions/setup-node@v2-beta with: - path: | - /home/runner/.cache/bazel - /home/runner/.cache/bazel-disk-cache - key: bazel + node-version: '14' - - name: Install bazelisk - run: | - curl -LO "https://github.com/bazelbuild/bazelisk/releases/download/v1.1.0/bazelisk-linux-amd64" - mkdir -p "${GITHUB_WORKSPACE}/bin/" - mv bazelisk-linux-amd64 "${GITHUB_WORKSPACE}/bin/bazel" - chmod +x "${GITHUB_WORKSPACE}/bin/bazel" + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" - - name: Test - run: | - "${GITHUB_WORKSPACE}/bin/bazel" test \ - -k -c opt \ - --stamp \ - --workspace_status_command hack/workspace_status.sh --\ - //src/... //hack/... -//hack/dev-container/... - - - name: Docker Login - run: | - echo ${{github.token}} | docker login -u ${{github.actor}} --password-stdin docker.pkg.github.com - - - name: Publish Artifacts - run: | - "${GITHUB_WORKSPACE}/bin/bazel" query //src/... |\ - grep +publish |\ - xargs -l1 "${GITHUB_WORKSPACE}/bin/bazel" run \ - -c opt \ - --stamp \ - --workspace_status_command hack/workspace_status.sh - - - name: Write Artifact Manifest - run: | - artifacts=$(${GITHUB_WORKSPACE}/bin/bazel query //src/... | grep +publish) - publishedServices=${artifacts//$'//src/'/} - publishedServices=${publishedServices//$':+publish'/} - manifestJSON='{"services": {}}' - for svc in $publishedServices; do - manifestJSON=$(echo $manifestJSON | jq ".services+={\"$svc\":\"$(cat bazel-bin/src/$svc/+publish.digest)\"}") - done - echo $manifestJSON > manifest.json - - - name: Upload Artifact Manifest - uses: actions/upload-artifact@v2 + - uses: actions/cache@v2 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: - name: manifest.json - path: manifest.json + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - run: yarn install --frozen-lockfile + + - run: yarn lint + + - run: yarn test + + - name: Docker meta + id: docker_meta + uses: crazy-max/ghaction-docker-meta@v1 + with: + images: docker.pkg.github.com/roleypoly/roleypoly/ui + tag-sha: true + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + install: true + + - name: Login to GitHub Packages Docker Registry + uses: docker/login-action@v1 + with: + registry: docker.pkg.github.com + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: .hack/dockerfiles/ui.Dockerfile + push: true + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache + tags: ${{ steps.docker_meta.outputs.tags }} diff --git a/.github/workflows/dev-container.yml b/.github/workflows/dev-container.yml deleted file mode 100644 index d363a96..0000000 --- a/.github/workflows/dev-container.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Build Dev Container - -on: - push: - paths: - - .devcontainer/* - - hack/dev-container - - WORKSPACE - - .github/workflows/dev-container.yml - schedule: - - cron: '0 12 * * 2' # 12 noon every tuesday - -jobs: - dev_container_build: - name: Bazel Build (Dev Container) - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@master - - name: Mount bazel cache - uses: actions/cache@v2.1.2 - with: - path: | - /home/runner/.cache/bazel - /home/runner/.cache/bazel-disk-cache - key: bazel - - - name: Install bazelisk - run: | - curl -LO "https://github.com/bazelbuild/bazelisk/releases/download/v1.1.0/bazelisk-linux-amd64" - mkdir -p "${GITHUB_WORKSPACE}/bin/" - mv bazelisk-linux-amd64 "${GITHUB_WORKSPACE}/bin/bazel" - chmod +x "${GITHUB_WORKSPACE}/bin/bazel" - - - name: Build & Publish Dev Container - run: | - echo ${{github.token}} | docker login -u ${{github.actor}} --password-stdin docker.pkg.github.com - "${GITHUB_WORKSPACE}/bin/bazel" run \ - -c opt \ - --stamp \ - --workspace_status_command hack/workspace_status.sh \ - //hack/dev-container:publish-dev-container - - echo ${{secrets.DOCKER_PASSWORD}} | docker login -u ${{secrets.DOCKER_USERNAME}} --password-stdin - "${GITHUB_WORKSPACE}/bin/bazel" run \ - -c opt \ - --stamp \ - --workspace_status_command hack/workspace_status.sh \ - //hack/dev-container:publish-dev-container-dockerhub diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 842278f..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Release Workflow - -on: workflow_dispatch - -jobs: - commit_release_tag: - name: Commit Roleypoly Release Tag - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@master - with: - ssh-key: ${{ secrets.DEPLOY_KEY }} - - - name: Push changes - id: push - run: | - TAG=$(date +v%Y%m%d-%H%M%S) - git config --local user.email "gh-automation@roleypoly.com" - git config --local user.name "Roleypoly Release Automation" - git tag $TAG - git push origin $TAG - echo "::set-output release_tag=${TAG}" diff --git a/.gitignore b/.gitignore index f63b460..b0d4637 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,7 @@ -bazel-bin -bazel-out -bazel-roleypoly -bazel-testlogs node_modules .env -docker-compose.yaml -/target *.log storybook-static -dist +.next +worker +wrangler.toml diff --git a/.prettierignore b/.prettierignore index 9ff4bc7..bbf26c9 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,6 @@ bazel-* dist -storybook-static \ No newline at end of file +storybook-static +.next +worker +**/dist \ No newline at end of file diff --git a/.storybook/main.js b/.storybook/main.js index bcfe1a0..71d8b6e 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -13,4 +13,9 @@ module.exports = { return config; }, + typescript: { + checkOptions: { + tsconfig: path.resolve(__dirname, '../tsconfig.stories.json'), + }, + }, }; diff --git a/.vscode/settings.json b/.vscode/settings.json index a7379f9..0195b68 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,5 +6,10 @@ "editor.formatOnSave": true, "editor.insertSpaces": true, "editor.tabSize": 2, - "go.inferGopath": false + "go.inferGopath": false, + "search.exclude": { + "**/.yarn": true, + "**/.pnp.*": true + }, + "typescript.enablePromptUseWorkspaceTsdk": true } diff --git a/BUILD.bazel b/BUILD.bazel deleted file mode 100644 index 835d11d..0000000 --- a/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -load("@bazel_gazelle//:def.bzl", "gazelle") - -# gazelle:prefix github.com/roleypoly/roleypoly -# gazelle:exclude hack/** -gazelle(name = "gazelle") - -exports_files( - [ - "tsconfig.json", - "jest.config.js", - "jest-reporter.js", - "hack/jestSetup.ts", - ], - visibility = ["//visibility:public"], -) diff --git a/WORKSPACE b/WORKSPACE deleted file mode 100644 index 1d8ed49..0000000 --- a/WORKSPACE +++ /dev/null @@ -1,121 +0,0 @@ -workspace( - name = "roleypoly", - managed_directories = {"@npm": ["node_modules"]}, -) - -### BAZEL -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") - -http_archive( - name = "io_bazel_rules_go", - sha256 = "08c3cd71857d58af3cda759112437d9e63339ac9c6e0042add43f4d94caf632d", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.24.2/rules_go-v0.24.2.tar.gz", - "https://github.com/bazelbuild/rules_go/releases/download/v0.24.2/rules_go-v0.24.2.tar.gz", - ], -) - -http_archive( - name = "bazel_gazelle", - sha256 = "d4113967ab451dd4d2d767c3ca5f927fec4b30f3b2c6f8135a2033b9c05a5687", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.22.0/bazel-gazelle-v0.22.0.tar.gz", - "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.22.0/bazel-gazelle-v0.22.0.tar.gz", - ], -) - -http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "f2194102720e662dbf193546585d705e645314319554c6ce7e47d8b59f459e9c", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.2.2/rules_nodejs-2.2.2.tar.gz"], -) - -git_repository( - name = "io_bazel_rules_docker", - commit = "2083be6214ac15afbabe397726f685b61bec746b", - remote = "https://github.com/bazelbuild/rules_docker.git", - shallow_since = "1601573082 -0400", -) - -http_archive( - name = "rules_proto", - sha256 = "602e7161d9195e50246177e7c55b2f39950a9cf7366f74ed5f22fd45750cd208", - strip_prefix = "rules_proto-97d8af4dc474595af3900dd85cb3a29ad28cc313", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_proto/archive/97d8af4dc474595af3900dd85cb3a29ad28cc313.tar.gz", - "https://github.com/bazelbuild/rules_proto/archive/97d8af4dc474595af3900dd85cb3a29ad28cc313.tar.gz", - ], -) - -### NODE - -load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install") - -yarn_install( - name = "npm", - package_json = "//:package.json", - yarn_lock = "//:yarn.lock", -) - -### PROTO -load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains") - -rules_proto_dependencies() - -rules_proto_toolchains() - -### GO -load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") -load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") -load("//:go_dependencies.bzl", "go_repositories") - -# gazelle:repository_macro go_dependencies.bzl%go_repositories -go_repositories() - -go_rules_dependencies() - -go_register_toolchains() - -gazelle_dependencies() - -### DOCKER/CONTAINER -# Must be last -load( - "@io_bazel_rules_docker//repositories:repositories.bzl", - container_repositories = "repositories", -) - -container_repositories() - -load( - "@io_bazel_rules_docker//go:image.bzl", - _go_image_repos = "repositories", -) - -_go_image_repos() - -load( - "@io_bazel_rules_docker//nodejs:image.bzl", - _nodejs_image_repos = "repositories", -) - -_nodejs_image_repos() - -load("@io_bazel_rules_docker//repositories:deps.bzl", container_deps = "deps") - -container_deps() - -load("@io_bazel_rules_docker//repositories:pip_repositories.bzl", "pip_deps") - -pip_deps() - -load("@io_bazel_rules_docker//container:container.bzl", "container_pull") - -container_pull( - name = "devcontainergo", - digest = "sha256:040d6ace87ea63292045155b4b2c1df27ddf41f9d4d7a6afce753c8054838cab", - registry = "mcr.microsoft.com", - repository = "vscode/devcontainers/go", - tag = "1.15", -) diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..21e3154 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,16 @@ +# This is the Docker Compose for setting up a local dev environment. +# Production uses PaaS equivalents in Google Cloud +version: '3.8' + +services: + firestore: + image: mtlynch/firestore-emulator + environment: + FIRESTORE_PROJECT_ID: roleypoly-00000000 + ports: + - 6691:8080 + + redis: + image: redis:5-alpine + ports: + - 6692:6379 diff --git a/docs/user-stories.md b/docs/user-stories.md new file mode 100644 index 0000000..ab1fc97 --- /dev/null +++ b/docs/user-stories.md @@ -0,0 +1,125 @@ +# User Stories + +Loose doc defining end-to-end functionality for Roleypoly. Each slice has a cloud function or bot handler attached. + +Legend + +- (Hot) - Denotes cachable data stored for a short time, 2 minutes. + - Typical use cases: User roles; anything volatile. +- (Warm) - Denotes cachable data stored for a medium time, 10 minutes. + - Typical use cases: Guild roles; anything unlikely to change, but not painful to query. +- (Cold) - Denotes cachable data stored for a long time, 1 hour. + - Typical use cases: Guild lists for a session; anything very unlikely to change, and commonly used. +- (Sec) - Security-minded data. Should never reach end-users. + - Typical use cases: Access tokens + +## Primary + +### Logged-in Index + +As a user, I'd like to see all the servers I am in that can be used with the app. + +- Type: Function +- Auth Level: User +- Flow Type: JSON API +- Data: + - User Current Guilds (Cold) + +### Server Role Picker View + +As a user, I'd like to see all of the roles I can select in a previously set up server. + +- Type: Function +- Auth Level: User +- Flow Type: JSON API +- Data: + - User Current Guilds (Cold) + - Guild Roles (Warm) + - User Roles (Hot) + - Guild Customization (Cold) + +### Server Role Picker Action + +As a user, I'd like to select roles that have been selected in the role picker view for a server. + +- Type: Function +- Auth Level: User +- Flow Type: JSON API +- Data: + - User Current Guilds (Cold) + - Guild Roles (Warm) + - User Roles (Hot) + +### Server Editor View + +As an admin, I'd like to see all of the settings and options for a server. + +- Type: Function +- Auth Level: Admin +- Flow Type: JSON API +- Data: + - User Current Guilds (Cold) + - Guild Roles (Warm) + - Guild Customization (Cold) + +### Server Editor Action + +As an admin, I'd like to save settings and options that I have set within the editor view. + +- Type: Function +- Auth Level: Admin +- Flow Type: JSON API +- Data: + - User Current Guilds (Cold) + - Guild Roles (Warm) + - Guild Customization (Cold) + +### Session Pre-warming + +As a user, I'd like to warm the cache with my current guild list after I log in. + +- Type: Function +- Auth Level: User +- Flow Type: Bounces +- Data: + - User Current Guilds (Cold) + +### Login + +As a guest, I'd like to login with Discord so I can be authenticated as a user. + +- Type: Function +- Auth Level: Guest +- Flow Type: OAuth, Bounces +- Data: + - Access Tokens (Sec) + +### Logout + +As a user, I'd like to revoke my authentication details. + +- Type: Function +- Auth Level: User +- Flow Type: OAuth +- Data: + - Access Tokens (Sec) + +### Bot Mention + +As a discord user, I'd like to mention Roleypoly's bot account to get a link to my editor view. + +- Type: Bot Responder +- Auth Level: N/A +- Flow Type: Command +- Data: + - None + +### Bot Join + +As a discord server admin, I'd like to follow the flow for adding Roleypoly to my server. + +- Type: Function +- Auth Level: Guest +- Flow Type: OAuth +- Data: + - None diff --git a/go.mod b/go.mod index 3c991df..fad2682 100644 --- a/go.mod +++ b/go.mod @@ -5,13 +5,8 @@ go 1.15 require ( github.com/bwmarrin/discordgo v0.22.0 github.com/dghubble/trie v0.0.0-20201011220304-ed6d6b8add55 - github.com/facebook/ent v0.4.3 - github.com/google/go-github/v32 v32.1.0 github.com/joho/godotenv v1.3.0 - github.com/julienschmidt/httprouter v1.3.0 github.com/lampjaw/discordclient v0.0.0-20200923011548-6558fc9e89df - github.com/segmentio/ksuid v1.0.3 - go.uber.org/fx v1.13.1 - golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 + github.com/onsi/gomega v1.10.3 k8s.io/klog v1.0.0 ) diff --git a/go.sum b/go.sum index 965f927..581fb2d 100644 --- a/go.sum +++ b/go.sum @@ -1,545 +1,75 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -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/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/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -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= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60= -github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/bwmarrin/discordgo v0.22.0 h1:uBxY1HmlVCsW1IuaPjpCGT6A2DBwRn0nvOguQIxDdFM= github.com/bwmarrin/discordgo v0.22.0/go.mod h1:c1WtWUGN6nREDmzIpyTp/iD3VYt4Fpx+bVyfBG7JE+M= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dghubble/trie v0.0.0-20201011220304-ed6d6b8add55 h1:3yKntgWb7KwnHd4nCVgCIUNQs4qRdua+jitRqGMxKys= github.com/dghubble/trie v0.0.0-20201011220304-ed6d6b8add55/go.mod h1:xNBeoT4V92/aNvuC3IJ2g59uxuKP4/kzvkpoHrb7v4A= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/facebook/ent v0.4.3 h1:ds9HENceKzpGBgCRlkZNq6TqBIegwKcF3e5reuV9Z0M= -github.com/facebook/ent v0.4.3/go.mod h1:4e/LKv3FFjj/867jPJYCxycZg0aGeEIgkiQ8jv2j6iQ= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-bindata/go-bindata v1.0.1-0.20190711162640-ee3c2418e368/go.mod h1:7xCgX1lzlrXPHkfvn3EhumqHkmSlzt8at9q7v0ax19c= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-openapi/inflect v0.19.0 h1:9jCH9scKIbHeV9m12SmPilScz6krDxKRasNNSNPXu/4= -github.com/go-openapi/inflect v0.19.0/go.mod h1:lHpZVlpIQqLyKwJ4N+YSc9hchQy/i12fJykb83CRBH4= -github.com/go-sql-driver/mysql v1.5.1-0.20200311113236-681ffa848bae/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-github/v32 v32.1.0 h1:GWkQOdXqviCPx7Q7Fj+KyPoGm4SwHRh8rheoPhd27II= -github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= -github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/lampjaw/discordclient v0.0.0-20200923011548-6558fc9e89df h1:Y2o9fEOoAYjCw8IDyxUVaBq44AUbOLyPnYSPpM6Ef3M= github.com/lampjaw/discordclient v0.0.0-20200923011548-6558fc9e89df/go.mod h1:lOfqvGl1HcXws86Sczusw1DyV5d0KHPtTTtdjneekto= -github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-sqlite3 v1.14.3/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/segmentio/ksuid v1.0.3 h1:FoResxvleQwYiPAVKe1tMUlEirodZqlqglIuFsdDntY= -github.com/segmentio/ksuid v1.0.3/go.mod h1:/XUiZBD3kVx5SmUOl55voK5yeAbBNNIed+2O73XgrPE= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/dig v1.10.0 h1:yLmDDj9/zuDjv3gz8GQGviXMs9TfysIUMUilCpgzUJY= -go.uber.org/dig v1.10.0/go.mod h1:X34SnWGr8Fyla9zQNO2GSO2D+TIuqB14OS8JhYocIyw= -go.uber.org/fx v1.13.1 h1:CFNTr1oin5OJ0VCZ8EycL3wzF29Jz2g0xe55RFsf2a4= -go.uber.org/fx v1.13.1/go.mod h1:bREWhavnedxpJeTq9pQT53BbvwhUv7TcpsOqcH4a+3w= -go.uber.org/goleak v0.10.0 h1:G3eWbSNIskeRqtsN/1uI5B+eP73y3JUuBsv9AZjehb4= -go.uber.org/goleak v0.10.0/go.mod h1:VCZuO8V8mFPlL0F5J5GK1rtHV3DrFcQ1R8ryq7FK0aI= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.4.0 h1:f3WCSC2KzAcBXGATIxAB1E2XuCpNU255wNKZ505qi3E= -go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0 h1:wBouT66WTYFXdxfVdz9sVWARVd/2vfGcmI45D2gj45M= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= 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= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642 h1:B6caxRw+hozq68X2MY7jEpZh/cr4/aHLv9xU8Kkadrw= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -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/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/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= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191030062658-86caa796c7ab/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191114200427-caa0b0f7d508/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858 h1:xLt+iB5ksWcZVxqc+g9K41ZHy+6MKWfXCDsjSThnsPA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= 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= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/go_dependencies.bzl b/go_dependencies.bzl deleted file mode 100644 index 65976a3..0000000 --- a/go_dependencies.bzl +++ /dev/null @@ -1,1003 +0,0 @@ -load("@bazel_gazelle//:deps.bzl", "go_repository") - -def go_repositories(): - go_repository( - name = "co_honnef_go_tools", - importpath = "honnef.co/go/tools", - sum = "h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=", - version = "v0.0.1-2020.1.4", - ) - go_repository( - name = "com_github_alecthomas_template", - importpath = "github.com/alecthomas/template", - sum = "h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU=", - version = "v0.0.0-20160405071501-a0175ee3bccc", - ) - go_repository( - name = "com_github_alecthomas_units", - importpath = "github.com/alecthomas/units", - sum = "h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY=", - version = "v0.0.0-20151022065526-2efee857e7cf", - ) - go_repository( - name = "com_github_armon_consul_api", - importpath = "github.com/armon/consul-api", - sum = "h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA=", - version = "v0.0.0-20180202201655-eb2c6b5be1b6", - ) - go_repository( - name = "com_github_beorn7_perks", - importpath = "github.com/beorn7/perks", - sum = "h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_burntsushi_toml", - importpath = "github.com/BurntSushi/toml", - sum = "h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=", - version = "v0.3.1", - ) - go_repository( - name = "com_github_burntsushi_xgb", - importpath = "github.com/BurntSushi/xgb", - sum = "h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc=", - version = "v0.0.0-20160522181843-27f122750802", - ) - - go_repository( - name = "com_github_bwmarrin_discordgo", - importpath = "github.com/bwmarrin/discordgo", - sum = "h1:uBxY1HmlVCsW1IuaPjpCGT6A2DBwRn0nvOguQIxDdFM=", - version = "v0.22.0", - ) - go_repository( - name = "com_github_census_instrumentation_opencensus_proto", - importpath = "github.com/census-instrumentation/opencensus-proto", - sum = "h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk=", - version = "v0.2.1", - ) - - go_repository( - name = "com_github_cespare_xxhash", - importpath = "github.com/cespare/xxhash", - sum = "h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=", - version = "v1.1.0", - ) - go_repository( - name = "com_github_chzyer_logex", - importpath = "github.com/chzyer/logex", - sum = "h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=", - version = "v1.1.10", - ) - go_repository( - name = "com_github_chzyer_readline", - importpath = "github.com/chzyer/readline", - sum = "h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=", - version = "v0.0.0-20180603132655-2972be24d48e", - ) - go_repository( - name = "com_github_chzyer_test", - importpath = "github.com/chzyer/test", - sum = "h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=", - version = "v0.0.0-20180213035817-a1ea475d72b1", - ) - - go_repository( - name = "com_github_client9_misspell", - importpath = "github.com/client9/misspell", - sum = "h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI=", - version = "v0.3.4", - ) - go_repository( - name = "com_github_cncf_udpa_go", - importpath = "github.com/cncf/udpa/go", - sum = "h1:WBZRG4aNOuI15bLRrCgN8fCq8E5Xuty6jGbmSNEvSsU=", - version = "v0.0.0-20191209042840-269d4d468f6f", - ) - - go_repository( - name = "com_github_coreos_bbolt", - importpath = "github.com/coreos/bbolt", - sum = "h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s=", - version = "v1.3.2", - ) - go_repository( - name = "com_github_coreos_etcd", - importpath = "github.com/coreos/etcd", - sum = "h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04=", - version = "v3.3.10+incompatible", - ) - go_repository( - name = "com_github_coreos_go_semver", - importpath = "github.com/coreos/go-semver", - sum = "h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY=", - version = "v0.2.0", - ) - go_repository( - name = "com_github_coreos_go_systemd", - importpath = "github.com/coreos/go-systemd", - sum = "h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8=", - version = "v0.0.0-20190321100706-95778dfbb74e", - ) - go_repository( - name = "com_github_coreos_pkg", - importpath = "github.com/coreos/pkg", - sum = "h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg=", - version = "v0.0.0-20180928190104-399ea9e2e55f", - ) - go_repository( - name = "com_github_cpuguy83_go_md2man_v2", - importpath = "github.com/cpuguy83/go-md2man/v2", - sum = "h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM=", - version = "v2.0.0", - ) - go_repository( - name = "com_github_data_dog_go_sqlmock", - importpath = "github.com/DATA-DOG/go-sqlmock", - sum = "h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=", - version = "v1.5.0", - ) - go_repository( - name = "com_github_davecgh_go_spew", - importpath = "github.com/davecgh/go-spew", - sum = "h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=", - version = "v1.1.1", - ) - go_repository( - name = "com_github_dghubble_trie", - importpath = "github.com/dghubble/trie", - sum = "h1:3yKntgWb7KwnHd4nCVgCIUNQs4qRdua+jitRqGMxKys=", - version = "v0.0.0-20201011220304-ed6d6b8add55", - ) - go_repository( - name = "com_github_dgrijalva_jwt_go", - importpath = "github.com/dgrijalva/jwt-go", - sum = "h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=", - version = "v3.2.0+incompatible", - ) - go_repository( - name = "com_github_dgryski_go_sip13", - importpath = "github.com/dgryski/go-sip13", - sum = "h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4=", - version = "v0.0.0-20181026042036-e10d5fee7954", - ) - go_repository( - name = "com_github_envoyproxy_go_control_plane", - importpath = "github.com/envoyproxy/go-control-plane", - sum = "h1:rEvIZUSZ3fx39WIi3JkQqQBitGwpELBIYWeBVh6wn+E=", - version = "v0.9.4", - ) - go_repository( - name = "com_github_envoyproxy_protoc_gen_validate", - importpath = "github.com/envoyproxy/protoc-gen-validate", - sum = "h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A=", - version = "v0.1.0", - ) - - go_repository( - name = "com_github_facebook_ent", - importpath = "github.com/facebook/ent", - sum = "h1:ds9HENceKzpGBgCRlkZNq6TqBIegwKcF3e5reuV9Z0M=", - version = "v0.4.3", - ) - go_repository( - name = "com_github_fsnotify_fsnotify", - importpath = "github.com/fsnotify/fsnotify", - sum = "h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=", - version = "v1.4.7", - ) - go_repository( - name = "com_github_ghodss_yaml", - importpath = "github.com/ghodss/yaml", - sum = "h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_go_bindata_go_bindata", - importpath = "github.com/go-bindata/go-bindata", - sum = "h1:WNHfSP1q2vuAa9vF54RrhCl4nqxCjVcXhlbsRXbGOSY=", - version = "v1.0.1-0.20190711162640-ee3c2418e368", - ) - go_repository( - name = "com_github_go_gl_glfw", - importpath = "github.com/go-gl/glfw", - sum = "h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0=", - version = "v0.0.0-20190409004039-e6da0acd62b1", - ) - go_repository( - name = "com_github_go_gl_glfw_v3_3_glfw", - importpath = "github.com/go-gl/glfw/v3.3/glfw", - sum = "h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I=", - version = "v0.0.0-20200222043503-6f7a984d4dc4", - ) - - go_repository( - name = "com_github_go_kit_kit", - importpath = "github.com/go-kit/kit", - sum = "h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0=", - version = "v0.8.0", - ) - go_repository( - name = "com_github_go_logfmt_logfmt", - importpath = "github.com/go-logfmt/logfmt", - sum = "h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA=", - version = "v0.4.0", - ) - go_repository( - name = "com_github_go_logr_logr", - importpath = "github.com/go-logr/logr", - sum = "h1:M1Tv3VzNlEHg6uyACnRdtrploV2P7wZqH8BoQMtz0cg=", - version = "v0.1.0", - ) - go_repository( - name = "com_github_go_openapi_inflect", - importpath = "github.com/go-openapi/inflect", - sum = "h1:9jCH9scKIbHeV9m12SmPilScz6krDxKRasNNSNPXu/4=", - version = "v0.19.0", - ) - go_repository( - name = "com_github_go_sql_driver_mysql", - importpath = "github.com/go-sql-driver/mysql", - sum = "h1:L6V0ANsMIMdLgXly241UXhXNFWYgXbgjHupTAAURrV0=", - version = "v1.5.1-0.20200311113236-681ffa848bae", - ) - go_repository( - name = "com_github_go_stack_stack", - importpath = "github.com/go-stack/stack", - sum = "h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=", - version = "v1.8.0", - ) - go_repository( - name = "com_github_gogo_protobuf", - importpath = "github.com/gogo/protobuf", - sum = "h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE=", - version = "v1.2.1", - ) - go_repository( - name = "com_github_golang_glog", - importpath = "github.com/golang/glog", - sum = "h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=", - version = "v0.0.0-20160126235308-23def4e6c14b", - ) - go_repository( - name = "com_github_golang_groupcache", - importpath = "github.com/golang/groupcache", - sum = "h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=", - version = "v0.0.0-20200121045136-8c9f03a8e57e", - ) - go_repository( - name = "com_github_golang_mock", - importpath = "github.com/golang/mock", - sum = "h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc=", - version = "v1.4.4", - ) - go_repository( - name = "com_github_golang_protobuf", - importpath = "github.com/golang/protobuf", - sum = "h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=", - version = "v1.4.2", - ) - go_repository( - name = "com_github_google_btree", - importpath = "github.com/google/btree", - sum = "h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_google_go_cmp", - importpath = "github.com/google/go-cmp", - sum = "h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k=", - version = "v0.5.1", - ) - go_repository( - name = "com_github_google_go_github_v32", - importpath = "github.com/google/go-github/v32", - sum = "h1:GWkQOdXqviCPx7Q7Fj+KyPoGm4SwHRh8rheoPhd27II=", - version = "v32.1.0", - ) - go_repository( - name = "com_github_google_go_querystring", - importpath = "github.com/google/go-querystring", - sum = "h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_google_gofuzz", - importpath = "github.com/google/gofuzz", - sum = "h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_google_martian", - importpath = "github.com/google/martian", - sum = "h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=", - version = "v2.1.0+incompatible", - ) - go_repository( - name = "com_github_google_martian_v3", - importpath = "github.com/google/martian/v3", - sum = "h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs=", - version = "v3.0.0", - ) - go_repository( - name = "com_github_google_pprof", - importpath = "github.com/google/pprof", - sum = "h1:Ak8CrdlwwXwAZxzS66vgPt4U8yUZX7JwLvVR58FN5jM=", - version = "v0.0.0-20200708004538-1a94d8640e99", - ) - - go_repository( - name = "com_github_google_renameio", - importpath = "github.com/google/renameio", - sum = "h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA=", - version = "v0.1.0", - ) - go_repository( - name = "com_github_google_uuid", - importpath = "github.com/google/uuid", - sum = "h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=", - version = "v1.1.2", - ) - go_repository( - name = "com_github_googleapis_gax_go_v2", - importpath = "github.com/googleapis/gax-go/v2", - sum = "h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=", - version = "v2.0.5", - ) - - go_repository( - name = "com_github_gorilla_websocket", - importpath = "github.com/gorilla/websocket", - sum = "h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=", - version = "v1.4.2", - ) - go_repository( - name = "com_github_grpc_ecosystem_go_grpc_middleware", - importpath = "github.com/grpc-ecosystem/go-grpc-middleware", - sum = "h1:Iju5GlWwrvL6UBg4zJJt3btmonfrMlCDdsejg4CZE7c=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_grpc_ecosystem_go_grpc_prometheus", - importpath = "github.com/grpc-ecosystem/go-grpc-prometheus", - sum = "h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=", - version = "v1.2.0", - ) - go_repository( - name = "com_github_grpc_ecosystem_grpc_gateway", - importpath = "github.com/grpc-ecosystem/grpc-gateway", - sum = "h1:bM6ZAFZmc/wPFaRDi0d5L7hGEZEx/2u+Tmr2evNHDiI=", - version = "v1.9.0", - ) - go_repository( - name = "com_github_hashicorp_golang_lru", - importpath = "github.com/hashicorp/golang-lru", - sum = "h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=", - version = "v0.5.1", - ) - - go_repository( - name = "com_github_hashicorp_hcl", - importpath = "github.com/hashicorp/hcl", - sum = "h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_ianlancetaylor_demangle", - importpath = "github.com/ianlancetaylor/demangle", - sum = "h1:UDMh68UUwekSh5iP2OMhRRZJiiBccgV7axzUG8vi56c=", - version = "v0.0.0-20181102032728-5e5cf60278f6", - ) - - go_repository( - name = "com_github_inconshreveable_mousetrap", - importpath = "github.com/inconshreveable/mousetrap", - sum = "h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_jessevdk_go_flags", - importpath = "github.com/jessevdk/go-flags", - sum = "h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA=", - version = "v1.4.0", - ) - go_repository( - name = "com_github_joho_godotenv", - importpath = "github.com/joho/godotenv", - sum = "h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=", - version = "v1.3.0", - ) - go_repository( - name = "com_github_jonboulle_clockwork", - importpath = "github.com/jonboulle/clockwork", - sum = "h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=", - version = "v0.1.0", - ) - go_repository( - name = "com_github_json_iterator_go", - importpath = "github.com/json-iterator/go", - sum = "h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=", - version = "v1.1.10", - ) - go_repository( - name = "com_github_jstemmer_go_junit_report", - importpath = "github.com/jstemmer/go-junit-report", - sum = "h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=", - version = "v0.9.1", - ) - - go_repository( - name = "com_github_julienschmidt_httprouter", - importpath = "github.com/julienschmidt/httprouter", - sum = "h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=", - version = "v1.3.0", - ) - go_repository( - name = "com_github_kisielk_errcheck", - importpath = "github.com/kisielk/errcheck", - sum = "h1:reN85Pxc5larApoH1keMBiu2GWtPqXQ1nc9gx+jOU+E=", - version = "v1.2.0", - ) - go_repository( - name = "com_github_kisielk_gotool", - importpath = "github.com/kisielk/gotool", - sum = "h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_konsorten_go_windows_terminal_sequences", - importpath = "github.com/konsorten/go-windows-terminal-sequences", - sum = "h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=", - version = "v1.0.1", - ) - go_repository( - name = "com_github_kr_logfmt", - importpath = "github.com/kr/logfmt", - sum = "h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY=", - version = "v0.0.0-20140226030751-b84e30acd515", - ) - go_repository( - name = "com_github_kr_pretty", - importpath = "github.com/kr/pretty", - sum = "h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=", - version = "v0.1.0", - ) - go_repository( - name = "com_github_kr_pty", - importpath = "github.com/kr/pty", - sum = "h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw=", - version = "v1.1.1", - ) - go_repository( - name = "com_github_kr_text", - importpath = "github.com/kr/text", - sum = "h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=", - version = "v0.1.0", - ) - go_repository( - name = "com_github_lampjaw_discordclient", - importpath = "github.com/lampjaw/discordclient", - sum = "h1:Y2o9fEOoAYjCw8IDyxUVaBq44AUbOLyPnYSPpM6Ef3M=", - version = "v0.0.0-20200923011548-6558fc9e89df", - ) - go_repository( - name = "com_github_lib_pq", - importpath = "github.com/lib/pq", - sum = "h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg=", - version = "v1.8.0", - ) - go_repository( - name = "com_github_magiconair_properties", - importpath = "github.com/magiconair/properties", - sum = "h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=", - version = "v1.8.0", - ) - go_repository( - name = "com_github_mattn_go_runewidth", - importpath = "github.com/mattn/go-runewidth", - sum = "h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=", - version = "v0.0.9", - ) - go_repository( - name = "com_github_mattn_go_sqlite3", - importpath = "github.com/mattn/go-sqlite3", - sum = "h1:j7a/xn1U6TKA/PHHxqZuzh64CdtRc7rU9M+AvkOl5bA=", - version = "v1.14.3", - ) - go_repository( - name = "com_github_matttproud_golang_protobuf_extensions", - importpath = "github.com/matttproud/golang_protobuf_extensions", - sum = "h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=", - version = "v1.0.1", - ) - go_repository( - name = "com_github_mitchellh_go_homedir", - importpath = "github.com/mitchellh/go-homedir", - sum = "h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=", - version = "v1.1.0", - ) - go_repository( - name = "com_github_mitchellh_mapstructure", - importpath = "github.com/mitchellh/mapstructure", - sum = "h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8=", - version = "v1.3.3", - ) - go_repository( - name = "com_github_modern_go_concurrent", - importpath = "github.com/modern-go/concurrent", - sum = "h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=", - version = "v0.0.0-20180306012644-bacd9c7ef1dd", - ) - go_repository( - name = "com_github_modern_go_reflect2", - importpath = "github.com/modern-go/reflect2", - sum = "h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=", - version = "v1.0.1", - ) - go_repository( - name = "com_github_mwitkow_go_conntrack", - importpath = "github.com/mwitkow/go-conntrack", - sum = "h1:F9x/1yl3T2AeKLr2AMdilSD8+f9bvMnNN8VS5iDtovc=", - version = "v0.0.0-20161129095857-cc309e4a2223", - ) - go_repository( - name = "com_github_oklog_ulid", - importpath = "github.com/oklog/ulid", - sum = "h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=", - version = "v1.3.1", - ) - go_repository( - name = "com_github_olekukonko_tablewriter", - importpath = "github.com/olekukonko/tablewriter", - sum = "h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8=", - version = "v0.0.4", - ) - go_repository( - name = "com_github_oneofone_xxhash", - importpath = "github.com/OneOfOne/xxhash", - sum = "h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=", - version = "v1.2.2", - ) - go_repository( - name = "com_github_pelletier_go_toml", - importpath = "github.com/pelletier/go-toml", - sum = "h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=", - version = "v1.2.0", - ) - go_repository( - name = "com_github_pkg_errors", - importpath = "github.com/pkg/errors", - sum = "h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=", - version = "v0.9.1", - ) - go_repository( - name = "com_github_pmezard_go_difflib", - importpath = "github.com/pmezard/go-difflib", - sum = "h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_prometheus_client_golang", - importpath = "github.com/prometheus/client_golang", - sum = "h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8=", - version = "v0.9.3", - ) - go_repository( - name = "com_github_prometheus_client_model", - importpath = "github.com/prometheus/client_model", - sum = "h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM=", - version = "v0.0.0-20190812154241-14fe0d1b01d4", - ) - go_repository( - name = "com_github_prometheus_common", - importpath = "github.com/prometheus/common", - sum = "h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM=", - version = "v0.4.0", - ) - go_repository( - name = "com_github_prometheus_procfs", - importpath = "github.com/prometheus/procfs", - sum = "h1:sofwID9zm4tzrgykg80hfFph1mryUeLRsUfoocVVmRY=", - version = "v0.0.0-20190507164030-5867b95ac084", - ) - go_repository( - name = "com_github_prometheus_tsdb", - importpath = "github.com/prometheus/tsdb", - sum = "h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA=", - version = "v0.7.1", - ) - go_repository( - name = "com_github_rogpeppe_fastuuid", - importpath = "github.com/rogpeppe/fastuuid", - sum = "h1:gu+uRPtBe88sKxUCEXRoeCvVG90TJmwhiqRpvdhQFng=", - version = "v0.0.0-20150106093220-6724a57986af", - ) - go_repository( - name = "com_github_rogpeppe_go_internal", - importpath = "github.com/rogpeppe/go-internal", - sum = "h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk=", - version = "v1.3.0", - ) - go_repository( - name = "com_github_russross_blackfriday_v2", - importpath = "github.com/russross/blackfriday/v2", - sum = "h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=", - version = "v2.0.1", - ) - go_repository( - name = "com_github_segmentio_ksuid", - importpath = "github.com/segmentio/ksuid", - sum = "h1:FoResxvleQwYiPAVKe1tMUlEirodZqlqglIuFsdDntY=", - version = "v1.0.3", - ) - go_repository( - name = "com_github_shurcool_sanitized_anchor_name", - importpath = "github.com/shurcooL/sanitized_anchor_name", - sum = "h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_sirupsen_logrus", - importpath = "github.com/sirupsen/logrus", - sum = "h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo=", - version = "v1.2.0", - ) - go_repository( - name = "com_github_soheilhy_cmux", - importpath = "github.com/soheilhy/cmux", - sum = "h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=", - version = "v0.1.4", - ) - go_repository( - name = "com_github_spaolacci_murmur3", - importpath = "github.com/spaolacci/murmur3", - sum = "h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=", - version = "v0.0.0-20180118202830-f09979ecbc72", - ) - go_repository( - name = "com_github_spf13_afero", - importpath = "github.com/spf13/afero", - sum = "h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI=", - version = "v1.1.2", - ) - go_repository( - name = "com_github_spf13_cast", - importpath = "github.com/spf13/cast", - sum = "h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=", - version = "v1.3.0", - ) - go_repository( - name = "com_github_spf13_cobra", - importpath = "github.com/spf13/cobra", - sum = "h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_spf13_jwalterweatherman", - importpath = "github.com/spf13/jwalterweatherman", - sum = "h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=", - version = "v1.0.0", - ) - go_repository( - name = "com_github_spf13_pflag", - importpath = "github.com/spf13/pflag", - sum = "h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=", - version = "v1.0.5", - ) - go_repository( - name = "com_github_spf13_viper", - importpath = "github.com/spf13/viper", - sum = "h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU=", - version = "v1.4.0", - ) - go_repository( - name = "com_github_stretchr_objx", - importpath = "github.com/stretchr/objx", - sum = "h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=", - version = "v0.2.0", - ) - go_repository( - name = "com_github_stretchr_testify", - importpath = "github.com/stretchr/testify", - sum = "h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=", - version = "v1.6.1", - ) - go_repository( - name = "com_github_tmc_grpc_websocket_proxy", - importpath = "github.com/tmc/grpc-websocket-proxy", - sum = "h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ=", - version = "v0.0.0-20190109142713-0ad062ec5ee5", - ) - go_repository( - name = "com_github_ugorji_go", - importpath = "github.com/ugorji/go", - sum = "h1:j4s+tAvLfL3bZyefP2SEWmhBzmuIlH/eqNuPdFPgngw=", - version = "v1.1.4", - ) - go_repository( - name = "com_github_xiang90_probing", - importpath = "github.com/xiang90/probing", - sum = "h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=", - version = "v0.0.0-20190116061207-43a291ad63a2", - ) - go_repository( - name = "com_github_xordataexchange_crypt", - importpath = "github.com/xordataexchange/crypt", - sum = "h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow=", - version = "v0.0.3-0.20170626215501-b2862e3d0a77", - ) - go_repository( - name = "com_github_yuin_goldmark", - importpath = "github.com/yuin/goldmark", - sum = "h1:ruQGxdhGHe7FWOJPT0mKs5+pD2Xs1Bm/kdGlHO04FmM=", - version = "v1.2.1", - ) - go_repository( - name = "com_google_cloud_go", - importpath = "cloud.google.com/go", - sum = "h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8=", - version = "v0.65.0", - ) - go_repository( - name = "com_google_cloud_go_bigquery", - importpath = "cloud.google.com/go/bigquery", - sum = "h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA=", - version = "v1.8.0", - ) - go_repository( - name = "com_google_cloud_go_datastore", - importpath = "cloud.google.com/go/datastore", - sum = "h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ=", - version = "v1.1.0", - ) - go_repository( - name = "com_google_cloud_go_pubsub", - importpath = "cloud.google.com/go/pubsub", - sum = "h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU=", - version = "v1.3.1", - ) - go_repository( - name = "com_google_cloud_go_storage", - importpath = "cloud.google.com/go/storage", - sum = "h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA=", - version = "v1.10.0", - ) - go_repository( - name = "com_shuralyov_dmitri_gpu_mtl", - importpath = "dmitri.shuralyov.com/gpu/mtl", - sum = "h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY=", - version = "v0.0.0-20190408044501-666a987793e9", - ) - - go_repository( - name = "in_gopkg_alecthomas_kingpin_v2", - importpath = "gopkg.in/alecthomas/kingpin.v2", - sum = "h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=", - version = "v2.2.6", - ) - go_repository( - name = "in_gopkg_check_v1", - importpath = "gopkg.in/check.v1", - sum = "h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=", - version = "v1.0.0-20180628173108-788fd7840127", - ) - go_repository( - name = "in_gopkg_errgo_v2", - importpath = "gopkg.in/errgo.v2", - sum = "h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8=", - version = "v2.1.0", - ) - go_repository( - name = "in_gopkg_resty_v1", - importpath = "gopkg.in/resty.v1", - sum = "h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=", - version = "v1.12.0", - ) - go_repository( - name = "in_gopkg_yaml_v2", - importpath = "gopkg.in/yaml.v2", - sum = "h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=", - version = "v2.2.2", - ) - go_repository( - name = "in_gopkg_yaml_v3", - importpath = "gopkg.in/yaml.v3", - sum = "h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=", - version = "v3.0.0-20200313102051-9f266ea9e77c", - ) - go_repository( - name = "io_etcd_go_bbolt", - importpath = "go.etcd.io/bbolt", - sum = "h1:Z/90sZLPOeCy2PwprqkFa25PdkusRzaj9P8zm/KNyvk=", - version = "v1.3.2", - ) - go_repository( - name = "io_k8s_klog", - importpath = "k8s.io/klog", - sum = "h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=", - version = "v1.0.0", - ) - go_repository( - name = "io_opencensus_go", - importpath = "go.opencensus.io", - sum = "h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto=", - version = "v0.22.4", - ) - go_repository( - name = "io_rsc_binaryregexp", - importpath = "rsc.io/binaryregexp", - sum = "h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=", - version = "v0.2.0", - ) - go_repository( - name = "io_rsc_quote_v3", - importpath = "rsc.io/quote/v3", - sum = "h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=", - version = "v3.1.0", - ) - go_repository( - name = "io_rsc_sampler", - importpath = "rsc.io/sampler", - sum = "h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=", - version = "v1.3.0", - ) - go_repository( - name = "org_golang_google_api", - importpath = "google.golang.org/api", - sum = "h1:yfrXXP61wVuLb0vBcG6qaOoIoqYEzOQS8jum51jkv2w=", - version = "v0.30.0", - ) - - go_repository( - name = "org_golang_google_appengine", - importpath = "google.golang.org/appengine", - sum = "h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc=", - version = "v1.6.6", - ) - go_repository( - name = "org_golang_google_genproto", - importpath = "google.golang.org/genproto", - sum = "h1:PDIOdWxZ8eRizhKa1AAvY53xsvLB1cWorMjslvY3VA8=", - version = "v0.0.0-20200825200019-8632dd797987", - ) - go_repository( - name = "org_golang_google_grpc", - importpath = "google.golang.org/grpc", - sum = "h1:T7P4R73V3SSDPhH7WW7ATbfViLtmamH0DKrP3f9AuDI=", - version = "v1.31.0", - ) - go_repository( - name = "org_golang_google_protobuf", - importpath = "google.golang.org/protobuf", - sum = "h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=", - version = "v1.25.0", - ) - - go_repository( - name = "org_golang_x_crypto", - importpath = "golang.org/x/crypto", - sum = "h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=", - version = "v0.0.0-20200622213623-75b288015ac9", - ) - go_repository( - name = "org_golang_x_exp", - importpath = "golang.org/x/exp", - sum = "h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y=", - version = "v0.0.0-20200224162631-6cc2880d07d6", - ) - go_repository( - name = "org_golang_x_image", - importpath = "golang.org/x/image", - sum = "h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4=", - version = "v0.0.0-20190802002840-cff245a6509b", - ) - - go_repository( - name = "org_golang_x_lint", - importpath = "golang.org/x/lint", - sum = "h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=", - version = "v0.0.0-20200302205851-738671d3881b", - ) - go_repository( - name = "org_golang_x_mobile", - importpath = "golang.org/x/mobile", - sum = "h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs=", - version = "v0.0.0-20190719004257-d2bd2a29d028", - ) - - go_repository( - name = "org_golang_x_mod", - importpath = "golang.org/x/mod", - sum = "h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=", - version = "v0.3.0", - ) - go_repository( - name = "org_golang_x_net", - importpath = "golang.org/x/net", - sum = "h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA=", - version = "v0.0.0-20200822124328-c89045814202", - ) - go_repository( - name = "org_golang_x_oauth2", - importpath = "golang.org/x/oauth2", - sum = "h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc=", - version = "v0.0.0-20200902213428-5d25da1a8d43", - ) - go_repository( - name = "org_golang_x_sync", - importpath = "golang.org/x/sync", - sum = "h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA=", - version = "v0.0.0-20200625203802-6e8e738ad208", - ) - go_repository( - name = "org_golang_x_sys", - importpath = "golang.org/x/sys", - sum = "h1:B6caxRw+hozq68X2MY7jEpZh/cr4/aHLv9xU8Kkadrw=", - version = "v0.0.0-20200803210538-64077c9b5642", - ) - go_repository( - name = "org_golang_x_text", - importpath = "golang.org/x/text", - sum = "h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=", - version = "v0.3.3", - ) - go_repository( - name = "org_golang_x_time", - importpath = "golang.org/x/time", - sum = "h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=", - version = "v0.0.0-20191024005414-555d28b269f0", - ) - go_repository( - name = "org_golang_x_tools", - importpath = "golang.org/x/tools", - sum = "h1:xLt+iB5ksWcZVxqc+g9K41ZHy+6MKWfXCDsjSThnsPA=", - version = "v0.0.0-20200904185747-39188db58858", - ) - go_repository( - name = "org_golang_x_xerrors", - importpath = "golang.org/x/xerrors", - sum = "h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=", - version = "v0.0.0-20200804184101-5ec99f83aff1", - ) - go_repository( - name = "org_uber_go_atomic", - importpath = "go.uber.org/atomic", - sum = "h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY=", - version = "v1.5.0", - ) - go_repository( - name = "org_uber_go_dig", - importpath = "go.uber.org/dig", - sum = "h1:yLmDDj9/zuDjv3gz8GQGviXMs9TfysIUMUilCpgzUJY=", - version = "v1.10.0", - ) - go_repository( - name = "org_uber_go_fx", - importpath = "go.uber.org/fx", - sum = "h1:CFNTr1oin5OJ0VCZ8EycL3wzF29Jz2g0xe55RFsf2a4=", - version = "v1.13.1", - ) - go_repository( - name = "org_uber_go_goleak", - importpath = "go.uber.org/goleak", - sum = "h1:G3eWbSNIskeRqtsN/1uI5B+eP73y3JUuBsv9AZjehb4=", - version = "v0.10.0", - ) - go_repository( - name = "org_uber_go_multierr", - importpath = "go.uber.org/multierr", - sum = "h1:f3WCSC2KzAcBXGATIxAB1E2XuCpNU255wNKZ505qi3E=", - version = "v1.4.0", - ) - go_repository( - name = "org_uber_go_tools", - importpath = "go.uber.org/tools", - sum = "h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=", - version = "v0.0.0-20190618225709-2cfd321de3ee", - ) - go_repository( - name = "org_uber_go_zap", - importpath = "go.uber.org/zap", - sum = "h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM=", - version = "v1.10.0", - ) diff --git a/hack/bazel/BUILD.bazel b/hack/bazel/BUILD.bazel deleted file mode 100644 index ffd0fb0..0000000 --- a/hack/bazel/BUILD.bazel +++ /dev/null @@ -1 +0,0 @@ -package(default_visibility = ["//visibility:public"]) diff --git a/hack/bazel/docker/BUILD.bazel b/hack/bazel/docker/BUILD.bazel deleted file mode 100644 index ffd0fb0..0000000 --- a/hack/bazel/docker/BUILD.bazel +++ /dev/null @@ -1 +0,0 @@ -package(default_visibility = ["//visibility:public"]) diff --git a/hack/bazel/docker/publish.bzl b/hack/bazel/docker/publish.bzl deleted file mode 100644 index aa0f5d2..0000000 --- a/hack/bazel/docker/publish.bzl +++ /dev/null @@ -1,17 +0,0 @@ -load("@io_bazel_rules_docker//container:container.bzl", "container_push") - -def publish( - service, - name = "+publish", - image = ":image", - prefix = "roleypoly/roleypoly/", - registry = "docker.pkg.github.com", -): - container_push( - name = name, - format = "Docker", - image = image, - registry = registry, - repository = prefix + service, - tag = "{STABLE_URL_SAFE_TAG}", - ) diff --git a/hack/bazel/js/BUILD.bazel b/hack/bazel/js/BUILD.bazel deleted file mode 100644 index ffd0fb0..0000000 --- a/hack/bazel/js/BUILD.bazel +++ /dev/null @@ -1 +0,0 @@ -package(default_visibility = ["//visibility:public"]) diff --git a/hack/bazel/js/jest.bzl b/hack/bazel/js/jest.bzl deleted file mode 100644 index ad70cae..0000000 --- a/hack/bazel/js/jest.bzl +++ /dev/null @@ -1,61 +0,0 @@ -# Copied from https://github.com/bazelbuild/rules_nodejs/blob/stable/examples/jest/jest.bzl -# Licensed under Apache-2.0, modifications made: -# - improved dependency resolution - -load("@npm//jest-cli:index.bzl", "jest", _jest_test = "jest_test") -load("//hack/bazel:utils.bzl", "render_deps") - -DEFAULT_DEPS = [ - "@npm//ts-jest", - "@npm//enzyme", - "@npm//enzyme-adapter-react-16", - "@npm//@types/enzyme", - "@npm//jest-environment-enzyme", - "@npm//jsdom", - "@npm//jest", - "@npm//@types/jest", - "@npm//jest-enzyme", - "@npm//jest-styled-components", - "@npm//enzyme-to-json", - "@npm//react-dom", - "@npm//@types/react-dom", - "@npm//jest-react-hooks-shallow", - "//:tsconfig.json", - "//:hack/jestSetup.ts", -] - -def _impl_jest_test(name, srcs, deps, jest_config, **kwargs): - "A macro around the autogenerated jest_test rule" - templated_args = [ - "--no-cache", - "--no-watchman", - "--ci", - "--no-colors", - ] - templated_args.extend(["--config", "$(rootpath %s)" % jest_config]) - for src in srcs: - templated_args.extend(["--runTestsByPath", "$(rootpath %s)" % src]) - - data = [jest_config] + srcs + deps + ["//:jest-reporter.js"] - _jest_test( - name = name, - data = data, - templated_args = templated_args, - **kwargs - ) - - # This rule is used specifically to update snapshots via `bazel run` - jest( - name = "%s.update" % name, - data = data, - templated_args = templated_args + ["-u"], - **kwargs - ) - -def jest_test(src, deps = []): - _impl_jest_test( - name = src[1:] + "_test", - srcs = native.glob(["*.spec.ts", "*.spec.tsx"]), - deps = [src] + render_deps(deps) + DEFAULT_DEPS, - jest_config = "//:jest.config.js", - ) diff --git a/hack/bazel/js/proto.bzl b/hack/bazel/js/proto.bzl deleted file mode 100644 index 3eb76e1..0000000 --- a/hack/bazel/js/proto.bzl +++ /dev/null @@ -1,36 +0,0 @@ -load("//src/ts-protoc-gen/rules:index.bzl", "typescript_proto_library") -load("@npm//@bazel/typescript:index.bzl", "ts_library") - -def _generalize_pb_imports(name, srcs = [], grpc = False): - suffix_match = "pb" - if grpc: - suffix_match = "" - native.genrule( - name = name, - srcs = srcs, - outs = ["index.ts"], - cmd = """ - echo $(SRCS) | tr ' ' '\n' | grep '""" + suffix_match + """\\.js$$' | xargs -l1 -I '{}' basename {} .js | xargs -l1 -I'{}' echo 'export * from "./{}"' > $(location index.ts) - """, - output_to_bindir = True, - ) - -def ts_proto(proto, name = "ts", grpc = False): - typescript_proto_library( - name = name + "_proto", - proto = proto, - visibility = ["//visibility:public"], - ) - - _generalize_pb_imports( - grpc = grpc, - name = name + "_proto_generalized", - srcs = [":" + name + "_proto"], - ) - - ts_library( - name = name, - srcs = [":" + name + "_proto_generalized"], - deps = [":" + name + "_proto"], - visibility = ["//visibility:public"], - ) diff --git a/hack/bazel/js/react.bzl b/hack/bazel/js/react.bzl deleted file mode 100644 index 5d888de..0000000 --- a/hack/bazel/js/react.bzl +++ /dev/null @@ -1,27 +0,0 @@ -load("@npm//@bazel/typescript:index.bzl", "ts_library") -load("//hack/bazel:utils.bzl", "render_deps") - -DEFAULT_DEPS = [ - "react", - "styled-components", - "@types/react", - "@types/styled-components", -] - -def react_library(name, deps = [], **kwargs): - ts_library( - name = name, - srcs = native.glob( - [ - "*.ts", - "*.tsx", - ], - exclude = native.glob([ - "*.spec.ts*", - "*.story.tsx", - "*.stories.tsx", - ]), - ), - deps = render_deps(deps + DEFAULT_DEPS), - **kwargs - ) diff --git a/hack/bazel/utils.bzl b/hack/bazel/utils.bzl deleted file mode 100644 index 60ca33f..0000000 --- a/hack/bazel/utils.bzl +++ /dev/null @@ -1,30 +0,0 @@ -def _append_once(targetList, item): - if item not in targetList: - targetList.append(item) - -def _extend_once(targetList, items): - for item in items: - _append_once(targetList, item) - -def render_deps(deps = []): - output_deps = [] - - has_added_grpc_deps = False - - for dep in deps: - if dep.startswith("//src/rpc"): - _append_once(output_deps, dep + ":ts") - _append_once(output_deps, dep + ":ts_proto") - if has_added_grpc_deps == False: - _extend_once(output_deps, [ - "@npm//google-protobuf", - "@npm//@types/google-protobuf", - "@npm//@improbable-eng/grpc-web", - ]) - has_added_grpc_deps = True - elif dep.startswith("//") or dep.startswith("@npm//"): - _append_once(output_deps, dep) - else: - _append_once(output_deps, "@npm//" + dep) - - return output_deps diff --git a/hack/dev-container/BUILD.bazel b/hack/dev-container/BUILD.bazel deleted file mode 100644 index 57d25f6..0000000 --- a/hack/dev-container/BUILD.bazel +++ /dev/null @@ -1,44 +0,0 @@ -load("//hack/bazel/docker:publish.bzl", "publish") -load("@io_bazel_rules_docker//docker/util:run.bzl", "container_run_and_commit_layer") -load("@io_bazel_rules_docker//container:container.bzl", "container_image") - -container_run_and_commit_layer( - name = "bazel-layer", - commands = [ - "go get -u github.com/bazelbuild/bazelisk", - "ln /go/bin/bazelisk /usr/bin/bazel", - "go get -u github.com/bazelbuild/buildtools/...", - ], - image = "@devcontainergo//image", -) - -container_run_and_commit_layer( - name = "node-layer", - commands = [ - "su vscode -c 'source /usr/local/share/nvm/nvm.sh && nvm install lts/* 2>&1'", - ], - image = "@devcontainergo//image", -) - -container_image( - name = "dev-container", - base = "@devcontainergo//image", - layers = [ - ":bazel-layer", - ":node-layer", - ], -) - -publish( - name = "publish-dev-container", - image = ":dev-container", - service = "dev-container", -) - -publish( - name = "publish-dev-container-dockerhub", - image = ":dev-container", - prefix = "roleypoly/", - registry = "index.docker.io", - service = "dev-container", -) diff --git a/hack/dev-container/README.md b/hack/dev-container/README.md deleted file mode 100644 index 3d30828..0000000 --- a/hack/dev-container/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Dev Container - -This package houses the dev-container image. - -It includes: - -- go (1.15.2) -- bazel (latest via bazelisk) -- node (latest lts via nvm) - -As well as any other tooling within VSCode Dev Containers. - -## Building - -To build and use locally, - -```sh -bazel run //srv/dev-container && docker run -it --rm bazel/src/dev-container:dev-container -``` - -To just use, this is published to two registries. There is no effective difference, except that GitHub's registry requires login, and Docker Hub does not. - -- `docker pull roleypoly/dev-container:main` -- `docker pull docker.pkg.github.com/roleypoly/roleypoly/dev-container:main` diff --git a/hack/dockerfiles/ui.Dockerfile b/hack/dockerfiles/ui.Dockerfile new file mode 100644 index 0000000..9324fb9 --- /dev/null +++ b/hack/dockerfiles/ui.Dockerfile @@ -0,0 +1,25 @@ +FROM node:14-alpine AS base +WORKDIR /src + +# +# Builder +# +FROM base AS builder + +COPY package.json yarn.lock ./ +RUN yarn install --frozen-lockfile + +COPY . . +RUN yarn ui:build + +RUN yarn install --frozen-lockfile --prod + +# +# Output layer +# +FROM base AS output + +COPY --from=builder /src/.next /src/node_modules ./ + +EXPOSE 3000 +CMD yarn ui:prod \ No newline at end of file diff --git a/hack/gazelle.sh b/hack/gazelle.sh deleted file mode 100755 index 513e209..0000000 --- a/hack/gazelle.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -cd $(dirname $(realpath $0)) -cd .. - -bazel run //:gazelle -bazel run //:gazelle -- update-repos -from_file=./go.mod --to_macro=go_dependencies.bzl%go_repositories -prune=true -bazel run //:gazelle - -sleep 0.5 -echo "Fixing go_dependencies.bzl..." -head -n2 ../go_dependencies.bzl >../go_dependencies.bzl~ -tail -n+3 ../go_dependencies.bzl | sed '/^$/d' >>../go_dependencies.bzl~ -mv ../go_dependencies.bzl~ ../go_dependencies.bzl diff --git a/hack/generate.go b/hack/generate.go deleted file mode 100644 index 4cff102..0000000 --- a/hack/generate.go +++ /dev/null @@ -1,7 +0,0 @@ -package hacknotused - -//go:generate sh gazelle.sh - -func noop() { - -} diff --git a/hack/workspace_status.sh b/hack/workspace_status.sh deleted file mode 100755 index 87a71e6..0000000 --- a/hack/workspace_status.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -echo "STABLE_GIT_COMMIT $(git rev-parse --short HEAD)" -echo "STABLE_GIT_BRANCH $(git rev-parse --abbrev-ref HEAD)" -echo "STABLE_URL_SAFE_TAG $(git rev-parse --abbrev-ref HEAD | tr '/' '-')" -echo "BUILD_DATE $(date -Iseconds)" diff --git a/jest-reporter.js b/jest-reporter.js deleted file mode 100644 index 932e5b8..0000000 --- a/jest-reporter.js +++ /dev/null @@ -1,13 +0,0 @@ -class BazelReporter { - onRunComplete(_, results) { - if (results.numFailedTests && results.snapshot.failure) { - console.log(`================================================================================ - - Snapshot failed, you can update the snapshot by running - bazel run ${process.env['TEST_TARGET'].replace(/_bin$/, '')}.update - `); - } - } -} - -module.exports = BazelReporter; diff --git a/jest.config.js b/jest.config.js index 1fecd80..96e97a9 100644 --- a/jest.config.js +++ b/jest.config.js @@ -2,12 +2,17 @@ const { pathsToModuleNameMapper } = require('ts-jest/utils'); const { compilerOptions } = require('./tsconfig.json'); module.exports = { - preset: 'ts-jest', + preset: 'ts-jest/presets/js-with-babel', testEnvironment: 'enzyme', - reporters: ['default', './jest-reporter'], + reporters: ['default'], setupFilesAfterEnv: ['jest-enzyme', 'jest-styled-components', './hack/jestSetup.ts'], moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '/', }), snapshotSerializers: ['enzyme-to-json/serializer'], + globals: { + 'ts-jest': { + tsconfig: './tsconfig.test.json', + }, + }, }; diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..7b7aa2c --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,2 @@ +/// +/// diff --git a/package.json b/package.json index c51424b..a9aa4d9 100644 --- a/package.json +++ b/package.json @@ -18,77 +18,82 @@ "lint:prettier": "cross-env prettier -c '**/*.{ts,tsx,css,yml,yaml,md,json,js,jsx,sh,gitignore,mdx}'", "lint:stylelint": "cross-env stylelint '**/*.{ts,tsx}'", "now-build": "run-s storybook:build", - "storybook": "start-storybook -p 6006 --no-dll", - "storybook:build": "build-storybook --no-dll", - "test": "jest" + "storybook": "start-storybook -p 6006", + "storybook:build": "build-storybook", + "test": "jest", + "ui": "next dev -p 6601", + "ui:build": "next build", + "ui:prod": "next start" }, "dependencies": { - "@improbable-eng/grpc-web": "^0.13.0", - "browser-headers": "^0.4.1", "chroma-js": "^2.1.0", - "fuse.js": "^6.4.2", - "google-protobuf": "^3.13.0", - "next": "^9.5.5", + "isomorphic-unfetch": "^3.1.0", + "ksuid": "^2.0.0", + "next": "^10.0.3", + "nookies": "^2.5.0", "react": "^17.0.1", "react-custom-scrollbars": "^4.2.1", "react-dom": "^17.0.1", - "react-icons": "^3.11.0", - "react-tooltip": "^4.2.10", - "styled-components": "^5.2.0" + "react-icons": "^4.1.0", + "react-is": "^17.0.1", + "react-tooltip": "^4.2.11", + "styled-components": "^5.2.1" }, "devDependencies": { - "@babel/core": "^7.12.3", - "@bazel/typescript": "^2.2.2", - "@storybook/addon-actions": "^6.0.27", - "@storybook/addon-essentials": "^6.0.27", - "@storybook/addon-links": "^6.0.27", - "@storybook/addons": "^6.0.27", - "@storybook/react": "^6.0.27", - "@storybook/theming": "^6.0.27", - "@types/chroma-js": "^2.1.0", - "@types/enzyme": "^3.10.7", + "@babel/core": "^7.12.9", + "@cloudflare/workers-types": "^2.1.0", + "@storybook/addon-actions": "^6.1.9", + "@storybook/addon-essentials": "^6.1.9", + "@storybook/addon-links": "^6.1.9", + "@storybook/addons": "^6.1.9", + "@storybook/react": "^6.1.9", + "@storybook/theming": "^6.1.9", + "@types/chroma-js": "^2.1.2", + "@types/enzyme": "^3.10.8", "@types/enzyme-adapter-react-16": "^1.0.6", - "@types/google-protobuf": "^3.7.3", - "@types/jest": "^26.0.15", - "@types/minimist": "^1.2.0", - "@types/node": "^14.14.2", - "@types/react": "^16.9.53", + "@types/jest": "^26.0.16", + "@types/minimist": "^1.2.1", + "@types/node": "^14.14.10", + "@types/react": "^17.0.0", "@types/react-custom-scrollbars": "^4.0.7", - "@types/react-dom": "^16.9.8", + "@types/react-dom": "^17.0.0", "@types/styled-components": "^5.1.4", - "@typescript-eslint/eslint-plugin": "^4.5.0", - "@typescript-eslint/eslint-plugin-tslint": "^4.5.0", - "@typescript-eslint/parser": "^4.5.0", - "babel-jest": "^26.6.1", - "babel-loader": "^8.1.0", + "@types/uuid": "^8.3.0", + "@typescript-eslint/eslint-plugin": "^4.9.0", + "@typescript-eslint/eslint-plugin-tslint": "^4.9.0", + "@typescript-eslint/parser": "^4.9.0", + "babel-jest": "^26.6.3", + "babel-loader": "^8.2.2", + "babel-plugin-styled-components": "^1.12.0", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", "enzyme-to-json": "^3.6.1", - "eslint": "^7.12.0", - "eslint-config-prettier": "^6.14.0", + "eslint": "^7.14.0", + "eslint-config-prettier": "^6.15.0", "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jsdoc": "^30.7.3", + "eslint-plugin-jsdoc": "^30.7.8", "eslint-plugin-react": "^7.21.5", - "jest": "^26.6.1", - "jest-cli": "^26.6.1", + "jest": "^26.6.3", + "jest-cli": "^26.6.3", "jest-environment-enzyme": "^7.1.2", "jest-enzyme": "^7.1.2", - "jest-react-hooks-shallow": "^1.4.1", + "jest-react-hooks-shallow": "^1.4.2", "jest-styled-components": "^7.0.3", "minimist": "^1.2.5", "npm-run-all": "^4.1.5", - "prettier": "^2.1.2", - "prettier-plugin-packagejson": "^2.2.7", + "prettier": "^2.2.1", + "prettier-plugin-packagejson": "^2.2.8", "prettier-plugin-sh": "^0.6.0", - "react-is": "^17.0.1", - "stylelint": "^13.7.2", + "stylelint": "^13.8.0", "stylelint-config-prettier": "^8.0.2", "stylelint-config-standard": "^20.0.0", "stylelint-config-styled-components": "^0.1.1", "stylelint-prettier": "^1.1.2", "stylelint-processor-styled-components": "^1.10.0", - "ts-jest": "^26.4.2", + "ts-jest": "^26.4.4", + "ts-loader": "^8.0.11", "tsconfig-paths-webpack-plugin": "^3.3.0", - "typescript": "^4.0.3" + "typescript": "^4.1.2", + "webpack": "^5.9.0" } -} +} \ No newline at end of file diff --git a/src/backend-worker/.gitignore b/src/backend-worker/.gitignore new file mode 100644 index 0000000..1521c8b --- /dev/null +++ b/src/backend-worker/.gitignore @@ -0,0 +1 @@ +dist diff --git a/src/backend-worker/bindings.d.ts b/src/backend-worker/bindings.d.ts new file mode 100644 index 0000000..342afdd --- /dev/null +++ b/src/backend-worker/bindings.d.ts @@ -0,0 +1,13 @@ +export {}; + +declare global { + const BOT_CLIENT_ID: string; + const BOT_CLIENT_SECRET: string; + const UI_PUBLIC_URI: string; + const API_PUBLIC_URI: string; + const ROOT_USERS: string; + + const KV_SESSIONS: KVNamespace; + const KV_GUILDS: KVNamespace; + const KV_GUILD_DATA: KVNamespace; +} diff --git a/src/backend-worker/handlers/bot-join.ts b/src/backend-worker/handlers/bot-join.ts new file mode 100644 index 0000000..a9b31f4 --- /dev/null +++ b/src/backend-worker/handlers/bot-join.ts @@ -0,0 +1,35 @@ +import { Bounce } from '../utils/bounce'; + +const validGuildID = /^[0-9]+$/; + +type URLParams = { + clientID: string; + permissions: number; + guildID?: string; +}; + +const buildURL = (params: URLParams) => { + let url = `https://discord.com/api/oauth2/authorize?client_id=${params.clientID}&scope=bot&permissions=${params.permissions}`; + + if (params.guildID) { + url += `&guild_id=${params.guildID}&disable_guild_select=true`; + } + + return url; +}; + +export const BotJoin = (request: Request): Response => { + let guildID = new URL(request.url).searchParams.get('guild') || ''; + + if (guildID && !validGuildID.test(guildID)) { + guildID = ''; + } + + return Bounce( + buildURL({ + clientID: BOT_CLIENT_ID, + permissions: 268435456, + guildID, + }) + ); +}; diff --git a/src/backend-worker/handlers/get-session.ts b/src/backend-worker/handlers/get-session.ts new file mode 100644 index 0000000..233ee48 --- /dev/null +++ b/src/backend-worker/handlers/get-session.ts @@ -0,0 +1,31 @@ +import { SessionData } from 'roleypoly/common/types'; +import { getSessionID, respond } from '../utils/api-tools'; +import { Sessions } from '../utils/kv'; + +const NotAuthenticated = (extra?: string) => + respond( + { + err: extra || 'not authenticated', + }, + { status: 403 } + ); + +export const GetSession = async (request: Request): Promise => { + const sessionID = getSessionID(request); + if (!sessionID) { + return NotAuthenticated('missing auth header'); + } + + console.log(sessionID); + + const sessionData = await Sessions.get(sessionID.id); + if (!sessionData) { + return NotAuthenticated('session not found'); + } + + const { tokens, ...withoutTokens } = sessionData; + + return respond({ + ...withoutTokens, + }); +}; diff --git a/src/backend-worker/handlers/login-bounce.ts b/src/backend-worker/handlers/login-bounce.ts new file mode 100644 index 0000000..5fcf4c9 --- /dev/null +++ b/src/backend-worker/handlers/login-bounce.ts @@ -0,0 +1,24 @@ +import KSUID from 'ksuid'; +import { Bounce } from '../utils/bounce'; +import { apiPublicURI, botClientID } from '../utils/config'; + +type URLParams = { + clientID: string; + redirectURI: string; + state: string; +}; + +const buildURL = (params: URLParams) => + `https://discord.com/api/oauth2/authorize?client_id=${ + params.clientID + }&response_type=code&scope=identify%20guilds&redirect_uri=${encodeURIComponent( + params.redirectURI + )}&state=${params.state}`; + +export const LoginBounce = async (request: Request): Promise => { + const state = await KSUID.random(); + const redirectURI = `${apiPublicURI}/login-callback`; + const clientID = botClientID; + + return Bounce(buildURL({ state: state.string, redirectURI, clientID })); +}; diff --git a/src/backend-worker/handlers/login-callback.ts b/src/backend-worker/handlers/login-callback.ts new file mode 100644 index 0000000..f377dc0 --- /dev/null +++ b/src/backend-worker/handlers/login-callback.ts @@ -0,0 +1,134 @@ +import KSUID from 'ksuid'; +import { + DiscordUser, + GuildSlug, + SessionData, + AuthTokenResponse, +} from '../../common/types'; +import { formData, resolveFailures, parsePermissions } from '../utils/api-tools'; +import { Bounce } from '../utils/bounce'; +import { apiPublicURI, botClientID, botClientSecret, uiPublicURI } from '../utils/config'; +import { Sessions } from '../utils/kv'; + +const AuthErrorResponse = (extra?: string) => + Bounce( + uiPublicURI + + `/machinery/error?error_code=authFailure${extra ? `&extra=${extra}` : ''}` + ); + +export const LoginCallback = resolveFailures( + AuthErrorResponse(), + async (request: Request): Promise => { + const query = new URL(request.url).searchParams; + + const stateValue = query.get('state'); + + if (stateValue === null) { + return AuthErrorResponse('state missing'); + } + + try { + const state = KSUID.parse(stateValue); + const stateExpiry = state.date.getTime() + 1000 * 60 * 5; + const currentTime = Date.now(); + + if (currentTime > stateExpiry) { + return AuthErrorResponse('state expired'); + } + } catch (e) { + return AuthErrorResponse('state invalid'); + } + + const code = query.get('code'); + if (!code) { + return AuthErrorResponse('code missing'); + } + + const tokenRequest = { + client_id: botClientID, + client_secret: botClientSecret, + grant_type: 'authorization_code', + redirect_uri: apiPublicURI + '/login-callback', + scope: 'identify guilds', + code, + }; + + const tokenFetch = await fetch('https://discord.com/api/v8/oauth2/token', { + method: 'POST', + headers: { + 'content-type': 'application/x-www-form-urlencoded', + }, + body: formData(tokenRequest), + }); + + const tokens = (await tokenFetch.json()) as AuthTokenResponse; + + if (!tokens.access_token) { + console.info({ tokens }); + return AuthErrorResponse('token response invalid'); + } + + const [sessionID, user, guilds] = await Promise.all([ + KSUID.random(), + getUser(tokens.access_token), + getGuilds(tokens.access_token), + ]); + + const sessionData: SessionData = { + tokens, + sessionID: sessionID.string, + user, + guilds, + }; + + await Sessions.put(sessionID.string, sessionData, 60 * 60 * 6); + + return Bounce( + uiPublicURI + '/machinery/new-session?session_id=' + sessionID.string + ); + } +); + +const discordFetch = async (url: string, auth: string): Promise => { + const response = await fetch('https://discord.com/api/v8' + url, { + headers: { + authorization: 'Bearer ' + auth, + }, + }); + + return (await response.json()) as T; +}; + +const getUser = async (accessToken: string): Promise => { + const { id, username, discriminator, bot, avatar } = await discordFetch( + '/users/@me', + accessToken + ); + + return { id, username, discriminator, bot, avatar }; +}; + +type UserGuildsPayload = { + id: string; + name: string; + icon: string; + owner: boolean; + permissions: number; + features: string[]; +}[]; + +const getGuilds = async (accessToken: string) => { + const guilds = await discordFetch( + '/users/@me/guilds', + accessToken + ); + + const guildSlugs = guilds.map((guild) => ({ + id: guild.id, + name: guild.name, + icon: guild.icon, + permissionLevel: parsePermissions(guild.permissions, guild.owner), + })); + + return guildSlugs; +}; diff --git a/src/backend-worker/index.ts b/src/backend-worker/index.ts new file mode 100644 index 0000000..8381fcb --- /dev/null +++ b/src/backend-worker/index.ts @@ -0,0 +1,16 @@ +import { BotJoin } from './handlers/bot-join'; +import { GetSession } from './handlers/get-session'; +import { LoginBounce } from './handlers/login-bounce'; +import { LoginCallback } from './handlers/login-callback'; +import { Router } from './router'; + +const router = new Router(); + +router.add('GET', 'bot-join', BotJoin); +router.add('GET', 'login-bounce', LoginBounce); +router.add('GET', 'login-callback', LoginCallback); +router.add('GET', 'get-session', GetSession); + +addEventListener('fetch', (event: FetchEvent) => { + event.respondWith(router.handle(event.request)); +}); diff --git a/src/backend-worker/router.ts b/src/backend-worker/router.ts new file mode 100644 index 0000000..4bfc549 --- /dev/null +++ b/src/backend-worker/router.ts @@ -0,0 +1,73 @@ +export type Handler = (request: Request) => Promise | Response; + +type RoutingTree = { + [method: string]: { + [path: string]: Handler; + }; +}; + +type Fallbacks = { + root: Handler; + 404: Handler; + 500: Handler; +}; + +export class Router { + private routingTree: RoutingTree = {}; + private fallbacks: Fallbacks = { + root: this.respondToRoot, + 404: this.notFound, + 500: this.serverError, + }; + + addFallback(which: keyof Fallbacks, handler: Handler) { + this.fallbacks[which] = handler; + } + + add(method: string, rootPath: string, handler: Handler) { + const lowerMethod = method.toLowerCase(); + + if (!this.routingTree[lowerMethod]) { + this.routingTree[lowerMethod] = {}; + } + + this.routingTree[lowerMethod][rootPath] = handler; + } + + handle(request: Request): Promise | Response { + if (request.url === '/') { + return this.fallbacks.root(request); + } + const lowerMethod = request.method.toLowerCase(); + const url = new URL(request.url); + const rootPath = url.pathname.split('/')[1]; + const handler = this.routingTree[lowerMethod]?.[rootPath]; + + if (handler) { + try { + return handler(request); + } catch (e) { + console.error(e); + return this.fallbacks[500](request); + } + } + + return this.fallbacks[404](request); + } + + private respondToRoot(): Response { + return new Response('Hi there!'); + } + + private notFound(): Response { + return new Response(JSON.stringify({ error: 'not_found' }), { + status: 404, + }); + } + + private serverError(): Response { + return new Response(JSON.stringify({ error: 'internal_server_error' }), { + status: 500, + }); + } +} diff --git a/src/backend-worker/tsconfig.json b/src/backend-worker/tsconfig.json new file mode 100644 index 0000000..77059f5 --- /dev/null +++ b/src/backend-worker/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "outDir": "./dist", + "lib": ["esnext", "webworker"], + "types": ["@cloudflare/workers-types"] + }, + "include": [ + "./*.ts", + "./**/*.ts", + "../../node_modules/@cloudflare/workers-types/index.d.ts" + ], + "exclude": ["./**/*.spec.ts"], + "extends": "../../tsconfig.json" +} diff --git a/src/backend-worker/utils/api-tools.ts b/src/backend-worker/utils/api-tools.ts new file mode 100644 index 0000000..badd55d --- /dev/null +++ b/src/backend-worker/utils/api-tools.ts @@ -0,0 +1,55 @@ +import { UserGuildPermissions } from '../../common/types'; +import { + evaluatePermission, + permissions as Permissions, +} from '../../common/utils/hasPermission'; + +export const formData = (obj: Record): string => { + return Object.keys(obj) + .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`) + .join('&'); +}; + +export const respond = (obj: Record, init?: ResponseInit) => + new Response(JSON.stringify(obj), init); + +export const resolveFailures = ( + handleWith: Response, + handler: (request: Request) => Promise | Response +) => async (request: Request): Promise | Response => { + try { + return handler(request); + } catch (e) { + console.error(e); + return handleWith; + } +}; + +export const parsePermissions = ( + permissions: number, + owner: boolean = false +): UserGuildPermissions => { + if (owner || evaluatePermission(permissions, Permissions.ADMINISTRATOR)) { + return UserGuildPermissions.Admin; + } + + if (evaluatePermission(permissions, Permissions.MANAGE_ROLES)) { + return UserGuildPermissions.Manager; + } + + return UserGuildPermissions.User; +}; + +export const getSessionID = (request: Request): { type: string; id: string } | null => { + const sessionID = request.headers.get('authorization'); + if (!sessionID) { + return null; + } + + const [type, id] = sessionID.split(' '); + if (type !== 'Bearer') { + return null; + } + + return { type, id }; +}; diff --git a/src/backend-worker/utils/bounce.ts b/src/backend-worker/utils/bounce.ts new file mode 100644 index 0000000..3aec260 --- /dev/null +++ b/src/backend-worker/utils/bounce.ts @@ -0,0 +1,7 @@ +export const Bounce = (url: string): Response => + new Response(null, { + status: 303, + headers: { + location: url, + }, + }); diff --git a/src/backend-worker/utils/config.ts b/src/backend-worker/utils/config.ts new file mode 100644 index 0000000..4fe1a94 --- /dev/null +++ b/src/backend-worker/utils/config.ts @@ -0,0 +1,11 @@ +const self = (global as any) as Record; + +const safeURI = (x: string) => x.replace(/\/$/, ''); +const list = (x: string) => x.split(','); + +export const botClientID = self.BOT_CLIENT_ID; +export const botClientSecret = self.BOT_CLIENT_SECRET; +export const uiPublicURI = safeURI(self.UI_PUBLIC_URI); +export const apiPublicURI = safeURI(self.API_PUBLIC_URI); +export const rootUsers = list(self.ROOT_USERS); +export const kvPrefix = self.KV_PREFIX; diff --git a/src/backend-worker/utils/kv.ts b/src/backend-worker/utils/kv.ts new file mode 100644 index 0000000..ba2a6ab --- /dev/null +++ b/src/backend-worker/utils/kv.ts @@ -0,0 +1,26 @@ +class WrappedKVNamespace { + constructor(private kvNamespace: KVNamespace) {} + + async get(key: string): Promise { + const data = await this.kvNamespace.get(key, 'text'); + if (!data) { + return null; + } + + return JSON.parse(data) as T; + } + + async put(key: string, value: T, ttlSeconds?: number) { + await this.kvNamespace.put(key, JSON.stringify(value), { + expirationTtl: ttlSeconds, + }); + } + + list = this.kvNamespace.list; + getWithMetadata = this.kvNamespace.getWithMetadata; + delete = this.kvNamespace.delete; +} + +export const Sessions = new WrappedKVNamespace(KV_SESSIONS); +export const GuildData = new WrappedKVNamespace(KV_GUILD_DATA); +export const Guilds = new WrappedKVNamespace(KV_GUILDS); diff --git a/src/backend-worker/webpack.config.js b/src/backend-worker/webpack.config.js new file mode 100644 index 0000000..f04820f --- /dev/null +++ b/src/backend-worker/webpack.config.js @@ -0,0 +1,29 @@ +const path = require('path'); + +const mode = process.env.NODE_ENV || 'production'; + +module.exports = { + target: 'webworker', + entry: path.join(__dirname, 'index.ts'), + output: { + filename: `worker.${mode}.js`, + path: path.join(__dirname, 'dist'), + }, + mode, + resolve: { + extensions: ['.ts', '.tsx', '.js'], + plugins: [], + }, + module: { + rules: [ + { + test: /\.tsx?$/, + loader: 'ts-loader', + options: { + transpileOnly: true, + configFile: path.join(__dirname, 'tsconfig.json'), + }, + }, + ], + }, +}; diff --git a/src/common/BUILD.bazel b/src/common/BUILD.bazel deleted file mode 100644 index a90f425..0000000 --- a/src/common/BUILD.bazel +++ /dev/null @@ -1,21 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "common", - srcs = [ - "await-exit.go", - "envconfig.go", - "finders.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/common", - visibility = ["//visibility:public"], -) - -go_test( - name = "common_test", - srcs = [ - "envconfig_test.go", - "finders_test.go", - ], - embed = [":common"], -) diff --git a/src/common/bot/BUILD.bazel b/src/common/bot/BUILD.bazel deleted file mode 100644 index 7d580eb..0000000 --- a/src/common/bot/BUILD.bazel +++ /dev/null @@ -1,18 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "bot", - srcs = [ - "commandmux.go", - "scaffolding.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/common/bot", - visibility = ["//visibility:public"], - deps = [ - "//src/common", - "@com_github_bwmarrin_discordgo//:discordgo", - "@com_github_dghubble_trie//:trie", - "@com_github_lampjaw_discordclient//:discordclient", - "@io_k8s_klog//:klog", - ], -) diff --git a/src/common/envconfig.go b/src/common/envconfig.go index 897e4e2..c938e39 100644 --- a/src/common/envconfig.go +++ b/src/common/envconfig.go @@ -9,6 +9,7 @@ import ( // GetenvValue is a holder type for Getenv to translate any Getenv strings to real types type GetenvValue struct { + key string value string } @@ -25,6 +26,7 @@ func Getenv(key string, defaultValue ...string) GetenvValue { return GetenvValue{ value: strings.TrimSpace(value), + key: key, } } @@ -41,6 +43,15 @@ func (g GetenvValue) StringSlice(optionalDelimiter ...string) []string { return strings.Split(g.value, delimiter) } +// SafeURL removes any trailing slash +func (g GetenvValue) SafeURL() string { + if g.value[len(g.value)-1] == '/' { + return g.value[:len(g.value)-1] + } + + return g.value +} + func (g GetenvValue) Bool() bool { lowercaseValue := strings.ToLower(g.value) if g.value == "1" || lowercaseValue == "true" || lowercaseValue == "yes" { @@ -63,3 +74,11 @@ func (g GetenvValue) Number() int { func (g GetenvValue) JSON(target interface{}) error { return json.Unmarshal([]byte(g.value), target) } + +func (g GetenvValue) OrFatal() GetenvValue { + if g.value == "" { + panic("Getenv value was empty and shouldn't be. key: " + g.key) + } + + return g +} diff --git a/src/common/envconfig_test.go b/src/common/envconfig_test.go index 67c33b2..a9bf054 100644 --- a/src/common/envconfig_test.go +++ b/src/common/envconfig_test.go @@ -2,8 +2,10 @@ package common_test import ( "os" + "strings" "testing" + "github.com/onsi/gomega" "github.com/roleypoly/roleypoly/src/common" ) @@ -13,6 +15,8 @@ var ( "slice": "hello,world", "slice_no_delim": "hello world", "slice_set_delim": "hello|world", + "url": "https://google.com", + "url_trailing": "https://google.com/", "number": "10005", "number_bad": "abc123", "bool": "true", @@ -60,6 +64,19 @@ func TestEnvconfigStringSliceSetDelimeter(t *testing.T) { } } +func TestEnvconfigSafeURL(t *testing.T) { + testUrl := common.Getenv("test__url").SafeURL() + if strings.HasSuffix(testUrl, "/") { + t.FailNow() + } +} +func TestEnvconfigSafeURLWithTrailing(t *testing.T) { + testUrl := common.Getenv("test__url_trailing").SafeURL() + if strings.HasSuffix(testUrl, "/") { + t.FailNow() + } +} + func TestEnvconfigNumber(t *testing.T) { testNum := common.Getenv("test__number").Number() if testNum != 10005 { @@ -121,3 +138,17 @@ func TestEnvconfigJSON(t *testing.T) { t.FailNow() } } + +func TestEnvconfigFatal(t *testing.T) { + O := gomega.NewWithT(t) + O.Expect(func() { + _ = common.Getenv("test__thing_that_doesnt_exist").OrFatal().String() + }).Should(gomega.Panic(), "Getenv without a value should panic") +} + +func TestEnvconfigNotFatal(t *testing.T) { + O := gomega.NewWithT(t) + O.Expect(func() { + _ = common.Getenv("test__string").OrFatal().String() + }).ShouldNot(gomega.Panic(), "Getenv with a value should not panic") +} diff --git a/src/design-system/shared-types/Category.ts b/src/common/types/Category.ts similarity index 100% rename from src/design-system/shared-types/Category.ts rename to src/common/types/Category.ts diff --git a/src/design-system/shared-types/Guild.ts b/src/common/types/Guild.ts similarity index 76% rename from src/design-system/shared-types/Guild.ts rename to src/common/types/Guild.ts index 9b4fa50..a03cc42 100644 --- a/src/design-system/shared-types/Guild.ts +++ b/src/common/types/Guild.ts @@ -34,3 +34,16 @@ export type PresentableGuild = { export type GuildEnumeration = { guildsList: PresentableGuild[]; }; + +export enum UserGuildPermissions { + User, + Manager, + Admin, +} + +export type GuildSlug = { + id: string; + name: string; + icon: string; + permissionLevel: UserGuildPermissions; +}; diff --git a/src/design-system/shared-types/Role.ts b/src/common/types/Role.ts similarity index 100% rename from src/design-system/shared-types/Role.ts rename to src/common/types/Role.ts diff --git a/src/common/types/Session.ts b/src/common/types/Session.ts new file mode 100644 index 0000000..e7ae51c --- /dev/null +++ b/src/common/types/Session.ts @@ -0,0 +1,18 @@ +import { GuildSlug } from './Guild'; +import { DiscordUser } from './User'; + +export type AuthTokenResponse = { + access_token: string; + token_type: 'Bearer'; + expires_in: number; + refresh_token: string; + scope: string; +}; + +export type SessionData = { + /** sessionID is a KSUID */ + sessionID: string; + tokens: AuthTokenResponse; + user: DiscordUser; + guilds: GuildSlug[]; +}; diff --git a/src/common/types/User.go b/src/common/types/User.go new file mode 100644 index 0000000..9426f48 --- /dev/null +++ b/src/common/types/User.go @@ -0,0 +1,20 @@ +package types + +type DiscordUser struct { + ID string `json:"id,omitempty"` + Username string `json:"username,omitempty"` + Discriminator string `json:"discriminator,omitempty"` + Avatar string `json:"avatar,omitempty"` + Bot bool `json:"bot,omitempty"` +} + +type Member struct { + GuildID string `json:"guildid,omitempty"` + Roles []string `json:"rolesList,omitempty"` + Nick string `json:"nick,omitempty"` + User DiscordUser `json:"user,omitempty"` +} + +type RoleypolyUser struct { + DiscordUser DiscordUser `json:"discorduser,omitempty"` +} diff --git a/src/design-system/shared-types/User.ts b/src/common/types/User.ts similarity index 100% rename from src/design-system/shared-types/User.ts rename to src/common/types/User.ts diff --git a/src/design-system/shared-types/demoData.ts b/src/common/types/demoData.ts similarity index 100% rename from src/design-system/shared-types/demoData.ts rename to src/common/types/demoData.ts diff --git a/src/design-system/shared-types/index.ts b/src/common/types/index.ts similarity index 78% rename from src/design-system/shared-types/index.ts rename to src/common/types/index.ts index 64276b1..cb64739 100644 --- a/src/design-system/shared-types/index.ts +++ b/src/common/types/index.ts @@ -2,3 +2,4 @@ export * from './Role'; export * from './Category'; export * from './Guild'; export * from './User'; +export * from './Session'; diff --git a/src/common/types/session.go b/src/common/types/session.go new file mode 100644 index 0000000..edf2a99 --- /dev/null +++ b/src/common/types/session.go @@ -0,0 +1,31 @@ +package types + +import "time" + +// CreateSessionRequest is the payload to /create-session +type CreateSessionRequest struct { + AccessTokenResponse AccessTokenResponse + Fingerprint Fingerprint +} + +type Fingerprint struct { + UserAgent string + ClientIP string + ForwardedFor string +} + +type CreateSessionResponse struct { + SessionID string +} + +type SessionData struct { + SessionID string + Fingerprint Fingerprint + AccessTokens AccessTokenResponse + UserData UserData +} + +type UserData struct { + DataExpires time.Time + UserID string +} diff --git a/src/design-system/shared-types/storyData.ts b/src/common/types/storyData.ts similarity index 100% rename from src/design-system/shared-types/storyData.ts rename to src/common/types/storyData.ts diff --git a/src/common/types/tokens.go b/src/common/types/tokens.go new file mode 100644 index 0000000..ca13d09 --- /dev/null +++ b/src/common/types/tokens.go @@ -0,0 +1,10 @@ +package types + +// AccessTokenResponse is the response for Discord's OAuth token grant flow +type AccessTokenResponse struct { + AccessToken string `json:"access_token"` + TokenType string `json:"token_type"` + ExpiresIn int `json:"expires_in"` + RefreshToken string `json:"refresh_token"` + Scope string `json:"scope"` +} diff --git a/src/common/utils/BUILD.bazel b/src/common/utils/BUILD.bazel deleted file mode 100644 index 53c6066..0000000 --- a/src/common/utils/BUILD.bazel +++ /dev/null @@ -1,21 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") -load("//hack/bazel/js:jest.bzl", "jest_test") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "utils", - deps = [ - "chroma-js", - "//src/rpc/shared", - "@types/chroma-js", - ], -) - -jest_test( - src = ":utils", - deps = [ - "//src/design-system/shared-types", - "//src/rpc/shared", - ], -) diff --git a/src/common/utils/hasPermission.spec.ts b/src/common/utils/hasPermission.spec.ts index 4af7887..48a208d 100644 --- a/src/common/utils/hasPermission.spec.ts +++ b/src/common/utils/hasPermission.spec.ts @@ -1,8 +1,8 @@ import { hasPermission, permissions, hasPermissionOrAdmin } from './hasPermission'; -import { Role } from 'roleypoly/src/rpc/shared'; -import { guildRoles } from 'roleypoly/src/design-system/shared-types/storyData'; +import { Role } from 'roleypoly/common/types'; +import { guildRoles } from 'roleypoly/common/types/storyData'; -const roles: Role.AsObject[] = [ +const roles: Role[] = [ { ...guildRoles.rolesList[0], permissions: permissions.ADMINISTRATOR, diff --git a/src/common/utils/hasPermission.ts b/src/common/utils/hasPermission.ts index eed6c15..ea024ff 100644 --- a/src/common/utils/hasPermission.ts +++ b/src/common/utils/hasPermission.ts @@ -1,14 +1,16 @@ -import { Role } from 'roleypoly/src/rpc/shared'; +import { Role } from '../types'; -export const hasPermission = (roles: Role.AsObject[], permission: number): boolean => { - const aggregateRoles = roles.reduce((acc, role) => acc | role.permissions, 0); - return (aggregateRoles & permission) === permission; +export const evaluatePermission = (haystack: number, needle: number): boolean => { + return (haystack & needle) === needle; }; -export const hasPermissionOrAdmin = ( - roles: Role.AsObject[], - permission: number -): boolean => hasPermission(roles, permission | permissions.ADMINISTRATOR); +export const hasPermission = (roles: Role[], permission: number): boolean => { + const aggregateRoles = roles.reduce((acc, role) => acc | role.permissions, 0); + return evaluatePermission(aggregateRoles, permission); +}; + +export const hasPermissionOrAdmin = (roles: Role[], permission: number): boolean => + hasPermission(roles, permission | permissions.ADMINISTRATOR); export const permissions = { CREATE_INSTANT_INVITE: 0x1, diff --git a/src/common/utils/isBrowser.ts b/src/common/utils/isBrowser.ts new file mode 100644 index 0000000..5408914 --- /dev/null +++ b/src/common/utils/isBrowser.ts @@ -0,0 +1 @@ +export const isBrowser = () => typeof window !== 'undefined'; diff --git a/src/common/utils/protoReflection.spec.ts b/src/common/utils/protoReflection.spec.ts deleted file mode 100644 index caa1e2b..0000000 --- a/src/common/utils/protoReflection.spec.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { DiscordUser } from 'roleypoly/src/rpc/shared'; -import { user } from 'roleypoly/src/design-system/shared-types/storyData'; -import { AsObjectToProto } from './protoReflection'; - -it('converts a RoleypolyUser.AsObject back to protobuf', () => { - const proto = AsObjectToProto(DiscordUser, user); - - expect(proto.toObject()).toMatchObject(user); -}); diff --git a/src/common/utils/protoReflection.ts b/src/common/utils/protoReflection.ts deleted file mode 100644 index 02ff735..0000000 --- a/src/common/utils/protoReflection.ts +++ /dev/null @@ -1,47 +0,0 @@ -import * as pbjs from 'google-protobuf'; - -// Protobuf Message itself -type GenericObject = T; - -// Message's "setter" call -type ProtoFunction> = ( - value: U[keyof U] -) => void; - -/** - * AsObjectToProto does the opposite of ProtoMessage.toObject(). - * This function turns regular JS objects back into their source protobuf message type, - * with the help us copious amounts of reflection. - * @param protoClass A protobuf message class - * @param input A JS object that corresponds to the protobuf message class. - */ -export const AsObjectToProto = ( - protoClass: { new (): T }, - input: ReturnType -): GenericObject => { - // First, we create the message itself - const proto = new protoClass(); - - // We want the keys from the message, this will give us the setter names we need. - const protoKeys = Object.getOwnPropertyNames((proto as any).__proto__); - - // Loop over the input data keys - for (let inputKey in input) { - // As we loop, find the setter function for the key - const setCallName = protoKeys.find( - (key) => `set${inputKey.toLowerCase()}` === key.toLowerCase() - ) as keyof typeof proto; - - // If we encounter a key without a place to go, we silently ignore it. - if (!setCallName) { - continue; - } - - // But, if it all succeeds, we call the setter with the JS object's value. - ((proto[setCallName] as unknown) as ProtoFunction)( - input[inputKey] - ); - } - - return proto; -}; diff --git a/src/common/utils/withContext/BUILD.bazel b/src/common/utils/withContext/BUILD.bazel deleted file mode 100644 index 3a151cb..0000000 --- a/src/common/utils/withContext/BUILD.bazel +++ /dev/null @@ -1,7 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "withContext", -) diff --git a/src/common/version/BUILD.bazel b/src/common/version/BUILD.bazel deleted file mode 100644 index 55552bc..0000000 --- a/src/common/version/BUILD.bazel +++ /dev/null @@ -1,19 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "version", - srcs = ["version.go"], - importpath = "github.com/roleypoly/roleypoly/src/common/version", - visibility = ["//visibility:public"], - x_defs = { - "GitCommit": "{STABLE_GIT_COMMIT}", - "GitBranch": "{STABLE_GIT_BRANCH}", - "BuildDate": "{BUILD_DATE}", - }, -) - -go_test( - name = "version_test", - srcs = ["version_test.go"], - embed = [":version"], -) diff --git a/src/db/.gitignore b/src/db/.gitignore deleted file mode 100644 index 4c49bd7..0000000 --- a/src/db/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.env diff --git a/src/db/LICENSE b/src/db/LICENSE deleted file mode 100644 index e93257e..0000000 --- a/src/db/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 roleypoly maintainers - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/src/db/README.md b/src/db/README.md deleted file mode 100644 index 42e41d4..0000000 --- a/src/db/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# DB - -Roleypoly's DB schemas, connectors, and other useful database admin tools. - -## Tools - -### ent - -ent schema and the files it generates. - -Edit nothing outside of the `schemas` folder, as all others are generated. - -When done editing, do `go generate ./ent` to update generation. - -_Failing to generate files will make CI fail._ - -All schemas must be backwards compatible with previous versions of this library, and be compatible with **CockroachDB**-based Postgres. diff --git a/src/db/ent/BUILD.bazel b/src/db/ent/BUILD.bazel deleted file mode 100644 index b25b2b1..0000000 --- a/src/db/ent/BUILD.bazel +++ /dev/null @@ -1,45 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "ent", - srcs = [ - "challenge.go", - "challenge_create.go", - "challenge_delete.go", - "challenge_query.go", - "challenge_update.go", - "client.go", - "config.go", - "context.go", - "ent.go", - "generate.go", - "guild.go", - "guild_create.go", - "guild_delete.go", - "guild_query.go", - "guild_update.go", - "mutation.go", - "runtime.go", - "session.go", - "session_create.go", - "session_delete.go", - "session_query.go", - "session_update.go", - "tx.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/db/ent", - visibility = ["//visibility:public"], - deps = [ - "//src/db/ent/challenge", - "//src/db/ent/guild", - "//src/db/ent/migrate", - "//src/db/ent/predicate", - "//src/db/ent/schema", - "//src/db/ent/session", - "@com_github_facebook_ent//:ent", - "@com_github_facebook_ent//dialect", - "@com_github_facebook_ent//dialect/sql", - "@com_github_facebook_ent//dialect/sql/sqlgraph", - "@com_github_facebook_ent//schema/field", - ], -) diff --git a/src/db/ent/challenge.go b/src/db/ent/challenge.go deleted file mode 100644 index 4e03dd5..0000000 --- a/src/db/ent/challenge.go +++ /dev/null @@ -1,147 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "fmt" - "strings" - "time" - - "github.com/facebook/ent/dialect/sql" - "github.com/roleypoly/roleypoly/src/db/ent/challenge" -) - -// Challenge is the model entity for the Challenge schema. -type Challenge struct { - config `json:"-"` - // ID of the ent. - ID int `json:"id,omitempty"` - // CreateTime holds the value of the "create_time" field. - CreateTime time.Time `json:"create_time,omitempty"` - // UpdateTime holds the value of the "update_time" field. - UpdateTime time.Time `json:"update_time,omitempty"` - // ChallengeID holds the value of the "challenge_id" field. - ChallengeID string `json:"challenge_id,omitempty"` - // UserID holds the value of the "user_id" field. - UserID string `json:"user_id,omitempty"` - // Human holds the value of the "human" field. - Human string `json:"human,omitempty"` - // Magic holds the value of the "magic" field. - Magic string `json:"magic,omitempty"` - // ExpiresAt holds the value of the "expires_at" field. - ExpiresAt time.Time `json:"expires_at,omitempty"` -} - -// scanValues returns the types for scanning values from sql.Rows. -func (*Challenge) scanValues() []interface{} { - return []interface{}{ - &sql.NullInt64{}, // id - &sql.NullTime{}, // create_time - &sql.NullTime{}, // update_time - &sql.NullString{}, // challenge_id - &sql.NullString{}, // user_id - &sql.NullString{}, // human - &sql.NullString{}, // magic - &sql.NullTime{}, // expires_at - } -} - -// assignValues assigns the values that were returned from sql.Rows (after scanning) -// to the Challenge fields. -func (c *Challenge) assignValues(values ...interface{}) error { - if m, n := len(values), len(challenge.Columns); m < n { - return fmt.Errorf("mismatch number of scan values: %d != %d", m, n) - } - value, ok := values[0].(*sql.NullInt64) - if !ok { - return fmt.Errorf("unexpected type %T for field id", value) - } - c.ID = int(value.Int64) - values = values[1:] - if value, ok := values[0].(*sql.NullTime); !ok { - return fmt.Errorf("unexpected type %T for field create_time", values[0]) - } else if value.Valid { - c.CreateTime = value.Time - } - if value, ok := values[1].(*sql.NullTime); !ok { - return fmt.Errorf("unexpected type %T for field update_time", values[1]) - } else if value.Valid { - c.UpdateTime = value.Time - } - if value, ok := values[2].(*sql.NullString); !ok { - return fmt.Errorf("unexpected type %T for field challenge_id", values[2]) - } else if value.Valid { - c.ChallengeID = value.String - } - if value, ok := values[3].(*sql.NullString); !ok { - return fmt.Errorf("unexpected type %T for field user_id", values[3]) - } else if value.Valid { - c.UserID = value.String - } - if value, ok := values[4].(*sql.NullString); !ok { - return fmt.Errorf("unexpected type %T for field human", values[4]) - } else if value.Valid { - c.Human = value.String - } - if value, ok := values[5].(*sql.NullString); !ok { - return fmt.Errorf("unexpected type %T for field magic", values[5]) - } else if value.Valid { - c.Magic = value.String - } - if value, ok := values[6].(*sql.NullTime); !ok { - return fmt.Errorf("unexpected type %T for field expires_at", values[6]) - } else if value.Valid { - c.ExpiresAt = value.Time - } - return nil -} - -// Update returns a builder for updating this Challenge. -// Note that, you need to call Challenge.Unwrap() before calling this method, if this Challenge -// was returned from a transaction, and the transaction was committed or rolled back. -func (c *Challenge) Update() *ChallengeUpdateOne { - return (&ChallengeClient{config: c.config}).UpdateOne(c) -} - -// Unwrap unwraps the entity that was returned from a transaction after it was closed, -// so that all next queries will be executed through the driver which created the transaction. -func (c *Challenge) Unwrap() *Challenge { - tx, ok := c.config.driver.(*txDriver) - if !ok { - panic("ent: Challenge is not a transactional entity") - } - c.config.driver = tx.drv - return c -} - -// String implements the fmt.Stringer. -func (c *Challenge) String() string { - var builder strings.Builder - builder.WriteString("Challenge(") - builder.WriteString(fmt.Sprintf("id=%v", c.ID)) - builder.WriteString(", create_time=") - builder.WriteString(c.CreateTime.Format(time.ANSIC)) - builder.WriteString(", update_time=") - builder.WriteString(c.UpdateTime.Format(time.ANSIC)) - builder.WriteString(", challenge_id=") - builder.WriteString(c.ChallengeID) - builder.WriteString(", user_id=") - builder.WriteString(c.UserID) - builder.WriteString(", human=") - builder.WriteString(c.Human) - builder.WriteString(", magic=") - builder.WriteString(c.Magic) - builder.WriteString(", expires_at=") - builder.WriteString(c.ExpiresAt.Format(time.ANSIC)) - builder.WriteByte(')') - return builder.String() -} - -// Challenges is a parsable slice of Challenge. -type Challenges []*Challenge - -func (c Challenges) config(cfg config) { - for _i := range c { - c[_i].config = cfg - } -} diff --git a/src/db/ent/challenge/BUILD.bazel b/src/db/ent/challenge/BUILD.bazel deleted file mode 100644 index 7868d92..0000000 --- a/src/db/ent/challenge/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "challenge", - srcs = [ - "challenge.go", - "where.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/db/ent/challenge", - visibility = ["//visibility:public"], - deps = [ - "//src/db/ent/predicate", - "@com_github_facebook_ent//dialect/sql", - ], -) diff --git a/src/db/ent/challenge/challenge.go b/src/db/ent/challenge/challenge.go deleted file mode 100644 index 8d533fe..0000000 --- a/src/db/ent/challenge/challenge.go +++ /dev/null @@ -1,64 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package challenge - -import ( - "time" -) - -const ( - // Label holds the string label denoting the challenge type in the database. - Label = "challenge" - // FieldID holds the string denoting the id field in the database. - FieldID = "id" - // FieldCreateTime holds the string denoting the create_time field in the database. - FieldCreateTime = "create_time" - // FieldUpdateTime holds the string denoting the update_time field in the database. - FieldUpdateTime = "update_time" - // FieldChallengeID holds the string denoting the challenge_id field in the database. - FieldChallengeID = "challenge_id" - // FieldUserID holds the string denoting the user_id field in the database. - FieldUserID = "user_id" - // FieldHuman holds the string denoting the human field in the database. - FieldHuman = "human" - // FieldMagic holds the string denoting the magic field in the database. - FieldMagic = "magic" - // FieldExpiresAt holds the string denoting the expires_at field in the database. - FieldExpiresAt = "expires_at" - - // Table holds the table name of the challenge in the database. - Table = "challenges" -) - -// Columns holds all SQL columns for challenge fields. -var Columns = []string{ - FieldID, - FieldCreateTime, - FieldUpdateTime, - FieldChallengeID, - FieldUserID, - FieldHuman, - FieldMagic, - FieldExpiresAt, -} - -// ValidColumn reports if the column name is valid (part of the table columns). -func ValidColumn(column string) bool { - for i := range Columns { - if column == Columns[i] { - return true - } - } - return false -} - -var ( - // DefaultCreateTime holds the default value on creation for the create_time field. - DefaultCreateTime func() time.Time - // DefaultUpdateTime holds the default value on creation for the update_time field. - DefaultUpdateTime func() time.Time - // UpdateDefaultUpdateTime holds the default value on update for the update_time field. - UpdateDefaultUpdateTime func() time.Time - // DefaultExpiresAt holds the default value on creation for the expires_at field. - DefaultExpiresAt func() time.Time -) diff --git a/src/db/ent/challenge/where.go b/src/db/ent/challenge/where.go deleted file mode 100644 index 574696a..0000000 --- a/src/db/ent/challenge/where.go +++ /dev/null @@ -1,846 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package challenge - -import ( - "time" - - "github.com/facebook/ent/dialect/sql" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" -) - -// ID filters vertices based on their identifier. -func ID(id int) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldID), id)) - }) -} - -// IDEQ applies the EQ predicate on the ID field. -func IDEQ(id int) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldID), id)) - }) -} - -// IDNEQ applies the NEQ predicate on the ID field. -func IDNEQ(id int) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldID), id)) - }) -} - -// IDIn applies the In predicate on the ID field. -func IDIn(ids ...int) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(ids) == 0 { - s.Where(sql.False()) - return - } - v := make([]interface{}, len(ids)) - for i := range v { - v[i] = ids[i] - } - s.Where(sql.In(s.C(FieldID), v...)) - }) -} - -// IDNotIn applies the NotIn predicate on the ID field. -func IDNotIn(ids ...int) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(ids) == 0 { - s.Where(sql.False()) - return - } - v := make([]interface{}, len(ids)) - for i := range v { - v[i] = ids[i] - } - s.Where(sql.NotIn(s.C(FieldID), v...)) - }) -} - -// IDGT applies the GT predicate on the ID field. -func IDGT(id int) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldID), id)) - }) -} - -// IDGTE applies the GTE predicate on the ID field. -func IDGTE(id int) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldID), id)) - }) -} - -// IDLT applies the LT predicate on the ID field. -func IDLT(id int) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldID), id)) - }) -} - -// IDLTE applies the LTE predicate on the ID field. -func IDLTE(id int) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldID), id)) - }) -} - -// CreateTime applies equality check predicate on the "create_time" field. It's identical to CreateTimeEQ. -func CreateTime(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldCreateTime), v)) - }) -} - -// UpdateTime applies equality check predicate on the "update_time" field. It's identical to UpdateTimeEQ. -func UpdateTime(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldUpdateTime), v)) - }) -} - -// ChallengeID applies equality check predicate on the "challenge_id" field. It's identical to ChallengeIDEQ. -func ChallengeID(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldChallengeID), v)) - }) -} - -// UserID applies equality check predicate on the "user_id" field. It's identical to UserIDEQ. -func UserID(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldUserID), v)) - }) -} - -// Human applies equality check predicate on the "human" field. It's identical to HumanEQ. -func Human(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldHuman), v)) - }) -} - -// Magic applies equality check predicate on the "magic" field. It's identical to MagicEQ. -func Magic(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldMagic), v)) - }) -} - -// ExpiresAt applies equality check predicate on the "expires_at" field. It's identical to ExpiresAtEQ. -func ExpiresAt(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldExpiresAt), v)) - }) -} - -// CreateTimeEQ applies the EQ predicate on the "create_time" field. -func CreateTimeEQ(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeNEQ applies the NEQ predicate on the "create_time" field. -func CreateTimeNEQ(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeIn applies the In predicate on the "create_time" field. -func CreateTimeIn(vs ...time.Time) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldCreateTime), v...)) - }) -} - -// CreateTimeNotIn applies the NotIn predicate on the "create_time" field. -func CreateTimeNotIn(vs ...time.Time) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldCreateTime), v...)) - }) -} - -// CreateTimeGT applies the GT predicate on the "create_time" field. -func CreateTimeGT(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeGTE applies the GTE predicate on the "create_time" field. -func CreateTimeGTE(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeLT applies the LT predicate on the "create_time" field. -func CreateTimeLT(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeLTE applies the LTE predicate on the "create_time" field. -func CreateTimeLTE(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldCreateTime), v)) - }) -} - -// UpdateTimeEQ applies the EQ predicate on the "update_time" field. -func UpdateTimeEQ(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeNEQ applies the NEQ predicate on the "update_time" field. -func UpdateTimeNEQ(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeIn applies the In predicate on the "update_time" field. -func UpdateTimeIn(vs ...time.Time) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldUpdateTime), v...)) - }) -} - -// UpdateTimeNotIn applies the NotIn predicate on the "update_time" field. -func UpdateTimeNotIn(vs ...time.Time) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldUpdateTime), v...)) - }) -} - -// UpdateTimeGT applies the GT predicate on the "update_time" field. -func UpdateTimeGT(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeGTE applies the GTE predicate on the "update_time" field. -func UpdateTimeGTE(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeLT applies the LT predicate on the "update_time" field. -func UpdateTimeLT(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeLTE applies the LTE predicate on the "update_time" field. -func UpdateTimeLTE(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldUpdateTime), v)) - }) -} - -// ChallengeIDEQ applies the EQ predicate on the "challenge_id" field. -func ChallengeIDEQ(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldChallengeID), v)) - }) -} - -// ChallengeIDNEQ applies the NEQ predicate on the "challenge_id" field. -func ChallengeIDNEQ(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldChallengeID), v)) - }) -} - -// ChallengeIDIn applies the In predicate on the "challenge_id" field. -func ChallengeIDIn(vs ...string) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldChallengeID), v...)) - }) -} - -// ChallengeIDNotIn applies the NotIn predicate on the "challenge_id" field. -func ChallengeIDNotIn(vs ...string) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldChallengeID), v...)) - }) -} - -// ChallengeIDGT applies the GT predicate on the "challenge_id" field. -func ChallengeIDGT(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldChallengeID), v)) - }) -} - -// ChallengeIDGTE applies the GTE predicate on the "challenge_id" field. -func ChallengeIDGTE(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldChallengeID), v)) - }) -} - -// ChallengeIDLT applies the LT predicate on the "challenge_id" field. -func ChallengeIDLT(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldChallengeID), v)) - }) -} - -// ChallengeIDLTE applies the LTE predicate on the "challenge_id" field. -func ChallengeIDLTE(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldChallengeID), v)) - }) -} - -// ChallengeIDContains applies the Contains predicate on the "challenge_id" field. -func ChallengeIDContains(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.Contains(s.C(FieldChallengeID), v)) - }) -} - -// ChallengeIDHasPrefix applies the HasPrefix predicate on the "challenge_id" field. -func ChallengeIDHasPrefix(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.HasPrefix(s.C(FieldChallengeID), v)) - }) -} - -// ChallengeIDHasSuffix applies the HasSuffix predicate on the "challenge_id" field. -func ChallengeIDHasSuffix(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.HasSuffix(s.C(FieldChallengeID), v)) - }) -} - -// ChallengeIDEqualFold applies the EqualFold predicate on the "challenge_id" field. -func ChallengeIDEqualFold(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EqualFold(s.C(FieldChallengeID), v)) - }) -} - -// ChallengeIDContainsFold applies the ContainsFold predicate on the "challenge_id" field. -func ChallengeIDContainsFold(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.ContainsFold(s.C(FieldChallengeID), v)) - }) -} - -// UserIDEQ applies the EQ predicate on the "user_id" field. -func UserIDEQ(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldUserID), v)) - }) -} - -// UserIDNEQ applies the NEQ predicate on the "user_id" field. -func UserIDNEQ(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldUserID), v)) - }) -} - -// UserIDIn applies the In predicate on the "user_id" field. -func UserIDIn(vs ...string) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldUserID), v...)) - }) -} - -// UserIDNotIn applies the NotIn predicate on the "user_id" field. -func UserIDNotIn(vs ...string) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldUserID), v...)) - }) -} - -// UserIDGT applies the GT predicate on the "user_id" field. -func UserIDGT(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldUserID), v)) - }) -} - -// UserIDGTE applies the GTE predicate on the "user_id" field. -func UserIDGTE(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldUserID), v)) - }) -} - -// UserIDLT applies the LT predicate on the "user_id" field. -func UserIDLT(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldUserID), v)) - }) -} - -// UserIDLTE applies the LTE predicate on the "user_id" field. -func UserIDLTE(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldUserID), v)) - }) -} - -// UserIDContains applies the Contains predicate on the "user_id" field. -func UserIDContains(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.Contains(s.C(FieldUserID), v)) - }) -} - -// UserIDHasPrefix applies the HasPrefix predicate on the "user_id" field. -func UserIDHasPrefix(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.HasPrefix(s.C(FieldUserID), v)) - }) -} - -// UserIDHasSuffix applies the HasSuffix predicate on the "user_id" field. -func UserIDHasSuffix(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.HasSuffix(s.C(FieldUserID), v)) - }) -} - -// UserIDEqualFold applies the EqualFold predicate on the "user_id" field. -func UserIDEqualFold(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EqualFold(s.C(FieldUserID), v)) - }) -} - -// UserIDContainsFold applies the ContainsFold predicate on the "user_id" field. -func UserIDContainsFold(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.ContainsFold(s.C(FieldUserID), v)) - }) -} - -// HumanEQ applies the EQ predicate on the "human" field. -func HumanEQ(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldHuman), v)) - }) -} - -// HumanNEQ applies the NEQ predicate on the "human" field. -func HumanNEQ(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldHuman), v)) - }) -} - -// HumanIn applies the In predicate on the "human" field. -func HumanIn(vs ...string) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldHuman), v...)) - }) -} - -// HumanNotIn applies the NotIn predicate on the "human" field. -func HumanNotIn(vs ...string) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldHuman), v...)) - }) -} - -// HumanGT applies the GT predicate on the "human" field. -func HumanGT(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldHuman), v)) - }) -} - -// HumanGTE applies the GTE predicate on the "human" field. -func HumanGTE(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldHuman), v)) - }) -} - -// HumanLT applies the LT predicate on the "human" field. -func HumanLT(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldHuman), v)) - }) -} - -// HumanLTE applies the LTE predicate on the "human" field. -func HumanLTE(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldHuman), v)) - }) -} - -// HumanContains applies the Contains predicate on the "human" field. -func HumanContains(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.Contains(s.C(FieldHuman), v)) - }) -} - -// HumanHasPrefix applies the HasPrefix predicate on the "human" field. -func HumanHasPrefix(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.HasPrefix(s.C(FieldHuman), v)) - }) -} - -// HumanHasSuffix applies the HasSuffix predicate on the "human" field. -func HumanHasSuffix(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.HasSuffix(s.C(FieldHuman), v)) - }) -} - -// HumanEqualFold applies the EqualFold predicate on the "human" field. -func HumanEqualFold(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EqualFold(s.C(FieldHuman), v)) - }) -} - -// HumanContainsFold applies the ContainsFold predicate on the "human" field. -func HumanContainsFold(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.ContainsFold(s.C(FieldHuman), v)) - }) -} - -// MagicEQ applies the EQ predicate on the "magic" field. -func MagicEQ(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldMagic), v)) - }) -} - -// MagicNEQ applies the NEQ predicate on the "magic" field. -func MagicNEQ(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldMagic), v)) - }) -} - -// MagicIn applies the In predicate on the "magic" field. -func MagicIn(vs ...string) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldMagic), v...)) - }) -} - -// MagicNotIn applies the NotIn predicate on the "magic" field. -func MagicNotIn(vs ...string) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldMagic), v...)) - }) -} - -// MagicGT applies the GT predicate on the "magic" field. -func MagicGT(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldMagic), v)) - }) -} - -// MagicGTE applies the GTE predicate on the "magic" field. -func MagicGTE(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldMagic), v)) - }) -} - -// MagicLT applies the LT predicate on the "magic" field. -func MagicLT(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldMagic), v)) - }) -} - -// MagicLTE applies the LTE predicate on the "magic" field. -func MagicLTE(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldMagic), v)) - }) -} - -// MagicContains applies the Contains predicate on the "magic" field. -func MagicContains(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.Contains(s.C(FieldMagic), v)) - }) -} - -// MagicHasPrefix applies the HasPrefix predicate on the "magic" field. -func MagicHasPrefix(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.HasPrefix(s.C(FieldMagic), v)) - }) -} - -// MagicHasSuffix applies the HasSuffix predicate on the "magic" field. -func MagicHasSuffix(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.HasSuffix(s.C(FieldMagic), v)) - }) -} - -// MagicEqualFold applies the EqualFold predicate on the "magic" field. -func MagicEqualFold(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EqualFold(s.C(FieldMagic), v)) - }) -} - -// MagicContainsFold applies the ContainsFold predicate on the "magic" field. -func MagicContainsFold(v string) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.ContainsFold(s.C(FieldMagic), v)) - }) -} - -// ExpiresAtEQ applies the EQ predicate on the "expires_at" field. -func ExpiresAtEQ(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldExpiresAt), v)) - }) -} - -// ExpiresAtNEQ applies the NEQ predicate on the "expires_at" field. -func ExpiresAtNEQ(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldExpiresAt), v)) - }) -} - -// ExpiresAtIn applies the In predicate on the "expires_at" field. -func ExpiresAtIn(vs ...time.Time) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldExpiresAt), v...)) - }) -} - -// ExpiresAtNotIn applies the NotIn predicate on the "expires_at" field. -func ExpiresAtNotIn(vs ...time.Time) predicate.Challenge { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Challenge(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldExpiresAt), v...)) - }) -} - -// ExpiresAtGT applies the GT predicate on the "expires_at" field. -func ExpiresAtGT(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldExpiresAt), v)) - }) -} - -// ExpiresAtGTE applies the GTE predicate on the "expires_at" field. -func ExpiresAtGTE(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldExpiresAt), v)) - }) -} - -// ExpiresAtLT applies the LT predicate on the "expires_at" field. -func ExpiresAtLT(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldExpiresAt), v)) - }) -} - -// ExpiresAtLTE applies the LTE predicate on the "expires_at" field. -func ExpiresAtLTE(v time.Time) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldExpiresAt), v)) - }) -} - -// And groups list of predicates with the AND operator between them. -func And(predicates ...predicate.Challenge) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s1 := s.Clone().SetP(nil) - for _, p := range predicates { - p(s1) - } - s.Where(s1.P()) - }) -} - -// Or groups list of predicates with the OR operator between them. -func Or(predicates ...predicate.Challenge) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - s1 := s.Clone().SetP(nil) - for i, p := range predicates { - if i > 0 { - s1.Or() - } - p(s1) - } - s.Where(s1.P()) - }) -} - -// Not applies the not operator on the given predicate. -func Not(p predicate.Challenge) predicate.Challenge { - return predicate.Challenge(func(s *sql.Selector) { - p(s.Not()) - }) -} diff --git a/src/db/ent/challenge_create.go b/src/db/ent/challenge_create.go deleted file mode 100644 index da56910..0000000 --- a/src/db/ent/challenge_create.go +++ /dev/null @@ -1,329 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "errors" - "fmt" - "time" - - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/challenge" -) - -// ChallengeCreate is the builder for creating a Challenge entity. -type ChallengeCreate struct { - config - mutation *ChallengeMutation - hooks []Hook -} - -// SetCreateTime sets the create_time field. -func (cc *ChallengeCreate) SetCreateTime(t time.Time) *ChallengeCreate { - cc.mutation.SetCreateTime(t) - return cc -} - -// SetNillableCreateTime sets the create_time field if the given value is not nil. -func (cc *ChallengeCreate) SetNillableCreateTime(t *time.Time) *ChallengeCreate { - if t != nil { - cc.SetCreateTime(*t) - } - return cc -} - -// SetUpdateTime sets the update_time field. -func (cc *ChallengeCreate) SetUpdateTime(t time.Time) *ChallengeCreate { - cc.mutation.SetUpdateTime(t) - return cc -} - -// SetNillableUpdateTime sets the update_time field if the given value is not nil. -func (cc *ChallengeCreate) SetNillableUpdateTime(t *time.Time) *ChallengeCreate { - if t != nil { - cc.SetUpdateTime(*t) - } - return cc -} - -// SetChallengeID sets the challenge_id field. -func (cc *ChallengeCreate) SetChallengeID(s string) *ChallengeCreate { - cc.mutation.SetChallengeID(s) - return cc -} - -// SetUserID sets the user_id field. -func (cc *ChallengeCreate) SetUserID(s string) *ChallengeCreate { - cc.mutation.SetUserID(s) - return cc -} - -// SetHuman sets the human field. -func (cc *ChallengeCreate) SetHuman(s string) *ChallengeCreate { - cc.mutation.SetHuman(s) - return cc -} - -// SetMagic sets the magic field. -func (cc *ChallengeCreate) SetMagic(s string) *ChallengeCreate { - cc.mutation.SetMagic(s) - return cc -} - -// SetExpiresAt sets the expires_at field. -func (cc *ChallengeCreate) SetExpiresAt(t time.Time) *ChallengeCreate { - cc.mutation.SetExpiresAt(t) - return cc -} - -// SetNillableExpiresAt sets the expires_at field if the given value is not nil. -func (cc *ChallengeCreate) SetNillableExpiresAt(t *time.Time) *ChallengeCreate { - if t != nil { - cc.SetExpiresAt(*t) - } - return cc -} - -// Mutation returns the ChallengeMutation object of the builder. -func (cc *ChallengeCreate) Mutation() *ChallengeMutation { - return cc.mutation -} - -// Save creates the Challenge in the database. -func (cc *ChallengeCreate) Save(ctx context.Context) (*Challenge, error) { - var ( - err error - node *Challenge - ) - cc.defaults() - if len(cc.hooks) == 0 { - if err = cc.check(); err != nil { - return nil, err - } - node, err = cc.sqlSave(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*ChallengeMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - if err = cc.check(); err != nil { - return nil, err - } - cc.mutation = mutation - node, err = cc.sqlSave(ctx) - mutation.done = true - return node, err - }) - for i := len(cc.hooks) - 1; i >= 0; i-- { - mut = cc.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, cc.mutation); err != nil { - return nil, err - } - } - return node, err -} - -// SaveX calls Save and panics if Save returns an error. -func (cc *ChallengeCreate) SaveX(ctx context.Context) *Challenge { - v, err := cc.Save(ctx) - if err != nil { - panic(err) - } - return v -} - -// defaults sets the default values of the builder before save. -func (cc *ChallengeCreate) defaults() { - if _, ok := cc.mutation.CreateTime(); !ok { - v := challenge.DefaultCreateTime() - cc.mutation.SetCreateTime(v) - } - if _, ok := cc.mutation.UpdateTime(); !ok { - v := challenge.DefaultUpdateTime() - cc.mutation.SetUpdateTime(v) - } - if _, ok := cc.mutation.ExpiresAt(); !ok { - v := challenge.DefaultExpiresAt() - cc.mutation.SetExpiresAt(v) - } -} - -// check runs all checks and user-defined validators on the builder. -func (cc *ChallengeCreate) check() error { - if _, ok := cc.mutation.CreateTime(); !ok { - return &ValidationError{Name: "create_time", err: errors.New("ent: missing required field \"create_time\"")} - } - if _, ok := cc.mutation.UpdateTime(); !ok { - return &ValidationError{Name: "update_time", err: errors.New("ent: missing required field \"update_time\"")} - } - if _, ok := cc.mutation.ChallengeID(); !ok { - return &ValidationError{Name: "challenge_id", err: errors.New("ent: missing required field \"challenge_id\"")} - } - if _, ok := cc.mutation.UserID(); !ok { - return &ValidationError{Name: "user_id", err: errors.New("ent: missing required field \"user_id\"")} - } - if _, ok := cc.mutation.Human(); !ok { - return &ValidationError{Name: "human", err: errors.New("ent: missing required field \"human\"")} - } - if _, ok := cc.mutation.Magic(); !ok { - return &ValidationError{Name: "magic", err: errors.New("ent: missing required field \"magic\"")} - } - if _, ok := cc.mutation.ExpiresAt(); !ok { - return &ValidationError{Name: "expires_at", err: errors.New("ent: missing required field \"expires_at\"")} - } - return nil -} - -func (cc *ChallengeCreate) sqlSave(ctx context.Context) (*Challenge, error) { - _node, _spec := cc.createSpec() - if err := sqlgraph.CreateNode(ctx, cc.driver, _spec); err != nil { - if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - return nil, err - } - id := _spec.ID.Value.(int64) - _node.ID = int(id) - return _node, nil -} - -func (cc *ChallengeCreate) createSpec() (*Challenge, *sqlgraph.CreateSpec) { - var ( - _node = &Challenge{config: cc.config} - _spec = &sqlgraph.CreateSpec{ - Table: challenge.Table, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: challenge.FieldID, - }, - } - ) - if value, ok := cc.mutation.CreateTime(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: challenge.FieldCreateTime, - }) - _node.CreateTime = value - } - if value, ok := cc.mutation.UpdateTime(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: challenge.FieldUpdateTime, - }) - _node.UpdateTime = value - } - if value, ok := cc.mutation.ChallengeID(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeString, - Value: value, - Column: challenge.FieldChallengeID, - }) - _node.ChallengeID = value - } - if value, ok := cc.mutation.UserID(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeString, - Value: value, - Column: challenge.FieldUserID, - }) - _node.UserID = value - } - if value, ok := cc.mutation.Human(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeString, - Value: value, - Column: challenge.FieldHuman, - }) - _node.Human = value - } - if value, ok := cc.mutation.Magic(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeString, - Value: value, - Column: challenge.FieldMagic, - }) - _node.Magic = value - } - if value, ok := cc.mutation.ExpiresAt(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: challenge.FieldExpiresAt, - }) - _node.ExpiresAt = value - } - return _node, _spec -} - -// ChallengeCreateBulk is the builder for creating a bulk of Challenge entities. -type ChallengeCreateBulk struct { - config - builders []*ChallengeCreate -} - -// Save creates the Challenge entities in the database. -func (ccb *ChallengeCreateBulk) Save(ctx context.Context) ([]*Challenge, error) { - specs := make([]*sqlgraph.CreateSpec, len(ccb.builders)) - nodes := make([]*Challenge, len(ccb.builders)) - mutators := make([]Mutator, len(ccb.builders)) - for i := range ccb.builders { - func(i int, root context.Context) { - builder := ccb.builders[i] - builder.defaults() - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*ChallengeMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - if err := builder.check(); err != nil { - return nil, err - } - builder.mutation = mutation - nodes[i], specs[i] = builder.createSpec() - var err error - if i < len(mutators)-1 { - _, err = mutators[i+1].Mutate(root, ccb.builders[i+1].mutation) - } else { - // Invoke the actual operation on the latest mutation in the chain. - if err = sqlgraph.BatchCreate(ctx, ccb.driver, &sqlgraph.BatchCreateSpec{Nodes: specs}); err != nil { - if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - } - } - mutation.done = true - if err != nil { - return nil, err - } - id := specs[i].ID.Value.(int64) - nodes[i].ID = int(id) - return nodes[i], nil - }) - for i := len(builder.hooks) - 1; i >= 0; i-- { - mut = builder.hooks[i](mut) - } - mutators[i] = mut - }(i, ctx) - } - if len(mutators) > 0 { - if _, err := mutators[0].Mutate(ctx, ccb.builders[0].mutation); err != nil { - return nil, err - } - } - return nodes, nil -} - -// SaveX calls Save and panics if Save returns an error. -func (ccb *ChallengeCreateBulk) SaveX(ctx context.Context) []*Challenge { - v, err := ccb.Save(ctx) - if err != nil { - panic(err) - } - return v -} diff --git a/src/db/ent/challenge_delete.go b/src/db/ent/challenge_delete.go deleted file mode 100644 index 589cc78..0000000 --- a/src/db/ent/challenge_delete.go +++ /dev/null @@ -1,109 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "fmt" - - "github.com/facebook/ent/dialect/sql" - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/challenge" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" -) - -// ChallengeDelete is the builder for deleting a Challenge entity. -type ChallengeDelete struct { - config - hooks []Hook - mutation *ChallengeMutation - predicates []predicate.Challenge -} - -// Where adds a new predicate to the delete builder. -func (cd *ChallengeDelete) Where(ps ...predicate.Challenge) *ChallengeDelete { - cd.predicates = append(cd.predicates, ps...) - return cd -} - -// Exec executes the deletion query and returns how many vertices were deleted. -func (cd *ChallengeDelete) Exec(ctx context.Context) (int, error) { - var ( - err error - affected int - ) - if len(cd.hooks) == 0 { - affected, err = cd.sqlExec(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*ChallengeMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - cd.mutation = mutation - affected, err = cd.sqlExec(ctx) - mutation.done = true - return affected, err - }) - for i := len(cd.hooks) - 1; i >= 0; i-- { - mut = cd.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, cd.mutation); err != nil { - return 0, err - } - } - return affected, err -} - -// ExecX is like Exec, but panics if an error occurs. -func (cd *ChallengeDelete) ExecX(ctx context.Context) int { - n, err := cd.Exec(ctx) - if err != nil { - panic(err) - } - return n -} - -func (cd *ChallengeDelete) sqlExec(ctx context.Context) (int, error) { - _spec := &sqlgraph.DeleteSpec{ - Node: &sqlgraph.NodeSpec{ - Table: challenge.Table, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: challenge.FieldID, - }, - }, - } - if ps := cd.predicates; len(ps) > 0 { - _spec.Predicate = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector) - } - } - } - return sqlgraph.DeleteNodes(ctx, cd.driver, _spec) -} - -// ChallengeDeleteOne is the builder for deleting a single Challenge entity. -type ChallengeDeleteOne struct { - cd *ChallengeDelete -} - -// Exec executes the deletion query. -func (cdo *ChallengeDeleteOne) Exec(ctx context.Context) error { - n, err := cdo.cd.Exec(ctx) - switch { - case err != nil: - return err - case n == 0: - return &NotFoundError{challenge.Label} - default: - return nil - } -} - -// ExecX is like Exec, but panics if an error occurs. -func (cdo *ChallengeDeleteOne) ExecX(ctx context.Context) { - cdo.cd.ExecX(ctx) -} diff --git a/src/db/ent/challenge_query.go b/src/db/ent/challenge_query.go deleted file mode 100644 index 9de6aaf..0000000 --- a/src/db/ent/challenge_query.go +++ /dev/null @@ -1,880 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "errors" - "fmt" - "math" - - "github.com/facebook/ent/dialect/sql" - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/challenge" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" -) - -// ChallengeQuery is the builder for querying Challenge entities. -type ChallengeQuery struct { - config - limit *int - offset *int - order []OrderFunc - unique []string - predicates []predicate.Challenge - // intermediate query (i.e. traversal path). - sql *sql.Selector - path func(context.Context) (*sql.Selector, error) -} - -// Where adds a new predicate for the builder. -func (cq *ChallengeQuery) Where(ps ...predicate.Challenge) *ChallengeQuery { - cq.predicates = append(cq.predicates, ps...) - return cq -} - -// Limit adds a limit step to the query. -func (cq *ChallengeQuery) Limit(limit int) *ChallengeQuery { - cq.limit = &limit - return cq -} - -// Offset adds an offset step to the query. -func (cq *ChallengeQuery) Offset(offset int) *ChallengeQuery { - cq.offset = &offset - return cq -} - -// Order adds an order step to the query. -func (cq *ChallengeQuery) Order(o ...OrderFunc) *ChallengeQuery { - cq.order = append(cq.order, o...) - return cq -} - -// First returns the first Challenge entity in the query. Returns *NotFoundError when no challenge was found. -func (cq *ChallengeQuery) First(ctx context.Context) (*Challenge, error) { - nodes, err := cq.Limit(1).All(ctx) - if err != nil { - return nil, err - } - if len(nodes) == 0 { - return nil, &NotFoundError{challenge.Label} - } - return nodes[0], nil -} - -// FirstX is like First, but panics if an error occurs. -func (cq *ChallengeQuery) FirstX(ctx context.Context) *Challenge { - node, err := cq.First(ctx) - if err != nil && !IsNotFound(err) { - panic(err) - } - return node -} - -// FirstID returns the first Challenge id in the query. Returns *NotFoundError when no id was found. -func (cq *ChallengeQuery) FirstID(ctx context.Context) (id int, err error) { - var ids []int - if ids, err = cq.Limit(1).IDs(ctx); err != nil { - return - } - if len(ids) == 0 { - err = &NotFoundError{challenge.Label} - return - } - return ids[0], nil -} - -// FirstXID is like FirstID, but panics if an error occurs. -func (cq *ChallengeQuery) FirstXID(ctx context.Context) int { - id, err := cq.FirstID(ctx) - if err != nil && !IsNotFound(err) { - panic(err) - } - return id -} - -// Only returns the only Challenge entity in the query, returns an error if not exactly one entity was returned. -func (cq *ChallengeQuery) Only(ctx context.Context) (*Challenge, error) { - nodes, err := cq.Limit(2).All(ctx) - if err != nil { - return nil, err - } - switch len(nodes) { - case 1: - return nodes[0], nil - case 0: - return nil, &NotFoundError{challenge.Label} - default: - return nil, &NotSingularError{challenge.Label} - } -} - -// OnlyX is like Only, but panics if an error occurs. -func (cq *ChallengeQuery) OnlyX(ctx context.Context) *Challenge { - node, err := cq.Only(ctx) - if err != nil { - panic(err) - } - return node -} - -// OnlyID returns the only Challenge id in the query, returns an error if not exactly one id was returned. -func (cq *ChallengeQuery) OnlyID(ctx context.Context) (id int, err error) { - var ids []int - if ids, err = cq.Limit(2).IDs(ctx); err != nil { - return - } - switch len(ids) { - case 1: - id = ids[0] - case 0: - err = &NotFoundError{challenge.Label} - default: - err = &NotSingularError{challenge.Label} - } - return -} - -// OnlyIDX is like OnlyID, but panics if an error occurs. -func (cq *ChallengeQuery) OnlyIDX(ctx context.Context) int { - id, err := cq.OnlyID(ctx) - if err != nil { - panic(err) - } - return id -} - -// All executes the query and returns a list of Challenges. -func (cq *ChallengeQuery) All(ctx context.Context) ([]*Challenge, error) { - if err := cq.prepareQuery(ctx); err != nil { - return nil, err - } - return cq.sqlAll(ctx) -} - -// AllX is like All, but panics if an error occurs. -func (cq *ChallengeQuery) AllX(ctx context.Context) []*Challenge { - nodes, err := cq.All(ctx) - if err != nil { - panic(err) - } - return nodes -} - -// IDs executes the query and returns a list of Challenge ids. -func (cq *ChallengeQuery) IDs(ctx context.Context) ([]int, error) { - var ids []int - if err := cq.Select(challenge.FieldID).Scan(ctx, &ids); err != nil { - return nil, err - } - return ids, nil -} - -// IDsX is like IDs, but panics if an error occurs. -func (cq *ChallengeQuery) IDsX(ctx context.Context) []int { - ids, err := cq.IDs(ctx) - if err != nil { - panic(err) - } - return ids -} - -// Count returns the count of the given query. -func (cq *ChallengeQuery) Count(ctx context.Context) (int, error) { - if err := cq.prepareQuery(ctx); err != nil { - return 0, err - } - return cq.sqlCount(ctx) -} - -// CountX is like Count, but panics if an error occurs. -func (cq *ChallengeQuery) CountX(ctx context.Context) int { - count, err := cq.Count(ctx) - if err != nil { - panic(err) - } - return count -} - -// Exist returns true if the query has elements in the graph. -func (cq *ChallengeQuery) Exist(ctx context.Context) (bool, error) { - if err := cq.prepareQuery(ctx); err != nil { - return false, err - } - return cq.sqlExist(ctx) -} - -// ExistX is like Exist, but panics if an error occurs. -func (cq *ChallengeQuery) ExistX(ctx context.Context) bool { - exist, err := cq.Exist(ctx) - if err != nil { - panic(err) - } - return exist -} - -// Clone returns a duplicate of the query builder, including all associated steps. It can be -// used to prepare common query builders and use them differently after the clone is made. -func (cq *ChallengeQuery) Clone() *ChallengeQuery { - return &ChallengeQuery{ - config: cq.config, - limit: cq.limit, - offset: cq.offset, - order: append([]OrderFunc{}, cq.order...), - unique: append([]string{}, cq.unique...), - predicates: append([]predicate.Challenge{}, cq.predicates...), - // clone intermediate query. - sql: cq.sql.Clone(), - path: cq.path, - } -} - -// GroupBy used to group vertices by one or more fields/columns. -// It is often used with aggregate functions, like: count, max, mean, min, sum. -// -// Example: -// -// var v []struct { -// CreateTime time.Time `json:"create_time,omitempty"` -// Count int `json:"count,omitempty"` -// } -// -// client.Challenge.Query(). -// GroupBy(challenge.FieldCreateTime). -// Aggregate(ent.Count()). -// Scan(ctx, &v) -// -func (cq *ChallengeQuery) GroupBy(field string, fields ...string) *ChallengeGroupBy { - group := &ChallengeGroupBy{config: cq.config} - group.fields = append([]string{field}, fields...) - group.path = func(ctx context.Context) (prev *sql.Selector, err error) { - if err := cq.prepareQuery(ctx); err != nil { - return nil, err - } - return cq.sqlQuery(), nil - } - return group -} - -// Select one or more fields from the given query. -// -// Example: -// -// var v []struct { -// CreateTime time.Time `json:"create_time,omitempty"` -// } -// -// client.Challenge.Query(). -// Select(challenge.FieldCreateTime). -// Scan(ctx, &v) -// -func (cq *ChallengeQuery) Select(field string, fields ...string) *ChallengeSelect { - selector := &ChallengeSelect{config: cq.config} - selector.fields = append([]string{field}, fields...) - selector.path = func(ctx context.Context) (prev *sql.Selector, err error) { - if err := cq.prepareQuery(ctx); err != nil { - return nil, err - } - return cq.sqlQuery(), nil - } - return selector -} - -func (cq *ChallengeQuery) prepareQuery(ctx context.Context) error { - if cq.path != nil { - prev, err := cq.path(ctx) - if err != nil { - return err - } - cq.sql = prev - } - return nil -} - -func (cq *ChallengeQuery) sqlAll(ctx context.Context) ([]*Challenge, error) { - var ( - nodes = []*Challenge{} - _spec = cq.querySpec() - ) - _spec.ScanValues = func() []interface{} { - node := &Challenge{config: cq.config} - nodes = append(nodes, node) - values := node.scanValues() - return values - } - _spec.Assign = func(values ...interface{}) error { - if len(nodes) == 0 { - return fmt.Errorf("ent: Assign called without calling ScanValues") - } - node := nodes[len(nodes)-1] - return node.assignValues(values...) - } - if err := sqlgraph.QueryNodes(ctx, cq.driver, _spec); err != nil { - return nil, err - } - if len(nodes) == 0 { - return nodes, nil - } - return nodes, nil -} - -func (cq *ChallengeQuery) sqlCount(ctx context.Context) (int, error) { - _spec := cq.querySpec() - return sqlgraph.CountNodes(ctx, cq.driver, _spec) -} - -func (cq *ChallengeQuery) sqlExist(ctx context.Context) (bool, error) { - n, err := cq.sqlCount(ctx) - if err != nil { - return false, fmt.Errorf("ent: check existence: %v", err) - } - return n > 0, nil -} - -func (cq *ChallengeQuery) querySpec() *sqlgraph.QuerySpec { - _spec := &sqlgraph.QuerySpec{ - Node: &sqlgraph.NodeSpec{ - Table: challenge.Table, - Columns: challenge.Columns, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: challenge.FieldID, - }, - }, - From: cq.sql, - Unique: true, - } - if ps := cq.predicates; len(ps) > 0 { - _spec.Predicate = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector) - } - } - } - if limit := cq.limit; limit != nil { - _spec.Limit = *limit - } - if offset := cq.offset; offset != nil { - _spec.Offset = *offset - } - if ps := cq.order; len(ps) > 0 { - _spec.Order = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector, challenge.ValidColumn) - } - } - } - return _spec -} - -func (cq *ChallengeQuery) sqlQuery() *sql.Selector { - builder := sql.Dialect(cq.driver.Dialect()) - t1 := builder.Table(challenge.Table) - selector := builder.Select(t1.Columns(challenge.Columns...)...).From(t1) - if cq.sql != nil { - selector = cq.sql - selector.Select(selector.Columns(challenge.Columns...)...) - } - for _, p := range cq.predicates { - p(selector) - } - for _, p := range cq.order { - p(selector, challenge.ValidColumn) - } - if offset := cq.offset; offset != nil { - // limit is mandatory for offset clause. We start - // with default value, and override it below if needed. - selector.Offset(*offset).Limit(math.MaxInt32) - } - if limit := cq.limit; limit != nil { - selector.Limit(*limit) - } - return selector -} - -// ChallengeGroupBy is the builder for group-by Challenge entities. -type ChallengeGroupBy struct { - config - fields []string - fns []AggregateFunc - // intermediate query (i.e. traversal path). - sql *sql.Selector - path func(context.Context) (*sql.Selector, error) -} - -// Aggregate adds the given aggregation functions to the group-by query. -func (cgb *ChallengeGroupBy) Aggregate(fns ...AggregateFunc) *ChallengeGroupBy { - cgb.fns = append(cgb.fns, fns...) - return cgb -} - -// Scan applies the group-by query and scan the result into the given value. -func (cgb *ChallengeGroupBy) Scan(ctx context.Context, v interface{}) error { - query, err := cgb.path(ctx) - if err != nil { - return err - } - cgb.sql = query - return cgb.sqlScan(ctx, v) -} - -// ScanX is like Scan, but panics if an error occurs. -func (cgb *ChallengeGroupBy) ScanX(ctx context.Context, v interface{}) { - if err := cgb.Scan(ctx, v); err != nil { - panic(err) - } -} - -// Strings returns list of strings from group-by. It is only allowed when querying group-by with one field. -func (cgb *ChallengeGroupBy) Strings(ctx context.Context) ([]string, error) { - if len(cgb.fields) > 1 { - return nil, errors.New("ent: ChallengeGroupBy.Strings is not achievable when grouping more than 1 field") - } - var v []string - if err := cgb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// StringsX is like Strings, but panics if an error occurs. -func (cgb *ChallengeGroupBy) StringsX(ctx context.Context) []string { - v, err := cgb.Strings(ctx) - if err != nil { - panic(err) - } - return v -} - -// String returns a single string from group-by. It is only allowed when querying group-by with one field. -func (cgb *ChallengeGroupBy) String(ctx context.Context) (_ string, err error) { - var v []string - if v, err = cgb.Strings(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{challenge.Label} - default: - err = fmt.Errorf("ent: ChallengeGroupBy.Strings returned %d results when one was expected", len(v)) - } - return -} - -// StringX is like String, but panics if an error occurs. -func (cgb *ChallengeGroupBy) StringX(ctx context.Context) string { - v, err := cgb.String(ctx) - if err != nil { - panic(err) - } - return v -} - -// Ints returns list of ints from group-by. It is only allowed when querying group-by with one field. -func (cgb *ChallengeGroupBy) Ints(ctx context.Context) ([]int, error) { - if len(cgb.fields) > 1 { - return nil, errors.New("ent: ChallengeGroupBy.Ints is not achievable when grouping more than 1 field") - } - var v []int - if err := cgb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// IntsX is like Ints, but panics if an error occurs. -func (cgb *ChallengeGroupBy) IntsX(ctx context.Context) []int { - v, err := cgb.Ints(ctx) - if err != nil { - panic(err) - } - return v -} - -// Int returns a single int from group-by. It is only allowed when querying group-by with one field. -func (cgb *ChallengeGroupBy) Int(ctx context.Context) (_ int, err error) { - var v []int - if v, err = cgb.Ints(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{challenge.Label} - default: - err = fmt.Errorf("ent: ChallengeGroupBy.Ints returned %d results when one was expected", len(v)) - } - return -} - -// IntX is like Int, but panics if an error occurs. -func (cgb *ChallengeGroupBy) IntX(ctx context.Context) int { - v, err := cgb.Int(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64s returns list of float64s from group-by. It is only allowed when querying group-by with one field. -func (cgb *ChallengeGroupBy) Float64s(ctx context.Context) ([]float64, error) { - if len(cgb.fields) > 1 { - return nil, errors.New("ent: ChallengeGroupBy.Float64s is not achievable when grouping more than 1 field") - } - var v []float64 - if err := cgb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// Float64sX is like Float64s, but panics if an error occurs. -func (cgb *ChallengeGroupBy) Float64sX(ctx context.Context) []float64 { - v, err := cgb.Float64s(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64 returns a single float64 from group-by. It is only allowed when querying group-by with one field. -func (cgb *ChallengeGroupBy) Float64(ctx context.Context) (_ float64, err error) { - var v []float64 - if v, err = cgb.Float64s(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{challenge.Label} - default: - err = fmt.Errorf("ent: ChallengeGroupBy.Float64s returned %d results when one was expected", len(v)) - } - return -} - -// Float64X is like Float64, but panics if an error occurs. -func (cgb *ChallengeGroupBy) Float64X(ctx context.Context) float64 { - v, err := cgb.Float64(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bools returns list of bools from group-by. It is only allowed when querying group-by with one field. -func (cgb *ChallengeGroupBy) Bools(ctx context.Context) ([]bool, error) { - if len(cgb.fields) > 1 { - return nil, errors.New("ent: ChallengeGroupBy.Bools is not achievable when grouping more than 1 field") - } - var v []bool - if err := cgb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// BoolsX is like Bools, but panics if an error occurs. -func (cgb *ChallengeGroupBy) BoolsX(ctx context.Context) []bool { - v, err := cgb.Bools(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bool returns a single bool from group-by. It is only allowed when querying group-by with one field. -func (cgb *ChallengeGroupBy) Bool(ctx context.Context) (_ bool, err error) { - var v []bool - if v, err = cgb.Bools(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{challenge.Label} - default: - err = fmt.Errorf("ent: ChallengeGroupBy.Bools returned %d results when one was expected", len(v)) - } - return -} - -// BoolX is like Bool, but panics if an error occurs. -func (cgb *ChallengeGroupBy) BoolX(ctx context.Context) bool { - v, err := cgb.Bool(ctx) - if err != nil { - panic(err) - } - return v -} - -func (cgb *ChallengeGroupBy) sqlScan(ctx context.Context, v interface{}) error { - for _, f := range cgb.fields { - if !challenge.ValidColumn(f) { - return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for group-by", f)} - } - } - selector := cgb.sqlQuery() - if err := selector.Err(); err != nil { - return err - } - rows := &sql.Rows{} - query, args := selector.Query() - if err := cgb.driver.Query(ctx, query, args, rows); err != nil { - return err - } - defer rows.Close() - return sql.ScanSlice(rows, v) -} - -func (cgb *ChallengeGroupBy) sqlQuery() *sql.Selector { - selector := cgb.sql - columns := make([]string, 0, len(cgb.fields)+len(cgb.fns)) - columns = append(columns, cgb.fields...) - for _, fn := range cgb.fns { - columns = append(columns, fn(selector, challenge.ValidColumn)) - } - return selector.Select(columns...).GroupBy(cgb.fields...) -} - -// ChallengeSelect is the builder for select fields of Challenge entities. -type ChallengeSelect struct { - config - fields []string - // intermediate query (i.e. traversal path). - sql *sql.Selector - path func(context.Context) (*sql.Selector, error) -} - -// Scan applies the selector query and scan the result into the given value. -func (cs *ChallengeSelect) Scan(ctx context.Context, v interface{}) error { - query, err := cs.path(ctx) - if err != nil { - return err - } - cs.sql = query - return cs.sqlScan(ctx, v) -} - -// ScanX is like Scan, but panics if an error occurs. -func (cs *ChallengeSelect) ScanX(ctx context.Context, v interface{}) { - if err := cs.Scan(ctx, v); err != nil { - panic(err) - } -} - -// Strings returns list of strings from selector. It is only allowed when selecting one field. -func (cs *ChallengeSelect) Strings(ctx context.Context) ([]string, error) { - if len(cs.fields) > 1 { - return nil, errors.New("ent: ChallengeSelect.Strings is not achievable when selecting more than 1 field") - } - var v []string - if err := cs.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// StringsX is like Strings, but panics if an error occurs. -func (cs *ChallengeSelect) StringsX(ctx context.Context) []string { - v, err := cs.Strings(ctx) - if err != nil { - panic(err) - } - return v -} - -// String returns a single string from selector. It is only allowed when selecting one field. -func (cs *ChallengeSelect) String(ctx context.Context) (_ string, err error) { - var v []string - if v, err = cs.Strings(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{challenge.Label} - default: - err = fmt.Errorf("ent: ChallengeSelect.Strings returned %d results when one was expected", len(v)) - } - return -} - -// StringX is like String, but panics if an error occurs. -func (cs *ChallengeSelect) StringX(ctx context.Context) string { - v, err := cs.String(ctx) - if err != nil { - panic(err) - } - return v -} - -// Ints returns list of ints from selector. It is only allowed when selecting one field. -func (cs *ChallengeSelect) Ints(ctx context.Context) ([]int, error) { - if len(cs.fields) > 1 { - return nil, errors.New("ent: ChallengeSelect.Ints is not achievable when selecting more than 1 field") - } - var v []int - if err := cs.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// IntsX is like Ints, but panics if an error occurs. -func (cs *ChallengeSelect) IntsX(ctx context.Context) []int { - v, err := cs.Ints(ctx) - if err != nil { - panic(err) - } - return v -} - -// Int returns a single int from selector. It is only allowed when selecting one field. -func (cs *ChallengeSelect) Int(ctx context.Context) (_ int, err error) { - var v []int - if v, err = cs.Ints(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{challenge.Label} - default: - err = fmt.Errorf("ent: ChallengeSelect.Ints returned %d results when one was expected", len(v)) - } - return -} - -// IntX is like Int, but panics if an error occurs. -func (cs *ChallengeSelect) IntX(ctx context.Context) int { - v, err := cs.Int(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64s returns list of float64s from selector. It is only allowed when selecting one field. -func (cs *ChallengeSelect) Float64s(ctx context.Context) ([]float64, error) { - if len(cs.fields) > 1 { - return nil, errors.New("ent: ChallengeSelect.Float64s is not achievable when selecting more than 1 field") - } - var v []float64 - if err := cs.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// Float64sX is like Float64s, but panics if an error occurs. -func (cs *ChallengeSelect) Float64sX(ctx context.Context) []float64 { - v, err := cs.Float64s(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64 returns a single float64 from selector. It is only allowed when selecting one field. -func (cs *ChallengeSelect) Float64(ctx context.Context) (_ float64, err error) { - var v []float64 - if v, err = cs.Float64s(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{challenge.Label} - default: - err = fmt.Errorf("ent: ChallengeSelect.Float64s returned %d results when one was expected", len(v)) - } - return -} - -// Float64X is like Float64, but panics if an error occurs. -func (cs *ChallengeSelect) Float64X(ctx context.Context) float64 { - v, err := cs.Float64(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bools returns list of bools from selector. It is only allowed when selecting one field. -func (cs *ChallengeSelect) Bools(ctx context.Context) ([]bool, error) { - if len(cs.fields) > 1 { - return nil, errors.New("ent: ChallengeSelect.Bools is not achievable when selecting more than 1 field") - } - var v []bool - if err := cs.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// BoolsX is like Bools, but panics if an error occurs. -func (cs *ChallengeSelect) BoolsX(ctx context.Context) []bool { - v, err := cs.Bools(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bool returns a single bool from selector. It is only allowed when selecting one field. -func (cs *ChallengeSelect) Bool(ctx context.Context) (_ bool, err error) { - var v []bool - if v, err = cs.Bools(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{challenge.Label} - default: - err = fmt.Errorf("ent: ChallengeSelect.Bools returned %d results when one was expected", len(v)) - } - return -} - -// BoolX is like Bool, but panics if an error occurs. -func (cs *ChallengeSelect) BoolX(ctx context.Context) bool { - v, err := cs.Bool(ctx) - if err != nil { - panic(err) - } - return v -} - -func (cs *ChallengeSelect) sqlScan(ctx context.Context, v interface{}) error { - for _, f := range cs.fields { - if !challenge.ValidColumn(f) { - return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for selection", f)} - } - } - rows := &sql.Rows{} - query, args := cs.sqlQuery().Query() - if err := cs.driver.Query(ctx, query, args, rows); err != nil { - return err - } - defer rows.Close() - return sql.ScanSlice(rows, v) -} - -func (cs *ChallengeSelect) sqlQuery() sql.Querier { - selector := cs.sql - selector.Select(selector.Columns(cs.fields...)...) - return selector -} diff --git a/src/db/ent/challenge_update.go b/src/db/ent/challenge_update.go deleted file mode 100644 index 91fdb86..0000000 --- a/src/db/ent/challenge_update.go +++ /dev/null @@ -1,238 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "fmt" - - "github.com/facebook/ent/dialect/sql" - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/challenge" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" -) - -// ChallengeUpdate is the builder for updating Challenge entities. -type ChallengeUpdate struct { - config - hooks []Hook - mutation *ChallengeMutation - predicates []predicate.Challenge -} - -// Where adds a new predicate for the builder. -func (cu *ChallengeUpdate) Where(ps ...predicate.Challenge) *ChallengeUpdate { - cu.predicates = append(cu.predicates, ps...) - return cu -} - -// Mutation returns the ChallengeMutation object of the builder. -func (cu *ChallengeUpdate) Mutation() *ChallengeMutation { - return cu.mutation -} - -// Save executes the query and returns the number of rows/vertices matched by this operation. -func (cu *ChallengeUpdate) Save(ctx context.Context) (int, error) { - var ( - err error - affected int - ) - cu.defaults() - if len(cu.hooks) == 0 { - affected, err = cu.sqlSave(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*ChallengeMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - cu.mutation = mutation - affected, err = cu.sqlSave(ctx) - mutation.done = true - return affected, err - }) - for i := len(cu.hooks) - 1; i >= 0; i-- { - mut = cu.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, cu.mutation); err != nil { - return 0, err - } - } - return affected, err -} - -// SaveX is like Save, but panics if an error occurs. -func (cu *ChallengeUpdate) SaveX(ctx context.Context) int { - affected, err := cu.Save(ctx) - if err != nil { - panic(err) - } - return affected -} - -// Exec executes the query. -func (cu *ChallengeUpdate) Exec(ctx context.Context) error { - _, err := cu.Save(ctx) - return err -} - -// ExecX is like Exec, but panics if an error occurs. -func (cu *ChallengeUpdate) ExecX(ctx context.Context) { - if err := cu.Exec(ctx); err != nil { - panic(err) - } -} - -// defaults sets the default values of the builder before save. -func (cu *ChallengeUpdate) defaults() { - if _, ok := cu.mutation.UpdateTime(); !ok { - v := challenge.UpdateDefaultUpdateTime() - cu.mutation.SetUpdateTime(v) - } -} - -func (cu *ChallengeUpdate) sqlSave(ctx context.Context) (n int, err error) { - _spec := &sqlgraph.UpdateSpec{ - Node: &sqlgraph.NodeSpec{ - Table: challenge.Table, - Columns: challenge.Columns, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: challenge.FieldID, - }, - }, - } - if ps := cu.predicates; len(ps) > 0 { - _spec.Predicate = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector) - } - } - } - if value, ok := cu.mutation.UpdateTime(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: challenge.FieldUpdateTime, - }) - } - if n, err = sqlgraph.UpdateNodes(ctx, cu.driver, _spec); err != nil { - if _, ok := err.(*sqlgraph.NotFoundError); ok { - err = &NotFoundError{challenge.Label} - } else if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - return 0, err - } - return n, nil -} - -// ChallengeUpdateOne is the builder for updating a single Challenge entity. -type ChallengeUpdateOne struct { - config - hooks []Hook - mutation *ChallengeMutation -} - -// Mutation returns the ChallengeMutation object of the builder. -func (cuo *ChallengeUpdateOne) Mutation() *ChallengeMutation { - return cuo.mutation -} - -// Save executes the query and returns the updated entity. -func (cuo *ChallengeUpdateOne) Save(ctx context.Context) (*Challenge, error) { - var ( - err error - node *Challenge - ) - cuo.defaults() - if len(cuo.hooks) == 0 { - node, err = cuo.sqlSave(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*ChallengeMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - cuo.mutation = mutation - node, err = cuo.sqlSave(ctx) - mutation.done = true - return node, err - }) - for i := len(cuo.hooks) - 1; i >= 0; i-- { - mut = cuo.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, cuo.mutation); err != nil { - return nil, err - } - } - return node, err -} - -// SaveX is like Save, but panics if an error occurs. -func (cuo *ChallengeUpdateOne) SaveX(ctx context.Context) *Challenge { - node, err := cuo.Save(ctx) - if err != nil { - panic(err) - } - return node -} - -// Exec executes the query on the entity. -func (cuo *ChallengeUpdateOne) Exec(ctx context.Context) error { - _, err := cuo.Save(ctx) - return err -} - -// ExecX is like Exec, but panics if an error occurs. -func (cuo *ChallengeUpdateOne) ExecX(ctx context.Context) { - if err := cuo.Exec(ctx); err != nil { - panic(err) - } -} - -// defaults sets the default values of the builder before save. -func (cuo *ChallengeUpdateOne) defaults() { - if _, ok := cuo.mutation.UpdateTime(); !ok { - v := challenge.UpdateDefaultUpdateTime() - cuo.mutation.SetUpdateTime(v) - } -} - -func (cuo *ChallengeUpdateOne) sqlSave(ctx context.Context) (_node *Challenge, err error) { - _spec := &sqlgraph.UpdateSpec{ - Node: &sqlgraph.NodeSpec{ - Table: challenge.Table, - Columns: challenge.Columns, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: challenge.FieldID, - }, - }, - } - id, ok := cuo.mutation.ID() - if !ok { - return nil, &ValidationError{Name: "ID", err: fmt.Errorf("missing Challenge.ID for update")} - } - _spec.Node.ID.Value = id - if value, ok := cuo.mutation.UpdateTime(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: challenge.FieldUpdateTime, - }) - } - _node = &Challenge{config: cuo.config} - _spec.Assign = _node.assignValues - _spec.ScanValues = _node.scanValues() - if err = sqlgraph.UpdateNode(ctx, cuo.driver, _spec); err != nil { - if _, ok := err.(*sqlgraph.NotFoundError); ok { - err = &NotFoundError{challenge.Label} - } else if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - return nil, err - } - return _node, nil -} diff --git a/src/db/ent/client.go b/src/db/ent/client.go deleted file mode 100644 index dcbd744..0000000 --- a/src/db/ent/client.go +++ /dev/null @@ -1,395 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "fmt" - "log" - - "github.com/roleypoly/roleypoly/src/db/ent/migrate" - - "github.com/roleypoly/roleypoly/src/db/ent/challenge" - "github.com/roleypoly/roleypoly/src/db/ent/guild" - "github.com/roleypoly/roleypoly/src/db/ent/session" - - "github.com/facebook/ent/dialect" - "github.com/facebook/ent/dialect/sql" -) - -// Client is the client that holds all ent builders. -type Client struct { - config - // Schema is the client for creating, migrating and dropping schema. - Schema *migrate.Schema - // Challenge is the client for interacting with the Challenge builders. - Challenge *ChallengeClient - // Guild is the client for interacting with the Guild builders. - Guild *GuildClient - // Session is the client for interacting with the Session builders. - Session *SessionClient -} - -// NewClient creates a new client configured with the given options. -func NewClient(opts ...Option) *Client { - cfg := config{log: log.Println, hooks: &hooks{}} - cfg.options(opts...) - client := &Client{config: cfg} - client.init() - return client -} - -func (c *Client) init() { - c.Schema = migrate.NewSchema(c.driver) - c.Challenge = NewChallengeClient(c.config) - c.Guild = NewGuildClient(c.config) - c.Session = NewSessionClient(c.config) -} - -// Open opens a database/sql.DB specified by the driver name and -// the data source name, and returns a new client attached to it. -// Optional parameters can be added for configuring the client. -func Open(driverName, dataSourceName string, options ...Option) (*Client, error) { - switch driverName { - case dialect.MySQL, dialect.Postgres, dialect.SQLite: - drv, err := sql.Open(driverName, dataSourceName) - if err != nil { - return nil, err - } - return NewClient(append(options, Driver(drv))...), nil - default: - return nil, fmt.Errorf("unsupported driver: %q", driverName) - } -} - -// Tx returns a new transactional client. The provided context -// is used until the transaction is committed or rolled back. -func (c *Client) Tx(ctx context.Context) (*Tx, error) { - if _, ok := c.driver.(*txDriver); ok { - return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") - } - tx, err := newTx(ctx, c.driver) - if err != nil { - return nil, fmt.Errorf("ent: starting a transaction: %v", err) - } - cfg := config{driver: tx, log: c.log, debug: c.debug, hooks: c.hooks} - return &Tx{ - ctx: ctx, - config: cfg, - Challenge: NewChallengeClient(cfg), - Guild: NewGuildClient(cfg), - Session: NewSessionClient(cfg), - }, nil -} - -// BeginTx returns a transactional client with options. -func (c *Client) BeginTx(ctx context.Context, opts *sql.TxOptions) (*Tx, error) { - if _, ok := c.driver.(*txDriver); ok { - return nil, fmt.Errorf("ent: cannot start a transaction within a transaction") - } - tx, err := c.driver.(*sql.Driver).BeginTx(ctx, opts) - if err != nil { - return nil, fmt.Errorf("ent: starting a transaction: %v", err) - } - cfg := config{driver: &txDriver{tx: tx, drv: c.driver}, log: c.log, debug: c.debug, hooks: c.hooks} - return &Tx{ - config: cfg, - Challenge: NewChallengeClient(cfg), - Guild: NewGuildClient(cfg), - Session: NewSessionClient(cfg), - }, nil -} - -// Debug returns a new debug-client. It's used to get verbose logging on specific operations. -// -// client.Debug(). -// Challenge. -// Query(). -// Count(ctx) -// -func (c *Client) Debug() *Client { - if c.debug { - return c - } - cfg := config{driver: dialect.Debug(c.driver, c.log), log: c.log, debug: true, hooks: c.hooks} - client := &Client{config: cfg} - client.init() - return client -} - -// Close closes the database connection and prevents new queries from starting. -func (c *Client) Close() error { - return c.driver.Close() -} - -// Use adds the mutation hooks to all the entity clients. -// In order to add hooks to a specific client, call: `client.Node.Use(...)`. -func (c *Client) Use(hooks ...Hook) { - c.Challenge.Use(hooks...) - c.Guild.Use(hooks...) - c.Session.Use(hooks...) -} - -// ChallengeClient is a client for the Challenge schema. -type ChallengeClient struct { - config -} - -// NewChallengeClient returns a client for the Challenge from the given config. -func NewChallengeClient(c config) *ChallengeClient { - return &ChallengeClient{config: c} -} - -// Use adds a list of mutation hooks to the hooks stack. -// A call to `Use(f, g, h)` equals to `challenge.Hooks(f(g(h())))`. -func (c *ChallengeClient) Use(hooks ...Hook) { - c.hooks.Challenge = append(c.hooks.Challenge, hooks...) -} - -// Create returns a create builder for Challenge. -func (c *ChallengeClient) Create() *ChallengeCreate { - mutation := newChallengeMutation(c.config, OpCreate) - return &ChallengeCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// BulkCreate returns a builder for creating a bulk of Challenge entities. -func (c *ChallengeClient) CreateBulk(builders ...*ChallengeCreate) *ChallengeCreateBulk { - return &ChallengeCreateBulk{config: c.config, builders: builders} -} - -// Update returns an update builder for Challenge. -func (c *ChallengeClient) Update() *ChallengeUpdate { - mutation := newChallengeMutation(c.config, OpUpdate) - return &ChallengeUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// UpdateOne returns an update builder for the given entity. -func (c *ChallengeClient) UpdateOne(ch *Challenge) *ChallengeUpdateOne { - mutation := newChallengeMutation(c.config, OpUpdateOne, withChallenge(ch)) - return &ChallengeUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// UpdateOneID returns an update builder for the given id. -func (c *ChallengeClient) UpdateOneID(id int) *ChallengeUpdateOne { - mutation := newChallengeMutation(c.config, OpUpdateOne, withChallengeID(id)) - return &ChallengeUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// Delete returns a delete builder for Challenge. -func (c *ChallengeClient) Delete() *ChallengeDelete { - mutation := newChallengeMutation(c.config, OpDelete) - return &ChallengeDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// DeleteOne returns a delete builder for the given entity. -func (c *ChallengeClient) DeleteOne(ch *Challenge) *ChallengeDeleteOne { - return c.DeleteOneID(ch.ID) -} - -// DeleteOneID returns a delete builder for the given id. -func (c *ChallengeClient) DeleteOneID(id int) *ChallengeDeleteOne { - builder := c.Delete().Where(challenge.ID(id)) - builder.mutation.id = &id - builder.mutation.op = OpDeleteOne - return &ChallengeDeleteOne{builder} -} - -// Query returns a query builder for Challenge. -func (c *ChallengeClient) Query() *ChallengeQuery { - return &ChallengeQuery{config: c.config} -} - -// Get returns a Challenge entity by its id. -func (c *ChallengeClient) Get(ctx context.Context, id int) (*Challenge, error) { - return c.Query().Where(challenge.ID(id)).Only(ctx) -} - -// GetX is like Get, but panics if an error occurs. -func (c *ChallengeClient) GetX(ctx context.Context, id int) *Challenge { - obj, err := c.Get(ctx, id) - if err != nil { - panic(err) - } - return obj -} - -// Hooks returns the client hooks. -func (c *ChallengeClient) Hooks() []Hook { - return c.hooks.Challenge -} - -// GuildClient is a client for the Guild schema. -type GuildClient struct { - config -} - -// NewGuildClient returns a client for the Guild from the given config. -func NewGuildClient(c config) *GuildClient { - return &GuildClient{config: c} -} - -// Use adds a list of mutation hooks to the hooks stack. -// A call to `Use(f, g, h)` equals to `guild.Hooks(f(g(h())))`. -func (c *GuildClient) Use(hooks ...Hook) { - c.hooks.Guild = append(c.hooks.Guild, hooks...) -} - -// Create returns a create builder for Guild. -func (c *GuildClient) Create() *GuildCreate { - mutation := newGuildMutation(c.config, OpCreate) - return &GuildCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// BulkCreate returns a builder for creating a bulk of Guild entities. -func (c *GuildClient) CreateBulk(builders ...*GuildCreate) *GuildCreateBulk { - return &GuildCreateBulk{config: c.config, builders: builders} -} - -// Update returns an update builder for Guild. -func (c *GuildClient) Update() *GuildUpdate { - mutation := newGuildMutation(c.config, OpUpdate) - return &GuildUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// UpdateOne returns an update builder for the given entity. -func (c *GuildClient) UpdateOne(gu *Guild) *GuildUpdateOne { - mutation := newGuildMutation(c.config, OpUpdateOne, withGuild(gu)) - return &GuildUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// UpdateOneID returns an update builder for the given id. -func (c *GuildClient) UpdateOneID(id int) *GuildUpdateOne { - mutation := newGuildMutation(c.config, OpUpdateOne, withGuildID(id)) - return &GuildUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// Delete returns a delete builder for Guild. -func (c *GuildClient) Delete() *GuildDelete { - mutation := newGuildMutation(c.config, OpDelete) - return &GuildDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// DeleteOne returns a delete builder for the given entity. -func (c *GuildClient) DeleteOne(gu *Guild) *GuildDeleteOne { - return c.DeleteOneID(gu.ID) -} - -// DeleteOneID returns a delete builder for the given id. -func (c *GuildClient) DeleteOneID(id int) *GuildDeleteOne { - builder := c.Delete().Where(guild.ID(id)) - builder.mutation.id = &id - builder.mutation.op = OpDeleteOne - return &GuildDeleteOne{builder} -} - -// Query returns a query builder for Guild. -func (c *GuildClient) Query() *GuildQuery { - return &GuildQuery{config: c.config} -} - -// Get returns a Guild entity by its id. -func (c *GuildClient) Get(ctx context.Context, id int) (*Guild, error) { - return c.Query().Where(guild.ID(id)).Only(ctx) -} - -// GetX is like Get, but panics if an error occurs. -func (c *GuildClient) GetX(ctx context.Context, id int) *Guild { - obj, err := c.Get(ctx, id) - if err != nil { - panic(err) - } - return obj -} - -// Hooks returns the client hooks. -func (c *GuildClient) Hooks() []Hook { - return c.hooks.Guild -} - -// SessionClient is a client for the Session schema. -type SessionClient struct { - config -} - -// NewSessionClient returns a client for the Session from the given config. -func NewSessionClient(c config) *SessionClient { - return &SessionClient{config: c} -} - -// Use adds a list of mutation hooks to the hooks stack. -// A call to `Use(f, g, h)` equals to `session.Hooks(f(g(h())))`. -func (c *SessionClient) Use(hooks ...Hook) { - c.hooks.Session = append(c.hooks.Session, hooks...) -} - -// Create returns a create builder for Session. -func (c *SessionClient) Create() *SessionCreate { - mutation := newSessionMutation(c.config, OpCreate) - return &SessionCreate{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// BulkCreate returns a builder for creating a bulk of Session entities. -func (c *SessionClient) CreateBulk(builders ...*SessionCreate) *SessionCreateBulk { - return &SessionCreateBulk{config: c.config, builders: builders} -} - -// Update returns an update builder for Session. -func (c *SessionClient) Update() *SessionUpdate { - mutation := newSessionMutation(c.config, OpUpdate) - return &SessionUpdate{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// UpdateOne returns an update builder for the given entity. -func (c *SessionClient) UpdateOne(s *Session) *SessionUpdateOne { - mutation := newSessionMutation(c.config, OpUpdateOne, withSession(s)) - return &SessionUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// UpdateOneID returns an update builder for the given id. -func (c *SessionClient) UpdateOneID(id int) *SessionUpdateOne { - mutation := newSessionMutation(c.config, OpUpdateOne, withSessionID(id)) - return &SessionUpdateOne{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// Delete returns a delete builder for Session. -func (c *SessionClient) Delete() *SessionDelete { - mutation := newSessionMutation(c.config, OpDelete) - return &SessionDelete{config: c.config, hooks: c.Hooks(), mutation: mutation} -} - -// DeleteOne returns a delete builder for the given entity. -func (c *SessionClient) DeleteOne(s *Session) *SessionDeleteOne { - return c.DeleteOneID(s.ID) -} - -// DeleteOneID returns a delete builder for the given id. -func (c *SessionClient) DeleteOneID(id int) *SessionDeleteOne { - builder := c.Delete().Where(session.ID(id)) - builder.mutation.id = &id - builder.mutation.op = OpDeleteOne - return &SessionDeleteOne{builder} -} - -// Query returns a query builder for Session. -func (c *SessionClient) Query() *SessionQuery { - return &SessionQuery{config: c.config} -} - -// Get returns a Session entity by its id. -func (c *SessionClient) Get(ctx context.Context, id int) (*Session, error) { - return c.Query().Where(session.ID(id)).Only(ctx) -} - -// GetX is like Get, but panics if an error occurs. -func (c *SessionClient) GetX(ctx context.Context, id int) *Session { - obj, err := c.Get(ctx, id) - if err != nil { - panic(err) - } - return obj -} - -// Hooks returns the client hooks. -func (c *SessionClient) Hooks() []Hook { - return c.hooks.Session -} diff --git a/src/db/ent/config.go b/src/db/ent/config.go deleted file mode 100644 index 437a4b5..0000000 --- a/src/db/ent/config.go +++ /dev/null @@ -1,61 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "github.com/facebook/ent" - "github.com/facebook/ent/dialect" -) - -// Option function to configure the client. -type Option func(*config) - -// Config is the configuration for the client and its builder. -type config struct { - // driver used for executing database requests. - driver dialect.Driver - // debug enable a debug logging. - debug bool - // log used for logging on debug mode. - log func(...interface{}) - // hooks to execute on mutations. - hooks *hooks -} - -// hooks per client, for fast access. -type hooks struct { - Challenge []ent.Hook - Guild []ent.Hook - Session []ent.Hook -} - -// Options applies the options on the config object. -func (c *config) options(opts ...Option) { - for _, opt := range opts { - opt(c) - } - if c.debug { - c.driver = dialect.Debug(c.driver, c.log) - } -} - -// Debug enables debug logging on the ent.Driver. -func Debug() Option { - return func(c *config) { - c.debug = true - } -} - -// Log sets the logging function for debug mode. -func Log(fn func(...interface{})) Option { - return func(c *config) { - c.log = fn - } -} - -// Driver configures the client driver. -func Driver(driver dialect.Driver) Option { - return func(c *config) { - c.driver = driver - } -} diff --git a/src/db/ent/context.go b/src/db/ent/context.go deleted file mode 100644 index b432b59..0000000 --- a/src/db/ent/context.go +++ /dev/null @@ -1,33 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" -) - -type clientCtxKey struct{} - -// FromContext returns the Client stored in a context, or nil if there isn't one. -func FromContext(ctx context.Context) *Client { - c, _ := ctx.Value(clientCtxKey{}).(*Client) - return c -} - -// NewContext returns a new context with the given Client attached. -func NewContext(parent context.Context, c *Client) context.Context { - return context.WithValue(parent, clientCtxKey{}, c) -} - -type txCtxKey struct{} - -// TxFromContext returns the Tx stored in a context, or nil if there isn't one. -func TxFromContext(ctx context.Context) *Tx { - tx, _ := ctx.Value(txCtxKey{}).(*Tx) - return tx -} - -// NewTxContext returns a new context with the given Client attached. -func NewTxContext(parent context.Context, tx *Tx) context.Context { - return context.WithValue(parent, txCtxKey{}, tx) -} diff --git a/src/db/ent/ent.go b/src/db/ent/ent.go deleted file mode 100644 index 587180b..0000000 --- a/src/db/ent/ent.go +++ /dev/null @@ -1,270 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "errors" - "fmt" - "strings" - - "github.com/facebook/ent" - "github.com/facebook/ent/dialect" - "github.com/facebook/ent/dialect/sql" - "github.com/facebook/ent/dialect/sql/sqlgraph" -) - -// ent aliases to avoid import conflict in user's code. -type ( - Op = ent.Op - Hook = ent.Hook - Value = ent.Value - Query = ent.Query - Policy = ent.Policy - Mutator = ent.Mutator - Mutation = ent.Mutation - MutateFunc = ent.MutateFunc -) - -// OrderFunc applies an ordering on the sql selector. -type OrderFunc func(*sql.Selector, func(string) bool) - -// Asc applies the given fields in ASC order. -func Asc(fields ...string) OrderFunc { - return func(s *sql.Selector, check func(string) bool) { - for _, f := range fields { - if check(f) { - s.OrderBy(sql.Asc(f)) - } else { - s.AddError(&ValidationError{Name: f, err: fmt.Errorf("invalid field %q for ordering", f)}) - } - } - } -} - -// Desc applies the given fields in DESC order. -func Desc(fields ...string) OrderFunc { - return func(s *sql.Selector, check func(string) bool) { - for _, f := range fields { - if check(f) { - s.OrderBy(sql.Desc(f)) - } else { - s.AddError(&ValidationError{Name: f, err: fmt.Errorf("invalid field %q for ordering", f)}) - } - } - } -} - -// AggregateFunc applies an aggregation step on the group-by traversal/selector. -type AggregateFunc func(*sql.Selector, func(string) bool) string - -// As is a pseudo aggregation function for renaming another other functions with custom names. For example: -// -// GroupBy(field1, field2). -// Aggregate(ent.As(ent.Sum(field1), "sum_field1"), (ent.As(ent.Sum(field2), "sum_field2")). -// Scan(ctx, &v) -// -func As(fn AggregateFunc, end string) AggregateFunc { - return func(s *sql.Selector, check func(string) bool) string { - return sql.As(fn(s, check), end) - } -} - -// Count applies the "count" aggregation function on each group. -func Count() AggregateFunc { - return func(s *sql.Selector, _ func(string) bool) string { - return sql.Count("*") - } -} - -// Max applies the "max" aggregation function on the given field of each group. -func Max(field string) AggregateFunc { - return func(s *sql.Selector, check func(string) bool) string { - if !check(field) { - s.AddError(&ValidationError{Name: field, err: fmt.Errorf("invalid field %q for grouping", field)}) - return "" - } - return sql.Max(s.C(field)) - } -} - -// Mean applies the "mean" aggregation function on the given field of each group. -func Mean(field string) AggregateFunc { - return func(s *sql.Selector, check func(string) bool) string { - if !check(field) { - s.AddError(&ValidationError{Name: field, err: fmt.Errorf("invalid field %q for grouping", field)}) - return "" - } - return sql.Avg(s.C(field)) - } -} - -// Min applies the "min" aggregation function on the given field of each group. -func Min(field string) AggregateFunc { - return func(s *sql.Selector, check func(string) bool) string { - if !check(field) { - s.AddError(&ValidationError{Name: field, err: fmt.Errorf("invalid field %q for grouping", field)}) - return "" - } - return sql.Min(s.C(field)) - } -} - -// Sum applies the "sum" aggregation function on the given field of each group. -func Sum(field string) AggregateFunc { - return func(s *sql.Selector, check func(string) bool) string { - if !check(field) { - s.AddError(&ValidationError{Name: field, err: fmt.Errorf("invalid field %q for grouping", field)}) - return "" - } - return sql.Sum(s.C(field)) - } -} - -// ValidationError returns when validating a field fails. -type ValidationError struct { - Name string // Field or edge name. - err error -} - -// Error implements the error interface. -func (e *ValidationError) Error() string { - return e.err.Error() -} - -// Unwrap implements the errors.Wrapper interface. -func (e *ValidationError) Unwrap() error { - return e.err -} - -// IsValidationError returns a boolean indicating whether the error is a validaton error. -func IsValidationError(err error) bool { - if err == nil { - return false - } - var e *ValidationError - return errors.As(err, &e) -} - -// NotFoundError returns when trying to fetch a specific entity and it was not found in the database. -type NotFoundError struct { - label string -} - -// Error implements the error interface. -func (e *NotFoundError) Error() string { - return "ent: " + e.label + " not found" -} - -// IsNotFound returns a boolean indicating whether the error is a not found error. -func IsNotFound(err error) bool { - if err == nil { - return false - } - var e *NotFoundError - return errors.As(err, &e) -} - -// MaskNotFound masks nor found error. -func MaskNotFound(err error) error { - if IsNotFound(err) { - return nil - } - return err -} - -// NotSingularError returns when trying to fetch a singular entity and more then one was found in the database. -type NotSingularError struct { - label string -} - -// Error implements the error interface. -func (e *NotSingularError) Error() string { - return "ent: " + e.label + " not singular" -} - -// IsNotSingular returns a boolean indicating whether the error is a not singular error. -func IsNotSingular(err error) bool { - if err == nil { - return false - } - var e *NotSingularError - return errors.As(err, &e) -} - -// NotLoadedError returns when trying to get a node that was not loaded by the query. -type NotLoadedError struct { - edge string -} - -// Error implements the error interface. -func (e *NotLoadedError) Error() string { - return "ent: " + e.edge + " edge was not loaded" -} - -// IsNotLoaded returns a boolean indicating whether the error is a not loaded error. -func IsNotLoaded(err error) bool { - if err == nil { - return false - } - var e *NotLoadedError - return errors.As(err, &e) -} - -// ConstraintError returns when trying to create/update one or more entities and -// one or more of their constraints failed. For example, violation of edge or -// field uniqueness. -type ConstraintError struct { - msg string - wrap error -} - -// Error implements the error interface. -func (e ConstraintError) Error() string { - return "ent: constraint failed: " + e.msg -} - -// Unwrap implements the errors.Wrapper interface. -func (e *ConstraintError) Unwrap() error { - return e.wrap -} - -// IsConstraintError returns a boolean indicating whether the error is a constraint failure. -func IsConstraintError(err error) bool { - if err == nil { - return false - } - var e *ConstraintError - return errors.As(err, &e) -} - -func isSQLConstraintError(err error) (*ConstraintError, bool) { - var ( - msg = err.Error() - // error format per dialect. - errors = [...]string{ - "Error 1062", // MySQL 1062 error (ER_DUP_ENTRY). - "UNIQUE constraint failed", // SQLite. - "duplicate key value violates unique constraint", // PostgreSQL. - } - ) - if _, ok := err.(*sqlgraph.ConstraintError); ok { - return &ConstraintError{msg, err}, true - } - for i := range errors { - if strings.Contains(msg, errors[i]) { - return &ConstraintError{msg, err}, true - } - } - return nil, false -} - -// rollback calls to tx.Rollback and wraps the given error with the rollback error if occurred. -func rollback(tx dialect.Tx, err error) error { - if rerr := tx.Rollback(); rerr != nil { - err = fmt.Errorf("%s: %v", err.Error(), rerr) - } - if err, ok := isSQLConstraintError(err); ok { - return err - } - return err -} diff --git a/src/db/ent/enttest/BUILD.bazel b/src/db/ent/enttest/BUILD.bazel deleted file mode 100644 index 4583471..0000000 --- a/src/db/ent/enttest/BUILD.bazel +++ /dev/null @@ -1,13 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "enttest", - srcs = ["enttest.go"], - importpath = "github.com/roleypoly/roleypoly/src/db/ent/enttest", - visibility = ["//visibility:public"], - deps = [ - "//src/db/ent", - "//src/db/ent/runtime", - "@com_github_facebook_ent//dialect/sql/schema", - ], -) diff --git a/src/db/ent/enttest/enttest.go b/src/db/ent/enttest/enttest.go deleted file mode 100644 index 5d8168c..0000000 --- a/src/db/ent/enttest/enttest.go +++ /dev/null @@ -1,78 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package enttest - -import ( - "context" - - "github.com/roleypoly/roleypoly/src/db/ent" - // required by schema hooks. - _ "github.com/roleypoly/roleypoly/src/db/ent/runtime" - - "github.com/facebook/ent/dialect/sql/schema" -) - -type ( - // TestingT is the interface that is shared between - // testing.T and testing.B and used by enttest. - TestingT interface { - FailNow() - Error(...interface{}) - } - - // Option configures client creation. - Option func(*options) - - options struct { - opts []ent.Option - migrateOpts []schema.MigrateOption - } -) - -// WithOptions forwards options to client creation. -func WithOptions(opts ...ent.Option) Option { - return func(o *options) { - o.opts = append(o.opts, opts...) - } -} - -// WithMigrateOptions forwards options to auto migration. -func WithMigrateOptions(opts ...schema.MigrateOption) Option { - return func(o *options) { - o.migrateOpts = append(o.migrateOpts, opts...) - } -} - -func newOptions(opts []Option) *options { - o := &options{} - for _, opt := range opts { - opt(o) - } - return o -} - -// Open calls ent.Open and auto-run migration. -func Open(t TestingT, driverName, dataSourceName string, opts ...Option) *ent.Client { - o := newOptions(opts) - c, err := ent.Open(driverName, dataSourceName, o.opts...) - if err != nil { - t.Error(err) - t.FailNow() - } - if err := c.Schema.Create(context.Background(), o.migrateOpts...); err != nil { - t.Error(err) - t.FailNow() - } - return c -} - -// NewClient calls ent.NewClient and auto-run migration. -func NewClient(t TestingT, opts ...Option) *ent.Client { - o := newOptions(opts) - c := ent.NewClient(o.opts...) - if err := c.Schema.Create(context.Background(), o.migrateOpts...); err != nil { - t.Error(err) - t.FailNow() - } - return c -} diff --git a/src/db/ent/generate.go b/src/db/ent/generate.go deleted file mode 100644 index 520f2fd..0000000 --- a/src/db/ent/generate.go +++ /dev/null @@ -1,3 +0,0 @@ -package ent - -//go:generate go run github.com/facebook/ent/cmd/entc generate ./schema diff --git a/src/db/ent/guild.go b/src/db/ent/guild.go deleted file mode 100644 index d90e8a3..0000000 --- a/src/db/ent/guild.go +++ /dev/null @@ -1,145 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "encoding/json" - "fmt" - "strings" - "time" - - "github.com/facebook/ent/dialect/sql" - "github.com/roleypoly/roleypoly/src/db/ent/guild" - "github.com/roleypoly/roleypoly/src/db/ent/schema" -) - -// Guild is the model entity for the Guild schema. -type Guild struct { - config `json:"-"` - // ID of the ent. - ID int `json:"id,omitempty"` - // CreateTime holds the value of the "create_time" field. - CreateTime time.Time `json:"create_time,omitempty"` - // UpdateTime holds the value of the "update_time" field. - UpdateTime time.Time `json:"update_time,omitempty"` - // Snowflake holds the value of the "snowflake" field. - Snowflake string `json:"snowflake,omitempty"` - // Message holds the value of the "message" field. - Message string `json:"message,omitempty"` - // Categories holds the value of the "categories" field. - Categories []schema.Category `json:"categories,omitempty"` - // Entitlements holds the value of the "entitlements" field. - Entitlements []string `json:"entitlements,omitempty"` -} - -// scanValues returns the types for scanning values from sql.Rows. -func (*Guild) scanValues() []interface{} { - return []interface{}{ - &sql.NullInt64{}, // id - &sql.NullTime{}, // create_time - &sql.NullTime{}, // update_time - &sql.NullString{}, // snowflake - &sql.NullString{}, // message - &[]byte{}, // categories - &[]byte{}, // entitlements - } -} - -// assignValues assigns the values that were returned from sql.Rows (after scanning) -// to the Guild fields. -func (gu *Guild) assignValues(values ...interface{}) error { - if m, n := len(values), len(guild.Columns); m < n { - return fmt.Errorf("mismatch number of scan values: %d != %d", m, n) - } - value, ok := values[0].(*sql.NullInt64) - if !ok { - return fmt.Errorf("unexpected type %T for field id", value) - } - gu.ID = int(value.Int64) - values = values[1:] - if value, ok := values[0].(*sql.NullTime); !ok { - return fmt.Errorf("unexpected type %T for field create_time", values[0]) - } else if value.Valid { - gu.CreateTime = value.Time - } - if value, ok := values[1].(*sql.NullTime); !ok { - return fmt.Errorf("unexpected type %T for field update_time", values[1]) - } else if value.Valid { - gu.UpdateTime = value.Time - } - if value, ok := values[2].(*sql.NullString); !ok { - return fmt.Errorf("unexpected type %T for field snowflake", values[2]) - } else if value.Valid { - gu.Snowflake = value.String - } - if value, ok := values[3].(*sql.NullString); !ok { - return fmt.Errorf("unexpected type %T for field message", values[3]) - } else if value.Valid { - gu.Message = value.String - } - - if value, ok := values[4].(*[]byte); !ok { - return fmt.Errorf("unexpected type %T for field categories", values[4]) - } else if value != nil && len(*value) > 0 { - if err := json.Unmarshal(*value, &gu.Categories); err != nil { - return fmt.Errorf("unmarshal field categories: %v", err) - } - } - - if value, ok := values[5].(*[]byte); !ok { - return fmt.Errorf("unexpected type %T for field entitlements", values[5]) - } else if value != nil && len(*value) > 0 { - if err := json.Unmarshal(*value, &gu.Entitlements); err != nil { - return fmt.Errorf("unmarshal field entitlements: %v", err) - } - } - return nil -} - -// Update returns a builder for updating this Guild. -// Note that, you need to call Guild.Unwrap() before calling this method, if this Guild -// was returned from a transaction, and the transaction was committed or rolled back. -func (gu *Guild) Update() *GuildUpdateOne { - return (&GuildClient{config: gu.config}).UpdateOne(gu) -} - -// Unwrap unwraps the entity that was returned from a transaction after it was closed, -// so that all next queries will be executed through the driver which created the transaction. -func (gu *Guild) Unwrap() *Guild { - tx, ok := gu.config.driver.(*txDriver) - if !ok { - panic("ent: Guild is not a transactional entity") - } - gu.config.driver = tx.drv - return gu -} - -// String implements the fmt.Stringer. -func (gu *Guild) String() string { - var builder strings.Builder - builder.WriteString("Guild(") - builder.WriteString(fmt.Sprintf("id=%v", gu.ID)) - builder.WriteString(", create_time=") - builder.WriteString(gu.CreateTime.Format(time.ANSIC)) - builder.WriteString(", update_time=") - builder.WriteString(gu.UpdateTime.Format(time.ANSIC)) - builder.WriteString(", snowflake=") - builder.WriteString(gu.Snowflake) - builder.WriteString(", message=") - builder.WriteString(gu.Message) - builder.WriteString(", categories=") - builder.WriteString(fmt.Sprintf("%v", gu.Categories)) - builder.WriteString(", entitlements=") - builder.WriteString(fmt.Sprintf("%v", gu.Entitlements)) - builder.WriteByte(')') - return builder.String() -} - -// Guilds is a parsable slice of Guild. -type Guilds []*Guild - -func (gu Guilds) config(cfg config) { - for _i := range gu { - gu[_i].config = cfg - } -} diff --git a/src/db/ent/guild/BUILD.bazel b/src/db/ent/guild/BUILD.bazel deleted file mode 100644 index c427ae2..0000000 --- a/src/db/ent/guild/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "guild", - srcs = [ - "guild.go", - "where.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/db/ent/guild", - visibility = ["//visibility:public"], - deps = [ - "//src/db/ent/predicate", - "@com_github_facebook_ent//dialect/sql", - ], -) diff --git a/src/db/ent/guild/guild.go b/src/db/ent/guild/guild.go deleted file mode 100644 index 3111bb5..0000000 --- a/src/db/ent/guild/guild.go +++ /dev/null @@ -1,59 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package guild - -import ( - "time" -) - -const ( - // Label holds the string label denoting the guild type in the database. - Label = "guild" - // FieldID holds the string denoting the id field in the database. - FieldID = "id" - // FieldCreateTime holds the string denoting the create_time field in the database. - FieldCreateTime = "create_time" - // FieldUpdateTime holds the string denoting the update_time field in the database. - FieldUpdateTime = "update_time" - // FieldSnowflake holds the string denoting the snowflake field in the database. - FieldSnowflake = "snowflake" - // FieldMessage holds the string denoting the message field in the database. - FieldMessage = "message" - // FieldCategories holds the string denoting the categories field in the database. - FieldCategories = "categories" - // FieldEntitlements holds the string denoting the entitlements field in the database. - FieldEntitlements = "entitlements" - - // Table holds the table name of the guild in the database. - Table = "guilds" -) - -// Columns holds all SQL columns for guild fields. -var Columns = []string{ - FieldID, - FieldCreateTime, - FieldUpdateTime, - FieldSnowflake, - FieldMessage, - FieldCategories, - FieldEntitlements, -} - -// ValidColumn reports if the column name is valid (part of the table columns). -func ValidColumn(column string) bool { - for i := range Columns { - if column == Columns[i] { - return true - } - } - return false -} - -var ( - // DefaultCreateTime holds the default value on creation for the create_time field. - DefaultCreateTime func() time.Time - // DefaultUpdateTime holds the default value on creation for the update_time field. - DefaultUpdateTime func() time.Time - // UpdateDefaultUpdateTime holds the default value on update for the update_time field. - UpdateDefaultUpdateTime func() time.Time -) diff --git a/src/db/ent/guild/where.go b/src/db/ent/guild/where.go deleted file mode 100644 index e8057d2..0000000 --- a/src/db/ent/guild/where.go +++ /dev/null @@ -1,527 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package guild - -import ( - "time" - - "github.com/facebook/ent/dialect/sql" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" -) - -// ID filters vertices based on their identifier. -func ID(id int) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldID), id)) - }) -} - -// IDEQ applies the EQ predicate on the ID field. -func IDEQ(id int) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldID), id)) - }) -} - -// IDNEQ applies the NEQ predicate on the ID field. -func IDNEQ(id int) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldID), id)) - }) -} - -// IDIn applies the In predicate on the ID field. -func IDIn(ids ...int) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(ids) == 0 { - s.Where(sql.False()) - return - } - v := make([]interface{}, len(ids)) - for i := range v { - v[i] = ids[i] - } - s.Where(sql.In(s.C(FieldID), v...)) - }) -} - -// IDNotIn applies the NotIn predicate on the ID field. -func IDNotIn(ids ...int) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(ids) == 0 { - s.Where(sql.False()) - return - } - v := make([]interface{}, len(ids)) - for i := range v { - v[i] = ids[i] - } - s.Where(sql.NotIn(s.C(FieldID), v...)) - }) -} - -// IDGT applies the GT predicate on the ID field. -func IDGT(id int) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldID), id)) - }) -} - -// IDGTE applies the GTE predicate on the ID field. -func IDGTE(id int) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldID), id)) - }) -} - -// IDLT applies the LT predicate on the ID field. -func IDLT(id int) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldID), id)) - }) -} - -// IDLTE applies the LTE predicate on the ID field. -func IDLTE(id int) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldID), id)) - }) -} - -// CreateTime applies equality check predicate on the "create_time" field. It's identical to CreateTimeEQ. -func CreateTime(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldCreateTime), v)) - }) -} - -// UpdateTime applies equality check predicate on the "update_time" field. It's identical to UpdateTimeEQ. -func UpdateTime(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldUpdateTime), v)) - }) -} - -// Snowflake applies equality check predicate on the "snowflake" field. It's identical to SnowflakeEQ. -func Snowflake(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldSnowflake), v)) - }) -} - -// Message applies equality check predicate on the "message" field. It's identical to MessageEQ. -func Message(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldMessage), v)) - }) -} - -// CreateTimeEQ applies the EQ predicate on the "create_time" field. -func CreateTimeEQ(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeNEQ applies the NEQ predicate on the "create_time" field. -func CreateTimeNEQ(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeIn applies the In predicate on the "create_time" field. -func CreateTimeIn(vs ...time.Time) predicate.Guild { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Guild(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldCreateTime), v...)) - }) -} - -// CreateTimeNotIn applies the NotIn predicate on the "create_time" field. -func CreateTimeNotIn(vs ...time.Time) predicate.Guild { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Guild(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldCreateTime), v...)) - }) -} - -// CreateTimeGT applies the GT predicate on the "create_time" field. -func CreateTimeGT(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeGTE applies the GTE predicate on the "create_time" field. -func CreateTimeGTE(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeLT applies the LT predicate on the "create_time" field. -func CreateTimeLT(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeLTE applies the LTE predicate on the "create_time" field. -func CreateTimeLTE(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldCreateTime), v)) - }) -} - -// UpdateTimeEQ applies the EQ predicate on the "update_time" field. -func UpdateTimeEQ(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeNEQ applies the NEQ predicate on the "update_time" field. -func UpdateTimeNEQ(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeIn applies the In predicate on the "update_time" field. -func UpdateTimeIn(vs ...time.Time) predicate.Guild { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Guild(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldUpdateTime), v...)) - }) -} - -// UpdateTimeNotIn applies the NotIn predicate on the "update_time" field. -func UpdateTimeNotIn(vs ...time.Time) predicate.Guild { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Guild(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldUpdateTime), v...)) - }) -} - -// UpdateTimeGT applies the GT predicate on the "update_time" field. -func UpdateTimeGT(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeGTE applies the GTE predicate on the "update_time" field. -func UpdateTimeGTE(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeLT applies the LT predicate on the "update_time" field. -func UpdateTimeLT(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeLTE applies the LTE predicate on the "update_time" field. -func UpdateTimeLTE(v time.Time) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldUpdateTime), v)) - }) -} - -// SnowflakeEQ applies the EQ predicate on the "snowflake" field. -func SnowflakeEQ(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldSnowflake), v)) - }) -} - -// SnowflakeNEQ applies the NEQ predicate on the "snowflake" field. -func SnowflakeNEQ(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldSnowflake), v)) - }) -} - -// SnowflakeIn applies the In predicate on the "snowflake" field. -func SnowflakeIn(vs ...string) predicate.Guild { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Guild(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldSnowflake), v...)) - }) -} - -// SnowflakeNotIn applies the NotIn predicate on the "snowflake" field. -func SnowflakeNotIn(vs ...string) predicate.Guild { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Guild(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldSnowflake), v...)) - }) -} - -// SnowflakeGT applies the GT predicate on the "snowflake" field. -func SnowflakeGT(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldSnowflake), v)) - }) -} - -// SnowflakeGTE applies the GTE predicate on the "snowflake" field. -func SnowflakeGTE(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldSnowflake), v)) - }) -} - -// SnowflakeLT applies the LT predicate on the "snowflake" field. -func SnowflakeLT(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldSnowflake), v)) - }) -} - -// SnowflakeLTE applies the LTE predicate on the "snowflake" field. -func SnowflakeLTE(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldSnowflake), v)) - }) -} - -// SnowflakeContains applies the Contains predicate on the "snowflake" field. -func SnowflakeContains(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.Contains(s.C(FieldSnowflake), v)) - }) -} - -// SnowflakeHasPrefix applies the HasPrefix predicate on the "snowflake" field. -func SnowflakeHasPrefix(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.HasPrefix(s.C(FieldSnowflake), v)) - }) -} - -// SnowflakeHasSuffix applies the HasSuffix predicate on the "snowflake" field. -func SnowflakeHasSuffix(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.HasSuffix(s.C(FieldSnowflake), v)) - }) -} - -// SnowflakeEqualFold applies the EqualFold predicate on the "snowflake" field. -func SnowflakeEqualFold(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EqualFold(s.C(FieldSnowflake), v)) - }) -} - -// SnowflakeContainsFold applies the ContainsFold predicate on the "snowflake" field. -func SnowflakeContainsFold(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.ContainsFold(s.C(FieldSnowflake), v)) - }) -} - -// MessageEQ applies the EQ predicate on the "message" field. -func MessageEQ(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldMessage), v)) - }) -} - -// MessageNEQ applies the NEQ predicate on the "message" field. -func MessageNEQ(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldMessage), v)) - }) -} - -// MessageIn applies the In predicate on the "message" field. -func MessageIn(vs ...string) predicate.Guild { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Guild(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldMessage), v...)) - }) -} - -// MessageNotIn applies the NotIn predicate on the "message" field. -func MessageNotIn(vs ...string) predicate.Guild { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Guild(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldMessage), v...)) - }) -} - -// MessageGT applies the GT predicate on the "message" field. -func MessageGT(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldMessage), v)) - }) -} - -// MessageGTE applies the GTE predicate on the "message" field. -func MessageGTE(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldMessage), v)) - }) -} - -// MessageLT applies the LT predicate on the "message" field. -func MessageLT(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldMessage), v)) - }) -} - -// MessageLTE applies the LTE predicate on the "message" field. -func MessageLTE(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldMessage), v)) - }) -} - -// MessageContains applies the Contains predicate on the "message" field. -func MessageContains(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.Contains(s.C(FieldMessage), v)) - }) -} - -// MessageHasPrefix applies the HasPrefix predicate on the "message" field. -func MessageHasPrefix(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.HasPrefix(s.C(FieldMessage), v)) - }) -} - -// MessageHasSuffix applies the HasSuffix predicate on the "message" field. -func MessageHasSuffix(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.HasSuffix(s.C(FieldMessage), v)) - }) -} - -// MessageEqualFold applies the EqualFold predicate on the "message" field. -func MessageEqualFold(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.EqualFold(s.C(FieldMessage), v)) - }) -} - -// MessageContainsFold applies the ContainsFold predicate on the "message" field. -func MessageContainsFold(v string) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s.Where(sql.ContainsFold(s.C(FieldMessage), v)) - }) -} - -// And groups list of predicates with the AND operator between them. -func And(predicates ...predicate.Guild) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s1 := s.Clone().SetP(nil) - for _, p := range predicates { - p(s1) - } - s.Where(s1.P()) - }) -} - -// Or groups list of predicates with the OR operator between them. -func Or(predicates ...predicate.Guild) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - s1 := s.Clone().SetP(nil) - for i, p := range predicates { - if i > 0 { - s1.Or() - } - p(s1) - } - s.Where(s1.P()) - }) -} - -// Not applies the not operator on the given predicate. -func Not(p predicate.Guild) predicate.Guild { - return predicate.Guild(func(s *sql.Selector) { - p(s.Not()) - }) -} diff --git a/src/db/ent/guild_create.go b/src/db/ent/guild_create.go deleted file mode 100644 index 80a4796..0000000 --- a/src/db/ent/guild_create.go +++ /dev/null @@ -1,301 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "errors" - "fmt" - "time" - - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/guild" - "github.com/roleypoly/roleypoly/src/db/ent/schema" -) - -// GuildCreate is the builder for creating a Guild entity. -type GuildCreate struct { - config - mutation *GuildMutation - hooks []Hook -} - -// SetCreateTime sets the create_time field. -func (gc *GuildCreate) SetCreateTime(t time.Time) *GuildCreate { - gc.mutation.SetCreateTime(t) - return gc -} - -// SetNillableCreateTime sets the create_time field if the given value is not nil. -func (gc *GuildCreate) SetNillableCreateTime(t *time.Time) *GuildCreate { - if t != nil { - gc.SetCreateTime(*t) - } - return gc -} - -// SetUpdateTime sets the update_time field. -func (gc *GuildCreate) SetUpdateTime(t time.Time) *GuildCreate { - gc.mutation.SetUpdateTime(t) - return gc -} - -// SetNillableUpdateTime sets the update_time field if the given value is not nil. -func (gc *GuildCreate) SetNillableUpdateTime(t *time.Time) *GuildCreate { - if t != nil { - gc.SetUpdateTime(*t) - } - return gc -} - -// SetSnowflake sets the snowflake field. -func (gc *GuildCreate) SetSnowflake(s string) *GuildCreate { - gc.mutation.SetSnowflake(s) - return gc -} - -// SetMessage sets the message field. -func (gc *GuildCreate) SetMessage(s string) *GuildCreate { - gc.mutation.SetMessage(s) - return gc -} - -// SetCategories sets the categories field. -func (gc *GuildCreate) SetCategories(s []schema.Category) *GuildCreate { - gc.mutation.SetCategories(s) - return gc -} - -// SetEntitlements sets the entitlements field. -func (gc *GuildCreate) SetEntitlements(s []string) *GuildCreate { - gc.mutation.SetEntitlements(s) - return gc -} - -// Mutation returns the GuildMutation object of the builder. -func (gc *GuildCreate) Mutation() *GuildMutation { - return gc.mutation -} - -// Save creates the Guild in the database. -func (gc *GuildCreate) Save(ctx context.Context) (*Guild, error) { - var ( - err error - node *Guild - ) - gc.defaults() - if len(gc.hooks) == 0 { - if err = gc.check(); err != nil { - return nil, err - } - node, err = gc.sqlSave(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*GuildMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - if err = gc.check(); err != nil { - return nil, err - } - gc.mutation = mutation - node, err = gc.sqlSave(ctx) - mutation.done = true - return node, err - }) - for i := len(gc.hooks) - 1; i >= 0; i-- { - mut = gc.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, gc.mutation); err != nil { - return nil, err - } - } - return node, err -} - -// SaveX calls Save and panics if Save returns an error. -func (gc *GuildCreate) SaveX(ctx context.Context) *Guild { - v, err := gc.Save(ctx) - if err != nil { - panic(err) - } - return v -} - -// defaults sets the default values of the builder before save. -func (gc *GuildCreate) defaults() { - if _, ok := gc.mutation.CreateTime(); !ok { - v := guild.DefaultCreateTime() - gc.mutation.SetCreateTime(v) - } - if _, ok := gc.mutation.UpdateTime(); !ok { - v := guild.DefaultUpdateTime() - gc.mutation.SetUpdateTime(v) - } -} - -// check runs all checks and user-defined validators on the builder. -func (gc *GuildCreate) check() error { - if _, ok := gc.mutation.CreateTime(); !ok { - return &ValidationError{Name: "create_time", err: errors.New("ent: missing required field \"create_time\"")} - } - if _, ok := gc.mutation.UpdateTime(); !ok { - return &ValidationError{Name: "update_time", err: errors.New("ent: missing required field \"update_time\"")} - } - if _, ok := gc.mutation.Snowflake(); !ok { - return &ValidationError{Name: "snowflake", err: errors.New("ent: missing required field \"snowflake\"")} - } - if _, ok := gc.mutation.Message(); !ok { - return &ValidationError{Name: "message", err: errors.New("ent: missing required field \"message\"")} - } - if _, ok := gc.mutation.Categories(); !ok { - return &ValidationError{Name: "categories", err: errors.New("ent: missing required field \"categories\"")} - } - if _, ok := gc.mutation.Entitlements(); !ok { - return &ValidationError{Name: "entitlements", err: errors.New("ent: missing required field \"entitlements\"")} - } - return nil -} - -func (gc *GuildCreate) sqlSave(ctx context.Context) (*Guild, error) { - _node, _spec := gc.createSpec() - if err := sqlgraph.CreateNode(ctx, gc.driver, _spec); err != nil { - if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - return nil, err - } - id := _spec.ID.Value.(int64) - _node.ID = int(id) - return _node, nil -} - -func (gc *GuildCreate) createSpec() (*Guild, *sqlgraph.CreateSpec) { - var ( - _node = &Guild{config: gc.config} - _spec = &sqlgraph.CreateSpec{ - Table: guild.Table, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: guild.FieldID, - }, - } - ) - if value, ok := gc.mutation.CreateTime(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: guild.FieldCreateTime, - }) - _node.CreateTime = value - } - if value, ok := gc.mutation.UpdateTime(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: guild.FieldUpdateTime, - }) - _node.UpdateTime = value - } - if value, ok := gc.mutation.Snowflake(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeString, - Value: value, - Column: guild.FieldSnowflake, - }) - _node.Snowflake = value - } - if value, ok := gc.mutation.Message(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeString, - Value: value, - Column: guild.FieldMessage, - }) - _node.Message = value - } - if value, ok := gc.mutation.Categories(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeJSON, - Value: value, - Column: guild.FieldCategories, - }) - _node.Categories = value - } - if value, ok := gc.mutation.Entitlements(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeJSON, - Value: value, - Column: guild.FieldEntitlements, - }) - _node.Entitlements = value - } - return _node, _spec -} - -// GuildCreateBulk is the builder for creating a bulk of Guild entities. -type GuildCreateBulk struct { - config - builders []*GuildCreate -} - -// Save creates the Guild entities in the database. -func (gcb *GuildCreateBulk) Save(ctx context.Context) ([]*Guild, error) { - specs := make([]*sqlgraph.CreateSpec, len(gcb.builders)) - nodes := make([]*Guild, len(gcb.builders)) - mutators := make([]Mutator, len(gcb.builders)) - for i := range gcb.builders { - func(i int, root context.Context) { - builder := gcb.builders[i] - builder.defaults() - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*GuildMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - if err := builder.check(); err != nil { - return nil, err - } - builder.mutation = mutation - nodes[i], specs[i] = builder.createSpec() - var err error - if i < len(mutators)-1 { - _, err = mutators[i+1].Mutate(root, gcb.builders[i+1].mutation) - } else { - // Invoke the actual operation on the latest mutation in the chain. - if err = sqlgraph.BatchCreate(ctx, gcb.driver, &sqlgraph.BatchCreateSpec{Nodes: specs}); err != nil { - if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - } - } - mutation.done = true - if err != nil { - return nil, err - } - id := specs[i].ID.Value.(int64) - nodes[i].ID = int(id) - return nodes[i], nil - }) - for i := len(builder.hooks) - 1; i >= 0; i-- { - mut = builder.hooks[i](mut) - } - mutators[i] = mut - }(i, ctx) - } - if len(mutators) > 0 { - if _, err := mutators[0].Mutate(ctx, gcb.builders[0].mutation); err != nil { - return nil, err - } - } - return nodes, nil -} - -// SaveX calls Save and panics if Save returns an error. -func (gcb *GuildCreateBulk) SaveX(ctx context.Context) []*Guild { - v, err := gcb.Save(ctx) - if err != nil { - panic(err) - } - return v -} diff --git a/src/db/ent/guild_delete.go b/src/db/ent/guild_delete.go deleted file mode 100644 index 8a798ac..0000000 --- a/src/db/ent/guild_delete.go +++ /dev/null @@ -1,109 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "fmt" - - "github.com/facebook/ent/dialect/sql" - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/guild" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" -) - -// GuildDelete is the builder for deleting a Guild entity. -type GuildDelete struct { - config - hooks []Hook - mutation *GuildMutation - predicates []predicate.Guild -} - -// Where adds a new predicate to the delete builder. -func (gd *GuildDelete) Where(ps ...predicate.Guild) *GuildDelete { - gd.predicates = append(gd.predicates, ps...) - return gd -} - -// Exec executes the deletion query and returns how many vertices were deleted. -func (gd *GuildDelete) Exec(ctx context.Context) (int, error) { - var ( - err error - affected int - ) - if len(gd.hooks) == 0 { - affected, err = gd.sqlExec(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*GuildMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - gd.mutation = mutation - affected, err = gd.sqlExec(ctx) - mutation.done = true - return affected, err - }) - for i := len(gd.hooks) - 1; i >= 0; i-- { - mut = gd.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, gd.mutation); err != nil { - return 0, err - } - } - return affected, err -} - -// ExecX is like Exec, but panics if an error occurs. -func (gd *GuildDelete) ExecX(ctx context.Context) int { - n, err := gd.Exec(ctx) - if err != nil { - panic(err) - } - return n -} - -func (gd *GuildDelete) sqlExec(ctx context.Context) (int, error) { - _spec := &sqlgraph.DeleteSpec{ - Node: &sqlgraph.NodeSpec{ - Table: guild.Table, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: guild.FieldID, - }, - }, - } - if ps := gd.predicates; len(ps) > 0 { - _spec.Predicate = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector) - } - } - } - return sqlgraph.DeleteNodes(ctx, gd.driver, _spec) -} - -// GuildDeleteOne is the builder for deleting a single Guild entity. -type GuildDeleteOne struct { - gd *GuildDelete -} - -// Exec executes the deletion query. -func (gdo *GuildDeleteOne) Exec(ctx context.Context) error { - n, err := gdo.gd.Exec(ctx) - switch { - case err != nil: - return err - case n == 0: - return &NotFoundError{guild.Label} - default: - return nil - } -} - -// ExecX is like Exec, but panics if an error occurs. -func (gdo *GuildDeleteOne) ExecX(ctx context.Context) { - gdo.gd.ExecX(ctx) -} diff --git a/src/db/ent/guild_query.go b/src/db/ent/guild_query.go deleted file mode 100644 index ab2d50f..0000000 --- a/src/db/ent/guild_query.go +++ /dev/null @@ -1,880 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "errors" - "fmt" - "math" - - "github.com/facebook/ent/dialect/sql" - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/guild" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" -) - -// GuildQuery is the builder for querying Guild entities. -type GuildQuery struct { - config - limit *int - offset *int - order []OrderFunc - unique []string - predicates []predicate.Guild - // intermediate query (i.e. traversal path). - sql *sql.Selector - path func(context.Context) (*sql.Selector, error) -} - -// Where adds a new predicate for the builder. -func (gq *GuildQuery) Where(ps ...predicate.Guild) *GuildQuery { - gq.predicates = append(gq.predicates, ps...) - return gq -} - -// Limit adds a limit step to the query. -func (gq *GuildQuery) Limit(limit int) *GuildQuery { - gq.limit = &limit - return gq -} - -// Offset adds an offset step to the query. -func (gq *GuildQuery) Offset(offset int) *GuildQuery { - gq.offset = &offset - return gq -} - -// Order adds an order step to the query. -func (gq *GuildQuery) Order(o ...OrderFunc) *GuildQuery { - gq.order = append(gq.order, o...) - return gq -} - -// First returns the first Guild entity in the query. Returns *NotFoundError when no guild was found. -func (gq *GuildQuery) First(ctx context.Context) (*Guild, error) { - nodes, err := gq.Limit(1).All(ctx) - if err != nil { - return nil, err - } - if len(nodes) == 0 { - return nil, &NotFoundError{guild.Label} - } - return nodes[0], nil -} - -// FirstX is like First, but panics if an error occurs. -func (gq *GuildQuery) FirstX(ctx context.Context) *Guild { - node, err := gq.First(ctx) - if err != nil && !IsNotFound(err) { - panic(err) - } - return node -} - -// FirstID returns the first Guild id in the query. Returns *NotFoundError when no id was found. -func (gq *GuildQuery) FirstID(ctx context.Context) (id int, err error) { - var ids []int - if ids, err = gq.Limit(1).IDs(ctx); err != nil { - return - } - if len(ids) == 0 { - err = &NotFoundError{guild.Label} - return - } - return ids[0], nil -} - -// FirstXID is like FirstID, but panics if an error occurs. -func (gq *GuildQuery) FirstXID(ctx context.Context) int { - id, err := gq.FirstID(ctx) - if err != nil && !IsNotFound(err) { - panic(err) - } - return id -} - -// Only returns the only Guild entity in the query, returns an error if not exactly one entity was returned. -func (gq *GuildQuery) Only(ctx context.Context) (*Guild, error) { - nodes, err := gq.Limit(2).All(ctx) - if err != nil { - return nil, err - } - switch len(nodes) { - case 1: - return nodes[0], nil - case 0: - return nil, &NotFoundError{guild.Label} - default: - return nil, &NotSingularError{guild.Label} - } -} - -// OnlyX is like Only, but panics if an error occurs. -func (gq *GuildQuery) OnlyX(ctx context.Context) *Guild { - node, err := gq.Only(ctx) - if err != nil { - panic(err) - } - return node -} - -// OnlyID returns the only Guild id in the query, returns an error if not exactly one id was returned. -func (gq *GuildQuery) OnlyID(ctx context.Context) (id int, err error) { - var ids []int - if ids, err = gq.Limit(2).IDs(ctx); err != nil { - return - } - switch len(ids) { - case 1: - id = ids[0] - case 0: - err = &NotFoundError{guild.Label} - default: - err = &NotSingularError{guild.Label} - } - return -} - -// OnlyIDX is like OnlyID, but panics if an error occurs. -func (gq *GuildQuery) OnlyIDX(ctx context.Context) int { - id, err := gq.OnlyID(ctx) - if err != nil { - panic(err) - } - return id -} - -// All executes the query and returns a list of Guilds. -func (gq *GuildQuery) All(ctx context.Context) ([]*Guild, error) { - if err := gq.prepareQuery(ctx); err != nil { - return nil, err - } - return gq.sqlAll(ctx) -} - -// AllX is like All, but panics if an error occurs. -func (gq *GuildQuery) AllX(ctx context.Context) []*Guild { - nodes, err := gq.All(ctx) - if err != nil { - panic(err) - } - return nodes -} - -// IDs executes the query and returns a list of Guild ids. -func (gq *GuildQuery) IDs(ctx context.Context) ([]int, error) { - var ids []int - if err := gq.Select(guild.FieldID).Scan(ctx, &ids); err != nil { - return nil, err - } - return ids, nil -} - -// IDsX is like IDs, but panics if an error occurs. -func (gq *GuildQuery) IDsX(ctx context.Context) []int { - ids, err := gq.IDs(ctx) - if err != nil { - panic(err) - } - return ids -} - -// Count returns the count of the given query. -func (gq *GuildQuery) Count(ctx context.Context) (int, error) { - if err := gq.prepareQuery(ctx); err != nil { - return 0, err - } - return gq.sqlCount(ctx) -} - -// CountX is like Count, but panics if an error occurs. -func (gq *GuildQuery) CountX(ctx context.Context) int { - count, err := gq.Count(ctx) - if err != nil { - panic(err) - } - return count -} - -// Exist returns true if the query has elements in the graph. -func (gq *GuildQuery) Exist(ctx context.Context) (bool, error) { - if err := gq.prepareQuery(ctx); err != nil { - return false, err - } - return gq.sqlExist(ctx) -} - -// ExistX is like Exist, but panics if an error occurs. -func (gq *GuildQuery) ExistX(ctx context.Context) bool { - exist, err := gq.Exist(ctx) - if err != nil { - panic(err) - } - return exist -} - -// Clone returns a duplicate of the query builder, including all associated steps. It can be -// used to prepare common query builders and use them differently after the clone is made. -func (gq *GuildQuery) Clone() *GuildQuery { - return &GuildQuery{ - config: gq.config, - limit: gq.limit, - offset: gq.offset, - order: append([]OrderFunc{}, gq.order...), - unique: append([]string{}, gq.unique...), - predicates: append([]predicate.Guild{}, gq.predicates...), - // clone intermediate query. - sql: gq.sql.Clone(), - path: gq.path, - } -} - -// GroupBy used to group vertices by one or more fields/columns. -// It is often used with aggregate functions, like: count, max, mean, min, sum. -// -// Example: -// -// var v []struct { -// CreateTime time.Time `json:"create_time,omitempty"` -// Count int `json:"count,omitempty"` -// } -// -// client.Guild.Query(). -// GroupBy(guild.FieldCreateTime). -// Aggregate(ent.Count()). -// Scan(ctx, &v) -// -func (gq *GuildQuery) GroupBy(field string, fields ...string) *GuildGroupBy { - group := &GuildGroupBy{config: gq.config} - group.fields = append([]string{field}, fields...) - group.path = func(ctx context.Context) (prev *sql.Selector, err error) { - if err := gq.prepareQuery(ctx); err != nil { - return nil, err - } - return gq.sqlQuery(), nil - } - return group -} - -// Select one or more fields from the given query. -// -// Example: -// -// var v []struct { -// CreateTime time.Time `json:"create_time,omitempty"` -// } -// -// client.Guild.Query(). -// Select(guild.FieldCreateTime). -// Scan(ctx, &v) -// -func (gq *GuildQuery) Select(field string, fields ...string) *GuildSelect { - selector := &GuildSelect{config: gq.config} - selector.fields = append([]string{field}, fields...) - selector.path = func(ctx context.Context) (prev *sql.Selector, err error) { - if err := gq.prepareQuery(ctx); err != nil { - return nil, err - } - return gq.sqlQuery(), nil - } - return selector -} - -func (gq *GuildQuery) prepareQuery(ctx context.Context) error { - if gq.path != nil { - prev, err := gq.path(ctx) - if err != nil { - return err - } - gq.sql = prev - } - return nil -} - -func (gq *GuildQuery) sqlAll(ctx context.Context) ([]*Guild, error) { - var ( - nodes = []*Guild{} - _spec = gq.querySpec() - ) - _spec.ScanValues = func() []interface{} { - node := &Guild{config: gq.config} - nodes = append(nodes, node) - values := node.scanValues() - return values - } - _spec.Assign = func(values ...interface{}) error { - if len(nodes) == 0 { - return fmt.Errorf("ent: Assign called without calling ScanValues") - } - node := nodes[len(nodes)-1] - return node.assignValues(values...) - } - if err := sqlgraph.QueryNodes(ctx, gq.driver, _spec); err != nil { - return nil, err - } - if len(nodes) == 0 { - return nodes, nil - } - return nodes, nil -} - -func (gq *GuildQuery) sqlCount(ctx context.Context) (int, error) { - _spec := gq.querySpec() - return sqlgraph.CountNodes(ctx, gq.driver, _spec) -} - -func (gq *GuildQuery) sqlExist(ctx context.Context) (bool, error) { - n, err := gq.sqlCount(ctx) - if err != nil { - return false, fmt.Errorf("ent: check existence: %v", err) - } - return n > 0, nil -} - -func (gq *GuildQuery) querySpec() *sqlgraph.QuerySpec { - _spec := &sqlgraph.QuerySpec{ - Node: &sqlgraph.NodeSpec{ - Table: guild.Table, - Columns: guild.Columns, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: guild.FieldID, - }, - }, - From: gq.sql, - Unique: true, - } - if ps := gq.predicates; len(ps) > 0 { - _spec.Predicate = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector) - } - } - } - if limit := gq.limit; limit != nil { - _spec.Limit = *limit - } - if offset := gq.offset; offset != nil { - _spec.Offset = *offset - } - if ps := gq.order; len(ps) > 0 { - _spec.Order = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector, guild.ValidColumn) - } - } - } - return _spec -} - -func (gq *GuildQuery) sqlQuery() *sql.Selector { - builder := sql.Dialect(gq.driver.Dialect()) - t1 := builder.Table(guild.Table) - selector := builder.Select(t1.Columns(guild.Columns...)...).From(t1) - if gq.sql != nil { - selector = gq.sql - selector.Select(selector.Columns(guild.Columns...)...) - } - for _, p := range gq.predicates { - p(selector) - } - for _, p := range gq.order { - p(selector, guild.ValidColumn) - } - if offset := gq.offset; offset != nil { - // limit is mandatory for offset clause. We start - // with default value, and override it below if needed. - selector.Offset(*offset).Limit(math.MaxInt32) - } - if limit := gq.limit; limit != nil { - selector.Limit(*limit) - } - return selector -} - -// GuildGroupBy is the builder for group-by Guild entities. -type GuildGroupBy struct { - config - fields []string - fns []AggregateFunc - // intermediate query (i.e. traversal path). - sql *sql.Selector - path func(context.Context) (*sql.Selector, error) -} - -// Aggregate adds the given aggregation functions to the group-by query. -func (ggb *GuildGroupBy) Aggregate(fns ...AggregateFunc) *GuildGroupBy { - ggb.fns = append(ggb.fns, fns...) - return ggb -} - -// Scan applies the group-by query and scan the result into the given value. -func (ggb *GuildGroupBy) Scan(ctx context.Context, v interface{}) error { - query, err := ggb.path(ctx) - if err != nil { - return err - } - ggb.sql = query - return ggb.sqlScan(ctx, v) -} - -// ScanX is like Scan, but panics if an error occurs. -func (ggb *GuildGroupBy) ScanX(ctx context.Context, v interface{}) { - if err := ggb.Scan(ctx, v); err != nil { - panic(err) - } -} - -// Strings returns list of strings from group-by. It is only allowed when querying group-by with one field. -func (ggb *GuildGroupBy) Strings(ctx context.Context) ([]string, error) { - if len(ggb.fields) > 1 { - return nil, errors.New("ent: GuildGroupBy.Strings is not achievable when grouping more than 1 field") - } - var v []string - if err := ggb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// StringsX is like Strings, but panics if an error occurs. -func (ggb *GuildGroupBy) StringsX(ctx context.Context) []string { - v, err := ggb.Strings(ctx) - if err != nil { - panic(err) - } - return v -} - -// String returns a single string from group-by. It is only allowed when querying group-by with one field. -func (ggb *GuildGroupBy) String(ctx context.Context) (_ string, err error) { - var v []string - if v, err = ggb.Strings(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{guild.Label} - default: - err = fmt.Errorf("ent: GuildGroupBy.Strings returned %d results when one was expected", len(v)) - } - return -} - -// StringX is like String, but panics if an error occurs. -func (ggb *GuildGroupBy) StringX(ctx context.Context) string { - v, err := ggb.String(ctx) - if err != nil { - panic(err) - } - return v -} - -// Ints returns list of ints from group-by. It is only allowed when querying group-by with one field. -func (ggb *GuildGroupBy) Ints(ctx context.Context) ([]int, error) { - if len(ggb.fields) > 1 { - return nil, errors.New("ent: GuildGroupBy.Ints is not achievable when grouping more than 1 field") - } - var v []int - if err := ggb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// IntsX is like Ints, but panics if an error occurs. -func (ggb *GuildGroupBy) IntsX(ctx context.Context) []int { - v, err := ggb.Ints(ctx) - if err != nil { - panic(err) - } - return v -} - -// Int returns a single int from group-by. It is only allowed when querying group-by with one field. -func (ggb *GuildGroupBy) Int(ctx context.Context) (_ int, err error) { - var v []int - if v, err = ggb.Ints(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{guild.Label} - default: - err = fmt.Errorf("ent: GuildGroupBy.Ints returned %d results when one was expected", len(v)) - } - return -} - -// IntX is like Int, but panics if an error occurs. -func (ggb *GuildGroupBy) IntX(ctx context.Context) int { - v, err := ggb.Int(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64s returns list of float64s from group-by. It is only allowed when querying group-by with one field. -func (ggb *GuildGroupBy) Float64s(ctx context.Context) ([]float64, error) { - if len(ggb.fields) > 1 { - return nil, errors.New("ent: GuildGroupBy.Float64s is not achievable when grouping more than 1 field") - } - var v []float64 - if err := ggb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// Float64sX is like Float64s, but panics if an error occurs. -func (ggb *GuildGroupBy) Float64sX(ctx context.Context) []float64 { - v, err := ggb.Float64s(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64 returns a single float64 from group-by. It is only allowed when querying group-by with one field. -func (ggb *GuildGroupBy) Float64(ctx context.Context) (_ float64, err error) { - var v []float64 - if v, err = ggb.Float64s(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{guild.Label} - default: - err = fmt.Errorf("ent: GuildGroupBy.Float64s returned %d results when one was expected", len(v)) - } - return -} - -// Float64X is like Float64, but panics if an error occurs. -func (ggb *GuildGroupBy) Float64X(ctx context.Context) float64 { - v, err := ggb.Float64(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bools returns list of bools from group-by. It is only allowed when querying group-by with one field. -func (ggb *GuildGroupBy) Bools(ctx context.Context) ([]bool, error) { - if len(ggb.fields) > 1 { - return nil, errors.New("ent: GuildGroupBy.Bools is not achievable when grouping more than 1 field") - } - var v []bool - if err := ggb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// BoolsX is like Bools, but panics if an error occurs. -func (ggb *GuildGroupBy) BoolsX(ctx context.Context) []bool { - v, err := ggb.Bools(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bool returns a single bool from group-by. It is only allowed when querying group-by with one field. -func (ggb *GuildGroupBy) Bool(ctx context.Context) (_ bool, err error) { - var v []bool - if v, err = ggb.Bools(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{guild.Label} - default: - err = fmt.Errorf("ent: GuildGroupBy.Bools returned %d results when one was expected", len(v)) - } - return -} - -// BoolX is like Bool, but panics if an error occurs. -func (ggb *GuildGroupBy) BoolX(ctx context.Context) bool { - v, err := ggb.Bool(ctx) - if err != nil { - panic(err) - } - return v -} - -func (ggb *GuildGroupBy) sqlScan(ctx context.Context, v interface{}) error { - for _, f := range ggb.fields { - if !guild.ValidColumn(f) { - return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for group-by", f)} - } - } - selector := ggb.sqlQuery() - if err := selector.Err(); err != nil { - return err - } - rows := &sql.Rows{} - query, args := selector.Query() - if err := ggb.driver.Query(ctx, query, args, rows); err != nil { - return err - } - defer rows.Close() - return sql.ScanSlice(rows, v) -} - -func (ggb *GuildGroupBy) sqlQuery() *sql.Selector { - selector := ggb.sql - columns := make([]string, 0, len(ggb.fields)+len(ggb.fns)) - columns = append(columns, ggb.fields...) - for _, fn := range ggb.fns { - columns = append(columns, fn(selector, guild.ValidColumn)) - } - return selector.Select(columns...).GroupBy(ggb.fields...) -} - -// GuildSelect is the builder for select fields of Guild entities. -type GuildSelect struct { - config - fields []string - // intermediate query (i.e. traversal path). - sql *sql.Selector - path func(context.Context) (*sql.Selector, error) -} - -// Scan applies the selector query and scan the result into the given value. -func (gs *GuildSelect) Scan(ctx context.Context, v interface{}) error { - query, err := gs.path(ctx) - if err != nil { - return err - } - gs.sql = query - return gs.sqlScan(ctx, v) -} - -// ScanX is like Scan, but panics if an error occurs. -func (gs *GuildSelect) ScanX(ctx context.Context, v interface{}) { - if err := gs.Scan(ctx, v); err != nil { - panic(err) - } -} - -// Strings returns list of strings from selector. It is only allowed when selecting one field. -func (gs *GuildSelect) Strings(ctx context.Context) ([]string, error) { - if len(gs.fields) > 1 { - return nil, errors.New("ent: GuildSelect.Strings is not achievable when selecting more than 1 field") - } - var v []string - if err := gs.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// StringsX is like Strings, but panics if an error occurs. -func (gs *GuildSelect) StringsX(ctx context.Context) []string { - v, err := gs.Strings(ctx) - if err != nil { - panic(err) - } - return v -} - -// String returns a single string from selector. It is only allowed when selecting one field. -func (gs *GuildSelect) String(ctx context.Context) (_ string, err error) { - var v []string - if v, err = gs.Strings(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{guild.Label} - default: - err = fmt.Errorf("ent: GuildSelect.Strings returned %d results when one was expected", len(v)) - } - return -} - -// StringX is like String, but panics if an error occurs. -func (gs *GuildSelect) StringX(ctx context.Context) string { - v, err := gs.String(ctx) - if err != nil { - panic(err) - } - return v -} - -// Ints returns list of ints from selector. It is only allowed when selecting one field. -func (gs *GuildSelect) Ints(ctx context.Context) ([]int, error) { - if len(gs.fields) > 1 { - return nil, errors.New("ent: GuildSelect.Ints is not achievable when selecting more than 1 field") - } - var v []int - if err := gs.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// IntsX is like Ints, but panics if an error occurs. -func (gs *GuildSelect) IntsX(ctx context.Context) []int { - v, err := gs.Ints(ctx) - if err != nil { - panic(err) - } - return v -} - -// Int returns a single int from selector. It is only allowed when selecting one field. -func (gs *GuildSelect) Int(ctx context.Context) (_ int, err error) { - var v []int - if v, err = gs.Ints(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{guild.Label} - default: - err = fmt.Errorf("ent: GuildSelect.Ints returned %d results when one was expected", len(v)) - } - return -} - -// IntX is like Int, but panics if an error occurs. -func (gs *GuildSelect) IntX(ctx context.Context) int { - v, err := gs.Int(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64s returns list of float64s from selector. It is only allowed when selecting one field. -func (gs *GuildSelect) Float64s(ctx context.Context) ([]float64, error) { - if len(gs.fields) > 1 { - return nil, errors.New("ent: GuildSelect.Float64s is not achievable when selecting more than 1 field") - } - var v []float64 - if err := gs.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// Float64sX is like Float64s, but panics if an error occurs. -func (gs *GuildSelect) Float64sX(ctx context.Context) []float64 { - v, err := gs.Float64s(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64 returns a single float64 from selector. It is only allowed when selecting one field. -func (gs *GuildSelect) Float64(ctx context.Context) (_ float64, err error) { - var v []float64 - if v, err = gs.Float64s(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{guild.Label} - default: - err = fmt.Errorf("ent: GuildSelect.Float64s returned %d results when one was expected", len(v)) - } - return -} - -// Float64X is like Float64, but panics if an error occurs. -func (gs *GuildSelect) Float64X(ctx context.Context) float64 { - v, err := gs.Float64(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bools returns list of bools from selector. It is only allowed when selecting one field. -func (gs *GuildSelect) Bools(ctx context.Context) ([]bool, error) { - if len(gs.fields) > 1 { - return nil, errors.New("ent: GuildSelect.Bools is not achievable when selecting more than 1 field") - } - var v []bool - if err := gs.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// BoolsX is like Bools, but panics if an error occurs. -func (gs *GuildSelect) BoolsX(ctx context.Context) []bool { - v, err := gs.Bools(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bool returns a single bool from selector. It is only allowed when selecting one field. -func (gs *GuildSelect) Bool(ctx context.Context) (_ bool, err error) { - var v []bool - if v, err = gs.Bools(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{guild.Label} - default: - err = fmt.Errorf("ent: GuildSelect.Bools returned %d results when one was expected", len(v)) - } - return -} - -// BoolX is like Bool, but panics if an error occurs. -func (gs *GuildSelect) BoolX(ctx context.Context) bool { - v, err := gs.Bool(ctx) - if err != nil { - panic(err) - } - return v -} - -func (gs *GuildSelect) sqlScan(ctx context.Context, v interface{}) error { - for _, f := range gs.fields { - if !guild.ValidColumn(f) { - return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for selection", f)} - } - } - rows := &sql.Rows{} - query, args := gs.sqlQuery().Query() - if err := gs.driver.Query(ctx, query, args, rows); err != nil { - return err - } - defer rows.Close() - return sql.ScanSlice(rows, v) -} - -func (gs *GuildSelect) sqlQuery() sql.Querier { - selector := gs.sql - selector.Select(selector.Columns(gs.fields...)...) - return selector -} diff --git a/src/db/ent/guild_update.go b/src/db/ent/guild_update.go deleted file mode 100644 index b7e0742..0000000 --- a/src/db/ent/guild_update.go +++ /dev/null @@ -1,317 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "fmt" - - "github.com/facebook/ent/dialect/sql" - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/guild" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" - "github.com/roleypoly/roleypoly/src/db/ent/schema" -) - -// GuildUpdate is the builder for updating Guild entities. -type GuildUpdate struct { - config - hooks []Hook - mutation *GuildMutation - predicates []predicate.Guild -} - -// Where adds a new predicate for the builder. -func (gu *GuildUpdate) Where(ps ...predicate.Guild) *GuildUpdate { - gu.predicates = append(gu.predicates, ps...) - return gu -} - -// SetMessage sets the message field. -func (gu *GuildUpdate) SetMessage(s string) *GuildUpdate { - gu.mutation.SetMessage(s) - return gu -} - -// SetCategories sets the categories field. -func (gu *GuildUpdate) SetCategories(s []schema.Category) *GuildUpdate { - gu.mutation.SetCategories(s) - return gu -} - -// SetEntitlements sets the entitlements field. -func (gu *GuildUpdate) SetEntitlements(s []string) *GuildUpdate { - gu.mutation.SetEntitlements(s) - return gu -} - -// Mutation returns the GuildMutation object of the builder. -func (gu *GuildUpdate) Mutation() *GuildMutation { - return gu.mutation -} - -// Save executes the query and returns the number of rows/vertices matched by this operation. -func (gu *GuildUpdate) Save(ctx context.Context) (int, error) { - var ( - err error - affected int - ) - gu.defaults() - if len(gu.hooks) == 0 { - affected, err = gu.sqlSave(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*GuildMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - gu.mutation = mutation - affected, err = gu.sqlSave(ctx) - mutation.done = true - return affected, err - }) - for i := len(gu.hooks) - 1; i >= 0; i-- { - mut = gu.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, gu.mutation); err != nil { - return 0, err - } - } - return affected, err -} - -// SaveX is like Save, but panics if an error occurs. -func (gu *GuildUpdate) SaveX(ctx context.Context) int { - affected, err := gu.Save(ctx) - if err != nil { - panic(err) - } - return affected -} - -// Exec executes the query. -func (gu *GuildUpdate) Exec(ctx context.Context) error { - _, err := gu.Save(ctx) - return err -} - -// ExecX is like Exec, but panics if an error occurs. -func (gu *GuildUpdate) ExecX(ctx context.Context) { - if err := gu.Exec(ctx); err != nil { - panic(err) - } -} - -// defaults sets the default values of the builder before save. -func (gu *GuildUpdate) defaults() { - if _, ok := gu.mutation.UpdateTime(); !ok { - v := guild.UpdateDefaultUpdateTime() - gu.mutation.SetUpdateTime(v) - } -} - -func (gu *GuildUpdate) sqlSave(ctx context.Context) (n int, err error) { - _spec := &sqlgraph.UpdateSpec{ - Node: &sqlgraph.NodeSpec{ - Table: guild.Table, - Columns: guild.Columns, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: guild.FieldID, - }, - }, - } - if ps := gu.predicates; len(ps) > 0 { - _spec.Predicate = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector) - } - } - } - if value, ok := gu.mutation.UpdateTime(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: guild.FieldUpdateTime, - }) - } - if value, ok := gu.mutation.Message(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeString, - Value: value, - Column: guild.FieldMessage, - }) - } - if value, ok := gu.mutation.Categories(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeJSON, - Value: value, - Column: guild.FieldCategories, - }) - } - if value, ok := gu.mutation.Entitlements(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeJSON, - Value: value, - Column: guild.FieldEntitlements, - }) - } - if n, err = sqlgraph.UpdateNodes(ctx, gu.driver, _spec); err != nil { - if _, ok := err.(*sqlgraph.NotFoundError); ok { - err = &NotFoundError{guild.Label} - } else if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - return 0, err - } - return n, nil -} - -// GuildUpdateOne is the builder for updating a single Guild entity. -type GuildUpdateOne struct { - config - hooks []Hook - mutation *GuildMutation -} - -// SetMessage sets the message field. -func (guo *GuildUpdateOne) SetMessage(s string) *GuildUpdateOne { - guo.mutation.SetMessage(s) - return guo -} - -// SetCategories sets the categories field. -func (guo *GuildUpdateOne) SetCategories(s []schema.Category) *GuildUpdateOne { - guo.mutation.SetCategories(s) - return guo -} - -// SetEntitlements sets the entitlements field. -func (guo *GuildUpdateOne) SetEntitlements(s []string) *GuildUpdateOne { - guo.mutation.SetEntitlements(s) - return guo -} - -// Mutation returns the GuildMutation object of the builder. -func (guo *GuildUpdateOne) Mutation() *GuildMutation { - return guo.mutation -} - -// Save executes the query and returns the updated entity. -func (guo *GuildUpdateOne) Save(ctx context.Context) (*Guild, error) { - var ( - err error - node *Guild - ) - guo.defaults() - if len(guo.hooks) == 0 { - node, err = guo.sqlSave(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*GuildMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - guo.mutation = mutation - node, err = guo.sqlSave(ctx) - mutation.done = true - return node, err - }) - for i := len(guo.hooks) - 1; i >= 0; i-- { - mut = guo.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, guo.mutation); err != nil { - return nil, err - } - } - return node, err -} - -// SaveX is like Save, but panics if an error occurs. -func (guo *GuildUpdateOne) SaveX(ctx context.Context) *Guild { - node, err := guo.Save(ctx) - if err != nil { - panic(err) - } - return node -} - -// Exec executes the query on the entity. -func (guo *GuildUpdateOne) Exec(ctx context.Context) error { - _, err := guo.Save(ctx) - return err -} - -// ExecX is like Exec, but panics if an error occurs. -func (guo *GuildUpdateOne) ExecX(ctx context.Context) { - if err := guo.Exec(ctx); err != nil { - panic(err) - } -} - -// defaults sets the default values of the builder before save. -func (guo *GuildUpdateOne) defaults() { - if _, ok := guo.mutation.UpdateTime(); !ok { - v := guild.UpdateDefaultUpdateTime() - guo.mutation.SetUpdateTime(v) - } -} - -func (guo *GuildUpdateOne) sqlSave(ctx context.Context) (_node *Guild, err error) { - _spec := &sqlgraph.UpdateSpec{ - Node: &sqlgraph.NodeSpec{ - Table: guild.Table, - Columns: guild.Columns, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: guild.FieldID, - }, - }, - } - id, ok := guo.mutation.ID() - if !ok { - return nil, &ValidationError{Name: "ID", err: fmt.Errorf("missing Guild.ID for update")} - } - _spec.Node.ID.Value = id - if value, ok := guo.mutation.UpdateTime(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: guild.FieldUpdateTime, - }) - } - if value, ok := guo.mutation.Message(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeString, - Value: value, - Column: guild.FieldMessage, - }) - } - if value, ok := guo.mutation.Categories(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeJSON, - Value: value, - Column: guild.FieldCategories, - }) - } - if value, ok := guo.mutation.Entitlements(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeJSON, - Value: value, - Column: guild.FieldEntitlements, - }) - } - _node = &Guild{config: guo.config} - _spec.Assign = _node.assignValues - _spec.ScanValues = _node.scanValues() - if err = sqlgraph.UpdateNode(ctx, guo.driver, _spec); err != nil { - if _, ok := err.(*sqlgraph.NotFoundError); ok { - err = &NotFoundError{guild.Label} - } else if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - return nil, err - } - return _node, nil -} diff --git a/src/db/ent/hook/BUILD.bazel b/src/db/ent/hook/BUILD.bazel deleted file mode 100644 index c5bab13..0000000 --- a/src/db/ent/hook/BUILD.bazel +++ /dev/null @@ -1,9 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "hook", - srcs = ["hook.go"], - importpath = "github.com/roleypoly/roleypoly/src/db/ent/hook", - visibility = ["//visibility:public"], - deps = ["//src/db/ent"], -) diff --git a/src/db/ent/hook/hook.go b/src/db/ent/hook/hook.go deleted file mode 100644 index bb0843d..0000000 --- a/src/db/ent/hook/hook.go +++ /dev/null @@ -1,225 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package hook - -import ( - "context" - "fmt" - - "github.com/roleypoly/roleypoly/src/db/ent" -) - -// The ChallengeFunc type is an adapter to allow the use of ordinary -// function as Challenge mutator. -type ChallengeFunc func(context.Context, *ent.ChallengeMutation) (ent.Value, error) - -// Mutate calls f(ctx, m). -func (f ChallengeFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) { - mv, ok := m.(*ent.ChallengeMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.ChallengeMutation", m) - } - return f(ctx, mv) -} - -// The GuildFunc type is an adapter to allow the use of ordinary -// function as Guild mutator. -type GuildFunc func(context.Context, *ent.GuildMutation) (ent.Value, error) - -// Mutate calls f(ctx, m). -func (f GuildFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) { - mv, ok := m.(*ent.GuildMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.GuildMutation", m) - } - return f(ctx, mv) -} - -// The SessionFunc type is an adapter to allow the use of ordinary -// function as Session mutator. -type SessionFunc func(context.Context, *ent.SessionMutation) (ent.Value, error) - -// Mutate calls f(ctx, m). -func (f SessionFunc) Mutate(ctx context.Context, m ent.Mutation) (ent.Value, error) { - mv, ok := m.(*ent.SessionMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T. expect *ent.SessionMutation", m) - } - return f(ctx, mv) -} - -// Condition is a hook condition function. -type Condition func(context.Context, ent.Mutation) bool - -// And groups conditions with the AND operator. -func And(first, second Condition, rest ...Condition) Condition { - return func(ctx context.Context, m ent.Mutation) bool { - if !first(ctx, m) || !second(ctx, m) { - return false - } - for _, cond := range rest { - if !cond(ctx, m) { - return false - } - } - return true - } -} - -// Or groups conditions with the OR operator. -func Or(first, second Condition, rest ...Condition) Condition { - return func(ctx context.Context, m ent.Mutation) bool { - if first(ctx, m) || second(ctx, m) { - return true - } - for _, cond := range rest { - if cond(ctx, m) { - return true - } - } - return false - } -} - -// Not negates a given condition. -func Not(cond Condition) Condition { - return func(ctx context.Context, m ent.Mutation) bool { - return !cond(ctx, m) - } -} - -// HasOp is a condition testing mutation operation. -func HasOp(op ent.Op) Condition { - return func(_ context.Context, m ent.Mutation) bool { - return m.Op().Is(op) - } -} - -// HasAddedFields is a condition validating `.AddedField` on fields. -func HasAddedFields(field string, fields ...string) Condition { - return func(_ context.Context, m ent.Mutation) bool { - if _, exists := m.AddedField(field); !exists { - return false - } - for _, field := range fields { - if _, exists := m.AddedField(field); !exists { - return false - } - } - return true - } -} - -// HasClearedFields is a condition validating `.FieldCleared` on fields. -func HasClearedFields(field string, fields ...string) Condition { - return func(_ context.Context, m ent.Mutation) bool { - if exists := m.FieldCleared(field); !exists { - return false - } - for _, field := range fields { - if exists := m.FieldCleared(field); !exists { - return false - } - } - return true - } -} - -// HasFields is a condition validating `.Field` on fields. -func HasFields(field string, fields ...string) Condition { - return func(_ context.Context, m ent.Mutation) bool { - if _, exists := m.Field(field); !exists { - return false - } - for _, field := range fields { - if _, exists := m.Field(field); !exists { - return false - } - } - return true - } -} - -// If executes the given hook under condition. -// -// hook.If(ComputeAverage, And(HasFields(...), HasAddedFields(...))) -// -func If(hk ent.Hook, cond Condition) ent.Hook { - return func(next ent.Mutator) ent.Mutator { - return ent.MutateFunc(func(ctx context.Context, m ent.Mutation) (ent.Value, error) { - if cond(ctx, m) { - return hk(next).Mutate(ctx, m) - } - return next.Mutate(ctx, m) - }) - } -} - -// On executes the given hook only for the given operation. -// -// hook.On(Log, ent.Delete|ent.Create) -// -func On(hk ent.Hook, op ent.Op) ent.Hook { - return If(hk, HasOp(op)) -} - -// Unless skips the given hook only for the given operation. -// -// hook.Unless(Log, ent.Update|ent.UpdateOne) -// -func Unless(hk ent.Hook, op ent.Op) ent.Hook { - return If(hk, Not(HasOp(op))) -} - -// Reject returns a hook that rejects all operations that match op. -// -// func (T) Hooks() []ent.Hook { -// return []ent.Hook{ -// Reject(ent.Delete|ent.Update), -// } -// } -// -func Reject(op ent.Op) ent.Hook { - hk := func(ent.Mutator) ent.Mutator { - return ent.MutateFunc(func(_ context.Context, m ent.Mutation) (ent.Value, error) { - return nil, fmt.Errorf("%s operation is not allowed", m.Op()) - }) - } - return On(hk, op) -} - -// Chain acts as a list of hooks and is effectively immutable. -// Once created, it will always hold the same set of hooks in the same order. -type Chain struct { - hooks []ent.Hook -} - -// NewChain creates a new chain of hooks. -func NewChain(hooks ...ent.Hook) Chain { - return Chain{append([]ent.Hook(nil), hooks...)} -} - -// Hook chains the list of hooks and returns the final hook. -func (c Chain) Hook() ent.Hook { - return func(mutator ent.Mutator) ent.Mutator { - for i := len(c.hooks) - 1; i >= 0; i-- { - mutator = c.hooks[i](mutator) - } - return mutator - } -} - -// Append extends a chain, adding the specified hook -// as the last ones in the mutation flow. -func (c Chain) Append(hooks ...ent.Hook) Chain { - newHooks := make([]ent.Hook, 0, len(c.hooks)+len(hooks)) - newHooks = append(newHooks, c.hooks...) - newHooks = append(newHooks, hooks...) - return Chain{newHooks} -} - -// Extend extends a chain, adding the specified chain -// as the last ones in the mutation flow. -func (c Chain) Extend(chain Chain) Chain { - return c.Append(chain.hooks...) -} diff --git a/src/db/ent/migrate/BUILD.bazel b/src/db/ent/migrate/BUILD.bazel deleted file mode 100644 index 5fb935e..0000000 --- a/src/db/ent/migrate/BUILD.bazel +++ /dev/null @@ -1,16 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "migrate", - srcs = [ - "migrate.go", - "schema.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/db/ent/migrate", - visibility = ["//visibility:public"], - deps = [ - "@com_github_facebook_ent//dialect", - "@com_github_facebook_ent//dialect/sql/schema", - "@com_github_facebook_ent//schema/field", - ], -) diff --git a/src/db/ent/migrate/migrate.go b/src/db/ent/migrate/migrate.go deleted file mode 100644 index 7e1d225..0000000 --- a/src/db/ent/migrate/migrate.go +++ /dev/null @@ -1,70 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package migrate - -import ( - "context" - "fmt" - "io" - - "github.com/facebook/ent/dialect" - "github.com/facebook/ent/dialect/sql/schema" -) - -var ( - // WithGlobalUniqueID sets the universal ids options to the migration. - // If this option is enabled, ent migration will allocate a 1<<32 range - // for the ids of each entity (table). - // Note that this option cannot be applied on tables that already exist. - WithGlobalUniqueID = schema.WithGlobalUniqueID - // WithDropColumn sets the drop column option to the migration. - // If this option is enabled, ent migration will drop old columns - // that were used for both fields and edges. This defaults to false. - WithDropColumn = schema.WithDropColumn - // WithDropIndex sets the drop index option to the migration. - // If this option is enabled, ent migration will drop old indexes - // that were defined in the schema. This defaults to false. - // Note that unique constraints are defined using `UNIQUE INDEX`, - // and therefore, it's recommended to enable this option to get more - // flexibility in the schema changes. - WithDropIndex = schema.WithDropIndex - // WithFixture sets the foreign-key renaming option to the migration when upgrading - // ent from v0.1.0 (issue-#285). Defaults to false. - WithFixture = schema.WithFixture -) - -// Schema is the API for creating, migrating and dropping a schema. -type Schema struct { - drv dialect.Driver - universalID bool -} - -// NewSchema creates a new schema client. -func NewSchema(drv dialect.Driver) *Schema { return &Schema{drv: drv} } - -// Create creates all schema resources. -func (s *Schema) Create(ctx context.Context, opts ...schema.MigrateOption) error { - migrate, err := schema.NewMigrate(s.drv, opts...) - if err != nil { - return fmt.Errorf("ent/migrate: %v", err) - } - return migrate.Create(ctx, Tables...) -} - -// WriteTo writes the schema changes to w instead of running them against the database. -// -// if err := client.Schema.WriteTo(context.Background(), os.Stdout); err != nil { -// log.Fatal(err) -// } -// -func (s *Schema) WriteTo(ctx context.Context, w io.Writer, opts ...schema.MigrateOption) error { - drv := &schema.WriteDriver{ - Writer: w, - Driver: s.drv, - } - migrate, err := schema.NewMigrate(drv, opts...) - if err != nil { - return fmt.Errorf("ent/migrate: %v", err) - } - return migrate.Create(ctx, Tables...) -} diff --git a/src/db/ent/migrate/schema.go b/src/db/ent/migrate/schema.go deleted file mode 100644 index cc560aa..0000000 --- a/src/db/ent/migrate/schema.go +++ /dev/null @@ -1,72 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package migrate - -import ( - "github.com/facebook/ent/dialect/sql/schema" - "github.com/facebook/ent/schema/field" -) - -var ( - // ChallengesColumns holds the columns for the "challenges" table. - ChallengesColumns = []*schema.Column{ - {Name: "id", Type: field.TypeInt, Increment: true}, - {Name: "create_time", Type: field.TypeTime}, - {Name: "update_time", Type: field.TypeTime}, - {Name: "challenge_id", Type: field.TypeString, Unique: true, Size: 2147483647}, - {Name: "user_id", Type: field.TypeString, Unique: true, Size: 2147483647}, - {Name: "human", Type: field.TypeString, Unique: true}, - {Name: "magic", Type: field.TypeString, Unique: true}, - {Name: "expires_at", Type: field.TypeTime}, - } - // ChallengesTable holds the schema information for the "challenges" table. - ChallengesTable = &schema.Table{ - Name: "challenges", - Columns: ChallengesColumns, - PrimaryKey: []*schema.Column{ChallengesColumns[0]}, - ForeignKeys: []*schema.ForeignKey{}, - } - // GuildsColumns holds the columns for the "guilds" table. - GuildsColumns = []*schema.Column{ - {Name: "id", Type: field.TypeInt, Increment: true}, - {Name: "create_time", Type: field.TypeTime}, - {Name: "update_time", Type: field.TypeTime}, - {Name: "snowflake", Type: field.TypeString, Unique: true, Size: 2147483647}, - {Name: "message", Type: field.TypeString, Size: 2147483647}, - {Name: "categories", Type: field.TypeJSON}, - {Name: "entitlements", Type: field.TypeJSON}, - } - // GuildsTable holds the schema information for the "guilds" table. - GuildsTable = &schema.Table{ - Name: "guilds", - Columns: GuildsColumns, - PrimaryKey: []*schema.Column{GuildsColumns[0]}, - ForeignKeys: []*schema.ForeignKey{}, - } - // SessionsColumns holds the columns for the "sessions" table. - SessionsColumns = []*schema.Column{ - {Name: "id", Type: field.TypeInt, Increment: true}, - {Name: "create_time", Type: field.TypeTime}, - {Name: "update_time", Type: field.TypeTime}, - {Name: "session_id", Type: field.TypeString, Unique: true, Size: 2147483647}, - {Name: "user_id", Type: field.TypeString, Unique: true, Size: 2147483647}, - {Name: "source", Type: field.TypeEnum, Enums: []string{"oauth", "dm"}}, - {Name: "expires_at", Type: field.TypeTime}, - } - // SessionsTable holds the schema information for the "sessions" table. - SessionsTable = &schema.Table{ - Name: "sessions", - Columns: SessionsColumns, - PrimaryKey: []*schema.Column{SessionsColumns[0]}, - ForeignKeys: []*schema.ForeignKey{}, - } - // Tables holds all the tables in the schema. - Tables = []*schema.Table{ - ChallengesTable, - GuildsTable, - SessionsTable, - } -) - -func init() { -} diff --git a/src/db/ent/mutation.go b/src/db/ent/mutation.go deleted file mode 100644 index 1e9851b..0000000 --- a/src/db/ent/mutation.go +++ /dev/null @@ -1,1790 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "fmt" - "sync" - "time" - - "github.com/roleypoly/roleypoly/src/db/ent/challenge" - "github.com/roleypoly/roleypoly/src/db/ent/guild" - "github.com/roleypoly/roleypoly/src/db/ent/schema" - "github.com/roleypoly/roleypoly/src/db/ent/session" - - "github.com/facebook/ent" -) - -const ( - // Operation types. - OpCreate = ent.OpCreate - OpDelete = ent.OpDelete - OpDeleteOne = ent.OpDeleteOne - OpUpdate = ent.OpUpdate - OpUpdateOne = ent.OpUpdateOne - - // Node types. - TypeChallenge = "Challenge" - TypeGuild = "Guild" - TypeSession = "Session" -) - -// ChallengeMutation represents an operation that mutate the Challenges -// nodes in the graph. -type ChallengeMutation struct { - config - op Op - typ string - id *int - create_time *time.Time - update_time *time.Time - challenge_id *string - user_id *string - human *string - magic *string - expires_at *time.Time - clearedFields map[string]struct{} - done bool - oldValue func(context.Context) (*Challenge, error) -} - -var _ ent.Mutation = (*ChallengeMutation)(nil) - -// challengeOption allows to manage the mutation configuration using functional options. -type challengeOption func(*ChallengeMutation) - -// newChallengeMutation creates new mutation for $n.Name. -func newChallengeMutation(c config, op Op, opts ...challengeOption) *ChallengeMutation { - m := &ChallengeMutation{ - config: c, - op: op, - typ: TypeChallenge, - clearedFields: make(map[string]struct{}), - } - for _, opt := range opts { - opt(m) - } - return m -} - -// withChallengeID sets the id field of the mutation. -func withChallengeID(id int) challengeOption { - return func(m *ChallengeMutation) { - var ( - err error - once sync.Once - value *Challenge - ) - m.oldValue = func(ctx context.Context) (*Challenge, error) { - once.Do(func() { - if m.done { - err = fmt.Errorf("querying old values post mutation is not allowed") - } else { - value, err = m.Client().Challenge.Get(ctx, id) - } - }) - return value, err - } - m.id = &id - } -} - -// withChallenge sets the old Challenge of the mutation. -func withChallenge(node *Challenge) challengeOption { - return func(m *ChallengeMutation) { - m.oldValue = func(context.Context) (*Challenge, error) { - return node, nil - } - m.id = &node.ID - } -} - -// Client returns a new `ent.Client` from the mutation. If the mutation was -// executed in a transaction (ent.Tx), a transactional client is returned. -func (m ChallengeMutation) Client() *Client { - client := &Client{config: m.config} - client.init() - return client -} - -// Tx returns an `ent.Tx` for mutations that were executed in transactions; -// it returns an error otherwise. -func (m ChallengeMutation) Tx() (*Tx, error) { - if _, ok := m.driver.(*txDriver); !ok { - return nil, fmt.Errorf("ent: mutation is not running in a transaction") - } - tx := &Tx{config: m.config} - tx.init() - return tx, nil -} - -// ID returns the id value in the mutation. Note that, the id -// is available only if it was provided to the builder. -func (m *ChallengeMutation) ID() (id int, exists bool) { - if m.id == nil { - return - } - return *m.id, true -} - -// SetCreateTime sets the create_time field. -func (m *ChallengeMutation) SetCreateTime(t time.Time) { - m.create_time = &t -} - -// CreateTime returns the create_time value in the mutation. -func (m *ChallengeMutation) CreateTime() (r time.Time, exists bool) { - v := m.create_time - if v == nil { - return - } - return *v, true -} - -// OldCreateTime returns the old create_time value of the Challenge. -// If the Challenge object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *ChallengeMutation) OldCreateTime(ctx context.Context) (v time.Time, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldCreateTime is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldCreateTime requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldCreateTime: %w", err) - } - return oldValue.CreateTime, nil -} - -// ResetCreateTime reset all changes of the "create_time" field. -func (m *ChallengeMutation) ResetCreateTime() { - m.create_time = nil -} - -// SetUpdateTime sets the update_time field. -func (m *ChallengeMutation) SetUpdateTime(t time.Time) { - m.update_time = &t -} - -// UpdateTime returns the update_time value in the mutation. -func (m *ChallengeMutation) UpdateTime() (r time.Time, exists bool) { - v := m.update_time - if v == nil { - return - } - return *v, true -} - -// OldUpdateTime returns the old update_time value of the Challenge. -// If the Challenge object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *ChallengeMutation) OldUpdateTime(ctx context.Context) (v time.Time, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldUpdateTime is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldUpdateTime requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldUpdateTime: %w", err) - } - return oldValue.UpdateTime, nil -} - -// ResetUpdateTime reset all changes of the "update_time" field. -func (m *ChallengeMutation) ResetUpdateTime() { - m.update_time = nil -} - -// SetChallengeID sets the challenge_id field. -func (m *ChallengeMutation) SetChallengeID(s string) { - m.challenge_id = &s -} - -// ChallengeID returns the challenge_id value in the mutation. -func (m *ChallengeMutation) ChallengeID() (r string, exists bool) { - v := m.challenge_id - if v == nil { - return - } - return *v, true -} - -// OldChallengeID returns the old challenge_id value of the Challenge. -// If the Challenge object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *ChallengeMutation) OldChallengeID(ctx context.Context) (v string, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldChallengeID is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldChallengeID requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldChallengeID: %w", err) - } - return oldValue.ChallengeID, nil -} - -// ResetChallengeID reset all changes of the "challenge_id" field. -func (m *ChallengeMutation) ResetChallengeID() { - m.challenge_id = nil -} - -// SetUserID sets the user_id field. -func (m *ChallengeMutation) SetUserID(s string) { - m.user_id = &s -} - -// UserID returns the user_id value in the mutation. -func (m *ChallengeMutation) UserID() (r string, exists bool) { - v := m.user_id - if v == nil { - return - } - return *v, true -} - -// OldUserID returns the old user_id value of the Challenge. -// If the Challenge object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *ChallengeMutation) OldUserID(ctx context.Context) (v string, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldUserID is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldUserID requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldUserID: %w", err) - } - return oldValue.UserID, nil -} - -// ResetUserID reset all changes of the "user_id" field. -func (m *ChallengeMutation) ResetUserID() { - m.user_id = nil -} - -// SetHuman sets the human field. -func (m *ChallengeMutation) SetHuman(s string) { - m.human = &s -} - -// Human returns the human value in the mutation. -func (m *ChallengeMutation) Human() (r string, exists bool) { - v := m.human - if v == nil { - return - } - return *v, true -} - -// OldHuman returns the old human value of the Challenge. -// If the Challenge object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *ChallengeMutation) OldHuman(ctx context.Context) (v string, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldHuman is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldHuman requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldHuman: %w", err) - } - return oldValue.Human, nil -} - -// ResetHuman reset all changes of the "human" field. -func (m *ChallengeMutation) ResetHuman() { - m.human = nil -} - -// SetMagic sets the magic field. -func (m *ChallengeMutation) SetMagic(s string) { - m.magic = &s -} - -// Magic returns the magic value in the mutation. -func (m *ChallengeMutation) Magic() (r string, exists bool) { - v := m.magic - if v == nil { - return - } - return *v, true -} - -// OldMagic returns the old magic value of the Challenge. -// If the Challenge object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *ChallengeMutation) OldMagic(ctx context.Context) (v string, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldMagic is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldMagic requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldMagic: %w", err) - } - return oldValue.Magic, nil -} - -// ResetMagic reset all changes of the "magic" field. -func (m *ChallengeMutation) ResetMagic() { - m.magic = nil -} - -// SetExpiresAt sets the expires_at field. -func (m *ChallengeMutation) SetExpiresAt(t time.Time) { - m.expires_at = &t -} - -// ExpiresAt returns the expires_at value in the mutation. -func (m *ChallengeMutation) ExpiresAt() (r time.Time, exists bool) { - v := m.expires_at - if v == nil { - return - } - return *v, true -} - -// OldExpiresAt returns the old expires_at value of the Challenge. -// If the Challenge object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *ChallengeMutation) OldExpiresAt(ctx context.Context) (v time.Time, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldExpiresAt is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldExpiresAt requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldExpiresAt: %w", err) - } - return oldValue.ExpiresAt, nil -} - -// ResetExpiresAt reset all changes of the "expires_at" field. -func (m *ChallengeMutation) ResetExpiresAt() { - m.expires_at = nil -} - -// Op returns the operation name. -func (m *ChallengeMutation) Op() Op { - return m.op -} - -// Type returns the node type of this mutation (Challenge). -func (m *ChallengeMutation) Type() string { - return m.typ -} - -// Fields returns all fields that were changed during -// this mutation. Note that, in order to get all numeric -// fields that were in/decremented, call AddedFields(). -func (m *ChallengeMutation) Fields() []string { - fields := make([]string, 0, 7) - if m.create_time != nil { - fields = append(fields, challenge.FieldCreateTime) - } - if m.update_time != nil { - fields = append(fields, challenge.FieldUpdateTime) - } - if m.challenge_id != nil { - fields = append(fields, challenge.FieldChallengeID) - } - if m.user_id != nil { - fields = append(fields, challenge.FieldUserID) - } - if m.human != nil { - fields = append(fields, challenge.FieldHuman) - } - if m.magic != nil { - fields = append(fields, challenge.FieldMagic) - } - if m.expires_at != nil { - fields = append(fields, challenge.FieldExpiresAt) - } - return fields -} - -// Field returns the value of a field with the given name. -// The second boolean value indicates that this field was -// not set, or was not define in the schema. -func (m *ChallengeMutation) Field(name string) (ent.Value, bool) { - switch name { - case challenge.FieldCreateTime: - return m.CreateTime() - case challenge.FieldUpdateTime: - return m.UpdateTime() - case challenge.FieldChallengeID: - return m.ChallengeID() - case challenge.FieldUserID: - return m.UserID() - case challenge.FieldHuman: - return m.Human() - case challenge.FieldMagic: - return m.Magic() - case challenge.FieldExpiresAt: - return m.ExpiresAt() - } - return nil, false -} - -// OldField returns the old value of the field from the database. -// An error is returned if the mutation operation is not UpdateOne, -// or the query to the database was failed. -func (m *ChallengeMutation) OldField(ctx context.Context, name string) (ent.Value, error) { - switch name { - case challenge.FieldCreateTime: - return m.OldCreateTime(ctx) - case challenge.FieldUpdateTime: - return m.OldUpdateTime(ctx) - case challenge.FieldChallengeID: - return m.OldChallengeID(ctx) - case challenge.FieldUserID: - return m.OldUserID(ctx) - case challenge.FieldHuman: - return m.OldHuman(ctx) - case challenge.FieldMagic: - return m.OldMagic(ctx) - case challenge.FieldExpiresAt: - return m.OldExpiresAt(ctx) - } - return nil, fmt.Errorf("unknown Challenge field %s", name) -} - -// SetField sets the value for the given name. It returns an -// error if the field is not defined in the schema, or if the -// type mismatch the field type. -func (m *ChallengeMutation) SetField(name string, value ent.Value) error { - switch name { - case challenge.FieldCreateTime: - v, ok := value.(time.Time) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetCreateTime(v) - return nil - case challenge.FieldUpdateTime: - v, ok := value.(time.Time) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetUpdateTime(v) - return nil - case challenge.FieldChallengeID: - v, ok := value.(string) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetChallengeID(v) - return nil - case challenge.FieldUserID: - v, ok := value.(string) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetUserID(v) - return nil - case challenge.FieldHuman: - v, ok := value.(string) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetHuman(v) - return nil - case challenge.FieldMagic: - v, ok := value.(string) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetMagic(v) - return nil - case challenge.FieldExpiresAt: - v, ok := value.(time.Time) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetExpiresAt(v) - return nil - } - return fmt.Errorf("unknown Challenge field %s", name) -} - -// AddedFields returns all numeric fields that were incremented -// or decremented during this mutation. -func (m *ChallengeMutation) AddedFields() []string { - return nil -} - -// AddedField returns the numeric value that was in/decremented -// from a field with the given name. The second value indicates -// that this field was not set, or was not define in the schema. -func (m *ChallengeMutation) AddedField(name string) (ent.Value, bool) { - return nil, false -} - -// AddField adds the value for the given name. It returns an -// error if the field is not defined in the schema, or if the -// type mismatch the field type. -func (m *ChallengeMutation) AddField(name string, value ent.Value) error { - switch name { - } - return fmt.Errorf("unknown Challenge numeric field %s", name) -} - -// ClearedFields returns all nullable fields that were cleared -// during this mutation. -func (m *ChallengeMutation) ClearedFields() []string { - return nil -} - -// FieldCleared returns a boolean indicates if this field was -// cleared in this mutation. -func (m *ChallengeMutation) FieldCleared(name string) bool { - _, ok := m.clearedFields[name] - return ok -} - -// ClearField clears the value for the given name. It returns an -// error if the field is not defined in the schema. -func (m *ChallengeMutation) ClearField(name string) error { - return fmt.Errorf("unknown Challenge nullable field %s", name) -} - -// ResetField resets all changes in the mutation regarding the -// given field name. It returns an error if the field is not -// defined in the schema. -func (m *ChallengeMutation) ResetField(name string) error { - switch name { - case challenge.FieldCreateTime: - m.ResetCreateTime() - return nil - case challenge.FieldUpdateTime: - m.ResetUpdateTime() - return nil - case challenge.FieldChallengeID: - m.ResetChallengeID() - return nil - case challenge.FieldUserID: - m.ResetUserID() - return nil - case challenge.FieldHuman: - m.ResetHuman() - return nil - case challenge.FieldMagic: - m.ResetMagic() - return nil - case challenge.FieldExpiresAt: - m.ResetExpiresAt() - return nil - } - return fmt.Errorf("unknown Challenge field %s", name) -} - -// AddedEdges returns all edge names that were set/added in this -// mutation. -func (m *ChallengeMutation) AddedEdges() []string { - edges := make([]string, 0, 0) - return edges -} - -// AddedIDs returns all ids (to other nodes) that were added for -// the given edge name. -func (m *ChallengeMutation) AddedIDs(name string) []ent.Value { - return nil -} - -// RemovedEdges returns all edge names that were removed in this -// mutation. -func (m *ChallengeMutation) RemovedEdges() []string { - edges := make([]string, 0, 0) - return edges -} - -// RemovedIDs returns all ids (to other nodes) that were removed for -// the given edge name. -func (m *ChallengeMutation) RemovedIDs(name string) []ent.Value { - return nil -} - -// ClearedEdges returns all edge names that were cleared in this -// mutation. -func (m *ChallengeMutation) ClearedEdges() []string { - edges := make([]string, 0, 0) - return edges -} - -// EdgeCleared returns a boolean indicates if this edge was -// cleared in this mutation. -func (m *ChallengeMutation) EdgeCleared(name string) bool { - return false -} - -// ClearEdge clears the value for the given name. It returns an -// error if the edge name is not defined in the schema. -func (m *ChallengeMutation) ClearEdge(name string) error { - return fmt.Errorf("unknown Challenge unique edge %s", name) -} - -// ResetEdge resets all changes in the mutation regarding the -// given edge name. It returns an error if the edge is not -// defined in the schema. -func (m *ChallengeMutation) ResetEdge(name string) error { - return fmt.Errorf("unknown Challenge edge %s", name) -} - -// GuildMutation represents an operation that mutate the Guilds -// nodes in the graph. -type GuildMutation struct { - config - op Op - typ string - id *int - create_time *time.Time - update_time *time.Time - snowflake *string - message *string - categories *[]schema.Category - entitlements *[]string - clearedFields map[string]struct{} - done bool - oldValue func(context.Context) (*Guild, error) -} - -var _ ent.Mutation = (*GuildMutation)(nil) - -// guildOption allows to manage the mutation configuration using functional options. -type guildOption func(*GuildMutation) - -// newGuildMutation creates new mutation for $n.Name. -func newGuildMutation(c config, op Op, opts ...guildOption) *GuildMutation { - m := &GuildMutation{ - config: c, - op: op, - typ: TypeGuild, - clearedFields: make(map[string]struct{}), - } - for _, opt := range opts { - opt(m) - } - return m -} - -// withGuildID sets the id field of the mutation. -func withGuildID(id int) guildOption { - return func(m *GuildMutation) { - var ( - err error - once sync.Once - value *Guild - ) - m.oldValue = func(ctx context.Context) (*Guild, error) { - once.Do(func() { - if m.done { - err = fmt.Errorf("querying old values post mutation is not allowed") - } else { - value, err = m.Client().Guild.Get(ctx, id) - } - }) - return value, err - } - m.id = &id - } -} - -// withGuild sets the old Guild of the mutation. -func withGuild(node *Guild) guildOption { - return func(m *GuildMutation) { - m.oldValue = func(context.Context) (*Guild, error) { - return node, nil - } - m.id = &node.ID - } -} - -// Client returns a new `ent.Client` from the mutation. If the mutation was -// executed in a transaction (ent.Tx), a transactional client is returned. -func (m GuildMutation) Client() *Client { - client := &Client{config: m.config} - client.init() - return client -} - -// Tx returns an `ent.Tx` for mutations that were executed in transactions; -// it returns an error otherwise. -func (m GuildMutation) Tx() (*Tx, error) { - if _, ok := m.driver.(*txDriver); !ok { - return nil, fmt.Errorf("ent: mutation is not running in a transaction") - } - tx := &Tx{config: m.config} - tx.init() - return tx, nil -} - -// ID returns the id value in the mutation. Note that, the id -// is available only if it was provided to the builder. -func (m *GuildMutation) ID() (id int, exists bool) { - if m.id == nil { - return - } - return *m.id, true -} - -// SetCreateTime sets the create_time field. -func (m *GuildMutation) SetCreateTime(t time.Time) { - m.create_time = &t -} - -// CreateTime returns the create_time value in the mutation. -func (m *GuildMutation) CreateTime() (r time.Time, exists bool) { - v := m.create_time - if v == nil { - return - } - return *v, true -} - -// OldCreateTime returns the old create_time value of the Guild. -// If the Guild object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *GuildMutation) OldCreateTime(ctx context.Context) (v time.Time, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldCreateTime is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldCreateTime requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldCreateTime: %w", err) - } - return oldValue.CreateTime, nil -} - -// ResetCreateTime reset all changes of the "create_time" field. -func (m *GuildMutation) ResetCreateTime() { - m.create_time = nil -} - -// SetUpdateTime sets the update_time field. -func (m *GuildMutation) SetUpdateTime(t time.Time) { - m.update_time = &t -} - -// UpdateTime returns the update_time value in the mutation. -func (m *GuildMutation) UpdateTime() (r time.Time, exists bool) { - v := m.update_time - if v == nil { - return - } - return *v, true -} - -// OldUpdateTime returns the old update_time value of the Guild. -// If the Guild object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *GuildMutation) OldUpdateTime(ctx context.Context) (v time.Time, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldUpdateTime is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldUpdateTime requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldUpdateTime: %w", err) - } - return oldValue.UpdateTime, nil -} - -// ResetUpdateTime reset all changes of the "update_time" field. -func (m *GuildMutation) ResetUpdateTime() { - m.update_time = nil -} - -// SetSnowflake sets the snowflake field. -func (m *GuildMutation) SetSnowflake(s string) { - m.snowflake = &s -} - -// Snowflake returns the snowflake value in the mutation. -func (m *GuildMutation) Snowflake() (r string, exists bool) { - v := m.snowflake - if v == nil { - return - } - return *v, true -} - -// OldSnowflake returns the old snowflake value of the Guild. -// If the Guild object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *GuildMutation) OldSnowflake(ctx context.Context) (v string, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldSnowflake is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldSnowflake requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldSnowflake: %w", err) - } - return oldValue.Snowflake, nil -} - -// ResetSnowflake reset all changes of the "snowflake" field. -func (m *GuildMutation) ResetSnowflake() { - m.snowflake = nil -} - -// SetMessage sets the message field. -func (m *GuildMutation) SetMessage(s string) { - m.message = &s -} - -// Message returns the message value in the mutation. -func (m *GuildMutation) Message() (r string, exists bool) { - v := m.message - if v == nil { - return - } - return *v, true -} - -// OldMessage returns the old message value of the Guild. -// If the Guild object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *GuildMutation) OldMessage(ctx context.Context) (v string, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldMessage is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldMessage requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldMessage: %w", err) - } - return oldValue.Message, nil -} - -// ResetMessage reset all changes of the "message" field. -func (m *GuildMutation) ResetMessage() { - m.message = nil -} - -// SetCategories sets the categories field. -func (m *GuildMutation) SetCategories(s []schema.Category) { - m.categories = &s -} - -// Categories returns the categories value in the mutation. -func (m *GuildMutation) Categories() (r []schema.Category, exists bool) { - v := m.categories - if v == nil { - return - } - return *v, true -} - -// OldCategories returns the old categories value of the Guild. -// If the Guild object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *GuildMutation) OldCategories(ctx context.Context) (v []schema.Category, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldCategories is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldCategories requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldCategories: %w", err) - } - return oldValue.Categories, nil -} - -// ResetCategories reset all changes of the "categories" field. -func (m *GuildMutation) ResetCategories() { - m.categories = nil -} - -// SetEntitlements sets the entitlements field. -func (m *GuildMutation) SetEntitlements(s []string) { - m.entitlements = &s -} - -// Entitlements returns the entitlements value in the mutation. -func (m *GuildMutation) Entitlements() (r []string, exists bool) { - v := m.entitlements - if v == nil { - return - } - return *v, true -} - -// OldEntitlements returns the old entitlements value of the Guild. -// If the Guild object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *GuildMutation) OldEntitlements(ctx context.Context) (v []string, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldEntitlements is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldEntitlements requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldEntitlements: %w", err) - } - return oldValue.Entitlements, nil -} - -// ResetEntitlements reset all changes of the "entitlements" field. -func (m *GuildMutation) ResetEntitlements() { - m.entitlements = nil -} - -// Op returns the operation name. -func (m *GuildMutation) Op() Op { - return m.op -} - -// Type returns the node type of this mutation (Guild). -func (m *GuildMutation) Type() string { - return m.typ -} - -// Fields returns all fields that were changed during -// this mutation. Note that, in order to get all numeric -// fields that were in/decremented, call AddedFields(). -func (m *GuildMutation) Fields() []string { - fields := make([]string, 0, 6) - if m.create_time != nil { - fields = append(fields, guild.FieldCreateTime) - } - if m.update_time != nil { - fields = append(fields, guild.FieldUpdateTime) - } - if m.snowflake != nil { - fields = append(fields, guild.FieldSnowflake) - } - if m.message != nil { - fields = append(fields, guild.FieldMessage) - } - if m.categories != nil { - fields = append(fields, guild.FieldCategories) - } - if m.entitlements != nil { - fields = append(fields, guild.FieldEntitlements) - } - return fields -} - -// Field returns the value of a field with the given name. -// The second boolean value indicates that this field was -// not set, or was not define in the schema. -func (m *GuildMutation) Field(name string) (ent.Value, bool) { - switch name { - case guild.FieldCreateTime: - return m.CreateTime() - case guild.FieldUpdateTime: - return m.UpdateTime() - case guild.FieldSnowflake: - return m.Snowflake() - case guild.FieldMessage: - return m.Message() - case guild.FieldCategories: - return m.Categories() - case guild.FieldEntitlements: - return m.Entitlements() - } - return nil, false -} - -// OldField returns the old value of the field from the database. -// An error is returned if the mutation operation is not UpdateOne, -// or the query to the database was failed. -func (m *GuildMutation) OldField(ctx context.Context, name string) (ent.Value, error) { - switch name { - case guild.FieldCreateTime: - return m.OldCreateTime(ctx) - case guild.FieldUpdateTime: - return m.OldUpdateTime(ctx) - case guild.FieldSnowflake: - return m.OldSnowflake(ctx) - case guild.FieldMessage: - return m.OldMessage(ctx) - case guild.FieldCategories: - return m.OldCategories(ctx) - case guild.FieldEntitlements: - return m.OldEntitlements(ctx) - } - return nil, fmt.Errorf("unknown Guild field %s", name) -} - -// SetField sets the value for the given name. It returns an -// error if the field is not defined in the schema, or if the -// type mismatch the field type. -func (m *GuildMutation) SetField(name string, value ent.Value) error { - switch name { - case guild.FieldCreateTime: - v, ok := value.(time.Time) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetCreateTime(v) - return nil - case guild.FieldUpdateTime: - v, ok := value.(time.Time) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetUpdateTime(v) - return nil - case guild.FieldSnowflake: - v, ok := value.(string) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetSnowflake(v) - return nil - case guild.FieldMessage: - v, ok := value.(string) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetMessage(v) - return nil - case guild.FieldCategories: - v, ok := value.([]schema.Category) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetCategories(v) - return nil - case guild.FieldEntitlements: - v, ok := value.([]string) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetEntitlements(v) - return nil - } - return fmt.Errorf("unknown Guild field %s", name) -} - -// AddedFields returns all numeric fields that were incremented -// or decremented during this mutation. -func (m *GuildMutation) AddedFields() []string { - return nil -} - -// AddedField returns the numeric value that was in/decremented -// from a field with the given name. The second value indicates -// that this field was not set, or was not define in the schema. -func (m *GuildMutation) AddedField(name string) (ent.Value, bool) { - return nil, false -} - -// AddField adds the value for the given name. It returns an -// error if the field is not defined in the schema, or if the -// type mismatch the field type. -func (m *GuildMutation) AddField(name string, value ent.Value) error { - switch name { - } - return fmt.Errorf("unknown Guild numeric field %s", name) -} - -// ClearedFields returns all nullable fields that were cleared -// during this mutation. -func (m *GuildMutation) ClearedFields() []string { - return nil -} - -// FieldCleared returns a boolean indicates if this field was -// cleared in this mutation. -func (m *GuildMutation) FieldCleared(name string) bool { - _, ok := m.clearedFields[name] - return ok -} - -// ClearField clears the value for the given name. It returns an -// error if the field is not defined in the schema. -func (m *GuildMutation) ClearField(name string) error { - return fmt.Errorf("unknown Guild nullable field %s", name) -} - -// ResetField resets all changes in the mutation regarding the -// given field name. It returns an error if the field is not -// defined in the schema. -func (m *GuildMutation) ResetField(name string) error { - switch name { - case guild.FieldCreateTime: - m.ResetCreateTime() - return nil - case guild.FieldUpdateTime: - m.ResetUpdateTime() - return nil - case guild.FieldSnowflake: - m.ResetSnowflake() - return nil - case guild.FieldMessage: - m.ResetMessage() - return nil - case guild.FieldCategories: - m.ResetCategories() - return nil - case guild.FieldEntitlements: - m.ResetEntitlements() - return nil - } - return fmt.Errorf("unknown Guild field %s", name) -} - -// AddedEdges returns all edge names that were set/added in this -// mutation. -func (m *GuildMutation) AddedEdges() []string { - edges := make([]string, 0, 0) - return edges -} - -// AddedIDs returns all ids (to other nodes) that were added for -// the given edge name. -func (m *GuildMutation) AddedIDs(name string) []ent.Value { - return nil -} - -// RemovedEdges returns all edge names that were removed in this -// mutation. -func (m *GuildMutation) RemovedEdges() []string { - edges := make([]string, 0, 0) - return edges -} - -// RemovedIDs returns all ids (to other nodes) that were removed for -// the given edge name. -func (m *GuildMutation) RemovedIDs(name string) []ent.Value { - return nil -} - -// ClearedEdges returns all edge names that were cleared in this -// mutation. -func (m *GuildMutation) ClearedEdges() []string { - edges := make([]string, 0, 0) - return edges -} - -// EdgeCleared returns a boolean indicates if this edge was -// cleared in this mutation. -func (m *GuildMutation) EdgeCleared(name string) bool { - return false -} - -// ClearEdge clears the value for the given name. It returns an -// error if the edge name is not defined in the schema. -func (m *GuildMutation) ClearEdge(name string) error { - return fmt.Errorf("unknown Guild unique edge %s", name) -} - -// ResetEdge resets all changes in the mutation regarding the -// given edge name. It returns an error if the edge is not -// defined in the schema. -func (m *GuildMutation) ResetEdge(name string) error { - return fmt.Errorf("unknown Guild edge %s", name) -} - -// SessionMutation represents an operation that mutate the Sessions -// nodes in the graph. -type SessionMutation struct { - config - op Op - typ string - id *int - create_time *time.Time - update_time *time.Time - session_id *string - user_id *string - source *session.Source - expires_at *time.Time - clearedFields map[string]struct{} - done bool - oldValue func(context.Context) (*Session, error) -} - -var _ ent.Mutation = (*SessionMutation)(nil) - -// sessionOption allows to manage the mutation configuration using functional options. -type sessionOption func(*SessionMutation) - -// newSessionMutation creates new mutation for $n.Name. -func newSessionMutation(c config, op Op, opts ...sessionOption) *SessionMutation { - m := &SessionMutation{ - config: c, - op: op, - typ: TypeSession, - clearedFields: make(map[string]struct{}), - } - for _, opt := range opts { - opt(m) - } - return m -} - -// withSessionID sets the id field of the mutation. -func withSessionID(id int) sessionOption { - return func(m *SessionMutation) { - var ( - err error - once sync.Once - value *Session - ) - m.oldValue = func(ctx context.Context) (*Session, error) { - once.Do(func() { - if m.done { - err = fmt.Errorf("querying old values post mutation is not allowed") - } else { - value, err = m.Client().Session.Get(ctx, id) - } - }) - return value, err - } - m.id = &id - } -} - -// withSession sets the old Session of the mutation. -func withSession(node *Session) sessionOption { - return func(m *SessionMutation) { - m.oldValue = func(context.Context) (*Session, error) { - return node, nil - } - m.id = &node.ID - } -} - -// Client returns a new `ent.Client` from the mutation. If the mutation was -// executed in a transaction (ent.Tx), a transactional client is returned. -func (m SessionMutation) Client() *Client { - client := &Client{config: m.config} - client.init() - return client -} - -// Tx returns an `ent.Tx` for mutations that were executed in transactions; -// it returns an error otherwise. -func (m SessionMutation) Tx() (*Tx, error) { - if _, ok := m.driver.(*txDriver); !ok { - return nil, fmt.Errorf("ent: mutation is not running in a transaction") - } - tx := &Tx{config: m.config} - tx.init() - return tx, nil -} - -// ID returns the id value in the mutation. Note that, the id -// is available only if it was provided to the builder. -func (m *SessionMutation) ID() (id int, exists bool) { - if m.id == nil { - return - } - return *m.id, true -} - -// SetCreateTime sets the create_time field. -func (m *SessionMutation) SetCreateTime(t time.Time) { - m.create_time = &t -} - -// CreateTime returns the create_time value in the mutation. -func (m *SessionMutation) CreateTime() (r time.Time, exists bool) { - v := m.create_time - if v == nil { - return - } - return *v, true -} - -// OldCreateTime returns the old create_time value of the Session. -// If the Session object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *SessionMutation) OldCreateTime(ctx context.Context) (v time.Time, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldCreateTime is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldCreateTime requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldCreateTime: %w", err) - } - return oldValue.CreateTime, nil -} - -// ResetCreateTime reset all changes of the "create_time" field. -func (m *SessionMutation) ResetCreateTime() { - m.create_time = nil -} - -// SetUpdateTime sets the update_time field. -func (m *SessionMutation) SetUpdateTime(t time.Time) { - m.update_time = &t -} - -// UpdateTime returns the update_time value in the mutation. -func (m *SessionMutation) UpdateTime() (r time.Time, exists bool) { - v := m.update_time - if v == nil { - return - } - return *v, true -} - -// OldUpdateTime returns the old update_time value of the Session. -// If the Session object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *SessionMutation) OldUpdateTime(ctx context.Context) (v time.Time, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldUpdateTime is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldUpdateTime requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldUpdateTime: %w", err) - } - return oldValue.UpdateTime, nil -} - -// ResetUpdateTime reset all changes of the "update_time" field. -func (m *SessionMutation) ResetUpdateTime() { - m.update_time = nil -} - -// SetSessionID sets the session_id field. -func (m *SessionMutation) SetSessionID(s string) { - m.session_id = &s -} - -// SessionID returns the session_id value in the mutation. -func (m *SessionMutation) SessionID() (r string, exists bool) { - v := m.session_id - if v == nil { - return - } - return *v, true -} - -// OldSessionID returns the old session_id value of the Session. -// If the Session object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *SessionMutation) OldSessionID(ctx context.Context) (v string, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldSessionID is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldSessionID requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldSessionID: %w", err) - } - return oldValue.SessionID, nil -} - -// ResetSessionID reset all changes of the "session_id" field. -func (m *SessionMutation) ResetSessionID() { - m.session_id = nil -} - -// SetUserID sets the user_id field. -func (m *SessionMutation) SetUserID(s string) { - m.user_id = &s -} - -// UserID returns the user_id value in the mutation. -func (m *SessionMutation) UserID() (r string, exists bool) { - v := m.user_id - if v == nil { - return - } - return *v, true -} - -// OldUserID returns the old user_id value of the Session. -// If the Session object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *SessionMutation) OldUserID(ctx context.Context) (v string, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldUserID is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldUserID requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldUserID: %w", err) - } - return oldValue.UserID, nil -} - -// ResetUserID reset all changes of the "user_id" field. -func (m *SessionMutation) ResetUserID() { - m.user_id = nil -} - -// SetSource sets the source field. -func (m *SessionMutation) SetSource(s session.Source) { - m.source = &s -} - -// Source returns the source value in the mutation. -func (m *SessionMutation) Source() (r session.Source, exists bool) { - v := m.source - if v == nil { - return - } - return *v, true -} - -// OldSource returns the old source value of the Session. -// If the Session object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *SessionMutation) OldSource(ctx context.Context) (v session.Source, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldSource is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldSource requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldSource: %w", err) - } - return oldValue.Source, nil -} - -// ResetSource reset all changes of the "source" field. -func (m *SessionMutation) ResetSource() { - m.source = nil -} - -// SetExpiresAt sets the expires_at field. -func (m *SessionMutation) SetExpiresAt(t time.Time) { - m.expires_at = &t -} - -// ExpiresAt returns the expires_at value in the mutation. -func (m *SessionMutation) ExpiresAt() (r time.Time, exists bool) { - v := m.expires_at - if v == nil { - return - } - return *v, true -} - -// OldExpiresAt returns the old expires_at value of the Session. -// If the Session object wasn't provided to the builder, the object is fetched -// from the database. -// An error is returned if the mutation operation is not UpdateOne, or database query fails. -func (m *SessionMutation) OldExpiresAt(ctx context.Context) (v time.Time, err error) { - if !m.op.Is(OpUpdateOne) { - return v, fmt.Errorf("OldExpiresAt is allowed only on UpdateOne operations") - } - if m.id == nil || m.oldValue == nil { - return v, fmt.Errorf("OldExpiresAt requires an ID field in the mutation") - } - oldValue, err := m.oldValue(ctx) - if err != nil { - return v, fmt.Errorf("querying old value for OldExpiresAt: %w", err) - } - return oldValue.ExpiresAt, nil -} - -// ResetExpiresAt reset all changes of the "expires_at" field. -func (m *SessionMutation) ResetExpiresAt() { - m.expires_at = nil -} - -// Op returns the operation name. -func (m *SessionMutation) Op() Op { - return m.op -} - -// Type returns the node type of this mutation (Session). -func (m *SessionMutation) Type() string { - return m.typ -} - -// Fields returns all fields that were changed during -// this mutation. Note that, in order to get all numeric -// fields that were in/decremented, call AddedFields(). -func (m *SessionMutation) Fields() []string { - fields := make([]string, 0, 6) - if m.create_time != nil { - fields = append(fields, session.FieldCreateTime) - } - if m.update_time != nil { - fields = append(fields, session.FieldUpdateTime) - } - if m.session_id != nil { - fields = append(fields, session.FieldSessionID) - } - if m.user_id != nil { - fields = append(fields, session.FieldUserID) - } - if m.source != nil { - fields = append(fields, session.FieldSource) - } - if m.expires_at != nil { - fields = append(fields, session.FieldExpiresAt) - } - return fields -} - -// Field returns the value of a field with the given name. -// The second boolean value indicates that this field was -// not set, or was not define in the schema. -func (m *SessionMutation) Field(name string) (ent.Value, bool) { - switch name { - case session.FieldCreateTime: - return m.CreateTime() - case session.FieldUpdateTime: - return m.UpdateTime() - case session.FieldSessionID: - return m.SessionID() - case session.FieldUserID: - return m.UserID() - case session.FieldSource: - return m.Source() - case session.FieldExpiresAt: - return m.ExpiresAt() - } - return nil, false -} - -// OldField returns the old value of the field from the database. -// An error is returned if the mutation operation is not UpdateOne, -// or the query to the database was failed. -func (m *SessionMutation) OldField(ctx context.Context, name string) (ent.Value, error) { - switch name { - case session.FieldCreateTime: - return m.OldCreateTime(ctx) - case session.FieldUpdateTime: - return m.OldUpdateTime(ctx) - case session.FieldSessionID: - return m.OldSessionID(ctx) - case session.FieldUserID: - return m.OldUserID(ctx) - case session.FieldSource: - return m.OldSource(ctx) - case session.FieldExpiresAt: - return m.OldExpiresAt(ctx) - } - return nil, fmt.Errorf("unknown Session field %s", name) -} - -// SetField sets the value for the given name. It returns an -// error if the field is not defined in the schema, or if the -// type mismatch the field type. -func (m *SessionMutation) SetField(name string, value ent.Value) error { - switch name { - case session.FieldCreateTime: - v, ok := value.(time.Time) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetCreateTime(v) - return nil - case session.FieldUpdateTime: - v, ok := value.(time.Time) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetUpdateTime(v) - return nil - case session.FieldSessionID: - v, ok := value.(string) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetSessionID(v) - return nil - case session.FieldUserID: - v, ok := value.(string) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetUserID(v) - return nil - case session.FieldSource: - v, ok := value.(session.Source) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetSource(v) - return nil - case session.FieldExpiresAt: - v, ok := value.(time.Time) - if !ok { - return fmt.Errorf("unexpected type %T for field %s", value, name) - } - m.SetExpiresAt(v) - return nil - } - return fmt.Errorf("unknown Session field %s", name) -} - -// AddedFields returns all numeric fields that were incremented -// or decremented during this mutation. -func (m *SessionMutation) AddedFields() []string { - return nil -} - -// AddedField returns the numeric value that was in/decremented -// from a field with the given name. The second value indicates -// that this field was not set, or was not define in the schema. -func (m *SessionMutation) AddedField(name string) (ent.Value, bool) { - return nil, false -} - -// AddField adds the value for the given name. It returns an -// error if the field is not defined in the schema, or if the -// type mismatch the field type. -func (m *SessionMutation) AddField(name string, value ent.Value) error { - switch name { - } - return fmt.Errorf("unknown Session numeric field %s", name) -} - -// ClearedFields returns all nullable fields that were cleared -// during this mutation. -func (m *SessionMutation) ClearedFields() []string { - return nil -} - -// FieldCleared returns a boolean indicates if this field was -// cleared in this mutation. -func (m *SessionMutation) FieldCleared(name string) bool { - _, ok := m.clearedFields[name] - return ok -} - -// ClearField clears the value for the given name. It returns an -// error if the field is not defined in the schema. -func (m *SessionMutation) ClearField(name string) error { - return fmt.Errorf("unknown Session nullable field %s", name) -} - -// ResetField resets all changes in the mutation regarding the -// given field name. It returns an error if the field is not -// defined in the schema. -func (m *SessionMutation) ResetField(name string) error { - switch name { - case session.FieldCreateTime: - m.ResetCreateTime() - return nil - case session.FieldUpdateTime: - m.ResetUpdateTime() - return nil - case session.FieldSessionID: - m.ResetSessionID() - return nil - case session.FieldUserID: - m.ResetUserID() - return nil - case session.FieldSource: - m.ResetSource() - return nil - case session.FieldExpiresAt: - m.ResetExpiresAt() - return nil - } - return fmt.Errorf("unknown Session field %s", name) -} - -// AddedEdges returns all edge names that were set/added in this -// mutation. -func (m *SessionMutation) AddedEdges() []string { - edges := make([]string, 0, 0) - return edges -} - -// AddedIDs returns all ids (to other nodes) that were added for -// the given edge name. -func (m *SessionMutation) AddedIDs(name string) []ent.Value { - return nil -} - -// RemovedEdges returns all edge names that were removed in this -// mutation. -func (m *SessionMutation) RemovedEdges() []string { - edges := make([]string, 0, 0) - return edges -} - -// RemovedIDs returns all ids (to other nodes) that were removed for -// the given edge name. -func (m *SessionMutation) RemovedIDs(name string) []ent.Value { - return nil -} - -// ClearedEdges returns all edge names that were cleared in this -// mutation. -func (m *SessionMutation) ClearedEdges() []string { - edges := make([]string, 0, 0) - return edges -} - -// EdgeCleared returns a boolean indicates if this edge was -// cleared in this mutation. -func (m *SessionMutation) EdgeCleared(name string) bool { - return false -} - -// ClearEdge clears the value for the given name. It returns an -// error if the edge name is not defined in the schema. -func (m *SessionMutation) ClearEdge(name string) error { - return fmt.Errorf("unknown Session unique edge %s", name) -} - -// ResetEdge resets all changes in the mutation regarding the -// given edge name. It returns an error if the edge is not -// defined in the schema. -func (m *SessionMutation) ResetEdge(name string) error { - return fmt.Errorf("unknown Session edge %s", name) -} diff --git a/src/db/ent/predicate/BUILD.bazel b/src/db/ent/predicate/BUILD.bazel deleted file mode 100644 index edfebc4..0000000 --- a/src/db/ent/predicate/BUILD.bazel +++ /dev/null @@ -1,9 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "predicate", - srcs = ["predicate.go"], - importpath = "github.com/roleypoly/roleypoly/src/db/ent/predicate", - visibility = ["//visibility:public"], - deps = ["@com_github_facebook_ent//dialect/sql"], -) diff --git a/src/db/ent/predicate/predicate.go b/src/db/ent/predicate/predicate.go deleted file mode 100644 index eb83f8f..0000000 --- a/src/db/ent/predicate/predicate.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package predicate - -import ( - "github.com/facebook/ent/dialect/sql" -) - -// Challenge is the predicate function for challenge builders. -type Challenge func(*sql.Selector) - -// Guild is the predicate function for guild builders. -type Guild func(*sql.Selector) - -// Session is the predicate function for session builders. -type Session func(*sql.Selector) diff --git a/src/db/ent/privacy/BUILD.bazel b/src/db/ent/privacy/BUILD.bazel deleted file mode 100644 index c9ea00f..0000000 --- a/src/db/ent/privacy/BUILD.bazel +++ /dev/null @@ -1,9 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "privacy", - srcs = ["privacy.go"], - importpath = "github.com/roleypoly/roleypoly/src/db/ent/privacy", - visibility = ["//visibility:public"], - deps = ["//src/db/ent"], -) diff --git a/src/db/ent/privacy/privacy.go b/src/db/ent/privacy/privacy.go deleted file mode 100644 index c72a8a3..0000000 --- a/src/db/ent/privacy/privacy.go +++ /dev/null @@ -1,283 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package privacy - -import ( - "context" - "errors" - "fmt" - - "github.com/roleypoly/roleypoly/src/db/ent" -) - -var ( - // Allow may be returned by rules to indicate that the policy - // evaluation should terminate with an allow decision. - Allow = errors.New("ent/privacy: allow rule") - - // Deny may be returned by rules to indicate that the policy - // evaluation should terminate with an deny decision. - Deny = errors.New("ent/privacy: deny rule") - - // Skip may be returned by rules to indicate that the policy - // evaluation should continue to the next rule. - Skip = errors.New("ent/privacy: skip rule") -) - -// Allowf returns an formatted wrapped Allow decision. -func Allowf(format string, a ...interface{}) error { - return fmt.Errorf(format+": %w", append(a, Allow)...) -} - -// Denyf returns an formatted wrapped Deny decision. -func Denyf(format string, a ...interface{}) error { - return fmt.Errorf(format+": %w", append(a, Deny)...) -} - -// Skipf returns an formatted wrapped Skip decision. -func Skipf(format string, a ...interface{}) error { - return fmt.Errorf(format+": %w", append(a, Skip)...) -} - -type decisionCtxKey struct{} - -// DecisionContext creates a decision context. -func DecisionContext(parent context.Context, decision error) context.Context { - if decision == nil || errors.Is(decision, Skip) { - return parent - } - return context.WithValue(parent, decisionCtxKey{}, decision) -} - -func decisionFromContext(ctx context.Context) (error, bool) { - decision, ok := ctx.Value(decisionCtxKey{}).(error) - if ok && errors.Is(decision, Allow) { - decision = nil - } - return decision, ok -} - -type ( - // QueryPolicy combines multiple query rules into a single policy. - QueryPolicy []QueryRule - - // QueryRule defines the interface deciding whether a - // query is allowed and optionally modify it. - QueryRule interface { - EvalQuery(context.Context, ent.Query) error - } -) - -// EvalQuery evaluates a query against a query policy. -func (policy QueryPolicy) EvalQuery(ctx context.Context, q ent.Query) error { - if decision, ok := decisionFromContext(ctx); ok { - return decision - } - for _, rule := range policy { - switch decision := rule.EvalQuery(ctx, q); { - case decision == nil || errors.Is(decision, Skip): - case errors.Is(decision, Allow): - return nil - default: - return decision - } - } - return nil -} - -// QueryRuleFunc type is an adapter to allow the use of -// ordinary functions as query rules. -type QueryRuleFunc func(context.Context, ent.Query) error - -// Eval returns f(ctx, q). -func (f QueryRuleFunc) EvalQuery(ctx context.Context, q ent.Query) error { - return f(ctx, q) -} - -type ( - // MutationPolicy combines multiple mutation rules into a single policy. - MutationPolicy []MutationRule - - // MutationRule defines the interface deciding whether a - // mutation is allowed and optionally modify it. - MutationRule interface { - EvalMutation(context.Context, ent.Mutation) error - } -) - -// EvalMutation evaluates a mutation against a mutation policy. -func (policy MutationPolicy) EvalMutation(ctx context.Context, m ent.Mutation) error { - if decision, ok := decisionFromContext(ctx); ok { - return decision - } - for _, rule := range policy { - switch decision := rule.EvalMutation(ctx, m); { - case decision == nil || errors.Is(decision, Skip): - case errors.Is(decision, Allow): - return nil - default: - return decision - } - } - return nil -} - -// MutationRuleFunc type is an adapter to allow the use of -// ordinary functions as mutation rules. -type MutationRuleFunc func(context.Context, ent.Mutation) error - -// EvalMutation returns f(ctx, m). -func (f MutationRuleFunc) EvalMutation(ctx context.Context, m ent.Mutation) error { - return f(ctx, m) -} - -// Policy groups query and mutation policies. -type Policy struct { - Query QueryPolicy - Mutation MutationPolicy -} - -// EvalQuery forwards evaluation to query policy. -func (policy Policy) EvalQuery(ctx context.Context, q ent.Query) error { - return policy.Query.EvalQuery(ctx, q) -} - -// EvalMutation forwards evaluation to mutation policy. -func (policy Policy) EvalMutation(ctx context.Context, m ent.Mutation) error { - return policy.Mutation.EvalMutation(ctx, m) -} - -// QueryMutationRule is the interface that groups query and mutation rules. -type QueryMutationRule interface { - QueryRule - MutationRule -} - -// AlwaysAllowRule returns a rule that returns an allow decision. -func AlwaysAllowRule() QueryMutationRule { - return fixedDecision{Allow} -} - -// AlwaysDenyRule returns a rule that returns a deny decision. -func AlwaysDenyRule() QueryMutationRule { - return fixedDecision{Deny} -} - -type fixedDecision struct { - decision error -} - -func (f fixedDecision) EvalQuery(context.Context, ent.Query) error { - return f.decision -} - -func (f fixedDecision) EvalMutation(context.Context, ent.Mutation) error { - return f.decision -} - -type contextDecision struct { - eval func(context.Context) error -} - -// ContextQueryMutationRule creates a query/mutation rule from a context eval func. -func ContextQueryMutationRule(eval func(context.Context) error) QueryMutationRule { - return contextDecision{eval} -} - -func (c contextDecision) EvalQuery(ctx context.Context, _ ent.Query) error { - return c.eval(ctx) -} - -func (c contextDecision) EvalMutation(ctx context.Context, _ ent.Mutation) error { - return c.eval(ctx) -} - -// OnMutationOperation evaluates the given rule only on a given mutation operation. -func OnMutationOperation(rule MutationRule, op ent.Op) MutationRule { - return MutationRuleFunc(func(ctx context.Context, m ent.Mutation) error { - if m.Op().Is(op) { - return rule.EvalMutation(ctx, m) - } - return Skip - }) -} - -// DenyMutationOperationRule returns a rule denying specified mutation operation. -func DenyMutationOperationRule(op ent.Op) MutationRule { - rule := MutationRuleFunc(func(_ context.Context, m ent.Mutation) error { - return Denyf("ent/privacy: operation %s is not allowed", m.Op()) - }) - return OnMutationOperation(rule, op) -} - -// The ChallengeQueryRuleFunc type is an adapter to allow the use of ordinary -// functions as a query rule. -type ChallengeQueryRuleFunc func(context.Context, *ent.ChallengeQuery) error - -// EvalQuery return f(ctx, q). -func (f ChallengeQueryRuleFunc) EvalQuery(ctx context.Context, q ent.Query) error { - if q, ok := q.(*ent.ChallengeQuery); ok { - return f(ctx, q) - } - return Denyf("ent/privacy: unexpected query type %T, expect *ent.ChallengeQuery", q) -} - -// The ChallengeMutationRuleFunc type is an adapter to allow the use of ordinary -// functions as a mutation rule. -type ChallengeMutationRuleFunc func(context.Context, *ent.ChallengeMutation) error - -// EvalMutation calls f(ctx, m). -func (f ChallengeMutationRuleFunc) EvalMutation(ctx context.Context, m ent.Mutation) error { - if m, ok := m.(*ent.ChallengeMutation); ok { - return f(ctx, m) - } - return Denyf("ent/privacy: unexpected mutation type %T, expect *ent.ChallengeMutation", m) -} - -// The GuildQueryRuleFunc type is an adapter to allow the use of ordinary -// functions as a query rule. -type GuildQueryRuleFunc func(context.Context, *ent.GuildQuery) error - -// EvalQuery return f(ctx, q). -func (f GuildQueryRuleFunc) EvalQuery(ctx context.Context, q ent.Query) error { - if q, ok := q.(*ent.GuildQuery); ok { - return f(ctx, q) - } - return Denyf("ent/privacy: unexpected query type %T, expect *ent.GuildQuery", q) -} - -// The GuildMutationRuleFunc type is an adapter to allow the use of ordinary -// functions as a mutation rule. -type GuildMutationRuleFunc func(context.Context, *ent.GuildMutation) error - -// EvalMutation calls f(ctx, m). -func (f GuildMutationRuleFunc) EvalMutation(ctx context.Context, m ent.Mutation) error { - if m, ok := m.(*ent.GuildMutation); ok { - return f(ctx, m) - } - return Denyf("ent/privacy: unexpected mutation type %T, expect *ent.GuildMutation", m) -} - -// The SessionQueryRuleFunc type is an adapter to allow the use of ordinary -// functions as a query rule. -type SessionQueryRuleFunc func(context.Context, *ent.SessionQuery) error - -// EvalQuery return f(ctx, q). -func (f SessionQueryRuleFunc) EvalQuery(ctx context.Context, q ent.Query) error { - if q, ok := q.(*ent.SessionQuery); ok { - return f(ctx, q) - } - return Denyf("ent/privacy: unexpected query type %T, expect *ent.SessionQuery", q) -} - -// The SessionMutationRuleFunc type is an adapter to allow the use of ordinary -// functions as a mutation rule. -type SessionMutationRuleFunc func(context.Context, *ent.SessionMutation) error - -// EvalMutation calls f(ctx, m). -func (f SessionMutationRuleFunc) EvalMutation(ctx context.Context, m ent.Mutation) error { - if m, ok := m.(*ent.SessionMutation); ok { - return f(ctx, m) - } - return Denyf("ent/privacy: unexpected mutation type %T, expect *ent.SessionMutation", m) -} diff --git a/src/db/ent/runtime.go b/src/db/ent/runtime.go deleted file mode 100644 index 20e4579..0000000 --- a/src/db/ent/runtime.go +++ /dev/null @@ -1,68 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "time" - - "github.com/roleypoly/roleypoly/src/db/ent/challenge" - "github.com/roleypoly/roleypoly/src/db/ent/guild" - "github.com/roleypoly/roleypoly/src/db/ent/schema" - "github.com/roleypoly/roleypoly/src/db/ent/session" -) - -// The init function reads all schema descriptors with runtime -// code (default values, validators or hooks) and stitches it -// to their package variables. -func init() { - challengeMixin := schema.Challenge{}.Mixin() - challengeMixinFields0 := challengeMixin[0].Fields() - challengeFields := schema.Challenge{}.Fields() - _ = challengeFields - // challengeDescCreateTime is the schema descriptor for create_time field. - challengeDescCreateTime := challengeMixinFields0[0].Descriptor() - // challenge.DefaultCreateTime holds the default value on creation for the create_time field. - challenge.DefaultCreateTime = challengeDescCreateTime.Default.(func() time.Time) - // challengeDescUpdateTime is the schema descriptor for update_time field. - challengeDescUpdateTime := challengeMixinFields0[1].Descriptor() - // challenge.DefaultUpdateTime holds the default value on creation for the update_time field. - challenge.DefaultUpdateTime = challengeDescUpdateTime.Default.(func() time.Time) - // challenge.UpdateDefaultUpdateTime holds the default value on update for the update_time field. - challenge.UpdateDefaultUpdateTime = challengeDescUpdateTime.UpdateDefault.(func() time.Time) - // challengeDescExpiresAt is the schema descriptor for expires_at field. - challengeDescExpiresAt := challengeFields[4].Descriptor() - // challenge.DefaultExpiresAt holds the default value on creation for the expires_at field. - challenge.DefaultExpiresAt = challengeDescExpiresAt.Default.(func() time.Time) - guildMixin := schema.Guild{}.Mixin() - guildMixinFields0 := guildMixin[0].Fields() - guildFields := schema.Guild{}.Fields() - _ = guildFields - // guildDescCreateTime is the schema descriptor for create_time field. - guildDescCreateTime := guildMixinFields0[0].Descriptor() - // guild.DefaultCreateTime holds the default value on creation for the create_time field. - guild.DefaultCreateTime = guildDescCreateTime.Default.(func() time.Time) - // guildDescUpdateTime is the schema descriptor for update_time field. - guildDescUpdateTime := guildMixinFields0[1].Descriptor() - // guild.DefaultUpdateTime holds the default value on creation for the update_time field. - guild.DefaultUpdateTime = guildDescUpdateTime.Default.(func() time.Time) - // guild.UpdateDefaultUpdateTime holds the default value on update for the update_time field. - guild.UpdateDefaultUpdateTime = guildDescUpdateTime.UpdateDefault.(func() time.Time) - sessionMixin := schema.Session{}.Mixin() - sessionMixinFields0 := sessionMixin[0].Fields() - sessionFields := schema.Session{}.Fields() - _ = sessionFields - // sessionDescCreateTime is the schema descriptor for create_time field. - sessionDescCreateTime := sessionMixinFields0[0].Descriptor() - // session.DefaultCreateTime holds the default value on creation for the create_time field. - session.DefaultCreateTime = sessionDescCreateTime.Default.(func() time.Time) - // sessionDescUpdateTime is the schema descriptor for update_time field. - sessionDescUpdateTime := sessionMixinFields0[1].Descriptor() - // session.DefaultUpdateTime holds the default value on creation for the update_time field. - session.DefaultUpdateTime = sessionDescUpdateTime.Default.(func() time.Time) - // session.UpdateDefaultUpdateTime holds the default value on update for the update_time field. - session.UpdateDefaultUpdateTime = sessionDescUpdateTime.UpdateDefault.(func() time.Time) - // sessionDescExpiresAt is the schema descriptor for expires_at field. - sessionDescExpiresAt := sessionFields[3].Descriptor() - // session.DefaultExpiresAt holds the default value on creation for the expires_at field. - session.DefaultExpiresAt = sessionDescExpiresAt.Default.(func() time.Time) -} diff --git a/src/db/ent/runtime/BUILD.bazel b/src/db/ent/runtime/BUILD.bazel deleted file mode 100644 index 45c8a0f..0000000 --- a/src/db/ent/runtime/BUILD.bazel +++ /dev/null @@ -1,8 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "runtime", - srcs = ["runtime.go"], - importpath = "github.com/roleypoly/roleypoly/src/db/ent/runtime", - visibility = ["//visibility:public"], -) diff --git a/src/db/ent/runtime/runtime.go b/src/db/ent/runtime/runtime.go deleted file mode 100644 index 1817fb1..0000000 --- a/src/db/ent/runtime/runtime.go +++ /dev/null @@ -1,10 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package runtime - -// The schema-stitching logic is generated in github.com/roleypoly/roleypoly/src/db/ent/runtime.go - -const ( - Version = "v0.4.3" // Version of ent codegen. - Sum = "h1:ds9HENceKzpGBgCRlkZNq6TqBIegwKcF3e5reuV9Z0M=" // Sum of ent codegen. -) diff --git a/src/db/ent/schema/BUILD.bazel b/src/db/ent/schema/BUILD.bazel deleted file mode 100644 index f667fcf..0000000 --- a/src/db/ent/schema/BUILD.bazel +++ /dev/null @@ -1,17 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "schema", - srcs = [ - "challenge.go", - "guild.go", - "session.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/db/ent/schema", - visibility = ["//visibility:public"], - deps = [ - "@com_github_facebook_ent//:ent", - "@com_github_facebook_ent//schema/field", - "@com_github_facebook_ent//schema/mixin", - ], -) diff --git a/src/db/ent/schema/challenge.go b/src/db/ent/schema/challenge.go deleted file mode 100644 index ec4404a..0000000 --- a/src/db/ent/schema/challenge.go +++ /dev/null @@ -1,46 +0,0 @@ -package schema - -import ( - "time" - - "github.com/facebook/ent" - "github.com/facebook/ent/schema/field" - "github.com/facebook/ent/schema/mixin" -) - -// Challenge holds the schema definition for the Challenge entity. -type Challenge struct { - ent.Schema -} - -// Fields of the Challenge. -func (Challenge) Fields() []ent.Field { - return []ent.Field{ - field.Text("challenge_id"). - Immutable().Unique(), - - field.Text("user_id"). - Immutable().Unique(), - - field.String("human").Immutable().Unique(), - field.String("magic").Immutable().Unique(), - - field.Time("expires_at"). - Immutable(). - Default(func() time.Time { - return time.Now().Add(5 * time.Minute) - }), - } -} - -// Edges of the Challenge. -func (Challenge) Edges() []ent.Edge { - return nil -} - -// Mixin of the Challenge. -func (Challenge) Mixin() []ent.Mixin { - return []ent.Mixin{ - mixin.Time{}, - } -} diff --git a/src/db/ent/schema/guild.go b/src/db/ent/schema/guild.go deleted file mode 100644 index 8003f29..0000000 --- a/src/db/ent/schema/guild.go +++ /dev/null @@ -1,44 +0,0 @@ -package schema - -import ( - "github.com/facebook/ent" - "github.com/facebook/ent/schema/field" - "github.com/facebook/ent/schema/mixin" -) - -// Guild holds the schema definition for the Guild entity. -type Guild struct { - ent.Schema -} - -type Category struct { - ID string - Name string - Hidden bool - Type string - Position int - Roles []string -} - -// Fields of the Guild. -func (Guild) Fields() []ent.Field { - return []ent.Field{ - field.Text("snowflake"). - Immutable().Unique(), - field.Text("message"), - field.JSON("categories", []Category{}), - field.Strings("entitlements"), - } -} - -// Edges of the Guild. -func (Guild) Edges() []ent.Edge { - return nil -} - -// Mixin of the Guild. -func (Guild) Mixin() []ent.Mixin { - return []ent.Mixin{ - mixin.Time{}, - } -} diff --git a/src/db/ent/schema/session.go b/src/db/ent/schema/session.go deleted file mode 100644 index b21c4b6..0000000 --- a/src/db/ent/schema/session.go +++ /dev/null @@ -1,47 +0,0 @@ -package schema - -import ( - "time" - - "github.com/facebook/ent" - "github.com/facebook/ent/schema/field" - "github.com/facebook/ent/schema/mixin" -) - -// Session holds the schema definition for the Session entity. -type Session struct { - ent.Schema -} - -// Fields of the Session. -func (Session) Fields() []ent.Field { - return []ent.Field{ - field.Text("session_id"). - Immutable().Unique(), - - field.Text("user_id"). - Immutable().Unique(), - - field.Enum("source"). - Values("oauth", "dm"). - Immutable(), - - field.Time("expires_at"). - Immutable(). - Default(func() time.Time { - return time.Now().Add(6 * time.Hour) - }), - } -} - -// Edges of the Session. -func (Session) Edges() []ent.Edge { - return nil -} - -// Mixin of the Session. -func (Session) Mixin() []ent.Mixin { - return []ent.Mixin{ - mixin.Time{}, - } -} diff --git a/src/db/ent/session.go b/src/db/ent/session.go deleted file mode 100644 index f008eb1..0000000 --- a/src/db/ent/session.go +++ /dev/null @@ -1,137 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "fmt" - "strings" - "time" - - "github.com/facebook/ent/dialect/sql" - "github.com/roleypoly/roleypoly/src/db/ent/session" -) - -// Session is the model entity for the Session schema. -type Session struct { - config `json:"-"` - // ID of the ent. - ID int `json:"id,omitempty"` - // CreateTime holds the value of the "create_time" field. - CreateTime time.Time `json:"create_time,omitempty"` - // UpdateTime holds the value of the "update_time" field. - UpdateTime time.Time `json:"update_time,omitempty"` - // SessionID holds the value of the "session_id" field. - SessionID string `json:"session_id,omitempty"` - // UserID holds the value of the "user_id" field. - UserID string `json:"user_id,omitempty"` - // Source holds the value of the "source" field. - Source session.Source `json:"source,omitempty"` - // ExpiresAt holds the value of the "expires_at" field. - ExpiresAt time.Time `json:"expires_at,omitempty"` -} - -// scanValues returns the types for scanning values from sql.Rows. -func (*Session) scanValues() []interface{} { - return []interface{}{ - &sql.NullInt64{}, // id - &sql.NullTime{}, // create_time - &sql.NullTime{}, // update_time - &sql.NullString{}, // session_id - &sql.NullString{}, // user_id - &sql.NullString{}, // source - &sql.NullTime{}, // expires_at - } -} - -// assignValues assigns the values that were returned from sql.Rows (after scanning) -// to the Session fields. -func (s *Session) assignValues(values ...interface{}) error { - if m, n := len(values), len(session.Columns); m < n { - return fmt.Errorf("mismatch number of scan values: %d != %d", m, n) - } - value, ok := values[0].(*sql.NullInt64) - if !ok { - return fmt.Errorf("unexpected type %T for field id", value) - } - s.ID = int(value.Int64) - values = values[1:] - if value, ok := values[0].(*sql.NullTime); !ok { - return fmt.Errorf("unexpected type %T for field create_time", values[0]) - } else if value.Valid { - s.CreateTime = value.Time - } - if value, ok := values[1].(*sql.NullTime); !ok { - return fmt.Errorf("unexpected type %T for field update_time", values[1]) - } else if value.Valid { - s.UpdateTime = value.Time - } - if value, ok := values[2].(*sql.NullString); !ok { - return fmt.Errorf("unexpected type %T for field session_id", values[2]) - } else if value.Valid { - s.SessionID = value.String - } - if value, ok := values[3].(*sql.NullString); !ok { - return fmt.Errorf("unexpected type %T for field user_id", values[3]) - } else if value.Valid { - s.UserID = value.String - } - if value, ok := values[4].(*sql.NullString); !ok { - return fmt.Errorf("unexpected type %T for field source", values[4]) - } else if value.Valid { - s.Source = session.Source(value.String) - } - if value, ok := values[5].(*sql.NullTime); !ok { - return fmt.Errorf("unexpected type %T for field expires_at", values[5]) - } else if value.Valid { - s.ExpiresAt = value.Time - } - return nil -} - -// Update returns a builder for updating this Session. -// Note that, you need to call Session.Unwrap() before calling this method, if this Session -// was returned from a transaction, and the transaction was committed or rolled back. -func (s *Session) Update() *SessionUpdateOne { - return (&SessionClient{config: s.config}).UpdateOne(s) -} - -// Unwrap unwraps the entity that was returned from a transaction after it was closed, -// so that all next queries will be executed through the driver which created the transaction. -func (s *Session) Unwrap() *Session { - tx, ok := s.config.driver.(*txDriver) - if !ok { - panic("ent: Session is not a transactional entity") - } - s.config.driver = tx.drv - return s -} - -// String implements the fmt.Stringer. -func (s *Session) String() string { - var builder strings.Builder - builder.WriteString("Session(") - builder.WriteString(fmt.Sprintf("id=%v", s.ID)) - builder.WriteString(", create_time=") - builder.WriteString(s.CreateTime.Format(time.ANSIC)) - builder.WriteString(", update_time=") - builder.WriteString(s.UpdateTime.Format(time.ANSIC)) - builder.WriteString(", session_id=") - builder.WriteString(s.SessionID) - builder.WriteString(", user_id=") - builder.WriteString(s.UserID) - builder.WriteString(", source=") - builder.WriteString(fmt.Sprintf("%v", s.Source)) - builder.WriteString(", expires_at=") - builder.WriteString(s.ExpiresAt.Format(time.ANSIC)) - builder.WriteByte(')') - return builder.String() -} - -// Sessions is a parsable slice of Session. -type Sessions []*Session - -func (s Sessions) config(cfg config) { - for _i := range s { - s[_i].config = cfg - } -} diff --git a/src/db/ent/session/BUILD.bazel b/src/db/ent/session/BUILD.bazel deleted file mode 100644 index f11c826..0000000 --- a/src/db/ent/session/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "session", - srcs = [ - "session.go", - "where.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/db/ent/session", - visibility = ["//visibility:public"], - deps = [ - "//src/db/ent/predicate", - "@com_github_facebook_ent//dialect/sql", - ], -) diff --git a/src/db/ent/session/session.go b/src/db/ent/session/session.go deleted file mode 100644 index 86e5b00..0000000 --- a/src/db/ent/session/session.go +++ /dev/null @@ -1,85 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package session - -import ( - "fmt" - "time" -) - -const ( - // Label holds the string label denoting the session type in the database. - Label = "session" - // FieldID holds the string denoting the id field in the database. - FieldID = "id" - // FieldCreateTime holds the string denoting the create_time field in the database. - FieldCreateTime = "create_time" - // FieldUpdateTime holds the string denoting the update_time field in the database. - FieldUpdateTime = "update_time" - // FieldSessionID holds the string denoting the session_id field in the database. - FieldSessionID = "session_id" - // FieldUserID holds the string denoting the user_id field in the database. - FieldUserID = "user_id" - // FieldSource holds the string denoting the source field in the database. - FieldSource = "source" - // FieldExpiresAt holds the string denoting the expires_at field in the database. - FieldExpiresAt = "expires_at" - - // Table holds the table name of the session in the database. - Table = "sessions" -) - -// Columns holds all SQL columns for session fields. -var Columns = []string{ - FieldID, - FieldCreateTime, - FieldUpdateTime, - FieldSessionID, - FieldUserID, - FieldSource, - FieldExpiresAt, -} - -// ValidColumn reports if the column name is valid (part of the table columns). -func ValidColumn(column string) bool { - for i := range Columns { - if column == Columns[i] { - return true - } - } - return false -} - -var ( - // DefaultCreateTime holds the default value on creation for the create_time field. - DefaultCreateTime func() time.Time - // DefaultUpdateTime holds the default value on creation for the update_time field. - DefaultUpdateTime func() time.Time - // UpdateDefaultUpdateTime holds the default value on update for the update_time field. - UpdateDefaultUpdateTime func() time.Time - // DefaultExpiresAt holds the default value on creation for the expires_at field. - DefaultExpiresAt func() time.Time -) - -// Source defines the type for the source enum field. -type Source string - -// Source values. -const ( - SourceOauth Source = "oauth" - SourceDm Source = "dm" -) - -func (s Source) String() string { - return string(s) -} - -// SourceValidator is a validator for the "source" field enum values. It is called by the builders before save. -func SourceValidator(s Source) error { - switch s { - case SourceOauth, SourceDm: - return nil - default: - return fmt.Errorf("session: invalid enum value for source field: %q", s) - } -} diff --git a/src/db/ent/session/where.go b/src/db/ent/session/where.go deleted file mode 100644 index 65e6d51..0000000 --- a/src/db/ent/session/where.go +++ /dev/null @@ -1,658 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package session - -import ( - "time" - - "github.com/facebook/ent/dialect/sql" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" -) - -// ID filters vertices based on their identifier. -func ID(id int) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldID), id)) - }) -} - -// IDEQ applies the EQ predicate on the ID field. -func IDEQ(id int) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldID), id)) - }) -} - -// IDNEQ applies the NEQ predicate on the ID field. -func IDNEQ(id int) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldID), id)) - }) -} - -// IDIn applies the In predicate on the ID field. -func IDIn(ids ...int) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(ids) == 0 { - s.Where(sql.False()) - return - } - v := make([]interface{}, len(ids)) - for i := range v { - v[i] = ids[i] - } - s.Where(sql.In(s.C(FieldID), v...)) - }) -} - -// IDNotIn applies the NotIn predicate on the ID field. -func IDNotIn(ids ...int) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(ids) == 0 { - s.Where(sql.False()) - return - } - v := make([]interface{}, len(ids)) - for i := range v { - v[i] = ids[i] - } - s.Where(sql.NotIn(s.C(FieldID), v...)) - }) -} - -// IDGT applies the GT predicate on the ID field. -func IDGT(id int) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldID), id)) - }) -} - -// IDGTE applies the GTE predicate on the ID field. -func IDGTE(id int) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldID), id)) - }) -} - -// IDLT applies the LT predicate on the ID field. -func IDLT(id int) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldID), id)) - }) -} - -// IDLTE applies the LTE predicate on the ID field. -func IDLTE(id int) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldID), id)) - }) -} - -// CreateTime applies equality check predicate on the "create_time" field. It's identical to CreateTimeEQ. -func CreateTime(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldCreateTime), v)) - }) -} - -// UpdateTime applies equality check predicate on the "update_time" field. It's identical to UpdateTimeEQ. -func UpdateTime(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldUpdateTime), v)) - }) -} - -// SessionID applies equality check predicate on the "session_id" field. It's identical to SessionIDEQ. -func SessionID(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldSessionID), v)) - }) -} - -// UserID applies equality check predicate on the "user_id" field. It's identical to UserIDEQ. -func UserID(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldUserID), v)) - }) -} - -// ExpiresAt applies equality check predicate on the "expires_at" field. It's identical to ExpiresAtEQ. -func ExpiresAt(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldExpiresAt), v)) - }) -} - -// CreateTimeEQ applies the EQ predicate on the "create_time" field. -func CreateTimeEQ(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeNEQ applies the NEQ predicate on the "create_time" field. -func CreateTimeNEQ(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeIn applies the In predicate on the "create_time" field. -func CreateTimeIn(vs ...time.Time) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldCreateTime), v...)) - }) -} - -// CreateTimeNotIn applies the NotIn predicate on the "create_time" field. -func CreateTimeNotIn(vs ...time.Time) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldCreateTime), v...)) - }) -} - -// CreateTimeGT applies the GT predicate on the "create_time" field. -func CreateTimeGT(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeGTE applies the GTE predicate on the "create_time" field. -func CreateTimeGTE(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeLT applies the LT predicate on the "create_time" field. -func CreateTimeLT(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldCreateTime), v)) - }) -} - -// CreateTimeLTE applies the LTE predicate on the "create_time" field. -func CreateTimeLTE(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldCreateTime), v)) - }) -} - -// UpdateTimeEQ applies the EQ predicate on the "update_time" field. -func UpdateTimeEQ(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeNEQ applies the NEQ predicate on the "update_time" field. -func UpdateTimeNEQ(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeIn applies the In predicate on the "update_time" field. -func UpdateTimeIn(vs ...time.Time) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldUpdateTime), v...)) - }) -} - -// UpdateTimeNotIn applies the NotIn predicate on the "update_time" field. -func UpdateTimeNotIn(vs ...time.Time) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldUpdateTime), v...)) - }) -} - -// UpdateTimeGT applies the GT predicate on the "update_time" field. -func UpdateTimeGT(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeGTE applies the GTE predicate on the "update_time" field. -func UpdateTimeGTE(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeLT applies the LT predicate on the "update_time" field. -func UpdateTimeLT(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldUpdateTime), v)) - }) -} - -// UpdateTimeLTE applies the LTE predicate on the "update_time" field. -func UpdateTimeLTE(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldUpdateTime), v)) - }) -} - -// SessionIDEQ applies the EQ predicate on the "session_id" field. -func SessionIDEQ(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldSessionID), v)) - }) -} - -// SessionIDNEQ applies the NEQ predicate on the "session_id" field. -func SessionIDNEQ(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldSessionID), v)) - }) -} - -// SessionIDIn applies the In predicate on the "session_id" field. -func SessionIDIn(vs ...string) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldSessionID), v...)) - }) -} - -// SessionIDNotIn applies the NotIn predicate on the "session_id" field. -func SessionIDNotIn(vs ...string) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldSessionID), v...)) - }) -} - -// SessionIDGT applies the GT predicate on the "session_id" field. -func SessionIDGT(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldSessionID), v)) - }) -} - -// SessionIDGTE applies the GTE predicate on the "session_id" field. -func SessionIDGTE(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldSessionID), v)) - }) -} - -// SessionIDLT applies the LT predicate on the "session_id" field. -func SessionIDLT(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldSessionID), v)) - }) -} - -// SessionIDLTE applies the LTE predicate on the "session_id" field. -func SessionIDLTE(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldSessionID), v)) - }) -} - -// SessionIDContains applies the Contains predicate on the "session_id" field. -func SessionIDContains(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.Contains(s.C(FieldSessionID), v)) - }) -} - -// SessionIDHasPrefix applies the HasPrefix predicate on the "session_id" field. -func SessionIDHasPrefix(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.HasPrefix(s.C(FieldSessionID), v)) - }) -} - -// SessionIDHasSuffix applies the HasSuffix predicate on the "session_id" field. -func SessionIDHasSuffix(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.HasSuffix(s.C(FieldSessionID), v)) - }) -} - -// SessionIDEqualFold applies the EqualFold predicate on the "session_id" field. -func SessionIDEqualFold(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EqualFold(s.C(FieldSessionID), v)) - }) -} - -// SessionIDContainsFold applies the ContainsFold predicate on the "session_id" field. -func SessionIDContainsFold(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.ContainsFold(s.C(FieldSessionID), v)) - }) -} - -// UserIDEQ applies the EQ predicate on the "user_id" field. -func UserIDEQ(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldUserID), v)) - }) -} - -// UserIDNEQ applies the NEQ predicate on the "user_id" field. -func UserIDNEQ(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldUserID), v)) - }) -} - -// UserIDIn applies the In predicate on the "user_id" field. -func UserIDIn(vs ...string) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldUserID), v...)) - }) -} - -// UserIDNotIn applies the NotIn predicate on the "user_id" field. -func UserIDNotIn(vs ...string) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldUserID), v...)) - }) -} - -// UserIDGT applies the GT predicate on the "user_id" field. -func UserIDGT(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldUserID), v)) - }) -} - -// UserIDGTE applies the GTE predicate on the "user_id" field. -func UserIDGTE(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldUserID), v)) - }) -} - -// UserIDLT applies the LT predicate on the "user_id" field. -func UserIDLT(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldUserID), v)) - }) -} - -// UserIDLTE applies the LTE predicate on the "user_id" field. -func UserIDLTE(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldUserID), v)) - }) -} - -// UserIDContains applies the Contains predicate on the "user_id" field. -func UserIDContains(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.Contains(s.C(FieldUserID), v)) - }) -} - -// UserIDHasPrefix applies the HasPrefix predicate on the "user_id" field. -func UserIDHasPrefix(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.HasPrefix(s.C(FieldUserID), v)) - }) -} - -// UserIDHasSuffix applies the HasSuffix predicate on the "user_id" field. -func UserIDHasSuffix(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.HasSuffix(s.C(FieldUserID), v)) - }) -} - -// UserIDEqualFold applies the EqualFold predicate on the "user_id" field. -func UserIDEqualFold(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EqualFold(s.C(FieldUserID), v)) - }) -} - -// UserIDContainsFold applies the ContainsFold predicate on the "user_id" field. -func UserIDContainsFold(v string) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.ContainsFold(s.C(FieldUserID), v)) - }) -} - -// SourceEQ applies the EQ predicate on the "source" field. -func SourceEQ(v Source) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldSource), v)) - }) -} - -// SourceNEQ applies the NEQ predicate on the "source" field. -func SourceNEQ(v Source) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldSource), v)) - }) -} - -// SourceIn applies the In predicate on the "source" field. -func SourceIn(vs ...Source) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldSource), v...)) - }) -} - -// SourceNotIn applies the NotIn predicate on the "source" field. -func SourceNotIn(vs ...Source) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldSource), v...)) - }) -} - -// ExpiresAtEQ applies the EQ predicate on the "expires_at" field. -func ExpiresAtEQ(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.EQ(s.C(FieldExpiresAt), v)) - }) -} - -// ExpiresAtNEQ applies the NEQ predicate on the "expires_at" field. -func ExpiresAtNEQ(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.NEQ(s.C(FieldExpiresAt), v)) - }) -} - -// ExpiresAtIn applies the In predicate on the "expires_at" field. -func ExpiresAtIn(vs ...time.Time) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.In(s.C(FieldExpiresAt), v...)) - }) -} - -// ExpiresAtNotIn applies the NotIn predicate on the "expires_at" field. -func ExpiresAtNotIn(vs ...time.Time) predicate.Session { - v := make([]interface{}, len(vs)) - for i := range v { - v[i] = vs[i] - } - return predicate.Session(func(s *sql.Selector) { - // if not arguments were provided, append the FALSE constants, - // since we can't apply "IN ()". This will make this predicate falsy. - if len(v) == 0 { - s.Where(sql.False()) - return - } - s.Where(sql.NotIn(s.C(FieldExpiresAt), v...)) - }) -} - -// ExpiresAtGT applies the GT predicate on the "expires_at" field. -func ExpiresAtGT(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GT(s.C(FieldExpiresAt), v)) - }) -} - -// ExpiresAtGTE applies the GTE predicate on the "expires_at" field. -func ExpiresAtGTE(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.GTE(s.C(FieldExpiresAt), v)) - }) -} - -// ExpiresAtLT applies the LT predicate on the "expires_at" field. -func ExpiresAtLT(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LT(s.C(FieldExpiresAt), v)) - }) -} - -// ExpiresAtLTE applies the LTE predicate on the "expires_at" field. -func ExpiresAtLTE(v time.Time) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s.Where(sql.LTE(s.C(FieldExpiresAt), v)) - }) -} - -// And groups list of predicates with the AND operator between them. -func And(predicates ...predicate.Session) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s1 := s.Clone().SetP(nil) - for _, p := range predicates { - p(s1) - } - s.Where(s1.P()) - }) -} - -// Or groups list of predicates with the OR operator between them. -func Or(predicates ...predicate.Session) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - s1 := s.Clone().SetP(nil) - for i, p := range predicates { - if i > 0 { - s1.Or() - } - p(s1) - } - s.Where(s1.P()) - }) -} - -// Not applies the not operator on the given predicate. -func Not(p predicate.Session) predicate.Session { - return predicate.Session(func(s *sql.Selector) { - p(s.Not()) - }) -} diff --git a/src/db/ent/session_create.go b/src/db/ent/session_create.go deleted file mode 100644 index db263c4..0000000 --- a/src/db/ent/session_create.go +++ /dev/null @@ -1,317 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "errors" - "fmt" - "time" - - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/session" -) - -// SessionCreate is the builder for creating a Session entity. -type SessionCreate struct { - config - mutation *SessionMutation - hooks []Hook -} - -// SetCreateTime sets the create_time field. -func (sc *SessionCreate) SetCreateTime(t time.Time) *SessionCreate { - sc.mutation.SetCreateTime(t) - return sc -} - -// SetNillableCreateTime sets the create_time field if the given value is not nil. -func (sc *SessionCreate) SetNillableCreateTime(t *time.Time) *SessionCreate { - if t != nil { - sc.SetCreateTime(*t) - } - return sc -} - -// SetUpdateTime sets the update_time field. -func (sc *SessionCreate) SetUpdateTime(t time.Time) *SessionCreate { - sc.mutation.SetUpdateTime(t) - return sc -} - -// SetNillableUpdateTime sets the update_time field if the given value is not nil. -func (sc *SessionCreate) SetNillableUpdateTime(t *time.Time) *SessionCreate { - if t != nil { - sc.SetUpdateTime(*t) - } - return sc -} - -// SetSessionID sets the session_id field. -func (sc *SessionCreate) SetSessionID(s string) *SessionCreate { - sc.mutation.SetSessionID(s) - return sc -} - -// SetUserID sets the user_id field. -func (sc *SessionCreate) SetUserID(s string) *SessionCreate { - sc.mutation.SetUserID(s) - return sc -} - -// SetSource sets the source field. -func (sc *SessionCreate) SetSource(s session.Source) *SessionCreate { - sc.mutation.SetSource(s) - return sc -} - -// SetExpiresAt sets the expires_at field. -func (sc *SessionCreate) SetExpiresAt(t time.Time) *SessionCreate { - sc.mutation.SetExpiresAt(t) - return sc -} - -// SetNillableExpiresAt sets the expires_at field if the given value is not nil. -func (sc *SessionCreate) SetNillableExpiresAt(t *time.Time) *SessionCreate { - if t != nil { - sc.SetExpiresAt(*t) - } - return sc -} - -// Mutation returns the SessionMutation object of the builder. -func (sc *SessionCreate) Mutation() *SessionMutation { - return sc.mutation -} - -// Save creates the Session in the database. -func (sc *SessionCreate) Save(ctx context.Context) (*Session, error) { - var ( - err error - node *Session - ) - sc.defaults() - if len(sc.hooks) == 0 { - if err = sc.check(); err != nil { - return nil, err - } - node, err = sc.sqlSave(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*SessionMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - if err = sc.check(); err != nil { - return nil, err - } - sc.mutation = mutation - node, err = sc.sqlSave(ctx) - mutation.done = true - return node, err - }) - for i := len(sc.hooks) - 1; i >= 0; i-- { - mut = sc.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, sc.mutation); err != nil { - return nil, err - } - } - return node, err -} - -// SaveX calls Save and panics if Save returns an error. -func (sc *SessionCreate) SaveX(ctx context.Context) *Session { - v, err := sc.Save(ctx) - if err != nil { - panic(err) - } - return v -} - -// defaults sets the default values of the builder before save. -func (sc *SessionCreate) defaults() { - if _, ok := sc.mutation.CreateTime(); !ok { - v := session.DefaultCreateTime() - sc.mutation.SetCreateTime(v) - } - if _, ok := sc.mutation.UpdateTime(); !ok { - v := session.DefaultUpdateTime() - sc.mutation.SetUpdateTime(v) - } - if _, ok := sc.mutation.ExpiresAt(); !ok { - v := session.DefaultExpiresAt() - sc.mutation.SetExpiresAt(v) - } -} - -// check runs all checks and user-defined validators on the builder. -func (sc *SessionCreate) check() error { - if _, ok := sc.mutation.CreateTime(); !ok { - return &ValidationError{Name: "create_time", err: errors.New("ent: missing required field \"create_time\"")} - } - if _, ok := sc.mutation.UpdateTime(); !ok { - return &ValidationError{Name: "update_time", err: errors.New("ent: missing required field \"update_time\"")} - } - if _, ok := sc.mutation.SessionID(); !ok { - return &ValidationError{Name: "session_id", err: errors.New("ent: missing required field \"session_id\"")} - } - if _, ok := sc.mutation.UserID(); !ok { - return &ValidationError{Name: "user_id", err: errors.New("ent: missing required field \"user_id\"")} - } - if _, ok := sc.mutation.Source(); !ok { - return &ValidationError{Name: "source", err: errors.New("ent: missing required field \"source\"")} - } - if v, ok := sc.mutation.Source(); ok { - if err := session.SourceValidator(v); err != nil { - return &ValidationError{Name: "source", err: fmt.Errorf("ent: validator failed for field \"source\": %w", err)} - } - } - if _, ok := sc.mutation.ExpiresAt(); !ok { - return &ValidationError{Name: "expires_at", err: errors.New("ent: missing required field \"expires_at\"")} - } - return nil -} - -func (sc *SessionCreate) sqlSave(ctx context.Context) (*Session, error) { - _node, _spec := sc.createSpec() - if err := sqlgraph.CreateNode(ctx, sc.driver, _spec); err != nil { - if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - return nil, err - } - id := _spec.ID.Value.(int64) - _node.ID = int(id) - return _node, nil -} - -func (sc *SessionCreate) createSpec() (*Session, *sqlgraph.CreateSpec) { - var ( - _node = &Session{config: sc.config} - _spec = &sqlgraph.CreateSpec{ - Table: session.Table, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: session.FieldID, - }, - } - ) - if value, ok := sc.mutation.CreateTime(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: session.FieldCreateTime, - }) - _node.CreateTime = value - } - if value, ok := sc.mutation.UpdateTime(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: session.FieldUpdateTime, - }) - _node.UpdateTime = value - } - if value, ok := sc.mutation.SessionID(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeString, - Value: value, - Column: session.FieldSessionID, - }) - _node.SessionID = value - } - if value, ok := sc.mutation.UserID(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeString, - Value: value, - Column: session.FieldUserID, - }) - _node.UserID = value - } - if value, ok := sc.mutation.Source(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeEnum, - Value: value, - Column: session.FieldSource, - }) - _node.Source = value - } - if value, ok := sc.mutation.ExpiresAt(); ok { - _spec.Fields = append(_spec.Fields, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: session.FieldExpiresAt, - }) - _node.ExpiresAt = value - } - return _node, _spec -} - -// SessionCreateBulk is the builder for creating a bulk of Session entities. -type SessionCreateBulk struct { - config - builders []*SessionCreate -} - -// Save creates the Session entities in the database. -func (scb *SessionCreateBulk) Save(ctx context.Context) ([]*Session, error) { - specs := make([]*sqlgraph.CreateSpec, len(scb.builders)) - nodes := make([]*Session, len(scb.builders)) - mutators := make([]Mutator, len(scb.builders)) - for i := range scb.builders { - func(i int, root context.Context) { - builder := scb.builders[i] - builder.defaults() - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*SessionMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - if err := builder.check(); err != nil { - return nil, err - } - builder.mutation = mutation - nodes[i], specs[i] = builder.createSpec() - var err error - if i < len(mutators)-1 { - _, err = mutators[i+1].Mutate(root, scb.builders[i+1].mutation) - } else { - // Invoke the actual operation on the latest mutation in the chain. - if err = sqlgraph.BatchCreate(ctx, scb.driver, &sqlgraph.BatchCreateSpec{Nodes: specs}); err != nil { - if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - } - } - mutation.done = true - if err != nil { - return nil, err - } - id := specs[i].ID.Value.(int64) - nodes[i].ID = int(id) - return nodes[i], nil - }) - for i := len(builder.hooks) - 1; i >= 0; i-- { - mut = builder.hooks[i](mut) - } - mutators[i] = mut - }(i, ctx) - } - if len(mutators) > 0 { - if _, err := mutators[0].Mutate(ctx, scb.builders[0].mutation); err != nil { - return nil, err - } - } - return nodes, nil -} - -// SaveX calls Save and panics if Save returns an error. -func (scb *SessionCreateBulk) SaveX(ctx context.Context) []*Session { - v, err := scb.Save(ctx) - if err != nil { - panic(err) - } - return v -} diff --git a/src/db/ent/session_delete.go b/src/db/ent/session_delete.go deleted file mode 100644 index c73cadb..0000000 --- a/src/db/ent/session_delete.go +++ /dev/null @@ -1,109 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "fmt" - - "github.com/facebook/ent/dialect/sql" - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" - "github.com/roleypoly/roleypoly/src/db/ent/session" -) - -// SessionDelete is the builder for deleting a Session entity. -type SessionDelete struct { - config - hooks []Hook - mutation *SessionMutation - predicates []predicate.Session -} - -// Where adds a new predicate to the delete builder. -func (sd *SessionDelete) Where(ps ...predicate.Session) *SessionDelete { - sd.predicates = append(sd.predicates, ps...) - return sd -} - -// Exec executes the deletion query and returns how many vertices were deleted. -func (sd *SessionDelete) Exec(ctx context.Context) (int, error) { - var ( - err error - affected int - ) - if len(sd.hooks) == 0 { - affected, err = sd.sqlExec(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*SessionMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - sd.mutation = mutation - affected, err = sd.sqlExec(ctx) - mutation.done = true - return affected, err - }) - for i := len(sd.hooks) - 1; i >= 0; i-- { - mut = sd.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, sd.mutation); err != nil { - return 0, err - } - } - return affected, err -} - -// ExecX is like Exec, but panics if an error occurs. -func (sd *SessionDelete) ExecX(ctx context.Context) int { - n, err := sd.Exec(ctx) - if err != nil { - panic(err) - } - return n -} - -func (sd *SessionDelete) sqlExec(ctx context.Context) (int, error) { - _spec := &sqlgraph.DeleteSpec{ - Node: &sqlgraph.NodeSpec{ - Table: session.Table, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: session.FieldID, - }, - }, - } - if ps := sd.predicates; len(ps) > 0 { - _spec.Predicate = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector) - } - } - } - return sqlgraph.DeleteNodes(ctx, sd.driver, _spec) -} - -// SessionDeleteOne is the builder for deleting a single Session entity. -type SessionDeleteOne struct { - sd *SessionDelete -} - -// Exec executes the deletion query. -func (sdo *SessionDeleteOne) Exec(ctx context.Context) error { - n, err := sdo.sd.Exec(ctx) - switch { - case err != nil: - return err - case n == 0: - return &NotFoundError{session.Label} - default: - return nil - } -} - -// ExecX is like Exec, but panics if an error occurs. -func (sdo *SessionDeleteOne) ExecX(ctx context.Context) { - sdo.sd.ExecX(ctx) -} diff --git a/src/db/ent/session_query.go b/src/db/ent/session_query.go deleted file mode 100644 index 1a16760..0000000 --- a/src/db/ent/session_query.go +++ /dev/null @@ -1,880 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "errors" - "fmt" - "math" - - "github.com/facebook/ent/dialect/sql" - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" - "github.com/roleypoly/roleypoly/src/db/ent/session" -) - -// SessionQuery is the builder for querying Session entities. -type SessionQuery struct { - config - limit *int - offset *int - order []OrderFunc - unique []string - predicates []predicate.Session - // intermediate query (i.e. traversal path). - sql *sql.Selector - path func(context.Context) (*sql.Selector, error) -} - -// Where adds a new predicate for the builder. -func (sq *SessionQuery) Where(ps ...predicate.Session) *SessionQuery { - sq.predicates = append(sq.predicates, ps...) - return sq -} - -// Limit adds a limit step to the query. -func (sq *SessionQuery) Limit(limit int) *SessionQuery { - sq.limit = &limit - return sq -} - -// Offset adds an offset step to the query. -func (sq *SessionQuery) Offset(offset int) *SessionQuery { - sq.offset = &offset - return sq -} - -// Order adds an order step to the query. -func (sq *SessionQuery) Order(o ...OrderFunc) *SessionQuery { - sq.order = append(sq.order, o...) - return sq -} - -// First returns the first Session entity in the query. Returns *NotFoundError when no session was found. -func (sq *SessionQuery) First(ctx context.Context) (*Session, error) { - nodes, err := sq.Limit(1).All(ctx) - if err != nil { - return nil, err - } - if len(nodes) == 0 { - return nil, &NotFoundError{session.Label} - } - return nodes[0], nil -} - -// FirstX is like First, but panics if an error occurs. -func (sq *SessionQuery) FirstX(ctx context.Context) *Session { - node, err := sq.First(ctx) - if err != nil && !IsNotFound(err) { - panic(err) - } - return node -} - -// FirstID returns the first Session id in the query. Returns *NotFoundError when no id was found. -func (sq *SessionQuery) FirstID(ctx context.Context) (id int, err error) { - var ids []int - if ids, err = sq.Limit(1).IDs(ctx); err != nil { - return - } - if len(ids) == 0 { - err = &NotFoundError{session.Label} - return - } - return ids[0], nil -} - -// FirstXID is like FirstID, but panics if an error occurs. -func (sq *SessionQuery) FirstXID(ctx context.Context) int { - id, err := sq.FirstID(ctx) - if err != nil && !IsNotFound(err) { - panic(err) - } - return id -} - -// Only returns the only Session entity in the query, returns an error if not exactly one entity was returned. -func (sq *SessionQuery) Only(ctx context.Context) (*Session, error) { - nodes, err := sq.Limit(2).All(ctx) - if err != nil { - return nil, err - } - switch len(nodes) { - case 1: - return nodes[0], nil - case 0: - return nil, &NotFoundError{session.Label} - default: - return nil, &NotSingularError{session.Label} - } -} - -// OnlyX is like Only, but panics if an error occurs. -func (sq *SessionQuery) OnlyX(ctx context.Context) *Session { - node, err := sq.Only(ctx) - if err != nil { - panic(err) - } - return node -} - -// OnlyID returns the only Session id in the query, returns an error if not exactly one id was returned. -func (sq *SessionQuery) OnlyID(ctx context.Context) (id int, err error) { - var ids []int - if ids, err = sq.Limit(2).IDs(ctx); err != nil { - return - } - switch len(ids) { - case 1: - id = ids[0] - case 0: - err = &NotFoundError{session.Label} - default: - err = &NotSingularError{session.Label} - } - return -} - -// OnlyIDX is like OnlyID, but panics if an error occurs. -func (sq *SessionQuery) OnlyIDX(ctx context.Context) int { - id, err := sq.OnlyID(ctx) - if err != nil { - panic(err) - } - return id -} - -// All executes the query and returns a list of Sessions. -func (sq *SessionQuery) All(ctx context.Context) ([]*Session, error) { - if err := sq.prepareQuery(ctx); err != nil { - return nil, err - } - return sq.sqlAll(ctx) -} - -// AllX is like All, but panics if an error occurs. -func (sq *SessionQuery) AllX(ctx context.Context) []*Session { - nodes, err := sq.All(ctx) - if err != nil { - panic(err) - } - return nodes -} - -// IDs executes the query and returns a list of Session ids. -func (sq *SessionQuery) IDs(ctx context.Context) ([]int, error) { - var ids []int - if err := sq.Select(session.FieldID).Scan(ctx, &ids); err != nil { - return nil, err - } - return ids, nil -} - -// IDsX is like IDs, but panics if an error occurs. -func (sq *SessionQuery) IDsX(ctx context.Context) []int { - ids, err := sq.IDs(ctx) - if err != nil { - panic(err) - } - return ids -} - -// Count returns the count of the given query. -func (sq *SessionQuery) Count(ctx context.Context) (int, error) { - if err := sq.prepareQuery(ctx); err != nil { - return 0, err - } - return sq.sqlCount(ctx) -} - -// CountX is like Count, but panics if an error occurs. -func (sq *SessionQuery) CountX(ctx context.Context) int { - count, err := sq.Count(ctx) - if err != nil { - panic(err) - } - return count -} - -// Exist returns true if the query has elements in the graph. -func (sq *SessionQuery) Exist(ctx context.Context) (bool, error) { - if err := sq.prepareQuery(ctx); err != nil { - return false, err - } - return sq.sqlExist(ctx) -} - -// ExistX is like Exist, but panics if an error occurs. -func (sq *SessionQuery) ExistX(ctx context.Context) bool { - exist, err := sq.Exist(ctx) - if err != nil { - panic(err) - } - return exist -} - -// Clone returns a duplicate of the query builder, including all associated steps. It can be -// used to prepare common query builders and use them differently after the clone is made. -func (sq *SessionQuery) Clone() *SessionQuery { - return &SessionQuery{ - config: sq.config, - limit: sq.limit, - offset: sq.offset, - order: append([]OrderFunc{}, sq.order...), - unique: append([]string{}, sq.unique...), - predicates: append([]predicate.Session{}, sq.predicates...), - // clone intermediate query. - sql: sq.sql.Clone(), - path: sq.path, - } -} - -// GroupBy used to group vertices by one or more fields/columns. -// It is often used with aggregate functions, like: count, max, mean, min, sum. -// -// Example: -// -// var v []struct { -// CreateTime time.Time `json:"create_time,omitempty"` -// Count int `json:"count,omitempty"` -// } -// -// client.Session.Query(). -// GroupBy(session.FieldCreateTime). -// Aggregate(ent.Count()). -// Scan(ctx, &v) -// -func (sq *SessionQuery) GroupBy(field string, fields ...string) *SessionGroupBy { - group := &SessionGroupBy{config: sq.config} - group.fields = append([]string{field}, fields...) - group.path = func(ctx context.Context) (prev *sql.Selector, err error) { - if err := sq.prepareQuery(ctx); err != nil { - return nil, err - } - return sq.sqlQuery(), nil - } - return group -} - -// Select one or more fields from the given query. -// -// Example: -// -// var v []struct { -// CreateTime time.Time `json:"create_time,omitempty"` -// } -// -// client.Session.Query(). -// Select(session.FieldCreateTime). -// Scan(ctx, &v) -// -func (sq *SessionQuery) Select(field string, fields ...string) *SessionSelect { - selector := &SessionSelect{config: sq.config} - selector.fields = append([]string{field}, fields...) - selector.path = func(ctx context.Context) (prev *sql.Selector, err error) { - if err := sq.prepareQuery(ctx); err != nil { - return nil, err - } - return sq.sqlQuery(), nil - } - return selector -} - -func (sq *SessionQuery) prepareQuery(ctx context.Context) error { - if sq.path != nil { - prev, err := sq.path(ctx) - if err != nil { - return err - } - sq.sql = prev - } - return nil -} - -func (sq *SessionQuery) sqlAll(ctx context.Context) ([]*Session, error) { - var ( - nodes = []*Session{} - _spec = sq.querySpec() - ) - _spec.ScanValues = func() []interface{} { - node := &Session{config: sq.config} - nodes = append(nodes, node) - values := node.scanValues() - return values - } - _spec.Assign = func(values ...interface{}) error { - if len(nodes) == 0 { - return fmt.Errorf("ent: Assign called without calling ScanValues") - } - node := nodes[len(nodes)-1] - return node.assignValues(values...) - } - if err := sqlgraph.QueryNodes(ctx, sq.driver, _spec); err != nil { - return nil, err - } - if len(nodes) == 0 { - return nodes, nil - } - return nodes, nil -} - -func (sq *SessionQuery) sqlCount(ctx context.Context) (int, error) { - _spec := sq.querySpec() - return sqlgraph.CountNodes(ctx, sq.driver, _spec) -} - -func (sq *SessionQuery) sqlExist(ctx context.Context) (bool, error) { - n, err := sq.sqlCount(ctx) - if err != nil { - return false, fmt.Errorf("ent: check existence: %v", err) - } - return n > 0, nil -} - -func (sq *SessionQuery) querySpec() *sqlgraph.QuerySpec { - _spec := &sqlgraph.QuerySpec{ - Node: &sqlgraph.NodeSpec{ - Table: session.Table, - Columns: session.Columns, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: session.FieldID, - }, - }, - From: sq.sql, - Unique: true, - } - if ps := sq.predicates; len(ps) > 0 { - _spec.Predicate = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector) - } - } - } - if limit := sq.limit; limit != nil { - _spec.Limit = *limit - } - if offset := sq.offset; offset != nil { - _spec.Offset = *offset - } - if ps := sq.order; len(ps) > 0 { - _spec.Order = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector, session.ValidColumn) - } - } - } - return _spec -} - -func (sq *SessionQuery) sqlQuery() *sql.Selector { - builder := sql.Dialect(sq.driver.Dialect()) - t1 := builder.Table(session.Table) - selector := builder.Select(t1.Columns(session.Columns...)...).From(t1) - if sq.sql != nil { - selector = sq.sql - selector.Select(selector.Columns(session.Columns...)...) - } - for _, p := range sq.predicates { - p(selector) - } - for _, p := range sq.order { - p(selector, session.ValidColumn) - } - if offset := sq.offset; offset != nil { - // limit is mandatory for offset clause. We start - // with default value, and override it below if needed. - selector.Offset(*offset).Limit(math.MaxInt32) - } - if limit := sq.limit; limit != nil { - selector.Limit(*limit) - } - return selector -} - -// SessionGroupBy is the builder for group-by Session entities. -type SessionGroupBy struct { - config - fields []string - fns []AggregateFunc - // intermediate query (i.e. traversal path). - sql *sql.Selector - path func(context.Context) (*sql.Selector, error) -} - -// Aggregate adds the given aggregation functions to the group-by query. -func (sgb *SessionGroupBy) Aggregate(fns ...AggregateFunc) *SessionGroupBy { - sgb.fns = append(sgb.fns, fns...) - return sgb -} - -// Scan applies the group-by query and scan the result into the given value. -func (sgb *SessionGroupBy) Scan(ctx context.Context, v interface{}) error { - query, err := sgb.path(ctx) - if err != nil { - return err - } - sgb.sql = query - return sgb.sqlScan(ctx, v) -} - -// ScanX is like Scan, but panics if an error occurs. -func (sgb *SessionGroupBy) ScanX(ctx context.Context, v interface{}) { - if err := sgb.Scan(ctx, v); err != nil { - panic(err) - } -} - -// Strings returns list of strings from group-by. It is only allowed when querying group-by with one field. -func (sgb *SessionGroupBy) Strings(ctx context.Context) ([]string, error) { - if len(sgb.fields) > 1 { - return nil, errors.New("ent: SessionGroupBy.Strings is not achievable when grouping more than 1 field") - } - var v []string - if err := sgb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// StringsX is like Strings, but panics if an error occurs. -func (sgb *SessionGroupBy) StringsX(ctx context.Context) []string { - v, err := sgb.Strings(ctx) - if err != nil { - panic(err) - } - return v -} - -// String returns a single string from group-by. It is only allowed when querying group-by with one field. -func (sgb *SessionGroupBy) String(ctx context.Context) (_ string, err error) { - var v []string - if v, err = sgb.Strings(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{session.Label} - default: - err = fmt.Errorf("ent: SessionGroupBy.Strings returned %d results when one was expected", len(v)) - } - return -} - -// StringX is like String, but panics if an error occurs. -func (sgb *SessionGroupBy) StringX(ctx context.Context) string { - v, err := sgb.String(ctx) - if err != nil { - panic(err) - } - return v -} - -// Ints returns list of ints from group-by. It is only allowed when querying group-by with one field. -func (sgb *SessionGroupBy) Ints(ctx context.Context) ([]int, error) { - if len(sgb.fields) > 1 { - return nil, errors.New("ent: SessionGroupBy.Ints is not achievable when grouping more than 1 field") - } - var v []int - if err := sgb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// IntsX is like Ints, but panics if an error occurs. -func (sgb *SessionGroupBy) IntsX(ctx context.Context) []int { - v, err := sgb.Ints(ctx) - if err != nil { - panic(err) - } - return v -} - -// Int returns a single int from group-by. It is only allowed when querying group-by with one field. -func (sgb *SessionGroupBy) Int(ctx context.Context) (_ int, err error) { - var v []int - if v, err = sgb.Ints(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{session.Label} - default: - err = fmt.Errorf("ent: SessionGroupBy.Ints returned %d results when one was expected", len(v)) - } - return -} - -// IntX is like Int, but panics if an error occurs. -func (sgb *SessionGroupBy) IntX(ctx context.Context) int { - v, err := sgb.Int(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64s returns list of float64s from group-by. It is only allowed when querying group-by with one field. -func (sgb *SessionGroupBy) Float64s(ctx context.Context) ([]float64, error) { - if len(sgb.fields) > 1 { - return nil, errors.New("ent: SessionGroupBy.Float64s is not achievable when grouping more than 1 field") - } - var v []float64 - if err := sgb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// Float64sX is like Float64s, but panics if an error occurs. -func (sgb *SessionGroupBy) Float64sX(ctx context.Context) []float64 { - v, err := sgb.Float64s(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64 returns a single float64 from group-by. It is only allowed when querying group-by with one field. -func (sgb *SessionGroupBy) Float64(ctx context.Context) (_ float64, err error) { - var v []float64 - if v, err = sgb.Float64s(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{session.Label} - default: - err = fmt.Errorf("ent: SessionGroupBy.Float64s returned %d results when one was expected", len(v)) - } - return -} - -// Float64X is like Float64, but panics if an error occurs. -func (sgb *SessionGroupBy) Float64X(ctx context.Context) float64 { - v, err := sgb.Float64(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bools returns list of bools from group-by. It is only allowed when querying group-by with one field. -func (sgb *SessionGroupBy) Bools(ctx context.Context) ([]bool, error) { - if len(sgb.fields) > 1 { - return nil, errors.New("ent: SessionGroupBy.Bools is not achievable when grouping more than 1 field") - } - var v []bool - if err := sgb.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// BoolsX is like Bools, but panics if an error occurs. -func (sgb *SessionGroupBy) BoolsX(ctx context.Context) []bool { - v, err := sgb.Bools(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bool returns a single bool from group-by. It is only allowed when querying group-by with one field. -func (sgb *SessionGroupBy) Bool(ctx context.Context) (_ bool, err error) { - var v []bool - if v, err = sgb.Bools(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{session.Label} - default: - err = fmt.Errorf("ent: SessionGroupBy.Bools returned %d results when one was expected", len(v)) - } - return -} - -// BoolX is like Bool, but panics if an error occurs. -func (sgb *SessionGroupBy) BoolX(ctx context.Context) bool { - v, err := sgb.Bool(ctx) - if err != nil { - panic(err) - } - return v -} - -func (sgb *SessionGroupBy) sqlScan(ctx context.Context, v interface{}) error { - for _, f := range sgb.fields { - if !session.ValidColumn(f) { - return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for group-by", f)} - } - } - selector := sgb.sqlQuery() - if err := selector.Err(); err != nil { - return err - } - rows := &sql.Rows{} - query, args := selector.Query() - if err := sgb.driver.Query(ctx, query, args, rows); err != nil { - return err - } - defer rows.Close() - return sql.ScanSlice(rows, v) -} - -func (sgb *SessionGroupBy) sqlQuery() *sql.Selector { - selector := sgb.sql - columns := make([]string, 0, len(sgb.fields)+len(sgb.fns)) - columns = append(columns, sgb.fields...) - for _, fn := range sgb.fns { - columns = append(columns, fn(selector, session.ValidColumn)) - } - return selector.Select(columns...).GroupBy(sgb.fields...) -} - -// SessionSelect is the builder for select fields of Session entities. -type SessionSelect struct { - config - fields []string - // intermediate query (i.e. traversal path). - sql *sql.Selector - path func(context.Context) (*sql.Selector, error) -} - -// Scan applies the selector query and scan the result into the given value. -func (ss *SessionSelect) Scan(ctx context.Context, v interface{}) error { - query, err := ss.path(ctx) - if err != nil { - return err - } - ss.sql = query - return ss.sqlScan(ctx, v) -} - -// ScanX is like Scan, but panics if an error occurs. -func (ss *SessionSelect) ScanX(ctx context.Context, v interface{}) { - if err := ss.Scan(ctx, v); err != nil { - panic(err) - } -} - -// Strings returns list of strings from selector. It is only allowed when selecting one field. -func (ss *SessionSelect) Strings(ctx context.Context) ([]string, error) { - if len(ss.fields) > 1 { - return nil, errors.New("ent: SessionSelect.Strings is not achievable when selecting more than 1 field") - } - var v []string - if err := ss.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// StringsX is like Strings, but panics if an error occurs. -func (ss *SessionSelect) StringsX(ctx context.Context) []string { - v, err := ss.Strings(ctx) - if err != nil { - panic(err) - } - return v -} - -// String returns a single string from selector. It is only allowed when selecting one field. -func (ss *SessionSelect) String(ctx context.Context) (_ string, err error) { - var v []string - if v, err = ss.Strings(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{session.Label} - default: - err = fmt.Errorf("ent: SessionSelect.Strings returned %d results when one was expected", len(v)) - } - return -} - -// StringX is like String, but panics if an error occurs. -func (ss *SessionSelect) StringX(ctx context.Context) string { - v, err := ss.String(ctx) - if err != nil { - panic(err) - } - return v -} - -// Ints returns list of ints from selector. It is only allowed when selecting one field. -func (ss *SessionSelect) Ints(ctx context.Context) ([]int, error) { - if len(ss.fields) > 1 { - return nil, errors.New("ent: SessionSelect.Ints is not achievable when selecting more than 1 field") - } - var v []int - if err := ss.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// IntsX is like Ints, but panics if an error occurs. -func (ss *SessionSelect) IntsX(ctx context.Context) []int { - v, err := ss.Ints(ctx) - if err != nil { - panic(err) - } - return v -} - -// Int returns a single int from selector. It is only allowed when selecting one field. -func (ss *SessionSelect) Int(ctx context.Context) (_ int, err error) { - var v []int - if v, err = ss.Ints(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{session.Label} - default: - err = fmt.Errorf("ent: SessionSelect.Ints returned %d results when one was expected", len(v)) - } - return -} - -// IntX is like Int, but panics if an error occurs. -func (ss *SessionSelect) IntX(ctx context.Context) int { - v, err := ss.Int(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64s returns list of float64s from selector. It is only allowed when selecting one field. -func (ss *SessionSelect) Float64s(ctx context.Context) ([]float64, error) { - if len(ss.fields) > 1 { - return nil, errors.New("ent: SessionSelect.Float64s is not achievable when selecting more than 1 field") - } - var v []float64 - if err := ss.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// Float64sX is like Float64s, but panics if an error occurs. -func (ss *SessionSelect) Float64sX(ctx context.Context) []float64 { - v, err := ss.Float64s(ctx) - if err != nil { - panic(err) - } - return v -} - -// Float64 returns a single float64 from selector. It is only allowed when selecting one field. -func (ss *SessionSelect) Float64(ctx context.Context) (_ float64, err error) { - var v []float64 - if v, err = ss.Float64s(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{session.Label} - default: - err = fmt.Errorf("ent: SessionSelect.Float64s returned %d results when one was expected", len(v)) - } - return -} - -// Float64X is like Float64, but panics if an error occurs. -func (ss *SessionSelect) Float64X(ctx context.Context) float64 { - v, err := ss.Float64(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bools returns list of bools from selector. It is only allowed when selecting one field. -func (ss *SessionSelect) Bools(ctx context.Context) ([]bool, error) { - if len(ss.fields) > 1 { - return nil, errors.New("ent: SessionSelect.Bools is not achievable when selecting more than 1 field") - } - var v []bool - if err := ss.Scan(ctx, &v); err != nil { - return nil, err - } - return v, nil -} - -// BoolsX is like Bools, but panics if an error occurs. -func (ss *SessionSelect) BoolsX(ctx context.Context) []bool { - v, err := ss.Bools(ctx) - if err != nil { - panic(err) - } - return v -} - -// Bool returns a single bool from selector. It is only allowed when selecting one field. -func (ss *SessionSelect) Bool(ctx context.Context) (_ bool, err error) { - var v []bool - if v, err = ss.Bools(ctx); err != nil { - return - } - switch len(v) { - case 1: - return v[0], nil - case 0: - err = &NotFoundError{session.Label} - default: - err = fmt.Errorf("ent: SessionSelect.Bools returned %d results when one was expected", len(v)) - } - return -} - -// BoolX is like Bool, but panics if an error occurs. -func (ss *SessionSelect) BoolX(ctx context.Context) bool { - v, err := ss.Bool(ctx) - if err != nil { - panic(err) - } - return v -} - -func (ss *SessionSelect) sqlScan(ctx context.Context, v interface{}) error { - for _, f := range ss.fields { - if !session.ValidColumn(f) { - return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for selection", f)} - } - } - rows := &sql.Rows{} - query, args := ss.sqlQuery().Query() - if err := ss.driver.Query(ctx, query, args, rows); err != nil { - return err - } - defer rows.Close() - return sql.ScanSlice(rows, v) -} - -func (ss *SessionSelect) sqlQuery() sql.Querier { - selector := ss.sql - selector.Select(selector.Columns(ss.fields...)...) - return selector -} diff --git a/src/db/ent/session_update.go b/src/db/ent/session_update.go deleted file mode 100644 index 5c65706..0000000 --- a/src/db/ent/session_update.go +++ /dev/null @@ -1,238 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "fmt" - - "github.com/facebook/ent/dialect/sql" - "github.com/facebook/ent/dialect/sql/sqlgraph" - "github.com/facebook/ent/schema/field" - "github.com/roleypoly/roleypoly/src/db/ent/predicate" - "github.com/roleypoly/roleypoly/src/db/ent/session" -) - -// SessionUpdate is the builder for updating Session entities. -type SessionUpdate struct { - config - hooks []Hook - mutation *SessionMutation - predicates []predicate.Session -} - -// Where adds a new predicate for the builder. -func (su *SessionUpdate) Where(ps ...predicate.Session) *SessionUpdate { - su.predicates = append(su.predicates, ps...) - return su -} - -// Mutation returns the SessionMutation object of the builder. -func (su *SessionUpdate) Mutation() *SessionMutation { - return su.mutation -} - -// Save executes the query and returns the number of rows/vertices matched by this operation. -func (su *SessionUpdate) Save(ctx context.Context) (int, error) { - var ( - err error - affected int - ) - su.defaults() - if len(su.hooks) == 0 { - affected, err = su.sqlSave(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*SessionMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - su.mutation = mutation - affected, err = su.sqlSave(ctx) - mutation.done = true - return affected, err - }) - for i := len(su.hooks) - 1; i >= 0; i-- { - mut = su.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, su.mutation); err != nil { - return 0, err - } - } - return affected, err -} - -// SaveX is like Save, but panics if an error occurs. -func (su *SessionUpdate) SaveX(ctx context.Context) int { - affected, err := su.Save(ctx) - if err != nil { - panic(err) - } - return affected -} - -// Exec executes the query. -func (su *SessionUpdate) Exec(ctx context.Context) error { - _, err := su.Save(ctx) - return err -} - -// ExecX is like Exec, but panics if an error occurs. -func (su *SessionUpdate) ExecX(ctx context.Context) { - if err := su.Exec(ctx); err != nil { - panic(err) - } -} - -// defaults sets the default values of the builder before save. -func (su *SessionUpdate) defaults() { - if _, ok := su.mutation.UpdateTime(); !ok { - v := session.UpdateDefaultUpdateTime() - su.mutation.SetUpdateTime(v) - } -} - -func (su *SessionUpdate) sqlSave(ctx context.Context) (n int, err error) { - _spec := &sqlgraph.UpdateSpec{ - Node: &sqlgraph.NodeSpec{ - Table: session.Table, - Columns: session.Columns, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: session.FieldID, - }, - }, - } - if ps := su.predicates; len(ps) > 0 { - _spec.Predicate = func(selector *sql.Selector) { - for i := range ps { - ps[i](selector) - } - } - } - if value, ok := su.mutation.UpdateTime(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: session.FieldUpdateTime, - }) - } - if n, err = sqlgraph.UpdateNodes(ctx, su.driver, _spec); err != nil { - if _, ok := err.(*sqlgraph.NotFoundError); ok { - err = &NotFoundError{session.Label} - } else if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - return 0, err - } - return n, nil -} - -// SessionUpdateOne is the builder for updating a single Session entity. -type SessionUpdateOne struct { - config - hooks []Hook - mutation *SessionMutation -} - -// Mutation returns the SessionMutation object of the builder. -func (suo *SessionUpdateOne) Mutation() *SessionMutation { - return suo.mutation -} - -// Save executes the query and returns the updated entity. -func (suo *SessionUpdateOne) Save(ctx context.Context) (*Session, error) { - var ( - err error - node *Session - ) - suo.defaults() - if len(suo.hooks) == 0 { - node, err = suo.sqlSave(ctx) - } else { - var mut Mutator = MutateFunc(func(ctx context.Context, m Mutation) (Value, error) { - mutation, ok := m.(*SessionMutation) - if !ok { - return nil, fmt.Errorf("unexpected mutation type %T", m) - } - suo.mutation = mutation - node, err = suo.sqlSave(ctx) - mutation.done = true - return node, err - }) - for i := len(suo.hooks) - 1; i >= 0; i-- { - mut = suo.hooks[i](mut) - } - if _, err := mut.Mutate(ctx, suo.mutation); err != nil { - return nil, err - } - } - return node, err -} - -// SaveX is like Save, but panics if an error occurs. -func (suo *SessionUpdateOne) SaveX(ctx context.Context) *Session { - node, err := suo.Save(ctx) - if err != nil { - panic(err) - } - return node -} - -// Exec executes the query on the entity. -func (suo *SessionUpdateOne) Exec(ctx context.Context) error { - _, err := suo.Save(ctx) - return err -} - -// ExecX is like Exec, but panics if an error occurs. -func (suo *SessionUpdateOne) ExecX(ctx context.Context) { - if err := suo.Exec(ctx); err != nil { - panic(err) - } -} - -// defaults sets the default values of the builder before save. -func (suo *SessionUpdateOne) defaults() { - if _, ok := suo.mutation.UpdateTime(); !ok { - v := session.UpdateDefaultUpdateTime() - suo.mutation.SetUpdateTime(v) - } -} - -func (suo *SessionUpdateOne) sqlSave(ctx context.Context) (_node *Session, err error) { - _spec := &sqlgraph.UpdateSpec{ - Node: &sqlgraph.NodeSpec{ - Table: session.Table, - Columns: session.Columns, - ID: &sqlgraph.FieldSpec{ - Type: field.TypeInt, - Column: session.FieldID, - }, - }, - } - id, ok := suo.mutation.ID() - if !ok { - return nil, &ValidationError{Name: "ID", err: fmt.Errorf("missing Session.ID for update")} - } - _spec.Node.ID.Value = id - if value, ok := suo.mutation.UpdateTime(); ok { - _spec.Fields.Set = append(_spec.Fields.Set, &sqlgraph.FieldSpec{ - Type: field.TypeTime, - Value: value, - Column: session.FieldUpdateTime, - }) - } - _node = &Session{config: suo.config} - _spec.Assign = _node.assignValues - _spec.ScanValues = _node.scanValues() - if err = sqlgraph.UpdateNode(ctx, suo.driver, _spec); err != nil { - if _, ok := err.(*sqlgraph.NotFoundError); ok { - err = &NotFoundError{session.Label} - } else if cerr, ok := isSQLConstraintError(err); ok { - err = cerr - } - return nil, err - } - return _node, nil -} diff --git a/src/db/ent/tx.go b/src/db/ent/tx.go deleted file mode 100644 index 47e6a5d..0000000 --- a/src/db/ent/tx.go +++ /dev/null @@ -1,216 +0,0 @@ -// Code generated by entc, DO NOT EDIT. - -package ent - -import ( - "context" - "sync" - - "github.com/facebook/ent/dialect" -) - -// Tx is a transactional client that is created by calling Client.Tx(). -type Tx struct { - config - // Challenge is the client for interacting with the Challenge builders. - Challenge *ChallengeClient - // Guild is the client for interacting with the Guild builders. - Guild *GuildClient - // Session is the client for interacting with the Session builders. - Session *SessionClient - - // lazily loaded. - client *Client - clientOnce sync.Once - - // completion callbacks. - mu sync.Mutex - onCommit []CommitHook - onRollback []RollbackHook - - // ctx lives for the life of the transaction. It is - // the same context used by the underlying connection. - ctx context.Context -} - -type ( - // Committer is the interface that wraps the Committer method. - Committer interface { - Commit(context.Context, *Tx) error - } - - // The CommitFunc type is an adapter to allow the use of ordinary - // function as a Committer. If f is a function with the appropriate - // signature, CommitFunc(f) is a Committer that calls f. - CommitFunc func(context.Context, *Tx) error - - // CommitHook defines the "commit middleware". A function that gets a Committer - // and returns a Committer. For example: - // - // hook := func(next ent.Committer) ent.Committer { - // return ent.CommitFunc(func(context.Context, tx *ent.Tx) error { - // // Do some stuff before. - // if err := next.Commit(ctx, tx); err != nil { - // return err - // } - // // Do some stuff after. - // return nil - // }) - // } - // - CommitHook func(Committer) Committer -) - -// Commit calls f(ctx, m). -func (f CommitFunc) Commit(ctx context.Context, tx *Tx) error { - return f(ctx, tx) -} - -// Commit commits the transaction. -func (tx *Tx) Commit() error { - txDriver := tx.config.driver.(*txDriver) - var fn Committer = CommitFunc(func(context.Context, *Tx) error { - return txDriver.tx.Commit() - }) - tx.mu.Lock() - hooks := append([]CommitHook(nil), tx.onCommit...) - tx.mu.Unlock() - for i := len(hooks) - 1; i >= 0; i-- { - fn = hooks[i](fn) - } - return fn.Commit(tx.ctx, tx) -} - -// OnCommit adds a hook to call on commit. -func (tx *Tx) OnCommit(f CommitHook) { - tx.mu.Lock() - defer tx.mu.Unlock() - tx.onCommit = append(tx.onCommit, f) -} - -type ( - // Rollbacker is the interface that wraps the Rollbacker method. - Rollbacker interface { - Rollback(context.Context, *Tx) error - } - - // The RollbackFunc type is an adapter to allow the use of ordinary - // function as a Rollbacker. If f is a function with the appropriate - // signature, RollbackFunc(f) is a Rollbacker that calls f. - RollbackFunc func(context.Context, *Tx) error - - // RollbackHook defines the "rollback middleware". A function that gets a Rollbacker - // and returns a Rollbacker. For example: - // - // hook := func(next ent.Rollbacker) ent.Rollbacker { - // return ent.RollbackFunc(func(context.Context, tx *ent.Tx) error { - // // Do some stuff before. - // if err := next.Rollback(ctx, tx); err != nil { - // return err - // } - // // Do some stuff after. - // return nil - // }) - // } - // - RollbackHook func(Rollbacker) Rollbacker -) - -// Rollback calls f(ctx, m). -func (f RollbackFunc) Rollback(ctx context.Context, tx *Tx) error { - return f(ctx, tx) -} - -// Rollback rollbacks the transaction. -func (tx *Tx) Rollback() error { - txDriver := tx.config.driver.(*txDriver) - var fn Rollbacker = RollbackFunc(func(context.Context, *Tx) error { - return txDriver.tx.Rollback() - }) - tx.mu.Lock() - hooks := append([]RollbackHook(nil), tx.onRollback...) - tx.mu.Unlock() - for i := len(hooks) - 1; i >= 0; i-- { - fn = hooks[i](fn) - } - return fn.Rollback(tx.ctx, tx) -} - -// OnRollback adds a hook to call on rollback. -func (tx *Tx) OnRollback(f RollbackHook) { - tx.mu.Lock() - defer tx.mu.Unlock() - tx.onRollback = append(tx.onRollback, f) -} - -// Client returns a Client that binds to current transaction. -func (tx *Tx) Client() *Client { - tx.clientOnce.Do(func() { - tx.client = &Client{config: tx.config} - tx.client.init() - }) - return tx.client -} - -func (tx *Tx) init() { - tx.Challenge = NewChallengeClient(tx.config) - tx.Guild = NewGuildClient(tx.config) - tx.Session = NewSessionClient(tx.config) -} - -// txDriver wraps the given dialect.Tx with a nop dialect.Driver implementation. -// The idea is to support transactions without adding any extra code to the builders. -// When a builder calls to driver.Tx(), it gets the same dialect.Tx instance. -// Commit and Rollback are nop for the internal builders and the user must call one -// of them in order to commit or rollback the transaction. -// -// If a closed transaction is embedded in one of the generated entities, and the entity -// applies a query, for example: Challenge.QueryXXX(), the query will be executed -// through the driver which created this transaction. -// -// Note that txDriver is not goroutine safe. -type txDriver struct { - // the driver we started the transaction from. - drv dialect.Driver - // tx is the underlying transaction. - tx dialect.Tx -} - -// newTx creates a new transactional driver. -func newTx(ctx context.Context, drv dialect.Driver) (*txDriver, error) { - tx, err := drv.Tx(ctx) - if err != nil { - return nil, err - } - return &txDriver{tx: tx, drv: drv}, nil -} - -// Tx returns the transaction wrapper (txDriver) to avoid Commit or Rollback calls -// from the internal builders. Should be called only by the internal builders. -func (tx *txDriver) Tx(context.Context) (dialect.Tx, error) { return tx, nil } - -// Dialect returns the dialect of the driver we started the transaction from. -func (tx *txDriver) Dialect() string { return tx.drv.Dialect() } - -// Close is a nop close. -func (*txDriver) Close() error { return nil } - -// Commit is a nop commit for the internal builders. -// User must call `Tx.Commit` in order to commit the transaction. -func (*txDriver) Commit() error { return nil } - -// Rollback is a nop rollback for the internal builders. -// User must call `Tx.Rollback` in order to rollback the transaction. -func (*txDriver) Rollback() error { return nil } - -// Exec calls tx.Exec. -func (tx *txDriver) Exec(ctx context.Context, query string, args, v interface{}) error { - return tx.tx.Exec(ctx, query, args, v) -} - -// Query calls tx.Query. -func (tx *txDriver) Query(ctx context.Context, query string, args, v interface{}) error { - return tx.tx.Query(ctx, query, args, v) -} - -var _ dialect.Driver = (*txDriver)(nil) diff --git a/src/design-system/Intro.stories.mdx b/src/design-system/Intro.stories.mdx index 6c3c409..ffc9fae 100644 --- a/src/design-system/Intro.stories.mdx +++ b/src/design-system/Intro.stories.mdx @@ -1,11 +1,11 @@ import { Meta } from '@storybook/addon-docs/blocks'; -import { Logotype } from 'roleypoly/src/design-system/atoms/branding'; -import { Space } from 'roleypoly/src/design-system/atoms/space'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; +import { Logotype } from 'roleypoly/design-system/atoms/branding'; +import { Space } from 'roleypoly/design-system/atoms/space'; +import { palette } from 'roleypoly/design-system/atoms/colors'; - + # Rapid UI diff --git a/src/design-system/atoms/avatar/Avatar.stories.tsx b/src/design-system/atoms/avatar/Avatar.stories.tsx index e800fe5..91fde10 100644 --- a/src/design-system/atoms/avatar/Avatar.stories.tsx +++ b/src/design-system/atoms/avatar/Avatar.stories.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Avatar } from './Avatar'; +import { Avatar, AvatarProps } from './Avatar'; export default { title: 'Atoms/Avatar', @@ -12,18 +12,22 @@ export default { }, }; -export const WithInitials = ({ initials, ...rest }) => ( +type StoryArgs = { + initials?: string; +} & AvatarProps; + +export const WithInitials = ({ initials, ...rest }: StoryArgs) => ( {initials} ); -export const WithText = ({ initials, ...rest }) => ( +export const WithText = ({ initials, ...rest }: StoryArgs) => ( {initials} ); -export const Empty = (args) => ; -export const DeliberatelyEmpty = (args) => ( +export const Empty = (args: StoryArgs) => ; +export const DeliberatelyEmpty = (args: StoryArgs) => ( ); diff --git a/src/design-system/atoms/avatar/Avatar.styled.ts b/src/design-system/atoms/avatar/Avatar.styled.ts index d35eef8..b3e5b86 100644 --- a/src/design-system/atoms/avatar/Avatar.styled.ts +++ b/src/design-system/atoms/avatar/Avatar.styled.ts @@ -1,7 +1,7 @@ import { AvatarProps } from './Avatar'; import styled, { css } from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports -import { palette } from 'roleypoly/src/design-system/atoms/colors'; + +import { palette } from 'roleypoly/design-system/atoms/colors'; type ContainerProps = Pick & Pick; export const Container = styled.div` diff --git a/src/design-system/atoms/avatar/BUILD.bazel b/src/design-system/atoms/avatar/BUILD.bazel deleted file mode 100644 index c82c787..0000000 --- a/src/design-system/atoms/avatar/BUILD.bazel +++ /dev/null @@ -1,10 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "avatar", - deps = [ - "//src/design-system/atoms/colors", - ], -) diff --git a/src/design-system/atoms/avatar/avatarUtils.tsx b/src/design-system/atoms/avatar/avatarUtils.tsx index caddf3c..40cf47e 100644 --- a/src/design-system/atoms/avatar/avatarUtils.tsx +++ b/src/design-system/atoms/avatar/avatarUtils.tsx @@ -5,3 +5,6 @@ export const initialsFromName = (name: string) => .map((x) => x[0]) .join('') .toUpperCase(); + +export const avatarHash = (id: string, hash: string) => + `https://cdn.discordapp.com/icons/${id}/${hash}.webp?size=256`; diff --git a/src/design-system/atoms/branding/BUILD.bazel b/src/design-system/atoms/branding/BUILD.bazel deleted file mode 100644 index f755b12..0000000 --- a/src/design-system/atoms/branding/BUILD.bazel +++ /dev/null @@ -1,10 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "branding", - deps = [ - "//src/design-system/atoms/colors", - ], -) diff --git a/src/design-system/atoms/branding/Branding.tsx b/src/design-system/atoms/branding/Branding.tsx index 34d97fb..267cc2a 100644 --- a/src/design-system/atoms/branding/Branding.tsx +++ b/src/design-system/atoms/branding/Branding.tsx @@ -1,94 +1,154 @@ import * as React from 'react'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; +import { palette } from 'roleypoly/design-system/atoms/colors'; -type LogoProps = { +export type LogoProps = { fill: string; width: number; height: number; circleFill: string; + circleOuterFill: string; typeFill: string; style: object; className: string; + 'data-for'?: string; + 'data-tip'?: string; }; export const Logotype = ({ - fill = palette.taupe500, - width, - height, - circleFill = palette.taupe200, - typeFill, - style, - className, -}: Partial = {}) => ( + typeFill = palette.taupe400, + circleFill = palette.red200, + circleOuterFill = palette.green200, + ...props +}: Partial) => ( - + - - - - + + + + + + + + + - + + + + + + + + ); export const Logomark = ({ - fill = palette.taupe500, - width, - height, - circleFill = palette.taupe200, - typeFill, - style, - className, + circleFill = palette.red200, + circleOuterFill = palette.green200, + ...props }: Partial) => ( - - - - + + - - - - + + + + + + + ); diff --git a/src/design-system/atoms/branding/BrandingOld.tsx b/src/design-system/atoms/branding/BrandingOld.tsx new file mode 100644 index 0000000..2118661 --- /dev/null +++ b/src/design-system/atoms/branding/BrandingOld.tsx @@ -0,0 +1,85 @@ +import * as React from 'react'; +import { palette } from '../colors'; +import { LogoProps } from './Branding'; + +export const LogotypeOld = ({ + fill = palette.taupe500, + width, + height, + circleFill = palette.taupe200, + typeFill, + style, + className, +}: Partial = {}) => ( + + + + + + + + + + + + +); + +export const LogomarkOld = ({ + fill = palette.taupe500, + width, + height, + circleFill = palette.taupe200, + typeFill, + style, + className, +}: Partial) => ( + + + + + + + + + + + + +); diff --git a/src/design-system/atoms/branding/DynamicBranding.stories.tsx b/src/design-system/atoms/branding/DynamicBranding.stories.tsx new file mode 100644 index 0000000..5c1ff02 --- /dev/null +++ b/src/design-system/atoms/branding/DynamicBranding.stories.tsx @@ -0,0 +1,59 @@ +import * as React from 'react'; +import ReactTooltip from 'react-tooltip'; +import styled from 'styled-components'; +import { AllVariants, DynamicLogomark, DynamicLogotype } from './DynamicBranding'; + +export default { + title: 'Atoms/Branding/Dynamic', + component: DynamicLogotype, +}; + +const WrapperDiv = styled.div` + background-color: black; + padding: 2em; +`; + +const Wrapper = (props: { children: React.ReactNode }) => ( + <> + {props.children} + + +); + +export const DynamicLogotype_ = (args) => { + return ( + + + + ); +}; + +export const DynamicLogomark_ = (args) => { + return ( + + + + ); +}; + +export const AllCustomizedLogotypes = () => { + return ( + + {AllVariants.map((variant, idx) => ( +
+ +
+ ))} +
+ ); +}; + +export const AllCustomizedLogomarks = () => { + return ( + + {AllVariants.map((variant, idx) => ( + + ))} + + ); +}; diff --git a/src/design-system/atoms/branding/DynamicBranding.tsx b/src/design-system/atoms/branding/DynamicBranding.tsx new file mode 100644 index 0000000..354e0ee --- /dev/null +++ b/src/design-system/atoms/branding/DynamicBranding.tsx @@ -0,0 +1,658 @@ +import * as React from 'react'; +import ReactTooltip from 'react-tooltip'; +import { palette } from '../colors'; +import { SparkleOverlay } from '../sparkle'; +import { Logomark, LogoProps, Logotype } from './Branding'; + +type DynamicLogoProps = Partial & { + currentDate?: Date; +}; + +export const DynamicLogomark = (props: DynamicLogoProps) => { + const variant = React.useMemo(() => getRelevantVariant(props.currentDate), [ + props.currentDate, + ]); + + if (!variant) { + return ; + } + + let tooltipProps = {}; + if (variant.tooltip) { + tooltipProps = { + 'data-tip': variant.tooltip, + // 'data-for': 'dynamic-logomark', + }; + } + + return ( + <> + + + + ); +}; + +export const DynamicLogotype = (props: DynamicLogoProps) => { + const variant = React.useMemo(() => getRelevantVariant(props.currentDate), [ + props.currentDate, + ]); + + if (!variant) { + return ; + } + + let tooltipProps = {}; + if (variant.tooltip) { + tooltipProps = { + 'data-tip': variant.tooltip, + // 'data-for': 'dynamic-logomark', + }; + } + + return ( + <> + + + + ); +}; + +const getRelevantVariant = (currentDate?: Date) => { + for (let variant of AllVariants) { + if (variant.activeIf(currentDate)) return variant; + } + + return null; +}; + +// These should be updated for 2021. +// Please feel free to update with a PR for 2022 or any missing weeks within 2021. +// Rules: +// - common law holidays should have at least 2 extra days before and after +// - pride days should be 1 extra day before and after +// - weeks/months should have no buffer +// - 4/20 is just for 4/20. + +const matchDay = ( + start: Date, + end: Date, + currentDate: Date = new Date(), + staticDate: boolean = false +) => { + if (!staticDate) { + // pre-fill start/end years to simplify + start.setFullYear(currentDate.getFullYear()); + end.setFullYear(currentDate.getFullYear()); + } + + start.setHours(0, 0, 0, 0); + end.setHours(0, 0, 0, 0); + + if (currentDate > start && currentDate < end) { + return true; + } + + return false; +}; + +type Variant = { + activeIf: (currentDate?: Date) => boolean; + sharedProps?: Partial; + tooltip?: string; + Logomark: React.FunctionComponent; + Logotype: React.FunctionComponent; +}; + +export const Trans: Variant = { + // March 31, Nov 13-20+1 + activeIf: (currentDate?: Date) => + matchDay(new Date('2021-Mar-31'), new Date('2021-Apr-1'), currentDate) || + matchDay(new Date('2021-Nov-13'), new Date('2021-Nov-22'), currentDate), + sharedProps: { + circleFill: '#F7A8B8', + circleOuterFill: '#55CDFC', + typeFill: palette.grey600, + }, + tooltip: 'Roleypoly says trans rights!', + Logomark: (props: DynamicLogoProps) => , + Logotype: (props: DynamicLogoProps) => , +}; + +export const Bi: Variant = { + // Sept 16-23 + activeIf: (currentDate?: Date) => + matchDay(new Date('2021-Sep-16'), new Date('2021-Sep-24'), currentDate), + sharedProps: { + circleFill: '#D60270', + circleOuterFill: '#0038A8', + typeFill: '#9B4F96', + }, + tooltip: 'Being bi is a lot like a riding a bicycle since they can go both ways.', + Logomark: (props: DynamicLogoProps) => , + Logotype: (props: DynamicLogoProps) => , +}; + +export const Lesbian: Variant = { + // Apr 26 + activeIf: (currentDate?: Date) => + matchDay(new Date('2021-Apr-25'), new Date('2021-Apt-27'), currentDate), + sharedProps: { + circleFill: '#D362A4', + circleOuterFill: '#A30262', + typeFill: '#FF9A56', + }, + tooltip: "I'm a lesbiab... lesbiam... Less Bien... Girls.", + Logomark: (props: DynamicLogoProps) => ( + + ), + Logotype: (props: DynamicLogoProps) => ( + + ), +}; + +export const Ace: Variant = { + // Oct 24-30 + activeIf: (currentDate?: Date) => + matchDay(new Date('2021-Oct-24'), new Date('2021-Oct-31'), currentDate), + sharedProps: { + circleFill: '#333', + circleOuterFill: '#84067C', + typeFill: '#CCC', + }, + tooltip: "Sexualn't", + Logomark: (props: DynamicLogoProps) => , + Logotype: (props: DynamicLogoProps) => , +}; + +export const Birthday: Variant = { + // Jan 15 + activeIf: (currentDate?: Date) => + matchDay(new Date('2021-Jan-15'), new Date('2021-Jan-16'), currentDate), + sharedProps: { + circleFill: 'none', + circleOuterFill: palette.taupe300, + typeFill: palette.taupe500, + }, + tooltip: '🎉 HAPPY BIRTHDAY ROLEYPOLY 🎉', + Logomark: (props: DynamicLogoProps) => ( + + + + + + + + + + + + + + + + + + ), + Logotype: (props: DynamicLogoProps) => ( +
+ + + +
+ ), +}; + +export const DevilsLettuce: Variant = { + // Apr 20 + activeIf: (currentDate?: Date) => + matchDay(new Date('2021-Apr-20'), new Date('2021-Apr-21'), currentDate), + sharedProps: { + circleFill: palette.green400, + circleOuterFill: palette.green200, + typeFill: palette.green400, + }, + tooltip: 'Legalize it.', + Logomark: (props: DynamicLogoProps) => ( + + ), + Logotype: (props: DynamicLogoProps) => ( + + ), +}; + +export const BicycleDay: Variant = { + // Apr 19 + // TODO: hexagon is bestagon + activeIf: (currentDate?: Date) => + matchDay(new Date('2021-Apr-19'), new Date('2021-Apr-20'), currentDate), + sharedProps: { + circleFill: palette.gold400, + circleOuterFill: palette.red200, + typeFill: palette.discord400, + }, + tooltip: 'It increases brain complexity.', + Logomark: (props: DynamicLogoProps) => ( + + ), + Logotype: (props: DynamicLogoProps) => ( + + ), +}; + +export const Christmas: Variant = { + // Dec 20-27 + activeIf: (currentDate?: Date) => + true || matchDay(new Date('2021-Dec-20'), new Date('2021-Dec-28'), currentDate), + sharedProps: { + circleFill: palette.green200, + circleOuterFill: palette.red200, + typeFill: palette.green400, + }, + tooltip: 'Have yourself a merry little Christmas~', + Logomark: (props: DynamicLogoProps) => ( + + + + ), + Logotype: (props: DynamicLogoProps) => ( + + + + ), +}; + +export const NewYear: Variant = { + // Dec 30 - Jan 2 + // TODO: sparkle + activeIf: (currentDate?: Date) => + matchDay(new Date('2021-Dec-30'), new Date('2021-Jan-3'), currentDate), + sharedProps: { + circleFill: '#222', + circleOuterFill: palette.red400, + typeFill: '#aaa', + }, + tooltip: 'Fuck 2020. 🎆🎇🎆🎇', + Logomark: (props: DynamicLogoProps) => ( + + ), + Logotype: (props: DynamicLogoProps) => ( +
+ + + +
+ ), +}; + +export const LunarNewYear: Variant = { + // Feb 12, 2021 + // Feb 1, 2022 + activeIf: (currentDate?: Date) => + matchDay(new Date('2021-Feb-10'), new Date('2021-Feb-13'), currentDate, true) || + matchDay(new Date('2022-Jan-30'), new Date('2022-Feb-3'), currentDate, true), + sharedProps: { + circleFill: palette.red200, + circleOuterFill: palette.gold400, + typeFill: palette.taupe300, + }, + tooltip: '恭喜发财! 🎊🎆🎇', + Logomark: (props: DynamicLogoProps) => ( + + ), + Logotype: (props: DynamicLogoProps) => ( +
+ + + +
+ ), +}; + +export const Pride: Variant = { + // June + activeIf: (currentDate?: Date) => + matchDay(new Date('2021-Jun-1'), new Date('2021-Jul-1'), currentDate), + sharedProps: { + circleOuterFill: palette.taupe200, + typeFill: palette.grey500, + }, + tooltip: 'LOVE WINS. 💖🌈🌟', + Logomark: (props: DynamicLogoProps) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + ), + Logotype: (props: DynamicLogoProps) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ), +}; + +export const AllVariants: Variant[] = [ + Trans, + Pride, + Bi, + Lesbian, + Ace, + Birthday, + DevilsLettuce, + BicycleDay, + Christmas, + NewYear, + LunarNewYear, +]; diff --git a/src/design-system/atoms/branding/index.ts b/src/design-system/atoms/branding/index.ts index e983d1e..8ccce70 100644 --- a/src/design-system/atoms/branding/index.ts +++ b/src/design-system/atoms/branding/index.ts @@ -1 +1,2 @@ export * from './Branding'; +export * from './DynamicBranding'; diff --git a/src/design-system/atoms/breakpoints/BUILD.bazel b/src/design-system/atoms/breakpoints/BUILD.bazel deleted file mode 100644 index 4a30640..0000000 --- a/src/design-system/atoms/breakpoints/BUILD.bazel +++ /dev/null @@ -1,10 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "breakpoints", - deps = [ - "//src/common/utils/withContext", - ], -) diff --git a/src/design-system/atoms/breakpoints/Context.ts b/src/design-system/atoms/breakpoints/Context.ts index 9b9edf4..0b6054d 100644 --- a/src/design-system/atoms/breakpoints/Context.ts +++ b/src/design-system/atoms/breakpoints/Context.ts @@ -1,5 +1,5 @@ import * as React from 'react'; -import { withContext } from 'roleypoly/src/common/utils/withContext'; +import { withContext } from 'roleypoly/common/utils/withContext'; export type ScreenSize = { onSmallScreen: boolean; diff --git a/src/design-system/atoms/button/BUILD.bazel b/src/design-system/atoms/button/BUILD.bazel deleted file mode 100644 index 5afca68..0000000 --- a/src/design-system/atoms/button/BUILD.bazel +++ /dev/null @@ -1,17 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") -load("//hack/bazel/js:jest.bzl", "jest_test") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "button", - deps = [ - "//src/design-system/atoms/colors", - "//src/design-system/atoms/fonts", - "//src/design-system/atoms/typography", - ], -) - -jest_test( - src = ":button", -) diff --git a/src/design-system/atoms/button/Button.styled.ts b/src/design-system/atoms/button/Button.styled.ts index 6ecb5c6..fdca82d 100644 --- a/src/design-system/atoms/button/Button.styled.ts +++ b/src/design-system/atoms/button/Button.styled.ts @@ -1,8 +1,7 @@ import styled, { css } from 'styled-components'; -import { text400, text300 } from 'roleypoly/src/design-system/atoms/typography'; -import { fontCSS } from 'roleypoly/src/design-system/atoms/fonts'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { text400, text300 } from 'roleypoly/design-system/atoms/typography'; +import { fontCSS } from 'roleypoly/design-system/atoms/fonts'; +import { palette } from 'roleypoly/design-system/atoms/colors'; export const IconContainer = styled.div` margin-right: 0.6rem; diff --git a/src/design-system/atoms/colors/BUILD.bazel b/src/design-system/atoms/colors/BUILD.bazel deleted file mode 100644 index 2d86108..0000000 --- a/src/design-system/atoms/colors/BUILD.bazel +++ /dev/null @@ -1,11 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "colors", - deps = [ - "chroma-js", - "@types/chroma-js", - ], -) diff --git a/src/design-system/atoms/colors/colors.stories.tsx b/src/design-system/atoms/colors/colors.stories.tsx index e737d61..1b556f8 100644 --- a/src/design-system/atoms/colors/colors.stories.tsx +++ b/src/design-system/atoms/colors/colors.stories.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { palette } from './colors'; import styled from 'styled-components'; import chroma from 'chroma-js'; -import { AmbientSmall } from 'roleypoly/src/design-system/atoms/typography'; +import { AmbientSmall } from 'roleypoly/design-system/atoms/typography'; type RatioList = { color1: string[]; diff --git a/src/design-system/atoms/colors/colors.tsx b/src/design-system/atoms/colors/colors.tsx index a1ab54f..47c2995 100644 --- a/src/design-system/atoms/colors/colors.tsx +++ b/src/design-system/atoms/colors/colors.tsx @@ -1,5 +1,5 @@ import { css, createGlobalStyle } from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports + import chroma from 'chroma-js'; export const palette = { @@ -16,8 +16,10 @@ export const palette = { discord500: '#99AAB5', green400: '#46B646', + green200: '#1D8227', red400: '#E95353', + red200: '#F14343', gold400: '#EFCF24', diff --git a/src/design-system/atoms/dot-overlay/BUILD.bazel b/src/design-system/atoms/dot-overlay/BUILD.bazel deleted file mode 100644 index 211cd0e..0000000 --- a/src/design-system/atoms/dot-overlay/BUILD.bazel +++ /dev/null @@ -1,9 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "dot-overlay", - deps = [ - ], -) diff --git a/src/design-system/atoms/dot-overlay/DotOverlay.tsx b/src/design-system/atoms/dot-overlay/DotOverlay.tsx index a217c7a..ba1a50c 100644 --- a/src/design-system/atoms/dot-overlay/DotOverlay.tsx +++ b/src/design-system/atoms/dot-overlay/DotOverlay.tsx @@ -1,6 +1,5 @@ import styled from 'styled-components'; import * as React from 'react'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports const dotOverlayBase = styled.div` opacity: 0.6; diff --git a/src/design-system/atoms/fader/BUILD.bazel b/src/design-system/atoms/fader/BUILD.bazel deleted file mode 100644 index 7da25f7..0000000 --- a/src/design-system/atoms/fader/BUILD.bazel +++ /dev/null @@ -1,9 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "fader", - deps = [ - ], -) diff --git a/src/design-system/atoms/fader/Fader.stories.tsx b/src/design-system/atoms/fader/Fader.stories.tsx index d4b5692..6263e1d 100644 --- a/src/design-system/atoms/fader/Fader.stories.tsx +++ b/src/design-system/atoms/fader/Fader.stories.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { FaderOpacity, FaderSlide } from './Fader'; -import { Button } from 'roleypoly/src/design-system/atoms/button'; +import { Button } from 'roleypoly/design-system/atoms/button'; import { action } from '@storybook/addon-actions'; export default { diff --git a/src/design-system/atoms/fader/Fader.tsx b/src/design-system/atoms/fader/Fader.tsx index 9a475b5..78d5843 100644 --- a/src/design-system/atoms/fader/Fader.tsx +++ b/src/design-system/atoms/fader/Fader.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports export type FaderProps = { isVisible: boolean; diff --git a/src/design-system/atoms/fonts/BUILD.bazel b/src/design-system/atoms/fonts/BUILD.bazel deleted file mode 100644 index 7059d61..0000000 --- a/src/design-system/atoms/fonts/BUILD.bazel +++ /dev/null @@ -1,10 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "fonts", - deps = [ - "next", - ], -) diff --git a/src/design-system/atoms/fonts/fonts.stories.tsx b/src/design-system/atoms/fonts/fonts.stories.tsx index 19e12ea..f535c60 100644 --- a/src/design-system/atoms/fonts/fonts.stories.tsx +++ b/src/design-system/atoms/fonts/fonts.stories.tsx @@ -1,10 +1,7 @@ import * as React from 'react'; import { UseFontStyled } from './fonts'; import styled from 'styled-components'; -import { - MediumTitle, - Text as TextBlock, -} from 'roleypoly/src/design-system/atoms/typography'; +import { MediumTitle, Text as TextBlock } from 'roleypoly/design-system/atoms/typography'; const resetFont = (storyFn: () => React.ReactNode) => {storyFn()}; diff --git a/src/design-system/atoms/fonts/fonts.tsx b/src/design-system/atoms/fonts/fonts.tsx index 038d8ad..17bd959 100644 --- a/src/design-system/atoms/fonts/fonts.tsx +++ b/src/design-system/atoms/fonts/fonts.tsx @@ -1,7 +1,6 @@ import * as React from 'react'; import Head from 'next/head'; import styled, { css } from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports export const InjectTypekitFont = () => { React.useEffect(() => { diff --git a/src/design-system/atoms/halfsies/BUILD.bazel b/src/design-system/atoms/halfsies/BUILD.bazel deleted file mode 100644 index bab7b8f..0000000 --- a/src/design-system/atoms/halfsies/BUILD.bazel +++ /dev/null @@ -1,10 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "halfsies", - deps = [ - "//src/design-system/atoms/breakpoints", - ], -) diff --git a/src/design-system/atoms/halfsies/Halfsies.tsx b/src/design-system/atoms/halfsies/Halfsies.tsx index a41888b..f2c43df 100644 --- a/src/design-system/atoms/halfsies/Halfsies.tsx +++ b/src/design-system/atoms/halfsies/Halfsies.tsx @@ -1,6 +1,5 @@ import styled, { css } from 'styled-components'; -import { onTablet } from 'roleypoly/src/design-system/atoms/breakpoints'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { onTablet } from 'roleypoly/design-system/atoms/breakpoints'; export const HalfsiesContainer = styled.div` display: flex; diff --git a/src/design-system/atoms/hero/BUILD.bazel b/src/design-system/atoms/hero/BUILD.bazel deleted file mode 100644 index 88e990e..0000000 --- a/src/design-system/atoms/hero/BUILD.bazel +++ /dev/null @@ -1,9 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "hero", - deps = [ - ], -) diff --git a/src/design-system/atoms/hero/Hero.tsx b/src/design-system/atoms/hero/Hero.tsx index 8d22c9e..3e958ce 100644 --- a/src/design-system/atoms/hero/Hero.tsx +++ b/src/design-system/atoms/hero/Hero.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports type HeroContainerProps = { topSpacing: number; diff --git a/src/design-system/atoms/key-events/BUILD.bazel b/src/design-system/atoms/key-events/BUILD.bazel deleted file mode 100644 index 64616af..0000000 --- a/src/design-system/atoms/key-events/BUILD.bazel +++ /dev/null @@ -1,9 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "key-events", - deps = [ - ], -) diff --git a/src/design-system/atoms/popover/BUILD.bazel b/src/design-system/atoms/popover/BUILD.bazel deleted file mode 100644 index e430693..0000000 --- a/src/design-system/atoms/popover/BUILD.bazel +++ /dev/null @@ -1,14 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "popover", - deps = [ - "react-icons", - "//src/design-system/atoms/breakpoints", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/key-events", - "//src/design-system/atoms/timings", - ], -) diff --git a/src/design-system/atoms/popover/Popover.stories.tsx b/src/design-system/atoms/popover/Popover.stories.tsx index ae66491..b873cf0 100644 --- a/src/design-system/atoms/popover/Popover.stories.tsx +++ b/src/design-system/atoms/popover/Popover.stories.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Button } from 'roleypoly/src/design-system/atoms/button'; +import { Button } from 'roleypoly/design-system/atoms/button'; import { Popover as PopoverComponent } from './Popover'; export default { diff --git a/src/design-system/atoms/popover/Popover.styled.ts b/src/design-system/atoms/popover/Popover.styled.ts index cb1ba7e..ffc7509 100644 --- a/src/design-system/atoms/popover/Popover.styled.ts +++ b/src/design-system/atoms/popover/Popover.styled.ts @@ -1,8 +1,7 @@ -import { onSmallScreen, onTablet } from 'roleypoly/src/design-system/atoms/breakpoints'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import { transitions } from 'roleypoly/src/design-system/atoms/timings'; +import { onSmallScreen, onTablet } from 'roleypoly/design-system/atoms/breakpoints'; +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { transitions } from 'roleypoly/design-system/atoms/timings'; import styled, { css } from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports type PopoverStyledProps = { active: boolean; diff --git a/src/design-system/atoms/popover/Popover.tsx b/src/design-system/atoms/popover/Popover.tsx index 1596801..1b48053 100644 --- a/src/design-system/atoms/popover/Popover.tsx +++ b/src/design-system/atoms/popover/Popover.tsx @@ -6,7 +6,7 @@ import { PopoverHeadCloser, PopoverContent, } from './Popover.styled'; -import { globalOnKeyUp } from 'roleypoly/src/design-system/atoms/key-events'; +import { globalOnKeyUp } from 'roleypoly/design-system/atoms/key-events'; import { IoMdClose } from 'react-icons/io'; type PopoverProps = { diff --git a/src/design-system/atoms/role/BUILD.bazel b/src/design-system/atoms/role/BUILD.bazel deleted file mode 100644 index c5f8396..0000000 --- a/src/design-system/atoms/role/BUILD.bazel +++ /dev/null @@ -1,24 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") -load("//hack/bazel/js:jest.bzl", "jest_test") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "role", - deps = [ - "chroma-js", - "react-icons", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/timings", - "//src/design-system/shared-types", - "//src/rpc/shared", - "@types/chroma-js", - ], -) - -jest_test( - src = ":role", - deps = [ - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/atoms/role/Role.spec.tsx b/src/design-system/atoms/role/Role.spec.tsx index c0343a7..5660efe 100644 --- a/src/design-system/atoms/role/Role.spec.tsx +++ b/src/design-system/atoms/role/Role.spec.tsx @@ -1,5 +1,5 @@ import { shallow } from 'enzyme'; -import { roleCategory } from 'roleypoly/src/design-system/shared-types/storyData'; +import { roleCategory } from 'roleypoly/common/types/storyData'; import * as React from 'react'; import { Role } from './Role'; diff --git a/src/design-system/atoms/role/Role.stories.tsx b/src/design-system/atoms/role/Role.stories.tsx index 6b1e0ed..870e1cf 100644 --- a/src/design-system/atoms/role/Role.stories.tsx +++ b/src/design-system/atoms/role/Role.stories.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { Role as RoleComponent } from './Role'; -import { roleCategory } from '../../shared-types/storyData'; -import { withColors } from 'roleypoly/src/design-system/atoms/colors/withColors'; +import { roleCategory } from 'roleypoly/common/types/storyData'; +import { withColors } from 'roleypoly/design-system/atoms/colors/withColors'; import styled from 'styled-components'; export default { diff --git a/src/design-system/atoms/role/Role.styled.tsx b/src/design-system/atoms/role/Role.styled.tsx index 48de2b7..159e35b 100644 --- a/src/design-system/atoms/role/Role.styled.tsx +++ b/src/design-system/atoms/role/Role.styled.tsx @@ -1,7 +1,6 @@ import styled, { css } from 'styled-components'; -import { transitions } from 'roleypoly/src/design-system/atoms/timings'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { transitions } from 'roleypoly/design-system/atoms/timings'; +import { palette } from 'roleypoly/design-system/atoms/colors'; export type StyledProps = { selected: boolean; diff --git a/src/design-system/atoms/role/Role.tsx b/src/design-system/atoms/role/Role.tsx index d0e52b8..637ebec 100644 --- a/src/design-system/atoms/role/Role.tsx +++ b/src/design-system/atoms/role/Role.tsx @@ -1,8 +1,8 @@ import * as React from 'react'; -import { Role as RPCRole, RoleSafety } from '../../shared-types'; +import { Role as RPCRole, RoleSafety } from 'roleypoly/common/types'; import * as styled from './Role.styled'; import { FaCheck, FaTimes } from 'react-icons/fa'; -import { numberToChroma } from 'roleypoly/src/design-system/atoms/colors'; +import { numberToChroma } from 'roleypoly/design-system/atoms/colors'; import chroma from 'chroma-js'; type Props = { diff --git a/src/design-system/atoms/space/BUILD.bazel b/src/design-system/atoms/space/BUILD.bazel deleted file mode 100644 index c089858..0000000 --- a/src/design-system/atoms/space/BUILD.bazel +++ /dev/null @@ -1,9 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "space", - deps = [ - ], -) diff --git a/src/design-system/atoms/space/Space.tsx b/src/design-system/atoms/space/Space.tsx index 147e85a..7c7df4a 100644 --- a/src/design-system/atoms/space/Space.tsx +++ b/src/design-system/atoms/space/Space.tsx @@ -1,5 +1,4 @@ import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports export const Space = styled.div` height: 15px; diff --git a/src/design-system/atoms/sparkle/BUILD.bazel b/src/design-system/atoms/sparkle/BUILD.bazel deleted file mode 100644 index 4e19348..0000000 --- a/src/design-system/atoms/sparkle/BUILD.bazel +++ /dev/null @@ -1,10 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "sparkle", - deps = [ - "//src/design-system/atoms/colors", - ], -) diff --git a/src/design-system/atoms/sparkle/Shapes.tsx b/src/design-system/atoms/sparkle/Shapes.tsx index 5cebe02..10bb19a 100644 --- a/src/design-system/atoms/sparkle/Shapes.tsx +++ b/src/design-system/atoms/sparkle/Shapes.tsx @@ -49,7 +49,7 @@ const Animation = (props: SparkleProps) => ( const SparkleCircle = (props: SparkleProps) => ( - + @@ -62,7 +62,7 @@ const SparkleStar = (props: SparkleProps) => ( ( diff --git a/src/design-system/atoms/sparkle/Sparkle.stories.tsx b/src/design-system/atoms/sparkle/Sparkle.stories.tsx index 91d688b..4c6d6e1 100644 --- a/src/design-system/atoms/sparkle/Sparkle.stories.tsx +++ b/src/design-system/atoms/sparkle/Sparkle.stories.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { SparkleOverlay } from './Sparkle'; -import { Button } from 'roleypoly/src/design-system/atoms/button'; -import { Hero } from 'roleypoly/src/design-system/atoms/hero'; +import { Button } from 'roleypoly/design-system/atoms/button'; +import { Hero } from 'roleypoly/design-system/atoms/hero'; export default { title: 'Atoms/Sparkle', diff --git a/src/design-system/atoms/sparkle/Sparkle.tsx b/src/design-system/atoms/sparkle/Sparkle.tsx index 0e76715..6241247 100644 --- a/src/design-system/atoms/sparkle/Sparkle.tsx +++ b/src/design-system/atoms/sparkle/Sparkle.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import styled from 'styled-components'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { palette } from 'roleypoly/design-system/atoms/colors'; + import { SparklePatternAlpha, SparklePatternBeta } from './Shapes'; type Props = { @@ -9,6 +9,7 @@ type Props = { size?: number; opacity?: number; repeatCount?: number; + strokeColor?: string; }; const SparkleContainer = styled.div` @@ -33,18 +34,18 @@ const SparkleEffect = styled.div` pointer-events: none; `; -export const SparkleOverlay = (props: Props) => ( +export const SparkleOverlay = ({ strokeColor = palette.gold400, ...props }: Props) => ( {props.children} diff --git a/src/design-system/atoms/tab-view/BUILD.bazel b/src/design-system/atoms/tab-view/BUILD.bazel deleted file mode 100644 index a30edaa..0000000 --- a/src/design-system/atoms/tab-view/BUILD.bazel +++ /dev/null @@ -1,17 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") -load("//hack/bazel/js:jest.bzl", "jest_test") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "tab-view", - deps = [ - "//src/design-system/atoms/breakpoints", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/timings", - ], -) - -jest_test( - src = ":tab-view", -) diff --git a/src/design-system/atoms/tab-view/TabView.styled.ts b/src/design-system/atoms/tab-view/TabView.styled.ts index 06763b3..b2051aa 100644 --- a/src/design-system/atoms/tab-view/TabView.styled.ts +++ b/src/design-system/atoms/tab-view/TabView.styled.ts @@ -1,8 +1,7 @@ import styled, { css } from 'styled-components'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import { transitions } from 'roleypoly/src/design-system/atoms/timings'; -import { onTablet } from 'roleypoly/src/design-system/atoms/breakpoints'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { transitions } from 'roleypoly/design-system/atoms/timings'; +import { onTablet } from 'roleypoly/design-system/atoms/breakpoints'; export const TabViewStyled = styled.div``; diff --git a/src/design-system/atoms/text-input/BUILD.bazel b/src/design-system/atoms/text-input/BUILD.bazel deleted file mode 100644 index d7e1568..0000000 --- a/src/design-system/atoms/text-input/BUILD.bazel +++ /dev/null @@ -1,10 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "text-input", - deps = [ - "//src/design-system/atoms/colors", - ], -) diff --git a/src/design-system/atoms/text-input/TextInput.stories.tsx b/src/design-system/atoms/text-input/TextInput.stories.tsx index da337cb..46d3496 100644 --- a/src/design-system/atoms/text-input/TextInput.stories.tsx +++ b/src/design-system/atoms/text-input/TextInput.stories.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { TextInput, TextInputWithIcon } from './TextInput'; -import { SmallTitle } from 'roleypoly/src/design-system/atoms/typography'; +import { SmallTitle } from 'roleypoly/design-system/atoms/typography'; import { FiKey } from 'react-icons/fi'; export default { diff --git a/src/design-system/atoms/text-input/TextInput.tsx b/src/design-system/atoms/text-input/TextInput.tsx index fc0adbc..989c493 100644 --- a/src/design-system/atoms/text-input/TextInput.tsx +++ b/src/design-system/atoms/text-input/TextInput.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import styled from 'styled-components'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; +import { palette } from 'roleypoly/design-system/atoms/colors'; const StyledTextInput = styled.input` appearance: none; diff --git a/src/design-system/atoms/timings/BUILD.bazel b/src/design-system/atoms/timings/BUILD.bazel deleted file mode 100644 index f580ebe..0000000 --- a/src/design-system/atoms/timings/BUILD.bazel +++ /dev/null @@ -1,7 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "timings", -) diff --git a/src/design-system/atoms/typist/BUILD.bazel b/src/design-system/atoms/typist/BUILD.bazel deleted file mode 100644 index 27d1004..0000000 --- a/src/design-system/atoms/typist/BUILD.bazel +++ /dev/null @@ -1,14 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") -load("//hack/bazel/js:jest.bzl", "jest_test") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "typist", - deps = [ - ], -) - -jest_test( - src = ":typist", -) diff --git a/src/design-system/atoms/typography/BUILD.bazel b/src/design-system/atoms/typography/BUILD.bazel deleted file mode 100644 index 16e9073..0000000 --- a/src/design-system/atoms/typography/BUILD.bazel +++ /dev/null @@ -1,11 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "typography", - deps = [ - "//src/design-system/atoms/colors", - "//src/design-system/atoms/timings", - ], -) diff --git a/src/design-system/atoms/typography/mdx.tsx b/src/design-system/atoms/typography/mdx.tsx index b57da2d..6ee2042 100644 --- a/src/design-system/atoms/typography/mdx.tsx +++ b/src/design-system/atoms/typography/mdx.tsx @@ -1,5 +1,5 @@ import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports + import { Link, Text, text600, text700, text800, text900 } from './typography'; export const mdxComponents = { diff --git a/src/design-system/atoms/typography/typography.tsx b/src/design-system/atoms/typography/typography.tsx index c0e47ea..ad7563a 100644 --- a/src/design-system/atoms/typography/typography.tsx +++ b/src/design-system/atoms/typography/typography.tsx @@ -1,7 +1,6 @@ import styled, { css } from 'styled-components'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import { transitions } from 'roleypoly/src/design-system/atoms/timings'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { transitions } from 'roleypoly/design-system/atoms/timings'; const reset = css` margin: 0; diff --git a/src/design-system/molecules/demo-discord/BUILD.bazel b/src/design-system/molecules/demo-discord/BUILD.bazel deleted file mode 100644 index a4d2f8b..0000000 --- a/src/design-system/molecules/demo-discord/BUILD.bazel +++ /dev/null @@ -1,12 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "demo-discord", - deps = [ - "//src/design-system/atoms/colors", - "//src/design-system/atoms/typist", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/molecules/demo-discord/DemoDiscord.styled.ts b/src/design-system/molecules/demo-discord/DemoDiscord.styled.ts index 3609647..38c31fe 100644 --- a/src/design-system/molecules/demo-discord/DemoDiscord.styled.ts +++ b/src/design-system/molecules/demo-discord/DemoDiscord.styled.ts @@ -1,6 +1,6 @@ import styled, { keyframes } from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports -import { palette } from 'roleypoly/src/design-system/atoms/colors'; + +import { palette } from 'roleypoly/design-system/atoms/colors'; export const Base = styled.div` background-color: ${palette.discord100}; diff --git a/src/design-system/molecules/demo-discord/DemoDiscord.tsx b/src/design-system/molecules/demo-discord/DemoDiscord.tsx index c3b7139..2a4245e 100644 --- a/src/design-system/molecules/demo-discord/DemoDiscord.tsx +++ b/src/design-system/molecules/demo-discord/DemoDiscord.tsx @@ -8,8 +8,8 @@ import { Line, InputTextAlignment, } from './DemoDiscord.styled'; -import { demoData } from 'roleypoly/src/design-system/shared-types/demoData'; -import { Typist } from 'roleypoly/src/design-system/atoms/typist'; +import { demoData } from 'roleypoly/common/types/demoData'; +import { Typist } from 'roleypoly/design-system/atoms/typist'; export const DemoDiscord = () => { const time = new Date(); diff --git a/src/design-system/molecules/demo-picker/BUILD.bazel b/src/design-system/molecules/demo-picker/BUILD.bazel deleted file mode 100644 index 597c3bc..0000000 --- a/src/design-system/molecules/demo-picker/BUILD.bazel +++ /dev/null @@ -1,11 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "demo-picker", - deps = [ - "//src/design-system/atoms/role", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/molecules/demo-picker/DemoPicker.tsx b/src/design-system/molecules/demo-picker/DemoPicker.tsx index a4b502a..63262da 100644 --- a/src/design-system/molecules/demo-picker/DemoPicker.tsx +++ b/src/design-system/molecules/demo-picker/DemoPicker.tsx @@ -1,8 +1,8 @@ import * as React from 'react'; -import { Role } from 'roleypoly/src/design-system/atoms/role'; -import { Role as RPCRole } from 'roleypoly/src/design-system/shared-types'; +import { Role } from 'roleypoly/design-system/atoms/role'; +import { Role as RPCRole } from 'roleypoly/common/types'; import styled from 'styled-components'; -import { demoData } from 'roleypoly/src/design-system/shared-types/demoData'; +import { demoData } from 'roleypoly/common/types/demoData'; const Container = styled.div` display: flex; diff --git a/src/design-system/molecules/error-banner/BUILD.bazel b/src/design-system/molecules/error-banner/BUILD.bazel deleted file mode 100644 index 69f8c40..0000000 --- a/src/design-system/molecules/error-banner/BUILD.bazel +++ /dev/null @@ -1,12 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "error-banner", - deps = [ - "//src/design-system/atoms/breakpoints", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/typography", - ], -) diff --git a/src/design-system/molecules/error-banner/ErrorBanner.styled.ts b/src/design-system/molecules/error-banner/ErrorBanner.styled.ts index 4b61f3c..689d978 100644 --- a/src/design-system/molecules/error-banner/ErrorBanner.styled.ts +++ b/src/design-system/molecules/error-banner/ErrorBanner.styled.ts @@ -1,7 +1,6 @@ -import { onSmallScreen } from 'roleypoly/src/design-system/atoms/breakpoints'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import { text300, text500, text700 } from 'roleypoly/src/design-system/atoms/typography'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { onSmallScreen } from 'roleypoly/design-system/atoms/breakpoints'; +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { text300, text500, text700 } from 'roleypoly/design-system/atoms/typography'; import styled, { css } from 'styled-components'; export const ErrorWrapper = styled.div` diff --git a/src/design-system/molecules/footer/BUILD.bazel b/src/design-system/molecules/footer/BUILD.bazel deleted file mode 100644 index 0082eb4..0000000 --- a/src/design-system/molecules/footer/BUILD.bazel +++ /dev/null @@ -1,13 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "footer", - deps = [ - "react-icons", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/timings", - "//src/design-system/atoms/typography", - ], -) diff --git a/src/design-system/molecules/footer/Footer.styled.ts b/src/design-system/molecules/footer/Footer.styled.ts index 96a0c92..d5d1cc8 100644 --- a/src/design-system/molecules/footer/Footer.styled.ts +++ b/src/design-system/molecules/footer/Footer.styled.ts @@ -1,7 +1,7 @@ import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import { transitions } from 'roleypoly/src/design-system/atoms/timings'; + +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { transitions } from 'roleypoly/design-system/atoms/timings'; export const FooterWrapper = styled.div` display: flex; diff --git a/src/design-system/molecules/footer/Footer.tsx b/src/design-system/molecules/footer/Footer.tsx index 14d520a..790321f 100644 --- a/src/design-system/molecules/footer/Footer.tsx +++ b/src/design-system/molecules/footer/Footer.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { FooterWrapper, HoverColor } from './Footer.styled'; -import { AmbientLarge } from 'roleypoly/src/design-system/atoms/typography'; +import { AmbientLarge } from 'roleypoly/design-system/atoms/typography'; import { FaHeart } from 'react-icons/fa'; import { Flags } from './Flags'; diff --git a/src/design-system/molecules/guild-nav/BUILD.bazel b/src/design-system/molecules/guild-nav/BUILD.bazel deleted file mode 100644 index f5b862d..0000000 --- a/src/design-system/molecules/guild-nav/BUILD.bazel +++ /dev/null @@ -1,17 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "guild-nav", - deps = [ - "next", - "react-icons", - "react-tooltip", - "//src/common/utils", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/timings", - "//src/design-system/molecules/nav-slug", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/molecules/guild-nav/GuildNav.stories.tsx b/src/design-system/molecules/guild-nav/GuildNav.stories.tsx index 67dfc67..9262f69 100644 --- a/src/design-system/molecules/guild-nav/GuildNav.stories.tsx +++ b/src/design-system/molecules/guild-nav/GuildNav.stories.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { GuildNav } from './GuildNav'; -import { guildEnum } from 'roleypoly/src/design-system/shared-types/storyData'; -import { PopoverBase } from 'roleypoly/src/design-system/atoms/popover/Popover.styled'; +import { guildEnum } from 'roleypoly/common/types/storyData'; +import { PopoverBase } from 'roleypoly/design-system/atoms/popover/Popover.styled'; export default { title: 'Molecules/Guild Nav', diff --git a/src/design-system/molecules/guild-nav/GuildNav.styled.ts b/src/design-system/molecules/guild-nav/GuildNav.styled.ts index 0306e83..cce3a63 100644 --- a/src/design-system/molecules/guild-nav/GuildNav.styled.ts +++ b/src/design-system/molecules/guild-nav/GuildNav.styled.ts @@ -1,7 +1,7 @@ import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports -import { transitions } from 'roleypoly/src/design-system/atoms/timings'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; + +import { transitions } from 'roleypoly/design-system/atoms/timings'; +import { palette } from 'roleypoly/design-system/atoms/colors'; export const GuildNavItem = styled.a` display: flex; diff --git a/src/design-system/molecules/guild-nav/GuildNav.tsx b/src/design-system/molecules/guild-nav/GuildNav.tsx index c24d6ed..133bb2b 100644 --- a/src/design-system/molecules/guild-nav/GuildNav.tsx +++ b/src/design-system/molecules/guild-nav/GuildNav.tsx @@ -2,56 +2,37 @@ import Link from 'next/link'; import * as React from 'react'; import { GoStar, GoZap } from 'react-icons/go'; import ReactTooltip from 'react-tooltip'; -import { hasPermission, permissions } from 'roleypoly/src/common/utils/hasPermission'; -import { sortBy } from 'roleypoly/src/common/utils/sortBy'; -import { - GuildEnumeration, - PresentableGuild, - Role, -} from 'roleypoly/src/design-system/shared-types'; -import { NavSlug } from 'roleypoly/src/design-system/molecules/nav-slug'; +import { GuildSlug, UserGuildPermissions } from 'roleypoly/common/types'; +import { sortBy } from 'roleypoly/common/utils/sortBy'; +import { NavSlug } from 'roleypoly/design-system/molecules/nav-slug'; import { GuildNavItem } from './GuildNav.styled'; type Props = { - guildEnumeration: GuildEnumeration; + guilds: GuildSlug[]; }; const tooltipId = 'guildnav'; -const Badges = (props: { guild: PresentableGuild }) => { +const Badges = (props: { guild: GuildSlug }) => { return React.useMemo(() => { - if (!props.guild.member) { - return null; - } - - const roles = props.guild.member.rolesList - .map((id) => { - if (!props.guild.roles) { - return undefined; - } - - return props.guild.roles.rolesList.find((role) => role.id === id); - }) - .filter((x) => !!x) as Role[]; - - if (hasPermission(roles, permissions.ADMINISTRATOR)) { + if (props.guild.permissionLevel === UserGuildPermissions.Admin) { return ; } - if (hasPermission(roles, permissions.MANAGE_ROLES)) { + if (props.guild.permissionLevel === UserGuildPermissions.Manager) { return ; } return null; - }, [props.guild]); + }, [props.guild.permissionLevel]); }; export const GuildNav = (props: Props) => (
- {sortBy(props.guildEnumeration.guildsList, 'id').map((guild) => ( + {sortBy(props.guilds, 'id').map((guild) => ( - + diff --git a/src/design-system/molecules/help-page-base/HelpPageBase.tsx b/src/design-system/molecules/help-page-base/HelpPageBase.tsx index ae99069..1a5a068 100644 --- a/src/design-system/molecules/help-page-base/HelpPageBase.tsx +++ b/src/design-system/molecules/help-page-base/HelpPageBase.tsx @@ -1,7 +1,6 @@ import * as React from 'react'; import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports -import { palette } from 'roleypoly/src/design-system/atoms/colors'; +import { palette } from 'roleypoly/design-system/atoms/colors'; export type HelpPageProps = { children: React.ReactNode; diff --git a/src/design-system/molecules/help-page-base/storyDecorator.tsx b/src/design-system/molecules/help-page-base/storyDecorator.tsx index a3f6ffa..6728b8a 100644 --- a/src/design-system/molecules/help-page-base/storyDecorator.tsx +++ b/src/design-system/molecules/help-page-base/storyDecorator.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { HelpPageBase } from './HelpPageBase'; -import { Content } from 'roleypoly/src/design-system/organisms/app-shell/AppShell.styled'; +import { Content } from 'roleypoly/design-system/organisms/app-shell/AppShell.styled'; export const HelpStoryWrapper = (storyFn: any): React.ReactNode => ( diff --git a/src/design-system/molecules/nav-slug/BUILD.bazel b/src/design-system/molecules/nav-slug/BUILD.bazel deleted file mode 100644 index 8ea9132..0000000 --- a/src/design-system/molecules/nav-slug/BUILD.bazel +++ /dev/null @@ -1,12 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "nav-slug", - deps = [ - "react-icons", - "//src/design-system/atoms/avatar", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/molecules/nav-slug/NavSlug.stories.tsx b/src/design-system/molecules/nav-slug/NavSlug.stories.tsx index 7474f82..b87ad6f 100644 --- a/src/design-system/molecules/nav-slug/NavSlug.stories.tsx +++ b/src/design-system/molecules/nav-slug/NavSlug.stories.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { NavSlug } from './NavSlug'; -import { guild } from 'roleypoly/src/design-system/shared-types/storyData'; +import { guild } from 'roleypoly/common/types/storyData'; export default { title: 'Molecules/Server Slug', diff --git a/src/design-system/molecules/nav-slug/NavSlug.styled.ts b/src/design-system/molecules/nav-slug/NavSlug.styled.ts index 90eb6c0..d1908c0 100644 --- a/src/design-system/molecules/nav-slug/NavSlug.styled.ts +++ b/src/design-system/molecules/nav-slug/NavSlug.styled.ts @@ -1,5 +1,4 @@ import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports export const SlugContainer = styled.div` display: flex; diff --git a/src/design-system/molecules/nav-slug/NavSlug.tsx b/src/design-system/molecules/nav-slug/NavSlug.tsx index e91782e..c7dafa5 100644 --- a/src/design-system/molecules/nav-slug/NavSlug.tsx +++ b/src/design-system/molecules/nav-slug/NavSlug.tsx @@ -1,16 +1,23 @@ import * as React from 'react'; -import { Guild } from 'roleypoly/src/design-system/shared-types'; -import { Avatar, utils } from 'roleypoly/src/design-system/atoms/avatar'; -import { SlugContainer, SlugName } from './NavSlug.styled'; import { GoOrganization } from 'react-icons/go'; +import { GuildSlug } from 'roleypoly/common/types'; +import { Avatar, utils } from 'roleypoly/design-system/atoms/avatar'; +import { SlugContainer, SlugName } from './NavSlug.styled'; type Props = { - guild: Guild | null; + guild: GuildSlug | null; }; export const NavSlug = (props: Props) => ( - + {props.guild ? utils.initialsFromName(props.guild.name) : } {props.guild?.name || <>Your Guilds} diff --git a/src/design-system/molecules/picker-category/BUILD.bazel b/src/design-system/molecules/picker-category/BUILD.bazel deleted file mode 100644 index 0898466..0000000 --- a/src/design-system/molecules/picker-category/BUILD.bazel +++ /dev/null @@ -1,13 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "picker-category", - deps = [ - "react-tooltip", - "//src/design-system/atoms/role", - "//src/design-system/atoms/typography", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/molecules/picker-category/PickerCategory.stories.tsx b/src/design-system/molecules/picker-category/PickerCategory.stories.tsx index db8cb3b..08cf7e5 100644 --- a/src/design-system/molecules/picker-category/PickerCategory.stories.tsx +++ b/src/design-system/molecules/picker-category/PickerCategory.stories.tsx @@ -3,7 +3,7 @@ import { roleWikiData, roleCategory, mockCategory, -} from 'roleypoly/src/design-system/shared-types/storyData'; +} from 'roleypoly/common/types/storyData'; import { PickerCategory } from './PickerCategory'; export default { diff --git a/src/design-system/molecules/picker-category/PickerCategory.styled.tsx b/src/design-system/molecules/picker-category/PickerCategory.styled.tsx index 460af69..6c006d5 100644 --- a/src/design-system/molecules/picker-category/PickerCategory.styled.tsx +++ b/src/design-system/molecules/picker-category/PickerCategory.styled.tsx @@ -1,5 +1,4 @@ import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports export const Head = styled.div` margin: 7px 5px; diff --git a/src/design-system/molecules/picker-category/PickerCategory.tsx b/src/design-system/molecules/picker-category/PickerCategory.tsx index 4100399..06b3842 100644 --- a/src/design-system/molecules/picker-category/PickerCategory.tsx +++ b/src/design-system/molecules/picker-category/PickerCategory.tsx @@ -1,12 +1,12 @@ import * as React from 'react'; import ReactTooltip from 'react-tooltip'; -import { Role } from 'roleypoly/src/design-system/atoms/role'; -import { AmbientLarge, LargeText } from 'roleypoly/src/design-system/atoms/typography'; +import { Role } from 'roleypoly/design-system/atoms/role'; +import { AmbientLarge, LargeText } from 'roleypoly/design-system/atoms/typography'; import { Category as RPCCategory, Role as RPCRole, RoleSafety, -} from 'roleypoly/src/design-system/shared-types'; +} from 'roleypoly/common/types'; import styled from 'styled-components'; import { Head, HeadSub, HeadTitle } from './PickerCategory.styled'; diff --git a/src/design-system/molecules/preauth-greeting/BUILD.bazel b/src/design-system/molecules/preauth-greeting/BUILD.bazel deleted file mode 100644 index 6bf8692..0000000 --- a/src/design-system/molecules/preauth-greeting/BUILD.bazel +++ /dev/null @@ -1,13 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "preauth-greeting", - deps = [ - "//src/design-system/atoms/avatar", - "//src/design-system/atoms/space", - "//src/design-system/atoms/typography", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/molecules/preauth-greeting/PreauthGreeting.stories.tsx b/src/design-system/molecules/preauth-greeting/PreauthGreeting.stories.tsx index de44434..4cbefbd 100644 --- a/src/design-system/molecules/preauth-greeting/PreauthGreeting.stories.tsx +++ b/src/design-system/molecules/preauth-greeting/PreauthGreeting.stories.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { PreauthGreeting } from './PreauthGreeting'; -import { guild } from 'roleypoly/src/design-system/shared-types/storyData'; +import { guild } from 'roleypoly/common/types/storyData'; export default { title: 'Molecules/Preauth/Greeting', diff --git a/src/design-system/molecules/preauth-greeting/PreauthGreeting.tsx b/src/design-system/molecules/preauth-greeting/PreauthGreeting.tsx index cd42273..a4bc52d 100644 --- a/src/design-system/molecules/preauth-greeting/PreauthGreeting.tsx +++ b/src/design-system/molecules/preauth-greeting/PreauthGreeting.tsx @@ -1,8 +1,8 @@ import * as React from 'react'; -import { Avatar, utils as avatarUtils } from 'roleypoly/src/design-system/atoms/avatar'; -import { Guild } from 'roleypoly/src/design-system/shared-types'; -import { AccentTitle } from 'roleypoly/src/design-system/atoms/typography'; -import { Space } from 'roleypoly/src/design-system/atoms/space'; +import { Avatar, utils as avatarUtils } from 'roleypoly/design-system/atoms/avatar'; +import { Guild } from 'roleypoly/common/types'; +import { AccentTitle } from 'roleypoly/design-system/atoms/typography'; +import { Space } from 'roleypoly/design-system/atoms/space'; import styled from 'styled-components'; type GreetingProps = { diff --git a/src/design-system/molecules/preauth-secret-code/BUILD.bazel b/src/design-system/molecules/preauth-secret-code/BUILD.bazel deleted file mode 100644 index c1986da..0000000 --- a/src/design-system/molecules/preauth-secret-code/BUILD.bazel +++ /dev/null @@ -1,25 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") -load("//hack/bazel/js:jest.bzl", "jest_test") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "preauth-secret-code", - deps = [ - "react-icons", - "//src/design-system/atoms/button", - "//src/design-system/atoms/fader", - "//src/design-system/atoms/space", - "//src/design-system/atoms/text-input", - "//src/design-system/shared-types", - ], -) - -jest_test( - src = ":preauth-secret-code", - deps = [ - "//src/design-system/atoms/button", - "//src/design-system/atoms/fader", - "//src/design-system/atoms/text-input", - ], -) diff --git a/src/design-system/molecules/preauth-secret-code/PreauthSecretCode.spec.tsx b/src/design-system/molecules/preauth-secret-code/PreauthSecretCode.spec.tsx index 4ffab17..e9098a1 100644 --- a/src/design-system/molecules/preauth-secret-code/PreauthSecretCode.spec.tsx +++ b/src/design-system/molecules/preauth-secret-code/PreauthSecretCode.spec.tsx @@ -1,12 +1,12 @@ -jest.unmock('roleypoly/src/design-system/atoms/text-input'); +jest.unmock('roleypoly/design-system/atoms/text-input'); jest.unmock('./PreauthSecretCode'); -import { Button } from 'roleypoly/src/design-system/atoms/button'; -import { TextInputWithIcon } from 'roleypoly/src/design-system/atoms/text-input'; +import { Button } from 'roleypoly/design-system/atoms/button'; +import { TextInputWithIcon } from 'roleypoly/design-system/atoms/text-input'; import { shallow } from 'enzyme'; import * as React from 'react'; import { PreauthSecretCode } from './PreauthSecretCode'; -import { FaderOpacity } from 'roleypoly/src/design-system/atoms/fader'; +import { FaderOpacity } from 'roleypoly/design-system/atoms/fader'; const value = 'unfathomable fishy sticks'; const onSubmit = jest.fn(); diff --git a/src/design-system/molecules/preauth-secret-code/PreauthSecretCode.tsx b/src/design-system/molecules/preauth-secret-code/PreauthSecretCode.tsx index f55bec4..83902c5 100644 --- a/src/design-system/molecules/preauth-secret-code/PreauthSecretCode.tsx +++ b/src/design-system/molecules/preauth-secret-code/PreauthSecretCode.tsx @@ -1,9 +1,9 @@ import * as React from 'react'; -import { TextInputWithIcon } from 'roleypoly/src/design-system/atoms/text-input'; +import { TextInputWithIcon } from 'roleypoly/design-system/atoms/text-input'; import { FiKey } from 'react-icons/fi'; -import { FaderOpacity } from 'roleypoly/src/design-system/atoms/fader'; -import { Button } from 'roleypoly/src/design-system/atoms/button'; -import { Space } from 'roleypoly/src/design-system/atoms/space'; +import { FaderOpacity } from 'roleypoly/design-system/atoms/fader'; +import { Button } from 'roleypoly/design-system/atoms/button'; +import { Space } from 'roleypoly/design-system/atoms/space'; type PreauthProps = { onSubmit: (code: string) => void; diff --git a/src/design-system/molecules/reset-submit/BUILD.bazel b/src/design-system/molecules/reset-submit/BUILD.bazel deleted file mode 100644 index a3cfbc0..0000000 --- a/src/design-system/molecules/reset-submit/BUILD.bazel +++ /dev/null @@ -1,20 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") -load("//hack/bazel/js:jest.bzl", "jest_test") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "reset-submit", - deps = [ - "react-icons", - "//src/design-system/atoms/breakpoints", - "//src/design-system/atoms/button", - ], -) - -jest_test( - src = ":reset-submit", - deps = [ - "//src/design-system/atoms/button", - ], -) diff --git a/src/design-system/molecules/reset-submit/ResetSubmit.spec.tsx b/src/design-system/molecules/reset-submit/ResetSubmit.spec.tsx index 5129df2..c507ed6 100644 --- a/src/design-system/molecules/reset-submit/ResetSubmit.spec.tsx +++ b/src/design-system/molecules/reset-submit/ResetSubmit.spec.tsx @@ -1,4 +1,4 @@ -import { Button } from 'roleypoly/src/design-system/atoms/button'; +import { Button } from 'roleypoly/design-system/atoms/button'; import { shallow } from 'enzyme'; import * as React from 'react'; import { ResetSubmit } from './ResetSubmit'; diff --git a/src/design-system/molecules/reset-submit/ResetSubmit.styled.ts b/src/design-system/molecules/reset-submit/ResetSubmit.styled.ts index dee0a06..00ab0a8 100644 --- a/src/design-system/molecules/reset-submit/ResetSubmit.styled.ts +++ b/src/design-system/molecules/reset-submit/ResetSubmit.styled.ts @@ -1,6 +1,6 @@ import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports -import { onSmallScreen } from 'roleypoly/src/design-system/atoms/breakpoints'; + +import { onSmallScreen } from 'roleypoly/design-system/atoms/breakpoints'; export const Buttons = styled.div` display: flex; diff --git a/src/design-system/molecules/reset-submit/ResetSubmit.tsx b/src/design-system/molecules/reset-submit/ResetSubmit.tsx index 7d2499c..ce392a9 100644 --- a/src/design-system/molecules/reset-submit/ResetSubmit.tsx +++ b/src/design-system/molecules/reset-submit/ResetSubmit.tsx @@ -1,5 +1,5 @@ -import { onSmallScreen } from 'roleypoly/src/design-system/atoms/breakpoints'; -import { Button } from 'roleypoly/src/design-system/atoms/button'; +import { onSmallScreen } from 'roleypoly/design-system/atoms/breakpoints'; +import { Button } from 'roleypoly/design-system/atoms/button'; import * as React from 'react'; import { MdRestore } from 'react-icons/md'; import styled from 'styled-components'; diff --git a/src/design-system/molecules/server-masthead/BUILD.bazel b/src/design-system/molecules/server-masthead/BUILD.bazel deleted file mode 100644 index 9711a0d..0000000 --- a/src/design-system/molecules/server-masthead/BUILD.bazel +++ /dev/null @@ -1,24 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") -load("//hack/bazel/js:jest.bzl", "jest_test") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "server-masthead", - deps = [ - "next", - "react-icons", - "//src/design-system/atoms/avatar", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/timings", - "//src/design-system/atoms/typography", - "//src/design-system/shared-types", - ], -) - -jest_test( - src = ":server-masthead", - deps = [ - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/molecules/server-masthead/ServerMasthead.spec.tsx b/src/design-system/molecules/server-masthead/ServerMasthead.spec.tsx index 961c782..23ac421 100644 --- a/src/design-system/molecules/server-masthead/ServerMasthead.spec.tsx +++ b/src/design-system/molecules/server-masthead/ServerMasthead.spec.tsx @@ -3,7 +3,7 @@ jest.unmock('./ServerMasthead'); import * as React from 'react'; import { shallow } from 'enzyme'; import { ServerMasthead } from './ServerMasthead'; -import { guild } from 'roleypoly/src/design-system/shared-types/storyData'; +import { guild } from 'roleypoly/common/types/storyData'; import { Editable } from './ServerMasthead.styled'; it('shows Edit Server when editable is true', () => { diff --git a/src/design-system/molecules/server-masthead/ServerMasthead.stories.tsx b/src/design-system/molecules/server-masthead/ServerMasthead.stories.tsx index e0cce2a..6862f96 100644 --- a/src/design-system/molecules/server-masthead/ServerMasthead.stories.tsx +++ b/src/design-system/molecules/server-masthead/ServerMasthead.stories.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { ServerMasthead } from './ServerMasthead'; -import { guild } from 'roleypoly/src/design-system/shared-types/storyData'; +import { guild } from 'roleypoly/common/types/storyData'; export default { title: 'Molecules/Server Masthead', diff --git a/src/design-system/molecules/server-masthead/ServerMasthead.styled.ts b/src/design-system/molecules/server-masthead/ServerMasthead.styled.ts index e899cec..e98fdf5 100644 --- a/src/design-system/molecules/server-masthead/ServerMasthead.styled.ts +++ b/src/design-system/molecules/server-masthead/ServerMasthead.styled.ts @@ -1,7 +1,6 @@ import styled from 'styled-components'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import { transitions } from 'roleypoly/src/design-system/atoms/timings'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { transitions } from 'roleypoly/design-system/atoms/timings'; export const Wrapper = styled.div` display: flex; diff --git a/src/design-system/molecules/server-masthead/ServerMasthead.tsx b/src/design-system/molecules/server-masthead/ServerMasthead.tsx index 3afdb4d..619786c 100644 --- a/src/design-system/molecules/server-masthead/ServerMasthead.tsx +++ b/src/design-system/molecules/server-masthead/ServerMasthead.tsx @@ -1,8 +1,8 @@ -import { Guild } from 'roleypoly/src/design-system/shared-types'; -import { Avatar, utils } from 'roleypoly/src/design-system/atoms/avatar'; -import { AccentTitle, AmbientLarge } from 'roleypoly/src/design-system/atoms/typography'; +import { Guild } from 'roleypoly/common/types'; +import { Avatar, utils } from 'roleypoly/design-system/atoms/avatar'; +import { AccentTitle, AmbientLarge } from 'roleypoly/design-system/atoms/typography'; import Link from 'next/link'; -import { guild } from 'roleypoly/src/design-system/shared-types/storyData'; +import { guild } from 'roleypoly/common/types/storyData'; import * as React from 'react'; import { GoPencil } from 'react-icons/go'; import { Editable, Icon, Name, Wrapper } from './ServerMasthead.styled'; diff --git a/src/design-system/molecules/user-avatar-group/BUILD.bazel b/src/design-system/molecules/user-avatar-group/BUILD.bazel deleted file mode 100644 index ce5e361..0000000 --- a/src/design-system/molecules/user-avatar-group/BUILD.bazel +++ /dev/null @@ -1,13 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "user-avatar-group", - deps = [ - "//src/design-system/atoms/avatar", - "//src/design-system/atoms/breakpoints", - "//src/design-system/atoms/colors", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/molecules/user-avatar-group/UserAvatarGroup.stories.tsx b/src/design-system/molecules/user-avatar-group/UserAvatarGroup.stories.tsx index 995a974..e862055 100644 --- a/src/design-system/molecules/user-avatar-group/UserAvatarGroup.stories.tsx +++ b/src/design-system/molecules/user-avatar-group/UserAvatarGroup.stories.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { UserAvatarGroup } from './UserAvatarGroup'; -import { user } from 'roleypoly/src/design-system/shared-types/storyData'; -import { Hero } from 'roleypoly/src/design-system/atoms/hero'; +import { user } from 'roleypoly/common/types/storyData'; +import { Hero } from 'roleypoly/design-system/atoms/hero'; export default { title: 'Molecules/User Avatar Group', diff --git a/src/design-system/molecules/user-avatar-group/UserAvatarGroup.styled.ts b/src/design-system/molecules/user-avatar-group/UserAvatarGroup.styled.ts index 010b887..44137c3 100644 --- a/src/design-system/molecules/user-avatar-group/UserAvatarGroup.styled.ts +++ b/src/design-system/molecules/user-avatar-group/UserAvatarGroup.styled.ts @@ -1,7 +1,6 @@ import styled, { css } from 'styled-components'; -import { onSmallScreen } from 'roleypoly/src/design-system/atoms/breakpoints'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { onSmallScreen } from 'roleypoly/design-system/atoms/breakpoints'; +import { palette } from 'roleypoly/design-system/atoms/colors'; export const Collapse = styled.div<{ preventCollapse: boolean }>` ${(props) => diff --git a/src/design-system/molecules/user-avatar-group/UserAvatarGroup.tsx b/src/design-system/molecules/user-avatar-group/UserAvatarGroup.tsx index 686b1a8..64cf530 100644 --- a/src/design-system/molecules/user-avatar-group/UserAvatarGroup.tsx +++ b/src/design-system/molecules/user-avatar-group/UserAvatarGroup.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; -import { DiscordUser } from 'roleypoly/src/design-system/shared-types'; -import { utils, Avatar } from 'roleypoly/src/design-system/atoms/avatar'; +import { DiscordUser } from 'roleypoly/common/types'; +import { utils, Avatar } from 'roleypoly/design-system/atoms/avatar'; import { Group, Collapse, Discriminator, GroupText } from './UserAvatarGroup.styled'; type Props = { diff --git a/src/design-system/molecules/user-popover/BUILD.bazel b/src/design-system/molecules/user-popover/BUILD.bazel deleted file mode 100644 index 19c8345..0000000 --- a/src/design-system/molecules/user-popover/BUILD.bazel +++ /dev/null @@ -1,16 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "user-popover", - deps = [ - "next", - "react-icons", - "//src/design-system/atoms/breakpoints", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/timings", - "//src/design-system/molecules/user-avatar-group", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/molecules/user-popover/UserPopover.stories.tsx b/src/design-system/molecules/user-popover/UserPopover.stories.tsx index 6358ac4..578fe56 100644 --- a/src/design-system/molecules/user-popover/UserPopover.stories.tsx +++ b/src/design-system/molecules/user-popover/UserPopover.stories.tsx @@ -1,7 +1,7 @@ -import { user } from 'roleypoly/src/design-system/shared-types/storyData'; +import { user } from 'roleypoly/common/types/storyData'; import * as React from 'react'; import { UserPopover as UserPopoverComponent } from './UserPopover'; -import { PopoverBase } from 'roleypoly/src/design-system/atoms/popover/Popover.styled'; +import { PopoverBase } from 'roleypoly/design-system/atoms/popover/Popover.styled'; export default { title: 'Molecules/User Popover', diff --git a/src/design-system/molecules/user-popover/UserPopover.styled.ts b/src/design-system/molecules/user-popover/UserPopover.styled.ts index 0a48d46..81378e3 100644 --- a/src/design-system/molecules/user-popover/UserPopover.styled.ts +++ b/src/design-system/molecules/user-popover/UserPopover.styled.ts @@ -1,7 +1,6 @@ import styled from 'styled-components'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import { transitions } from 'roleypoly/src/design-system/atoms/timings'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { transitions } from 'roleypoly/design-system/atoms/timings'; export const Base = styled.div` text-align: right; diff --git a/src/design-system/molecules/user-popover/UserPopover.tsx b/src/design-system/molecules/user-popover/UserPopover.tsx index 404da96..0811b12 100644 --- a/src/design-system/molecules/user-popover/UserPopover.tsx +++ b/src/design-system/molecules/user-popover/UserPopover.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; -import { DiscordUser } from 'roleypoly/src/design-system/shared-types'; -import { UserAvatarGroup } from 'roleypoly/src/design-system/molecules/user-avatar-group'; +import { DiscordUser } from 'roleypoly/common/types'; +import { UserAvatarGroup } from 'roleypoly/design-system/molecules/user-avatar-group'; import { Base, NavAction } from './UserPopover.styled'; import { GoGear, GoSignOut } from 'react-icons/go'; import Link from 'next/link'; diff --git a/src/design-system/organisms/app-shell/AppShell.stories.tsx b/src/design-system/organisms/app-shell/AppShell.stories.tsx index 2a4df78..e703daa 100644 --- a/src/design-system/organisms/app-shell/AppShell.stories.tsx +++ b/src/design-system/organisms/app-shell/AppShell.stories.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { AppShell } from './AppShell'; -import { rpUser, guildEnum } from 'roleypoly/src/design-system/shared-types/storyData'; +import { rpUser, guildEnum } from 'roleypoly/common/types/storyData'; export default { title: 'Organisms/App Shell', diff --git a/src/design-system/organisms/app-shell/AppShell.styled.tsx b/src/design-system/organisms/app-shell/AppShell.styled.tsx index ec32238..16f0b53 100644 --- a/src/design-system/organisms/app-shell/AppShell.styled.tsx +++ b/src/design-system/organisms/app-shell/AppShell.styled.tsx @@ -1,6 +1,6 @@ import styled, { createGlobalStyle } from 'styled-components'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { fontCSS } from 'roleypoly/design-system/atoms/fonts'; export const Content = styled.div<{ small?: boolean }>` margin: 0 auto; @@ -16,6 +16,7 @@ export const GlobalStyles = createGlobalStyle` color: ${palette.grey600}; overflow-y: hidden; scroll-behavior: smooth; + ${fontCSS} } * { box-sizing: border-box; diff --git a/src/design-system/organisms/app-shell/AppShell.tsx b/src/design-system/organisms/app-shell/AppShell.tsx index 1c07310..a283b78 100644 --- a/src/design-system/organisms/app-shell/AppShell.tsx +++ b/src/design-system/organisms/app-shell/AppShell.tsx @@ -1,30 +1,27 @@ import * as React from 'react'; -import * as Masthead from 'roleypoly/src/design-system/organisms/masthead'; -import { - RoleypolyUser, - GuildEnumeration, -} from 'roleypoly/src/design-system/shared-types'; -import { Footer } from 'roleypoly/src/design-system/molecules/footer'; -import { Content, GlobalStyles } from './AppShell.styled'; -import { GlobalStyleColors } from 'roleypoly/src/design-system/atoms/colors'; import { Scrollbars } from 'react-custom-scrollbars'; +import { DiscordUser, GuildSlug } from 'roleypoly/common/types'; +import { GlobalStyleColors } from 'roleypoly/design-system/atoms/colors'; +import { Footer } from 'roleypoly/design-system/molecules/footer'; +import * as Masthead from 'roleypoly/design-system/organisms/masthead'; +import { Content, GlobalStyles } from './AppShell.styled'; -type AppShellProps = { +export type AppShellProps = { children: React.ReactNode; - user: RoleypolyUser | null; + user?: DiscordUser; showFooter?: boolean; small?: boolean; activeGuildId?: string | null; - guildEnumeration?: GuildEnumeration; + guilds?: GuildSlug[]; }; export const AppShell = (props: AppShellProps) => ( <> - {props.user !== null ? ( + {props.user ? ( diff --git a/src/design-system/organisms/app-shell/BUILD.bazel b/src/design-system/organisms/app-shell/BUILD.bazel deleted file mode 100644 index a021dbc..0000000 --- a/src/design-system/organisms/app-shell/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "app-shell", - deps = [ - "react-custom-scrollbars", - "//src/design-system/atoms/colors", - "//src/design-system/molecules/footer", - "//src/design-system/organisms/masthead", - "//src/design-system/shared-types", - "@types/react-custom-scrollbars", - ], -) diff --git a/src/design-system/organisms/help-why-no-roles/BUILD.bazel b/src/design-system/organisms/help-why-no-roles/BUILD.bazel deleted file mode 100644 index 6c3ca5c..0000000 --- a/src/design-system/organisms/help-why-no-roles/BUILD.bazel +++ /dev/null @@ -1,16 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "help-why-no-roles", - deps = [ - "chroma-js", - "react-icons", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/halfsies", - "//src/design-system/atoms/sparkle", - "//src/design-system/shared-types", - "@types/chroma-js", - ], -) diff --git a/src/design-system/organisms/help-why-no-roles/WhyNoRoles.styled.ts b/src/design-system/organisms/help-why-no-roles/WhyNoRoles.styled.ts index 766081c..689938e 100644 --- a/src/design-system/organisms/help-why-no-roles/WhyNoRoles.styled.ts +++ b/src/design-system/organisms/help-why-no-roles/WhyNoRoles.styled.ts @@ -1,7 +1,6 @@ import styled, { css } from 'styled-components'; -import { palette, numberToChroma } from 'roleypoly/src/design-system/atoms/colors'; -import { Role } from 'roleypoly/src/design-system/shared-types'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import { palette, numberToChroma } from 'roleypoly/design-system/atoms/colors'; +import { Role } from 'roleypoly/common/types'; export const DiscordBase = styled.div` background-color: ${palette.discord100}; diff --git a/src/design-system/organisms/help-why-no-roles/WhyNoRoles.tsx b/src/design-system/organisms/help-why-no-roles/WhyNoRoles.tsx index cd3a7f5..d80f805 100644 --- a/src/design-system/organisms/help-why-no-roles/WhyNoRoles.tsx +++ b/src/design-system/organisms/help-why-no-roles/WhyNoRoles.tsx @@ -1,14 +1,11 @@ import chroma from 'chroma-js'; import * as React from 'react'; import { FaCheck, FaTimes } from 'react-icons/fa'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import { - HalfsiesContainer, - HalfsiesItem, -} from 'roleypoly/src/design-system/atoms/halfsies'; -import { SparkleOverlay } from 'roleypoly/src/design-system/atoms/sparkle'; -import { Role } from 'roleypoly/src/design-system/shared-types'; -import { demoData } from 'roleypoly/src/design-system/shared-types/demoData'; +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { HalfsiesContainer, HalfsiesItem } from 'roleypoly/design-system/atoms/halfsies'; +import { SparkleOverlay } from 'roleypoly/design-system/atoms/sparkle'; +import { Role } from 'roleypoly/common/types'; +import { demoData } from 'roleypoly/common/types/demoData'; import { DiscordBase, DiscordRole } from './WhyNoRoles.styled'; const adminRoles: Role[] = [ diff --git a/src/design-system/organisms/landing/BUILD.bazel b/src/design-system/organisms/landing/BUILD.bazel deleted file mode 100644 index 0962d12..0000000 --- a/src/design-system/organisms/landing/BUILD.bazel +++ /dev/null @@ -1,17 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "landing", - deps = [ - "react-icons", - "//src/design-system/atoms/breakpoints", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/halfsies", - "//src/design-system/atoms/space", - "//src/design-system/atoms/typography", - "//src/design-system/molecules/demo-discord", - "//src/design-system/molecules/demo-picker", - ], -) diff --git a/src/design-system/organisms/landing/Landing.styled.ts b/src/design-system/organisms/landing/Landing.styled.ts index 75a68b7..755204a 100644 --- a/src/design-system/organisms/landing/Landing.styled.ts +++ b/src/design-system/organisms/landing/Landing.styled.ts @@ -1,5 +1,5 @@ -import { onTablet } from 'roleypoly/src/design-system/atoms/breakpoints'; -import { text400 } from 'roleypoly/src/design-system/atoms/typography'; +import { onTablet } from 'roleypoly/design-system/atoms/breakpoints'; +import { text400 } from 'roleypoly/design-system/atoms/typography'; import styled, { css } from 'styled-components'; import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports diff --git a/src/design-system/organisms/landing/Landing.tsx b/src/design-system/organisms/landing/Landing.tsx index 061cbbe..6a2a278 100644 --- a/src/design-system/organisms/landing/Landing.tsx +++ b/src/design-system/organisms/landing/Landing.tsx @@ -1,14 +1,11 @@ -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import { Space } from 'roleypoly/src/design-system/atoms/space'; -import { LargeText, LargeTitle } from 'roleypoly/src/design-system/atoms/typography'; -import { DemoDiscord } from 'roleypoly/src/design-system/molecules/demo-discord'; -import { DemoPicker } from 'roleypoly/src/design-system/molecules/demo-picker'; +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { Space } from 'roleypoly/design-system/atoms/space'; +import { LargeText, LargeTitle } from 'roleypoly/design-system/atoms/typography'; +import { DemoDiscord } from 'roleypoly/design-system/molecules/demo-discord'; +import { DemoPicker } from 'roleypoly/design-system/molecules/demo-picker'; import * as React from 'react'; import { DemoAlignment, DemoSubtitle, HeroCentering, HeroText } from './Landing.styled'; -import { - HalfsiesContainer, - HalfsiesItem, -} from 'roleypoly/src/design-system/atoms/halfsies'; +import { HalfsiesContainer, HalfsiesItem } from 'roleypoly/design-system/atoms/halfsies'; export const Landing = () => ( diff --git a/src/design-system/organisms/masthead/Authed.tsx b/src/design-system/organisms/masthead/Authed.tsx index 04aa761..b501eb0 100644 --- a/src/design-system/organisms/masthead/Authed.tsx +++ b/src/design-system/organisms/masthead/Authed.tsx @@ -1,17 +1,20 @@ import Link from 'next/link'; import * as React from 'react'; import { GoOrganization } from 'react-icons/go'; +import { Guilds } from 'roleypoly/backend-worker/utils/kv'; import { - RoleypolyUser, + DiscordUser, GuildEnumeration, -} from 'roleypoly/src/design-system/shared-types'; -import { Logomark } from 'roleypoly/src/design-system/atoms/branding'; -import { Popover } from 'roleypoly/src/design-system/atoms/popover'; -import { GuildNav } from 'roleypoly/src/design-system/molecules/guild-nav'; -import { NavSlug } from 'roleypoly/src/design-system/molecules/nav-slug'; -import { UserAvatarGroup } from 'roleypoly/src/design-system/molecules/user-avatar-group'; -import { UserPopover } from 'roleypoly/src/design-system/molecules/user-popover'; -import { guildEnum } from 'roleypoly/src/design-system/shared-types/storyData'; + GuildSlug, + RoleypolyUser, +} from 'roleypoly/common/types'; +import { guildEnum } from 'roleypoly/common/types/storyData'; +import { DynamicLogomark } from 'roleypoly/design-system/atoms/branding'; +import { Popover } from 'roleypoly/design-system/atoms/popover'; +import { GuildNav } from 'roleypoly/design-system/molecules/guild-nav'; +import { NavSlug } from 'roleypoly/design-system/molecules/nav-slug'; +import { UserAvatarGroup } from 'roleypoly/design-system/molecules/user-avatar-group'; +import { UserPopover } from 'roleypoly/design-system/molecules/user-popover'; import { GuildPopoverHead, InteractionBase, @@ -23,9 +26,9 @@ import { } from './Masthead.styled'; type Props = { - user: RoleypolyUser; + user?: DiscordUser; activeGuildId: string | null; - guildEnumeration: GuildEnumeration; + guilds: GuildSlug[]; }; export const Authed = (props: Props) => { @@ -38,7 +41,7 @@ export const Authed = (props: Props) => { - + { > g.id === props.activeGuildId - )?.guild || null + props.guilds.find( + (guild) => guild.id === props.activeGuildId + ) || null } /> @@ -68,7 +71,7 @@ export const Authed = (props: Props) => { active={serverPopoverState} onExit={() => setServerPopoverState(false)} > - + @@ -79,9 +82,7 @@ export const Authed = (props: Props) => { }} hide={!userPopoverState} > - {props.user.discorduser && ( - - )} + {props.user && } } @@ -90,9 +91,7 @@ export const Authed = (props: Props) => { active={userPopoverState} onExit={() => setUserPopoverState(false)} > - {props.user.discorduser && ( - - )} + {props.user && } diff --git a/src/design-system/organisms/masthead/BUILD.bazel b/src/design-system/organisms/masthead/BUILD.bazel deleted file mode 100644 index eda723a..0000000 --- a/src/design-system/organisms/masthead/BUILD.bazel +++ /dev/null @@ -1,22 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "masthead", - deps = [ - "next", - "react-icons", - "//src/design-system/atoms/branding", - "//src/design-system/atoms/breakpoints", - "//src/design-system/atoms/button", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/popover", - "//src/design-system/atoms/timings", - "//src/design-system/molecules/guild-nav", - "//src/design-system/molecules/nav-slug", - "//src/design-system/molecules/user-avatar-group", - "//src/design-system/molecules/user-popover", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/organisms/masthead/Guest.tsx b/src/design-system/organisms/masthead/Guest.tsx index 58fde37..4955db3 100644 --- a/src/design-system/organisms/masthead/Guest.tsx +++ b/src/design-system/organisms/masthead/Guest.tsx @@ -1,14 +1,14 @@ -import { Logotype } from 'roleypoly/src/design-system/atoms/branding'; -import { Button } from 'roleypoly/src/design-system/atoms/button'; import Link from 'next/link'; import * as React from 'react'; import { FaSignInAlt } from 'react-icons/fa'; +import { DynamicLogotype } from 'roleypoly/design-system/atoms/branding'; +import { Button } from 'roleypoly/design-system/atoms/button'; import { + MastheadA, + MastheadAlignment, MastheadBase, MastheadLeft, MastheadRight, - MastheadAlignment, - MastheadA, } from './Masthead.styled'; export const Guest = () => ( @@ -17,7 +17,7 @@ export const Guest = () => ( - + diff --git a/src/design-system/organisms/masthead/Masthead.stories.tsx b/src/design-system/organisms/masthead/Masthead.stories.tsx index dc3b696..278a43c 100644 --- a/src/design-system/organisms/masthead/Masthead.stories.tsx +++ b/src/design-system/organisms/masthead/Masthead.stories.tsx @@ -1,8 +1,4 @@ -import { - rpUser, - guild, - guildEnum, -} from 'roleypoly/src/design-system/shared-types/storyData'; +import { rpUser, guild, guildEnum } from 'roleypoly/common/types/storyData'; import * as React from 'react'; import { Authed } from './Authed'; import { Guest } from './Guest'; diff --git a/src/design-system/organisms/masthead/Masthead.styled.tsx b/src/design-system/organisms/masthead/Masthead.styled.tsx index d79e5bb..935e888 100644 --- a/src/design-system/organisms/masthead/Masthead.styled.tsx +++ b/src/design-system/organisms/masthead/Masthead.styled.tsx @@ -1,6 +1,6 @@ -import { onSmallScreen } from 'roleypoly/src/design-system/atoms/breakpoints'; -import { palette } from 'roleypoly/src/design-system/atoms/colors'; -import { transitions } from 'roleypoly/src/design-system/atoms/timings'; +import { onSmallScreen } from 'roleypoly/design-system/atoms/breakpoints'; +import { palette } from 'roleypoly/design-system/atoms/colors'; +import { transitions } from 'roleypoly/design-system/atoms/timings'; import styled, { css } from 'styled-components'; import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports @@ -70,6 +70,7 @@ export const InteractionBase = styled.div` export const MastheadA = styled.a` display: flex; align-items: center; + justify-content: center; color: unset; text-decoration: unset; `; diff --git a/src/design-system/organisms/preauth/BUILD.bazel b/src/design-system/organisms/preauth/BUILD.bazel deleted file mode 100644 index 23fecaa..0000000 --- a/src/design-system/organisms/preauth/BUILD.bazel +++ /dev/null @@ -1,15 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "preauth", - deps = [ - "react-icons", - "//src/design-system/atoms/button", - "//src/design-system/atoms/space", - "//src/design-system/molecules/preauth-greeting", - "//src/design-system/molecules/preauth-secret-code", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/organisms/preauth/Preauth.stories.tsx b/src/design-system/organisms/preauth/Preauth.stories.tsx index da4af92..f2dbadc 100644 --- a/src/design-system/organisms/preauth/Preauth.stories.tsx +++ b/src/design-system/organisms/preauth/Preauth.stories.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { guild } from 'roleypoly/src/design-system/shared-types/storyData'; +import { guild } from 'roleypoly/common/types/storyData'; import styled from 'styled-components'; import { Preauth } from './Preauth'; diff --git a/src/design-system/organisms/preauth/Preauth.tsx b/src/design-system/organisms/preauth/Preauth.tsx index abfda72..a22a648 100644 --- a/src/design-system/organisms/preauth/Preauth.tsx +++ b/src/design-system/organisms/preauth/Preauth.tsx @@ -1,17 +1,18 @@ import * as React from 'react'; import { FaDiscord } from 'react-icons/fa'; -import { Button } from 'roleypoly/src/design-system/atoms/button'; -import { Space } from 'roleypoly/src/design-system/atoms/space'; -import { PreauthGreeting } from 'roleypoly/src/design-system/molecules/preauth-greeting'; -import { PreauthSecretCode } from 'roleypoly/src/design-system/molecules/preauth-secret-code'; -import { Guild } from 'roleypoly/src/design-system/shared-types'; +import { Button } from 'roleypoly/design-system/atoms/button'; +import { Space } from 'roleypoly/design-system/atoms/space'; +import { PreauthGreeting } from 'roleypoly/design-system/molecules/preauth-greeting'; +import { PreauthSecretCode } from 'roleypoly/design-system/molecules/preauth-secret-code'; +import { Guild } from 'roleypoly/common/types'; import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports +import Link from 'next/link'; export type PreauthProps = { guildSlug?: Guild; onSendSecretCode: (code: string) => void; botName?: string; + discordOAuthLink?: string; }; const Centered = styled.div` @@ -34,16 +35,18 @@ export const Preauth = (props: PreauthProps) => { {props.guildSlug && } -
- } - > - Sign in with Discord - + + + diff --git a/src/design-system/organisms/role-picker/BUILD.bazel b/src/design-system/organisms/role-picker/BUILD.bazel deleted file mode 100644 index f0f1f29..0000000 --- a/src/design-system/organisms/role-picker/BUILD.bazel +++ /dev/null @@ -1,29 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") -load("//hack/bazel/js:jest.bzl", "jest_test") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "role-picker", - deps = [ - "react-icons", - "//src/common/utils", - "//src/design-system/atoms/colors", - "//src/design-system/atoms/fader", - "//src/design-system/atoms/space", - "//src/design-system/molecules/picker-category", - "//src/design-system/molecules/reset-submit", - "//src/design-system/molecules/server-masthead", - "//src/design-system/shared-types", - ], -) - -jest_test( - src = ":role-picker", - deps = [ - "//src/design-system/atoms/role", - "//src/design-system/molecules/picker-category", - "//src/design-system/molecules/reset-submit", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/organisms/role-picker/RolePicker.spec.tsx b/src/design-system/organisms/role-picker/RolePicker.spec.tsx index 7d0044d..f0a3c63 100644 --- a/src/design-system/organisms/role-picker/RolePicker.spec.tsx +++ b/src/design-system/organisms/role-picker/RolePicker.spec.tsx @@ -1,20 +1,20 @@ -jest.unmock('roleypoly/src/design-system/atoms/role') - .unmock('roleypoly/src/design-system/atoms/button') - .unmock('roleypoly/src/design-system/molecules/picker-category') - .unmock('roleypoly/src/design-system/organisms/role-picker'); +jest.unmock('roleypoly/design-system/atoms/role') + .unmock('roleypoly/design-system/atoms/button') + .unmock('roleypoly/design-system/molecules/picker-category') + .unmock('roleypoly/design-system/organisms/role-picker'); import { shallow } from 'enzyme'; import * as React from 'react'; -import { Role } from 'roleypoly/src/design-system/atoms/role'; -import { PickerCategory } from 'roleypoly/src/design-system/molecules/picker-category'; -import { ResetSubmit } from 'roleypoly/src/design-system/molecules/reset-submit'; import { guild, guildData, guildRoles, member, mockCategorySingle, -} from 'roleypoly/src/design-system/shared-types/storyData'; +} from 'roleypoly/common/types/storyData'; +import { Role } from 'roleypoly/design-system/atoms/role'; +import { PickerCategory } from 'roleypoly/design-system/molecules/picker-category'; +import { ResetSubmit } from 'roleypoly/design-system/molecules/reset-submit'; import { RolePicker, RolePickerProps } from './RolePicker'; it('unselects the rest of a category in single mode', () => { diff --git a/src/design-system/organisms/role-picker/RolePicker.stories.tsx b/src/design-system/organisms/role-picker/RolePicker.stories.tsx index e85fb64..fa464e2 100644 --- a/src/design-system/organisms/role-picker/RolePicker.stories.tsx +++ b/src/design-system/organisms/role-picker/RolePicker.stories.tsx @@ -1,10 +1,5 @@ import * as React from 'react'; -import { - guild, - guildData, - guildRoles, - member, -} from 'roleypoly/src/design-system/shared-types/storyData'; +import { guild, guildData, guildRoles, member } from 'roleypoly/common/types/storyData'; import { RolePicker, RolePickerProps } from './RolePicker'; const props: Partial = { diff --git a/src/design-system/organisms/role-picker/RolePicker.styled.tsx b/src/design-system/organisms/role-picker/RolePicker.styled.tsx index 1fc9340..78a7189 100644 --- a/src/design-system/organisms/role-picker/RolePicker.styled.tsx +++ b/src/design-system/organisms/role-picker/RolePicker.styled.tsx @@ -1,6 +1,5 @@ import styled from 'styled-components'; -import * as _ from 'styled-components'; // eslint-disable-line no-duplicate-imports -import { palette } from 'roleypoly/src/design-system/atoms/colors'; +import { palette } from 'roleypoly/design-system/atoms/colors'; export const Container = styled.div``; diff --git a/src/design-system/organisms/role-picker/RolePicker.tsx b/src/design-system/organisms/role-picker/RolePicker.tsx index 3bd9a4b..a555393 100644 --- a/src/design-system/organisms/role-picker/RolePicker.tsx +++ b/src/design-system/organisms/role-picker/RolePicker.tsx @@ -1,10 +1,10 @@ import * as React from 'react'; import { GoInfo } from 'react-icons/go'; -import { FaderOpacity } from 'roleypoly/src/design-system/atoms/fader'; -import { Space } from 'roleypoly/src/design-system/atoms/space'; -import { PickerCategory } from 'roleypoly/src/design-system/molecules/picker-category'; -import { ResetSubmit } from 'roleypoly/src/design-system/molecules/reset-submit'; -import { ServerMasthead } from 'roleypoly/src/design-system/molecules/server-masthead'; +import { FaderOpacity } from 'roleypoly/design-system/atoms/fader'; +import { Space } from 'roleypoly/design-system/atoms/space'; +import { PickerCategory } from 'roleypoly/design-system/molecules/picker-category'; +import { ResetSubmit } from 'roleypoly/design-system/molecules/reset-submit'; +import { ServerMasthead } from 'roleypoly/design-system/molecules/server-masthead'; import { Category, Guild, @@ -13,8 +13,8 @@ import { Member, Role, CategoryType, -} from 'roleypoly/src/design-system/shared-types'; -import { ReactifyNewlines } from 'roleypoly/src/common/utils/ReactifyNewlines'; +} from 'roleypoly/common/types'; +import { ReactifyNewlines } from 'roleypoly/common/utils/ReactifyNewlines'; import { CategoryContainer, Container, diff --git a/src/design-system/shared-types/BUILD.bazel b/src/design-system/shared-types/BUILD.bazel deleted file mode 100644 index a5c9fa9..0000000 --- a/src/design-system/shared-types/BUILD.bazel +++ /dev/null @@ -1,10 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = [ - "//src/common/utils:__subpackages__", - "//src/design-system:__subpackages__", -]) - -react_library( - name = "shared-types", -) diff --git a/src/design-system/templates/auth-login/AuthLogin.stories.tsx b/src/design-system/templates/auth-login/AuthLogin.stories.tsx index ac439c7..2f9c230 100644 --- a/src/design-system/templates/auth-login/AuthLogin.stories.tsx +++ b/src/design-system/templates/auth-login/AuthLogin.stories.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { AuthLogin } from './AuthLogin'; -import { guild } from 'roleypoly/src/design-system/shared-types/storyData'; +import { guild } from 'roleypoly/common/types/storyData'; export default { title: 'Templates/Auth: Login', diff --git a/src/design-system/templates/auth-login/AuthLogin.tsx b/src/design-system/templates/auth-login/AuthLogin.tsx index 3c8f7a8..f29a964 100644 --- a/src/design-system/templates/auth-login/AuthLogin.tsx +++ b/src/design-system/templates/auth-login/AuthLogin.tsx @@ -1,12 +1,12 @@ -import { Hero } from 'roleypoly/src/design-system/atoms/hero'; -import { AppShell } from 'roleypoly/src/design-system/organisms/app-shell'; -import { Preauth, PreauthProps } from 'roleypoly/src/design-system/organisms/preauth'; +import { Hero } from 'roleypoly/design-system/atoms/hero'; +import { AppShell } from 'roleypoly/design-system/organisms/app-shell'; +import { Preauth, PreauthProps } from 'roleypoly/design-system/organisms/preauth'; import * as React from 'react'; export type AuthLoginProps = PreauthProps; export const AuthLogin = (props: AuthLoginProps) => ( - + diff --git a/src/design-system/templates/auth-login/BUILD.bazel b/src/design-system/templates/auth-login/BUILD.bazel deleted file mode 100644 index a925343..0000000 --- a/src/design-system/templates/auth-login/BUILD.bazel +++ /dev/null @@ -1,12 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "auth-login", - deps = [ - "//src/design-system/atoms/hero", - "//src/design-system/organisms/app-shell", - "//src/design-system/organisms/preauth", - ], -) diff --git a/src/design-system/templates/errors/BUILD.bazel b/src/design-system/templates/errors/BUILD.bazel deleted file mode 100644 index 4beba01..0000000 --- a/src/design-system/templates/errors/BUILD.bazel +++ /dev/null @@ -1,14 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "errors", - deps = [ - "//src/design-system/atoms/dot-overlay", - "//src/design-system/atoms/hero", - "//src/design-system/molecules/error-banner", - "//src/design-system/organisms/app-shell", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/templates/errors/Errors.tsx b/src/design-system/templates/errors/Errors.tsx index a3b68f3..7b80a04 100644 --- a/src/design-system/templates/errors/Errors.tsx +++ b/src/design-system/templates/errors/Errors.tsx @@ -1,12 +1,12 @@ import * as React from 'react'; -import { DotOverlay } from 'roleypoly/src/design-system/atoms/dot-overlay'; -import { Hero } from 'roleypoly/src/design-system/atoms/hero'; +import { DotOverlay } from 'roleypoly/design-system/atoms/dot-overlay'; +import { Hero } from 'roleypoly/design-system/atoms/hero'; import { ErrorBanner, ErrorMessage, -} from 'roleypoly/src/design-system/molecules/error-banner'; -import { AppShell } from 'roleypoly/src/design-system/organisms/app-shell'; -import { RoleypolyUser } from 'roleypoly/src/design-system/shared-types'; +} from 'roleypoly/design-system/molecules/error-banner'; +import { AppShell } from 'roleypoly/design-system/organisms/app-shell'; +import { RoleypolyUser } from 'roleypoly/common/types'; import { getMessageFromCode } from './errorStrings'; export type ErrorProps = { diff --git a/src/design-system/templates/errors/errorStrings.ts b/src/design-system/templates/errors/errorStrings.ts index 060074d..d8ca9fd 100644 --- a/src/design-system/templates/errors/errorStrings.ts +++ b/src/design-system/templates/errors/errorStrings.ts @@ -1,4 +1,4 @@ -import { ErrorMessage } from 'roleypoly/src/design-system/molecules/error-banner'; +import { ErrorMessage } from 'roleypoly/design-system/molecules/error-banner'; const defaultMessage: Required = { english: `Something went bad. How could this happen?`, diff --git a/src/design-system/templates/help-page/BUILD.bazel b/src/design-system/templates/help-page/BUILD.bazel deleted file mode 100644 index a7822d2..0000000 --- a/src/design-system/templates/help-page/BUILD.bazel +++ /dev/null @@ -1,12 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "help-page", - deps = [ - "//src/design-system/molecules/help-page-base", - "//src/design-system/organisms/app-shell", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/templates/help-page/HelpPage.tsx b/src/design-system/templates/help-page/HelpPage.tsx index 10a371e..620bca6 100644 --- a/src/design-system/templates/help-page/HelpPage.tsx +++ b/src/design-system/templates/help-page/HelpPage.tsx @@ -1,15 +1,15 @@ import * as React from 'react'; -import { AppShell } from 'roleypoly/src/design-system/organisms/app-shell'; -import { HelpPageBase } from 'roleypoly/src/design-system/molecules/help-page-base'; -import { RoleypolyUser } from 'roleypoly/src/design-system/shared-types'; +import { AppShell } from 'roleypoly/design-system/organisms/app-shell'; +import { HelpPageBase } from 'roleypoly/design-system/molecules/help-page-base'; +import { DiscordUser } from 'roleypoly/common/types'; type HelpPageProps = { - user: RoleypolyUser.AsObject | null; + user: DiscordUser | null; children: React.ReactNode; }; export const HelpPageTemplate = (props: HelpPageProps) => ( - + {props.children} ); diff --git a/src/design-system/templates/landing/BUILD.bazel b/src/design-system/templates/landing/BUILD.bazel deleted file mode 100644 index 45a41f8..0000000 --- a/src/design-system/templates/landing/BUILD.bazel +++ /dev/null @@ -1,11 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "landing", - deps = [ - "//src/design-system/organisms/app-shell", - "//src/design-system/organisms/landing", - ], -) diff --git a/src/design-system/templates/landing/Landing.tsx b/src/design-system/templates/landing/Landing.tsx index 7dccdaa..c9d49d9 100644 --- a/src/design-system/templates/landing/Landing.tsx +++ b/src/design-system/templates/landing/Landing.tsx @@ -1,9 +1,9 @@ import * as React from 'react'; -import { AppShell } from 'roleypoly/src/design-system/organisms/app-shell'; -import { Landing } from 'roleypoly/src/design-system/organisms/landing'; +import { AppShell } from 'roleypoly/design-system/organisms/app-shell'; +import { Landing } from 'roleypoly/design-system/organisms/landing'; export const LandingTemplate = () => ( - + ); diff --git a/src/design-system/templates/role-picker/BUILD.bazel b/src/design-system/templates/role-picker/BUILD.bazel deleted file mode 100644 index 871212d..0000000 --- a/src/design-system/templates/role-picker/BUILD.bazel +++ /dev/null @@ -1,12 +0,0 @@ -load("//hack/bazel/js:react.bzl", "react_library") - -package(default_visibility = ["//visibility:public"]) - -react_library( - name = "role-picker", - deps = [ - "//src/design-system/organisms/app-shell", - "//src/design-system/organisms/role-picker", - "//src/design-system/shared-types", - ], -) diff --git a/src/design-system/templates/role-picker/RolePicker.stories.tsx b/src/design-system/templates/role-picker/RolePicker.stories.tsx index bdcdbb8..34c0e89 100644 --- a/src/design-system/templates/role-picker/RolePicker.stories.tsx +++ b/src/design-system/templates/role-picker/RolePicker.stories.tsx @@ -7,7 +7,7 @@ import { guild, rpUser, guildEnum, -} from 'roleypoly/src/design-system/shared-types/storyData'; +} from 'roleypoly/common/types/storyData'; const props: RolePickerTemplateProps = { guildData: { @@ -22,6 +22,7 @@ const props: RolePickerTemplateProps = { user: rpUser, guildEnumeration: guildEnum, activeGuildId: guild.id, + onSubmit: () => {}, }; export default { diff --git a/src/design-system/templates/role-picker/RolePicker.tsx b/src/design-system/templates/role-picker/RolePicker.tsx index f47d7cc..bcbfa0e 100644 --- a/src/design-system/templates/role-picker/RolePicker.tsx +++ b/src/design-system/templates/role-picker/RolePicker.tsx @@ -1,19 +1,12 @@ import * as React from 'react'; -import { AppShell } from 'roleypoly/src/design-system/organisms/app-shell'; +import { GuildEnumeration, RoleypolyUser } from 'roleypoly/common/types'; +import { AppShell, AppShellProps } from 'roleypoly/design-system/organisms/app-shell'; import { RolePicker, RolePickerProps, -} from 'roleypoly/src/design-system/organisms/role-picker'; -import { - GuildEnumeration, - RoleypolyUser, -} from 'roleypoly/src/design-system/shared-types'; +} from 'roleypoly/design-system/organisms/role-picker'; -export type RolePickerTemplateProps = RolePickerProps & { - user: RoleypolyUser; - guildEnumeration?: GuildEnumeration; - activeGuildId?: string; -}; +export type RolePickerTemplateProps = RolePickerProps & AppShellProps; export const RolePickerTemplate = (props: RolePickerTemplateProps) => { const { user, ...pickerProps } = props; @@ -21,7 +14,8 @@ export const RolePickerTemplate = (props: RolePickerTemplateProps) => { diff --git a/src/discord-auth/BUILD.bazel b/src/discord-auth/BUILD.bazel deleted file mode 100644 index df1bd8a..0000000 --- a/src/discord-auth/BUILD.bazel +++ /dev/null @@ -1,33 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") -load("@io_bazel_rules_docker//go:image.bzl", "go_image") -load("//hack/bazel/docker:publish.bzl", "publish") - -go_library( - name = "discord-auth_lib", - srcs = ["discord-auth.go"], - importpath = "github.com/roleypoly/roleypoly/src/discord-auth", - visibility = ["//visibility:private"], - deps = [ - "//src/common/version", - "//src/discord-auth/http", - "@com_github_julienschmidt_httprouter//:httprouter", - "@io_k8s_klog//:klog", - "@org_uber_go_fx//:fx", - ], -) - -go_binary( - name = "discord-auth", - embed = [":discord-auth_lib"], - visibility = ["//visibility:public"], -) - -go_image( - name = "image", - embed = [":discord-auth_lib"], - visibility = ["//visibility:private"], -) - -publish( - service = "discord-auth", -) diff --git a/src/discord-auth/README.md b/src/discord-auth/README.md deleted file mode 100644 index 4149b3d..0000000 --- a/src/discord-auth/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Discord Auth - -Service for handling Discord OAuth flow. - -## Responsibilities - -- Redirect users to relevant Discord OAuth page w/ state -- Handle redirect from Discord OAuth flow and process the token -- Modify active session to include relevant data - - v3: for parity, this is just user data - - _vNext: get guilds from oauth and cache_ -- _vNext: Source of truth for user guilds_ - -## Boundaries & Services - -- **Inbound** - - HTTP: /discord-auth/\* - - gRPC: DiscordAuthService -- **Outbound** - - Redis - - gRPC: SessionService diff --git a/src/discord-auth/discord-auth.go b/src/discord-auth/discord-auth.go deleted file mode 100644 index 4e6fb5f..0000000 --- a/src/discord-auth/discord-auth.go +++ /dev/null @@ -1,54 +0,0 @@ -package main - -import ( - "context" - "net/http" - - "github.com/julienschmidt/httprouter" - "go.uber.org/fx" - "k8s.io/klog" - - "github.com/roleypoly/roleypoly/src/common/version" - httpservice "github.com/roleypoly/roleypoly/src/discord-auth/http" -) - -func main() { - klog.Info(version.StartupInfo("discord-auth")) - - app := fx.New( - fx.Provide( - httprouter.New, - httpservice.NewHTTPService, - ), - fx.Invoke( - httpservice.RegisterRoutes, - newHTTPServer, - ), - ) - - app.Run() -} - -func newHTTPServer(lc fx.Lifecycle, router *httprouter.Router) *http.Server { - server := &http.Server{ - Addr: ":8080", - Handler: router, - } - - lc.Append(fx.Hook{ - OnStart: func(context.Context) error { - klog.Info("Starting HTTP Server") - go server.ListenAndServe() - - return nil - }, - OnStop: func(ctx context.Context) error { - klog.Info("Stopping HTTP Server") - return server.Shutdown(ctx) - }, - }) - - return server -} - -func startupHTTP() diff --git a/src/discord-auth/http/BUILD.bazel b/src/discord-auth/http/BUILD.bazel deleted file mode 100644 index f43e0f4..0000000 --- a/src/discord-auth/http/BUILD.bazel +++ /dev/null @@ -1,25 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "http", - srcs = [ - "httpservice.go", - "oauth.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/discord-auth/http", - visibility = ["//visibility:public"], - deps = [ - "@com_github_julienschmidt_httprouter//:httprouter", - "@com_github_segmentio_ksuid//:ksuid", - ], -) - -go_test( - name = "http_test", - srcs = [ - "httpservice_test.go", - "oauth_test.go", - ], - embed = [":http"], - deps = ["@com_github_julienschmidt_httprouter//:httprouter"], -) diff --git a/src/discord-auth/http/httpservice.go b/src/discord-auth/http/httpservice.go deleted file mode 100644 index e75da94..0000000 --- a/src/discord-auth/http/httpservice.go +++ /dev/null @@ -1,34 +0,0 @@ -package httpservice - -import "github.com/julienschmidt/httprouter" - -type HTTPService struct { - config struct { - ClientID string - PublicURL string - } -} - -func NewHTTPService() *HTTPService { - return &HTTPService{} -} - -func RegisterRoutes(s *HTTPService, router *httprouter.Router) { - s.RegisterRoutes(router) -} - -func (h *HTTPService) RegisterRoutes(router *httprouter.Router) { - router.GET(h.v3("/oauth-handoff"), h.oauthHandoffv3) -} - -func (*HTTPService) v3(path string) string { - return `/discord-auth/v3` + path -} - -func (*HTTPService) v4(path string) string { - return `/discord-auth/v4` + path -} - -func (h *HTTPService) getOauthRedirectURL() string { - return h.config.PublicURL + h.v3("/oauth-callback") -} diff --git a/src/discord-auth/http/httpservice_test.go b/src/discord-auth/http/httpservice_test.go deleted file mode 100644 index fd1710d..0000000 --- a/src/discord-auth/http/httpservice_test.go +++ /dev/null @@ -1,43 +0,0 @@ -package httpservice - -import ( - "testing" - - "github.com/julienschmidt/httprouter" -) - -func TestV3Route(t *testing.T) { - s := &HTTPService{} - url := s.v3("/test") - if url != "/discord-auth/v3/test" { - t.FailNow() - } -} - -func TestV4Route(t *testing.T) { - s := &HTTPService{} - url := s.v4("/test") - if url != "/discord-auth/v4/test" { - t.FailNow() - } -} - -func TestRegisterRoutes(t *testing.T) { - s := NewHTTPService() - r := httprouter.New() - RegisterRoutes(s, r) -} - -func TestOauthRedirectURL(t *testing.T) { - s := &HTTPService{ - config: struct{ ClientID, PublicURL string }{ - ClientID: "", - PublicURL: "https://roleypoly.local", - }, - } - - url := s.getOauthRedirectURL() - if url != "https://roleypoly.local/discord-auth/v3/oauth-callback" { - t.FailNow() - } -} diff --git a/src/discord-auth/http/oauth.go b/src/discord-auth/http/oauth.go deleted file mode 100644 index 415a4cc..0000000 --- a/src/discord-auth/http/oauth.go +++ /dev/null @@ -1,25 +0,0 @@ -package httpservice - -import ( - "fmt" - "net/http" - - "github.com/julienschmidt/httprouter" - "github.com/segmentio/ksuid" -) - -// Handles flow start request by redirecting the user to Discord OAuth page -func (h *HTTPService) oauthHandoffv3(rw http.ResponseWriter, r *http.Request, _ httprouter.Params) { - // TODO: actually create and store this state - requestState := ksuid.New().String() - - redirectURL := fmt.Sprintf( - `https://discord.com/oauth2/authorize?client_id=%s&redirect_uri=%s&response_type=code&scope=identify&state=%s`, - h.config.ClientID, - h.getOauthRedirectURL(), - requestState, - ) - - rw.Header().Add("location", redirectURL) - rw.WriteHeader(303) -} diff --git a/src/discord-auth/http/oauth_test.go b/src/discord-auth/http/oauth_test.go deleted file mode 100644 index ef982d7..0000000 --- a/src/discord-auth/http/oauth_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package httpservice - -import ( - "net/http/httptest" - "strings" - "testing" - - "github.com/julienschmidt/httprouter" -) - -func TestOauthHandoffV3(t *testing.T) { - s := NewHTTPService() - s.config.ClientID = "test1234" - s.config.PublicURL = "https://roleypoly.test" - - rw := httptest.NewRecorder() - r := httptest.NewRequest("GET", s.v3("/oauth-handoff"), nil) - ps := httprouter.Params{} - s.oauthHandoffv3(rw, r, ps) - - if rw.Result().StatusCode != 303 { - t.Error("Status code was not 303, got ", rw.Result().StatusCode) - } - - if !strings.Contains(rw.Result().Header.Get("location"), s.config.ClientID) && - !strings.Contains(rw.Result().Header.Get("location"), s.getOauthRedirectURL()) { - t.Error("Location was not correct, got ", rw.Result().Header.Get("location")) - } -} diff --git a/src/discord-bot/BUILD.bazel b/src/discord-bot/BUILD.bazel deleted file mode 100644 index 09caf19..0000000 --- a/src/discord-bot/BUILD.bazel +++ /dev/null @@ -1,39 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") -load("//hack/bazel/docker:publish.bzl", "publish") -load("@io_bazel_rules_docker//go:image.bzl", "go_image") - -go_library( - name = "discord-bot_lib", - srcs = [ - "discordbot.go", - "listener.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/discord-bot", - visibility = ["//visibility:private"], - deps = [ - "//src/common", - "//src/common/bot", - "//src/common/version", - "//src/discord-bot/internal/strings", - "@com_github_bwmarrin_discordgo//:discordgo", - "@com_github_joho_godotenv//autoload", - "@com_github_lampjaw_discordclient//:discordclient", - "@io_k8s_klog//:klog", - ], -) - -go_binary( - name = "discord-bot", - embed = [":discord-bot_lib"], - visibility = ["//visibility:public"], -) - -go_image( - name = "image", - embed = [":discord-bot_lib"], - visibility = ["//visibility:private"], -) - -publish( - service = "discord-bot", -) diff --git a/src/discord-bot/discordbot.go b/src/discord-bot/discordbot.go index 0ddd663..0fd23d8 100644 --- a/src/discord-bot/discordbot.go +++ b/src/discord-bot/discordbot.go @@ -10,11 +10,11 @@ import ( ) var ( - botToken = common.Getenv("DISCORD_BOT_TOKEN").String() - botClientID = common.Getenv("DISCORD_CLIENT_ID").String() + botToken = common.Getenv("BOT_TOKEN").String() + botClientID = common.Getenv("BOT_CLIENT_ID").String() rootUsers = common.Getenv("ROOT_USERS").StringSlice() allowedBots = common.Getenv("ALLOWED_BOTS").StringSlice() - appURL = common.Getenv("PUBLIC_URL").String() + appURL = common.Getenv("UI_PUBLIC_URI").SafeURL() selfMention = bot.MentionMatcher(botClientID) ) diff --git a/src/discord-bot/internal/strings/BUILD.bazel b/src/discord-bot/internal/strings/BUILD.bazel deleted file mode 100644 index 4269590..0000000 --- a/src/discord-bot/internal/strings/BUILD.bazel +++ /dev/null @@ -1,11 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "strings", - srcs = [ - "renderer.go", - "strings.go", - ], - importpath = "github.com/roleypoly/roleypoly/src/discord-bot/internal/strings", - visibility = ["//src/discord-bot:__subpackages__"], -) diff --git a/src/discord-bot/listener.go b/src/discord-bot/listener.go index 8339485..5c8d88f 100644 --- a/src/discord-bot/listener.go +++ b/src/discord-bot/listener.go @@ -2,7 +2,6 @@ package main import ( "context" - "errors" "github.com/lampjaw/discordclient" "k8s.io/klog" @@ -36,7 +35,3 @@ func defaultResponse(message discordclient.Message) string { strings.MentionResponseData{GuildID: guild, AppURL: appURL}, ) } - -func imLampjawAndIWriteFuckingStupidBackendCodeLikeAChumpster() error { - return errors.New("fuck you lol") -} diff --git a/src/jstest/BUILD.bazel b/src/jstest/BUILD.bazel deleted file mode 100644 index e891f6e..0000000 --- a/src/jstest/BUILD.bazel +++ /dev/null @@ -1,27 +0,0 @@ -load("@npm//@bazel/typescript:index.bzl", "ts_library") -load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") -load("@io_bazel_rules_docker//nodejs:image.bzl", "nodejs_image") -load("//hack/bazel/docker:publish.bzl", "publish") - -package(default_visibility = ["//visibility:public"]) - -ts_library( - name = "lib", - srcs = glob(["*.ts"]), -) - -nodejs_binary( - name = "jstest", - data = [":lib"], - entry_point = "index.ts", -) - -nodejs_image( - name = "image", - data = [":lib"], - entry_point = "index.ts", -) - -publish( - service = "jstest", -) diff --git a/src/jstest/index.ts b/src/jstest/index.ts deleted file mode 100644 index 6be0237..0000000 --- a/src/jstest/index.ts +++ /dev/null @@ -1 +0,0 @@ -console.log('hello world'); diff --git a/src/midori/BUILD.bazel b/src/midori/BUILD.bazel deleted file mode 100644 index 47c8f45..0000000 --- a/src/midori/BUILD.bazel +++ /dev/null @@ -1,36 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") -load("@io_bazel_rules_docker//go:image.bzl", "go_image") -load("//hack/bazel/docker:publish.bzl", "publish") - -go_library( - name = "midori_lib", - srcs = ["midori.go"], - importpath = "github.com/roleypoly/roleypoly/src/midori", - visibility = ["//visibility:private"], - deps = [ - "//src/common/bot", - "//src/common/version", - "//src/midori/internal/commands/gh", - "//src/midori/internal/commands/tfc", - "//src/midori/internal/config", - "@com_github_bwmarrin_discordgo//:discordgo", - "@com_github_joho_godotenv//autoload", - "@io_k8s_klog//:klog", - ], -) - -go_binary( - name = "midori", - embed = [":midori_lib"], - visibility = ["//visibility:public"], -) - -go_image( - name = "image", - embed = [":midori_lib"], - visibility = ["//visibility:private"], -) - -publish( - service = "midori", -) diff --git a/src/midori/README.md b/src/midori/README.md deleted file mode 100644 index cd1deda..0000000 --- a/src/midori/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Midori - -Midori is a GitOps/GitHub Actions/Terraform Cloud helper bot. In it's simplest form, it is a hotline into GitHub Actions and Terraform Cloud to run and act upon the actual pipelines and such. - -This is **not** a public bot for very obvious reasons. You may host it yourself, but it is not a required part of a Roleypoly deployment. diff --git a/src/midori/internal/commands/gh/BUILD.bazel b/src/midori/internal/commands/gh/BUILD.bazel deleted file mode 100644 index 5016b11..0000000 --- a/src/midori/internal/commands/gh/BUILD.bazel +++ /dev/null @@ -1,16 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "gh", - srcs = ["gh.go"], - importpath = "github.com/roleypoly/roleypoly/src/midori/internal/commands/gh", - visibility = ["//src/midori:__subpackages__"], - deps = [ - "//src/common/bot", - "//src/midori/internal/commands/helpers", - "//src/midori/internal/config", - "@com_github_google_go_github_v32//github", - "@com_github_lampjaw_discordclient//:discordclient", - "@org_golang_x_oauth2//:oauth2", - ], -) diff --git a/src/midori/internal/commands/gh/gh.go b/src/midori/internal/commands/gh/gh.go deleted file mode 100644 index 8726fbd..0000000 --- a/src/midori/internal/commands/gh/gh.go +++ /dev/null @@ -1,51 +0,0 @@ -package gh - -import ( - "context" - "encoding/json" - "strings" - - "github.com/google/go-github/v32/github" - "github.com/lampjaw/discordclient" - "github.com/roleypoly/roleypoly/src/common/bot" - "github.com/roleypoly/roleypoly/src/midori/internal/commands/helpers" - "github.com/roleypoly/roleypoly/src/midori/internal/config" - "golang.org/x/oauth2" -) - -type GitHubCommands struct { - ghClient *github.Client -} - -func NewGitHubCommands() GitHubCommands { - ctx := context.Background() - ts := oauth2.StaticTokenSource( - &oauth2.Token{AccessToken: config.GitHubToken}, - ) - tc := oauth2.NewClient(ctx, ts) - ghClient := github.NewClient(tc) - - return GitHubCommands{ - ghClient: ghClient, - } -} - -func (ghc GitHubCommands) CommandGroup() bot.CommandGroup { - return bot.CommandGroup{ - { - CommandName: "dispatch", - Handler: helpers.MustHaveElevatedPermissions(ghc.dispatch), - }, - } -} - -func (ghc GitHubCommands) dispatch(ctx context.Context, message discordclient.Message) { - tokens := bot.Tokenize(message) - repo, webhookName := tokens[0], tokens[1] - payload := json.RawMessage(strings.Join(tokens[2:], " ")) - - ghc.ghClient.Repositories.Dispatch(ctx, config.GitHubOrg, repo, github.DispatchRequestOptions{ - EventType: webhookName, - ClientPayload: &payload, - }) -} diff --git a/src/midori/internal/commands/helpers/BUILD.bazel b/src/midori/internal/commands/helpers/BUILD.bazel deleted file mode 100644 index 9305c42..0000000 --- a/src/midori/internal/commands/helpers/BUILD.bazel +++ /dev/null @@ -1,14 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "helpers", - srcs = ["permissions.go"], - importpath = "github.com/roleypoly/roleypoly/src/midori/internal/commands/helpers", - visibility = ["//src/midori:__subpackages__"], - deps = [ - "//src/common", - "//src/common/bot", - "//src/midori/internal/config", - "@com_github_lampjaw_discordclient//:discordclient", - ], -) diff --git a/src/midori/internal/commands/helpers/permissions.go b/src/midori/internal/commands/helpers/permissions.go deleted file mode 100644 index 0345753..0000000 --- a/src/midori/internal/commands/helpers/permissions.go +++ /dev/null @@ -1,27 +0,0 @@ -package helpers - -import ( - "context" - - "github.com/lampjaw/discordclient" - "github.com/roleypoly/roleypoly/src/common" - "github.com/roleypoly/roleypoly/src/common/bot" - "github.com/roleypoly/roleypoly/src/midori/internal/config" -) - -// MustHaveElevatedPermissions ensures a command has either Developer or Root role conditions. -func MustHaveElevatedPermissions(next bot.HandlerFunc) bot.HandlerFunc { - return func(ctx context.Context, message discordclient.Message) { - if common.FindString(message.UserID(), config.RootUsers) || common.FindString(message.UserID(), config.AllowlistedUsers) { - next(ctx, message) - return - } - - NoPermissionsResponse(ctx, message) - } -} - -// NoPermissionsResponse responds with a simple message that shows why the command failed. -func NoPermissionsResponse(ctx context.Context, message discordclient.Message) { - bot.ReplyToMessage(ctx, "⛔ You do not have elevated permissions.") -} diff --git a/src/midori/internal/commands/tfc/BUILD.bazel b/src/midori/internal/commands/tfc/BUILD.bazel deleted file mode 100644 index c62429b..0000000 --- a/src/midori/internal/commands/tfc/BUILD.bazel +++ /dev/null @@ -1,13 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "tfc", - srcs = ["tfc.go"], - importpath = "github.com/roleypoly/roleypoly/src/midori/internal/commands/tfc", - visibility = ["//src/midori:__subpackages__"], - deps = [ - "//src/common/bot", - "//src/midori/internal/commands/helpers", - "@com_github_lampjaw_discordclient//:discordclient", - ], -) diff --git a/src/midori/internal/commands/tfc/tfc.go b/src/midori/internal/commands/tfc/tfc.go deleted file mode 100644 index 41845e5..0000000 --- a/src/midori/internal/commands/tfc/tfc.go +++ /dev/null @@ -1,25 +0,0 @@ -package tfc - -import ( - "context" - - "github.com/lampjaw/discordclient" - "github.com/roleypoly/roleypoly/src/common/bot" - "github.com/roleypoly/roleypoly/src/midori/internal/commands/helpers" -) - -type TerraformCloudCommands struct { -} - -func (tfcc TerraformCloudCommands) CommandGroup() bot.CommandGroup { - return bot.CommandGroup{ - { - CommandName: "dispatch", - Handler: helpers.MustHaveElevatedPermissions(tfcc.dispatch), - }, - } -} - -func (tfcc TerraformCloudCommands) dispatch(ctx context.Context, message discordclient.Message) { - bot.ReplyToMessage(ctx, "Ok!") -} diff --git a/src/midori/internal/config/BUILD.bazel b/src/midori/internal/config/BUILD.bazel deleted file mode 100644 index deb01c5..0000000 --- a/src/midori/internal/config/BUILD.bazel +++ /dev/null @@ -1,9 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "config", - srcs = ["config.go"], - importpath = "github.com/roleypoly/roleypoly/src/midori/internal/config", - visibility = ["//src/midori:__subpackages__"], - deps = ["//src/common"], -) diff --git a/src/midori/internal/config/config.go b/src/midori/internal/config/config.go deleted file mode 100644 index 71d9825..0000000 --- a/src/midori/internal/config/config.go +++ /dev/null @@ -1,15 +0,0 @@ -package config - -import ( - "github.com/roleypoly/roleypoly/src/common" -) - -var ( - BotToken = common.Getenv("MIDORI_BOT_TOKEN").String() - ClientID = common.Getenv("MIDORI_CLIENT_ID").String() - AllowlistedUsers = common.Getenv("MIDORI_DEVELOPERS").StringSlice() - CommandPrefix = common.Getenv("MIDORI_PREFIX_OVERRIDE", "midori").String() - RootUsers = common.Getenv("ROOT_USERS").StringSlice() - GitHubOrg = common.Getenv("MIDORI_GITHUB_ORG").String() - GitHubToken = common.Getenv("MIDORI_GITHUB_TOKEN").String() -) diff --git a/src/midori/midori.go b/src/midori/midori.go deleted file mode 100644 index 397e4ea..0000000 --- a/src/midori/midori.go +++ /dev/null @@ -1,33 +0,0 @@ -package main - -import ( - "github.com/bwmarrin/discordgo" - _ "github.com/joho/godotenv/autoload" - "k8s.io/klog" - - "github.com/roleypoly/roleypoly/src/common/bot" - "github.com/roleypoly/roleypoly/src/common/version" - "github.com/roleypoly/roleypoly/src/midori/internal/commands/gh" - "github.com/roleypoly/roleypoly/src/midori/internal/commands/tfc" - "github.com/roleypoly/roleypoly/src/midori/internal/config" -) - -func main() { - klog.Info(version.StartupInfo("midori")) - - mux := bot.NewCommandMux(bot.MentionMatcher(config.ClientID)) - mux.RegisterCommandGroup("gh", gh.GitHubCommands{}.CommandGroup()) - mux.RegisterCommandGroup("tfc", tfc.TerraformCloudCommands{}.CommandGroup()) - - err := bot.ScaffoldBot(bot.BotScaffolding{ - AllowBots: false, - BotToken: config.BotToken, - BotClientID: config.ClientID, - RootUsers: config.RootUsers, - GatewayIntents: discordgo.IntentsGuildMessages, - Handler: mux.Handler, - }) - if err != nil { - klog.Fatal(err) - } -} diff --git a/src/pages/README.md b/src/pages/README.md new file mode 100644 index 0000000..756d131 --- /dev/null +++ b/src/pages/README.md @@ -0,0 +1,3 @@ +# Pages + +This is the Next.js root for the main UI. diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx new file mode 100644 index 0000000..fcc3791 --- /dev/null +++ b/src/pages/_app.tsx @@ -0,0 +1,36 @@ +import NextApp, { AppContext, AppProps } from 'next/app'; +import * as React from 'react'; +import { InjectTypekitFont } from 'roleypoly/design-system/atoms/fonts'; +import nookies from 'nookies'; +import { AuthProvider } from 'roleypoly/providers/auth/AuthContext'; + +type Props = AppProps & { + sessionKey: string | null; +}; + +const App = (props: Props) => ( + <> + + + + + +); +export default App; + +export const getInitialProps = async (context: AppContext) => { + let sessionKey: string | null = null; + + if (context.ctx.req) { + const key = nookies.get(context.ctx)['rp_session_key']; + if (key) { + sessionKey = key; + } + } else { + sessionKey = sessionStorage.getItem('session_key'); + } + + const pageProps = await NextApp.getInitialProps(context); + + return { ...pageProps, sessionKey }; +}; diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx new file mode 100644 index 0000000..14f4f25 --- /dev/null +++ b/src/pages/_document.tsx @@ -0,0 +1,30 @@ +import Document, { DocumentContext } from 'next/document'; +import { ServerStyleSheet } from 'styled-components'; + +export default class MyDocument extends Document { + static async getInitialProps(ctx: DocumentContext) { + const sheet = new ServerStyleSheet(); + const originalRenderPage = ctx.renderPage; + + try { + ctx.renderPage = () => + originalRenderPage({ + enhanceApp: (App) => (props) => + sheet.collectStyles(), + }); + + const initialProps = await Document.getInitialProps(ctx); + return { + ...initialProps, + styles: ( + <> + {initialProps.styles} + {sheet.getStyleElement()} + + ), + }; + } finally { + sheet.seal(); + } + } +} diff --git a/src/pages/auth/login.tsx b/src/pages/auth/login.tsx new file mode 100644 index 0000000..eda7e1b --- /dev/null +++ b/src/pages/auth/login.tsx @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { AuthLogin } from 'roleypoly/design-system/templates/auth-login'; + +const loginPage = () => { + const onSendSecretCode = (code: string) => { + console.log(code); + }; + return ( + + ); +}; + +export default loginPage; diff --git a/src/pages/index.tsx b/src/pages/index.tsx new file mode 100644 index 0000000..f2b62ad --- /dev/null +++ b/src/pages/index.tsx @@ -0,0 +1,5 @@ +import * as React from 'react'; +import { LandingTemplate } from 'roleypoly/design-system/templates/landing'; + +const Index = () => ; +export default Index; diff --git a/src/pages/machinery/error.tsx b/src/pages/machinery/error.tsx new file mode 100644 index 0000000..d59a40e --- /dev/null +++ b/src/pages/machinery/error.tsx @@ -0,0 +1,17 @@ +import { NextPageContext } from 'next'; +import * as React from 'react'; +import { Error } from 'roleypoly/design-system/templates/errors'; + +type Props = { + errorCode: string | number | any; +}; + +const ErrorPage = (props: Props) => ; + +ErrorPage.getInitialProps = (context: NextPageContext): Props => { + return { + errorCode: context.err || context.query.error_code, + }; +}; + +export default ErrorPage; diff --git a/src/pages/machinery/new-session.tsx b/src/pages/machinery/new-session.tsx new file mode 100644 index 0000000..1576189 --- /dev/null +++ b/src/pages/machinery/new-session.tsx @@ -0,0 +1,45 @@ +import { NextPageContext } from 'next'; +import * as React from 'react'; +import nookies from 'nookies'; +import { AppShell } from 'roleypoly/design-system/organisms/app-shell'; +import { Hero } from 'roleypoly/design-system/atoms/hero'; +import { AccentTitle } from 'roleypoly/design-system/atoms/typography'; + +type Props = { + sessionID: string; +}; + +const NewSession = (props: Props) => { + const { sessionID } = props; + React.useEffect(() => { + sessionStorage.setItem('session_key', sessionID); + + location.href = '/'; + }, [sessionID]); + + return ( + + + Logging you in... + + + ); +}; + +export const getServerSideProps = (context: NextPageContext): { props: Props } => { + const sessionID = context.query.session_id as string; + if (!sessionID) { + throw new Error("I shouldn't be here today."); + } + + nookies.set(context, 'rp_session_key', sessionID, { + httpOnly: true, + maxAge: 60 * 60 * 6, + path: '/', + sameSite: 'strict', + }); + + return { props: { sessionID } }; +}; + +export default NewSession; diff --git a/src/providers/auth/AuthContext.tsx b/src/providers/auth/AuthContext.tsx new file mode 100644 index 0000000..21da7bf --- /dev/null +++ b/src/providers/auth/AuthContext.tsx @@ -0,0 +1,42 @@ +import * as React from 'react'; + +type AuthContextType = { + sessionKey: string | null; + setSessionKey: (value: string | null) => void; +}; + +type Props = { + sessionKey: string | null; + children: React.ReactNode; +}; + +const AuthContext = React.createContext({ + sessionKey: null, + setSessionKey: () => {}, +}); + +export const AuthProvider = (props: Props) => { + const [sessionKey, setSessionKey] = React.useState(props.sessionKey); + + return ( + + {props.children} + + ); +}; + +export const useAuth = () => { + const authCtx = React.useContext(AuthContext); + if (!authCtx) { + throw new Error('useAuth used without AuthProvider'); + } + + return authCtx; +}; + +export const isAuthenticated = () => { + const authCtx = useAuth(); + return authCtx.sessionKey !== null; +}; + +export const; diff --git a/src/providers/auth/index.ts b/src/providers/auth/index.ts new file mode 100644 index 0000000..dc39de3 --- /dev/null +++ b/src/providers/auth/index.ts @@ -0,0 +1 @@ +export * from './AuthContext'; diff --git a/src/rpc/discord/BUILD.bazel b/src/rpc/discord/BUILD.bazel deleted file mode 100644 index 18fb8d7..0000000 --- a/src/rpc/discord/BUILD.bazel +++ /dev/null @@ -1,36 +0,0 @@ -load("@rules_proto//proto:defs.bzl", "proto_library") -load("@io_bazel_rules_go//go:def.bzl", "go_library") -load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") -load("//hack/bazel/js:proto.bzl", "ts_proto") - -package(default_visibility = [ - "//hack/fixtures:__subpackages__", -]) - -proto_library( - name = "discord_proto", - srcs = ["discord.proto"], - visibility = ["//visibility:public"], - deps = ["//src/rpc/shared:shared_proto"], -) - -go_proto_library( - name = "discord_go_proto", - compilers = ["@io_bazel_rules_go//proto:go_grpc"], - importpath = "github.com/roleypoly/roleypoly/src/rpc/discord", - proto = ":discord_proto", - visibility = ["//visibility:public"], - deps = ["//src/rpc/shared"], -) - -go_library( - name = "discord", - embed = [":discord_go_proto"], - importpath = "github.com/roleypoly/roleypoly/src/rpc/discord", - visibility = ["//visibility:public"], -) - -ts_proto( - grpc = True, - proto = ":discord_proto", -) diff --git a/src/rpc/discord/discord.proto b/src/rpc/discord/discord.proto deleted file mode 100644 index e3bf71e..0000000 --- a/src/rpc/discord/discord.proto +++ /dev/null @@ -1,66 +0,0 @@ -syntax = "proto3"; - -package roleypoly.discord; -option go_package = "github.com/roleypoly/roleypoly/src/rpc/discord"; - -import "src/rpc/shared/shared.proto"; - -service Discord { - rpc ListGuilds(roleypoly.Empty) returns (GuildList) {} - rpc GetGuild(roleypoly.IDQuery) returns (Guild) {} - rpc GetGuildRoles(roleypoly.IDQuery) returns (GuildRoles) {} - rpc GetGuildsByMember(roleypoly.IDQuery) returns (GuildList) {} - - rpc GetMember(roleypoly.IDQuery) returns (Member) {} - rpc GetUser(roleypoly.IDQuery) returns (roleypoly.DiscordUser) {} - rpc UpdateMember(Member) returns (Member) {} // deprecated 4 MAR 2020 - rpc UpdateMemberRoles(RoleTransaction) returns (RoleTransactionResult) {} - - rpc OwnUser(roleypoly.Empty) returns (roleypoly.DiscordUser) {} -} - -message GuildMembers { - string ID = 1; - repeated Member members = 2; -} - -message Member { - string guildID = 1; - repeated string roles = 3; - string nick = 4; - roleypoly.DiscordUser user = 5; -} - -message RoleTransaction { - roleypoly.IDQuery member = 1; - repeated TxDelta delta = 2; -} - -message TxDelta { - string role = 1; - Action action = 2; - - enum Action { - UNKNOWN = 0; - ADD = 1; - REMOVE = 2; - } -} - -message RoleTransactionResult { - Member member = 1; - Status status = 2; - - enum Status { - DONE = 0; - QUEUED = 1; - FAILED = 2; - } -} - -message ShardInfo { - int32 shards = 1; - int32 servers = 2; - int32 users = 3; - int32 roles = 4; -} \ No newline at end of file diff --git a/src/rpc/platform/BUILD.bazel b/src/rpc/platform/BUILD.bazel deleted file mode 100644 index 88eeae6..0000000 --- a/src/rpc/platform/BUILD.bazel +++ /dev/null @@ -1,38 +0,0 @@ -load("@rules_proto//proto:defs.bzl", "proto_library") -load("@io_bazel_rules_go//go:def.bzl", "go_library") -load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") -load("//hack/bazel/js:proto.bzl", "ts_proto") - -proto_library( - name = "platform_proto", - srcs = ["platform.proto"], - visibility = ["//visibility:public"], - deps = [ - "//src/rpc/discord:discord_proto", - "//src/rpc/shared:shared_proto", - ], -) - -go_proto_library( - name = "platform_go_proto", - compilers = ["@io_bazel_rules_go//proto:go_grpc"], - importpath = "github.com/roleypoly/roleypoly/src/rpc/platform", - proto = ":platform_proto", - visibility = ["//visibility:public"], - deps = [ - "//src/rpc/discord", - "//src/rpc/shared", - ], -) - -go_library( - name = "platform", - embed = [":platform_go_proto"], - importpath = "github.com/roleypoly/roleypoly/src/rpc/platform", - visibility = ["//visibility:public"], -) - -ts_proto( - grpc = True, - proto = ":platform_proto", -) diff --git a/src/rpc/platform/platform.proto b/src/rpc/platform/platform.proto deleted file mode 100644 index 2be72cb..0000000 --- a/src/rpc/platform/platform.proto +++ /dev/null @@ -1,60 +0,0 @@ -syntax = "proto3"; - -package roleypoly.platform; -option go_package = "github.com/roleypoly/roleypoly/src/rpc/platform"; - -import "src/rpc/shared/shared.proto"; -import "src/rpc/discord/discord.proto"; - -service Platform { - rpc EnumerateMyGuilds(roleypoly.Empty) returns (GuildEnumeration) {} - rpc GetGuildSlug(roleypoly.IDQuery) returns (roleypoly.Guild) {} - rpc GetGuild(roleypoly.IDQuery) returns (PresentableGuild) {} - - rpc UpdateMyRoles(UpdateRoles) returns (roleypoly.Empty) {} - rpc UpdateGuildData(GuildData) returns (roleypoly.Empty) {} -} - -message GuildEnumeration { repeated PresentableGuild guilds = 1; } - -message PresentableGuild { - string ID = 1; - roleypoly.Guild guild = 2; - GuildData data = 3; - roleypoly.discord.Member member = 4; - roleypoly.GuildRoles roles = 5; -} - -message GuildData { - string ID = 1; - string message = 2; - repeated Category categories = 3; - repeated string entitlements = 4; -} - -message UpdateRoles { - string guildID = 1; - Roles roles = 2; -} - -message Roles { repeated string roles = 1; } - -message Category { - string ID = 1; - string name = 2; - repeated string roles = 3; - bool hidden = 4; - CategoryType type = 5; - int32 position = 6; - - enum CategoryType { - multi = 0; - single = 1; - } -} - -message UpdateEntitlement { - roleypoly.IDQuery query = 1; - string name = 2; - bool state = 3; -} \ No newline at end of file diff --git a/src/rpc/shared/BUILD.bazel b/src/rpc/shared/BUILD.bazel deleted file mode 100644 index f4f4ee6..0000000 --- a/src/rpc/shared/BUILD.bazel +++ /dev/null @@ -1,31 +0,0 @@ -load("@rules_proto//proto:defs.bzl", "proto_library") -load("@io_bazel_rules_go//go:def.bzl", "go_library") -load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") -load("//hack/bazel/js:proto.bzl", "ts_proto") - -proto_library( - name = "shared_proto", - srcs = [ - "internal.proto", - "shared.proto", - ], - visibility = ["//visibility:public"], -) - -go_proto_library( - name = "shared_go_proto", - importpath = "github.com/roleypoly/roleypoly/src/rpc/shared", - proto = ":shared_proto", - visibility = ["//visibility:public"], -) - -go_library( - name = "shared", - embed = [":shared_go_proto"], - importpath = "github.com/roleypoly/roleypoly/src/rpc/shared", - visibility = ["//visibility:public"], -) - -ts_proto( - proto = ":shared_proto", -) diff --git a/src/rpc/shared/internal.proto b/src/rpc/shared/internal.proto deleted file mode 100644 index 3577294..0000000 --- a/src/rpc/shared/internal.proto +++ /dev/null @@ -1,22 +0,0 @@ -syntax = "proto3"; -package roleypoly; -import "src/rpc/shared/shared.proto"; -option go_package = "github.com/roleypoly/roleypoly/src/rpc/shared"; - -message RoleypolyUser { - roleypoly.DiscordUser discordUser = 1; -} - -message RoleypolySession { - string ID = 1; - RoleypolyUser user = 2; - enum SessionSource { - UNKNOWN = 0; - OAUTH = 1; - DM = 2; - } - SessionSource source = 3; - int64 created_at = 4; - int64 expires_in = 5; - map extra = 6; -} \ No newline at end of file diff --git a/src/rpc/shared/shared.proto b/src/rpc/shared/shared.proto deleted file mode 100644 index 0fe82bb..0000000 --- a/src/rpc/shared/shared.proto +++ /dev/null @@ -1,49 +0,0 @@ -syntax = "proto3"; -package roleypoly; -option go_package = "github.com/roleypoly/roleypoly/src/rpc/shared"; - -message Empty {} - -message IDQuery { - string MemberID = 1; - string GuildID = 2; -} - -message GuildList { repeated Guild guilds = 1; } - -message Guild { - string ID = 1; - string name = 2; - string icon = 3; - string ownerID = 4; - int32 memberCount = 5; - string splash = 6; -} - -message GuildRoles { - string ID = 1; - repeated Role roles = 2; -} - -message Role { - string ID = 1; - string name = 2; - int64 permissions = 3; - int32 color = 4; - int32 position = 5; - bool managed = 6; - RoleSafety safety = 7; - enum RoleSafety { - safe = 0; - higherThanBot = 1; - dangerousPermissions = 2; - } -} - -message DiscordUser { - string ID = 1; - string username = 2; - string discriminator = 3; - string avatar = 4; - bool bot = 5; -} diff --git a/src/ts-protoc-gen/BUILD.bazel b/src/ts-protoc-gen/BUILD.bazel deleted file mode 100644 index 4d76fbf..0000000 --- a/src/ts-protoc-gen/BUILD.bazel +++ /dev/null @@ -1,24 +0,0 @@ -load("@npm//@bazel/typescript:index.bzl", "ts_library") -load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") - -package(default_visibility = ["//visibility:public"]) - -ts_library( - name = "src", - srcs = glob([ - "*.ts", - "service/*.ts", - "ts/*.ts", - ]), - deps = [ - "@npm//@types/google-protobuf", - "@npm//@types/node", - "@npm//google-protobuf", - ], -) - -nodejs_binary( - name = "protoc-gen-ts", - data = [":src"], - entry_point = ":index.ts", -) diff --git a/src/ts-protoc-gen/CodePrinter.ts b/src/ts-protoc-gen/CodePrinter.ts deleted file mode 100644 index aa3402e..0000000 --- a/src/ts-protoc-gen/CodePrinter.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Printer } from './Printer'; -import { generateIndent } from './util'; - -export class CodePrinter { - private indentation: string; - constructor(private depth: number, private printer: Printer) { - this.indentation = generateIndent(1); - } - indent() { - this.depth++; - return this; - } - dedent() { - this.depth--; - return this; - } - printLn(line: string) { - this.printer.printLn(new Array(this.depth + 1).join(this.indentation) + line); - return this; - } - - printEmptyLn() { - this.printer.printEmptyLn(); - return this; - } -} diff --git a/src/ts-protoc-gen/ExportMap.ts b/src/ts-protoc-gen/ExportMap.ts deleted file mode 100644 index 8ae7686..0000000 --- a/src/ts-protoc-gen/ExportMap.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { - FileDescriptorProto, - DescriptorProto, - MessageOptions, - EnumOptions, - FieldDescriptorProto, -} from 'google-protobuf/google/protobuf/descriptor_pb'; - -import Type = FieldDescriptorProto.Type; - -export type ExportMessageEntry = { - pkg: string; - fileName: string; - messageOptions: MessageOptions; - mapFieldOptions?: { - key: [Type, string]; - value: [Type, string]; - }; -}; - -export type ExportEnumEntry = { - pkg: string; - fileName: string; - enumOptions: EnumOptions; -}; - -export class ExportMap { - messageMap: { [key: string]: ExportMessageEntry } = {}; - enumMap: { [key: string]: ExportEnumEntry } = {}; - - exportNested( - scope: string, - fileDescriptor: FileDescriptorProto, - message: DescriptorProto - ) { - const messageEntry: ExportMessageEntry = { - pkg: fileDescriptor.getPackage() as string, - fileName: fileDescriptor.getName() as string, - messageOptions: message.getOptions() as MessageOptions, - mapFieldOptions: (message.getOptions() && message.getOptions()?.getMapEntry() - ? { - key: [ - message.getFieldList()[0].getType(), - (message.getFieldList()[0].getTypeName() as string).slice(1), - ], - value: [ - message.getFieldList()[1].getType(), - (message.getFieldList()[1].getTypeName() as string).slice(1), - ], - } - : undefined) as any, - }; - - const packagePrefix = scope ? scope + '.' : ''; - - const entryName = `${packagePrefix}${message.getName()}`; - this.messageMap[entryName] = messageEntry; - - message.getNestedTypeList().forEach((nested) => { - this.exportNested( - `${packagePrefix}${message.getName()}`, - fileDescriptor, - nested - ); - }); - - message.getEnumTypeList().forEach((enumType) => { - const identifier = `${packagePrefix}${message.getName() as string}.${ - enumType.getName() as string - }`; - this.enumMap[identifier] = { - pkg: fileDescriptor.getPackage() as string, - fileName: fileDescriptor.getName() as string, - enumOptions: enumType.getOptions() as EnumOptions, - }; - }); - } - - addFileDescriptor(fileDescriptor: FileDescriptorProto) { - const scope = fileDescriptor.getPackage() as string; - fileDescriptor.getMessageTypeList().forEach((messageType) => { - this.exportNested(scope, fileDescriptor, messageType); - }); - - fileDescriptor.getEnumTypeList().forEach((enumType) => { - const packagePrefix = scope ? scope + '.' : ''; - this.enumMap[packagePrefix + enumType.getName()] = { - pkg: fileDescriptor.getPackage() as string, - fileName: fileDescriptor.getName() as string, - enumOptions: enumType.getOptions() as EnumOptions, - }; - }); - } - - getMessage(str: string): ExportMessageEntry | undefined { - return this.messageMap[str]; - } - - getEnum(str: string): ExportEnumEntry | undefined { - return this.enumMap[str]; - } -} diff --git a/src/ts-protoc-gen/Printer.ts b/src/ts-protoc-gen/Printer.ts deleted file mode 100644 index ca1ddb8..0000000 --- a/src/ts-protoc-gen/Printer.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { generateIndent } from './util'; - -export class Printer { - indentStr: string; - output: string = ''; - - constructor(indentLevel: number) { - this.indentStr = generateIndent(indentLevel); - } - - printLn(str: string) { - this.output += this.indentStr + str + '\n'; - } - - print(str: string) { - this.output += str; - } - - printEmptyLn() { - this.output += '\n'; - } - - printIndentedLn(str: string) { - this.output += this.indentStr + ' ' + str + '\n'; - } - - getOutput(): string { - return this.output; - } -} diff --git a/src/ts-protoc-gen/WellKnown.ts b/src/ts-protoc-gen/WellKnown.ts deleted file mode 100644 index 70da371..0000000 --- a/src/ts-protoc-gen/WellKnown.ts +++ /dev/null @@ -1,16 +0,0 @@ -export const WellKnownTypesMap: { [key: string]: string } = { - 'google/protobuf/compiler/plugin.proto': - 'google-protobuf/google/protobuf/compiler/plugin_pb', - 'google/protobuf/any.proto': 'google-protobuf/google/protobuf/any_pb', - 'google/protobuf/api.proto': 'google-protobuf/google/protobuf/api_pb', - 'google/protobuf/descriptor.proto': 'google-protobuf/google/protobuf/descriptor_pb', - 'google/protobuf/duration.proto': 'google-protobuf/google/protobuf/duration_pb', - 'google/protobuf/empty.proto': 'google-protobuf/google/protobuf/empty_pb', - 'google/protobuf/field_mask.proto': 'google-protobuf/google/protobuf/field_mask_pb', - 'google/protobuf/source_context.proto': - 'google-protobuf/google/protobuf/source_context_pb', - 'google/protobuf/struct.proto': 'google-protobuf/google/protobuf/struct_pb', - 'google/protobuf/timestamp.proto': 'google-protobuf/google/protobuf/timestamp_pb', - 'google/protobuf/type.proto': 'google-protobuf/google/protobuf/type_pb', - 'google/protobuf/wrappers.proto': 'google-protobuf/google/protobuf/wrappers_pb', -}; diff --git a/src/ts-protoc-gen/index.ts b/src/ts-protoc-gen/index.ts deleted file mode 100644 index bffd925..0000000 --- a/src/ts-protoc-gen/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { printFileDescriptorTSD } from './ts/fileDescriptorTSD'; -import { ExportMap } from './ExportMap'; -import { replaceProtoSuffix, withAllStdIn, getParameterEnums } from './util'; -import { - CodeGeneratorRequest, - CodeGeneratorResponse, -} from 'google-protobuf/google/protobuf/compiler/plugin_pb'; -import { FileDescriptorProto } from 'google-protobuf/google/protobuf/descriptor_pb'; -import { generateGrpcWebService } from './service/grpcweb'; -import { generateGrpcNodeService } from './service/grpcnode'; -import { ServiceParameter } from './parameters'; - -/** - * This is the ProtoC compiler plugin. - * - * The Protocol Buffers Compiler can be extended to [support new languages via plugins](https://developers.google.com/protocol-buffers/docs/reference/other). - * A plugin is just a program which reads a CodeGeneratorRequest protocol buffer from standard input - * and then writes a CodeGeneratorResponse protocol buffer to standard output. - * These message types are defined in [plugin.proto](https://github.com/google/protobuf/blob/master/src/google/protobuf/compiler/plugin.proto). - * - */ -withAllStdIn((inputBuff: Buffer) => { - try { - const typedInputBuff = new Uint8Array(inputBuff.length); - typedInputBuff.set(inputBuff); - - const codeGenRequest = CodeGeneratorRequest.deserializeBinary(typedInputBuff); - const codeGenResponse = new CodeGeneratorResponse(); - const exportMap = new ExportMap(); - const fileNameToDescriptor: { [key: string]: FileDescriptorProto } = {}; - - const parameter = codeGenRequest.getParameter(); - const { service, mode } = getParameterEnums(parameter as string); - - const generateGrpcWebServices = service === ServiceParameter.GrpcWeb; - const generateGrpcNodeServices = service === ServiceParameter.GrpcNode; - - codeGenRequest.getProtoFileList().forEach((protoFileDescriptor) => { - fileNameToDescriptor[ - protoFileDescriptor.getName() as string - ] = protoFileDescriptor; - exportMap.addFileDescriptor(protoFileDescriptor); - }); - - codeGenRequest.getFileToGenerateList().forEach((fileName) => { - const outputFileName = replaceProtoSuffix(fileName); - const thisFile = new CodeGeneratorResponse.File(); - thisFile.setName(outputFileName + '.d.ts'); - thisFile.setContent( - printFileDescriptorTSD(fileNameToDescriptor[fileName], exportMap) - ); - codeGenResponse.addFile(thisFile); - - if (generateGrpcWebServices) { - generateGrpcWebService( - outputFileName, - fileNameToDescriptor[fileName], - exportMap - ).forEach((file) => codeGenResponse.addFile(file)); - } else if (generateGrpcNodeServices) { - const file = generateGrpcNodeService( - outputFileName, - fileNameToDescriptor[fileName], - exportMap, - mode - ); - codeGenResponse.addFile(file); - } - }); - - process.stdout.write(Buffer.from(codeGenResponse.serializeBinary())); - } catch (err) { - console.error('protoc-gen-ts error: ' + err.stack + '\n'); - process.exit(1); - } -}); diff --git a/src/ts-protoc-gen/parameters.ts b/src/ts-protoc-gen/parameters.ts deleted file mode 100644 index 8125e95..0000000 --- a/src/ts-protoc-gen/parameters.ts +++ /dev/null @@ -1,10 +0,0 @@ -export enum ServiceParameter { - None, - GrpcWeb, - GrpcNode, -} - -export enum ModeParameter { - None, - GrpcJs, -} diff --git a/src/ts-protoc-gen/rules/BUILD.bazel b/src/ts-protoc-gen/rules/BUILD.bazel deleted file mode 100644 index 9e8b90c..0000000 --- a/src/ts-protoc-gen/rules/BUILD.bazel +++ /dev/null @@ -1,23 +0,0 @@ -load("@npm//@bazel/typescript:index.bzl", "ts_library") -load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") - -nodejs_binary( - name = "change_import_style", - data = [ - ":change_import_style_lib", - ], - entry_point = ":change_import_style.ts", - visibility = ["//visibility:public"], -) - -ts_library( - name = "change_import_style_lib", - srcs = [ - "change_import_style.ts", - ], - deps = [ - "@npm//@types/minimist", - "@npm//@types/node", - "@npm//minimist", - ], -) diff --git a/src/ts-protoc-gen/rules/change_import_style.ts b/src/ts-protoc-gen/rules/change_import_style.ts deleted file mode 100644 index 4c41036..0000000 --- a/src/ts-protoc-gen/rules/change_import_style.ts +++ /dev/null @@ -1,121 +0,0 @@ -/** - * Converts a list of generated protobuf-js files from commonjs modules into named AMD modules. - * - * Arguments: - * --workspace_name - * --input_base_path - * --output_module_name - * --input_file_path - * --output_file_path - */ -import minimist = require('minimist'); -import fs = require('fs'); - -function main() { - const args = minimist(process.argv.slice(2)); - - const initialContents = fs.readFileSync(args.input_file_path, 'utf8'); - - const umdContents = convertToUmd(args, initialContents); - fs.writeFileSync(args.output_umd_path, umdContents, 'utf8'); - - const commonJsContents = convertToESM(args, initialContents); - fs.writeFileSync(args.output_es6_path, commonJsContents, 'utf8'); -} - -function replaceRecursiveFilePaths(args: any) { - return (contents: string) => { - return contents.replace(/(\.\.\/)+/g, `${args.workspace_name}/`); - }; -} - -function removeJsExtensionsFromRequires(contents: string) { - return contents.replace(/(require\(.*).js/g, (_, captureGroup: string) => { - return captureGroup; - }); -} - -function convertToUmd(args: any, initialContents: string): string { - const wrapInAMDModule = (contents: string) => { - return `// GENERATED CODE DO NOT EDIT -(function (factory) { - if (typeof module === "object" && typeof module.exports === "object") { - var v = factory(require, exports); - if (v !== undefined) module.exports = v; - } - else if (typeof define === "function" && define.amd) { - define("${args.input_base_path}/${args.output_module_name}", factory); - } -})(function (require, exports) { - ${contents} -}); -`; - }; - - const transformations: ((c: string) => string)[] = [ - wrapInAMDModule, - replaceRecursiveFilePaths(args), - removeJsExtensionsFromRequires, - ]; - return transformations.reduce((currentContents, transform) => { - return transform(currentContents); - }, initialContents); -} - -// Converts the CommonJS format from protoc to the ECMAScript Module format. -// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules -function convertToESM(args: any, initialContents: string): string { - const replaceGoogExtendWithExports = (contents: string) => { - return contents.replace( - /goog\.object\.extend\(exports, ([\w\.]+)\);/g, - (_, packageName: string) => { - const exportSymbols = /goog\.exportSymbol\('([\w\.]+)',.*\);/g; - const symbols = []; - - let match: RegExpExecArray | null = exportSymbols.exec(initialContents); - while (match) { - // We want to ignore embedded export targets, IE: `DeliveryPerson.DataCase`. - const exportTarget = match[1].substr(packageName.length + 1); - if (!exportTarget.includes('.')) { - symbols.push(exportTarget); - } - match = exportSymbols.exec(initialContents); - } - - return `export const { ${symbols.join(', ')} } = ${packageName}`; - } - ); - }; - - const replaceRequiresWithImports = (contents: string) => { - return contents.replace( - /var ([\w\d_]+) = require\((['"][\w\d@/_-]+['"])\);/g, - 'import * as $1 from $2;' - ); - }; - - const replaceRequiresWithSubpackageImports = (contents: string) => { - return contents.replace( - /var ([\w\d_]+) = require\((['"][\w\d@/_-]+['"])\)\.([\w\d_]+);/g, - 'import * as $1 from $2;' - ); - }; - - const replaceCJSExportsWithECMAExports = (contents: string) => { - return contents.replace(/exports\.([\w\d_]+) = .*;/g, 'export { $1 };'); - }; - - const transformations: ((c: string) => string)[] = [ - replaceRecursiveFilePaths(args), - removeJsExtensionsFromRequires, - replaceGoogExtendWithExports, - replaceRequiresWithImports, - replaceRequiresWithSubpackageImports, - replaceCJSExportsWithECMAExports, - ]; - return transformations.reduce((currentContents, transform) => { - return transform(currentContents); - }, initialContents); -} - -main(); diff --git a/src/ts-protoc-gen/rules/index.bzl b/src/ts-protoc-gen/rules/index.bzl deleted file mode 100644 index 2bf0328..0000000 --- a/src/ts-protoc-gen/rules/index.bzl +++ /dev/null @@ -1,255 +0,0 @@ -load("@build_bazel_rules_nodejs//:providers.bzl", "DeclarationInfo", "JSEcmaScriptModuleInfo", "JSNamedModuleInfo") -load("@rules_proto//proto:defs.bzl", "ProtoInfo") - -TypescriptProtoLibraryAspect = provider( - fields = { - "es5_outputs": "The ES5 JS files produced directly from the src protos", - "es6_outputs": "The ES6 JS files produced directly from the src protos", - "dts_outputs": "Ths TS definition files produced directly from the src protos", - "deps_es5": "The transitive ES5 JS dependencies", - "deps_es6": "The transitive ES6 JS dependencies", - "deps_dts": "The transitive dependencies' TS definitions", - }, -) - -def _proto_path(proto): - """ - The proto path is not really a file path - It's the path to the proto that was seen when the descriptor file was generated. - """ - path = proto.path - root = proto.root.path - ws = proto.owner.workspace_root - if path.startswith(root): - path = path[len(root):] - if path.startswith("/"): - path = path[1:] - if path.startswith(ws): - path = path[len(ws):] - if path.startswith("/"): - path = path[1:] - return path - -def _get_protoc_inputs(target, ctx): - inputs = [] - inputs += target[ProtoInfo].direct_sources - inputs += target[ProtoInfo].transitive_descriptor_sets.to_list() - return inputs - -def _get_input_proto_names(target): - """ - Builds a string containing all of the input proto file names separated by spaces. - """ - proto_inputs = [] - for src in target[ProtoInfo].direct_sources: - if src.extension != "proto": - fail("Input must be a proto file") - normalized_file = _proto_path(src) - proto_inputs.append(normalized_file) - return " ".join(proto_inputs) - -def _build_protoc_command(target, ctx): - protoc_command = "%s" % (ctx.executable._protoc.path) - - protoc_command += " --plugin=protoc-gen-ts=%s" % (ctx.executable._ts_protoc_gen.path) - - protoc_output_dir = ctx.var["BINDIR"] - protoc_command += " --ts_out=service=grpc-web:%s" % (protoc_output_dir) - protoc_command += " --js_out=import_style=commonjs,binary:%s" % (protoc_output_dir) - - descriptor_sets_paths = [desc.path for desc in target[ProtoInfo].transitive_descriptor_sets.to_list()] - protoc_command += " --descriptor_set_in=%s" % (":".join(descriptor_sets_paths)) - - protoc_command += " %s" % (_get_input_proto_names(target)) - - return protoc_command - -def _create_post_process_command(target, ctx, js_outputs, js_outputs_es6): - """ - Builds a post-processing command that: - - Updates the existing protoc output files to be UMD modules - - Creates a new es6 file from the original protoc output - """ - convert_commands = [] - for [output, output_es6] in zip(js_outputs, js_outputs_es6): - file_path = "/".join([p for p in [ - ctx.workspace_name, - ctx.label.package, - ] if p]) - file_name = output.basename[:-len(output.extension) - 1] - - convert_command = ctx.executable._change_import_style.path - convert_command += " --workspace_name {}".format(ctx.workspace_name) - convert_command += " --input_base_path {}".format(file_path) - convert_command += " --output_module_name {}".format(file_name) - convert_command += " --input_file_path {}".format(output.path) - convert_command += " --output_umd_path {}".format(output.path) - convert_command += " --output_es6_path {}".format(output_es6.path) - convert_commands.append(convert_command) - - return " && ".join(convert_commands) - -def _get_outputs(target, ctx): - """ - Calculates all of the files that will be generated by the aspect. - """ - js_outputs = [] - js_outputs_es6 = [] - dts_outputs = [] - for src in target[ProtoInfo].direct_sources: - file_name = src.basename[:-len(src.extension) - 1] - for f in ["_pb", "_pb_service"]: - full_name = file_name + f - output = ctx.actions.declare_file(full_name + ".js") - js_outputs.append(output) - output_es6 = ctx.actions.declare_file(full_name + ".mjs") - js_outputs_es6.append(output_es6) - - for f in ["_pb.d.ts", "_pb_service.d.ts"]: - output = ctx.actions.declare_file(file_name + f) - dts_outputs.append(output) - - return [js_outputs, js_outputs_es6, dts_outputs] - -def typescript_proto_library_aspect_(target, ctx): - """ - A bazel aspect that is applied on every proto_library rule on the transitive set of dependencies - of a typescript_proto_library rule. - - Handles running protoc to produce the generated JS and TS files. - """ - - [js_outputs, js_outputs_es6, dts_outputs] = _get_outputs(target, ctx) - protoc_outputs = dts_outputs + js_outputs + js_outputs_es6 - - all_commands = [ - _build_protoc_command(target, ctx), - _create_post_process_command(target, ctx, js_outputs, js_outputs_es6), - ] - - tools = [] - tools.extend(ctx.files._protoc) - tools.extend(ctx.files._ts_protoc_gen) - tools.extend(ctx.files._change_import_style) - - ctx.actions.run_shell( - inputs = depset(_get_protoc_inputs(target, ctx)), - outputs = protoc_outputs, - progress_message = "Creating Typescript pb files %s" % ctx.label, - command = " && ".join(all_commands), - tools = depset(tools), - ) - - dts_outputs = depset(dts_outputs) - es5_outputs = depset(js_outputs) - es6_outputs = depset(js_outputs_es6) - deps_dts = [] - deps_es5 = [] - deps_es6 = [] - - for dep in ctx.rule.attr.deps: - aspect_data = dep[TypescriptProtoLibraryAspect] - deps_dts.append(aspect_data.dts_outputs) - deps_dts.append(aspect_data.deps_dts) - deps_es5.append(aspect_data.es5_outputs) - deps_es5.append(aspect_data.deps_es5) - deps_es6.append(aspect_data.es6_outputs) - deps_es6.append(aspect_data.deps_es6) - - return [TypescriptProtoLibraryAspect( - dts_outputs = dts_outputs, - es5_outputs = es5_outputs, - es6_outputs = es6_outputs, - deps_dts = depset(transitive = deps_dts), - deps_es5 = depset(transitive = deps_es5), - deps_es6 = depset(transitive = deps_es6), - )] - -typescript_proto_library_aspect = aspect( - implementation = typescript_proto_library_aspect_, - attr_aspects = ["deps"], - attrs = { - "_ts_protoc_gen": attr.label( - allow_files = True, - executable = True, - cfg = "host", - default = Label("//src/ts-protoc-gen:protoc-gen-ts"), - ), - "_protoc": attr.label( - allow_single_file = True, - executable = True, - cfg = "host", - default = Label("@com_google_protobuf//:protoc"), - ), - "_change_import_style": attr.label( - executable = True, - cfg = "host", - allow_files = True, - default = Label("//src/ts-protoc-gen/rules:change_import_style"), - ), - }, -) - -def _typescript_proto_library_impl(ctx): - """ - Handles converting the aspect output into a provider compatible with the rules_typescript rules. - """ - aspect_data = ctx.attr.proto[TypescriptProtoLibraryAspect] - dts_outputs = aspect_data.dts_outputs - transitive_declarations = depset(transitive = [dts_outputs, aspect_data.deps_dts]) - es5_outputs = aspect_data.es5_outputs - es6_outputs = aspect_data.es6_outputs - outputs = depset(transitive = [es5_outputs, es6_outputs, dts_outputs]) - - es5_srcs = depset(transitive = [es5_outputs, aspect_data.deps_es5]) - es6_srcs = depset(transitive = [es6_outputs, aspect_data.deps_es6]) - return struct( - typescript = struct( - declarations = dts_outputs, - transitive_declarations = transitive_declarations, - es5_sources = es5_srcs, - es6_sources = es6_srcs, - transitive_es5_sources = es5_srcs, - transitive_es6_sources = es6_srcs, - ), - providers = [ - DefaultInfo(files = outputs), - DeclarationInfo( - declarations = dts_outputs, - transitive_declarations = transitive_declarations, - type_blacklisted_declarations = depset([]), - ), - JSNamedModuleInfo( - direct_sources = es5_srcs, - sources = es5_srcs, - ), - JSEcmaScriptModuleInfo( - direct_sources = es6_srcs, - sources = es6_srcs, - ), - ], - ) - -typescript_proto_library = rule( - attrs = { - "proto": attr.label( - mandatory = True, - allow_single_file = True, - providers = [ProtoInfo], - aspects = [typescript_proto_library_aspect], - ), - "_ts_protoc_gen": attr.label( - allow_files = True, - executable = True, - cfg = "host", - default = Label("//src/ts-protoc-gen:protoc-gen-ts"), - ), - "_protoc": attr.label( - allow_single_file = True, - executable = True, - cfg = "host", - default = Label("@com_google_protobuf//:protoc"), - ), - }, - implementation = _typescript_proto_library_impl, -) diff --git a/src/ts-protoc-gen/service/common.ts b/src/ts-protoc-gen/service/common.ts deleted file mode 100644 index 7059b30..0000000 --- a/src/ts-protoc-gen/service/common.ts +++ /dev/null @@ -1,183 +0,0 @@ -import { CodeGeneratorResponse } from 'google-protobuf/google/protobuf/compiler/plugin_pb'; -import { - FileDescriptorProto, - MethodDescriptorProto, - ServiceDescriptorProto, -} from 'google-protobuf/google/protobuf/descriptor_pb'; -import { ExportMap } from '../ExportMap'; -import { WellKnownTypesMap } from '../WellKnown'; -import { getFieldType, MESSAGE_TYPE } from '../ts/FieldTypes'; -import { - filePathToPseudoNamespace, - replaceProtoSuffix, - getPathToRoot, - normaliseFieldObjectName, -} from '../util'; - -export function createFile(output: string, filename: string): CodeGeneratorResponse.File { - const file = new CodeGeneratorResponse.File(); - file.setName(filename); - file.setContent(output); - return file; -} - -type CallingTypes = { - requestType: string; - responseType: string; -}; - -function getCallingTypes( - method: MethodDescriptorProto, - exportMap: ExportMap -): CallingTypes { - return { - requestType: getFieldType( - MESSAGE_TYPE, - (method.getInputType() as string).slice(1), - '', - exportMap - ), - responseType: getFieldType( - MESSAGE_TYPE, - (method.getOutputType() as string).slice(1), - '', - exportMap - ), - }; -} - -function isUsed( - fileDescriptor: FileDescriptorProto, - pseudoNamespace: string, - exportMap: ExportMap -) { - return fileDescriptor.getServiceList().some((service) => { - return service.getMethodList().some((method) => { - const callingTypes = getCallingTypes(method, exportMap); - const namespacePackage = pseudoNamespace + '.'; - return ( - callingTypes.requestType.indexOf(namespacePackage) === 0 || - callingTypes.responseType.indexOf(namespacePackage) === 0 - ); - }); - }); -} - -export type ImportDescriptor = { - readonly namespace: string; - readonly path: string; -}; - -export type RPCMethodDescriptor = { - readonly nameAsPascalCase: string; - readonly nameAsCamelCase: string; - readonly functionName: string; - readonly serviceName: string; - readonly requestStream: boolean; - readonly responseStream: boolean; - readonly requestType: string; - readonly responseType: string; -}; - -export class RPCDescriptor { - private readonly grpcService: GrpcServiceDescriptor; - private readonly protoService: ServiceDescriptorProto; - private readonly exportMap: ExportMap; - - constructor( - grpcService: GrpcServiceDescriptor, - protoService: ServiceDescriptorProto, - exportMap: ExportMap - ) { - this.grpcService = grpcService; - this.protoService = protoService; - this.exportMap = exportMap; - } - get name(): string { - return this.protoService.getName() as string; - } - - get qualifiedName(): string { - return ( - (this.grpcService.packageName ? `${this.grpcService.packageName}.` : '') + - this.name - ); - } - - get methods(): RPCMethodDescriptor[] { - return this.protoService.getMethodList().map((method) => { - const callingTypes = getCallingTypes(method, this.exportMap); - const name = method.getName() as string; - const nameAsCamelCase = name[0].toLowerCase() + name.substr(1); - return { - nameAsPascalCase: name, - nameAsCamelCase, - functionName: normaliseFieldObjectName(nameAsCamelCase), - serviceName: this.name, - requestStream: method.getClientStreaming() as boolean, - responseStream: method.getServerStreaming() as boolean, - requestType: callingTypes.requestType, - responseType: callingTypes.responseType, - }; - }); - } -} - -export class GrpcServiceDescriptor { - private readonly fileDescriptor: FileDescriptorProto; - private readonly exportMap: ExportMap; - private readonly pathToRoot: string; - - constructor(fileDescriptor: FileDescriptorProto, exportMap: ExportMap) { - this.fileDescriptor = fileDescriptor; - this.exportMap = exportMap; - this.pathToRoot = getPathToRoot(fileDescriptor.getName() as string); - } - - get filename(): string { - return this.fileDescriptor.getName() as string; - } - - get packageName(): string { - return this.fileDescriptor.getPackage() as string; - } - - get imports(): ImportDescriptor[] { - const dependencies = this.fileDescriptor - .getDependencyList() - .filter((dependency) => - isUsed( - this.fileDescriptor, - filePathToPseudoNamespace(dependency), - this.exportMap - ) - ) - .map((dependency) => { - const namespace = filePathToPseudoNamespace(dependency); - if (dependency in WellKnownTypesMap) { - return { - namespace, - path: WellKnownTypesMap[dependency], - }; - } else { - return { - namespace, - path: `${this.pathToRoot}${replaceProtoSuffix( - replaceProtoSuffix(dependency) - )}`, - }; - } - }); - const hostProto = { - namespace: filePathToPseudoNamespace(this.filename), - path: `${this.pathToRoot}${replaceProtoSuffix(this.filename)}`, - }; - return [hostProto].concat(dependencies); - } - - get services(): RPCDescriptor[] { - return this.fileDescriptor.getServiceList().map((service) => { - return new RPCDescriptor(this, service, this.exportMap); - }); - } -} diff --git a/src/ts-protoc-gen/service/grpcnode.ts b/src/ts-protoc-gen/service/grpcnode.ts deleted file mode 100644 index 245961d..0000000 --- a/src/ts-protoc-gen/service/grpcnode.ts +++ /dev/null @@ -1,162 +0,0 @@ -import { ExportMap } from '../ExportMap'; -import { Printer } from '../Printer'; -import { FileDescriptorProto } from 'google-protobuf/google/protobuf/descriptor_pb'; -import { CodeGeneratorResponse } from 'google-protobuf/google/protobuf/compiler/plugin_pb'; -import { - createFile, - RPCDescriptor, - GrpcServiceDescriptor, - RPCMethodDescriptor, -} from './common'; -import { ModeParameter } from '../parameters'; - -export function generateGrpcNodeService( - filename: string, - descriptor: FileDescriptorProto, - exportMap: ExportMap, - modeParameter: ModeParameter -): CodeGeneratorResponse.File { - const definitionFilename = filename.replace(/_pb$/, '_grpc_pb.d.ts'); - return createFile( - generateTypeScriptDefinition(descriptor, exportMap, modeParameter), - definitionFilename - ); -} - -function generateTypeScriptDefinition( - fileDescriptor: FileDescriptorProto, - exportMap: ExportMap, - modeParameter: ModeParameter -): string { - const serviceDescriptor = new GrpcServiceDescriptor(fileDescriptor, exportMap); - const printer = new Printer(0); - - const hasServices = serviceDescriptor.services.length > 0; - - // Header. - if (hasServices) { - printer.printLn('// GENERATED CODE -- DO NOT EDIT!'); - printer.printEmptyLn(); - } else { - printer.printLn('// GENERATED CODE -- NO SERVICES IN PROTO'); - return printer.getOutput(); - } - - printer.printLn(`// package: ${serviceDescriptor.packageName}`); - printer.printLn(`// file: ${serviceDescriptor.filename}`); - printer.printEmptyLn(); - - // Import statements. - serviceDescriptor.imports.forEach((importDescriptor) => { - printer.printLn( - `import * as ${importDescriptor.namespace} from "${importDescriptor.path}";` - ); - }); - const importPackage = - modeParameter === ModeParameter.GrpcJs ? '@grpc/grpc-js' : 'grpc'; - printer.printLn(`import * as grpc from "${importPackage}";`); - - // Services. - serviceDescriptor.services.forEach((service) => { - printer.printEmptyLn(); - printService(printer, service); - printer.printEmptyLn(); - printClient(printer, service); - }); - - return printer.getOutput(); -} - -function printService(printer: Printer, service: RPCDescriptor) { - const serviceName = `${service.name}Service`; - printer.printLn( - `interface I${serviceName} extends grpc.ServiceDefinition {` - ); - service.methods.forEach((method) => { - const methodType = `grpc.MethodDefinition<${method.requestType}, ${method.responseType}>`; - printer.printIndentedLn(`${method.nameAsCamelCase}: ${methodType};`); - }); - printer.printLn('}'); - printer.printEmptyLn(); - printer.printLn(`export const ${serviceName}: I${serviceName};`); -} - -function printClient(printer: Printer, service: RPCDescriptor) { - printer.printLn(`export class ${service.name}Client extends grpc.Client {`); - printer.printIndentedLn( - 'constructor(address: string, credentials: grpc.ChannelCredentials, options?: object);' - ); - service.methods.forEach((method) => { - if (!method.requestStream && !method.responseStream) { - printUnaryRequestMethod(printer, method); - } else if (!method.requestStream) { - printServerStreamRequestMethod(printer, method); - } else if (!method.responseStream) { - printClientStreamRequestMethod(printer, method); - } else { - printBidiStreamRequest(printer, method); - } - }); - printer.printLn('}'); -} - -const metadata = 'metadata: grpc.Metadata | null'; -const options = 'options: grpc.CallOptions | null'; -const metadataOrOptions = 'metadataOrOptions: grpc.Metadata | grpc.CallOptions | null'; - -const optionalMetadata = 'metadata?: grpc.Metadata | null'; -const optionalOptions = 'options?: grpc.CallOptions | null'; -const optionalMetadataOrOptions = - 'metadataOrOptions?: grpc.Metadata | grpc.CallOptions | null'; - -function printUnaryRequestMethod(printer: Printer, method: RPCMethodDescriptor) { - const name = method.nameAsCamelCase; - const argument = `argument: ${method.requestType}`; - const callback = `callback: grpc.requestCallback<${method.responseType}>`; - const returnType = 'grpc.ClientUnaryCall'; - - printer.printIndentedLn(`${name}(${argument}, ${callback}): ${returnType};`); - printer.printIndentedLn( - `${name}(${argument}, ${metadataOrOptions}, ${callback}): ${returnType};` - ); - printer.printIndentedLn( - `${name}(${argument}, ${metadata}, ${options}, ${callback}): ${returnType};` - ); -} - -function printServerStreamRequestMethod(printer: Printer, method: RPCMethodDescriptor) { - const name = method.nameAsCamelCase; - const argument = `argument: ${method.requestType}`; - const returnType = `grpc.ClientReadableStream<${method.responseType}>`; - - printer.printIndentedLn( - `${name}(${argument}, ${optionalMetadataOrOptions}): ${returnType};` - ); - printer.printIndentedLn( - `${name}(${argument}, ${optionalMetadata}, ${optionalOptions}): ${returnType};` - ); -} - -function printClientStreamRequestMethod(printer: Printer, method: RPCMethodDescriptor) { - const name = method.nameAsCamelCase; - const callback = `callback: grpc.requestCallback<${method.responseType}>`; - const returnType = `grpc.ClientWritableStream<${method.requestType}>`; - - printer.printIndentedLn( - `${name}(${callback}): grpc.ClientWritableStream<${method.requestType}>;` - ); - printer.printIndentedLn(`${name}(${metadataOrOptions}, ${callback}): ${returnType};`); - printer.printIndentedLn( - `${name}(${metadata}, ${options}, ${callback}): ${returnType};` - ); -} - -function printBidiStreamRequest(printer: Printer, method: RPCMethodDescriptor) { - const name = method.nameAsCamelCase; - const returnType = `grpc.ClientDuplexStream<${method.requestType}, ${method.responseType}>`; - - printer.printIndentedLn(`${name}(${optionalMetadataOrOptions}): ${returnType};`); - printer.printIndentedLn( - `${name}(${optionalMetadata}, ${optionalOptions}): ${returnType};` - ); -} diff --git a/src/ts-protoc-gen/service/grpcweb.ts b/src/ts-protoc-gen/service/grpcweb.ts deleted file mode 100644 index 184ccde..0000000 --- a/src/ts-protoc-gen/service/grpcweb.ts +++ /dev/null @@ -1,560 +0,0 @@ -import { ExportMap } from '../ExportMap'; -import { Printer } from '../Printer'; -import { CodePrinter } from '../CodePrinter'; -import { FileDescriptorProto } from 'google-protobuf/google/protobuf/descriptor_pb'; -import { CodeGeneratorResponse } from 'google-protobuf/google/protobuf/compiler/plugin_pb'; -import { - createFile, - RPCMethodDescriptor, - RPCDescriptor, - GrpcServiceDescriptor, -} from './common'; - -export function generateGrpcWebService( - filename: string, - descriptor: FileDescriptorProto, - exportMap: ExportMap -): CodeGeneratorResponse.File[] { - return [ - createFile( - generateTypeScriptDefinition(descriptor, exportMap), - `${filename}_service.d.ts` - ), - createFile(generateJavaScript(descriptor, exportMap), `${filename}_service.js`), - ]; -} - -function generateTypeScriptDefinition( - fileDescriptor: FileDescriptorProto, - exportMap: ExportMap -): string { - const serviceDescriptor = new GrpcServiceDescriptor(fileDescriptor, exportMap); - const printer = new Printer(0); - - // Header. - printer.printLn(`// package: ${serviceDescriptor.packageName}`); - printer.printLn(`// file: ${serviceDescriptor.filename}`); - printer.printEmptyLn(); - - if (serviceDescriptor.services.length === 0) { - return printer.getOutput(); - } - - // Import statements. - serviceDescriptor.imports.forEach((importDescriptor) => { - printer.printLn( - `import * as ${importDescriptor.namespace} from "${importDescriptor.path}";` - ); - }); - printer.printLn(`import {grpc} from "@improbable-eng/grpc-web";`); - printer.printEmptyLn(); - - // Services. - serviceDescriptor.services.forEach((service) => { - // Method Type Definitions - service.methods.forEach((method) => { - printer.printLn(`type ${method.serviceName}${method.nameAsPascalCase} = {`); - printer.printIndentedLn(`readonly methodName: string;`); - printer.printIndentedLn(`readonly service: typeof ${method.serviceName};`); - printer.printIndentedLn(`readonly requestStream: ${method.requestStream};`); - printer.printIndentedLn(`readonly responseStream: ${method.responseStream};`); - printer.printIndentedLn( - `readonly requestType: typeof ${method.requestType};` - ); - printer.printIndentedLn( - `readonly responseType: typeof ${method.responseType};` - ); - printer.printLn(`};`); - printer.printEmptyLn(); - }); - - printer.printLn(`export class ${service.name} {`); - printer.printIndentedLn(`static readonly serviceName: string;`); - service.methods.forEach((method) => { - printer.printIndentedLn( - `static readonly ${method.nameAsPascalCase}: ${method.serviceName}${method.nameAsPascalCase};` - ); - }); - printer.printLn(`}`); - printer.printEmptyLn(); - }); - - printer.printLn( - `export type ServiceError = { message: string, code: number; metadata: grpc.Metadata }` - ); - printer.printLn( - `export type Status = { details: string, code: number; metadata: grpc.Metadata }` - ); - printer.printEmptyLn(); - printer.printLn('interface UnaryResponse {'); - printer.printIndentedLn('cancel(): void;'); - printer.printLn('}'); - printer.printLn(`interface ResponseStream {`); - printer.printIndentedLn(`cancel(): void;`); - printer.printIndentedLn( - `on(type: 'data', handler: (message: T) => void): ResponseStream;` - ); - printer.printIndentedLn( - `on(type: 'end', handler: (status?: Status) => void): ResponseStream;` - ); - printer.printIndentedLn( - `on(type: 'status', handler: (status: Status) => void): ResponseStream;` - ); - printer.printLn(`}`); - printer.printLn(`interface RequestStream {`); - printer.printIndentedLn(`write(message: T): RequestStream;`); - printer.printIndentedLn(`end(): void;`); - printer.printIndentedLn(`cancel(): void;`); - printer.printIndentedLn( - `on(type: 'end', handler: (status?: Status) => void): RequestStream;` - ); - printer.printIndentedLn( - `on(type: 'status', handler: (status: Status) => void): RequestStream;` - ); - printer.printLn(`}`); - printer.printLn(`interface BidirectionalStream {`); - printer.printIndentedLn(`write(message: ReqT): BidirectionalStream;`); - printer.printIndentedLn(`end(): void;`); - printer.printIndentedLn(`cancel(): void;`); - printer.printIndentedLn( - `on(type: 'data', handler: (message: ResT) => void): BidirectionalStream;` - ); - printer.printIndentedLn( - `on(type: 'end', handler: (status?: Status) => void): BidirectionalStream;` - ); - printer.printIndentedLn( - `on(type: 'status', handler: (status: Status) => void): BidirectionalStream;` - ); - printer.printLn(`}`); - printer.printEmptyLn(); - - // Add a client stub that talks with the @improbable-eng/grpc-web library - serviceDescriptor.services.forEach((service) => { - printServiceStubTypes(printer, service); - printer.printEmptyLn(); - }); - - return printer.getOutput(); -} - -function generateJavaScript( - fileDescriptor: FileDescriptorProto, - exportMap: ExportMap -): string { - const serviceDescriptor = new GrpcServiceDescriptor(fileDescriptor, exportMap); - const printer = new Printer(0); - - // Header. - printer.printLn(`// package: ${serviceDescriptor.packageName}`); - printer.printLn(`// file: ${serviceDescriptor.filename}`); - printer.printEmptyLn(); - - if (serviceDescriptor.services.length === 0) { - return printer.getOutput(); - } - - // Import Statements - serviceDescriptor.imports.forEach((importDescriptor) => { - printer.printLn( - `var ${importDescriptor.namespace} = require("${importDescriptor.path}");` - ); - }); - printer.printLn(`var grpc = require("@improbable-eng/grpc-web").grpc;`); - printer.printEmptyLn(); - - // Services. - serviceDescriptor.services.forEach((service) => { - printer.printLn(`var ${service.name} = (function () {`); - printer.printIndentedLn(`function ${service.name}() {}`); - printer.printIndentedLn( - `${service.name}.serviceName = "${service.qualifiedName}";` - ); - printer.printIndentedLn(`return ${service.name};`); - printer.printLn(`}());`); - printer.printEmptyLn(); - - service.methods.forEach((method) => { - printer.printLn(`${method.serviceName}.${method.nameAsPascalCase} = {`); - printer.printIndentedLn(`methodName: "${method.nameAsPascalCase}",`); - printer.printIndentedLn(`service: ${method.serviceName},`); - printer.printIndentedLn(`requestStream: ${method.requestStream},`); - printer.printIndentedLn(`responseStream: ${method.responseStream},`); - printer.printIndentedLn(`requestType: ${method.requestType},`); - printer.printIndentedLn(`responseType: ${method.responseType}`); - printer.printLn(`};`); - printer.printEmptyLn(); - }); - printer.printLn(`exports.${service.name} = ${service.name};`); - printer.printEmptyLn(); - - // Add a client stub that talks with the @improbable-eng/grpc-web library - printServiceStub(printer, service); - - printer.printEmptyLn(); - }); - - return printer.getOutput(); -} - -function printServiceStub(methodPrinter: Printer, service: RPCDescriptor) { - const printer = new CodePrinter(0, methodPrinter); - - printer - .printLn(`function ${service.name}Client(serviceHost, options) {`) - .indent() - .printLn(`this.serviceHost = serviceHost;`) - .printLn(`this.options = options || {};`) - .dedent() - .printLn(`}`) - .printEmptyLn(); - - service.methods.forEach((method: RPCMethodDescriptor) => { - if (method.requestStream && method.responseStream) { - printBidirectionalStubMethod(printer, method); - } else if (method.requestStream) { - printClientStreamStubMethod(printer, method); - } else if (method.responseStream) { - printServerStreamStubMethod(printer, method); - } else { - printUnaryStubMethod(printer, method); - } - printer.printEmptyLn(); - }); - printer.printLn(`exports.${service.name}Client = ${service.name}Client;`); -} - -function printUnaryStubMethod(printer: CodePrinter, method: RPCMethodDescriptor) { - printer - .printLn( - `${method.serviceName}Client.prototype.${method.nameAsCamelCase} = function ${method.functionName}(requestMessage, metadata) {` - ) - .indent() - .printLn(`let cancelled = false;`) - .printLn( - `var client = grpc.unary(${method.serviceName}.${method.nameAsPascalCase}, {` - ) - .indent() - .printLn(`request: requestMessage,`) - .printLn(`host: this.serviceHost,`) - .printLn(`metadata: metadata,`) - .printLn(`transport: this.options.transport,`) - .printLn(`debug: this.options.debug,`) - .printLn(`onEnd: function (response) {`) - .indent() - .printLn(`if (cancelled === false) {`) - .indent() - .printLn(`if (response.status !== grpc.Code.OK) {`) - .indent() - .printLn(`var err = new Error(response.statusMessage);`) - .printLn(`err.code = response.status;`) - .printLn(`err.metadata = response.trailers;`) - .printLn(`Promise.reject(err);`) - .dedent() - .printLn(`} else {`) - .indent() - .printLn(`Promise.resolve(response.message);`) - .dedent() - .printLn(`}`) - .dedent() - .printLn(`}`) - .dedent() - .printLn(`}`) - .dedent() - .printLn(`});`) - .printLn(`return {`) - .indent() - .printLn(`cancel: function () {`) - .indent() - .printLn(`cancelled = true;`) - .printLn(`Promise.reject(null);`) - .dedent() - .printLn(`}`) - .dedent() - .printLn(`};`) - .dedent() - .printLn(`};`); -} - -function printServerStreamStubMethod(printer: CodePrinter, method: RPCMethodDescriptor) { - printer - .printLn( - `${method.serviceName}Client.prototype.${method.nameAsCamelCase} = function ${method.functionName}(requestMessage, metadata) {` - ) - .indent() - .printLn(`var listeners = {`) - .indent() - .printLn(`data: [],`) - .printLn(`end: [],`) - .printLn(`status: []`) - .dedent() - .printLn(`};`) - .printLn( - `var client = grpc.invoke(${method.serviceName}.${method.nameAsPascalCase}, {` - ) - .indent() - .printLn(`request: requestMessage,`) - .printLn(`host: this.serviceHost,`) - .printLn(`metadata: metadata,`) - .printLn(`transport: this.options.transport,`) - .printLn(`debug: this.options.debug,`) - .printLn(`onMessage: function (responseMessage) {`) - .indent() - .printLn(`listeners.data.forEach(function (handler) {`) - .indent() - .printLn(`handler(responseMessage);`) - .dedent() - .printLn(`});`) - .dedent() - .printLn(`},`) - .printLn(`onEnd: function (status, statusMessage, trailers) {`) - .indent() - .printLn(`listeners.status.forEach(function (handler) {`) - .indent() - .printLn(`handler({ code: status, details: statusMessage, metadata: trailers });`) - .dedent() - .printLn(`});`) - .printLn(`listeners.end.forEach(function (handler) {`) - .indent() - .printLn(`handler({ code: status, details: statusMessage, metadata: trailers });`) - .dedent() - .printLn(`});`) - .printLn(`listeners = null;`) - .dedent() - .printLn(`}`) - .dedent() - .printLn(`});`) - .printLn(`return {`) - .indent() - .printLn(`on: function (type, handler) {`) - .indent() - .printLn(`listeners[type].push(handler);`) - .printLn(`return this;`) - .dedent() - .printLn(`},`) - .printLn(`cancel: function () {`) - .indent() - .printLn(`listeners = null;`) - .printLn(`client.close();`) - .dedent() - .printLn(`}`) - .dedent() - .printLn(`};`) - .dedent() - .printLn(`};`); -} - -function printClientStreamStubMethod(printer: CodePrinter, method: RPCMethodDescriptor) { - printer - .printLn( - `${method.serviceName}Client.prototype.${method.nameAsCamelCase} = function ${method.functionName}(metadata) {` - ) - .indent() - .printLn(`var listeners = {`) - .indent() - .printLn(`end: [],`) - .printLn(`status: []`) - .dedent() - .printLn(`};`) - .printLn( - `var client = grpc.client(${method.serviceName}.${method.nameAsPascalCase}, {` - ) - .indent() - .printLn(`host: this.serviceHost,`) - .printLn(`metadata: metadata,`) - .printLn(`transport: this.options.transport`) - .dedent() - .printLn(`});`) - .printLn(`client.onEnd(function (status, statusMessage, trailers) {`) - .indent() - .printLn(`listeners.status.forEach(function (handler) {`) - .indent() - .printLn(`handler({ code: status, details: statusMessage, metadata: trailers });`) - .dedent() - .printLn(`});`) - .printLn(`listeners.end.forEach(function (handler) {`) - .indent() - .printLn(`handler({ code: status, details: statusMessage, metadata: trailers });`) - .dedent() - .printLn(`});`) - .printLn(`listeners = null;`) - .dedent() - .printLn(`});`) - .printLn(`return {`) - .indent() - .printLn(`on: function (type, handler) {`) - .indent() - .printLn(`listeners[type].push(handler);`) - .printLn(`return this;`) - .dedent() - .printLn(`},`) - .printLn(`write: function (requestMessage) {`) - .indent() - .printLn(`if (!client.started) {`) - .indent() - .printLn(`client.start(metadata);`) - .dedent() - .printLn(`}`) - .printLn(`client.send(requestMessage);`) - .printLn(`return this;`) - .dedent() - .printLn(`},`) - .printLn(`end: function () {`) - .indent() - .printLn(`client.finishSend();`) - .dedent() - .printLn(`},`) - .printLn(`cancel: function () {`) - .indent() - .printLn(`listeners = null;`) - .printLn(`client.close();`) - .dedent() - .printLn(`}`) - .dedent() - .printLn(`};`) - .dedent() - .printLn(`};`); -} - -function printBidirectionalStubMethod(printer: CodePrinter, method: RPCMethodDescriptor) { - printer - .printLn( - `${method.serviceName}Client.prototype.${method.nameAsCamelCase} = function ${method.functionName}(metadata) {` - ) - .indent() - .printLn(`var listeners = {`) - .indent() - .printLn(`data: [],`) - .printLn(`end: [],`) - .printLn(`status: []`) - .dedent() - .printLn(`};`) - .printLn( - `var client = grpc.client(${method.serviceName}.${method.nameAsPascalCase}, {` - ) - .indent() - .printLn(`host: this.serviceHost,`) - .printLn(`metadata: metadata,`) - .printLn(`transport: this.options.transport`) - .dedent() - .printLn(`});`) - .printLn(`client.onEnd(function (status, statusMessage, trailers) {`) - .indent() - .printLn(`listeners.status.forEach(function (handler) {`) - .indent() - .printLn(`handler({ code: status, details: statusMessage, metadata: trailers });`) - .dedent() - .printLn(`});`) - .printLn(`listeners.end.forEach(function (handler) {`) - .indent() - .printLn(`handler({ code: status, details: statusMessage, metadata: trailers });`) - .dedent() - .printLn(`});`) - .printLn(`listeners = null;`) - .dedent() - .printLn(`});`) - .printLn(`client.onMessage(function (message) {`) - .indent() - .printLn(`listeners.data.forEach(function (handler) {`) - .indent() - .printLn(`handler(message);`) - .dedent() - .printLn(`})`) - .dedent() - .printLn(`});`) - .printLn(`client.start(metadata);`) - .printLn(`return {`) - .indent() - .printLn(`on: function (type, handler) {`) - .indent() - .printLn(`listeners[type].push(handler);`) - .printLn(`return this;`) - .dedent() - .printLn(`},`) - .printLn(`write: function (requestMessage) {`) - .indent() - .printLn(`client.send(requestMessage);`) - .printLn(`return this;`) - .dedent() - .printLn(`},`) - .printLn(`end: function () {`) - .indent() - .printLn(`client.finishSend();`) - .dedent() - .printLn(`},`) - .printLn(`cancel: function () {`) - .indent() - .printLn(`listeners = null;`) - .printLn(`client.close();`) - .dedent() - .printLn(`}`) - .dedent() - .printLn(`};`) - .dedent() - .printLn(`};`); -} - -function printServiceStubTypes(methodPrinter: Printer, service: RPCDescriptor) { - const printer = new CodePrinter(0, methodPrinter); - - printer - .printLn(`export class ${service.name}Client {`) - .indent() - .printLn(`readonly serviceHost: string;`) - .printEmptyLn() - .printLn(`constructor(serviceHost: string, options?: grpc.RpcOptions);`); - - service.methods.forEach((method: RPCMethodDescriptor) => { - if (method.requestStream && method.responseStream) { - printBidirectionalStubMethodTypes(printer, method); - } else if (method.requestStream) { - printClientStreamStubMethodTypes(printer, method); - } else if (method.responseStream) { - printServerStreamStubMethodTypes(printer, method); - } else { - printUnaryStubMethodTypes(printer, method); - } - }); - printer.dedent().printLn('}'); -} - -function printUnaryStubMethodTypes(printer: CodePrinter, method: RPCMethodDescriptor) { - printer - .printLn(`${method.nameAsCamelCase}(`) - .indent() - .printLn(`requestMessage: ${method.requestType},`) - .printLn(`metadata: grpc.Metadata,`) - .dedent() - .printLn(`): Promise;`) - .printLn(`${method.nameAsCamelCase}(`) - .indent() - .printLn(`requestMessage: ${method.requestType},`) - .dedent() - .printLn(`): Promise;`); -} - -function printServerStreamStubMethodTypes( - printer: CodePrinter, - method: RPCMethodDescriptor -) { - printer.printLn( - `${method.nameAsCamelCase}(requestMessage: ${method.requestType}, metadata?: grpc.Metadata): ResponseStream<${method.responseType}>;` - ); -} - -function printClientStreamStubMethodTypes( - printer: CodePrinter, - method: RPCMethodDescriptor -) { - printer.printLn( - `${method.nameAsCamelCase}(metadata?: grpc.Metadata): RequestStream<${method.requestType}>;` - ); -} - -function printBidirectionalStubMethodTypes( - printer: CodePrinter, - method: RPCMethodDescriptor -) { - printer.printLn( - `${method.nameAsCamelCase}(metadata?: grpc.Metadata): BidirectionalStream<${method.requestType}, ${method.responseType}>;` - ); -} diff --git a/src/ts-protoc-gen/ts/FieldTypes.ts b/src/ts-protoc-gen/ts/FieldTypes.ts deleted file mode 100644 index 897cd24..0000000 --- a/src/ts-protoc-gen/ts/FieldTypes.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { filePathToPseudoNamespace, withinNamespaceFromExportEntry } from '../util'; -import { ExportMap } from '../ExportMap'; -import { FieldDescriptorProto } from 'google-protobuf/google/protobuf/descriptor_pb'; - -export const MESSAGE_TYPE = 11; -export const BYTES_TYPE = 12; -export const ENUM_TYPE = 14; - -const TypeNumToTypeString: { [key: number]: string } = {}; -TypeNumToTypeString[1] = 'number'; // TYPE_DOUBLE -TypeNumToTypeString[2] = 'number'; // TYPE_FLOAT -TypeNumToTypeString[3] = 'number'; // TYPE_INT64 -TypeNumToTypeString[4] = 'number'; // TYPE_UINT64 -TypeNumToTypeString[5] = 'number'; // TYPE_INT32 -TypeNumToTypeString[6] = 'number'; // TYPE_FIXED64 -TypeNumToTypeString[7] = 'number'; // TYPE_FIXED32 -TypeNumToTypeString[8] = 'boolean'; // TYPE_BOOL -TypeNumToTypeString[9] = 'string'; // TYPE_STRING -TypeNumToTypeString[10] = 'Object'; // TYPE_GROUP -TypeNumToTypeString[MESSAGE_TYPE] = 'Object'; // TYPE_MESSAGE - Length-delimited aggregate. -TypeNumToTypeString[BYTES_TYPE] = 'Uint8Array'; // TYPE_BYTES -TypeNumToTypeString[13] = 'number'; // TYPE_UINT32 -TypeNumToTypeString[ENUM_TYPE] = 'number'; // TYPE_ENUM -TypeNumToTypeString[15] = 'number'; // TYPE_SFIXED32 -TypeNumToTypeString[16] = 'number'; // TYPE_SFIXED64 -TypeNumToTypeString[17] = 'number'; // TYPE_SINT32 - Uses ZigZag encoding. -TypeNumToTypeString[18] = 'number'; // TYPE_SINT64 - Uses ZigZag encoding. - -export function getTypeName(fieldTypeNum: number): string { - return TypeNumToTypeString[fieldTypeNum]; -} - -export function getFieldType( - type: FieldDescriptorProto.Type, - typeName: string, - currentFileName: string, - exportMap: ExportMap -): string { - if (type === MESSAGE_TYPE) { - const fromExport = exportMap.getMessage(typeName); - if (!fromExport) { - throw new Error('Could not getFieldType for message: ' + typeName); - } - const withinNamespace = withinNamespaceFromExportEntry(typeName, fromExport); - if (fromExport.fileName === currentFileName) { - return withinNamespace; - } else { - return filePathToPseudoNamespace(fromExport.fileName) + '.' + withinNamespace; - } - } else if (type === ENUM_TYPE) { - const fromExport = exportMap.getEnum(typeName); - if (!fromExport) { - throw new Error('Could not getFieldType for enum: ' + typeName); - } - const withinNamespace = withinNamespaceFromExportEntry(typeName, fromExport); - if (fromExport.fileName === currentFileName) { - return `${withinNamespace}Map`; - } else { - return filePathToPseudoNamespace(fromExport.fileName) + '.' + withinNamespace; - } - } else { - return TypeNumToTypeString[type]; - } -} diff --git a/src/ts-protoc-gen/ts/enum.ts b/src/ts-protoc-gen/ts/enum.ts deleted file mode 100644 index 452a6c7..0000000 --- a/src/ts-protoc-gen/ts/enum.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { EnumDescriptorProto } from 'google-protobuf/google/protobuf/descriptor_pb'; -import { Printer } from '../Printer'; - -export function printEnum(enumDescriptor: EnumDescriptorProto, indentLevel: number) { - const printer = new Printer(indentLevel); - const enumInterfaceName = `${enumDescriptor.getName()}Map`; - printer.printEmptyLn(); - printer.printLn(`export interface ${enumInterfaceName} {`); - enumDescriptor.getValueList().forEach((value) => { - printer.printIndentedLn( - `${(value.getName() as string).toUpperCase()}: ${value.getNumber()};` - ); - }); - printer.printLn(`}`); - printer.printEmptyLn(); - printer.printLn(`export const ${enumDescriptor.getName()}: ${enumInterfaceName};`); - return printer.getOutput(); -} diff --git a/src/ts-protoc-gen/ts/extensions.ts b/src/ts-protoc-gen/ts/extensions.ts deleted file mode 100644 index a2ad41e..0000000 --- a/src/ts-protoc-gen/ts/extensions.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Printer } from '../Printer'; -import { ExportMap } from '../ExportMap'; -import { FieldDescriptorProto } from 'google-protobuf/google/protobuf/descriptor_pb'; -import { snakeToCamel } from '../util'; -import { getFieldType } from './FieldTypes'; - -export function printExtension( - fileName: string, - exportMap: ExportMap, - extension: FieldDescriptorProto, - indentLevel: number -): string { - const printer = new Printer(indentLevel + 1); - printer.printEmptyLn(); - const extensionName = snakeToCamel(extension.getName() as string); - const fieldType = getFieldType( - extension.getType() as FieldDescriptorProto.Type, - (extension.getTypeName() as string).slice(1), - fileName, - exportMap - ); - printer.printLn( - `export const ${extensionName}: jspb.ExtensionFieldInfo<${fieldType}>;` - ); - return printer.output; -} diff --git a/src/ts-protoc-gen/ts/fileDescriptorTSD.ts b/src/ts-protoc-gen/ts/fileDescriptorTSD.ts deleted file mode 100644 index 93e6138..0000000 --- a/src/ts-protoc-gen/ts/fileDescriptorTSD.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { filePathToPseudoNamespace, replaceProtoSuffix, getPathToRoot } from '../util'; -import { ExportMap } from '../ExportMap'; -import { Printer } from '../Printer'; -import { FileDescriptorProto } from 'google-protobuf/google/protobuf/descriptor_pb'; -import { WellKnownTypesMap } from '../WellKnown'; -import { printMessage } from './message'; -import { printEnum } from './enum'; -import { printExtension } from './extensions'; - -export function printFileDescriptorTSD( - fileDescriptor: FileDescriptorProto, - exportMap: ExportMap -) { - const fileName = fileDescriptor.getName() as string; - const packageName = fileDescriptor.getPackage() as string; - - const printer = new Printer(0); - - printer.printLn(`// package: ${packageName}`); - printer.printLn(`// file: ${fileDescriptor.getName()}`); - - const upToRoot = getPathToRoot(fileName); - - printer.printEmptyLn(); - printer.printLn(`import * as jspb from "google-protobuf";`); - - fileDescriptor.getDependencyList().forEach((dependency: string) => { - const pseudoNamespace = filePathToPseudoNamespace(dependency); - if (dependency in WellKnownTypesMap) { - printer.printLn( - `import * as ${pseudoNamespace} from "${WellKnownTypesMap[dependency]}";` - ); - } else { - const filePath = replaceProtoSuffix(dependency); - printer.printLn( - `import * as ${pseudoNamespace} from "${upToRoot}${filePath}";` - ); - } - }); - - fileDescriptor.getMessageTypeList().forEach((enumType) => { - printer.print(printMessage(fileName, exportMap, enumType, 0, fileDescriptor)); - }); - - fileDescriptor.getExtensionList().forEach((extension) => { - printer.print(printExtension(fileName, exportMap, extension, 0)); - }); - - fileDescriptor.getEnumTypeList().forEach((enumType) => { - printer.print(printEnum(enumType, 0)); - }); - - printer.printEmptyLn(); - - return printer.getOutput(); -} diff --git a/src/ts-protoc-gen/ts/message.ts b/src/ts-protoc-gen/ts/message.ts deleted file mode 100644 index 9b732d9..0000000 --- a/src/ts-protoc-gen/ts/message.ts +++ /dev/null @@ -1,361 +0,0 @@ -import { - filePathToPseudoNamespace, - snakeToCamel, - uppercaseFirst, - oneOfName, - isProto2, - withinNamespaceFromExportEntry, - normaliseFieldObjectName, - stripPrefix, -} from '../util'; -import { ExportMap } from '../ExportMap'; -import { - FieldDescriptorProto, - FileDescriptorProto, - DescriptorProto, - FieldOptions, -} from 'google-protobuf/google/protobuf/descriptor_pb'; -import { - MESSAGE_TYPE, - BYTES_TYPE, - ENUM_TYPE, - getFieldType, - getTypeName, -} from './FieldTypes'; -import { Printer } from '../Printer'; -import { printEnum } from './enum'; -import { printOneOfDecl } from './oneof'; -import { printExtension } from './extensions'; -import JSType = FieldOptions.JSType; - -function hasFieldPresence( - field: FieldDescriptorProto, - fileDescriptor: FileDescriptorProto -): boolean { - if (field.getLabel() === FieldDescriptorProto.Label.LABEL_REPEATED) { - return false; - } - - if (field.hasOneofIndex()) { - return true; - } - - if (field.getType() === MESSAGE_TYPE) { - return true; - } - - if (isProto2(fileDescriptor)) { - return true; - } - - return false; -} - -export function printMessage( - fileName: string, - exportMap: ExportMap, - messageDescriptor: DescriptorProto, - indentLevel: number, - fileDescriptor: FileDescriptorProto -) { - const messageName = messageDescriptor.getName(); - const messageOptions = messageDescriptor.getOptions(); - if (messageOptions !== undefined && messageOptions.getMapEntry()) { - // this message type is the entry tuple for a map - don't output it - return ''; - } - - const objectTypeName = `AsObject`; - const toObjectType = new Printer(indentLevel + 1); - toObjectType.printLn(`export type ${objectTypeName} = {`); - - const printer = new Printer(indentLevel); - printer.printEmptyLn(); - printer.printLn(`export class ${messageName} extends jspb.Message {`); - - const oneOfGroups: Array> = []; - - messageDescriptor.getFieldList().forEach((field) => { - if (field.hasOneofIndex()) { - const oneOfIndex = field.getOneofIndex() as number; - let existing = oneOfGroups[oneOfIndex]; - if (existing === undefined) { - existing = []; - oneOfGroups[oneOfIndex] = existing; - } - existing.push(field); - } - const snakeCaseName = stripPrefix((field.getName() as string).toLowerCase(), '_'); - const camelCaseName = snakeToCamel(snakeCaseName); - const withUppercase = uppercaseFirst(camelCaseName); - const type = field.getType(); - - let exportType; - const fullTypeName = (field.getTypeName() as string).slice(1); - if (type === MESSAGE_TYPE) { - const fieldMessageType = exportMap.getMessage(fullTypeName); - if (fieldMessageType === undefined) { - throw new Error('No message export for: ' + fullTypeName); - } - if ( - fieldMessageType.messageOptions !== undefined && - fieldMessageType.messageOptions.getMapEntry() - ) { - // This field is a map - const keyTuple = fieldMessageType.mapFieldOptions!.key; - const keyType = keyTuple[0]; - const keyTypeName = getFieldType( - keyType, - keyTuple[1], - fileName, - exportMap - ); - const valueTuple = fieldMessageType.mapFieldOptions!.value; - const valueType = valueTuple[0]; - let valueTypeName = getFieldType( - valueType, - valueTuple[1], - fileName, - exportMap - ); - if (valueType === BYTES_TYPE) { - valueTypeName = 'Uint8Array | string'; - } - if (valueType === ENUM_TYPE) { - valueTypeName = `${valueTypeName}[keyof ${valueTypeName}]`; - } - printer.printIndentedLn( - `get${withUppercase}Map(): jspb.Map<${keyTypeName}, ${valueTypeName}>;` - ); - printer.printIndentedLn(`clear${withUppercase}Map(): void;`); - toObjectType.printIndentedLn( - `${camelCaseName}Map: Array<[${keyTypeName}${ - keyType === MESSAGE_TYPE ? '.AsObject' : '' - }, ${valueTypeName}${ - valueType === MESSAGE_TYPE ? '.AsObject' : '' - }]>,` - ); - return; - } - const withinNamespace = withinNamespaceFromExportEntry( - fullTypeName, - fieldMessageType - ); - if (fieldMessageType.fileName === fileName) { - exportType = withinNamespace; - } else { - exportType = - filePathToPseudoNamespace(fieldMessageType.fileName) + - '.' + - withinNamespace; - } - } else if (type === ENUM_TYPE) { - const fieldEnumType = exportMap.getEnum(fullTypeName); - if (fieldEnumType === undefined) { - throw new Error('No enum export for: ' + fullTypeName); - } - const withinNamespace = withinNamespaceFromExportEntry( - fullTypeName, - fieldEnumType - ); - if (fieldEnumType.fileName === fileName) { - exportType = withinNamespace; - } else { - exportType = - filePathToPseudoNamespace(fieldEnumType.fileName) + - '.' + - withinNamespace; - } - exportType = `${exportType}Map[keyof ${exportType}Map]`; - } else { - const options = field.getOptions() as FieldOptions; - if (options && options.hasJstype()) { - switch (options.getJstype()) { - case JSType.JS_NUMBER: - exportType = 'number'; - break; - case JSType.JS_STRING: - exportType = 'string'; - break; - default: - exportType = getTypeName((type as unknown) as number); - } - } else { - exportType = getTypeName((type as unknown) as number); - } - } - - let hasClearMethod = false; - function printClearIfNotPresent() { - if (!hasClearMethod) { - hasClearMethod = true; - printer.printIndentedLn( - `clear${withUppercase}${ - field.getLabel() === FieldDescriptorProto.Label.LABEL_REPEATED - ? 'List' - : '' - }(): void;` - ); - } - } - - if (hasFieldPresence(field, fileDescriptor)) { - printer.printIndentedLn(`has${withUppercase}(): boolean;`); - printClearIfNotPresent(); - } - - function printRepeatedAddMethod(valueType: string) { - const optionalValue = field.getType() === MESSAGE_TYPE; - printer.printIndentedLn( - `add${withUppercase}(value${ - optionalValue ? '?' : '' - }: ${valueType}, index?: number): ${valueType};` - ); - } - - if (field.getLabel() === FieldDescriptorProto.Label.LABEL_REPEATED) { - // is repeated - printClearIfNotPresent(); - if (type === BYTES_TYPE) { - toObjectType.printIndentedLn( - `${camelCaseName}List: Array,` - ); - printer.printIndentedLn( - `get${withUppercase}List(): Array;` - ); - printer.printIndentedLn( - `get${withUppercase}List_asU8(): Array;` - ); - printer.printIndentedLn( - `get${withUppercase}List_asB64(): Array;` - ); - printer.printIndentedLn( - `set${withUppercase}List(value: Array): void;` - ); - printRepeatedAddMethod('Uint8Array | string'); - } else { - toObjectType.printIndentedLn( - `${camelCaseName}List: Array<${exportType}${ - type === MESSAGE_TYPE ? '.AsObject' : '' - }>,` - ); - printer.printIndentedLn( - `get${withUppercase}List(): Array<${exportType}>;` - ); - printer.printIndentedLn( - `set${withUppercase}List(value: Array<${exportType}>): void;` - ); - printRepeatedAddMethod(exportType); - } - } else { - if (type === BYTES_TYPE) { - toObjectType.printIndentedLn(`${camelCaseName}: Uint8Array | string,`); - printer.printIndentedLn(`get${withUppercase}(): Uint8Array | string;`); - printer.printIndentedLn(`get${withUppercase}_asU8(): Uint8Array;`); - printer.printIndentedLn(`get${withUppercase}_asB64(): string;`); - printer.printIndentedLn( - `set${withUppercase}(value: Uint8Array | string): void;` - ); - } else { - let fieldObjectType = exportType; - let canBeUndefined = false; - if (type === MESSAGE_TYPE) { - fieldObjectType += '.AsObject'; - if ( - !isProto2(fileDescriptor) || - field.getLabel() === FieldDescriptorProto.Label.LABEL_OPTIONAL - ) { - canBeUndefined = true; - } - } else { - if (isProto2(fileDescriptor)) { - canBeUndefined = true; - } - } - const fieldObjectName = normaliseFieldObjectName(camelCaseName); - toObjectType.printIndentedLn( - `${fieldObjectName}${canBeUndefined ? '?' : ''}: ${fieldObjectType},` - ); - printer.printIndentedLn( - `get${withUppercase}(): ${exportType}${ - canBeUndefined ? ' | undefined' : '' - };` - ); - printer.printIndentedLn( - `set${withUppercase}(value${ - type === MESSAGE_TYPE ? '?' : '' - }: ${exportType}): void;` - ); - } - } - printer.printEmptyLn(); - }); - - toObjectType.printLn(`}`); - - messageDescriptor.getOneofDeclList().forEach((oneOfDecl) => { - const name = oneOfDecl.getName() as string; - printer.printIndentedLn( - `get${oneOfName(name)}Case(): ${messageName}.${oneOfName(name)}Case;` - ); - }); - - printer.printIndentedLn(`serializeBinary(): Uint8Array;`); - printer.printIndentedLn( - `toObject(includeInstance?: boolean): ${messageName}.${objectTypeName};` - ); - printer.printIndentedLn( - `static toObject(includeInstance: boolean, msg: ${messageName}): ${messageName}.${objectTypeName};` - ); - printer.printIndentedLn( - `static extensions: {[key: number]: jspb.ExtensionFieldInfo};` - ); - printer.printIndentedLn( - `static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo};` - ); - printer.printIndentedLn( - `static serializeBinaryToWriter(message: ${messageName}, writer: jspb.BinaryWriter): void;` - ); - printer.printIndentedLn( - `static deserializeBinary(bytes: Uint8Array): ${messageName};` - ); - printer.printIndentedLn( - `static deserializeBinaryFromReader(message: ${messageName}, reader: jspb.BinaryReader): ${messageName};` - ); - - printer.printLn(`}`); - printer.printEmptyLn(); - - printer.printLn(`export namespace ${messageName} {`); - - printer.print(toObjectType.getOutput()); - - messageDescriptor.getNestedTypeList().forEach((nested) => { - const msgOutput = printMessage( - fileName, - exportMap, - nested, - indentLevel + 1, - fileDescriptor - ); - if (msgOutput !== '') { - // If the message class is a Map entry then it isn't output, so don't print the namespace block - printer.print(msgOutput); - } - }); - messageDescriptor.getEnumTypeList().forEach((enumType) => { - printer.print(`${printEnum(enumType, indentLevel + 1)}`); - }); - messageDescriptor.getOneofDeclList().forEach((oneOfDecl, index) => { - printer.print( - `${printOneOfDecl(oneOfDecl, oneOfGroups[index] || [], indentLevel + 1)}` - ); - }); - messageDescriptor.getExtensionList().forEach((extension) => { - printer.print(printExtension(fileName, exportMap, extension, indentLevel + 1)); - }); - - printer.printLn(`}`); - - return printer.getOutput(); -} diff --git a/src/ts-protoc-gen/ts/oneof.ts b/src/ts-protoc-gen/ts/oneof.ts deleted file mode 100644 index 1a25026..0000000 --- a/src/ts-protoc-gen/ts/oneof.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Printer } from '../Printer'; -import { - OneofDescriptorProto, - FieldDescriptorProto, -} from 'google-protobuf/google/protobuf/descriptor_pb'; -import { oneOfName } from '../util'; - -export function printOneOfDecl( - oneOfDecl: OneofDescriptorProto, - oneOfFields: Array, - indentLevel: number -) { - const printer = new Printer(indentLevel); - printer.printEmptyLn(); - printer.printLn(`export enum ${oneOfName(oneOfDecl.getName() as string)}Case {`); - printer.printIndentedLn( - `${(oneOfDecl.getName() as string).toUpperCase()}_NOT_SET = 0,` - ); - oneOfFields.forEach((field) => { - printer.printIndentedLn( - `${(field.getName() as string).toUpperCase()} = ${ - field.getNumber() as number - },` - ); - }); - printer.printLn('}'); - - return printer.output; -} diff --git a/src/ts-protoc-gen/util.ts b/src/ts-protoc-gen/util.ts deleted file mode 100644 index 86187ca..0000000 --- a/src/ts-protoc-gen/util.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { parse } from 'querystring'; -import { FileDescriptorProto } from 'google-protobuf/google/protobuf/descriptor_pb'; -import { ExportEnumEntry, ExportMessageEntry } from './ExportMap'; -import { ServiceParameter, ModeParameter } from './parameters'; -export function filePathToPseudoNamespace(filePath: string): string { - return ( - filePath - .replace('.proto', '') - .replace(/\//g, '_') - .replace(/\./g, '_') - .replace(/\-/g, '_') + '_pb' - ); -} - -export function stripPrefix(str: string, prefix: string) { - if (str.substr(0, prefix.length) === prefix) { - return str.substr(prefix.length); - } - return str; -} - -export function snakeToCamel(str: string): string { - return str.replace(/(\_\w)/g, function (m) { - return m[1].toUpperCase(); - }); -} - -export function uppercaseFirst(str: string): string { - return str.charAt(0).toUpperCase() + str.slice(1); -} - -const PROTO2_SYNTAX = 'proto2'; -export function isProto2(fileDescriptor: FileDescriptorProto): boolean { - // Empty syntax defaults to proto2 - return ( - fileDescriptor.getSyntax() === '' || fileDescriptor.getSyntax() === PROTO2_SYNTAX - ); -} - -export function oneOfName(name: string) { - return uppercaseFirst(snakeToCamel(name.toLowerCase())); -} - -export function generateIndent(indentLevel: number): string { - let indent = ''; - for (let i = 0; i < indentLevel; i++) { - indent += ' '; - } - return indent; -} - -export function getPathToRoot(fileName: string) { - const depth = fileName.split('/').length; - return depth === 1 ? './' : new Array(depth).join('../'); -} - -export function withinNamespaceFromExportEntry( - name: string, - exportEntry: ExportMessageEntry | ExportEnumEntry -) { - return exportEntry.pkg ? name.substring(exportEntry.pkg.length + 1) : name; -} - -export function replaceProtoSuffix(protoFilePath: string): string { - const suffix = '.proto'; - const hasProtoSuffix = - protoFilePath.slice(protoFilePath.length - suffix.length) === suffix; - return hasProtoSuffix - ? protoFilePath.slice(0, -suffix.length) + '_pb' - : protoFilePath; -} - -export function withAllStdIn(callback: (buffer: Buffer) => void): void { - const ret: Buffer[] = []; - let len = 0; - - const stdin = process.stdin; - stdin.on('readable', function () { - let chunk = stdin.read(); - - while (chunk) { - if (!(chunk instanceof Buffer)) throw new Error('Did not receive buffer'); - ret.push(chunk); - len += chunk.length; - chunk = stdin.read(); - } - }); - - stdin.on('end', function () { - callback(Buffer.concat(ret, len)); - }); -} - -// normaliseFieldObjectName modifies the field name that appears in the `asObject` representation -// to match the logic found in `protobuf/compiler/js/js_generator.cc`. See: https://goo.gl/tX1dPQ -export function normaliseFieldObjectName(name: string): string { - switch (name) { - case 'abstract': - case 'boolean': - case 'break': - case 'byte': - case 'case': - case 'catch': - case 'char': - case 'class': - case 'const': - case 'continue': - case 'debugger': - case 'default': - case 'delete': - case 'do': - case 'double': - case 'else': - case 'enum': - case 'export': - case 'extends': - case 'false': - case 'final': - case 'finally': - case 'float': - case 'for': - case 'function': - case 'goto': - case 'if': - case 'implements': - case 'import': - case 'in': - case 'instanceof': - case 'int': - case 'interface': - case 'long': - case 'native': - case 'new': - case 'null': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'return': - case 'short': - case 'static': - case 'super': - case 'switch': - case 'synchronized': - case 'this': - case 'throw': - case 'throws': - case 'transient': - case 'try': - case 'typeof': - case 'var': - case 'void': - case 'volatile': - case 'while': - case 'with': - return `pb_${name}`; - } - return name; -} - -export function getServiceParameter(service?: string): ServiceParameter { - switch (service) { - case 'true': - console.warn( - 'protoc-gen-ts warning: The service=true parameter has been deprecated. Use service=grpc-web instead.' - ); - return ServiceParameter.GrpcWeb; - case 'grpc-web': - return ServiceParameter.GrpcWeb; - case 'grpc-node': - return ServiceParameter.GrpcNode; - case undefined: - return ServiceParameter.None; - default: - throw new Error(`Unrecognised service parameter: ${service}`); - } -} - -export function getModeParameter(mode?: string): ModeParameter { - switch (mode) { - case 'grpc-js': - return ModeParameter.GrpcJs; - case undefined: - return ModeParameter.None; - default: - throw new Error(`Unrecognised mode parameter: ${mode}`); - } -} - -export function getParameterEnums( - parameter: string -): { - service: ServiceParameter; - mode: ModeParameter; -} { - const { service, mode } = parse(parameter, ','); - return { - service: getServiceParameter(service as string), - mode: getModeParameter(mode as string), - }; -} diff --git a/terraform/app/discord.tf b/terraform/app/discord.tf deleted file mode 100644 index d388fd4..0000000 --- a/terraform/app/discord.tf +++ /dev/null @@ -1,56 +0,0 @@ -locals { - discord_labels = { - "app.kubernetes.io/name" = "discord" - "app.kubernetes.io/part-of" = "roleypoly" - "roleypoly/environment" = var.environment_tag - } -} - -resource "kubernetes_deployment" "discord" { - metadata { - name = "discord" - namespace = local.ns - labels = local.discord_labels - } - - spec { - replicas = 1 - - selector { - match_labels = local.discord_labels - } - - template { - metadata { - labels = local.discord_labels - } - - spec { - container { - image = "roleypoly/discord:${local.tags.discord}" - name = "discord" - - liveness_probe { - http_get { - path = "/" - port = 16777 - } - - initial_delay_seconds = 3 - period_seconds = 3 - } - - readiness_probe { - http_get { - path = "/" - port = 16777 - } - - initial_delay_seconds = 3 - period_seconds = 3 - } - } - } - } - } -} diff --git a/terraform/app/provision.tf b/terraform/app/provision.tf deleted file mode 100644 index 4098140..0000000 --- a/terraform/app/provision.tf +++ /dev/null @@ -1,26 +0,0 @@ -terraform { - required_version = ">=0.12.6" - - backend "remote" { - organization = "Roleypoly" - - workspaces { - prefix = "roleypoly-app-" - } - } -} - -variable "k8s_endpoint" { type = string } -variable "k8s_token" { type = string } -variable "k8s_cert" { type = string } -variable "k8s_namespace" { type = string } -provider "kubernetes" { - load_config_file = false - token = var.k8s_token - host = var.k8s_endpoint - cluster_ca_certificate = var.k8s_cert -} - -locals { - ns = var.k8s_namespace -} diff --git a/terraform/app/tags.auto.tfvars.json b/terraform/app/tags.auto.tfvars.json deleted file mode 100644 index 9fd6f3e..0000000 --- a/terraform/app/tags.auto.tfvars.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "deployment_env": { - "production": {}, - "staging": {} - } -} diff --git a/terraform/app/variables.tf b/terraform/app/variables.tf deleted file mode 100644 index fa4dc46..0000000 --- a/terraform/app/variables.tf +++ /dev/null @@ -1,12 +0,0 @@ -variable "deployment_env" { - type = map(map(string)) -} - -variable "environment_tag" { - type = string - description = "One of: production, staging, test" -} - -locals { - tags = var.deployment_env[var.environment_tag] -} diff --git a/terraform/modules/cloudflare-cluster-dns/main.tf b/terraform/modules/cloudflare-cluster-dns/main.tf deleted file mode 100644 index 89ddb10..0000000 --- a/terraform/modules/cloudflare-cluster-dns/main.tf +++ /dev/null @@ -1,66 +0,0 @@ -# Primary cluster hostname -resource "cloudflare_record" "cluster" { - zone_id = var.cloudflare-zone-id - name = var.record-name - value = var.ingress-endpoint - type = "A" - proxied = true -} - -# PRD & STG records for direct FQDN usage -# Long term, these will also be CNAME'd to -# - prd == roleypoly.com -# - stg == beta.roleypoly.com -resource "cloudflare_record" "prd" { - zone_id = var.cloudflare-zone-id - name = "prd.${var.record-name}" - value = cloudflare_record.cluster.hostname - type = "CNAME" - proxied = true -} - -resource "cloudflare_record" "stg" { - zone_id = var.cloudflare-zone-id - name = "stg.${var.record-name}" - value = cloudflare_record.cluster.hostname - type = "CNAME" - proxied = true -} - -# Origin CA Cert -resource "tls_private_key" "origin-ca-key" { - algorithm = "ECDSA" -} - -resource "tls_cert_request" "origin-ca-csr" { - key_algorithm = tls_private_key.origin-ca-key.algorithm - private_key_pem = tls_private_key.origin-ca-key.private_key_pem - - subject { - common_name = "roleypoly.com" - organization = "Roleypoly" - } -} - -resource "cloudflare_origin_ca_certificate" "origin-ca-cert" { - csr = tls_cert_request.origin-ca-csr.cert_request_pem - hostnames = [ - cloudflare_record.cluster.hostname, - cloudflare_record.prd.hostname, - cloudflare_record.stg.hostname - ] - request_type = "origin-ecc" - requested_validity = 1095 # 3 years -} - -resource "kubernetes_secret" "cloudflare-origin" { - type = "kubernetes.io/tls" - metadata { - name = "cloudflare-origin" - namespace = "default" - } - data = { - "tls.crt" = base64encode(cloudflare_origin_ca_certificate.origin-ca-cert.certificate), - "tls.key" = base64encode(tls_private_key.origin-ca-key.private_key_pem) - } -} diff --git a/terraform/modules/cloudflare-cluster-dns/variables.tf b/terraform/modules/cloudflare-cluster-dns/variables.tf deleted file mode 100644 index 827f348..0000000 --- a/terraform/modules/cloudflare-cluster-dns/variables.tf +++ /dev/null @@ -1,19 +0,0 @@ -variable "ingress-name" { - type = string -} - -variable "ingress-namespace" { - type = string -} - -variable "ingress-endpoint" { - type = string -} - -variable "cloudflare-zone-id" { - type = string -} - -variable "record-name" { - type = string -} diff --git a/terraform/modules/cloudflare-cluster-dns/version.tf b/terraform/modules/cloudflare-cluster-dns/version.tf deleted file mode 100644 index 69d8c70..0000000 --- a/terraform/modules/cloudflare-cluster-dns/version.tf +++ /dev/null @@ -1,4 +0,0 @@ -terraform { - required_version = ">=0.12" -} - diff --git a/terraform/modules/cluster-environment/main.tf b/terraform/modules/cluster-environment/main.tf deleted file mode 100644 index 31d39b1..0000000 --- a/terraform/modules/cluster-environment/main.tf +++ /dev/null @@ -1,56 +0,0 @@ -locals { - ns = "${var.app_name}-${var.environment_tag}" - labels = { - "app.kubernetes.io/name" = var.app_name - "app.kubernetes.io/part-of" = var.app_name - "roleypoly/environment" = var.environment_tag - } -} - -resource "kubernetes_namespace" "ns" { - metadata { - name = local.ns - labels = local.labels - } -} - -resource "kubernetes_service_account" "sa" { - metadata { - name = "${local.ns}-sa-tf" - namespace = local.ns - labels = local.labels - } -} - -resource "kubernetes_secret" "sa-key" { - metadata { - name = "${local.ns}-sa-tf-key" - namespace = local.ns - labels = local.labels - annotations = { - "kubernetes.io/service-account.name" = kubernetes_service_account.sa.metadata.0.name - } - } - - type = "kubernetes.io/service-account-token" -} - -resource "kubernetes_role_binding" "sa-admin-rb" { - metadata { - name = "${local.ns}-sa-admin-binding" - namespace = local.ns - labels = local.labels - } - - subject { - kind = "ServiceAccount" - name = kubernetes_service_account.sa.metadata.0.name - namespace = local.ns - } - - role_ref { - kind = "ClusterRole" - name = "admin" - api_group = "rbac.authorization.k8s.io" - } -} diff --git a/terraform/modules/cluster-environment/output.tf b/terraform/modules/cluster-environment/output.tf deleted file mode 100644 index 08b4642..0000000 --- a/terraform/modules/cluster-environment/output.tf +++ /dev/null @@ -1,7 +0,0 @@ -output "service_account_token" { - value = lookup(kubernetes_secret.sa-key, "data.token", "") -} - -output "namespace" { - value = local.ns -} diff --git a/terraform/modules/cluster-environment/variables.tf b/terraform/modules/cluster-environment/variables.tf deleted file mode 100644 index 501799c..0000000 --- a/terraform/modules/cluster-environment/variables.tf +++ /dev/null @@ -1,9 +0,0 @@ -variable "environment_tag" { - type = string - default = "main" -} - -variable "app_name" { - type = string -} - diff --git a/terraform/modules/nginx-ingress-controller/main.tf b/terraform/modules/nginx-ingress-controller/main.tf deleted file mode 100644 index 49a9bb9..0000000 --- a/terraform/modules/nginx-ingress-controller/main.tf +++ /dev/null @@ -1,331 +0,0 @@ -locals { - ns = kubernetes_namespace.ns.metadata.0.name - labels = { - "app.kubernetes.io/name" = "ingress-nginx" - "app.kubernetes.io/part-of" = "ingress-nginx" - } -} - -resource "kubernetes_namespace" "ns" { - metadata { - name = "ingress-nginx" - labels = local.labels - } -} - -resource "kubernetes_config_map" "cm-nginx" { - metadata { - name = "nginx-configuration" - namespace = local.ns - labels = local.labels - } -} - -resource "kubernetes_config_map" "cm-tcp" { - metadata { - name = "tcp-services" - namespace = local.ns - labels = local.labels - } -} - -resource "kubernetes_config_map" "cm-udp" { - metadata { - name = "udp-services" - namespace = local.ns - labels = local.labels - } -} - -resource "kubernetes_service_account" "sa" { - metadata { - name = "nginx-ingress-serviceaccount" - namespace = local.ns - labels = local.labels - } -} - -resource "kubernetes_cluster_role" "cr" { - metadata { - name = "nginx-ingress-clusterrole" - labels = local.labels - } - rule { - api_groups = [""] - resources = ["configmaps", "endpoints", "nodes", "pods", "secrets"] - verbs = ["list", "watch"] - } - rule { - api_groups = [""] - resources = ["nodes"] - verbs = ["get"] - } - rule { - api_groups = [""] - resources = ["services"] - verbs = ["get", "list", "watch"] - } - rule { - api_groups = [""] - resources = ["events"] - verbs = ["create", "patch"] - } - rule { - api_groups = ["extensions", "networking.k8s.io"] - resources = ["ingresses"] - verbs = ["get", "list", "watch"] - } - rule { - api_groups = ["extensions", "networking.k8s.io"] - resources = ["ingresses/status"] - verbs = ["update"] - } -} - -resource "kubernetes_role" "role" { - metadata { - name = "nginx-ingress-role" - namespace = local.ns - labels = local.labels - } - - rule { - api_groups = [""] - resources = ["configmaps", "pods", "secrets", "namespaces"] - verbs = ["get"] - } - - rule { - api_groups = [""] - resources = ["configmaps"] - resource_names = ["ingress-controller-leader-nginx"] - verbs = ["get", "update"] - } - - rule { - api_groups = [""] - resources = ["configmaps"] - verbs = ["create"] - } - - rule { - api_groups = [""] - resources = ["endpoints"] - verbs = ["get"] - } -} - -resource "kubernetes_role_binding" "rb" { - metadata { - name = "nginx-ingress-role-nisa-binding" - namespace = local.ns - labels = local.labels - } - - role_ref { - api_group = "rbac.authorization.k8s.io" - kind = "Role" - name = kubernetes_role.role.metadata.0.name - } - - subject { - kind = "ServiceAccount" - name = kubernetes_service_account.sa.metadata.0.name - namespace = local.ns - } -} - -resource "kubernetes_cluster_role_binding" "crb" { - metadata { - name = "nginx-ingress-clusterrole-nisa-binding" - labels = local.labels - } - - role_ref { - api_group = "rbac.authorization.k8s.io" - kind = "ClusterRole" - name = kubernetes_cluster_role.cr.metadata.0.name - } - - subject { - kind = "ServiceAccount" - name = kubernetes_service_account.sa.metadata.0.name - namespace = local.ns - } -} - -resource "kubernetes_deployment" "deployment" { - metadata { - name = "nginx-ingress-controller" - namespace = local.ns - labels = local.labels - } - - spec { - replicas = 3 - - selector { - match_labels = local.labels - } - - template { - metadata { - labels = local.labels - annotations = { - "prometheus.io/port" = "10254" - "prometheus.io/scrape" = "true" - } - } - - spec { - automount_service_account_token = true - termination_grace_period_seconds = 300 - service_account_name = kubernetes_service_account.sa.metadata.0.name - node_selector = { - "kubernetes.io/os" = "linux" - node_type = "static" - } - - container { - name = "nginx-ingress-controller" - image = "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:${var.nginx-ingress-version}" - args = [ - "/nginx-ingress-controller", - "--configmap=${local.ns}/${kubernetes_config_map.cm-nginx.metadata.0.name}", - "--tcp-services-configmap=${local.ns}/${kubernetes_config_map.cm-tcp.metadata.0.name}", - "--udp-services-configmap=${local.ns}/${kubernetes_config_map.cm-udp.metadata.0.name}", - "--publish-service=${local.ns}/ingress-nginx", - "--annotations-prefix=nginx.ingress.kubernetes.io", - ] - security_context { - allow_privilege_escalation = true - capabilities { - drop = ["ALL"] - add = ["NET_BIND_SERVICE"] - } - run_as_user = 101 - } - - env { - name = "POD_NAME" - value_from { - field_ref { - field_path = "metadata.name" - } - } - } - - env { - name = "POD_NAMESPACE" - value_from { - field_ref { - field_path = "metadata.namespace" - } - } - } - - port { - name = "http" - container_port = 80 - protocol = "TCP" - } - - port { - name = "https" - container_port = 443 - protocol = "TCP" - } - - liveness_probe { - http_get { - path = "/healthz" - port = 10254 - scheme = "HTTP" - } - failure_threshold = 3 - initial_delay_seconds = 10 - period_seconds = 10 - success_threshold = 1 - timeout_seconds = 10 - } - - readiness_probe { - http_get { - path = "/healthz" - port = 10254 - scheme = "HTTP" - } - failure_threshold = 3 - initial_delay_seconds = 10 - period_seconds = 10 - success_threshold = 1 - timeout_seconds = 10 - } - - lifecycle { - pre_stop { - exec { - command = ["/wait-shutdown"] - } - } - } - } - } - } - } -} - -resource "kubernetes_limit_range" "lr" { - metadata { - name = "ingress-nginx" - namespace = local.ns - labels = local.labels - } - - spec { - limit { - min = { - memory = "90Mi" - cpu = "100m" - } - - type = "Container" - } - } -} - -# Specific service related to Google Cloud -resource "kubernetes_service" "svc" { - metadata { - name = "ingress-nginx" - namespace = local.ns - labels = local.labels - } - - spec { - external_traffic_policy = "Local" - type = "LoadBalancer" - selector = local.labels - - port { - name = "http" - port = 80 - protocol = "TCP" - target_port = "http" - } - - port { - name = "https" - port = 443 - protocol = "TCP" - target_port = "https" - } - } - - lifecycle { - ignore_changes = [ - // We add no annotations, but DO adds some. - metadata[0].annotations, - ] - } -} diff --git a/terraform/modules/nginx-ingress-controller/outputs.tf b/terraform/modules/nginx-ingress-controller/outputs.tf deleted file mode 100644 index 06bf715..0000000 --- a/terraform/modules/nginx-ingress-controller/outputs.tf +++ /dev/null @@ -1,11 +0,0 @@ -output "service-name" { - value = kubernetes_service.svc.metadata.0.name -} - -output "service-namespace" { - value = kubernetes_service.svc.metadata.0.namespace -} - -output "service-endpoint" { - value = kubernetes_service.svc.load_balancer_ingress.0.ip -} diff --git a/terraform/modules/nginx-ingress-controller/variables.tf b/terraform/modules/nginx-ingress-controller/variables.tf deleted file mode 100644 index 48c412c..0000000 --- a/terraform/modules/nginx-ingress-controller/variables.tf +++ /dev/null @@ -1,4 +0,0 @@ -variable "nginx-ingress-version" { - type = string - default = "0.30.0" -} diff --git a/terraform/modules/nginx-ingress-controller/version.tf b/terraform/modules/nginx-ingress-controller/version.tf deleted file mode 100644 index 0ade70f..0000000 --- a/terraform/modules/nginx-ingress-controller/version.tf +++ /dev/null @@ -1,3 +0,0 @@ -terraform { - required_version = ">=0.12" -} \ No newline at end of file diff --git a/terraform/modules/tfc-workspace/main.tf b/terraform/modules/tfc-workspace/main.tf deleted file mode 100644 index d94609b..0000000 --- a/terraform/modules/tfc-workspace/main.tf +++ /dev/null @@ -1,57 +0,0 @@ -locals { - dependentModulesPathed = formatlist("terraform/modules/%s", var.dependent_modules) - variableDescription = "Terraform-owned variable" -} - -resource "tfe_workspace" "ws" { - name = var.workspace-name - organization = var.tfc_org - auto_apply = var.auto_apply - trigger_prefixes = concat([var.directory], local.dependentModulesPathed) - working_directory = var.directory - - vcs_repo { - identifier = var.repo - branch = var.branch - oauth_token_id = var.tfc_oauth_token_id - } -} - -resource "tfe_notification_configuration" "webhook" { - name = "${var.workspace-name}-webhook" - enabled = true - destination_type = "slack" - triggers = ["run:created", "run:planning", "run:needs_attention", "run:applying", "run:completed", "run:errored"] - url = var.tfc_webhook_url - workspace_id = tfe_workspace.ws.id -} - -resource "tfe_variable" "vars" { - for_each = var.vars - - key = each.key - value = each.value - category = "terraform" - workspace_id = tfe_workspace.ws.id - sensitive = false -} - -resource "tfe_variable" "sensitive" { - for_each = var.secret-vars - - key = each.key - value = each.value - category = "terraform" - workspace_id = tfe_workspace.ws.id - sensitive = true -} - -resource "tfe_variable" "env" { - for_each = var.env-vars - - key = each.key - value = each.value - category = "env" - workspace_id = tfe_workspace.ws.id - sensitive = true -} diff --git a/terraform/modules/tfc-workspace/outputs.tf b/terraform/modules/tfc-workspace/outputs.tf deleted file mode 100644 index a5d7c3d..0000000 --- a/terraform/modules/tfc-workspace/outputs.tf +++ /dev/null @@ -1,3 +0,0 @@ -output "workspace" { - value = tfe_workspace.ws[*] -} \ No newline at end of file diff --git a/terraform/modules/tfc-workspace/variables.tf b/terraform/modules/tfc-workspace/variables.tf deleted file mode 100644 index 46acfae..0000000 --- a/terraform/modules/tfc-workspace/variables.tf +++ /dev/null @@ -1,54 +0,0 @@ -variable "workspace-name" { - type = string -} - -variable "secret-vars" { - type = map(string) - default = {} -} - -variable "vars" { - type = map(string) - default = {} -} - -variable "env-vars" { - type = map(string) - default = {} -} - -variable "repo" { - type = string -} - -variable "directory" { - type = string - default = "/" -} - -variable "branch" { - type = string - default = "master" -} - -variable "auto_apply" { - type = bool - default = false -} - -variable "dependent_modules" { - type = list(string) - default = [] -} - -variable "tfc_oauth_token_id" { - type = string -} - -variable "tfc_org" { - type = string -} - -variable "tfc_webhook_url" { - type = string -} diff --git a/terraform/modules/tfc-workspace/version.tf b/terraform/modules/tfc-workspace/version.tf deleted file mode 100644 index aad74ef..0000000 --- a/terraform/modules/tfc-workspace/version.tf +++ /dev/null @@ -1,7 +0,0 @@ -terraform { - required_version = ">=0.12.6" -} - -provider "tfe" { - version = ">=0.15.0" -} \ No newline at end of file diff --git a/terraform/platform/app/environments.tf b/terraform/platform/app/environments.tf deleted file mode 100644 index 0861d29..0000000 --- a/terraform/platform/app/environments.tf +++ /dev/null @@ -1,13 +0,0 @@ -module "app-env-prod" { - source = "github.com/roleypoly/devops.git//terraform/modules/cluster-environment" - - environment_tag = "production" - app_name = "roleypoly" -} - -module "app-env-stage" { - source = "github.com/roleypoly/devops.git//terraform/modules/cluster-environment" - - environment_tag = "staging" - app_name = "roleypoly" -} diff --git a/terraform/platform/app/provision.tf b/terraform/platform/app/provision.tf deleted file mode 100644 index 841eaf7..0000000 --- a/terraform/platform/app/provision.tf +++ /dev/null @@ -1,47 +0,0 @@ -terraform { - required_version = ">=0.12.6" - - backend "remote" { - organization = "Roleypoly" - - workspaces { - name = "roleypoly-platform-app" - } - } -} - -/* - Terraform Cloud -*/ -variable "tfc_email" { type = string } -variable "tfc_oauth_token_id" { type = string } -variable "tfc_webhook_url" { type = string } -provider "tfe" { - version = ">=0.15.0" -} - -/* - Cloudflare (for tfc vars) -*/ -variable "cloudflare_token" { type = string } -variable "cloudflare_email" { type = string } -variable "cloudflare_zone_id" { type = string } -provider "cloudflare" { - version = ">=2.0" - email = var.cloudflare_email - api_token = var.cloudflare_token - api_user_service_key = var.cloudflare_origin_ca_token -} - -/* - Kubernetes -*/ -variable "k8s_endpoint" { type = string } -variable "k8s_token" { type = string } -variable "k8s_cert" { type = string } -provider "kubernetes" { - load_config_file = false - token = var.k8s_token - host = var.k8s_endpoint - cluster_ca_certificate = var.k8s_cert -} diff --git a/terraform/platform/app/workspaces.tf b/terraform/platform/app/workspaces.tf deleted file mode 100644 index 910b75e..0000000 --- a/terraform/platform/app/workspaces.tf +++ /dev/null @@ -1,76 +0,0 @@ -locals { - repo = "roleypoly/devops" - branch = "master" - tfc_org = "Roleypoly" - - common_vars = {} - common_secret_vars = { - cloudflare_token = var.cloudflare_token, - cloudflare_email = var.cloudflare_email, - cloudflare_zone_id = var.cloudflare_zone_id, - k8s_endpoint = var.k8s_endpoint, - } -} - -module "tfcws-production" { - source = "github.com/roleypoly/devops.git//terraform/modules/tfc-workspace" - workspace-name = "roleypoly-app-production" - repo = local.repo - branch = local.branch - tfc_webhook_url = var.tfc_webhook_url - directory = "terraform/app" - auto_apply = false - dependent_modules = [] - tfc_org = local.tfc_org - tfc_oauth_token_id = var.tfc_oauth_token_id - - vars = merge(local.common_vars, { - environment_tag = "production", - ingress_hostname = "prd.roleypoly-nyc.kc" - k8s_namespace = module.app-env-prod.namespace, - }) - - secret-vars = merge(local.common_secret_vars, { - k8s_cert = var.k8s_cert, - }) -} - -module "tfcws-staging" { - source = "github.com/roleypoly/devops.git//terraform/modules/tfc-workspace" - workspace-name = "roleypoly-app-staging" - repo = local.repo - branch = local.branch - tfc_webhook_url = var.tfc_webhook_url - directory = "terraform/app" - auto_apply = true - dependent_modules = [] - tfc_org = local.tfc_org - tfc_oauth_token_id = var.tfc_oauth_token_id - - vars = merge(local.common_vars, { - environment_tag = "staging", - ingress_hostname = "stg.roleypoly-nyc.kc" - k8s_namespace = module.app-env-stage.namespace, - }) - - secret-vars = merge(local.common_secret_vars, { - k8s_cert = var.k8s_cert, - }) -} - -// Due to quirk, we must set secret vars manually. -resource "tfe_variable" "k8s-token-prod" { - key = "k8s_token" - value = module.app-env-prod.service_account_token - category = "terraform" - workspace_id = module.tfcws-production.workspace.0.id - sensitive = true -} - -resource "tfe_variable" "k8s-token-stage" { - key = "k8s_token" - value = module.app-env-stage.service_account_token - category = "terraform" - workspace_id = module.tfcws-staging.workspace.0.id - sensitive = true -} diff --git a/terraform/platform/bootstrap/global.auto.tfvars b/terraform/platform/bootstrap/global.auto.tfvars deleted file mode 100644 index 3b3d620..0000000 --- a/terraform/platform/bootstrap/global.auto.tfvars +++ /dev/null @@ -1 +0,0 @@ -gcs_region = "us-east1-d" \ No newline at end of file diff --git a/terraform/platform/bootstrap/k8s.tf b/terraform/platform/bootstrap/k8s.tf deleted file mode 100644 index a689607..0000000 --- a/terraform/platform/bootstrap/k8s.tf +++ /dev/null @@ -1,26 +0,0 @@ -data "digitalocean_kubernetes_versions" "versions" { - version_prefix = "1.16." -} - -resource "digitalocean_kubernetes_cluster" "cluster" { - name = "roleypoly-nyc" - region = "nyc1" - version = data.digitalocean_kubernetes_versions.versions.latest_version - - node_pool { - name = "default-worker-pool" - size = "s-2vcpu-2gb" - node_count = 3 - labels = { - node_type = "static" - } - } -} - -locals { - k8sEndpoint = digitalocean_kubernetes_cluster.cluster.endpoint - k8sToken = digitalocean_kubernetes_cluster.cluster.kube_config[0].token - k8sCert = base64decode( - digitalocean_kubernetes_cluster.cluster.kube_config[0].cluster_ca_certificate - ) -} diff --git a/terraform/platform/bootstrap/provision.tf b/terraform/platform/bootstrap/provision.tf deleted file mode 100644 index 2d2784f..0000000 --- a/terraform/platform/bootstrap/provision.tf +++ /dev/null @@ -1,58 +0,0 @@ -terraform { - required_version = ">=0.12.6" - - backend "remote" { - organization = "Roleypoly" - - workspaces { - name = "roleypoly-platform-bootstrap" - } - } -} - -/* - Google Cloud -*/ -variable "gcs_token" { type = string } -variable "gcs_region" { type = string } -variable "gcs_project" { type = string } -provider "google" { - version = ">=3.18.0" - project = var.gcs_project - region = var.gcs_region - credentials = var.gcs_token - - scopes = [ - "https://www.googleapis.com/auth/devstorage.full_control", - "https://www.googleapis.com/auth/cloud-platform", - ] -} - -/* - DigitalOcean -*/ -variable "digitalocean_token" { type = string } -provider "digitalocean" { - version = ">=1.16.0" - token = var.digitalocean_token -} - -/* - Terraform Cloud -*/ -variable "tfc_token" { type = string } -variable "tfc_email" { type = string } -variable "tfc_oauth_token_id" { type = string } -variable "tfc_webhook_url" { type = string } -provider "tfe" { - version = ">=0.15.0" - token = var.tfc_token -} - -/* - Cloudflare (for tfc vars) -*/ -variable "cloudflare_token" { type = string } -variable "cloudflare_email" { type = string } -variable "cloudflare_zone_id" { type = string } -variable "cloudflare_origin_ca_token" { type = string } diff --git a/terraform/platform/bootstrap/tfcloud.tf b/terraform/platform/bootstrap/tfcloud.tf deleted file mode 100644 index c5b93c4..0000000 --- a/terraform/platform/bootstrap/tfcloud.tf +++ /dev/null @@ -1,65 +0,0 @@ -locals { - repo = "roleypoly/devops" - branch = "master" - tfc_org = "Roleypoly" -} - -module "tfcws-services" { - source = "github.com/roleypoly/devops.git//terraform/modules/tfc-workspace" - workspace-name = "roleypoly-platform-services" - repo = local.repo - branch = local.branch - tfc_webhook_url = var.tfc_webhook_url - directory = "terraform/platform/services" - auto_apply = false - dependent_modules = ["nginx-ingress-controller", "cloudflare-dns"] - tfc_org = local.tfc_org - tfc_oauth_token_id = var.tfc_oauth_token_id - - secret-vars = { - digitalocean_token = var.digitalocean_token - cloudflare_origin_ca_token = var.cloudflare_origin_ca_token - cloudflare_zone_id = var.cloudflare_zone_id - cloudflare_token = var.cloudflare_token - cloudflare_email = var.cloudflare_email - vault_gcs_token = local.vaultGcsSvcacctKey - vault_gcs_url = local.vaultGcsUrl - k8s_endpoint = local.k8sEndpoint - k8s_token = local.k8sToken - k8s_cert = local.k8sCert - } - - vars = { - gcp_region = var.gcs_region - gcp_project = var.gcs_project - } -} - -module "tfcws-app" { - source = "github.com/roleypoly/devops.git//terraform/modules/tfc-workspace" - workspace-name = "roleypoly-platform-app" - repo = local.repo - branch = local.branch - tfc_webhook_url = var.tfc_webhook_url - directory = "terraform/platform/app" - auto_apply = false - dependent_modules = ["tfc-workspace", "cluster-environment"] - tfc_org = local.tfc_org - tfc_oauth_token_id = var.tfc_oauth_token_id - - secret-vars = { - k8s_endpoint = local.k8sEndpoint - k8s_token = local.k8sToken - k8s_cert = local.k8sCert - cloudflare_zone_id = var.cloudflare_zone_id - cloudflare_token = var.cloudflare_token - cloudflare_email = var.cloudflare_email - tfc_email = var.tfc_email - tfc_oauth_token_id = var.tfc_oauth_token_id - tfc_webhook_url = var.tfc_webhook_url - } - - env-vars = { - TFE_TOKEN = var.tfc_token - } -} diff --git a/terraform/platform/bootstrap/vault-gcs.tf b/terraform/platform/bootstrap/vault-gcs.tf deleted file mode 100644 index 8233372..0000000 --- a/terraform/platform/bootstrap/vault-gcs.tf +++ /dev/null @@ -1,26 +0,0 @@ -locals { - vaultGcsSvcacctKey = google_service_account_key.vault-svcacct-key.private_key - vaultGcsUrl = google_storage_bucket.vault-backend.url -} - -resource "google_service_account" "vault-svcacct" { - account_id = "vault-gcs" - display_name = "Vault Svcacct" -} - -resource "google_service_account_key" "vault-svcacct-key" { - service_account_id = google_service_account.vault-svcacct.name -} - -resource "google_storage_bucket" "vault-backend" { - name = "roleypoly-vault" -} - -resource "google_storage_bucket_acl" "vault-backend-acl" { - bucket = google_storage_bucket.vault-backend.name - - role_entity = [ - "WRITER:user-${google_service_account.vault-svcacct.email}" - ] -} - diff --git a/terraform/platform/bootstrap/vault-kms.tf b/terraform/platform/bootstrap/vault-kms.tf deleted file mode 100644 index 0d75a8f..0000000 --- a/terraform/platform/bootstrap/vault-kms.tf +++ /dev/null @@ -1,42 +0,0 @@ -resource "google_kms_key_ring" "vault-kms-ring" { - name = "vault-keyring" - location = "global" - - lifecycle { - prevent_destroy = true - } -} - -locals { - iam_members = [ - "serviceAccount:${google_service_account.vault-svcacct.email}" - ] -} - -data "google_iam_policy" "vault" { - binding { - role = "roles/editor" - members = local.iam_members - } - - binding { - role = "roles/cloudkms.cryptoKeyEncrypterDecrypter" - members = local.iam_members - } -} - -resource "google_kms_key_ring_iam_policy" "vault-binding" { - key_ring_id = google_kms_key_ring.vault-kms-ring.id - policy_data = data.google_iam_policy.vault.policy_data -} - -resource "google_kms_crypto_key" "vault-key" { - name = "vault-key" - key_ring = google_kms_key_ring.vault-kms-ring.id - rotation_period = "100000s" // just over one day - - lifecycle { - prevent_destroy = true - } -} - diff --git a/terraform/platform/services/ingress.tf b/terraform/platform/services/ingress.tf deleted file mode 100644 index d6e3ed2..0000000 --- a/terraform/platform/services/ingress.tf +++ /dev/null @@ -1,13 +0,0 @@ -module "ingress-controller" { - source = "github.com/roleypoly/devops.git//terraform/modules/nginx-ingress-controller" - nginx-ingress-version = "0.32.0" -} - -module "cluster-dns" { - source = "github.com/roleypoly/devops.git//terraform/modules/cloudflare-cluster-dns" - ingress-name = module.ingress-controller.service-name - ingress-namespace = module.ingress-controller.service-namespace - ingress-endpoint = module.ingress-controller.service-endpoint - cloudflare-zone-id = var.cloudflare_zone_id - record-name = "roleypoly-nyc.kc" -} diff --git a/terraform/platform/services/provision.tf b/terraform/platform/services/provision.tf deleted file mode 100644 index bd381ae..0000000 --- a/terraform/platform/services/provision.tf +++ /dev/null @@ -1,56 +0,0 @@ -terraform { - required_version = ">=0.12.6" - - backend "remote" { - organization = "Roleypoly" - - workspaces { - name = "roleypoly-platform-services" - } - } -} - -/* - DigitalOcean -*/ -variable "digitalocean_token" { type = string } -provider "digitalocean" { - version = ">=1.16.0" - token = var.digitalocean_token -} - -/* - Cloudflare -*/ -variable "cloudflare_token" { type = string } -variable "cloudflare_email" { type = string } -variable "cloudflare_zone_id" { type = string } -variable "cloudflare_origin_ca_token" { type = string } -provider "cloudflare" { - version = ">=2.0" - email = var.cloudflare_email - api_token = var.cloudflare_token - api_user_service_key = var.cloudflare_origin_ca_token -} - -/* - Kubernetes -*/ -variable "k8s_endpoint" { type = string } -variable "k8s_token" { type = string } -variable "k8s_cert" { type = string } -provider "kubernetes" { - load_config_file = false - token = var.k8s_token - host = var.k8s_endpoint - cluster_ca_certificate = var.k8s_cert -} - -/* - Others -*/ -variable "vault_gcs_token" { type = string } -variable "vault_gcs_url" { type = string } -variable "gcp_project" { type = string } -variable "gcp_region" { type = string } - diff --git a/terraform/platform/services/vault.tf b/terraform/platform/services/vault.tf deleted file mode 100644 index a76d60d..0000000 --- a/terraform/platform/services/vault.tf +++ /dev/null @@ -1,207 +0,0 @@ -resource "kubernetes_namespace" "vault" { - metadata { - name = "vault" - } -} - -locals { - vaultNs = kubernetes_namespace.vault.metadata.0.name - vaultLabels = { - "app.kubernetes.io/name" = "vault" - "app.kubernetes.io/part-of" = "vault" - } -} - -resource "kubernetes_secret" "vault-svcacct" { - metadata { - generate_name = "vault-svcacct" - namespace = local.vaultNs - labels = local.vaultLabels - } - - data = { - "vault-service-account.json" = base64decode(var.vault_gcs_token) - } -} - -resource "kubernetes_config_map" "vault-cm" { - metadata { - generate_name = "vault-config" - namespace = local.vaultNs - labels = local.vaultLabels - } - - data = { - "vault-config.json" = jsonencode({ - // Enables UI - ui = true, - - // Storage with GCS - storage = { - gcs = { - bucket = "roleypoly-vault", - } - }, - - // Auto-seal setup with GCPKMS - seal = { - gcpckms = { - credentials = "/vault/mounted-secrets/vault-service-account.json", - project = var.gcp_project - region = "global" - key_ring = "vault-keyring" - crypto_key = "vault-key" - } - }, - - // TCP - listener = { - tcp = { - address = "0.0.0.0:8200" - } - }, - - // K8s service registration - service_registration = { - kubernetes = {} - } - }) - } -} - - - -resource "kubernetes_deployment" "vault" { - metadata { - name = "vault" - namespace = local.vaultNs - labels = local.vaultLabels - } - - spec { - replicas = 1 - - selector { - match_labels = local.vaultLabels - } - - template { - metadata { - labels = local.vaultLabels - } - - spec { - service_account_name = kubernetes_service_account.vault-sa.metadata.0.name - automount_service_account_token = true - - container { - image = "vault:1.5.0" - name = "vault" - - env { - name = "GOOGLE_APPLICATION_CREDENTIALS" - value = "/vault/mounted-secrets/vault-service-account.json" - } - - env { - name = "VAULT_K8S_NAMESPACE" - value_from { - field_ref { - field_path = "metadata.namespace" - } - } - } - - env { - name = "VAULT_K8S_POD_NAME" - value_from { - field_ref { - field_path = "metadata.name" - } - } - } - - volume_mount { - mount_path = "/vault/mounted-secrets" - name = "vault-secrets" - read_only = true - } - - volume_mount { - mount_path = "/vault/config/vault-config.json" - name = "vault-config" - sub_path = "vault-config.json" - } - - security_context { - capabilities { - add = ["IPC_LOCK"] - } - } - } - - node_selector = { - node_type = "static" - } - - restart_policy = "Always" - - volume { - name = "vault-secrets" - secret { - secret_name = kubernetes_secret.vault-svcacct.metadata.0.name - } - } - - volume { - name = "vault-config" - config_map { - name = kubernetes_config_map.vault-cm.metadata.0.name - } - } - } - } - } -} - -resource "kubernetes_service_account" "vault-sa" { - metadata { - namespace = local.vaultNs - name = "vault" - labels = local.vaultLabels - } -} - -resource "kubernetes_role" "vault-sa-role" { - metadata { - namespace = local.vaultNs - name = "vault" - labels = local.vaultLabels - } - - rule { - api_groups = [""] - resources = ["pods"] - verbs = ["get", "update"] - } -} - -resource "kubernetes_role_binding" "vault-sa-rb" { - metadata { - namespace = local.vaultNs - name = "vault-rb" - labels = local.vaultLabels - } - - role_ref { - api_group = "rbac.authorization.k8s.io" - kind = "Role" - name = kubernetes_role.vault-sa-role.metadata.0.name - } - - subject { - kind = "ServiceAccount" - name = kubernetes_service_account.vault-sa.metadata.0.name - namespace = local.vaultNs - } -} diff --git a/tsconfig.json b/tsconfig.json index 7453df6..001aebc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,7 @@ "es2015.iterable", "es2015.core" ], - "jsx": "react", + "jsx": "preserve", "baseUrl": ".", "strict": true, "esModuleInterop": true, @@ -19,7 +19,14 @@ "declaration": true, "moduleResolution": "node", "paths": { - "roleypoly/*": ["./*", "./dist/bin/*"] - } - } + "roleypoly/*": ["./src/*"] + }, + "allowJs": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "resolveJsonModule": true, + "isolatedModules": true + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules", "**/*.stories.tsx"] } diff --git a/tsconfig.stories.json b/tsconfig.stories.json new file mode 100644 index 0000000..01df361 --- /dev/null +++ b/tsconfig.stories.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "jsx": "react-jsx" + }, + "exclude": ["node_modules"] +} diff --git a/tsconfig.test.json b/tsconfig.test.json new file mode 100644 index 0000000..2589017 --- /dev/null +++ b/tsconfig.test.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "jsx": "react-jsx" + } +} diff --git a/yarn.lock b/yarn.lock index d79c6a6..d2a50b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,26 +2,26 @@ # yarn lockfile v1 -"@ampproject/toolbox-core@^2.6.0": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@ampproject/toolbox-core/-/toolbox-core-2.6.1.tgz#af97ec253bf39e5fe5121b8ec28f1f35d1878446" - integrity sha512-hTsd9J2yy3JPMClG8BuUhUfMDtd3oDhCuRe/SyZJYQfNMN8hQHt7LNXtdOzZr0Kw7nTepHmn7GODS68fZN4OQQ== +"@ampproject/toolbox-core@^2.6.0", "@ampproject/toolbox-core@^2.7.1": + version "2.7.1" + resolved "https://registry.yarnpkg.com/@ampproject/toolbox-core/-/toolbox-core-2.7.1.tgz#d433a333c0dbb0bb6db7e69edd490d5694e06fc3" + integrity sha512-MWGmCLyBOouXTy1Vc30Jw7NkshJ5XkPlcXhhRc9Gw3dDAZJ8rUS69SIQ6cFMt2owCQnw7irMNlvZQTqdyx61rA== dependencies: cross-fetch "3.0.6" lru-cache "6.0.0" -"@ampproject/toolbox-optimizer@2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.6.0.tgz#e1bde0697d0fb25ab888bc0d0422998abaf6bad1" - integrity sha512-saToXVopb15a6zKK6kW4B1N/sYZZddkECcqmfTotRxJ2DaLE+wFB6jgWLbaPkgHwvLPQyA2IjV9BHJ/KUFuGzg== +"@ampproject/toolbox-optimizer@2.7.0-alpha.1": + version "2.7.0-alpha.1" + resolved "https://registry.yarnpkg.com/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.7.0-alpha.1.tgz#ab4c386645f991e5da5a9d2967ed2bb734a9f6c4" + integrity sha512-2wTvOyM6GP6FrYQzxSQCg43STo1jMRGeDKa6YUkYXYH9fm9Wbt2wTRx+ajjb48JQ6WwUnGwga1MhQhVFzRQ+wQ== dependencies: "@ampproject/toolbox-core" "^2.6.0" - "@ampproject/toolbox-runtime-version" "^2.6.0" + "@ampproject/toolbox-runtime-version" "^2.7.0-alpha.1" "@ampproject/toolbox-script-csp" "^2.5.4" "@ampproject/toolbox-validator-rules" "^2.5.4" abort-controller "3.0.0" cross-fetch "3.0.5" - cssnano-simple "1.0.5" + cssnano-simple "1.2.0" dom-serializer "1.0.1" domhandler "3.0.0" domutils "2.1.0" @@ -32,14 +32,14 @@ normalize-html-whitespace "1.0.0" postcss "7.0.32" postcss-safe-parser "4.0.2" - terser "4.8.0" + terser "5.1.0" -"@ampproject/toolbox-runtime-version@^2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.6.0.tgz#c2a310840a6c60a7f5046d2ccaf45646a761bd4f" - integrity sha512-wT+Ehsoq2PRXqpgjebygHD01BpSlaAE4HfDEVxgPVT8oAsLzE4ywZgzI2VQZfaCdb8qLyO5+WXrLSoJXxDBo2Q== +"@ampproject/toolbox-runtime-version@^2.7.0-alpha.1": + version "2.7.1" + resolved "https://registry.yarnpkg.com/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.7.1.tgz#2ae543c97e2659be444eb389b1277ed5a70568e6" + integrity sha512-3LsjaOz/Aw4YpWG6ZxpVhA2N8GF0gRfvCrNm0ZspUviz/NR+MLrJ50BPoOOAmKCzoNVA2Q8xF3Y8dfamGuoblA== dependencies: - "@ampproject/toolbox-core" "^2.6.0" + "@ampproject/toolbox-core" "^2.7.1" "@ampproject/toolbox-script-csp@^2.5.4": version "2.5.4" @@ -47,11 +47,11 @@ integrity sha512-+knTYetI5nWllRZ9wFcj7mYxelkiiFVRAAW/hl0ad8EnKHMH82tRlk40CapEnUHhp6Er5sCYkumQ8dngs3Q4zQ== "@ampproject/toolbox-validator-rules@^2.5.4": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.5.4.tgz#7dee3a3edceefea459d060571db8cc6e7bbf0dd6" - integrity sha512-bS7uF+h0s5aiklc/iRaujiSsiladOsZBLrJ6QImJDXvubCAQtvE7om7ShlGSXixkMAO0OVMDWyuwLlEy8V1Ing== + version "2.7.1" + resolved "https://registry.yarnpkg.com/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.7.1.tgz#5a257f2b21d1d44167769fe3eae7f587d249d9fa" + integrity sha512-LYkGKqFBOC39lvRX38wGjbLf4r8VXJyiCZSLRepiHjO4xbstZLyHPwxHlobQrBhD7UbHZn5TVD+qw+VMJNMSxw== dependencies: - cross-fetch "3.0.5" + cross-fetch "^3.0.6" "@babel/code-frame@7.10.4", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5": version "7.10.4" @@ -67,70 +67,24 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" - integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" +"@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" + integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== -"@babel/core@7.11.6", "@babel/core@>=7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.7.5", "@babel/core@^7.9.0": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" - integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== +"@babel/core@7.12.9", "@babel/core@>=7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.12.1", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.7.5": + version "7.12.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" + integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.6" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.5" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.5" - "@babel/types" "^7.11.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@7.7.7": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9" - integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.7" - "@babel/helpers" "^7.7.4" - "@babel/parser" "^7.7.7" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.12.3": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" - integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" + "@babel/generator" "^7.12.5" "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.9" + "@babel/types" "^7.12.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -140,21 +94,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.11.5", "@babel/generator@^7.11.6", "@babel/generator@^7.4.0", "@babel/generator@^7.7.7", "@babel/generator@^7.9.6": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== +"@babel/generator@^7.12.1", "@babel/generator@^7.12.5", "@babel/generator@^7.4.0": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" + integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== dependencies: - "@babel/types" "^7.11.5" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" - integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== - dependencies: - "@babel/types" "^7.12.1" + "@babel/types" "^7.12.5" jsesc "^2.5.1" source-map "^0.5.0" @@ -173,14 +118,14 @@ "@babel/helper-explode-assignable-expression" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-builder-react-jsx-experimental@^7.10.4", "@babel/helper-builder-react-jsx-experimental@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.11.5.tgz#4ea43dd63857b0a35cd1f1b161dc29b43414e79f" - integrity sha512-Vc4aPJnRZKWfzeCBsqTBnzulVNjABVdahSPhtdMD3Vs80ykx4a87jTHtF/VR+alSrDmNvat7l13yrRHauGcHVw== +"@babel/helper-builder-react-jsx-experimental@^7.12.4": + version "7.12.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48" + integrity sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/types" "^7.11.5" + "@babel/helper-module-imports" "^7.12.1" + "@babel/types" "^7.12.1" "@babel/helper-builder-react-jsx@^7.10.4": version "7.10.4" @@ -190,37 +135,34 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-compilation-targets@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" - integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== +"@babel/helper-compilation-targets@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" + integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== dependencies: - "@babel/compat-data" "^7.10.4" - browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" + "@babel/compat-data" "^7.12.5" + "@babel/helper-validator-option" "^7.12.1" + browserslist "^4.14.5" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" - integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== dependencies: "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.5" + "@babel/helper-member-expression-to-functions" "^7.12.1" "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" -"@babel/helper-create-regexp-features-plugin@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" - integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" + integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - regexpu-core "^4.7.0" + regexpu-core "^4.7.1" "@babel/helper-define-map@^7.10.4": version "7.10.5" @@ -232,11 +174,11 @@ lodash "^4.17.19" "@babel/helper-explode-assignable-expression@^7.10.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz#2d8e3470252cc17aba917ede7803d4a7a276a41b" - integrity sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ== + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" + integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.1" "@babel/helper-function-name@^7.10.4": version "7.10.4" @@ -261,46 +203,19 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" - integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== - dependencies: - "@babel/types" "^7.11.0" - "@babel/helper-member-expression-to-functions@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" - integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" + integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== dependencies: - "@babel/types" "^7.12.1" + "@babel/types" "^7.12.7" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-module-imports@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" - integrity sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" - integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/template" "^7.10.4" - "@babel/types" "^7.11.0" - lodash "^4.17.19" + "@babel/types" "^7.12.5" "@babel/helper-module-transforms@^7.12.1": version "7.12.1" @@ -318,61 +233,35 @@ lodash "^4.17.19" "@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz#7f94ae5e08721a49467346aa04fd22f750033b9c" + integrity sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.7" "@babel/helper-plugin-utils@7.10.4", "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-regex@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" - integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== - dependencies: - lodash "^4.17.19" - -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz#4474ea9f7438f18575e30b0cac784045b402a12d" - integrity sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA== +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.1" "@babel/helper-replace-supers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" - integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw== + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" + integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== dependencies: "@babel/helper-member-expression-to-functions" "^7.12.1" "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== - dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" "@babel/helper-simple-access@^7.12.1": version "7.12.1" @@ -381,12 +270,12 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" - integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.12.1" "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" @@ -400,33 +289,29 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-option@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" + integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== + "@babel/helper-wrap-function@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" - integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" + integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== dependencies: "@babel/helper-function-name" "^7.10.4" "@babel/template" "^7.10.4" "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helpers@^7.10.4", "@babel/helpers@^7.7.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== +"@babel/helpers@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== dependencies: "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helpers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79" - integrity sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" "@babel/highlight@^7.10.4", "@babel/highlight@^7.8.3": version "7.10.4" @@ -437,143 +322,133 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.5", "@babel/parser@^7.4.3", "@babel/parser@^7.7.7", "@babel/parser@^7.8.3", "@babel/parser@^7.9.6": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" - integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3", "@babel/parser@^7.8.3": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056" + integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg== -"@babel/parser@^7.12.1": - version "7.12.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.2.tgz#9d2fcf24cafe85333ab0aff9f26b81bba356004d" - integrity sha512-LMN+SqTiZEonUw4hQA0A3zG8DnN0E1F4K107LbDDUnC+0chML1rvWgsHloC9weB4RmZweE0uhFq0eGX7Nr/PBQ== - -"@babel/parser@^7.12.3": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" - integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== - -"@babel/plugin-proposal-async-generator-functions@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" - integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== +"@babel/plugin-proposal-async-generator-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" + integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@7.10.4", "@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" - integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== +"@babel/plugin-proposal-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-decorators@^7.8.3": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.5.tgz#42898bba478bc4b1ae242a703a953a7ad350ffb4" - integrity sha512-Sc5TAQSZuLzgY0664mMDn24Vw2P8g/VhyLyGPaWiHahhgLqeZvcGeyBZOrJW0oSKIK2mvQ22a1ENXBIQLhrEiQ== +"@babel/plugin-proposal-decorators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" + integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.5" + "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-decorators" "^7.10.4" + "@babel/plugin-syntax-decorators" "^7.12.1" -"@babel/plugin-proposal-dynamic-import@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" - integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== +"@babel/plugin-proposal-dynamic-import@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-export-default-from@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.10.4.tgz#08f66eef0067cbf6a7bc036977dcdccecaf0c6c5" - integrity sha512-G1l00VvDZ7Yk2yRlC5D8Ybvu3gmeHS3rCHoUYdjrqGYUtdeOBoRypnvDZ5KQqxyaiiGHWnVDeSEzA5F9ozItig== +"@babel/plugin-proposal-export-default-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.1.tgz#c6e62d668a8abcfe0d28b82f560395fecb611c5a" + integrity sha512-z5Q4Ke7j0AexQRfgUvnD+BdCSgpTEKnqQ3kskk2jWtOBulxICzd1X9BGt7kmWftxZ2W3++OZdt5gtmC8KLxdRQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-export-default-from" "^7.10.4" + "@babel/plugin-syntax-export-default-from" "^7.12.1" -"@babel/plugin-proposal-export-namespace-from@7.10.4", "@babel/plugin-proposal-export-namespace-from@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" - integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== +"@babel/plugin-proposal-export-namespace-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" - integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== +"@babel/plugin-proposal-json-strings@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-logical-assignment-operators@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" - integrity sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" - integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@7.10.4", "@babel/plugin-proposal-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" - integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== +"@babel/plugin-proposal-numeric-separator@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" + integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@7.11.0", "@babel/plugin-proposal-object-rest-spread@^7.11.0", "@babel/plugin-proposal-object-rest-spread@^7.9.6": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" - integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== +"@babel/plugin-proposal-object-rest-spread@7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-optional-catch-binding@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" - integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== +"@babel/plugin-proposal-optional-catch-binding@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.10.1", "@babel/plugin-proposal-optional-chaining@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" - integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== +"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" + integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-private-methods@^7.10.4", "@babel/plugin-proposal-private-methods@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" - integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== +"@babel/plugin-proposal-private-methods@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" - integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": @@ -583,38 +458,38 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-bigint@7.8.3", "@babel/plugin-syntax-bigint@^7.8.3": +"@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.4", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" - integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== +"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-decorators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz#6853085b2c429f9d322d02f5a635018cdeb2360c" - integrity sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw== +"@babel/plugin-syntax-decorators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz#81a8b535b284476c41be6de06853a8802b98c5dd" + integrity sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-dynamic-import@7.8.3", "@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.4.tgz#e5494f95006355c10292a0ff1ce42a5746002ec8" - integrity sha512-79V6r6Pgudz0RnuMGp5xidu6Z+bPFugh8/Q9eDHonmLp4wKFAZDwygJwYgCzuDu8lFA/sYyT+mc5y2wkd7bTXA== +"@babel/plugin-syntax-export-default-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.1.tgz#a9eb31881f4f9a1115a3d2c6d64ac3f6016b5a9d" + integrity sha512-dP5eGg6tHEkhnRD2/vRG/KJKRSg8gtxu2i+P/8/yFPJn/CfPU5G0/7Gks2i3M6IOVAPQekmsLN9LPsmXFFL4Uw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -625,10 +500,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" - integrity sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ== +"@babel/plugin-syntax-flow@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz#a77670d9abe6d63e8acadf4c31bb1eb5a506bbdd" + integrity sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -646,10 +521,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@7.10.4", "@babel/plugin-syntax-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" - integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== +"@babel/plugin-syntax-jsx@7.12.1", "@babel/plugin-syntax-jsx@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -695,379 +570,359 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" - integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== +"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-typescript@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" - integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== +"@babel/plugin-syntax-typescript@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" + integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.10.4", "@babel/plugin-transform-arrow-functions@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" - integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== +"@babel/plugin-transform-arrow-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== +"@babel/plugin-transform-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== dependencies: - "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-module-imports" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" -"@babel/plugin-transform-block-scoped-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" - integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== +"@babel/plugin-transform-block-scoped-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.10.4", "@babel/plugin-transform-block-scoping@^7.8.3": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" - integrity sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== +"@babel/plugin-transform-block-scoping@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-classes@^7.10.4", "@babel/plugin-transform-classes@^7.9.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" - integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== +"@babel/plugin-transform-classes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-define-map" "^7.10.4" "@babel/helper-function-name" "^7.10.4" "@babel/helper-optimise-call-expression" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" - integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== +"@babel/plugin-transform-computed-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.10.4", "@babel/plugin-transform-destructuring@^7.9.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" - integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== +"@babel/plugin-transform-destructuring@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" - integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" - integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== +"@babel/plugin-transform-duplicate-keys@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" - integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== +"@babel/plugin-transform-exponentiation-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-flow-strip-types@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" - integrity sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ== +"@babel/plugin-transform-flow-strip-types@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" + integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-flow" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.12.1" -"@babel/plugin-transform-for-of@^7.10.4", "@babel/plugin-transform-for-of@^7.9.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" - integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== +"@babel/plugin-transform-for-of@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" - integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== +"@babel/plugin-transform-function-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== dependencies: "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" - integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== +"@babel/plugin-transform-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" - integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== +"@babel/plugin-transform-member-expression-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" - integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== +"@babel/plugin-transform-modules-amd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== dependencies: - "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@7.10.4", "@babel/plugin-transform-modules-commonjs@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" - integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== +"@babel/plugin-transform-modules-commonjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== dependencies: - "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" - integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== +"@babel/plugin-transform-modules-systemjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== dependencies: "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" - integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== +"@babel/plugin-transform-modules-umd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== dependencies: - "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" - integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" -"@babel/plugin-transform-new-target@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" - integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== +"@babel/plugin-transform-new-target@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-object-super@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" - integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== +"@babel/plugin-transform-object-super@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" -"@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.9.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" - integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-property-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" - integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== +"@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-constant-elements@^7.9.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz#0f485260bf1c29012bb973e7e404749eaac12c9e" - integrity sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g== +"@babel/plugin-transform-property-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-display-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" - integrity sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== +"@babel/plugin-transform-react-display-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx-development@^7.10.4": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.11.5.tgz#e1439e6a57ee3d43e9f54ace363fb29cefe5d7b6" - integrity sha512-cImAmIlKJ84sDmpQzm4/0q/2xrXlDezQoixy3qoz1NJeZL/8PRon6xZtluvr4H4FzwlDGI5tCcFupMnXGtr+qw== +"@babel/plugin-transform-react-jsx-development@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.7.tgz#4c2a647de79c7e2b16bfe4540677ba3121e82a08" + integrity sha512-Rs3ETtMtR3VLXFeYRChle5SsP/P9Jp/6dsewBQfokDSzKJThlsuFcnzLTDRALiUmTC48ej19YD9uN1mupEeEDg== dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.11.5" + "@babel/helper-builder-react-jsx-experimental" "^7.12.4" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" -"@babel/plugin-transform-react-jsx-self@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" - integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== +"@babel/plugin-transform-react-jsx-self@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28" + integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx-source@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz#34f1779117520a779c054f2cdd9680435b9222b4" - integrity sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA== +"@babel/plugin-transform-react-jsx-source@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b" + integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx@^7.10.4", "@babel/plugin-transform-react-jsx@^7.3.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" - integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== +"@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.7.tgz#8b14d45f6eccd41b7f924bcb65c021e9f0a06f7f" + integrity sha512-YFlTi6MEsclFAPIDNZYiCRbneg1MFGao9pPG9uD5htwE0vDbPaMUMeYd6itWjw7K4kro4UbdQf3ljmFl9y48dQ== dependencies: "@babel/helper-builder-react-jsx" "^7.10.4" - "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.12.4" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" -"@babel/plugin-transform-react-pure-annotations@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" - integrity sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" - integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== +"@babel/plugin-transform-regenerator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" - integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== +"@babel/plugin-transform-reserved-words@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-runtime@7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz#f108bc8e0cf33c37da031c097d1df470b3a293fc" - integrity sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.10.4", "@babel/plugin-transform-shorthand-properties@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" - integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== +"@babel/plugin-transform-shorthand-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-spread@^7.11.0", "@babel/plugin-transform-spread@^7.8.3": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" - integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== +"@babel/plugin-transform-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-sticky-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" - integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - -"@babel/plugin-transform-template-literals@^7.10.4", "@babel/plugin-transform-template-literals@^7.8.3": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" - integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-typeof-symbol@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" - integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== +"@babel/plugin-transform-sticky-regex@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" + integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typescript@^7.10.4": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb" - integrity sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.5" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-typescript" "^7.10.4" - -"@babel/plugin-transform-unicode-escapes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" - integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== +"@babel/plugin-transform-template-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" - integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== +"@babel/plugin-transform-typeof-symbol@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" + integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@7.11.5", "@babel/preset-env@^7.9.5", "@babel/preset-env@^7.9.6": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.5.tgz#18cb4b9379e3e92ffea92c07471a99a2914e4272" - integrity sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA== +"@babel/plugin-transform-typescript@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" + integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== dependencies: - "@babel/compat-data" "^7.11.0" - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-async-generator-functions" "^7.10.4" - "@babel/plugin-proposal-class-properties" "^7.10.4" - "@babel/plugin-proposal-dynamic-import" "^7.10.4" - "@babel/plugin-proposal-export-namespace-from" "^7.10.4" - "@babel/plugin-proposal-json-strings" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.11.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.11.0" - "@babel/plugin-proposal-private-methods" "^7.10.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.12.1" + +"@babel/plugin-transform-unicode-escapes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.12.1": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.7.tgz#54ea21dbe92caf6f10cb1a0a576adc4ebf094b55" + integrity sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew== + dependencies: + "@babel/compat-data" "^7.12.7" + "@babel/helper-compilation-targets" "^7.12.5" + "@babel/helper-module-imports" "^7.12.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.7" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.7" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.4" + "@babel/plugin-syntax-class-properties" "^7.12.1" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" @@ -1077,56 +932,53 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.4" - "@babel/plugin-transform-arrow-functions" "^7.10.4" - "@babel/plugin-transform-async-to-generator" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions" "^7.10.4" - "@babel/plugin-transform-block-scoping" "^7.10.4" - "@babel/plugin-transform-classes" "^7.10.4" - "@babel/plugin-transform-computed-properties" "^7.10.4" - "@babel/plugin-transform-destructuring" "^7.10.4" - "@babel/plugin-transform-dotall-regex" "^7.10.4" - "@babel/plugin-transform-duplicate-keys" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator" "^7.10.4" - "@babel/plugin-transform-for-of" "^7.10.4" - "@babel/plugin-transform-function-name" "^7.10.4" - "@babel/plugin-transform-literals" "^7.10.4" - "@babel/plugin-transform-member-expression-literals" "^7.10.4" - "@babel/plugin-transform-modules-amd" "^7.10.4" - "@babel/plugin-transform-modules-commonjs" "^7.10.4" - "@babel/plugin-transform-modules-systemjs" "^7.10.4" - "@babel/plugin-transform-modules-umd" "^7.10.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" - "@babel/plugin-transform-new-target" "^7.10.4" - "@babel/plugin-transform-object-super" "^7.10.4" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-transform-property-literals" "^7.10.4" - "@babel/plugin-transform-regenerator" "^7.10.4" - "@babel/plugin-transform-reserved-words" "^7.10.4" - "@babel/plugin-transform-shorthand-properties" "^7.10.4" - "@babel/plugin-transform-spread" "^7.11.0" - "@babel/plugin-transform-sticky-regex" "^7.10.4" - "@babel/plugin-transform-template-literals" "^7.10.4" - "@babel/plugin-transform-typeof-symbol" "^7.10.4" - "@babel/plugin-transform-unicode-escapes" "^7.10.4" - "@babel/plugin-transform-unicode-regex" "^7.10.4" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.7" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.11.5" - browserslist "^4.12.0" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" + "@babel/types" "^7.12.7" + core-js-compat "^3.7.0" semver "^5.5.0" -"@babel/preset-flow@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.4.tgz#e0d9c72f8cb02d1633f6a5b7b16763aa2edf659f" - integrity sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g== +"@babel/preset-flow@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.12.1.tgz#1a81d376c5a9549e75352a3888f8c273455ae940" + integrity sha512-UAoyMdioAhM6H99qPoKvpHMzxmNVXno8GYU/7vZmGaHk6/KqfDYL1W0NxszVbJ2EP271b7e6Ox+Vk2A9QsB3Sw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-flow-strip-types" "^7.10.4" + "@babel/plugin-transform-flow-strip-types" "^7.12.1" -"@babel/preset-modules@0.1.4", "@babel/preset-modules@^0.1.3": +"@babel/preset-modules@^0.1.3": version "0.1.4" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== @@ -1137,31 +989,32 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@7.10.4", "@babel/preset-react@^7.0.0", "@babel/preset-react@^7.8.3", "@babel/preset-react@^7.9.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" - integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== +"@babel/preset-react@^7.12.1": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.7.tgz#36d61d83223b07b6ac4ec55cf016abb0f70be83b" + integrity sha512-wKeTdnGUP5AEYCYQIMeXMMwU7j+2opxrG0WzuZfxuuW9nhKvvALBjl67653CWamZJVefuJGI219G591RSldrqQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-react-display-name" "^7.10.4" - "@babel/plugin-transform-react-jsx" "^7.10.4" - "@babel/plugin-transform-react-jsx-development" "^7.10.4" - "@babel/plugin-transform-react-jsx-self" "^7.10.4" - "@babel/plugin-transform-react-jsx-source" "^7.10.4" - "@babel/plugin-transform-react-pure-annotations" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.7" + "@babel/plugin-transform-react-jsx-development" "^7.12.7" + "@babel/plugin-transform-react-jsx-self" "^7.12.1" + "@babel/plugin-transform-react-jsx-source" "^7.12.1" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" -"@babel/preset-typescript@7.10.4", "@babel/preset-typescript@^7.9.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36" - integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ== +"@babel/preset-typescript@^7.12.1": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3" + integrity sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-typescript" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-transform-typescript" "^7.12.1" -"@babel/register@^7.10.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.11.5.tgz#79becf89e0ddd0fba8b92bc279bc0f5d2d7ce2ea" - integrity sha512-CAml0ioKX+kOAvBQDHa/+t1fgOt3qkTIz0TrRtRAT6XY0m5qYZXR85k6/sLCNPMGhYDlCFHCYuU0ybTJbvlC6w== +"@babel/register@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.12.1.tgz#cdb087bdfc4f7241c03231f22e15d211acf21438" + integrity sha512-XWcmseMIncOjoydKZnWvWi0/5CUCD+ZYKhRwgYlWOrA8fGZ/FjuLRpqtIhLOVD/fvR1b9DQHtZPn68VvhpYf+Q== dependencies: find-cache-dir "^2.0.0" lodash "^4.17.19" @@ -1169,61 +1022,37 @@ pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime@7.11.2", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.11.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" - integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== +"@babel/runtime@7.12.5", "@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.4", "@babel/template@^7.3.3", "@babel/template@^7.4.0", "@babel/template@^7.7.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== +"@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.3.3", "@babel/template@^7.4.0": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" - integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.8.3": + version "7.12.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.9.tgz#fad26c972eabbc11350e0b695978de6cc8e8596f" + integrity sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" + "@babel/generator" "^7.12.5" "@babel/helper-function-name" "^7.10.4" "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.5" - "@babel/types" "^7.11.5" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@babel/traverse@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" - integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.12.1" - "@babel/types" "^7.12.1" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@7.11.5", "@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.4", "@babel/types@^7.9.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" - integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - "@babel/types@7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" @@ -1233,10 +1062,10 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" - integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13" + integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ== dependencies: "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.19" @@ -1247,21 +1076,16 @@ resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047" integrity sha512-4Th98KlMHr5+JkxfcoDT//6vY8vM+iSPrLNpHhRyLx2CFYi8e2RfqPLdpbnpo0Q5lQC5hNB79yes07zb02fvCw== -"@bazel/typescript@^2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-2.2.2.tgz#c7cd49cb630ca3720c04c94046ba8ca4c0d5b0aa" - integrity sha512-hkx/7L3s8q5gIgaSFmkUZWPqdKmdJmQ04GaLnsI/YEp9EhPObqATSKnOHeDdT7bzqLO7giDAwAiXhEmsO1Smcw== - dependencies: - protobufjs "6.8.8" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "2.27.2" - "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@cloudflare/workers-types@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-2.1.0.tgz#6e4f07567f4c914ad811c2d7a6172d0ae834c7f6" + integrity sha512-VmXaHTq0lt6Xre4aK1hUK25hjZjuEUkHtdUEt0FJamv+NzQO54Gwp6Zr5Cfu6SP5EQ/tTmTMP/tK9npA8zhcCg== + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1280,10 +1104,10 @@ "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" -"@emotion/core@^10.0.20": - version "10.0.35" - resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.35.tgz#513fcf2e22cd4dfe9d3894ed138c9d7a859af9b3" - integrity sha512-sH++vJCdk025fBlRZSAhkRlSUoqSqgCzYf5fMOmqqi3bM6how+sQpg3hkgJonj8GxXM4WbD7dRO+4tegDB9fUw== +"@emotion/core@^10.1.1": + version "10.1.1" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.1.1.tgz#c956c1365f2f2481960064bcb8c4732e5fb612c3" + integrity sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA== dependencies: "@babel/runtime" "^7.5.5" "@emotion/cache" "^10.0.27" @@ -1344,7 +1168,7 @@ "@emotion/serialize" "^0.11.15" "@emotion/utils" "0.11.3" -"@emotion/styled@^10.0.17": +"@emotion/styled@^10.0.23": version "10.0.27" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf" integrity sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q== @@ -1372,10 +1196,10 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@eslint/eslintrc@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.0.tgz#bc7e3c4304d4c8720968ccaee793087dfb5fe6b4" - integrity sha512-+cIGPCBdLCzqxdtwppswP+zTsH9BOIGzAeKfBIbtb4gW/giMlfMwP0HUSFfhzh20f9u8uZ8hOp62+4GPquTbwQ== +"@eslint/eslintrc@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c" + integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -1413,13 +1237,6 @@ resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== -"@improbable-eng/grpc-web@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@improbable-eng/grpc-web/-/grpc-web-0.13.0.tgz#289e6fc4dafc00b1af8e2b93b970e6892299014d" - integrity sha512-vaxxT+Qwb7GPqDQrBV4vAAfH0HywgOLw6xGIKXd9Q8hcV63CQhmS3p4+pZ9/wVvt4Ph3ZDK9fdC983b9aGMUFg== - dependencies: - browser-headers "^0.4.0" - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1445,57 +1262,52 @@ chalk "^2.0.1" slash "^2.0.0" -"@jest/console@^26.6.1": - version "26.6.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.1.tgz#6a19eaac4aa8687b4db9130495817c65aec3d34e" - integrity sha512-cjqcXepwC5M+VeIhwT6Xpi/tT4AiNzlIx8SMJ9IihduHnsSrnWNvTBfKIpmqOOCNOPqtbBx6w2JqfoLOJguo8g== +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^26.6.1" - jest-util "^26.6.1" + jest-message-util "^26.6.2" + jest-util "^26.6.2" slash "^3.0.0" -"@jest/core@^26.6.1": - version "26.6.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.1.tgz#77426822f667a2cda82bf917cee11cc8ba71f9ac" - integrity sha512-p4F0pgK3rKnoS9olXXXOkbus1Bsu6fd8pcvLMPsUy4CVXZ8WSeiwQ1lK5hwkCIqJ+amZOYPd778sbPha/S8Srw== +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== dependencies: - "@jest/console" "^26.6.1" - "@jest/reporters" "^26.6.1" - "@jest/test-result" "^26.6.1" - "@jest/transform" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^26.6.1" - jest-config "^26.6.1" - jest-haste-map "^26.6.1" - jest-message-util "^26.6.1" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" jest-regex-util "^26.0.0" - jest-resolve "^26.6.1" - jest-resolve-dependencies "^26.6.1" - jest-runner "^26.6.1" - jest-runtime "^26.6.1" - jest-snapshot "^26.6.1" - jest-util "^26.6.1" - jest-validate "^26.6.1" - jest-watcher "^26.6.1" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" micromatch "^4.0.2" p-each-series "^2.1.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/create-cache-key-function@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-26.5.0.tgz#1d07947adc51ea17766d9f0ccf5a8d6ea94c47dc" - integrity sha512-DJ+pEBUIqarrbv1W/C39f9YH0rJ4wsXZ/VC6JafJPlHW2HOucKceeaqTOQj9MEDQZjySxMLkOq5mfXZXNZcmWw== - "@jest/environment@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" @@ -1506,15 +1318,15 @@ "@jest/types" "^24.9.0" jest-mock "^24.9.0" -"@jest/environment@^26.6.1": - version "26.6.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.1.tgz#38a56f1cc66f96bf53befcc5ebeaf1c2dce90e9a" - integrity sha512-GNvHwkOFJtNgSwdzH9flUPzF9AYAZhUg124CBoQcwcZCM9s5TLz8Y3fMtiaWt4ffbigoetjGk5PU2Dd8nLrSEw== +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== dependencies: - "@jest/fake-timers" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.6.1" + jest-mock "^26.6.2" "@jest/fake-timers@^24.9.0": version "24.9.0" @@ -1525,37 +1337,37 @@ jest-message-util "^24.9.0" jest-mock "^24.9.0" -"@jest/fake-timers@^26.6.1": - version "26.6.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.1.tgz#5aafba1822075b7142e702b906094bea15f51acf" - integrity sha512-T/SkMLgOquenw/nIisBRD6XAYpFir0kNuclYLkse5BpzeDUukyBr+K31xgAo9M0hgjU9ORlekAYPSzc0DKfmKg== +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== dependencies: - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" "@sinonjs/fake-timers" "^6.0.1" "@types/node" "*" - jest-message-util "^26.6.1" - jest-mock "^26.6.1" - jest-util "^26.6.1" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" -"@jest/globals@^26.6.1": - version "26.6.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.1.tgz#b232c7611d8a2de62b4bf9eb9a007138322916f4" - integrity sha512-acxXsSguuLV/CeMYmBseefw6apO7NuXqpE+v5r3yD9ye2PY7h1nS20vY7Obk2w6S7eJO4OIAJeDnoGcLC/McEQ== +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== dependencies: - "@jest/environment" "^26.6.1" - "@jest/types" "^26.6.1" - expect "^26.6.1" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" -"@jest/reporters@^26.6.1": - version "26.6.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.1.tgz#582ede05278cf5eeffe58bc519f4a35f54fbcb0d" - integrity sha512-J6OlXVFY3q1SXWJhjme5i7qT/BAZSikdOK2t8Ht5OS32BDo6KfG5CzIzzIFnAVd82/WWbc9Hb7SJ/jwSvVH9YA== +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.1" - "@jest/test-result" "^26.6.1" - "@jest/transform" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" @@ -1566,15 +1378,15 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^26.6.1" - jest-resolve "^26.6.1" - jest-util "^26.6.1" - jest-worker "^26.6.1" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^6.0.1" + v8-to-istanbul "^7.0.0" optionalDependencies: node-notifier "^8.0.0" @@ -1587,10 +1399,10 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/source-map@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.5.0.tgz#98792457c85bdd902365cd2847b58fff05d96367" - integrity sha512-jWAw9ZwYHJMe9eZq/WrsHlwF8E3hM9gynlcDpOyCb9bR8wEd9ZNBZCi7/jZyzHxC7t3thZ10gO2IDhu0bPKS5g== +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" @@ -1605,26 +1417,26 @@ "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-result@^26.6.1": - version "26.6.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.1.tgz#d75698d8a06aa663e8936663778c831512330cc1" - integrity sha512-wqAgIerIN2gSdT2A8WeA5+AFh9XQBqYGf8etK143yng3qYd0mF0ie2W5PVmgnjw4VDU6ammI9NdXrKgNhreawg== +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: - "@jest/console" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^26.6.1": - version "26.6.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.1.tgz#34216ac2c194b0eeebde30d25424d1134703fd2e" - integrity sha512-0csqA/XApZiNeTIPYh6koIDCACSoR6hi29T61tKJMtCZdEC+tF3PoNt7MS0oK/zKC6daBgCbqXxia5ztr/NyCQ== +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== dependencies: - "@jest/test-result" "^26.6.1" + "@jest/test-result" "^26.6.2" graceful-fs "^4.2.4" - jest-haste-map "^26.6.1" - jest-runner "^26.6.1" - jest-runtime "^26.6.1" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" "@jest/transform@^24.9.0": version "24.9.0" @@ -1648,42 +1460,21 @@ source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/transform@^26.0.0": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.5.2.tgz#6a0033a1d24316a1c75184d010d864f2c681bef5" - integrity sha512-AUNjvexh+APhhmS8S+KboPz+D3pCxPvEAGduffaAJYxIFxGi/ytZQkrqcKDUU0ERBAo5R7087fyOYr2oms1seg== +"@jest/transform@^26.0.0", "@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^26.5.2" + "@jest/types" "^26.6.2" babel-plugin-istanbul "^6.0.0" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^26.5.2" + jest-haste-map "^26.6.2" jest-regex-util "^26.0.0" - jest-util "^26.5.2" - micromatch "^4.0.2" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/transform@^26.6.1": - version "26.6.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.1.tgz#f70786f96e0f765947b4fb4f54ffcfb7bd783711" - integrity sha512-oNFAqVtqRxZRx6vXL3I4bPKUK0BIlEeaalkwxyQGGI8oXDQBtYQBpiMe5F7qPs4QdvvFYB42gPGIMMcxXaBBxQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.6.1" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.1" - jest-regex-util "^26.0.0" - jest-util "^26.6.1" + jest-util "^26.6.2" micromatch "^4.0.2" pirates "^4.0.1" slash "^3.0.0" @@ -1699,20 +1490,10 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@jest/types@^26.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.5.2.tgz#44c24f30c8ee6c7f492ead9ec3f3c62a5289756d" - integrity sha512-QDs5d0gYiyetI8q+2xWdkixVQMklReZr4ltw7GFDtb4fuJIBCE6mzj2LnitGqCuAlLap6wPyb8fpoHgwZz5fdg== +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" @@ -1720,44 +1501,33 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^26.6.1": - version "26.6.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.1.tgz#2638890e8031c0bc8b4681e0357ed986e2f866c5" - integrity sha512-ywHavIKNpAVrStiRY5wiyehvcktpijpItvGiK72RAn5ctqmzvPk8OvKnvHeBqa1XdQr959CTWAJMqxI8BTibyg== +"@mdx-js/loader@^1.6.19": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.6.22.tgz#d9e8fe7f8185ff13c9c8639c048b123e30d322c4" + integrity sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q== dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@mdx-js/loader@^1.5.1": - version "1.6.18" - resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.6.18.tgz#8d63fcc029573b3a33968c78d1c5e927ad8e497d" - integrity sha512-mCIt3dFc4p7y3ZqVda07grZDWgMcwSePT3k9vQfgfUcGWLeTFhp46fTbzagXVR/izldFSBLVYkouuH2PaI7Ecw== - dependencies: - "@mdx-js/mdx" "1.6.18" - "@mdx-js/react" "1.6.18" + "@mdx-js/mdx" "1.6.22" + "@mdx-js/react" "1.6.22" loader-utils "2.0.0" -"@mdx-js/mdx@1.6.18", "@mdx-js/mdx@^1.5.1": - version "1.6.18" - resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.18.tgz#c73345ef75be0ec303c5d87f3b95cbe55c192742" - integrity sha512-RXtdFBP3cnf/RILx/ipp5TsSY1k75bYYmjorv7jTaPcHPQwhQdI6K4TrVUed/GL4f8zX5TN2QwO5g+3E/8RsXA== +"@mdx-js/mdx@1.6.22", "@mdx-js/mdx@^1.6.19": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" + integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== dependencies: - "@babel/core" "7.11.6" - "@babel/plugin-syntax-jsx" "7.10.4" + "@babel/core" "7.12.9" + "@babel/plugin-syntax-jsx" "7.12.1" "@babel/plugin-syntax-object-rest-spread" "7.8.3" - "@mdx-js/util" "1.6.18" - babel-plugin-apply-mdx-type-prop "1.6.18" - babel-plugin-extract-import-names "1.6.18" + "@mdx-js/util" "1.6.22" + babel-plugin-apply-mdx-type-prop "1.6.22" + babel-plugin-extract-import-names "1.6.22" camelcase-css "2.0.1" - detab "2.0.3" + detab "2.0.4" hast-util-raw "6.0.1" lodash.uniq "4.5.0" - mdast-util-to-hast "9.1.1" + mdast-util-to-hast "10.0.1" remark-footnotes "2.0.0" - remark-mdx "1.6.18" + remark-mdx "1.6.22" remark-parse "8.0.3" remark-squeeze-paragraphs "4.0.0" style-to-object "0.3.0" @@ -1765,15 +1535,15 @@ unist-builder "2.0.3" unist-util-visit "2.0.3" -"@mdx-js/react@1.6.18", "@mdx-js/react@^1.5.1": - version "1.6.18" - resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.18.tgz#f83cbb2355de9cf36a213140ce21647da1e34fa7" - integrity sha512-aFHsZVu7r9WamlP+WO/lyvHHZAubkQjkcRYlvS7fQElypfJvjKdHevjC3xiqlsQpasx/4KqRMoEIb++wNtd+6w== +"@mdx-js/react@1.6.22", "@mdx-js/react@^1.6.19": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573" + integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== -"@mdx-js/util@1.6.18": - version "1.6.18" - resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.18.tgz#c7563bf72cb4520b8b7100b64006a64be717e936" - integrity sha512-axMe+NoLF55OlXPbhRn4GNCHcL1f5W3V3c0dWzg05S9JXm3Ecpxzxaht3g3vTP0dcqBL/yh/xCvzK0ZpO54Eug== +"@mdx-js/util@1.6.22": + version "1.6.22" + resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b" + integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" @@ -1783,20 +1553,20 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@next/env@9.5.5": - version "9.5.5" - resolved "https://registry.yarnpkg.com/@next/env/-/env-9.5.5.tgz#db993649ec6e619e34a36de90dc2baa52fc5280f" - integrity sha512-N9wdjU6XoqLqNQWtrGiWtp1SUuJsYK1cNrZ24A6YD+4w5CNV5SkZX6aewKZCCLP5Y8UNfTij2FkJiSYUfBjX8g== +"@next/env@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.3.tgz#ef1077d78bf500855576f83090d6fb1ec96272f8" + integrity sha512-xjJt2VXoSxAydskmt77nJuEtRL782E4ltaj5JtMzJ8YkNUMMu3d5ktpCR+Q3INKHF/RY6zHJ9QzyE3/s1ikbNg== -"@next/polyfill-module@9.5.5": - version "9.5.5" - resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-9.5.5.tgz#d9c65679a66664ab4859078f58997113c9d01f10" - integrity sha512-itqYFeHo3yN4ccpHq2uNFC2UVQm12K6DxUVwYdui9MJiiueT0pSGb2laYEjf/G5+vVq7M2vb+DkjkOkPMBVfeg== +"@next/polyfill-module@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.3.tgz#507e99f6dd351dc4a6e45b63dbd397087ece459a" + integrity sha512-JaiycQZZbqViaMZgRGYcPIdCPDz+qRnqEGxbhQlrxyPaBaOtsrAEkGf1SS2wJZKa/ncxqWHMfSvizDcGcz/ygQ== -"@next/react-dev-overlay@9.5.5": - version "9.5.5" - resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-9.5.5.tgz#11b36813d75c43b7bd9d5e478bded1ed5391d03a" - integrity sha512-B1nDANxjXr2oyohv+tX0OXZTmJtO5qEWmisNPGnqQ2Z32IixfaAgyNYVuCVf20ap6EUz5elhgNUwRIFh/e26mQ== +"@next/react-dev-overlay@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.3.tgz#99f3151677747d8be08a9314fa7ab3611e8161b8" + integrity sha512-ykiKeUhTsMRoyyYnx4jM8xeOPfKGqQ7xgx2dNXOu4tbPpdivzjJp2+K6+xnqhTmZ7uxfFBV+b1OE1ZzA8qyX5Q== dependencies: "@babel/code-frame" "7.10.4" ally.js "1.4.1" @@ -1809,10 +1579,10 @@ stacktrace-parser "0.1.10" strip-ansi "6.0.0" -"@next/react-refresh-utils@9.5.5": - version "9.5.5" - resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-9.5.5.tgz#fe559b5ca51c038cb7840e0d669a6d7ef01fe4eb" - integrity sha512-Gz5z0+ID+KAGto6Tkgv1a340damEw3HG6ANLKwNi5/QSHqQ3JUAVxMuhz3qnL54505I777evpzL89ofWEMIWKw== +"@next/react-refresh-utils@10.0.3": + version "10.0.3" + resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.3.tgz#276bec60eae18768f96baf8a52f668f657f50ab4" + integrity sha512-XtzzPX2R4+MIyu1waEQUo2tiNwWVEkmObA6pboRCDTPOs4Ri8ckaIE08lN5A5opyF6GVN+IEq/J8KQrgsePsZQ== "@nodelib/fs.scandir@2.1.3": version "2.1.3" @@ -1847,58 +1617,22 @@ dependencies: mkdirp "^1.0.4" -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= +"@pmmmwh/react-refresh-webpack-plugin@^0.4.2": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" + integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" + ansi-html "^0.0.7" + error-stack-parser "^2.0.6" + html-entities "^1.2.1" + native-url "^0.2.6" + schema-utils "^2.6.5" + source-map "^0.7.3" -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@popperjs/core@^2.4.4", "@popperjs/core@^2.5.4": + version "2.5.4" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.5.4.tgz#de25b5da9f727985a3757fd59b5d028aba75841a" + integrity sha512-ZpKr+WTb8zsajqgDkvCEWgp6d5eJT6Q63Ng2neTbzBO76Lbe91vX/iVIW9dikq+Fs3yEo+ls4cxeXABD2LtcbQ== "@reach/router@^1.3.3": version "1.3.4" @@ -1924,85 +1658,87 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@storybook/addon-actions@6.0.27", "@storybook/addon-actions@^6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.0.27.tgz#0ef0ad916808aadfd4989c95ca46b5b711fa5260" - integrity sha512-GtYSjwGeuRSOAVLuSM2Kae5w17aUgKNXzy1zrWlXlBpTrcyhciRsRBSMGV3PV3EpF3HpxQfyWmJZa3OgFsXdRw== +"@storybook/addon-actions@6.1.9", "@storybook/addon-actions@^6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.1.9.tgz#b6d185b8e4e73691acc428b59e4d331195d64a40" + integrity sha512-vYqwuaBHrjRbbuyf4WBc5uDhrSejVEEiCabuu4g00R3dN7P5Ne/tbSw9EkYbbrRKxlEhdkk83DU1/J/+mCY5jw== dependencies: - "@storybook/addons" "6.0.27" - "@storybook/api" "6.0.27" - "@storybook/client-api" "6.0.27" - "@storybook/components" "6.0.27" - "@storybook/core-events" "6.0.27" - "@storybook/theming" "6.0.27" + "@storybook/addons" "6.1.9" + "@storybook/api" "6.1.9" + "@storybook/client-api" "6.1.9" + "@storybook/components" "6.1.9" + "@storybook/core-events" "6.1.9" + "@storybook/theming" "6.1.9" core-js "^3.0.1" fast-deep-equal "^3.1.1" global "^4.3.2" lodash "^4.17.15" polished "^3.4.4" prop-types "^15.7.2" - react "^16.8.3" react-inspector "^5.0.1" - regenerator-runtime "^0.13.3" - ts-dedent "^1.1.1" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" uuid "^8.0.0" -"@storybook/addon-backgrounds@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-6.0.27.tgz#b8c7eb0aaf115766ec94a6946dfbcb466b8ce0ae" - integrity sha512-TO7+ip7KzcADftuH+BFfH8aWVHfHs50Cl4/02uv8AQ/mLZFmb/HkuGDBfRwCv4fWclX613mmL9P0M4sbpYUlGw== +"@storybook/addon-backgrounds@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-6.1.9.tgz#4e9647001b2f396f56428218480f541e3a8a0e60" + integrity sha512-0/nnbnWZqo4NjyHFxcCHkcU+t8uUdk///9jSXRs4swmOLIFRaftEc/ZJ2rScu1Sc7y0CQdbk1Jjyx5/2cHBQtw== dependencies: - "@storybook/addons" "6.0.27" - "@storybook/api" "6.0.27" - "@storybook/client-logger" "6.0.27" - "@storybook/components" "6.0.27" - "@storybook/core-events" "6.0.27" - "@storybook/theming" "6.0.27" + "@storybook/addons" "6.1.9" + "@storybook/api" "6.1.9" + "@storybook/client-logger" "6.1.9" + "@storybook/components" "6.1.9" + "@storybook/core-events" "6.1.9" + "@storybook/theming" "6.1.9" core-js "^3.0.1" + global "^4.3.2" memoizerific "^1.11.3" - react "^16.8.3" - regenerator-runtime "^0.13.3" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" -"@storybook/addon-controls@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-6.0.27.tgz#faf183cb8984647fcf14ef3d6dcffb9d5118ed24" - integrity sha512-YdAwizkDJKo+TpsBB4nnorZZuSdl7+lI0kD7CUUicDdcTAQdI/mNUvKOCKVWAnYLzQmdWRc3e3GNvp003Q155g== +"@storybook/addon-controls@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-6.1.9.tgz#d7663d4c95db49163c372989f04264b11a4fa5cf" + integrity sha512-ctMXTcouqrPlNpQ0w3q6wjg16s1DL9VJtw1WvkySwezOE0ytfeC8M4nsbsKJnuY+dCadHKGn392DC1qVidY7Hg== dependencies: - "@storybook/addons" "6.0.27" - "@storybook/api" "6.0.27" - "@storybook/client-api" "6.0.27" - "@storybook/components" "6.0.27" - "@storybook/node-logger" "6.0.27" - "@storybook/theming" "6.0.27" + "@storybook/addons" "6.1.9" + "@storybook/api" "6.1.9" + "@storybook/client-api" "6.1.9" + "@storybook/components" "6.1.9" + "@storybook/node-logger" "6.1.9" + "@storybook/theming" "6.1.9" core-js "^3.0.1" - ts-dedent "^1.1.1" + ts-dedent "^2.0.0" -"@storybook/addon-docs@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.0.27.tgz#ff6558a3a68f9c9fa918e23ad636cdef3a461d1e" - integrity sha512-NXSNulvpH2CL/aPPVa/llVc7SFOZUMkECcVmNf3aO0inE3nn2QN1dW3LfJaESuZYwLKFRa7qY+0CmvNqOrHXrQ== +"@storybook/addon-docs@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.1.9.tgz#41cf82cece4abcf7640a1b7c2be6a7d5908c4678" + integrity sha512-5pwt2WU/yD4cnHU2KOpzU4t7A9FoePhZ15WOajtuV+W/hekNQSOGgNASQZbVOOldl954ireNIjZHtvthpI0tvQ== dependencies: - "@babel/generator" "^7.9.6" - "@babel/parser" "^7.9.6" - "@babel/plugin-transform-react-jsx" "^7.3.0" - "@babel/preset-env" "^7.9.6" + "@babel/core" "^7.12.1" + "@babel/generator" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/plugin-transform-react-jsx" "^7.12.1" + "@babel/preset-env" "^7.12.1" "@jest/transform" "^26.0.0" - "@mdx-js/loader" "^1.5.1" - "@mdx-js/mdx" "^1.5.1" - "@mdx-js/react" "^1.5.1" - "@storybook/addons" "6.0.27" - "@storybook/api" "6.0.27" - "@storybook/client-api" "6.0.27" - "@storybook/client-logger" "6.0.27" - "@storybook/components" "6.0.27" - "@storybook/core" "6.0.27" - "@storybook/core-events" "6.0.27" + "@mdx-js/loader" "^1.6.19" + "@mdx-js/mdx" "^1.6.19" + "@mdx-js/react" "^1.6.19" + "@storybook/addons" "6.1.9" + "@storybook/api" "6.1.9" + "@storybook/client-api" "6.1.9" + "@storybook/client-logger" "6.1.9" + "@storybook/components" "6.1.9" + "@storybook/core" "6.1.9" + "@storybook/core-events" "6.1.9" "@storybook/csf" "0.0.1" - "@storybook/node-logger" "6.0.27" - "@storybook/postinstall" "6.0.27" - "@storybook/source-loader" "6.0.27" - "@storybook/theming" "6.0.27" + "@storybook/node-logger" "6.1.9" + "@storybook/postinstall" "6.1.9" + "@storybook/source-loader" "6.1.9" + "@storybook/theming" "6.1.9" acorn "^7.1.0" acorn-jsx "^5.1.0" acorn-walk "^7.0.0" @@ -2014,180 +1750,182 @@ html-tags "^3.1.0" js-string-escape "^1.0.1" lodash "^4.17.15" + prettier "~2.0.5" prop-types "^15.7.2" react-element-to-jsx-string "^14.3.1" - regenerator-runtime "^0.13.3" + regenerator-runtime "^0.13.7" remark-external-links "^6.0.0" remark-slug "^6.0.0" - ts-dedent "^1.1.1" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/addon-essentials@^6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-6.0.27.tgz#f65a5b74cc585cf41cf7d1acce1601fa780abcdb" - integrity sha512-JmiMojlqivAG3kaIAIdKX2eOd4jlNK0ATfcU7PLjTh45BlW08erQIwdLAmU5BlTld/HcwCiGkpGKC7KJgcjGGQ== +"@storybook/addon-essentials@^6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-6.1.9.tgz#e689de480ea626a784bc3784b36ceb4c9b366561" + integrity sha512-mw05LsBjWLu79u0lFsd3/kSpU7Dctt0xzcx8hXcaUKsiq7QvqPoKVutFuC8tvgoAVaCmmokLygscbMBOD2hq0w== dependencies: - "@storybook/addon-actions" "6.0.27" - "@storybook/addon-backgrounds" "6.0.27" - "@storybook/addon-controls" "6.0.27" - "@storybook/addon-docs" "6.0.27" - "@storybook/addon-toolbars" "6.0.27" - "@storybook/addon-viewport" "6.0.27" - "@storybook/addons" "6.0.27" - "@storybook/api" "6.0.27" - "@storybook/node-logger" "6.0.27" + "@storybook/addon-actions" "6.1.9" + "@storybook/addon-backgrounds" "6.1.9" + "@storybook/addon-controls" "6.1.9" + "@storybook/addon-docs" "6.1.9" + "@storybook/addon-toolbars" "6.1.9" + "@storybook/addon-viewport" "6.1.9" + "@storybook/addons" "6.1.9" + "@storybook/api" "6.1.9" + "@storybook/node-logger" "6.1.9" core-js "^3.0.1" - regenerator-runtime "^0.13.3" - ts-dedent "^1.1.1" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" -"@storybook/addon-links@^6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.0.27.tgz#b1a0b0840e8d80ece73ad749b89f48efbf177fbc" - integrity sha512-3jgGy+wgeJuqrdOPQCIOTk8TBtFGGoAbzahnuDjh4eH34uSAZgVurME3ojdnqq743ELzMZXL78Y46otZOzVnkA== +"@storybook/addon-links@^6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.1.9.tgz#fcd254a7685a09868c27a7162f4d0671eebf9f4b" + integrity sha512-z1ih0lyVr8RMlw0oxXfu7OWjHhyFWasZMivuJ6Q/XGAPS8T/Ohfct9mnNYFYeAtVeUUHI1IUavrOPHzcJnDkkg== dependencies: - "@storybook/addons" "6.0.27" - "@storybook/client-logger" "6.0.27" - "@storybook/core-events" "6.0.27" + "@storybook/addons" "6.1.9" + "@storybook/client-logger" "6.1.9" + "@storybook/core-events" "6.1.9" "@storybook/csf" "0.0.1" - "@storybook/router" "6.0.27" + "@storybook/router" "6.1.9" "@types/qs" "^6.9.0" core-js "^3.0.1" global "^4.3.2" prop-types "^15.7.2" qs "^6.6.0" - regenerator-runtime "^0.13.3" - ts-dedent "^1.1.1" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" -"@storybook/addon-toolbars@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-6.0.27.tgz#20632c610e2e47fb688a1794fd8d31a0c542dd85" - integrity sha512-Ak0srUPOX9m44UfQwZK4ue1hCNvkhfhB5PfVwjN6KyglpRCCNdFIT3BIPshmPXSyO1eeRL4rufxWtvtcqCodag== +"@storybook/addon-toolbars@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-6.1.9.tgz#99c8b48afc24773faf9490753788ee354e97f5d8" + integrity sha512-rXYkVqSahrb6eG6CwyuI2TNzazUBGTsSQK1ywOmLwFK2xs+ybn1jDkkh5UmzuPN7g6ouT3qJfz1H2PMqfGEY8Q== dependencies: - "@storybook/addons" "6.0.27" - "@storybook/api" "6.0.27" - "@storybook/client-api" "6.0.27" - "@storybook/components" "6.0.27" + "@storybook/addons" "6.1.9" + "@storybook/api" "6.1.9" + "@storybook/client-api" "6.1.9" + "@storybook/components" "6.1.9" core-js "^3.0.1" -"@storybook/addon-viewport@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-6.0.27.tgz#acfecc633b84b9d486e5ca7c302c4a328fe813a9" - integrity sha512-oSHJeWsWr21UIxp5yU+aTpegBLBphz1Vx49t1v3uqxTWZaUAWtXTbdZxkvTd4kkEDzEEyUa4Vj8UoXPMTpYBAA== +"@storybook/addon-viewport@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-6.1.9.tgz#7160b7598a34b8c19ff7571b781329fe8ad5de8d" + integrity sha512-+raES4+fDc0eCnpF4JW5kYwOTFEGiVmjmhFSrsXXuRXNGrCx4s5t9Bpklwm4YswIgmubB0Fpd0kaQS2LjRz94Q== dependencies: - "@storybook/addons" "6.0.27" - "@storybook/api" "6.0.27" - "@storybook/client-logger" "6.0.27" - "@storybook/components" "6.0.27" - "@storybook/core-events" "6.0.27" - "@storybook/theming" "6.0.27" + "@storybook/addons" "6.1.9" + "@storybook/api" "6.1.9" + "@storybook/client-logger" "6.1.9" + "@storybook/components" "6.1.9" + "@storybook/core-events" "6.1.9" + "@storybook/theming" "6.1.9" core-js "^3.0.1" global "^4.3.2" memoizerific "^1.11.3" prop-types "^15.7.2" - regenerator-runtime "^0.13.3" + regenerator-runtime "^0.13.7" -"@storybook/addons@6.0.27", "@storybook/addons@^6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.0.27.tgz#bd39373b3b95360d732b855f692f843e0745f9fe" - integrity sha512-ruumzJ1BLQ/2+KbV6qTN1OWPqejPWczY2EjEKo8azMlmZ4xBSiczi5HvDto/fYt6fMQfzgkdIUAcofHGf4XQGQ== +"@storybook/addons@6.1.9", "@storybook/addons@^6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.1.9.tgz#78f3cb27b7d934f091f311f89b6ca312d34f12b8" + integrity sha512-NRxdlGLmmSoVwlirVRgKC8xmW9cFkG+Sp5GEd4XkJDaaIg2vKR3RuFU9GuvIOVMxOhhERqhQ07bnDaAMKbFzGw== dependencies: - "@storybook/api" "6.0.27" - "@storybook/channels" "6.0.27" - "@storybook/client-logger" "6.0.27" - "@storybook/core-events" "6.0.27" - "@storybook/router" "6.0.27" - "@storybook/theming" "6.0.27" + "@storybook/api" "6.1.9" + "@storybook/channels" "6.1.9" + "@storybook/client-logger" "6.1.9" + "@storybook/core-events" "6.1.9" + "@storybook/router" "6.1.9" + "@storybook/theming" "6.1.9" core-js "^3.0.1" global "^4.3.2" - regenerator-runtime "^0.13.3" + regenerator-runtime "^0.13.7" -"@storybook/api@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.0.27.tgz#e2f42918560f17d725eaf10cd601e78b21d79f02" - integrity sha512-48LDFK+mOdPBHjZWYTOLZnOJ3XPn8OxJm7h5dCuuFe6wblQIYxXeyBwn6BVOkmonmNJ9OglUGY7KqslaOrGYyQ== +"@storybook/api@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.1.9.tgz#3f9bf00b2b18fa02965079fe775bd713677b30a3" + integrity sha512-S9SXlSiMeI450NIbOnx3UU9TZNyVD7jcBCjfNzhj0PqzRX/IG5Usj+R88Jm6MSIDjtsVjrWRCou+PrCh2xMnlQ== dependencies: "@reach/router" "^1.3.3" - "@storybook/channels" "6.0.27" - "@storybook/client-logger" "6.0.27" - "@storybook/core-events" "6.0.27" + "@storybook/channels" "6.1.9" + "@storybook/client-logger" "6.1.9" + "@storybook/core-events" "6.1.9" "@storybook/csf" "0.0.1" - "@storybook/router" "6.0.27" + "@storybook/router" "6.1.9" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.0.27" + "@storybook/theming" "6.1.9" "@types/reach__router" "^1.3.5" core-js "^3.0.1" fast-deep-equal "^3.1.1" global "^4.3.2" lodash "^4.17.15" memoizerific "^1.11.3" - react "^16.8.3" - regenerator-runtime "^0.13.3" + regenerator-runtime "^0.13.7" store2 "^2.7.1" telejson "^5.0.2" - ts-dedent "^1.1.1" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/channel-postmessage@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.0.27.tgz#42641312e0453d848ae899ad92b4a998f1905440" - integrity sha512-ygLbzJ/WbllPL4albJUSRoiRC3M+Q/stq66PWkLBlb1NhoXanPbmLBFaAiGsypXyH/E9Z6bQT88eUyzM5IlTmw== +"@storybook/channel-postmessage@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.1.9.tgz#5d73c67ba94bcf68b14138bba6c5bb0850c72c5e" + integrity sha512-tX7pD9Xrf1WsatpJqtJ6o8MlgxG7jH+oFhNPkGvUbWiolVDQmuDndwM8Hh1kUnOWlyE1AN5hlM7av8MY+9D3NA== dependencies: - "@storybook/channels" "6.0.27" - "@storybook/client-logger" "6.0.27" - "@storybook/core-events" "6.0.27" + "@storybook/channels" "6.1.9" + "@storybook/client-logger" "6.1.9" + "@storybook/core-events" "6.1.9" core-js "^3.0.1" global "^4.3.2" qs "^6.6.0" telejson "^5.0.2" -"@storybook/channels@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.0.27.tgz#048b93566a16982ce244d5272f20f21e0c60ab66" - integrity sha512-W47tQO/1oAUDEb51URIsodT/G0QPkzpPVy+Q3bJ9buJ9TLIO/qObAH9pYw9ggUOgIJmHJY54I1KN7QAvhuVCfw== +"@storybook/channels@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.1.9.tgz#94f07ff3615b11c07d1902be6b6cd298c0eea55c" + integrity sha512-aV+KsZPuoTtFKSMUkSCyVlVmtVHkSH35dSbyMazjlUD9cOLwkXB1s+LZL/GxxSR6a6uR75V0QWxItfNxaJETMQ== dependencies: core-js "^3.0.1" - ts-dedent "^1.1.1" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-api@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.0.27.tgz#665b49ef6723162f2a570b54e9ddfdf9f77fe85f" - integrity sha512-4AaBZCds2dr4JVVlOVa2LF3Vjv0VcLVWaqibydPRO6Ch2shDw2ImwQxYBEq0WygfHR7VzG1cmOK8D92C7goPKA== +"@storybook/client-api@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.1.9.tgz#d4a8d38bc657f26e4837831b961e085da1954d51" + integrity sha512-b2DFaGAS5G2ly3UJY5NJNXh/LxgLgSJLbqPL4t48MFW5XjH+rmEWXE9P+ujCaPclH1/y7mZRMprDj3ycDbRo3Q== dependencies: - "@storybook/addons" "6.0.27" - "@storybook/channel-postmessage" "6.0.27" - "@storybook/channels" "6.0.27" - "@storybook/client-logger" "6.0.27" - "@storybook/core-events" "6.0.27" + "@storybook/addons" "6.1.9" + "@storybook/channel-postmessage" "6.1.9" + "@storybook/channels" "6.1.9" + "@storybook/client-logger" "6.1.9" + "@storybook/core-events" "6.1.9" "@storybook/csf" "0.0.1" "@types/qs" "^6.9.0" - "@types/webpack-env" "^1.15.2" + "@types/webpack-env" "^1.15.3" core-js "^3.0.1" global "^4.3.2" lodash "^4.17.15" memoizerific "^1.11.3" qs "^6.6.0" + regenerator-runtime "^0.13.7" stable "^0.1.8" store2 "^2.7.1" - ts-dedent "^1.1.1" + ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-logger@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.0.27.tgz#b31d92908938de433cb5bd76f52c04a6b2c994ad" - integrity sha512-IY/p0f9XxfHZWVkjeIYOwF6xuonjgmZ9mYPy7Ks47zzDFrUe0/g5cqfBJBUj1YOqlANbF6XCO8YiKXjkE70olw== +"@storybook/client-logger@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.1.9.tgz#1d61a64000d4691780d75e19b78fd44adfdb5d9c" + integrity sha512-i7Q2ky9+Jwv+wmnlOGxmDOEdmaTIB69OQnnZNWGKufOwoIMjn6QO0VifARyA9W++nNSijjJ5th84tLJALaoCTA== dependencies: core-js "^3.0.1" global "^4.3.2" -"@storybook/components@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.0.27.tgz#6349fb15b6cf3034cfccbbccfa541fa74d4848c5" - integrity sha512-CnWgr/jgo7/XU+s7jhpNYevUivEsJccMRxuyOI+Ry8ndnoheifT4fp4+O5OaOeC08hStlPyad85LdTbOKigt7g== +"@storybook/components@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.1.9.tgz#f25d18f3a410cc7e9549ddb3c971c40d9108d4d8" + integrity sha512-cYYm3fHo9MW0bbl47lu1ncwulV7V9VEF8FC96uvys07oaCTFWKzQ0z/FD0nCqeK6eEz1+SEqnGwLFmOtqlRXDQ== dependencies: - "@storybook/client-logger" "6.0.27" + "@popperjs/core" "^2.4.4" + "@storybook/client-logger" "6.1.9" "@storybook/csf" "0.0.1" - "@storybook/theming" "6.0.27" + "@storybook/theming" "6.1.9" "@types/overlayscrollbars" "^1.9.0" "@types/react-color" "^3.0.1" "@types/react-syntax-highlighter" "11.0.4" @@ -2199,62 +1937,60 @@ memoizerific "^1.11.3" overlayscrollbars "^1.10.2" polished "^3.4.4" - popper.js "^1.14.7" - react "^16.8.3" react-color "^2.17.0" - react-dom "^16.8.3" - react-popper-tooltip "^2.11.0" - react-syntax-highlighter "^12.2.1" + react-popper-tooltip "^3.1.0" + react-syntax-highlighter "^13.5.0" react-textarea-autosize "^8.1.1" - ts-dedent "^1.1.1" + ts-dedent "^2.0.0" -"@storybook/core-events@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.0.27.tgz#175314970236d115b04c204d85121fde1a47bb4d" - integrity sha512-w+Q2pt7DyhonWhHqjeBMMHMtV8h07ROOF9P40RthepT6/GO/471X33cgngr0i0uPgqha3JajNIl9fwAybsIROw== +"@storybook/core-events@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.1.9.tgz#0a88281837d1aa657a93a9abf7f5aad65b8d68e7" + integrity sha512-oOpqpjCTJCt0U5lnQ16OZU0iKIDh2/MIg4yrnDw+Pt6zGyX3zSvtB+9W8LQFnMwm+cXaNmiizGwt/W+4OiORjQ== dependencies: core-js "^3.0.1" -"@storybook/core@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.0.27.tgz#a1155c5826a6b585d1942009a6811cd9590da26c" - integrity sha512-qHONOXU8g17IfSaMF0HaSQfUFUGqOIBCX6g5qNHuzuASNsrdDmSr6xgF9+htltaQjSpC+s/4zOpn7kXfh1+eGQ== +"@storybook/core@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.1.9.tgz#e6575e294cb4d2d9b57d5976a145cae8f4a88594" + integrity sha512-guz+R6eDX923Cw7NqgS5PrpTmmjDB+m5X1iF9pwKlpPTfzIiT/wTzJm4PwhFoGONNoXrItObX/6hW6OQbX4aOA== dependencies: - "@babel/plugin-proposal-class-properties" "^7.8.3" - "@babel/plugin-proposal-decorators" "^7.8.3" - "@babel/plugin-proposal-export-default-from" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" - "@babel/plugin-proposal-object-rest-spread" "^7.9.6" - "@babel/plugin-proposal-optional-chaining" "^7.10.1" - "@babel/plugin-proposal-private-methods" "^7.8.3" + "@babel/core" "^7.12.3" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-decorators" "^7.12.1" + "@babel/plugin-proposal-export-default-from" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.5" - "@babel/plugin-transform-destructuring" "^7.9.5" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-parameters" "^7.9.5" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/preset-env" "^7.9.6" - "@babel/preset-react" "^7.8.3" - "@babel/preset-typescript" "^7.9.0" - "@babel/register" "^7.10.5" - "@storybook/addons" "6.0.27" - "@storybook/api" "6.0.27" - "@storybook/channel-postmessage" "6.0.27" - "@storybook/channels" "6.0.27" - "@storybook/client-api" "6.0.27" - "@storybook/client-logger" "6.0.27" - "@storybook/components" "6.0.27" - "@storybook/core-events" "6.0.27" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.1" + "@babel/preset-typescript" "^7.12.1" + "@babel/register" "^7.12.1" + "@storybook/addons" "6.1.9" + "@storybook/api" "6.1.9" + "@storybook/channel-postmessage" "6.1.9" + "@storybook/channels" "6.1.9" + "@storybook/client-api" "6.1.9" + "@storybook/client-logger" "6.1.9" + "@storybook/components" "6.1.9" + "@storybook/core-events" "6.1.9" "@storybook/csf" "0.0.1" - "@storybook/node-logger" "6.0.27" - "@storybook/router" "6.0.27" + "@storybook/node-logger" "6.1.9" + "@storybook/router" "6.1.9" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.0.27" - "@storybook/ui" "6.0.27" + "@storybook/theming" "6.1.9" + "@storybook/ui" "6.1.9" "@types/glob-base" "^0.3.0" "@types/micromatch" "^4.0.1" "@types/node-fetch" "^2.5.4" @@ -2272,6 +2008,7 @@ cli-table3 "0.6.0" commander "^5.0.0" core-js "^3.0.1" + cpy "^8.1.1" css-loader "^3.5.3" detect-port "^1.3.0" dotenv-webpack "^1.7.0" @@ -2302,19 +2039,21 @@ qs "^6.6.0" raw-loader "^4.0.1" react-dev-utils "^10.0.0" - regenerator-runtime "^0.13.3" + regenerator-runtime "^0.13.7" resolve-from "^5.0.0" serve-favicon "^2.5.0" - shelljs "^0.8.3" + shelljs "^0.8.4" stable "^0.1.8" style-loader "^1.2.1" + telejson "^5.0.2" terser-webpack-plugin "^3.0.0" - ts-dedent "^1.1.1" + ts-dedent "^2.0.0" unfetch "^4.1.0" url-loader "^4.0.0" util-deprecate "^1.0.2" - webpack "^4.43.0" + webpack "^4.44.2" webpack-dev-middleware "^3.7.0" + webpack-filter-warnings-plugin "^1.2.1" webpack-hot-middleware "^2.25.0" webpack-virtual-modules "^0.2.2" @@ -2325,10 +2064,10 @@ dependencies: lodash "^4.17.15" -"@storybook/node-logger@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.0.27.tgz#31b19f9cb36fe2c2cf3aa0ddcf2d51dc0f619f4e" - integrity sha512-HlVWi2EvWPAOS19BctlhDZ989oBd7MvFbkgr2xTs01UhH96DcsUXCeMwQGhw1D5wgvpi7JtM4Y830BsBBiBLJQ== +"@storybook/node-logger@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.1.9.tgz#c63a61f72209d76eeeffe9d151fec043864b9438" + integrity sha512-2gP9BSBXEOGIcUyzRdIkIJi1UEINUAIyuv9bfKODo4GfujRg7DLz/mpi/FdwmulGg/viXWSXa6ccb6ziIgY9RA== dependencies: "@types/npmlog" "^4.1.2" chalk "^4.0.0" @@ -2336,26 +2075,26 @@ npmlog "^4.1.2" pretty-hrtime "^1.0.3" -"@storybook/postinstall@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-6.0.27.tgz#20ad2685e32bb875aa629fdf21b2c44f5db309a7" - integrity sha512-GgrBCuOQKhlM3+X+bVCdoQqCofzfwCQS+21VgAfJ8bFeCHT8n6kY48OTf+vr6uosjSuQ7sJCiHWvosk3OqBsXA== +"@storybook/postinstall@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-6.1.9.tgz#1c62cf46b7b8c50e939c8b14de9e7133368aab45" + integrity sha512-9aL0+ALWHKGJAnC8CdRBE7PlX87sKMEWZkDQJL5uT1eikfgfAmS1AgkpIbFD8mcxstcZmFKRwc1BD4mvwzqtQQ== dependencies: core-js "^3.0.1" -"@storybook/react@^6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.0.27.tgz#8ad4790b91c007cdfec7844f0dc44c1239ab4687" - integrity sha512-otIWq00UR7vfE4eeX9TIlgXy+UmaRitzqLRaFwdJCHUUWp9GZRrTcQLphJ5bl2tRO3GuzA/YO8VtJLGpCnkGXg== +"@storybook/react@^6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.1.9.tgz#063427015b3d0ce582b1b6b7826d40d963d265ce" + integrity sha512-HJWHQE+eCC7sz1vqvgmBMn2sA1uc0ByEj+NeSgyi45jBFI+Ke4a8hxx6k5XA7k9gLznqG8TPGg0z6EdQTJTLkQ== dependencies: - "@babel/preset-flow" "^7.0.0" - "@babel/preset-react" "^7.0.0" - "@storybook/addons" "6.0.27" - "@storybook/core" "6.0.27" - "@storybook/node-logger" "6.0.27" + "@babel/preset-flow" "^7.12.1" + "@babel/preset-react" "^7.12.1" + "@pmmmwh/react-refresh-webpack-plugin" "^0.4.2" + "@storybook/addons" "6.1.9" + "@storybook/core" "6.1.9" + "@storybook/node-logger" "6.1.9" "@storybook/semver" "^7.3.2" - "@svgr/webpack" "^5.4.0" - "@types/webpack-env" "^1.15.2" + "@types/webpack-env" "^1.15.3" babel-plugin-add-react-displayname "^0.0.5" babel-plugin-named-asset-import "^0.3.1" babel-plugin-react-docgen "^4.2.1" @@ -2364,15 +2103,16 @@ lodash "^4.17.15" prop-types "^15.7.2" react-dev-utils "^10.0.0" - react-docgen-typescript-plugin "^0.5.2" - regenerator-runtime "^0.13.3" - ts-dedent "^1.1.1" - webpack "^4.43.0" + react-docgen-typescript-plugin "^0.6.2" + react-refresh "^0.8.3" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + webpack "^4.44.2" -"@storybook/router@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.0.27.tgz#04725a105a4e7fc286ca670700a22f78fec50f0d" - integrity sha512-jo6d48mZLeHyv8wYf0NnV0eCtJ7LRsBaf1x2c967u4GAQ128+bYXm0iZwAtv4kYmH3YgETGuCbKpZyQbjbhUVQ== +"@storybook/router@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.1.9.tgz#c0b24dc3ab53d58541b81c7abea2f11d7fbbebf6" + integrity sha512-kIlmSFBnqI198oMCncFZR7MxoV5/kP6KS0paFcyu1XE1zO2ovV6eQZ8pPpOjSsD/ISu4Y44uE+ZDNsEehjj6GQ== dependencies: "@reach/router" "^1.3.3" "@types/reach__router" "^1.3.5" @@ -2389,13 +2129,13 @@ core-js "^3.6.5" find-up "^4.1.0" -"@storybook/source-loader@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.0.27.tgz#f36560e82d215e2554160326cc9baca9e037154d" - integrity sha512-mLncCAN0s9mcUY7/wFAwJvXDV2ts5XxB40ZHRZKlseTiI011uwf1AEBOmeSWft/CxOtbicHTYbIHdMokuWNjmg== +"@storybook/source-loader@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.1.9.tgz#10eebf12ecd7baa70e51f368c41b89b4b5084eb1" + integrity sha512-2h3TS1O9qJ0xmOOJrWxY9ODEFK0/RLxEmWcXngWAcH1ZrHAuz6UcEatO2bIgykrorf9xKqqk7/AYyE9KxW668A== dependencies: - "@storybook/addons" "6.0.27" - "@storybook/client-logger" "6.0.27" + "@storybook/addons" "6.1.9" + "@storybook/client-logger" "6.1.9" "@storybook/csf" "0.0.1" core-js "^3.0.1" estraverse "^4.2.0" @@ -2403,17 +2143,18 @@ loader-utils "^2.0.0" lodash "^4.17.15" prettier "~2.0.5" - regenerator-runtime "^0.13.3" + regenerator-runtime "^0.13.7" + source-map "^0.7.3" -"@storybook/theming@6.0.27", "@storybook/theming@^6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.0.27.tgz#dc09d02b7f6c70db079f4aa3fb50c2fe3e3fe9b9" - integrity sha512-6jm7tJuGUZzSftRQce776fS9/Pt5OAypmaTOj035z3RWswoQ1pj8olXVnSNxSt6jyYoWrJru8kiCl7w78q0rPg== +"@storybook/theming@6.1.9", "@storybook/theming@^6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.1.9.tgz#8c584aa623f3d6e33b1e3b3de2ec1f41bdc5d9ab" + integrity sha512-orzMQkyEhAQEi0E9iwmUkzh5yPHoYGBz17t2aydDeT6oGKii6if8Mq2oPVycfVKZ84QO7GFAS9q1nVCRcuD8oA== dependencies: - "@emotion/core" "^10.0.20" + "@emotion/core" "^10.1.1" "@emotion/is-prop-valid" "^0.8.6" - "@emotion/styled" "^10.0.17" - "@storybook/client-logger" "6.0.27" + "@emotion/styled" "^10.0.23" + "@storybook/client-logger" "6.1.9" core-js "^3.0.1" deep-object-diff "^1.1.0" emotion-theming "^10.0.19" @@ -2421,27 +2162,28 @@ memoizerific "^1.11.3" polished "^3.4.4" resolve-from "^5.0.0" - ts-dedent "^1.1.1" + ts-dedent "^2.0.0" -"@storybook/ui@6.0.27": - version "6.0.27" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.0.27.tgz#ae3321de6714bfba1913c8edc1a9338d8e301d38" - integrity sha512-hxTeoe3QTSJ4P9EI8Kc8hroxem5OXEYq77zKq8XxgtOKhVzhQVaA+c4p/t6Z68+yK693CCp07+6QvGo++EQEHw== +"@storybook/ui@6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.1.9.tgz#1ed3168d9fe5827285c13d8507dd1fd872830542" + integrity sha512-4MK5iTf7kI5DYVeWRiD6lkXdd0S6eiQJu9lvWqMOQJLOH5Bq77g0Ejo+38RTEQpV6we7hCPWWnRXQBjmJ2+19w== dependencies: - "@emotion/core" "^10.0.20" - "@storybook/addons" "6.0.27" - "@storybook/api" "6.0.27" - "@storybook/channels" "6.0.27" - "@storybook/client-logger" "6.0.27" - "@storybook/components" "6.0.27" - "@storybook/core-events" "6.0.27" - "@storybook/router" "6.0.27" + "@emotion/core" "^10.1.1" + "@storybook/addons" "6.1.9" + "@storybook/api" "6.1.9" + "@storybook/channels" "6.1.9" + "@storybook/client-logger" "6.1.9" + "@storybook/components" "6.1.9" + "@storybook/core-events" "6.1.9" + "@storybook/router" "6.1.9" "@storybook/semver" "^7.3.2" - "@storybook/theming" "6.0.27" + "@storybook/theming" "6.1.9" "@types/markdown-to-jsx" "^6.11.0" copy-to-clipboard "^3.0.8" core-js "^3.0.1" core-js-pure "^3.0.1" + downshift "^6.0.6" emotion-theming "^10.0.19" fuse.js "^3.6.1" global "^4.3.2" @@ -2450,13 +2192,11 @@ memoizerific "^1.11.3" polished "^3.4.4" qs "^6.6.0" - react "^16.8.3" - react-dom "^16.8.3" react-draggable "^4.0.3" react-helmet-async "^1.0.2" react-hotkeys "2.0.0" react-sizeme "^2.6.7" - regenerator-runtime "^0.13.3" + regenerator-runtime "^0.13.7" resolve-from "^5.0.0" store2 "^2.7.1" @@ -2467,116 +2207,13 @@ dependencies: "@babel/core" ">=7.9.0" -"@stylelint/postcss-markdown@^0.36.1": - version "0.36.1" - resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz#829b87e6c0f108014533d9d7b987dc9efb6632e8" - integrity sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw== +"@stylelint/postcss-markdown@^0.36.2": + version "0.36.2" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz#0a540c4692f8dcdfc13c8e352c17e7bfee2bb391" + integrity sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ== dependencies: - remark "^12.0.0" - unist-util-find-all-after "^3.0.1" - -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== - -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - -"@svgr/babel-plugin-transform-svg-component@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.4.0.tgz#a2212b4d018e6075a058bb7e220a66959ef7a03c" - integrity sha512-zLl4Fl3NvKxxjWNkqEcpdSOpQ3LGVH2BNFQ6vjaK6sFo2IrSznrhURIPI0HAphKiiIwNYjAfE0TNoQDSZv0U9A== - -"@svgr/babel-preset@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.4.0.tgz#da21854643e1c4ad2279239baa7d5a8b128c1f15" - integrity sha512-Gyx7cCxua04DBtyILTYdQxeO/pwfTBev6+eXTbVbxe4HTGhOUW6yo7PSbG2p6eJMl44j6XSequ0ZDP7bl0nu9A== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.4.0" - -"@svgr/core@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.4.0.tgz#655378ee43679eb94fee3d4e1976e38252dff8e7" - integrity sha512-hWGm1DCCvd4IEn7VgDUHYiC597lUYhFau2lwJBYpQWDirYLkX4OsXu9IslPgJ9UpP7wsw3n2Ffv9sW7SXJVfqQ== - dependencies: - "@svgr/plugin-jsx" "^5.4.0" - camelcase "^6.0.0" - cosmiconfig "^6.0.0" - -"@svgr/hast-util-to-babel-ast@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.4.0.tgz#bb5d002e428f510aa5b53ec0a02377a95b367715" - integrity sha512-+U0TZZpPsP2V1WvVhqAOSTk+N+CjYHdZx+x9UBa1eeeZDXwH8pt0CrQf2+SvRl/h2CAPRFkm+Ey96+jKP8Bsgg== - dependencies: - "@babel/types" "^7.9.5" - -"@svgr/plugin-jsx@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.4.0.tgz#ab47504c55615833c6db70fca2d7e489f509787c" - integrity sha512-SGzO4JZQ2HvGRKDzRga9YFSqOqaNrgLlQVaGvpZ2Iht2gwRp/tq+18Pvv9kS9ZqOMYgyix2LLxZMY1LOe9NPqw== - dependencies: - "@babel/core" "^7.7.5" - "@svgr/babel-preset" "^5.4.0" - "@svgr/hast-util-to-babel-ast" "^5.4.0" - svg-parser "^2.0.2" - -"@svgr/plugin-svgo@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.4.0.tgz#45d9800b7099a6f7b4d85ebac89ab9abe8592f64" - integrity sha512-3Cgv3aYi1l6SHyzArV9C36yo4kgwVdF3zPQUC6/aCDUeXAofDYwE5kk3e3oT5ZO2a0N3lB+lLGvipBG6lnG8EA== - dependencies: - cosmiconfig "^6.0.0" - merge-deep "^3.0.2" - svgo "^1.2.2" - -"@svgr/webpack@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.4.0.tgz#b68bc86e29cf007292b96ced65f80971175632e0" - integrity sha512-LjepnS/BSAvelnOnnzr6Gg0GcpLmnZ9ThGFK5WJtm1xOqdBE/1IACZU7MMdVzjyUkfFqGz87eRE4hFaSLiUwYg== - dependencies: - "@babel/core" "^7.9.0" - "@babel/plugin-transform-react-constant-elements" "^7.9.0" - "@babel/preset-env" "^7.9.5" - "@babel/preset-react" "^7.9.4" - "@svgr/core" "^5.4.0" - "@svgr/plugin-jsx" "^5.4.0" - "@svgr/plugin-svgo" "^5.4.0" - loader-utils "^2.0.0" + remark "^13.0.0" + unist-util-find-all-after "^3.0.2" "@types/anymatch@*": version "1.3.1" @@ -2584,9 +2221,9 @@ integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.10" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.10.tgz#ca58fc195dd9734e77e57c6f2df565623636ab40" - integrity sha512-x8OM8XzITIMyiwl5Vmo2B1cR1S1Ipkyv4mdlbJjMa1lmuKvKY9FrBbEANIaMlnWn5Rf7uO+rC/VgYabNkE17Hw== + version "7.1.12" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -2602,17 +2239,17 @@ "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.3.tgz#b8aaeba0a45caca7b56a5de9459872dde3727214" - integrity sha512-uCoznIPDmnickEi6D0v11SBpW0OuVqHJCa7syXqQHy5uktSCreIlt0iglsCnmvz8yCb38hGcWeseA8cWJSwv5Q== + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== + version "7.0.16" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.16.tgz#0bbbf70c7bc4193210dd27e252c51260a37cd6a7" + integrity sha512-S63Dt4CZOkuTmpLGGWtT/mQdVORJOpx6SZWGVaP56dda/0Nx5nEe82K7/LAm8zYr6SfMq+1N2OreIOrHAx656w== dependencies: "@babel/types" "^7.3.0" @@ -2628,10 +2265,10 @@ dependencies: "@types/node" "*" -"@types/chroma-js@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/chroma-js/-/chroma-js-2.1.0.tgz#612ce66f8eeb42e37ee90ce8c6da40d8845dc83c" - integrity sha512-2L+sToR0+0m/l8bTRF+Q5WkPuPpNjS2e+Zcs1xr1RRos3PJZHkrUJujZ+fwsKIfxA9NkqDKDhf8zlWCCm+rQhg== +"@types/chroma-js@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@types/chroma-js/-/chroma-js-2.1.2.tgz#edd640f17dbd13561ace34c13fdc43416b013223" + integrity sha512-fpIsY+9doOvRiBLR0xtubHmGBEVhis2z3CSWcxRDy7L2noKWXkT49c1QiU0RZ2YLc8lHitxu13HTuVItXUdD/g== "@types/enzyme-adapter-react-16@^1.0.6": version "1.0.6" @@ -2640,14 +2277,35 @@ dependencies: "@types/enzyme" "*" -"@types/enzyme@*", "@types/enzyme@^3.10.7": - version "3.10.7" - resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.7.tgz#ebdf3b972d293095e09af479e36c772025285e3a" - integrity sha512-J+0wduPGAkzOvW7sr6hshGv1gBI3WXLRTczkRKzVPxLP3xAkYxZmvvagSBPw8Z452fZ8TGUxCmAXcb44yLQksw== +"@types/enzyme@*", "@types/enzyme@^3.10.8": + version "3.10.8" + resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.10.8.tgz#ad7ac9d3af3de6fd0673773123fafbc63db50d42" + integrity sha512-vlOuzqsTHxog6PV79+tvOHFb6hq4QZKMq1lLD9MaWD1oec2lHTKndn76XOpSwCA0oFTaIbKVPrgM3k78Jjd16g== dependencies: "@types/cheerio" "*" "@types/react" "*" +"@types/eslint-scope@^3.7.0": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" + integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "7.2.6" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c" + integrity sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.45": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + "@types/glob-base@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@types/glob-base/-/glob-base-0.3.0.tgz#a581d688347e10e50dd7c17d6f2880a10354319d" @@ -2661,15 +2319,10 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/google-protobuf@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.7.3.tgz#429512e541bbd777f2c867692e6335ee08d1f6d4" - integrity sha512-FRwj40euE2bYkG+0X5w2nEA8yAzgJRcEa7RBd0Gsdkb9/tPM2pctVVAvnOUTbcXo2VmIHPo0Ae94Gl9vRHfKzg== - "@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== + version "4.1.4" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753" + integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== dependencies: "@types/node" "*" @@ -2730,23 +2383,15 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@26.x": - version "26.0.14" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.14.tgz#078695f8f65cb55c5a98450d65083b2b73e5a3f3" - integrity sha512-Hz5q8Vu0D288x3iWXePSn53W7hAjP0H7EQ6QvDO9c7t46mR0lNOLlfuwQ+JkVxuhygHzlzPX+0jKdA3ZgSh+Vg== - dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" - -"@types/jest@^26.0.15": - version "26.0.15" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.15.tgz#12e02c0372ad0548e07b9f4e19132b834cb1effe" - integrity sha512-s2VMReFXRg9XXxV+CW9e5Nz8fH2K1aEhwgjUqPPbQd7g95T0laAcvLv032EhFHIa5GHsZ8W7iJEQVaJq6k3Gog== +"@types/jest@26.x", "@types/jest@^26.0.16": + version "26.0.16" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.16.tgz#b47abd50f6ed0503f589db8e126fc8eb470cf87c" + integrity sha512-Gp12+7tmKCgv9JjtltxUXokohCAEZfpJaEW5tn871SGRp8I+bRWBonQO7vW5NHwnAHe5dd50+Q4zyKuN35i09g== dependencies: jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== @@ -2756,15 +2401,10 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@types/long@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" - integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== - "@types/markdown-to-jsx@^6.11.0": - version "6.11.2" - resolved "https://registry.yarnpkg.com/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.2.tgz#05d1aaffbf15be7be12c70535fa4fed65cc7c64f" - integrity sha512-ESuCu8Bk7jpTZ3YPdMW1+6wUj13F5N15vXfc7BuUAN0eCp0lrvVL9nzOTzoqvbRzXMciuqXr1KrHt3xQAhfwPA== + version "6.11.3" + resolved "https://registry.yarnpkg.com/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.3.tgz#cdd1619308fecbc8be7e6a26f3751260249b020e" + integrity sha512-30nFYpceM/ZEvhGiqWjm5quLUxNeld0HCzJEXMZZDpq53FPkS85mTwkWtCXzCqq8s5JYLgM5W392a02xn8Bdaw== dependencies: "@types/react" "*" @@ -2787,10 +2427,10 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/minimist@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" - integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= +"@types/minimist@^1.2.0", "@types/minimist@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" + integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== "@types/node-fetch@^2.5.4": version "2.5.7" @@ -2800,20 +2440,10 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*": - version "14.11.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.8.tgz#fe2012f2355e4ce08bca44aeb3abbb21cf88d33f" - integrity sha512-KPcKqKm5UKDkaYPTuXSx8wEP7vE9GnuaXIZKijwRYcePpZFDVuy2a57LarFKiORbHOuTOOwYzxVxcUzsh2P2Pw== - -"@types/node@^10.1.0": - version "10.17.32" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.32.tgz#4ef6ff8b842ea0eb3fcbc4331489f4ae64036fa8" - integrity sha512-EUq+cjH/3KCzQHikGnNbWAGe548IFLSm93Vl8xA7EuYEEATiyOVDyEVuGkowL7c9V69FF/RiZSAOCFPApMs/ig== - -"@types/node@^14.14.2": - version "14.14.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.2.tgz#d25295f9e4ca5989a2c610754dc02a9721235eeb" - integrity sha512-jeYJU2kl7hL9U5xuI/BhKPZ4vqGM/OmK6whiFAXVhlstzZhVamWhDSmHyGLIp+RVyuF9/d0dqr2P85aFj4BvJg== +"@types/node@*", "@types/node@^14.14.10": + version "14.14.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785" + integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2841,20 +2471,15 @@ integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== "@types/prettier@^2.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.2.tgz#4929992f87a0129f4960a110faeb526210562e7b" - integrity sha512-IiPhNnenzkqdSdQH3ifk9LoX7oQe61ZlDdDO4+MUv6FyWdPGDPr26gCPVs3oguZEMq//nFZZpwUZcVuNJsG+DQ== + version "2.1.5" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.5.tgz#b6ab3bba29e16b821d84e09ecfaded462b816b00" + integrity sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ== "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - "@types/qs@^6.9.0": version "6.9.5" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b" @@ -2883,17 +2508,17 @@ dependencies: "@types/react" "*" -"@types/react-dom@^16.9.8": - version "16.9.8" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" - integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== +"@types/react-dom@^17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.0.tgz#b3b691eb956c4b3401777ee67b900cb28415d95a" + integrity sha512-lUqY7OlkF/RbNtD5nIq7ot8NquXrdFrjSOR6+w9a9RFQevGi1oZO1dcJbXMeONAPKtZ2UrZOEJ5UOCVsxbLk/g== dependencies: "@types/react" "*" "@types/react-native@*": - version "0.63.25" - resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.63.25.tgz#a08bbe17a75cce993f52655a8fe75f30bf77e965" - integrity sha512-cRm+1iQecewpFYOArYJoM1qGd0JpFJ6f97KqIy9H2GawAdWkgyarSk8CBy4SMt2WOtPkysCu2EG7UwIT3vNeaA== + version "0.63.37" + resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.63.37.tgz#c43df90c9d3cc082a97a49a53e989de26cb8ab45" + integrity sha512-xr9SZG7tQQBKT6840tAGaWEC65D2gjyxZtuZxz631UgeW1ofItuu9HMVhoyYqot2hRSa6Q4YC8FYkRVUpM53/w== dependencies: "@types/react" "*" @@ -2904,18 +2529,10 @@ dependencies: "@types/react" "*" -"@types/react@*": - version "16.9.51" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.51.tgz#f8aa51ffa9996f1387f63686696d9b59713d2b60" - integrity sha512-lQa12IyO+DMlnSZ3+AGHRUiUcpK47aakMMoBG8f7HGxJT8Yfe+WE128HIXaHOHVPReAW0oDS3KAI0JI2DDe1PQ== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/react@^16.9.53": - version "16.9.53" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.53.tgz#40cd4f8b8d6b9528aedd1fff8fcffe7a112a3d23" - integrity sha512-4nW60Sd4L7+WMXH1D6jCdVftuW7j4Za6zdp6tJ33Rqv0nk1ZAmQKML9ZLD4H0dehA3FZxXR/GM8gXplf82oNGw== +"@types/react@*", "@types/react@^17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.0.tgz#5af3eb7fad2807092f0046a1302b7823e27919b8" + integrity sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -2958,9 +2575,9 @@ integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== "@types/uglify-js@*": - version "3.11.0" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.11.0.tgz#2868d405cc45cd9dc3069179052103032c33afbc" - integrity sha512-I0Yd8TUELTbgRHq2K65j8rnDPAzAP+DiaF/syLem7yXwYLsHZhPd+AM2iXsWmf9P2F2NlFCgl5erZPQx9IbM9Q== + version "3.11.1" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.11.1.tgz#97ff30e61a0aa6876c270b5f538737e2d6ab8ceb" + integrity sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q== dependencies: source-map "^0.6.1" @@ -2969,24 +2586,29 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== -"@types/webpack-env@^1.15.2": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.15.3.tgz#fb602cd4c2f0b7c0fb857e922075fdf677d25d84" - integrity sha512-5oiXqR7kwDGZ6+gmzIO2lTC+QsriNuQXZDWNYRV3l2XRN/zmPgnC21DLSx2D05zvD8vnXW6qUg7JnXZ4I6qLVQ== +"@types/uuid@^8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" + integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== + +"@types/webpack-env@^1.15.3": + version "1.16.0" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.0.tgz#8c0a9435dfa7b3b1be76562f3070efb3f92637b4" + integrity sha512-Fx+NpfOO0CpeYX2g9bkvX8O5qh9wrU1sOF4g8sft4Mu7z+qfe387YlyY8w8daDyDsKY5vUxM0yxkAYnbkRbZEw== "@types/webpack-sources@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.0.0.tgz#08216ab9be2be2e1499beaebc4d469cec81e82a7" - integrity sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" + integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== dependencies: "@types/node" "*" "@types/source-list-map" "*" source-map "^0.7.3" "@types/webpack@^4.41.8": - version "4.41.22" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.22.tgz#ff9758a17c6bd499e459b91e78539848c32d0731" - integrity sha512-JQDJK6pj8OMV9gWOnN1dcLCyU9Hzs6lux0wBO4lr1+gyEhIBR9U3FMrz12t2GPkg110XAxEAw2WHF6g7nZIbRQ== + version "4.41.25" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.25.tgz#4d3b5aecc4e44117b376280fbfd2dc36697968c4" + integrity sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -3008,75 +2630,75 @@ "@types/yargs-parser" "*" "@types/yargs@^15.0.0": - version "15.0.8" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.8.tgz#7644904cad7427eb704331ea9bf1ee5499b82e23" - integrity sha512-b0BYzFUzBpOhPjpl1wtAHU994jBeKF4TKVlT7ssFv44T617XNcPdRoG4AzHLVshLzlrF7i3lTelH7UbuNYV58Q== + version "15.0.11" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.11.tgz#361d7579ecdac1527687bcebf9946621c12ab78c" + integrity sha512-jfcNBxHFYJ4nPIacsi3woz1+kvUO6s1CyeEhtnDHBjHUMNj5UlW2GynmnSgiJJEdNg9yW5C8lfoNRZrHGv5EqA== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin-tslint@^4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-4.5.0.tgz#39c781a6b3244dff6701e1e52f2c74aa3dcb035c" - integrity sha512-BWzmuo4oZ8iGrWDLhCfLkq+547LEMVdXASGkEx76qcvDNmNiu+qYD3XYHK4QIIaQeZgm1XMR7zqbqKjLpSwOVw== +"@typescript-eslint/eslint-plugin-tslint@^4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-4.9.0.tgz#eed686664af1336e956474d8091aeaa7a8d5155b" + integrity sha512-WI5126gGVknI/vem97oi2kCBjK/uf27tvZTMi9A1YmI0dHHXSSoaVaIA/nNDJhhywQWP7r9rhmYbfPV3nCkacw== dependencies: - "@typescript-eslint/experimental-utils" "4.5.0" + "@typescript-eslint/experimental-utils" "4.9.0" lodash "^4.17.15" -"@typescript-eslint/eslint-plugin@^4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.5.0.tgz#4ff9c1d8535ae832e239f0ef6d7210592d9b0b07" - integrity sha512-mjb/gwNcmDKNt+6mb7Aj/TjKzIJjOPcoCJpjBQC9ZnTRnBt1p4q5dJSSmIqAtsZ/Pff5N+hJlbiPc5bl6QN4OQ== +"@typescript-eslint/eslint-plugin@^4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.9.0.tgz#8fde15743413661fdc086c9f1f5d74a80b856113" + integrity sha512-WrVzGMzzCrgrpnQMQm4Tnf+dk+wdl/YbgIgd5hKGa2P+lnJ2MON+nQnbwgbxtN9QDLi8HO+JAq0/krMnjQK6Cw== dependencies: - "@typescript-eslint/experimental-utils" "4.5.0" - "@typescript-eslint/scope-manager" "4.5.0" + "@typescript-eslint/experimental-utils" "4.9.0" + "@typescript-eslint/scope-manager" "4.9.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.5.0.tgz#547fe1158609143ce60645383aa1d6f83ada28df" - integrity sha512-bW9IpSAKYvkqDGRZzayBXIgPsj2xmmVHLJ+flGSoN0fF98pGoKFhbunIol0VF2Crka7z984EEhFi623Rl7e6gg== +"@typescript-eslint/experimental-utils@4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.9.0.tgz#23a296b85d243afba24e75a43fd55aceda5141f0" + integrity sha512-0p8GnDWB3R2oGhmRXlEnCvYOtaBCijtA5uBfH5GxQKsukdSQyI4opC4NGTUb88CagsoNQ4rb/hId2JuMbzWKFQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.5.0" - "@typescript-eslint/types" "4.5.0" - "@typescript-eslint/typescript-estree" "4.5.0" + "@typescript-eslint/scope-manager" "4.9.0" + "@typescript-eslint/types" "4.9.0" + "@typescript-eslint/typescript-estree" "4.9.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.5.0.tgz#b2d659f25eec0041c7bc5660b91db1eefe8d7122" - integrity sha512-xb+gmyhQcnDWe+5+xxaQk5iCw6KqXd8VQxGiTeELTMoYeRjpocZYYRP1gFVM2C8Yl0SpUvLa1lhprwqZ00w3Iw== +"@typescript-eslint/parser@^4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.9.0.tgz#bb65f1214b5e221604996db53ef77c9d62b09249" + integrity sha512-QRSDAV8tGZoQye/ogp28ypb8qpsZPV6FOLD+tbN4ohKUWHD2n/u0Q2tIBnCsGwQCiD94RdtLkcqpdK4vKcLCCw== dependencies: - "@typescript-eslint/scope-manager" "4.5.0" - "@typescript-eslint/types" "4.5.0" - "@typescript-eslint/typescript-estree" "4.5.0" + "@typescript-eslint/scope-manager" "4.9.0" + "@typescript-eslint/types" "4.9.0" + "@typescript-eslint/typescript-estree" "4.9.0" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.5.0.tgz#8dfd53c3256d4357e7d66c2fc8956835f4d239be" - integrity sha512-C0cEO0cTMPJ/w4RA/KVe4LFFkkSh9VHoFzKmyaaDWAnPYIEzVCtJ+Un8GZoJhcvq+mPFXEsXa01lcZDHDG6Www== +"@typescript-eslint/scope-manager@4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.9.0.tgz#5eefe305d6b71d1c85af6587b048426bfd4d3708" + integrity sha512-q/81jtmcDtMRE+nfFt5pWqO0R41k46gpVLnuefqVOXl4QV1GdQoBWfk5REcipoJNQH9+F5l+dwa9Li5fbALjzg== dependencies: - "@typescript-eslint/types" "4.5.0" - "@typescript-eslint/visitor-keys" "4.5.0" + "@typescript-eslint/types" "4.9.0" + "@typescript-eslint/visitor-keys" "4.9.0" -"@typescript-eslint/types@4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.5.0.tgz#98256e07bad1c8d15d0c9627ebec82fd971bb3c3" - integrity sha512-n2uQoXnyWNk0Les9MtF0gCK3JiWd987JQi97dMSxBOzVoLZXCNtxFckVqt1h8xuI1ix01t+iMY4h4rFMj/303g== +"@typescript-eslint/types@4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.9.0.tgz#3fe8c3632abd07095c7458f7451bd14c85d0033c" + integrity sha512-luzLKmowfiM/IoJL/rus1K9iZpSJK6GlOS/1ezKplb7MkORt2dDcfi8g9B0bsF6JoRGhqn0D3Va55b+vredFHA== -"@typescript-eslint/typescript-estree@4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.5.0.tgz#d50cf91ae3a89878401111031eb6fb6d03554f64" - integrity sha512-gN1mffq3zwRAjlYWzb5DanarOPdajQwx5MEWkWCk0XvqC8JpafDTeioDoow2L4CA/RkYZu7xEsGZRhqrTsAG8w== +"@typescript-eslint/typescript-estree@4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.9.0.tgz#38a98df6ee281cfd6164d6f9d91795b37d9e508c" + integrity sha512-rmDR++PGrIyQzAtt3pPcmKWLr7MA+u/Cmq9b/rON3//t5WofNR4m/Ybft2vOLj0WtUzjn018ekHjTsnIyBsQug== dependencies: - "@typescript-eslint/types" "4.5.0" - "@typescript-eslint/visitor-keys" "4.5.0" + "@typescript-eslint/types" "4.9.0" + "@typescript-eslint/visitor-keys" "4.9.0" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" @@ -3084,12 +2706,12 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.5.0.tgz#b59f26213ac597efe87f6b13cf2aabee70542af0" - integrity sha512-UHq4FSa55NDZqscRU//O5ROFhHa9Hqn9KWTEvJGTArtTQp5GKv9Zqf6d/Q3YXXcFv4woyBml7fJQlQ+OuqRcHA== +"@typescript-eslint/visitor-keys@4.9.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.9.0.tgz#f284e9fac43f2d6d35094ce137473ee321f266c8" + integrity sha512-sV45zfdRqQo1A97pOSx3fsjR+3blmwtdCt8LDrXgCX36v4Vmz4KHrhpV6Fo2cRdXmyumxx11AHw0pNJqCNpDyg== dependencies: - "@typescript-eslint/types" "4.5.0" + "@typescript-eslint/types" "4.9.0" eslint-visitor-keys "^2.0.0" "@webassemblyjs/ast@1.9.0": @@ -3325,6 +2947,11 @@ acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.4.tgz#7a3ae4191466a6984eee0fe3407a4f3aa9db8354" + integrity sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ== + add-px-to-style@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a" @@ -3335,21 +2962,18 @@ address@1.1.2, address@^1.0.1: resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -adjust-sourcemap-loader@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" - integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== +adjust-sourcemap-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" + integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== dependencies: - assert "1.4.1" - camelcase "5.0.0" - loader-utils "1.2.3" - object-path "0.11.4" - regex-parser "2.2.10" + loader-utils "^2.0.0" + regex-parser "^2.2.11" agent-base@6: - version "6.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" @@ -3409,17 +3033,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" - integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.10.0, ajv@^6.12.3: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3466,7 +3080,7 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" -ansi-html@0.0.7: +ansi-html@0.0.7, ansi-html@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= @@ -3594,15 +3208,17 @@ array-flatten@1.1.1: integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= array-includes@^3.0.3, array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + version "3.1.2" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" + integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0" + es-abstract "^1.18.0-next.1" + get-intrinsic "^1.0.1" is-string "^1.0.5" -array-union@^1.0.1: +array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= @@ -3633,37 +3249,45 @@ array.prototype.find@^2.1.1: es-abstract "^1.17.4" array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" - integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" function-bind "^1.1.1" array.prototype.map@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" - integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.3.tgz#1609623618d3d84134a37d4a220030c2bd18420b" + integrity sha512-nNcb30v0wfDyIe26Yif3PcV1JXQp4zEeEfupG7L4SRjnD6HLbO5b2a7eVSba53bOx4YCHYMBHt+Fp4vYstneRA== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.4" + is-string "^1.0.5" arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -3686,13 +3310,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= - dependencies: - util "0.10.3" - assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -3711,13 +3328,6 @@ ast-types@0.13.2: resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== -ast-types@^0.13.2: - version "0.13.4" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" - integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== - dependencies: - tslib "^2.0.1" - ast-types@^0.14.2: version "0.14.2" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" @@ -3784,9 +3394,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" - integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== babel-code-frame@^6.22.0: version "6.26.0" @@ -3832,29 +3442,28 @@ babel-helper-to-multiple-sequence-expressions@^0.5.0: resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz#a3f924e3561882d42fcf48907aa98f7979a4588d" integrity sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA== -babel-jest@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.1.tgz#07bd7bec14de47fe0f2c9a139741329f1f41788b" - integrity sha512-duMWEOKrSBYRVTTNpL2SipNIWnZOjP77auOBMPQ3zXAdnDbyZQWU8r/RxNWpUf9N6cgPFecQYelYLytTVXVDtA== +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== dependencies: - "@jest/transform" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.5.0" + babel-preset-jest "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" -babel-loader@^8.0.6, babel-loader@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== +babel-loader@^8.0.6, babel-loader@^8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" + integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== dependencies: - find-cache-dir "^2.1.0" + find-cache-dir "^3.3.1" loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" + make-dir "^3.1.0" schema-utils "^2.6.5" babel-plugin-add-react-displayname@^0.0.5: @@ -3862,13 +3471,13 @@ babel-plugin-add-react-displayname@^0.0.5: resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" integrity sha1-M51M3be2X9YtHfnbn+BN4TQSK9U= -babel-plugin-apply-mdx-type-prop@1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.18.tgz#81f31b472f3b28289d4cea0f76c0315e6b85394f" - integrity sha512-lcpbj/GatKQp48jsJ8Os/ZXv381ZYFNKA27EPllcpFMpqiS696XkoK+xie/2GjzQSe5IIbo3srsXpd6/ik8PsQ== +babel-plugin-apply-mdx-type-prop@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b" + integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" - "@mdx-js/util" "1.6.18" + "@mdx-js/util" "1.6.22" babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" @@ -3893,10 +3502,10 @@ babel-plugin-emotion@^10.0.20, babel-plugin-emotion@^10.0.27: find-root "^1.1.0" source-map "^0.5.7" -babel-plugin-extract-import-names@1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.18.tgz#be74a5e12e1b5a5db5af53015a6a62ad16ac18f5" - integrity sha512-2EyZia3Ezl3UdhBcgDl6KZTNkYa2VhmAHHbJdhCroa1pZD/E56BulVsSKIhm/kza9agnabDR2VEHO+ZnqpfxbQ== +babel-plugin-extract-import-names@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc" + integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" @@ -3921,10 +3530,10 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.5.0.tgz#3916b3a28129c29528de91e5784a44680db46385" - integrity sha512-ck17uZFD3CDfuwCLATWZxkkuGGFhMij8quP8CNhwj8ek1mqFgbFzRJ30xwC04LLscj/aKsVFfRST+b5PT7rSuw== +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -4017,9 +3626,9 @@ babel-plugin-minify-type-constructors@^0.4.3: babel-helper-is-void-0 "^0.4.3" babel-plugin-named-asset-import@^0.3.1: - version "0.3.6" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz#c9750a1b38d85112c9e166bf3ef7c5dbc605f4be" - integrity sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA== + version "0.3.7" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" + integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== babel-plugin-react-docgen@^4.2.1: version "4.2.1" @@ -4030,10 +3639,10 @@ babel-plugin-react-docgen@^4.2.1: lodash "^4.17.15" react-docgen "^5.0.0" -"babel-plugin-styled-components@>= 1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.11.1.tgz#5296a9e557d736c3186be079fff27c6665d63d76" - integrity sha512-YwrInHyKUk1PU3avIRdiLyCpM++18Rs1NgyMXEAQC33rIXs/vro0A+stf4sT0Gf22Got+xRWB8Cm0tw+qkRzBA== +"babel-plugin-styled-components@>= 1", babel-plugin-styled-components@^1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz#1dec1676512177de6b827211e9eda5a30db4f9b9" + integrity sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-module-imports" "^7.0.0" @@ -4117,10 +3726,10 @@ babel-plugin-transform-undefined-to-void@^6.9.4: resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz#be241ca81404030678b748717322b89d0c8fe280" integrity sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA= -babel-preset-current-node-syntax@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615" - integrity sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w== +babel-preset-current-node-syntax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" + integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -4133,14 +3742,15 @@ babel-preset-current-node-syntax@^0.1.3: "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.5.0.tgz#f1b166045cd21437d1188d29f7fba470d5bdb0e7" - integrity sha512-F2vTluljhqkiGSJGBg/jOruA8vIIIL11YrxRcO7nviNTMbbofPSHwnm8mgP7d/wS7wRSexRoI6X1A6T74d4LQA== +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== dependencies: - babel-plugin-jest-hoist "^26.5.0" - babel-preset-current-node-syntax "^0.1.3" + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" "babel-preset-minify@^0.5.0 || 0.6.0-alpha.5": version "0.5.1" @@ -4181,10 +3791,15 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base-convert-int-array@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/base-convert-int-array/-/base-convert-int-array-1.0.1.tgz#5b4ddbfa72d2d3b5f75dd86cd32fe3dc8e7e81fe" + integrity sha512-NWqzaoXx8L/SS32R+WmKqnQkVXVYl2PwNJ68QV3RAlRRL1uV+yxJT66abXI1cAvqCXQTyXr7/9NN4Af90/zDVw== + +base64-js@^1.0.2, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base@^0.11.1: version "0.11.2" @@ -4212,9 +3827,9 @@ bcrypt-pbkdf@^1.0.0: tweetnacl "^0.14.3" better-opn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.0.0.tgz#c70d198e51164bdc220306a28a885d9ac7a14c44" - integrity sha512-PPbGRgO/K0LowMHbH/JNvaV3qY3Vt+A2nH28fzJxy16h/DfR5OsVti6ldGl6S9SMsyUqT13sltikiAVtI6tKLA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" + integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== dependencies: open "^7.0.3" @@ -4240,6 +3855,15 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +bl@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" + integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird@^3.3.5, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -4250,7 +3874,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== -bn.js@^5.1.1: +bn.js@^5.0.0, bn.js@^5.1.1: version "5.1.3" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== @@ -4271,7 +3895,7 @@ body-parser@1.19.0: raw-body "2.4.0" type-is "~1.6.17" -boolbase@^1.0.0, boolbase@~1.0.0: +boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -4326,11 +3950,6 @@ brorand@^1.0.1: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= -browser-headers@^0.4.0, browser-headers@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/browser-headers/-/browser-headers-0.4.1.tgz#4308a7ad3b240f4203dbb45acedb38dc2d65dd02" - integrity sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg== - browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" @@ -4368,11 +3987,11 @@ browserify-des@^1.0.0: safe-buffer "^5.1.2" browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: @@ -4407,25 +4026,26 @@ browserslist@4.10.0: node-releases "^1.1.52" pkg-up "^3.1.0" -browserslist@4.13.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.13.0.tgz#42556cba011e1b0a2775b611cba6a8eca18e940d" - integrity sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ== +browserslist@4.14.6: + version "4.14.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.6.tgz#97702a9c212e0c6b6afefad913d3a1538e348457" + integrity sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A== dependencies: - caniuse-lite "^1.0.30001093" - electron-to-chromium "^1.3.488" - escalade "^3.0.1" - node-releases "^1.1.58" + caniuse-lite "^1.0.30001154" + electron-to-chromium "^1.3.585" + escalade "^3.1.1" + node-releases "^1.1.65" -browserslist@^4.12.0, browserslist@^4.8.5: - version "4.14.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.5.tgz#1c751461a102ddc60e40993639b709be7f2c4015" - integrity sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA== +browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.14.7: + version "4.15.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.15.0.tgz#3d48bbca6a3f378e86102ffd017d9a03f122bdb0" + integrity sha512-IJ1iysdMkGmjjYeRlDU8PQejVwxvVO5QOfXH7ylW31GO6LwNRSmm/SgRXtNsEXqMLl2e+2H5eEJ7sfynF8TCaQ== dependencies: - caniuse-lite "^1.0.30001135" - electron-to-chromium "^1.3.571" - escalade "^3.1.0" - node-releases "^1.1.61" + caniuse-lite "^1.0.30001164" + colorette "^1.2.1" + electron-to-chromium "^1.3.612" + escalade "^3.1.1" + node-releases "^1.1.67" bs-logger@0.x: version "0.2.6" @@ -4468,6 +4088,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -4478,29 +4106,6 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@15.0.5, cacache@^15.0.5: - version "15.0.5" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" - integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== - dependencies: - "@npmcli/move-file" "^1.0.1" - chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" - infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" - p-map "^4.0.0" - promise-inflight "^1.0.1" - rimraf "^3.0.2" - ssri "^8.0.0" - tar "^6.0.2" - unique-filename "^1.1.1" - cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" @@ -4522,6 +4127,29 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -4537,6 +4165,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -4567,12 +4203,12 @@ callsites@^3.0.0: integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" - integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: - pascal-case "^3.1.1" - tslib "^1.10.0" + pascal-case "^3.1.2" + tslib "^2.0.3" camelcase-css@2.0.1: version "2.0.1" @@ -4588,30 +4224,25 @@ camelcase-keys@^6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" - integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== camelize@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= -caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001093, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001113, caniuse-lite@^1.0.30001135: - version "1.0.30001146" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001146.tgz#c61fcb1474520c1462913689201fb292ba6f447c" - integrity sha512-VAy5RHDfTJhpxnDdp2n40GPPLp3KqNrXz1QqFv4J64HvArKs8nuNMOWkB3ICOaBTU/Aj4rYAo/ytdQDDFF/Pug== +caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001093, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001113, caniuse-lite@^1.0.30001154, caniuse-lite@^1.0.30001164: + version "1.0.30001164" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001164.tgz#5bbfd64ca605d43132f13cc7fdabb17c3036bfdc" + integrity sha512-G+A/tkf4bu0dSp9+duNiXc7bGds35DioCyC6vgK2m/rjA4Krpy5WeZgZyfH2f0wj2kI6yAWWucyap6oOwmY1mg== capture-exit@^2.0.0: version "2.0.0" @@ -4631,9 +4262,9 @@ caseless@~0.12.0: integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= ccount@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" - integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" + integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" @@ -4684,11 +4315,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -character-entities-html4@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" - integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== - character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" @@ -4721,7 +4347,22 @@ cheerio@^1.0.0-rc.3: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@2.1.8, chokidar@^2.1.8: +chokidar@3.4.3, chokidar@^3.3.0, chokidar@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.1.2" + +chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -4740,21 +4381,6 @@ chokidar@2.1.8, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.3.0, chokidar@^3.4.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" - integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" - chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -4797,10 +4423,10 @@ circular-json-es6@^2.0.1: resolved "https://registry.yarnpkg.com/circular-json-es6/-/circular-json-es6-2.0.2.tgz#e4f4a093e49fb4b6aba1157365746112a78bd344" integrity sha512-ODYONMMNb3p658Zv+Pp+/XPa5s6q7afhz3Tzyvo+VRh9WIrJ64J76ZC4GQxnlye/NesTn09jvOiuE8+xxfpwhQ== -cjs-module-lexer@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.4.3.tgz#9e31f7fe701f5fcee5793f77ab4e58fa8dcde8bc" - integrity sha512-5RLK0Qfs0PNDpEyBXIr3bIT1Muw3ojSlvpw6dAmkUcO0+uTrsBn7GuEIgx40u+OzbCBLDta7nvmud85P4EmTsQ== +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== class-utils@^0.3.5: version "0.3.6" @@ -4879,17 +4505,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" - integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= - dependencies: - for-own "^0.1.3" - is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" - shallow-clone "^0.1.2" - clone-regexp@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" @@ -4902,15 +4517,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -4934,7 +4540,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -4953,11 +4559,27 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" + integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + colorette@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" @@ -5017,6 +4639,11 @@ compose-function@3.0.3: dependencies: arity-n "^1.0.4" +compute-scroll-into-view@^1.0.14: + version "1.0.16" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.16.tgz#5b7bf4f7127ea2c19b750353d7ce6776a90ee088" + integrity sha512-a85LHKY81oQnikatZYA90pufpZ6sQx++BoCxOEMsjpZx+ZnaKGQnCyCehTRr/1p9GBIAHTjcU9k71kSYWloLiQ== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -5086,6 +4713,11 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -5110,23 +4742,23 @@ copy-to-clipboard@^3.0.8: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.6.2: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== +core-js-compat@^3.7.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.0.tgz#3248c6826f4006793bd637db608bca6e4cd688b1" + integrity sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ== dependencies: - browserslist "^4.8.5" + browserslist "^4.14.7" semver "7.0.0" core-js-pure@^3.0.1: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" - integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + version "3.8.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.0.tgz#4cdd2eca37d49cda206b66e26204818dba77884a" + integrity sha512-fRjhg3NeouotRoIV0L1FdchA6CK7ZD+lyINyMoz19SyV+ROpC4noS1xItWHFtwZdlqfMfVPJEyEGdfri2bD1pA== core-js@^3.0.1, core-js@^3.0.4, core-js@^3.6.5: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + version "3.8.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.0.tgz#0fc2d4941cadf80538b030648bb64d230b4da0ce" + integrity sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -5165,6 +4797,31 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cp-file@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" + integrity sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw== + dependencies: + graceful-fs "^4.1.2" + make-dir "^3.0.0" + nested-error-stacks "^2.0.0" + p-event "^4.1.0" + +cpy@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.1.tgz#066ed4c6eaeed9577df96dae4db9438c1a90df62" + integrity sha512-vqHT+9o67sMwJ5hUd/BAOYeemkU+MuFRsK2c36Xc3eefQpAsp1kAsyDxEDcc5JS1+y9l/XHPrIsVTcyGGmkUUQ== + dependencies: + arrify "^2.0.1" + cp-file "^7.0.0" + globby "^9.2.0" + has-glob "^1.0.0" + junk "^3.1.0" + nested-error-stacks "^2.1.0" + p-all "^2.1.0" + p-filter "^2.1.0" + p-map "^3.0.0" + create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -5196,7 +4853,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-context@0.3.0, create-react-context@^0.3.0: +create-react-context@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== @@ -5218,7 +4875,7 @@ cross-fetch@3.0.5: dependencies: node-fetch "2.6.0" -cross-fetch@3.0.6: +cross-fetch@3.0.6, cross-fetch@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== @@ -5313,11 +4970,6 @@ css-loader@^3.5.3: schema-utils "^2.7.0" semver "^6.3.0" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - css-select@^1.1.0, css-select@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -5328,16 +4980,6 @@ css-select@^1.1.0, css-select@~1.2.0: domutils "1.5.1" nth-check "~1.0.1" -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - css-to-react-native@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" @@ -5347,32 +4989,11 @@ css-to-react-native@^3.0.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - css.escape@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" @@ -5393,13 +5014,6 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-simple@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.1.4.tgz#7b287a31df786348565d02342df71af8f758ac82" - integrity sha512-EYKDo65W+AxMViUijv/hvhbEnxUjmu3V7omcH1MatPOwjRLrAgVArUOE8wTUyc1ePFEtvV8oCT4/QSRJDorm/A== - dependencies: - postcss "^7.0.32" - cssnano-preset-simple@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.0.tgz#afcf13eb076e8ebd91c4f311cd449781c14c7371" @@ -5408,12 +5022,12 @@ cssnano-preset-simple@1.2.0: caniuse-lite "^1.0.30001093" postcss "^7.0.32" -cssnano-simple@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.0.5.tgz#66ee528f3a4e60754e2625ea9f51ac315f5f0a92" - integrity sha512-NJjx2Er1C3pa75v1GwMKm0w6xAp1GsW2Ql1As4CWPNFxTgYFN5e8wblYeHfna13sANAhyIdSIPqKJjBO4CU5Eg== +cssnano-preset-simple@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.1.tgz#8976013114b1fc4718253d30f21aaed1780fb80e" + integrity sha512-B2KahOIFTV6dw5Ioy9jHshTh/vAYNnUB2enyWRgnAEg3oJBjI/035ExpePaMqS2SwpbH7gCgvQqwpMBH6hTJSw== dependencies: - cssnano-preset-simple "1.1.4" + caniuse-lite "^1.0.30001093" postcss "^7.0.32" cssnano-simple@1.2.0: @@ -5424,12 +5038,13 @@ cssnano-simple@1.2.0: cssnano-preset-simple "1.2.0" postcss "^7.0.32" -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== +cssnano-simple@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.2.1.tgz#6de5d9dd75774bc8f31767573410a952c7dd8a12" + integrity sha512-9vOyjw8Dj/T12kIOnXPZ5VnEIo6F3YMaIn0wqJXmn277R58cWpI3AvtdlCBtohX7VAUNYcyk2d0dKcXXkb5I6Q== dependencies: - css-tree "1.0.0-alpha.39" + cssnano-preset-simple "1.2.1" + postcss "^7.0.32" cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@~0.3.6: version "0.3.8" @@ -5456,14 +5071,14 @@ cssstyle@^2.2.0: cssom "~0.3.6" csstype@^2.5.7: - version "2.6.13" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f" - integrity sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A== + version "2.6.14" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.14.tgz#004822a4050345b55ad4dcc00be1d9cf2f4296de" + integrity sha512-2mSc+VEpGPblzAxyeR+vZhJKgYg0Og0nnRi7pmRXFYYxSfnOnW8A5wwQb4n4cE2nIOzqKOAzLCaEX6aBmNEv8A== csstype@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" - integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== + version "3.0.5" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.5.tgz#7fdec6a28a67ae18647c51668a9ff95bb2fa7bb8" + integrity sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ== cyclist@^1.0.1: version "1.0.1" @@ -5517,17 +5132,17 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== +debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" debug@^3.0.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" @@ -5554,6 +5169,20 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-response@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== + dependencies: + mimic-response "^2.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -5566,17 +5195,10 @@ deep-equal-ident@^1.1.1: dependencies: lodash.isequal "^3.0" -deep-equal@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" @@ -5655,10 +5277,10 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detab@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.3.tgz#33e5dd74d230501bd69985a0d2b9a3382699a130" - integrity sha512-Up8P0clUVwq0FnFjDclzZsy9PadzRn5FFxrr47tQQvMHqyiFYVbpH8oXDzWtF0Q7pYy3l+RPmtBl+BsFF6wH0A== +detab@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" + integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== dependencies: repeat-string "^1.5.4" @@ -5667,6 +5289,11 @@ detect-indent@^6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + detect-newline@3.1.0, detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -5688,15 +5315,10 @@ detect-port@^1.3.0: address "^1.0.1" debug "^2.6.0" -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== - -diff-sequences@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.5.0.tgz#ef766cf09d43ed40406611f11c6d8d9dd8b2fefd" - integrity sha512-ZXx86srb/iYy6jG71k++wBN9P9J05UNQ5hQHQd9MtMPvcqXPx/vKU69jfHV637D00Q2gSgPk2D+jSx3l1lDW/Q== +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== diffie-hellman@^5.0.0: version "5.0.3" @@ -5715,6 +5337,13 @@ dir-glob@2.0.0: arrify "^1.0.1" path-type "^3.0.0" +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -5814,10 +5443,10 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" - integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== +domelementtype@^2.0.1, domelementtype@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== domexception@^1.0.1: version "1.0.1" @@ -5847,13 +5476,20 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^3.0.0, domhandler@^3.3.0: +domhandler@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== dependencies: domelementtype "^2.0.1" +domhandler@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" + integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== + dependencies: + domelementtype "^2.1.0" + domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -5871,7 +5507,7 @@ domutils@2.1.0: domelementtype "^2.0.1" domhandler "^3.0.0" -domutils@^1.5.1, domutils@^1.7.0: +domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -5880,21 +5516,21 @@ domutils@^1.5.1, domutils@^1.7.0: domelementtype "1" domutils@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b" - integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA== + version "2.4.3" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.3.tgz#b8ca888695db9baf65b58462c0eff46d2d5cd85d" + integrity sha512-MDMfEjgtzHvRX7i21XQfkk/vfZbLOe0VJk8dDETkTTo3BTeH3NXz3Xvs94UQ+GzTw/GjRYKsfVKIIOheYX63fw== dependencies: dom-serializer "^1.0.1" domelementtype "^2.0.1" - domhandler "^3.3.0" + domhandler "^4.0.0" -dot-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" - integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: - no-case "^3.0.3" - tslib "^1.10.0" + no-case "^3.0.4" + tslib "^2.0.3" dotenv-defaults@^1.0.2: version "1.1.1" @@ -5925,6 +5561,16 @@ dotenv@^8.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +downshift@^6.0.6: + version "6.0.6" + resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.0.6.tgz#82aee8e2e260d7ad99df8a0969bd002dd523abe8" + integrity sha512-tmLab3cXCn6PtZYl9V8r/nB2m+7/nCNrwo0B3kTHo/2lRBHr+1en1VNOQt2wIt0ajanAnxquZ00WPCyxe6cNFQ== + dependencies: + "@babel/runtime" "^7.11.2" + compute-scroll-into-view "^1.0.14" + prop-types "^15.7.2" + react-is "^16.13.1" + duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -5960,10 +5606,10 @@ ejs@^3.1.2: dependencies: jake "^10.6.1" -electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.488, electron-to-chromium@^1.3.571: - version "1.3.578" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.578.tgz#e6671936f4571a874eb26e2e833aa0b2c0b776e0" - integrity sha512-z4gU6dA1CbBJsAErW5swTGAaU2TBzc2mPAonJb00zqW1rOraDo2zfBMDRvaz9cVic+0JEZiYbHWPw/fTaZlG2Q== +electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.585, electron-to-chromium@^1.3.612: + version "1.3.614" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.614.tgz#ff359e8d2249e2ce859a4c2bc34c22bd2e2eb0a2" + integrity sha512-JMDl46mg4G+n6q/hAJkwy9eMTj5FJjsE+8f/irAGRMLM4yeRVbMuRrdZrbbGGOrGVcZc4vJPjUpEUWNb/fA6hg== element-resize-detector@^1.2.1: version "1.2.1" @@ -5986,9 +5632,9 @@ elliptic@^6.5.3: minimalistic-crypto-utils "^1.0.0" emittery@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" - integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== "emoji-regex@>=6.0.0 <=6.1.1": version "6.1.1" @@ -6029,7 +5675,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -6054,6 +5700,14 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" +enhanced-resolve@^5.3.1: + version "5.4.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.4.0.tgz#a8bcf23b00affac9455cf71efd80844f4054f4dc" + integrity sha512-ZmqfWURB2lConOBM1JdCVfPyMRv5RdKWktLXO6123p97ovVm2CLBgw9t5MBj3jJWA6eHyOeIws9iJQoGFR4euQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.0.0" + enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -6067,9 +5721,9 @@ entities@^1.1.1, entities@^1.1.2, entities@~1.1.1: integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== entities@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== enzyme-adapter-react-16@^1.15.5: version "1.15.5" @@ -6165,7 +5819,14 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: +error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4: version "1.17.7" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== @@ -6206,11 +5867,12 @@ es-array-method-boxes-properly@^1.0.0: integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== es-get-iterator@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9" + integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw== dependencies: - es-abstract "^1.17.4" + call-bind "^1.0.0" + get-intrinsic "^1.0.1" has-symbols "^1.0.1" is-arguments "^1.0.4" is-map "^2.0.1" @@ -6251,9 +5913,9 @@ es6-iterator@2.0.3, es6-iterator@~2.0.3: es6-symbol "^3.1.1" es6-shim@^0.35.5: - version "0.35.5" - resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.5.tgz#46f59dc0a84a1c5029e8ff1166ca0a902077a9ab" - integrity sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg== + version "0.35.6" + resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.6.tgz#d10578301a83af2de58b9eadb7c2c9945f7388a0" + integrity sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA== es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" @@ -6263,10 +5925,10 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -escalade@^3.0.1, escalade@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.0.tgz#e8e2d7c7a8b76f6ee64c2181d6b8151441602d4e" - integrity sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig== +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-html@~1.0.3: version "1.0.3" @@ -6295,10 +5957,10 @@ escodegen@^1.12.0, escodegen@^1.14.1, escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^6.14.0: - version "6.14.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.14.0.tgz#390e7863a8ae99970981933826476169285b3a27" - integrity sha512-DbVwh0qZhAC7CNDWcq8cBdK6FcVHiMTKmCypOPWeZkp9hJ8xYwTaWSa6bb6cjfi8KOeJy0e9a8Izxyx+O4+gCQ== +eslint-config-prettier@^6.15.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" + integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== dependencies: get-stdin "^6.0.0" @@ -6337,10 +5999,10 @@ eslint-plugin-import@^2.22.1: resolve "^1.17.0" tsconfig-paths "^3.9.0" -eslint-plugin-jsdoc@^30.7.3: - version "30.7.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.3.tgz#1087642d7c4aba13b97dd7c1fdbcec49cd7dcc72" - integrity sha512-slzJeKrm3vXabRYcFBpbUgWgdnATN9rNOFAr7IhmkxmR9Vk/6qN1c/IdvTqVSEctDRQ08chR+Lvk8fRayXgYZg== +eslint-plugin-jsdoc@^30.7.8: + version "30.7.8" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.8.tgz#4a678c25ddb2c5732163f0258bb1d05edf34f61c" + integrity sha512-OWm2AYvXjCl7nRbpcw5xisfSVkpVAyp4lGqL9T+DeK4kaPm6ecnmTc/G5s1PtcRrwbaI8bIWGzwScqv5CdGyxA== dependencies: comment-parser "^0.7.6" debug "^4.2.0" @@ -6400,13 +6062,13 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^7.12.0: - version "7.12.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.0.tgz#7b6a85f87a9adc239e979bb721cde5ce0dc27da6" - integrity sha512-n5pEU27DRxCSlOhJ2rO57GDLcNsxO0LPpAbpFdh7xmcDmjmlGUfoyrsB3I7yYdQXO5N3gkSTiDrPSPNFiiirXA== +eslint@^7.14.0: + version "7.14.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.14.0.tgz#2d2cac1d28174c510a97b377f122a5507958e344" + integrity sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA== dependencies: "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.2.0" + "@eslint/eslintrc" "^0.2.1" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -6486,7 +6148,7 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: +etag@1.8.1, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= @@ -6496,7 +6158,7 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -events@^3.0.0: +events@^3.0.0, events@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== @@ -6528,9 +6190,9 @@ execa@^1.0.0: strip-eof "^1.0.0" execa@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -6567,16 +6229,21 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.1.tgz#e1e053cdc43b21a452b36fc7cc9401e4603949c1" - integrity sha512-BRfxIBHagghMmr1D2MRY0Qv5d3Nc8HCqgbDwNXw/9izmM5eBb42a2YjLKSbsqle76ozGkAEPELQX4IdNHAKRNA== +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" ansi-styles "^4.0.0" jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.1" - jest-message-util "^26.6.1" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" jest-regex-util "^26.0.0" express@^4.17.0: @@ -6685,7 +6352,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^2.0.2: +fast-glob@^2.0.2, fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== @@ -6730,13 +6397,13 @@ fastest-levenshtein@^1.0.12: integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== fastq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" - integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + version "1.9.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.9.0.tgz#e16a72f338eaca48e91b5c23593bcc2ef66b7947" + integrity sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w== dependencies: reusify "^1.0.4" -fault@^1.0.2: +fault@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== @@ -6769,10 +6436,17 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +file-entry-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" + integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== + dependencies: + flat-cache "^3.0.4" + file-loader@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" - integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: loader-utils "^2.0.0" schema-utils "^3.0.0" @@ -6887,11 +6561,24 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +flatted@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" + integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -6900,23 +6587,11 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= - -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -6997,6 +6672,11 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -7048,7 +6728,12 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2, fsevents@~2.1.2: +fsevents@^2.1.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.2.1.tgz#1fb02ded2036a8ac288d507a65962bd87b97628d" + integrity sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA== + +fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== @@ -7059,20 +6744,21 @@ function-bind@^1.1.1: integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== function.prototype.name@^1.1.0, function.prototype.name@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45" - integrity sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg== + version "1.1.3" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.3.tgz#0bb034bb308e7682826f215eb6b2ae64918847fe" + integrity sha512-H51qkbNSp8mtkJt+nyW1gyStBiKZxfRqySNUR99ylq6BPXHKI4SEvIlTKp4odLfjRKJV04DFWMU3G/YRlQOsag== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - functions-have-names "^1.2.0" + es-abstract "^1.18.0-next.1" + functions-have-names "^1.2.1" functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -functions-have-names@^1.2.0: +functions-have-names@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== @@ -7102,15 +6788,24 @@ gauge@~2.7.3: wide-align "^1.1.0" gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.0, get-intrinsic@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -7157,6 +6852,11 @@ git-hooks-list@1.0.3: resolved "https://registry.yarnpkg.com/git-hooks-list/-/git-hooks-list-1.0.3.tgz#be5baaf78203ce342f2f844a9d2b03dba1b45156" integrity sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ== +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= + github-slugger@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9" @@ -7305,6 +7005,20 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + globjoin@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" @@ -7324,11 +7038,6 @@ good-listener@^1.2.2: dependencies: delegate "^3.1.2" -google-protobuf@^3.13.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.13.0.tgz#909c5983d75dd6101ed57c79e0528d000cdc3251" - integrity sha512-ZIf3qfLFayVrPvAjeKKxO5FRF1/NwRxt6Dko+fWEMuHwHbZx8/fcaAao9b0wCM6kr8qeg2te8XTpyuvKuD9aKw== - graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" @@ -7387,6 +7096,13 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" + integrity sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc= + dependencies: + is-glob "^3.0.0" + has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" @@ -7453,9 +7169,9 @@ hash.js@^1.0.0, hash.js@^1.0.3: minimalistic-assert "^1.0.1" hast-to-hyperscript@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.0.tgz#768fb557765fe28749169c885056417342d71e83" - integrity sha512-NJvMYU3GlMLs7hN3CRbsNlMzusVNkYBogVWDGybsuuVQ336gFLiD+q9qtFZT2meSHzln3pNISZWTASWothMSMg== + version "9.0.1" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" + integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== dependencies: "@types/unist" "^2.0.3" comma-separated-tokens "^1.0.0" @@ -7466,21 +7182,21 @@ hast-to-hyperscript@^9.0.0: web-namespaces "^1.0.0" hast-util-from-parse5@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.0.tgz#b38793c81e1a99f5fd592a4a88fc2731dccd0f30" - integrity sha512-3ZYnfKenbbkhhNdmOQqgH10vnvPivTdsOJCri+APn0Kty+nRkDHArnaX9Hiaf8H+Ig+vkNptL+SRY/6RwWJk1Q== + version "6.0.1" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a" + integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA== dependencies: "@types/parse5" "^5.0.0" - ccount "^1.0.0" - hastscript "^5.0.0" + hastscript "^6.0.0" property-information "^5.0.0" vfile "^4.0.0" + vfile-location "^3.2.0" web-namespaces "^1.0.0" hast-util-parse-selector@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" - integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA== + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== hast-util-raw@6.0.1: version "6.0.1" @@ -7509,11 +7225,12 @@ hast-util-to-parse5@^6.0.0: xtend "^4.0.0" zwitch "^1.0.0" -hastscript@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" - integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ== +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== dependencies: + "@types/hast" "^2.0.0" comma-separated-tokens "^1.0.0" hast-util-parse-selector "^2.0.0" property-information "^5.0.0" @@ -7524,10 +7241,10 @@ he@1.2.0, he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -highlight.js@~9.15.0, highlight.js@~9.15.1: - version "9.15.10" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.10.tgz#7b18ed75c90348c045eef9ed08ca1319a2219ad2" - integrity sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw== +highlight.js@^10.1.1, highlight.js@~10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.0.tgz#ef3ce475e5dfa7a48484260b49ea242ddab823a0" + integrity sha512-EfrUGcQ63oLJbj0J0RI9ebX6TAITbsDBLbsjr881L/X5fMO9+oadKzEF21C7R3ULKG6Gv3uoab2HiqVJa/4+oA== hmac-drbg@^1.0.0: version "1.0.1" @@ -7550,6 +7267,13 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +hosted-git-info@^3.0.6: + version "3.0.7" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c" + integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ== + dependencies: + lru-cache "^6.0.0" + html-element-map@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.2.0.tgz#dfbb09efe882806af63d990cf6db37993f099f22" @@ -7571,7 +7295,7 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-entities@^1.2.0: +html-entities@^1.2.0, html-entities@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== @@ -7652,7 +7376,7 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-errors@~1.7.2: +http-errors@1.7.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== @@ -7704,10 +7428,10 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: dependencies: postcss "^7.0.14" -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.1.13, ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== iferr@^0.1.5: version "0.1.5" @@ -7719,7 +7443,7 @@ ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.6: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -7750,9 +7474,9 @@ import-fresh@^2.0.0: resolve-from "^3.0.0" import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + version "3.2.2" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" + integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -7820,7 +7544,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5: +ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -7887,7 +7611,7 @@ interpret@^2.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -invariant@^2.2.2, invariant@^2.2.3, invariant@^2.2.4: +invariant@^2.2.3, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -7933,11 +7657,6 @@ is-alphabetical@1.0.4, is-alphabetical@^1.0.0: resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== -is-alphanumeric@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" - integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= - is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -7956,6 +7675,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -7975,15 +7699,15 @@ is-boolean-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== -is-buffer@^1.0.2, is-buffer@^1.1.5: +is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.2: version "1.2.2" @@ -7997,10 +7721,10 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d" - integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw== +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== dependencies: has "^1.0.3" @@ -8023,7 +7747,7 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== -is-decimal@^1.0.0, is-decimal@^1.0.2: +is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== @@ -8120,7 +7844,7 @@ is-glob@^2.0.0: dependencies: is-extglob "^1.0.0" -is-glob@^3.1.0: +is-glob@^3.0.0, is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= @@ -8167,9 +7891,9 @@ is-number@^7.0.0: integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== is-plain-obj@2.1.0, is-plain-obj@^2.0.0: version "2.1.0" @@ -8181,14 +7905,12 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== - dependencies: - isobject "^4.0.0" +is-plain-object@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" + integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -8200,7 +7922,7 @@ is-potential-custom-element-name@^1.0.0: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= -is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.1: +is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== @@ -8232,7 +7954,7 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.4, is-string@^1.0.5: +is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== @@ -8318,6 +8040,14 @@ isobject@^4.0.0: resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== +isomorphic-unfetch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== + dependencies: + node-fetch "^2.6.1" + unfetch "^4.2.0" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -8405,77 +8135,67 @@ jake@^10.6.1: filelist "^1.0.1" minimatch "^3.0.4" -jest-changed-files@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.1.tgz#2fac3dc51297977ee883347948d8e3d37c417fba" - integrity sha512-NhSdZ5F6b/rIN5V46x1l31vrmukD/bJUXgYAY8VtP1SknYdJwjYDRxuLt7Z8QryIdqCjMIn2C0Cd98EZ4umo8Q== +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" execa "^4.0.0" throat "^5.0.0" -jest-cli@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.1.tgz#8952242fa812c05bd129abf7c022424045b7fd67" - integrity sha512-aPLoEjlwFrCWhiPpW5NUxQA1X1kWsAnQcQ0SO/fHsCvczL3W75iVAcH9kP6NN+BNqZcHNEvkhxT5cDmBfEAh+w== +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: - "@jest/core" "^26.6.1" - "@jest/test-result" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^26.6.1" - jest-util "^26.6.1" - jest-validate "^26.6.1" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" yargs "^15.4.1" -jest-config@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.1.tgz#8c343fbdd9c24ad003e261f73583c3c020f32b42" - integrity sha512-mtJzIynIwW1d1nMlKCNCQiSgWaqFn8cH/fOSNY97xG7Y9tBCZbCSuW2GTX0RPmceSJGO7l27JgwC18LEg0Vg+g== +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.1" - "@jest/types" "^26.6.1" - babel-jest "^26.6.1" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.1" - jest-environment-node "^26.6.1" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.1" + jest-jasmine2 "^26.6.3" jest-regex-util "^26.0.0" - jest-resolve "^26.6.1" - jest-util "^26.6.1" - jest-validate "^26.6.1" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" micromatch "^4.0.2" - pretty-format "^26.6.1" + pretty-format "^26.6.2" -jest-diff@^25.2.1: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - -jest-diff@^26.0.0, jest-diff@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.1.tgz#38aa194979f454619bb39bdee299fb64ede5300c" - integrity sha512-BBNy/zin2m4kG5In126O8chOBxLLS/XMTuuM2+YhgyHk87ewPzKTuTJcqj3lOWOi03NNgrl+DkMeV/exdvG9gg== +jest-diff@^26.0.0, jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== dependencies: chalk "^4.0.0" - diff-sequences "^26.5.0" + diff-sequences "^26.6.2" jest-get-type "^26.3.0" - pretty-format "^26.6.1" + pretty-format "^26.6.2" jest-docblock@^26.0.0: version "26.0.0" @@ -8484,16 +8204,16 @@ jest-docblock@^26.0.0: dependencies: detect-newline "^3.0.0" -jest-each@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.1.tgz#e968e88309a3e2ae9648634af8f89d8ee5acfddd" - integrity sha512-gSn8eB3buchuq45SU7pLB7qmCGax1ZSxfaWuEFblCyNMtyokYaKFh9dRhYPujK6xYL57dLIPhLKatjmB5XWzGA== +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== dependencies: - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" chalk "^4.0.0" jest-get-type "^26.3.0" - jest-util "^26.6.1" - pretty-format "^26.6.1" + jest-util "^26.6.2" + pretty-format "^26.6.2" jest-environment-enzyme@^7.1.2: version "7.1.2" @@ -8514,30 +8234,30 @@ jest-environment-jsdom@^24.0.0: jest-util "^24.9.0" jsdom "^11.5.1" -jest-environment-jsdom@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.1.tgz#63093bf89daee6139616568a43633b84cf7aac21" - integrity sha512-A17RiXuHYNVlkM+3QNcQ6n5EZyAc6eld8ra9TW26luounGWpku4tj03uqRgHJCI1d4uHr5rJiuCH5JFRtdmrcA== +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== dependencies: - "@jest/environment" "^26.6.1" - "@jest/fake-timers" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.6.1" - jest-util "^26.6.1" + jest-mock "^26.6.2" + jest-util "^26.6.2" jsdom "^16.4.0" -jest-environment-node@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.1.tgz#4d73d8b33c26989a92a0ed3ad0bfd6f7a196d9bd" - integrity sha512-YffaCp6h0j1kbcf1NVZ7umC6CPgD67YS+G1BeornfuSkx5s3xdhuwG0DCxSiHPXyT81FfJzA1L7nXvhq50OWIg== +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== dependencies: - "@jest/environment" "^26.6.1" - "@jest/fake-timers" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.6.1" - jest-util "^26.6.1" + jest-mock "^26.6.2" + jest-util "^26.6.2" jest-enzyme@^7.1.2: version "7.1.2" @@ -8548,11 +8268,6 @@ jest-enzyme@^7.1.2: enzyme-to-json "^3.3.0" jest-environment-enzyme "^7.1.2" -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== - jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" @@ -8577,89 +8292,68 @@ jest-haste-map@^24.9.0: optionalDependencies: fsevents "^1.2.7" -jest-haste-map@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.5.2.tgz#a15008abfc502c18aa56e4919ed8c96304ceb23d" - integrity sha512-lJIAVJN3gtO3k4xy+7i2Xjtwh8CfPcH08WYjZpe9xzveDaqGw9fVNCpkYu6M525wKFVkLmyi7ku+DxCAP1lyMA== +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: - "@jest/types" "^26.5.2" + "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" jest-regex-util "^26.0.0" - jest-serializer "^26.5.0" - jest-util "^26.5.2" - jest-worker "^26.5.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" optionalDependencies: fsevents "^2.1.2" -jest-haste-map@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.1.tgz#97e96f5fd7576d980307fbe6160b10c016b543d4" - integrity sha512-9kPafkv0nX6ta1PrshnkiyhhoQoFWncrU/uUBt3/AP1r78WSCU5iLceYRTwDvJl67H3RrXqSlSVDDa/AsUB7OQ== - dependencies: - "@jest/types" "^26.6.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.5.0" - jest-util "^26.6.1" - jest-worker "^26.6.1" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.1.tgz#11c92603d1fa97e3c33404359e69d6cec7e57017" - integrity sha512-2uYdT32o/ZzSxYAPduAgokO8OlAL1YdG/9oxcEY138EDNpIK5XRRJDaGzTZdIBWSxk0aR8XxN44FvfXtHB+Fiw== +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.1" - "@jest/source-map" "^26.5.0" - "@jest/test-result" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^26.6.1" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^26.6.1" - jest-matcher-utils "^26.6.1" - jest-message-util "^26.6.1" - jest-runtime "^26.6.1" - jest-snapshot "^26.6.1" - jest-util "^26.6.1" - pretty-format "^26.6.1" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" throat "^5.0.0" -jest-leak-detector@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.1.tgz#f63e46dc4e3aa30d29b40ae49966a15730d25bbe" - integrity sha512-j9ZOtJSJKlHjrs4aIxWjiQUjyrffPdiAQn2Iw0916w7qZE5Lk0T2KhIH6E9vfhzP6sw0Q0jtnLLb4vQ71o1HlA== +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== dependencies: jest-get-type "^26.3.0" - pretty-format "^26.6.1" + pretty-format "^26.6.2" -jest-matcher-utils@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.1.tgz#bc90822d352c91c2ec1814731327691d06598400" - integrity sha512-9iu3zrsYlUnl8pByhREF9rr5eYoiEb1F7ymNKg6lJr/0qD37LWS5FSW/JcoDl8UdMX2+zAzabDs7sTO+QFKjCg== +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: chalk "^4.0.0" - jest-diff "^26.6.1" + jest-diff "^26.6.2" jest-get-type "^26.3.0" - pretty-format "^26.6.1" + pretty-format "^26.6.2" jest-message-util@^24.9.0: version "24.9.0" @@ -8675,17 +8369,18 @@ jest-message-util@^24.9.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-message-util@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.1.tgz#d62c20c0fe7be10bfd6020b675abb9b5fa933ff3" - integrity sha512-cqM4HnqncIebBNdTKrBoWR/4ufHTll0pK/FWwX0YasK+TlBQEMqw3IEdynuuOTjDPFO3ONlFn37280X48beByw== +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.2" + pretty-format "^26.6.2" slash "^3.0.0" stack-utils "^2.0.2" @@ -8696,12 +8391,12 @@ jest-mock@^24.9.0: dependencies: "@jest/types" "^24.9.0" -jest-mock@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.1.tgz#6c12a92a82fc833f81a5b6de6b67d78386e276a3" - integrity sha512-my0lPTBu1awY8iVG62sB2sx9qf8zxNDVX+5aFgoB8Vbqjb6LqIOsfyFA8P1z6H2IsqMbvOX9oCJnK67Y3yUIMA== +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== dependencies: - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -8709,10 +8404,10 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-react-hooks-shallow@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jest-react-hooks-shallow/-/jest-react-hooks-shallow-1.4.1.tgz#5a0082c7ef72c0434f55bd7ef4ff8fdbe4e0ab1d" - integrity sha512-el9oYNAp77WEUgVdBEjPMU+5koOFXfAhitlVShuBine/y2AVCL5nEF9kRDSu9iAo2mMocbwmeTEPyDsw/LAHvg== +jest-react-hooks-shallow@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jest-react-hooks-shallow/-/jest-react-hooks-shallow-1.4.2.tgz#8fd435a9923acb85f5e78eab26782f00d9fb7e80" + integrity sha512-Xpn/RjedUEhLpsly1SoNbHYc1RbuG5II1HzrRAXDdRmHmiyOz+28i/VUmDXMRoJooe1ohSKYzkLxhE8E50T6QA== dependencies: react "^16.8.0" @@ -8726,84 +8421,84 @@ jest-regex-util@^26.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-resolve-dependencies@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.1.tgz#e9d091a159ad198c029279737a8b4c507791d75c" - integrity sha512-MN6lufbZJ3RBfTnJesZtHu3hUCBqPdHRe2+FhIt0yiqJ3fMgzWRqMRQyN/d/QwOE7KXwAG2ekZutbPhuD7s51A== +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== dependencies: - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" jest-regex-util "^26.0.0" - jest-snapshot "^26.6.1" + jest-snapshot "^26.6.2" -jest-resolve@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.1.tgz#e9a9130cc069620d5aeeb87043dd9e130b68c6a1" - integrity sha512-hiHfQH6rrcpAmw9xCQ0vD66SDuU+7ZulOuKwc4jpbmFFsz0bQG/Ib92K+9/489u5rVw0btr/ZhiHqBpmkbCvuQ== +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== dependencies: - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.2" - jest-util "^26.6.1" + jest-util "^26.6.2" read-pkg-up "^7.0.1" resolve "^1.18.1" slash "^3.0.0" -jest-runner@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.1.tgz#a945971b5a23740c1fe20e372a38de668b7c76bf" - integrity sha512-DmpNGdgsbl5s0FGkmsInmqnmqCtliCSnjWA2TFAJS1m1mL5atwfPsf+uoZ8uYQ2X0uDj4NM+nPcDnUpbNTRMBA== +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== dependencies: - "@jest/console" "^26.6.1" - "@jest/environment" "^26.6.1" - "@jest/test-result" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" emittery "^0.7.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^26.6.1" + jest-config "^26.6.3" jest-docblock "^26.0.0" - jest-haste-map "^26.6.1" - jest-leak-detector "^26.6.1" - jest-message-util "^26.6.1" - jest-resolve "^26.6.1" - jest-runtime "^26.6.1" - jest-util "^26.6.1" - jest-worker "^26.6.1" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.1.tgz#9a131e7b4f0bc6beefd62e7443f757c1d5fa9dec" - integrity sha512-7uOCNeezXDWgjEyzYbRN2ViY7xNZzusNVGAMmU0UHRUNXuY4j4GBHKGMqPo/cBPZA9bSYp+lwK2DRRBU5Dv6YQ== +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== dependencies: - "@jest/console" "^26.6.1" - "@jest/environment" "^26.6.1" - "@jest/fake-timers" "^26.6.1" - "@jest/globals" "^26.6.1" - "@jest/source-map" "^26.5.0" - "@jest/test-result" "^26.6.1" - "@jest/transform" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/yargs" "^15.0.0" chalk "^4.0.0" - cjs-module-lexer "^0.4.2" + cjs-module-lexer "^0.6.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^26.6.1" - jest-haste-map "^26.6.1" - jest-message-util "^26.6.1" - jest-mock "^26.6.1" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" jest-regex-util "^26.0.0" - jest-resolve "^26.6.1" - jest-snapshot "^26.6.1" - jest-util "^26.6.1" - jest-validate "^26.6.1" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" slash "^3.0.0" strip-bom "^4.0.0" yargs "^15.4.1" @@ -8813,34 +8508,34 @@ jest-serializer@^24.9.0: resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== -jest-serializer@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.5.0.tgz#f5425cc4c5f6b4b355f854b5f0f23ec6b962bc13" - integrity sha512-+h3Gf5CDRlSLdgTv7y0vPIAoLgX/SI7T4v6hy+TEXMgYbv+ztzbg5PSN6mUXAT/hXYHvZRWm+MaObVfqkhCGxA== +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.1.tgz#469e9d0b749496aea7dad0d7e5e5c88b91cdb4cc" - integrity sha512-JA7bZp7HRTIJYAi85pJ/OZ2eur2dqmwIToA5/6d7Mn90isGEfeF9FvuhDLLEczgKP1ihreBzrJ6Vr7zteP5JNA== +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.0.0" chalk "^4.0.0" - expect "^26.6.1" + expect "^26.6.2" graceful-fs "^4.2.4" - jest-diff "^26.6.1" + jest-diff "^26.6.2" jest-get-type "^26.3.0" - jest-haste-map "^26.6.1" - jest-matcher-utils "^26.6.1" - jest-message-util "^26.6.1" - jest-resolve "^26.6.1" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^26.6.1" + pretty-format "^26.6.2" semver "^7.3.2" jest-styled-components@^7.0.3: @@ -8868,53 +8563,41 @@ jest-util@^24.9.0: slash "^2.0.0" source-map "^0.6.0" -jest-util@^26.1.0, jest-util@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.5.2.tgz#8403f75677902cc52a1b2140f568e91f8ed4f4d7" - integrity sha512-WTL675bK+GSSAYgS8z9FWdCT2nccO1yTIplNLPlP0OD8tUk/H5IrWKMMRudIQQ0qp8bb4k+1Qa8CxGKq9qnYdg== +jest-util@^26.1.0, jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: - "@jest/types" "^26.5.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" graceful-fs "^4.2.4" is-ci "^2.0.0" micromatch "^4.0.2" -jest-util@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.1.tgz#4cc0d09ec57f28d12d053887eec5dc976a352e9b" - integrity sha512-xCLZUqVoqhquyPLuDXmH7ogceGctbW8SMyQVjD9o+1+NPWI7t0vO08udcFLVPLgKWcvc+zotaUv/RuaR6l8HIA== +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== dependencies: - "@jest/types" "^26.6.1" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-validate@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.1.tgz#28730eb8570d60968d9d06f1a8c94d922167bd2a" - integrity sha512-BEFpGbylKocnNPZULcnk+TGaz1oFZQH/wcaXlaXABbu0zBwkOGczuWgdLucUouuQqn7VadHZZeTvo8VSFDLMOA== - dependencies: - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" camelcase "^6.0.0" chalk "^4.0.0" jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^26.6.1" + pretty-format "^26.6.2" -jest-watcher@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.1.tgz#debfa34e9c5c3e735593403794fe53d2955bfabc" - integrity sha512-0LBIPPncNi9CaLKK15bnxyd2E8OMl4kJg0PTiNOI+MXztXw1zVdtX/x9Pr6pXaQYps+eS/ts43O4+HByZ7yJSw== +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: - "@jest/test-result" "^26.6.1" - "@jest/types" "^26.6.1" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^26.6.1" + jest-util "^26.6.2" string-length "^4.0.1" jest-worker@24.9.0, jest-worker@^24.9.0: @@ -8925,32 +8608,23 @@ jest-worker@24.9.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest-worker@^26.2.1, jest-worker@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" - integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug== +jest-worker@^26.2.1, jest-worker@^26.6.1, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.1.tgz#c2ae8cde6802cc14056043f997469ec170d9c32a" - integrity sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw== +jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.1.tgz#821e8280d2bdeeed40ac7bc43941dceff0f1b650" - integrity sha512-f+ahfqw3Ffy+9vA7sWFGpTmhtKEMsNAZiWBVXDkrpIO73zIz22iimjirnV78kh/eWlylmvLh/0WxHN6fZraZdA== - dependencies: - "@jest/core" "^26.6.1" + "@jest/core" "^26.6.3" import-local "^3.0.2" - jest-cli "^26.6.1" + jest-cli "^26.6.3" js-string-escape@^1.0.1: version "1.0.1" @@ -9089,7 +8763,7 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@2.x, json5@^2.1.0, json5@^2.1.1, json5@^2.1.2: +json5@2.x, json5@^2.1.1, json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== @@ -9111,11 +8785,11 @@ jsonfile@^2.1.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - universalify "^1.0.0" + universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" @@ -9137,12 +8811,10 @@ jsprim@^1.2.2: array-includes "^3.1.1" object.assign "^4.1.1" -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= - dependencies: - is-buffer "^1.0.2" +junk@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" + integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -9180,25 +8852,22 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -klona@^2.0.3: +klona@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -known-css-properties@^0.19.0: - version "0.19.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.19.0.tgz#5d92b7fa16c72d971bda9b7fe295bdf61836ee5b" - integrity sha512-eYboRV94Vco725nKMlpkn3nV2+96p9c3gKXRsYqAJSswSENvBhN7n5L+uDhY58xQa0UukWsDMTGELzmD8Q+wTA== +known-css-properties@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.20.0.tgz#0570831661b47dd835293218381166090ff60e96" + integrity sha512-URvsjaA9ypfreqJ2/ylDr5MUERhJZ+DhguoWRr2xgS5C7aGCalXo+ewL+GixgKBfhT2vuL02nbIgNGqVWgTOYw== -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= +ksuid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ksuid/-/ksuid-2.0.0.tgz#83618ce67b235bb5f41c04cb914a2605e1ffca5a" + integrity sha512-BM5UU56FhzqQN6v83X8JSKWktl0gAYRovV0DnO/mXpuOs/SFMTPP7fr7ViNtzpg3iV4pnk/6pChuLhOkKBZ59A== + dependencies: + base-convert-int-array "^1.0.1" lazy-universal-dotenv@^3.0.1: version "3.0.1" @@ -9221,13 +8890,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -9244,6 +8906,14 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +line-column@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" + integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= + dependencies: + isarray "^1.0.0" + isobject "^2.0.0" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -9274,6 +8944,11 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== +loader-runner@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.1.0.tgz#f70bc0c29edbabdf2043e7ee73ccc3fe1c96b42d" + integrity sha512-oR4lB4WvwFoC70ocraKhn5nkKSs23t57h9udUgw8o0iH8hMXeEoRuUgfcvgUwAJ1ZpRqBvcou4N2SMvM1DwMrA== + loader-utils@1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" @@ -9292,7 +8967,7 @@ loader-utils@2.0.0, loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -9324,6 +8999,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash-es@^4.17.15: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" + integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== + lodash._baseisequal@^3.0.0: version "3.0.7" resolved "https://registry.yarnpkg.com/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz#d8025f76339d29342767dcc887ce5cb95a5b51f1" @@ -9432,12 +9112,7 @@ loglevelnext@^1.0.1: es6-symbol "^3.1.1" object.assign "^4.1.0" -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -longest-streak@^2.0.1: +longest-streak@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== @@ -9449,20 +9124,20 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lower-case@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" - integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: - tslib "^1.10.0" + tslib "^2.0.3" -lowlight@1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.12.1.tgz#014acf8dd73a370e02ff1cc61debcde3bb1681eb" - integrity sha512-OqaVxMGIESnawn+TU/QMV5BJLbUghUfjDWPAtFqDYDmDtr4FnB+op8xM+pR7nKlauHNUHXGt0VgWatFB8voS5w== +lowlight@^1.14.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.17.0.tgz#a1143b2fba8239df8cd5893f9fe97aaf8465af4a" + integrity sha512-vmtBgYKD+QVNy7tIa7ulz5d//Il9R4MooOVh4nkOf9R9Cb/Dk5TXMSTieg/vDulkBkIWj59/BIlyFQxT9X1oAQ== dependencies: - fault "^1.0.2" - highlight.js "~9.15.0" + fault "^1.0.0" + highlight.js "~10.4.0" lru-cache@6.0.0, lru-cache@^6.0.0: version "6.0.0" @@ -9486,7 +9161,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -9537,13 +9212,6 @@ markdown-escapes@^1.0.0: resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== -markdown-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" - integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== - dependencies: - repeat-string "^1.0.0" - markdown-to-jsx@^6.11.4: version "6.11.4" resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz#b4528b1ab668aef7fe61c1535c27e837819392c5" @@ -9578,13 +9246,6 @@ mdast-squeeze-paragraphs@^4.0.0: dependencies: unist-util-remove "^2.0.0" -mdast-util-compact@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490" - integrity sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA== - dependencies: - unist-util-visit "^2.0.0" - mdast-util-definitions@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-2.0.1.tgz#2c931d8665a96670639f17f98e32c3afcfee25f3" @@ -9592,41 +9253,58 @@ mdast-util-definitions@^2.0.0: dependencies: unist-util-visit "^2.0.0" -mdast-util-definitions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-3.0.1.tgz#06af6c49865fc63d6d7d30125569e2f7ae3d0a86" - integrity sha512-BAv2iUm/e6IK/b2/t+Fx69EL/AGcq/IG2S+HxHjDJGfLJtd6i9SZUS76aC9cig+IEucsqxKTR0ot3m933R3iuA== +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== dependencies: unist-util-visit "^2.0.0" -mdast-util-to-hast@9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-9.1.1.tgz#953ff12aed57464b11d7e5549a45913e561909fa" - integrity sha512-vpMWKFKM2mnle+YbNgDXxx95vv0CoLU0v/l3F5oFAG5DV7qwkZVWA206LsAdOnEVyf5vQcLnb3cWJywu7mUxsQ== +mdast-util-from-markdown@^0.8.0: + version "0.8.1" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.1.tgz#781371d493cac11212947226190270c15dc97116" + integrity sha512-qJXNcFcuCSPqUF0Tb0uYcFDIq67qwB3sxo9RPdf9vG8T90ViKnksFqdB/Coq2a7sTnxL/Ify2y7aIQXDkQFH0w== dependencies: "@types/mdast" "^3.0.0" - "@types/unist" "^2.0.3" - mdast-util-definitions "^3.0.0" + mdast-util-to-string "^1.0.0" + micromark "~2.10.0" + parse-entities "^2.0.0" + +mdast-util-to-hast@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" + integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + mdast-util-definitions "^4.0.0" mdurl "^1.0.0" unist-builder "^2.0.0" unist-util-generated "^1.0.0" unist-util-position "^3.0.0" unist-util-visit "^2.0.0" +mdast-util-to-markdown@^0.5.0: + version "0.5.4" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.5.4.tgz#be680ed0c0e11a07d07c7adff9551eec09c1b0f9" + integrity sha512-0jQTkbWYx0HdEA/h++7faebJWr5JyBoBeiRf0u3F4F3QtnyyGaWIsOwo749kRb1ttKrLLr+wRtOkfou9yB0p6A== + dependencies: + "@types/unist" "^2.0.0" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" + mdast-util-to-string@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== mdurl@^1.0.0: version "1.0.1" @@ -9666,31 +9344,22 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= -meow@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" - integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA== +meow@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-8.0.0.tgz#1aa10ee61046719e334ffdc038bb5069250ec99a" + integrity sha512-nbsTRz2fwniJBFgUkcdISq8y/q9n9VbiHYbfwklFh5V4V2uAcxtKQkDc0yCLPM/kP0d+inZBewn3zJqewHE7kg== dependencies: "@types/minimist" "^1.2.0" camelcase-keys "^6.2.2" decamelize-keys "^1.1.0" hard-rejection "^2.1.0" minimist-options "4.1.0" - normalize-package-data "^2.5.0" + normalize-package-data "^3.0.0" read-pkg-up "^7.0.1" redent "^3.0.0" trim-newlines "^3.0.0" - type-fest "^0.13.1" - yargs-parser "^18.1.3" - -merge-deep@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" - integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== - dependencies: - arr-union "^3.1.0" - clone-deep "^0.2.4" - kind-of "^3.0.2" + type-fest "^0.18.0" + yargs-parser "^20.2.3" merge-descriptors@1.0.1: version "1.0.1" @@ -9717,6 +9386,14 @@ microevent.ts@~0.1.1: resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== +micromark@~2.10.0: + version "2.10.1" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.10.1.tgz#cd73f54e0656f10e633073db26b663a221a442a7" + integrity sha512-fUuVF8sC1X7wsCS29SYQ2ZfIZYbTymp0EYr6sab3idFjigFFjGa5UwoniPlV9tAgntjuapW1t9U+S0yDYeGKHQ== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -9736,7 +9413,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2: +micromatch@^4.0.0, micromatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== @@ -9779,6 +9456,16 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -9817,7 +9504,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -9882,27 +9569,17 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -mkdirp@0.5.3: +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" - integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== - dependencies: - minimist "^1.2.5" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -9952,9 +9629,14 @@ mvdan-sh@^0.5.0: integrity sha512-UWbdl4LHd2fUnaEcOUFVWRdWGLkNoV12cKVIPiirYd8qM5VkCoCTXErlDubevrkEG7kGohvjRxAlTQmOqG80tw== nan@^2.12.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanoid@^3.1.16: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== nanomatch@^1.2.9: version "1.2.13" @@ -9973,6 +9655,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + native-url@0.3.4: version "0.3.4" resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.3.4.tgz#29c943172aed86c63cee62c8c04db7f5756661f8" @@ -9980,15 +9667,22 @@ native-url@0.3.4: dependencies: querystring "^0.2.0" +native-url@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" + integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== + dependencies: + querystring "^0.2.0" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= nearley@^2.7.10: - version "2.19.7" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.19.7.tgz#eafbe3e2d8ccfe70adaa5c026ab1f9709c116218" - integrity sha512-Y+KNwhBPcSJKeyQCFjn8B/MIe+DDlhaaDgjVldhy5xtFewIbiQgcbZV8k2gCVwkI1ZsKCnjIYZbR+0Fim5QYgg== + version "2.19.9" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.19.9.tgz#a6a06362025be043d3b06bca65355c75af45dc4e" + integrity sha512-KpCXvcVWPmZrEs95tIkqWi+CgL48O8CJDVDgY/AQGWXR1O8KQPHt5iQrTLior0k0v3PGKIV2xPi879wR1sawwg== dependencies: commander "^2.19.0" moo "^0.5.0" @@ -10001,99 +9695,97 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" + integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== + next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= -next@^9.5.5: - version "9.5.5" - resolved "https://registry.yarnpkg.com/next/-/next-9.5.5.tgz#37a37095e7c877ed6c94ba82e34ab9ed02b4eb33" - integrity sha512-KF4MIdTYeI6YIGODNw27w9HGzCll4CXbUpkP6MNvyoHlpsunx8ybkQHm/hYa7lWMozmsn58LwaXJOhe4bSrI0g== +next@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/next/-/next-10.0.3.tgz#2bf9a1625dcd0afc8c31be19fc5516af68d99e80" + integrity sha512-QYCfjZgowjaLUFvyV8959SmkUZU/edFgHeiXNtWDv7kffo/oTm891p0KZAkk5cMIHcsDX3g3UuQdw/zmui783g== dependencies: - "@ampproject/toolbox-optimizer" "2.6.0" - "@babel/code-frame" "7.10.4" - "@babel/core" "7.7.7" - "@babel/plugin-proposal-class-properties" "7.10.4" - "@babel/plugin-proposal-export-namespace-from" "7.10.4" - "@babel/plugin-proposal-numeric-separator" "7.10.4" - "@babel/plugin-proposal-object-rest-spread" "7.11.0" - "@babel/plugin-syntax-bigint" "7.8.3" - "@babel/plugin-syntax-dynamic-import" "7.8.3" - "@babel/plugin-syntax-jsx" "7.10.4" - "@babel/plugin-transform-modules-commonjs" "7.10.4" - "@babel/plugin-transform-runtime" "7.11.5" - "@babel/preset-env" "7.11.5" - "@babel/preset-modules" "0.1.4" - "@babel/preset-react" "7.10.4" - "@babel/preset-typescript" "7.10.4" - "@babel/runtime" "7.11.2" - "@babel/types" "7.11.5" + "@ampproject/toolbox-optimizer" "2.7.0-alpha.1" + "@babel/runtime" "7.12.5" "@hapi/accept" "5.0.1" - "@next/env" "9.5.5" - "@next/polyfill-module" "9.5.5" - "@next/react-dev-overlay" "9.5.5" - "@next/react-refresh-utils" "9.5.5" + "@next/env" "10.0.3" + "@next/polyfill-module" "10.0.3" + "@next/react-dev-overlay" "10.0.3" + "@next/react-refresh-utils" "10.0.3" ast-types "0.13.2" babel-plugin-transform-define "2.0.0" babel-plugin-transform-react-remove-prop-types "0.4.24" - browserslist "4.13.0" + browserslist "4.14.6" buffer "5.6.0" - cacache "15.0.5" caniuse-lite "^1.0.30001113" - chokidar "2.1.8" + chalk "2.4.2" + chokidar "3.4.3" crypto-browserify "3.12.0" css-loader "4.3.0" - cssnano-simple "1.2.0" + cssnano-simple "1.2.1" + etag "1.8.1" find-cache-dir "3.3.1" jest-worker "24.9.0" loader-utils "2.0.0" - mkdirp "0.5.3" native-url "0.3.4" - neo-async "2.6.1" - node-html-parser "^1.2.19" + node-fetch "2.6.1" + node-html-parser "1.4.9" path-browserify "1.0.1" pnp-webpack-plugin "1.6.4" - postcss "7.0.32" + postcss "8.1.7" process "0.11.10" prop-types "15.7.2" + raw-body "2.4.1" react-is "16.13.1" react-refresh "0.8.3" - resolve-url-loader "3.1.1" - sass-loader "10.0.2" + resolve-url-loader "3.1.2" + sass-loader "10.0.5" schema-utils "2.7.1" stream-browserify "3.0.0" style-loader "1.2.1" - styled-jsx "3.3.0" - use-subscription "1.4.1" + styled-jsx "3.3.2" + use-subscription "1.5.1" vm-browserify "1.1.2" watchpack "2.0.0-beta.13" - web-vitals "0.2.4" webpack "4.44.1" webpack-sources "1.4.3" + optionalDependencies: + sharp "0.26.2" nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -no-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" - integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: - lower-case "^2.0.1" - tslib "^1.10.0" + lower-case "^2.0.2" + tslib "^2.0.3" + +node-abi@^2.7.0: + version "2.19.3" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.19.3.tgz#252f5dcab12dad1b5503b2d27eddd4733930282d" + integrity sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg== + dependencies: + semver "^5.4.1" + +node-addon-api@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681" + integrity sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg== node-dir@^0.1.10: version "0.1.17" @@ -10107,15 +9799,15 @@ node-fetch@2.6.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -node-fetch@2.6.1, node-fetch@^2.6.0: +node-fetch@2.6.1, node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-html-parser@^1.2.19: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.3.1.tgz#f58e55a029b51deae8924312be9817ef5cf5ed96" - integrity sha512-AwYVI6GyEKj9NGoyMfSx4j5l7Axf7obQgLWGxtasLjED6RggTTQoq5ZRzjwSUfgSZ+Mv8Nzbi3pID0gFGqNUsA== +node-html-parser@1.4.9: + version "1.4.9" + resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c" + integrity sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw== dependencies: he "1.2.0" @@ -10170,10 +9862,23 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" -node-releases@^1.1.52, node-releases@^1.1.58, node-releases@^1.1.61: - version "1.1.61" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.61.tgz#707b0fca9ce4e11783612ba4a2fcba09047af16e" - integrity sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g== +node-releases@^1.1.52, node-releases@^1.1.65, node-releases@^1.1.67: + version "1.1.67" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12" + integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg== + +nookies@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/nookies/-/nookies-2.5.0.tgz#00c78ac9a91c3af82ab4bc8b193ad7bd41ee7aa5" + integrity sha512-yFIKz80h6SRqO1a6fcgO7D2qfnXAjXmGftPw5KrMWH+zGm1xHvyHyZ93z1yul9snwG/9LLvSY8pyZ3G5s6/UJQ== + dependencies: + cookie "^0.4.1" + set-cookie-parser "^2.4.6" + +noop-logger@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" + integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= normalize-html-whitespace@1.0.0: version "1.0.0" @@ -10190,6 +9895,16 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" + integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== + dependencies: + hosted-git-info "^3.0.6" + resolve "^1.17.0" + semver "^7.3.2" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -10241,7 +9956,7 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -npmlog@^4.1.2: +npmlog@^4.0.1, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -10251,7 +9966,7 @@ npmlog@^4.1.2: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@^1.0.2, nth-check@~1.0.1: +nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== @@ -10293,28 +10008,23 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-inspect@^1.7.0, object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== -object-is@^1.0.1, object-is@^1.0.2, object-is@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81" - integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg== +object-is@^1.0.2, object-is@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" + integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-path@0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -10323,41 +10033,43 @@ object-visit@^1.0.0: isobject "^3.0.0" object.assign@^4.1.0, object.assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" - integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.18.0-next.0" has-symbols "^1.0.1" object-keys "^1.1.1" object.entries@^1.1.0, object.entries@^1.1.1, object.entries@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" - integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" + es-abstract "^1.18.0-next.1" has "^1.0.3" "object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" - integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072" + integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" has "^1.0.3" object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" + integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" object.pick@^1.3.0: version "1.3.0" @@ -10367,13 +10079,13 @@ object.pick@^1.3.0: isobject "^3.0.1" object.values@^1.1.0, object.values@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" has "^1.0.3" objectorarray@^1.0.4: @@ -10449,10 +10161,31 @@ overlayscrollbars@^1.10.2: resolved "https://registry.yarnpkg.com/overlayscrollbars/-/overlayscrollbars-1.13.0.tgz#1edb436328133b94877b558f77966d5497ca36a7" integrity sha512-p8oHrMeRAKxXDMPI/EBNITj/zTVHKNnAnM59Im+xnoZUlV07FyTg46wom2286jJlXGGfcPFG/ba5NUiCwWNd4w== -p-each-series@^2.1.0: +p-all@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== + resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" + integrity sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA== + dependencies: + p-map "^2.0.0" + +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + +p-event@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== + dependencies: + p-timeout "^3.1.0" + +p-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== + dependencies: + p-map "^2.0.0" p-finally@^1.0.0: version "1.0.0" @@ -10474,11 +10207,11 @@ p-limit@^2.0.0, p-limit@^2.2.0: p-try "^2.0.0" p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-try "^2.0.0" + yocto-queue "^0.1.0" p-locate@^2.0.0: version "2.0.0" @@ -10501,6 +10234,18 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -10508,6 +10253,13 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -10533,12 +10285,12 @@ parallel-transform@^1.1.0: readable-stream "^2.1.5" param-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" - integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: - dot-case "^3.0.3" - tslib "^1.10.0" + dot-case "^3.0.4" + tslib "^2.0.3" parent-module@^1.0.0: version "1.0.1" @@ -10558,18 +10310,6 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-entities@^1.1.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" - integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== - dependencies: - character-entities "^1.0.0" - character-entities-legacy "^1.0.0" - character-reference-invalid "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.0" - is-hexadecimal "^1.0.0" - parse-entities@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" @@ -10634,13 +10374,13 @@ parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascal-case@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" - integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: - no-case "^3.0.3" - tslib "^1.10.0" + no-case "^3.0.4" + tslib "^2.0.3" pascalcase@^0.1.1: version "0.1.1" @@ -10816,11 +10556,6 @@ polished@^3.4.4: dependencies: "@babel/runtime" "^7.9.2" -popper.js@^1.14.4, popper.js@^1.14.7: - version "1.16.1" - resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" - integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -10930,7 +10665,7 @@ postcss-scss@^2.1.1: dependencies: postcss "^7.0.6" -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== @@ -10968,7 +10703,17 @@ postcss@7.0.32: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.0, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: +postcss@8.1.7: + version "8.1.7" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.7.tgz#ff6a82691bd861f3354fd9b17b2332f88171233f" + integrity sha512-llCQW1Pz4MOPwbZLmOddGM9eIJ8Bh7SZ2Oj5sxZva77uVaotYDsYTch1WBTNu7fUY0fpWp0fdt7uW40D4sRiiQ== + dependencies: + colorette "^1.2.1" + line-column "^1.0.2" + nanoid "^3.1.16" + source-map "^0.6.1" + +postcss@^7.0.0, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6: version "7.0.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== @@ -10977,6 +10722,27 @@ postcss@^7.0.0, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.2 source-map "^0.6.1" supports-color "^6.1.0" +prebuild-install@^5.3.5: + version "5.3.6" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.6.tgz#7c225568d864c71d89d07f8796042733a3f54291" + integrity sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg== + dependencies: + detect-libc "^1.0.3" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^2.7.0" + noop-logger "^0.1.1" + npmlog "^4.0.1" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^3.0.3" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + which-pm-runs "^1.0.0" + prefix-style@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06" @@ -10999,12 +10765,12 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier-plugin-packagejson@^2.2.7: - version "2.2.7" - resolved "https://registry.yarnpkg.com/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.2.7.tgz#e5e12bbeca937d055f39dbeb768ede89ed3c54c8" - integrity sha512-xpZyn/P8SGIUM2q52WuC9+CsIJ8wpObF0mMj03KRBna/XCgsUF7E/OvmtFLNc1eF9ql2lBT6aIXkWm5E4KCaBQ== +prettier-plugin-packagejson@^2.2.8: + version "2.2.8" + resolved "https://registry.yarnpkg.com/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.2.8.tgz#aa20997c8569415bc1f0e56f0c73265a927cd3da" + integrity sha512-hc9sg5wgMyefVglP1Sabv3M8EFMH7IPN3WHB5gZRebsbxxHGz0ApW3siMwj7oKqqQPf+qDHAec6alFixuZtGXg== dependencies: - sort-package-json "1.46.1" + sort-package-json "1.48.0" prettier-plugin-sh@^0.6.0: version "0.6.0" @@ -11013,10 +10779,10 @@ prettier-plugin-sh@^0.6.0: dependencies: mvdan-sh "^0.5.0" -prettier@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" - integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== +prettier@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" + integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== prettier@~2.0.5: version "2.0.5" @@ -11024,29 +10790,19 @@ prettier@~2.0.5: integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== pretty-error@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== dependencies: - renderkid "^2.0.1" - utila "~0.4" + lodash "^4.17.20" + renderkid "^2.0.4" -pretty-format@^25.2.1, pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== +pretty-format@^26.0.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: - "@jest/types" "^25.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^26.0.0, pretty-format@^26.6.1: - version "26.6.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.1.tgz#af9a2f63493a856acddeeb11ba6bcf61989660a8" - integrity sha512-MeqqsP5PYcRBbGMvwzsyBdmAJ4EFX7pWFyl7x4+dMVg5pE0ZDdBIvEH2ergvIO+Gvwv1wh64YuOY9y5LuyY/GA== - dependencies: - "@jest/types" "^26.6.1" + "@jest/types" "^26.6.2" ansi-regex "^5.0.0" ansi-styles "^4.0.0" react-is "^17.0.1" @@ -11056,17 +10812,10 @@ pretty-hrtime@^1.0.3: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= -prismjs@^1.8.4: - version "1.21.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.21.0.tgz#36c086ec36b45319ec4218ee164c110f9fc015a3" - integrity sha512-uGdSIu1nk3kej2iZsLyDoJ7e9bnPzIgY0naW/HdknGj61zScaprVEVGHrPoXqI+M9sP0NDnTK2jpkvmldpuqDw== - optionalDependencies: - clipboard "^2.0.0" - -prismjs@~1.17.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be" - integrity sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q== +prismjs@^1.21.0, prismjs@~1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.22.0.tgz#73c3400afc58a823dd7eed023f8e1ce9fd8977fa" + integrity sha512-lLJ/Wt9yy0AiSYBf212kK3mM5L8ycwlyTlSxHBAneXLR0nzFMlZ5y7riFPF3E33zXOF2IH95xdY5jIyZbM9z/w== optionalDependencies: clipboard "^2.0.0" @@ -11111,12 +10860,12 @@ promise.prototype.finally@^3.1.0: function-bind "^1.1.1" prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== dependencies: kleur "^3.0.3" - sisteransi "^1.0.4" + sisteransi "^1.0.5" prop-types-exact@^1.2.0: version "1.2.0" @@ -11137,31 +10886,12 @@ prop-types@15.7.2, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.6.0, react-is "^16.8.1" property-information@^5.0.0, property-information@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.5.0.tgz#4dc075d493061a82e2b7d096f406e076ed859943" - integrity sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA== + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: xtend "^4.0.0" -protobufjs@6.8.8: - version "6.8.8" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" - integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" - long "^4.0.0" - proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -11232,11 +10962,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" @@ -11322,6 +11047,16 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + raw-loader@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" @@ -11330,13 +11065,24 @@ raw-loader@^4.0.1: loader-utils "^2.0.0" schema-utils "^3.0.0" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + react-color@^2.17.0: - version "2.18.1" - resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.18.1.tgz#2cda8cc8e06a9e2c52ad391a30ddad31972472f4" - integrity sha512-X5XpyJS6ncplZs74ak0JJoqPi+33Nzpv5RYWWxn17bslih+X7OlgmfpmGC1fNvdkK7/SGWYf1JJdn7D2n5gSuQ== + version "2.19.3" + resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d" + integrity sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA== dependencies: "@icons/material" "^0.2.4" - lodash "^4.17.11" + lodash "^4.17.15" + lodash-es "^4.17.15" material-colors "^1.2.1" prop-types "^15.5.10" reactcss "^1.2.0" @@ -11390,10 +11136,10 @@ react-docgen-typescript-loader@^3.7.2: loader-utils "^1.2.3" react-docgen-typescript "^1.15.0" -react-docgen-typescript-plugin@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.5.2.tgz#2b294d75ef3145c36303da82be5d447cb67dc0dc" - integrity sha512-NQfWyWLmzUnedkiN2nPDb6Nkm68ik6fqbC3UvgjqYSeZsbKijXUA4bmV6aU7qICOXdop9PevPdjEgJuAN0nNVQ== +react-docgen-typescript-plugin@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-0.6.2.tgz#c83305206c61d5c7e004eaf2dc4661367ddc105d" + integrity sha512-Orw0WKdJGAg5eMZGbEMw/rKonoxbi8epU6RJWTW3ukWuTarxckFXTltGvm8XADAWlBHak30KD71XThtJruxfTg== dependencies: debug "^4.1.1" endent "^2.0.1" @@ -11408,29 +11154,19 @@ react-docgen-typescript@^1.15.0, react-docgen-typescript@^1.20.1: integrity sha512-AbLGMtn76bn7SYBJSSaKJrZ0lgNRRR3qL60PucM5M4v/AXyC8221cKBXW5Pyt9TfDRfe+LDnPNlg7TibxX0ovA== react-docgen@^5.0.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.3.0.tgz#9aabde5e69f1993c8ba839fd9a86696504654589" - integrity sha512-hUrv69k6nxazOuOmdGeOpC/ldiKy7Qj/UFpxaQi0eDMrUFUTIPGtY5HJu7BggSmiyAMfREaESbtBL9UzdQ+hyg== + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-docgen/-/react-docgen-5.3.1.tgz#940b519646a6c285c2950b96512aed59e8f90934" + integrity sha512-YG7YujVTwlLslr2Ny8nQiUfbBuEwKsLHJdQTSdEga1eY/nRFh/7LjCWUn6ogYhu2WDKg4z+6W/BJtUi+DPUIlA== dependencies: "@babel/core" "^7.7.5" "@babel/runtime" "^7.7.6" - ast-types "^0.13.2" + ast-types "^0.14.2" commander "^2.19.0" doctrine "^3.0.0" neo-async "^2.6.1" node-dir "^0.1.10" strip-indent "^3.0.0" -react-dom@^16.8.3: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" - integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - react-dom@^17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" @@ -11449,19 +11185,19 @@ react-draggable@^4.0.3: prop-types "^15.6.0" react-element-to-jsx-string@^14.3.1: - version "14.3.1" - resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.1.tgz#a08fa6e46eb76061aca7eabc2e70f433583cb203" - integrity sha512-LRdQWRB+xcVPOL4PU4RYuTg6dUJ/FNmaQ8ls6w38YbzkbV6Yr5tFNESroub9GiSghtnMq8dQg2LcNN5aMIDzVg== + version "14.3.2" + resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.2.tgz#c0000ed54d1f8b4371731b669613f2d4e0f63d5c" + integrity sha512-WZbvG72cjLXAxV7VOuSzuHEaI3RHj10DZu8EcKQpkKcAj7+qAkG5XUeSdX5FXrA0vPrlx0QsnAzZEBJwzV0e+w== dependencies: "@base2/pretty-print-object" "1.0.0" - is-plain-object "3.0.0" + is-plain-object "3.0.1" react-error-overlay@^6.0.7: - version "6.0.7" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" - integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== + version "6.0.8" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.8.tgz#474ed11d04fc6bda3af643447d85e9127ed6b5de" + integrity sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw== -react-fast-compare@^3.2.0: +react-fast-compare@^3.0.1, react-fast-compare@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== @@ -11484,12 +11220,10 @@ react-hotkeys@2.0.0: dependencies: prop-types "^15.6.1" -react-icons@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-3.11.0.tgz#2ca2903dfab8268ca18ebd8cc2e879921ec3b254" - integrity sha512-JRgiI/vdF6uyBgyZhVyYJUZAop95Sy4XDe/jmT3R/bKliFWpO/uZBwvSjWEdxwzec7SYbEPNPck0Kff2tUGM2Q== - dependencies: - camelcase "^5.0.0" +react-icons@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.1.0.tgz#9ca9bcbf2e3aee8e86e378bb9d465842947bbfc3" + integrity sha512-FCXBg1JbbR0vWALXIxmFAfozHdVIJmmwCD81Jk0EKOt7Ax4AdBNcaRkWhR0NaKy9ugJgoY3fFvo0PHpte55pXg== react-inspector@^5.0.1: version "5.1.0" @@ -11515,28 +11249,24 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -react-popper-tooltip@^2.11.0: - version "2.11.1" - resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-2.11.1.tgz#3c4bdfd8bc10d1c2b9a162e859bab8958f5b2644" - integrity sha512-04A2f24GhyyMicKvg/koIOQ5BzlrRbKiAgP6L+Pdj1MVX3yJ1NeZ8+EidndQsbejFT55oW1b++wg2Z8KlAyhfQ== +react-popper-tooltip@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-3.1.1.tgz#329569eb7b287008f04fcbddb6370452ad3f9eac" + integrity sha512-EnERAnnKRptQBJyaee5GJScWNUKQPDD2ywvzZyUjst/wj5U64C8/CnSYLNEmP2hG0IJ3ZhtDxE8oDN+KOyavXQ== dependencies: - "@babel/runtime" "^7.9.2" - react-popper "^1.3.7" + "@babel/runtime" "^7.12.5" + "@popperjs/core" "^2.5.4" + react-popper "^2.2.4" -react-popper@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.7.tgz#f6a3471362ef1f0d10a4963673789de1baca2324" - integrity sha512-nmqYTx7QVjCm3WUZLeuOomna138R1luC4EqkW3hxJUrAe+3eNz3oFCLYdnPwILfn0mX1Ew2c3wctrjlUMYYUww== +react-popper@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.2.4.tgz#d2ad3d2474ac9f1abf93df3099d408e5aa6a2e22" + integrity sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew== dependencies: - "@babel/runtime" "^7.1.2" - create-react-context "^0.3.0" - deep-equal "^1.1.1" - popper.js "^1.14.4" - prop-types "^15.6.1" - typed-styles "^0.0.7" + react-fast-compare "^3.0.1" warning "^4.0.2" -react-refresh@0.8.3: +react-refresh@0.8.3, react-refresh@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== @@ -11551,21 +11281,21 @@ react-sizeme@^2.6.7: shallowequal "^1.1.0" throttle-debounce "^2.1.0" -react-syntax-highlighter@^12.2.1: - version "12.2.1" - resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-12.2.1.tgz#14d78352da1c1c3f93c6698b70ec7c706b83493e" - integrity sha512-CTsp0ZWijwKRYFg9xhkWD4DSpQqE4vb2NKVMdPAkomnILSmsNBHE0n5GuI5zB+PU3ySVvXvdt9jo+ViD9XibCA== +react-syntax-highlighter@^13.5.0: + version "13.5.3" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz#9712850f883a3e19eb858cf93fad7bb357eea9c6" + integrity sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg== dependencies: "@babel/runtime" "^7.3.1" - highlight.js "~9.15.1" - lowlight "1.12.1" - prismjs "^1.8.4" - refractor "^2.4.1" + highlight.js "^10.1.1" + lowlight "^1.14.0" + prismjs "^1.21.0" + refractor "^3.1.0" react-test-renderer@^16.0.0-0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" - integrity sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ== + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" @@ -11573,18 +11303,18 @@ react-test-renderer@^16.0.0-0: scheduler "^0.19.1" react-textarea-autosize@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.2.0.tgz#fae38653f5ec172a855fd5fffb39e466d56aebdb" - integrity sha512-grajUlVbkx6VdtSxCgzloUIphIZF5bKr21OYMceWPKkniy7H0mRAT/AXPrRtObAe+zUePnNlBwUc4ivVjUGIjw== + version "8.3.0" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.0.tgz#e6e2fd186d9f61bb80ac6e2dcb4c55504f93c2fa" + integrity sha512-3GLWFAan2pbwBeoeNDoqGmSbrShORtgWfaWX0RJDivsUrpShh01saRM5RU/i4Zmf+whpBVEY5cA90Eq8Ub1N3w== dependencies: "@babel/runtime" "^7.10.2" use-composed-ref "^1.0.0" use-latest "^1.0.0" -react-tooltip@^4.2.10: - version "4.2.10" - resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-4.2.10.tgz#ed1a1acd388940c96f4b6309f4fd4dcce5e01bdc" - integrity sha512-D7ZLx6/QwpUl0SZRek3IZy/HWpsEEp0v3562tcT8IwZgu8IgV7hY5ZzniTkHyRcuL+IQnljpjj7A7zCgl2+T3w== +react-tooltip@^4.2.11: + version "4.2.11" + resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-4.2.11.tgz#244d4d1833c583160c4e6c95a8a89e0fb320e18a" + integrity sha512-exREte3mK/qbeuQpFbEL3ImdF5/TSAb+x/T7pkVfKmgVcfQLZKHSgLN+Msv7ZOHxaWNJwuCrSsCAy/iTGoPigg== dependencies: prop-types "^15.7.2" uuid "^7.0.3" @@ -11598,15 +11328,6 @@ react@^16.8.0: object-assign "^4.1.1" prop-types "^15.6.2" -react@^16.8.3: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - react@^17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" @@ -11688,7 +11409,7 @@ read-pkg@^5.2.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -11706,10 +11427,10 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: picomatch "^2.2.1" @@ -11747,14 +11468,14 @@ reflect.ownkeys@^0.2.0: resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= -refractor@^2.4.1: - version "2.10.1" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-2.10.1.tgz#166c32f114ed16fd96190ad21d5193d3afc7d34e" - integrity sha512-Xh9o7hQiQlDbxo5/XkOX6H+x/q8rmlmZKr97Ie1Q8ZM32IRRd3B/UxuA/yXDW79DBSXGWxm2yRTbcTVmAciJRw== +refractor@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.2.0.tgz#bc46f7cfbb6adbf45cd304e8e299b7fa854804e0" + integrity sha512-hSo+EyMIZTLBvNNgIU5lW4yjCzNYMZ4dcEhBq/3nReGfqzd2JfVhdlPDfU9rEsgcAyWx+OimIIUoL4ZU7NtYHQ== dependencies: - hastscript "^5.0.0" - parse-entities "^1.1.2" - prismjs "~1.17.0" + hastscript "^6.0.0" + parse-entities "^2.0.0" + prismjs "~1.22.0" regenerate-unicode-properties@^8.2.0: version "8.2.0" @@ -11764,11 +11485,11 @@ regenerate-unicode-properties@^8.2.0: regenerate "^1.4.0" regenerate@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" - integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== @@ -11788,12 +11509,12 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regex-parser@2.2.10: - version "2.2.10" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" - integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: +regexp.prototype.flags@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== @@ -11806,7 +11527,7 @@ regexpp@^3.0.0, regexpp@^3.1.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== -regexpu-core@^4.7.0: +regexpu-core@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== @@ -11856,21 +11577,21 @@ remark-footnotes@2.0.0: resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f" integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== -remark-mdx@1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.18.tgz#d8c76017c95824cc7fb853bb2759add8ba0cf319" - integrity sha512-xNhjv4kJZ8L6RV68yK8fQ6XWlvSIFOE5VPmM7wMKSwkvwBu6tlUJy0gRF2WiZ4fPPOj6jpqlVB9QakipvZuEqg== +remark-mdx@1.6.22: + version "1.6.22" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd" + integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ== dependencies: - "@babel/core" "7.11.6" + "@babel/core" "7.12.9" "@babel/helper-plugin-utils" "7.10.4" - "@babel/plugin-proposal-object-rest-spread" "7.11.0" - "@babel/plugin-syntax-jsx" "7.10.4" - "@mdx-js/util" "1.6.18" + "@babel/plugin-proposal-object-rest-spread" "7.12.1" + "@babel/plugin-syntax-jsx" "7.12.1" + "@mdx-js/util" "1.6.22" is-alphabetical "1.0.4" remark-parse "8.0.3" unified "9.2.0" -remark-parse@8.0.3, remark-parse@^8.0.0: +remark-parse@8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1" integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== @@ -11892,6 +11613,13 @@ remark-parse@8.0.3, remark-parse@^8.0.0: vfile-location "^3.0.0" xtend "^4.0.1" +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" + integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== + dependencies: + mdast-util-from-markdown "^0.8.0" + remark-slug@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.0.0.tgz#2b54a14a7b50407a5e462ac2f376022cce263e2c" @@ -11908,50 +11636,37 @@ remark-squeeze-paragraphs@4.0.0: dependencies: mdast-squeeze-paragraphs "^4.0.0" -remark-stringify@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.1.1.tgz#e2a9dc7a7bf44e46a155ec78996db896780d8ce5" - integrity sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A== +remark-stringify@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-9.0.0.tgz#8ba0c9e4167c42733832215a81550489759e3793" + integrity sha512-8x29DpTbVzEc6Dwb90qhxCtbZ6hmj3BxWWDpMhA+1WM4dOEGH5U5/GFe3Be5Hns5MvPSFAr1e2KSVtKZkK5nUw== dependencies: - ccount "^1.0.0" - is-alphanumeric "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - longest-streak "^2.0.1" - markdown-escapes "^1.0.0" - markdown-table "^2.0.0" - mdast-util-compact "^2.0.0" - parse-entities "^2.0.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - stringify-entities "^3.0.0" - unherit "^1.0.4" - xtend "^4.0.1" + mdast-util-to-markdown "^0.5.0" -remark@^12.0.0: - version "12.0.1" - resolved "https://registry.yarnpkg.com/remark/-/remark-12.0.1.tgz#f1ddf68db7be71ca2bad0a33cd3678b86b9c709f" - integrity sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw== +remark@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425" + integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA== dependencies: - remark-parse "^8.0.0" - remark-stringify "^8.0.0" - unified "^9.0.0" + remark-parse "^9.0.0" + remark-stringify "^9.0.0" + unified "^9.1.0" remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== +renderkid@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.4.tgz#d325e532afb28d3f8796ffee306be8ffd6fc864c" + integrity sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g== dependencies: css-select "^1.1.0" dom-converter "^0.2" htmlparser2 "^3.3.0" + lodash "^4.17.20" strip-ansi "^3.0.0" - utila "^0.4.0" repeat-element@^1.1.2: version "1.1.3" @@ -12042,12 +11757,12 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url-loader@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" - integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== +resolve-url-loader@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" + integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== dependencies: - adjust-sourcemap-loader "2.0.0" + adjust-sourcemap-loader "3.0.0" camelcase "5.3.1" compose-function "3.0.3" convert-source-map "1.7.0" @@ -12063,19 +11778,12 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== dependencies: - path-parse "^1.0.6" - -resolve@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== - dependencies: - is-core-module "^2.0.0" + is-core-module "^2.1.0" path-parse "^1.0.6" restore-cursor@^3.1.0: @@ -12157,9 +11865,9 @@ run-async@^2.2.0, run-async@^2.4.0: integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + version "1.1.10" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" + integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -12217,18 +11925,18 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-loader@10.0.2: - version "10.0.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.2.tgz#c7b73010848b264792dd45372eea0b87cba4401e" - integrity sha512-wV6NDUVB8/iEYMalV/+139+vl2LaRFlZGEd5/xmdcdzQcgmis+npyco6NsDTVOlNA3y2NV9Gcz+vHyFMIT+ffg== +sass-loader@10.0.5: + version "10.0.5" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.5.tgz#f53505b5ddbedf43797470ceb34066ded82bb769" + integrity sha512-2LqoNPtKkZq/XbXNQ4C64GFEleSEHKv6NPSI+bMC/l+jpEXGJhiRYkAQToO24MR7NU4JRY2RpLpJ/gjo2Uf13w== dependencies: - klona "^2.0.3" + klona "^2.0.4" loader-utils "^2.0.0" neo-async "^2.6.2" - schema-utils "^2.7.1" + schema-utils "^3.0.0" semver "^7.3.2" -sax@^1.2.4, sax@~1.2.4: +sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -12288,25 +11996,22 @@ select@^1.1.2: resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== semver@7.x, semver@^7.2.1, semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" semver@^6.0.0, semver@^6.3.0: version "6.3.0" @@ -12339,6 +12044,13 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serve-favicon@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0" @@ -12365,6 +12077,11 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-cookie-parser@^2.4.6: + version "2.4.6" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.4.6.tgz#43bdea028b9e6f176474ee5298e758b4a44799c3" + integrity sha512-mNCnTUF0OYPwYzSHbdRdCfNNHqrne+HS5tS5xNb6yJbdP9wInV0q5xPLE0EyfV/Q3tImo3y/OXpD8Jn0Jtnjrg== + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -12393,21 +12110,26 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== +sharp@0.26.2: + version "0.26.2" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.26.2.tgz#3d5777d246ae32890afe82a783c1cbb98456a88c" + integrity sha512-bGBPCxRAvdK9bX5HokqEYma4j/Q5+w8Nrmb2/sfgQCLEUx/HblcpmOfp59obL3+knIKnOhyKmDb4tEOhvFlp6Q== + dependencies: + color "^3.1.2" + detect-libc "^1.0.3" + node-addon-api "^3.0.2" + npmlog "^4.1.2" + prebuild-install "^5.3.5" + semver "^7.3.2" + simple-get "^4.0.0" + tar-fs "^2.1.0" + tunnel-agent "^0.6.0" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -12437,7 +12159,7 @@ shell-quote@1.7.2, shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -shelljs@^0.8.3: +shelljs@^0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== @@ -12451,7 +12173,7 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== -side-channel@^1.0.2: +side-channel@^1.0.2, side-channel@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" integrity sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g== @@ -12464,7 +12186,37 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -sisteransi@^1.0.4: +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" + integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== + dependencies: + decompress-response "^4.2.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-get@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.0.tgz#73fa628278d21de83dadd5512d2cc1f4872bd675" + integrity sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== @@ -12537,10 +12289,10 @@ sort-object-keys@^1.1.3: resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== -sort-package-json@1.46.1: - version "1.46.1" - resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-1.46.1.tgz#b7812bb53ec34ca69ac0ad920e31193fd983015c" - integrity sha512-jUkuCxcXCZD31eIJ/Zza62LRP0lzd4LNkY0z0q1kDSvfBfCmPotrHPXVrz6WTppbGeM2JzNyyARQLUEnK4dUyg== +sort-package-json@1.48.0: + version "1.48.0" + resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-1.48.0.tgz#476043cdde65346900296d5035a0b20560c954e5" + integrity sha512-VAC5THvyGFQFeVLbKcGNPzny5u/heOwks9tzTTLvL8nX9v7zZjpx36/itcJtqp8gI+r57Rw1RVYT6Ecy+3N6+Q== dependencies: detect-indent "^6.0.0" detect-newline "3.1.0" @@ -12549,7 +12301,7 @@ sort-package-json@1.46.1: is-plain-obj "2.1.0" sort-object-keys "^1.1.3" -source-list-map@^2.0.0: +source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== @@ -12565,15 +12317,7 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -12591,7 +12335,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@0.7.3, source-map@^0.7.3: +source-map@0.7.3, source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -12635,9 +12379,9 @@ spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" - integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== specificity@^0.4.1: version "0.4.1" @@ -12691,17 +12435,24 @@ stable@^0.1.8: integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== - -stack-utils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.4.tgz#4b600971dcfc6aed0cbdf2a8268177cc916c87c8" + integrity sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w== dependencies: escape-string-regexp "^2.0.0" +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== + stacktrace-parser@0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -12826,56 +12577,60 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: strip-ansi "^6.0.0" "string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" - integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + version "4.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a" + integrity sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0" + es-abstract "^1.18.0-next.1" has-symbols "^1.0.1" internal-slot "^1.0.2" regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" + side-channel "^1.0.3" string.prototype.padend@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" - integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.1.tgz#824c84265dbac46cade2b957b38b6a5d8d1683c5" + integrity sha512-eCzTASPnoCr5Ht+Vn1YXgm8SB015hHKgEIMu9Nr9bQmLhRBxKRfmzSj/IQsxDFc8JInJDDFA0qXwK+xxI7wDkg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" string.prototype.padstart@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.1.0.tgz#b47c087540d0710be5a49375751a0a627bd4ff90" - integrity sha512-envqZvUp2JItI+OeQ5UAh1ihbAV5G/2bixTojvlIa090GGqF+NQRxbWb2nv9fTGrZABv6+pE6jXoAZhhS2k4Hw== + version "3.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.padstart/-/string.prototype.padstart-3.1.1.tgz#5a1ce79d21899073f630895cb9c7ce7f5acf51d6" + integrity sha512-kcFjKhQYg40AK9MITCWYr/vIebruAD01sc/fxi8szHJaEG7Rke4XHw6LU9c1VWXh/+J/PxvWLLf/aIAGKhXkAQ== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" string.prototype.trim@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.2.tgz#f538d0bacd98fc4297f0bef645226d5aaebf59f3" - integrity sha512-b5yrbl3BXIjHau9Prk7U0RRYcUYdN4wGSVaqoBQS50CCE3KBuYU0TYRNPFCP7aVoNMX87HKThdMRVIP3giclKg== + version "1.2.3" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz#d23a22fde01c1e6571a7fadcb9be11decd8061a7" + integrity sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.18.0-next.0" + es-abstract "^1.18.0-next.1" string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" @@ -12891,17 +12646,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-entities@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.0.1.tgz#32154b91286ab0869ab2c07696223bd23b6dbfc0" - integrity sha512-Lsk3ISA2++eJYqBMPKcr/8eby1I6L0gP0NlxF8Zja6c05yr/yCYyb2c9PwXjd08Ib3If1vn1rbs1H5ZtVuOfvQ== - dependencies: - character-entities-html4 "^1.0.0" - character-entities-legacy "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.2" - is-hexadecimal "^1.0.0" - strip-ansi@6.0.0, strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -12962,6 +12706,11 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + style-loader@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" @@ -12990,10 +12739,10 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -styled-components@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.2.0.tgz#6dcb5aa8a629c84b8d5ab34b7167e3e0c6f7ed74" - integrity sha512-9qE8Vgp8C5cpGAIdFaQVAl89Zgx1TDM4Yf4tlHbO9cPijtpSXTMLHy9lmP0lb+yImhgPFb1AmZ1qMUubmg3HLg== +styled-components@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.2.1.tgz#6ed7fad2dc233825f64c719ffbdedd84ad79101a" + integrity sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/traverse" "^7.4.5" @@ -13006,10 +12755,10 @@ styled-components@^5.2.0: shallowequal "^1.1.0" supports-color "^5.5.0" -styled-jsx@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.3.0.tgz#32335c1a3ecfc923ba4f9c056eeb3d4699006b09" - integrity sha512-sh8BI5eGKyJlwL4kNXHjb27/a/GJV8wP4ElRIkRXrGW3sHKOsY9Pa1VZRNxyvf3+lisdPwizD9JDkzVO9uGwZw== +styled-jsx@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.3.2.tgz#2474601a26670a6049fb4d3f94bd91695b3ce018" + integrity sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g== dependencies: "@babel/types" "7.8.3" babel-plugin-syntax-jsx "6.18.0" @@ -13059,22 +12808,22 @@ stylelint-processor-styled-components@^1.10.0: micromatch "^4.0.2" postcss "^7.0.26" -stylelint@^13.7.2: - version "13.7.2" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.7.2.tgz#6f3c58eea4077680ed0ceb0d064b22b100970486" - integrity sha512-mmieorkfmO+ZA6CNDu1ic9qpt4tFvH2QUB7vqXgrMVHe5ENU69q7YDq0YUg/UHLuCsZOWhUAvcMcLzLDIERzSg== +stylelint@^13.8.0: + version "13.8.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.8.0.tgz#446765dbe25e3617f819a0165956faf2563ddc23" + integrity sha512-iHH3dv3UI23SLDrH4zMQDjLT9/dDIz/IpoFeuNxZmEx86KtfpjDOscxLTFioQyv+2vQjPlRZnK0UoJtfxLICXQ== dependencies: "@stylelint/postcss-css-in-js" "^0.37.2" - "@stylelint/postcss-markdown" "^0.36.1" + "@stylelint/postcss-markdown" "^0.36.2" autoprefixer "^9.8.6" balanced-match "^1.0.0" chalk "^4.1.0" cosmiconfig "^7.0.0" - debug "^4.1.1" + debug "^4.2.0" execall "^2.0.0" fast-glob "^3.2.4" fastest-levenshtein "^1.0.12" - file-entry-cache "^5.0.1" + file-entry-cache "^6.0.0" get-stdin "^8.0.0" global-modules "^2.0.0" globby "^11.0.1" @@ -13083,14 +12832,14 @@ stylelint@^13.7.2: ignore "^5.1.8" import-lazy "^4.0.0" imurmurhash "^0.1.4" - known-css-properties "^0.19.0" + known-css-properties "^0.20.0" lodash "^4.17.20" log-symbols "^4.0.0" mathml-tag-names "^2.1.3" - meow "^7.1.1" + meow "^8.0.0" micromatch "^4.0.2" normalize-selector "^0.2.0" - postcss "^7.0.32" + postcss "^7.0.35" postcss-html "^0.36.0" postcss-less "^3.1.4" postcss-media-query-parser "^0.2.3" @@ -13098,7 +12847,7 @@ stylelint@^13.7.2: postcss-safe-parser "^4.0.2" postcss-sass "^0.4.4" postcss-scss "^2.1.1" - postcss-selector-parser "^6.0.2" + postcss-selector-parser "^6.0.4" postcss-syntax "^0.36.2" postcss-value-parser "^4.1.0" resolve-from "^5.0.0" @@ -13109,8 +12858,8 @@ stylelint@^13.7.2: style-search "^0.1.0" sugarss "^2.0.0" svg-tags "^1.0.0" - table "^6.0.1" - v8-compile-cache "^2.1.1" + table "^6.0.3" + v8-compile-cache "^2.2.0" write-file-atomic "^3.0.3" stylis-rule-sheet@0.0.10: @@ -13164,47 +12913,25 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -svg-parser@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= -svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - symbol-tree@^3.2.2, symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== symbol.prototype.description@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/symbol.prototype.description/-/symbol.prototype.description-1.0.2.tgz#f325e1e6ad534b3b29c9c3ca73c136c9ce03c5e2" - integrity sha512-2CW5SU4/Ki1cYOOHcL2cXK4rxSg5hCU1TwZ7X4euKhV9VnfqKslh7T6/UyKkubA8cq2tOmsOv7m3ZUmQslBRuw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/symbol.prototype.description/-/symbol.prototype.description-1.0.3.tgz#5b0eb61595bca6945da95ec7696a25e55aa1eca6" + integrity sha512-NvwWb5AdyTtmFNa1x0ksJakFUV/WJ+z7iRrYGU1xZew77Qd+kMrZKsk3uatCckk6yPNpbHhRcOO+JBU+ohcMBw== dependencies: - es-abstract "^1.17.0-next.1" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" table@^5.2.3: version "5.4.6" @@ -13216,10 +12943,10 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -table@^6.0.1: - version "6.0.3" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.3.tgz#e5b8a834e37e27ad06de2e0fda42b55cfd8a0123" - integrity sha512-8321ZMcf1B9HvVX/btKv8mMZahCjn2aYrDlpqHaBFCfnox64edeH9kEid0vTLTRR8gWR2A20aDgeuTTea4sVtw== +table@^6.0.3: + version "6.0.4" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.4.tgz#c523dd182177e926c723eb20e1b341238188aa0d" + integrity sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw== dependencies: ajv "^6.12.4" lodash "^4.17.20" @@ -13231,6 +12958,32 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tapable@^2.0.0, tapable@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.1.1.tgz#b01cc1902d42a7bb30514e320ce21c456f72fd3f" + integrity sha512-Wib1S8m2wdpLbmQz0RBEVosIyvb/ykfKXf3ZIDqvWoMg/zTNm6G/tDSuUM61J1kNCDXWJrLHGSFeMhAG+gAGpQ== + +tar-fs@^2.0.0, tar-fs@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa" + integrity sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar@^6.0.2: version "6.0.5" resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" @@ -13244,9 +12997,9 @@ tar@^6.0.2: yallist "^4.0.0" telejson@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-5.0.2.tgz#ed1e64be250cc1c757a53c19e1740b49832b3d51" - integrity sha512-XCrDHGbinczsscs8LXFr9jDhvy37yBk9piB7FJrCfxE8oP66WDkolNMpaBkWYgQqB9dQGBGtTDzGQPedc9KJmw== + version "5.1.0" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-5.1.0.tgz#cc04e4c2a355f9eb6af557e37acd6449feb1d146" + integrity sha512-Yy0N2OV0mosmr1SCZEm3Ezhu/oi5Dbao5RqauZu4+VI5I/XtVBHXajRk0txuqbFYtKdzzWGDZFGSif9ovVLjEA== dependencies: "@types/is-function" "^1.0.0" global "^4.4.0" @@ -13254,13 +13007,13 @@ telejson@^5.0.2: is-regex "^1.1.1" is-symbol "^1.0.3" isobject "^4.0.0" - lodash "^4.17.19" + lodash "^4.17.20" memoizerific "^1.11.3" term-size@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== terminal-link@^2.0.0: version "2.1.1" @@ -13300,7 +13053,28 @@ terser-webpack-plugin@^3.0.0: terser "^4.8.0" webpack-sources "^1.4.3" -terser@4.8.0, terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: +terser-webpack-plugin@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.0.3.tgz#ec60542db2421f45735c719d2e17dabfbb2e3e42" + integrity sha512-zFdGk8Lh9ZJGPxxPE6jwysOlATWB8GMW8HcfGULWA/nPal+3VdATflQvSBSLQJRCmYZnfFJl6vkRTiwJGNgPiQ== + dependencies: + jest-worker "^26.6.1" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.8" + +terser@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.1.0.tgz#1f4ab81c8619654fdded51f3157b001e1747281d" + integrity sha512-pwC1Jbzahz1ZPU87NQ8B3g5pKbhyJSiHih4gLH6WZiPU8mmS1IlGbB0A2Nuvkj/LCNsgIKctg6GkYwWCeTvXZQ== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -13309,6 +13083,15 @@ terser@4.8.0, terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.3.8: + version "5.5.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" + integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -13357,9 +13140,9 @@ through@^2.3.6: integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: setimmediate "^1.0.4" @@ -13498,9 +13281,9 @@ trim-newlines@^3.0.0: integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== trim-trailing-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" - integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== + version "1.1.4" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" + integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== trim@0.0.1: version "0.0.1" @@ -13512,22 +13295,21 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -ts-dedent@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-1.2.0.tgz#6aa2229d837159bb6d635b6b233002423b91e0b0" - integrity sha512-6zSJp23uQI+Txyz5LlXMXAHpUhY4Hi0oluXny0OgIR7g/Cromq4vDBnhtbBdyIV34g0pgwxUvnvg+jLJe4c1NA== +ts-dedent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.0.0.tgz#47c5eb23d9096f3237cc413bc82d387d36dbe690" + integrity sha512-DfxKjSFQfw9+uf7N9Cy8Ebx9fv5fquK4hZ6SD3Rzr+1jKP6AVA6H8+B5457ZpUs0JKsGpGqIevbpZ9DMQJDp1A== ts-essentials@^2.0.3: version "2.0.12" resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== -ts-jest@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.4.2.tgz#00b6c970bee202ceef7c6e6e9805c4837b22dab8" - integrity sha512-0+MynTTzzbuy5rGjzsCKjxHJk5gY906c/FSaqQ3081+G7dp2Yygfa9hVlbrtNNcztffh1mC6Rs9jb/yHpcjsoQ== +ts-jest@^26.4.4: + version "26.4.4" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.4.4.tgz#61f13fb21ab400853c532270e52cc0ed7e502c49" + integrity sha512-3lFWKbLxJm34QxyVNNCgXX1u4o/RV0myvA2y2Bxm46iGIjKlaY0own9gIckbjZJPn+WaJEnfPPJ20HHGpoq4yg== dependencies: - "@jest/create-cache-key-function" "^26.5.0" "@types/jest" "26.x" bs-logger "0.x" buffer-from "1.x" @@ -13540,6 +13322,17 @@ ts-jest@^26.4.2: semver "7.x" yargs-parser "20.x" +ts-loader@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.11.tgz#35d58a65932caacb120426eea59eca841786c899" + integrity sha512-06X+mWA2JXoXJHYAesUUL4mHFYhnmyoCdQVMXofXF552Lzd4wNwSGg7unJpttqUP7ziaruM8d7u8LUB6I1sgzA== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + loader-utils "^1.0.2" + micromatch "^4.0.0" + semver "^6.0.0" + ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" @@ -13564,27 +13357,15 @@ tsconfig-paths@^3.4.0, tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@^1.10.0, tslib@^1.9.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.0.tgz#d624983f3e2c5e0b55307c3dd6c86acd737622c6" - integrity sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw== +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^1.8.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tslib@^2.0.0, tslib@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.2.tgz#462295631185db44b21b1ea3615b63cd1c038242" - integrity sha512-wAH28hcEKwna96/UacuWaVspVLkg4x1aDM9JlzqaQTOFczCktkVAb5fmXChgandR1EraDPs2w8P+ozM+oafwxg== - -tsutils@2.27.2: - version "2.27.2" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7" - integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg== - dependencies: - tslib "^1.8.1" +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" + integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== tsutils@^3.17.1: version "3.17.1" @@ -13634,10 +13415,10 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== type-fest@^0.6.0: version "0.6.0" @@ -13672,11 +13453,6 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== -typed-styles@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" - integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q== - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -13689,12 +13465,12 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5" - integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg== +typescript@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" + integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== -unfetch@^4.1.0: +unfetch@^4.1.0, unfetch@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== @@ -13730,7 +13506,7 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== -unified@9.2.0, unified@^9.0.0: +unified@9.2.0, unified@^9.1.0: version "9.2.0" resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== @@ -13776,22 +13552,22 @@ unist-builder@2.0.3, unist-builder@^2.0.0: resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== -unist-util-find-all-after@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz#95cc62f48812d879b4685a0512bf1b838da50e9a" - integrity sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw== +unist-util-find-all-after@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6" + integrity sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ== dependencies: unist-util-is "^4.0.0" unist-util-generated@^1.0.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.5.tgz#1e903e68467931ebfaea386dae9ea253628acd42" - integrity sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw== + version "1.1.6" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" + integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== unist-util-is@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.2.tgz#c7d1341188aa9ce5b3cff538958de9895f14a5de" - integrity sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ== + version "4.0.4" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.4.tgz#3e9e8de6af2eb0039a59f50c9b3e99698a924f50" + integrity sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA== unist-util-position@^3.0.0: version "3.1.0" @@ -13806,9 +13582,9 @@ unist-util-remove-position@^2.0.0: unist-util-visit "^2.0.0" unist-util-remove@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.0.tgz#32c2ad5578802f2ca62ab808173d505b2c898488" - integrity sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g== + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.1.tgz#fa13c424ff8e964f3aa20d1098b9a690c6bfaa39" + integrity sha512-YtuetK6o16CMfG+0u4nndsWpujgsHDHHLyE0yGpJLLn5xSjKeyGyzEBOI2XbmoUHCYabmNgX52uxlWoQhcvR7Q== dependencies: unist-util-is "^4.0.0" @@ -13820,9 +13596,9 @@ unist-util-stringify-position@^2.0.0: "@types/unist" "^2.0.2" unist-util-visit-parents@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz#4dd262fb9dcfe44f297d53e882fc6ff3421173d5" - integrity sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw== + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== dependencies: "@types/unist" "^2.0.0" unist-util-is "^4.0.0" @@ -13841,12 +13617,17 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@^1.1.0, unquote@~1.1.1: +unquote@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= @@ -13894,28 +13675,28 @@ url@^0.11.0: querystring "0.2.0" use-composed-ref@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.0.0.tgz#bb13e8f4a0b873632cde4940abeb88b92d03023a" - integrity sha512-RVqY3NFNjZa0xrmK3bIMWNmQ01QjKPDc7DeWR3xa/N8aliVppuutOE5bZzPkQfvL+5NRWMMp0DJ99Trd974FIw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.1.0.tgz#9220e4e94a97b7b02d7d27eaeab0b37034438bbc" + integrity sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg== dependencies: ts-essentials "^2.0.3" use-isomorphic-layout-effect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.0.0.tgz#f56b4ed633e1c21cd9fc76fe249002a1c28989fb" - integrity sha512-JMwJ7Vd86NwAt1jH7q+OIozZSIxA4ND0fx6AsOe2q1H8ooBUp5aN6DvVCqZiIaYU6JaMRJGyR0FO7EBCIsb/Rg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.0.tgz#4db2111e0d53ca694187ea5fd5cb2ba610286fe0" + integrity sha512-kady5Z1O1qx5RitodCCKbpJSVEtECXYcnBnb5Q48Bz5V6gBmTu85ZcGdVwVFs8+DaOurNb/L5VdGHoQRMknghw== use-latest@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.1.0.tgz#7bf9684555869c3f5f37e10d0884c8accf4d3aa6" - integrity sha512-gF04d0ZMV3AMB8Q7HtfkAWe+oq1tFXP6dZKwBHQF5nVXtGsh2oAYeeqma5ZzxtlpOcW8Ro/tLcfmEodjDeqtuw== + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.0.tgz#a44f6572b8288e0972ec411bdd0840ada366f232" + integrity sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw== dependencies: use-isomorphic-layout-effect "^1.0.0" -use-subscription@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.4.1.tgz#edcbcc220f1adb2dd4fa0b2f61b6cc308e620069" - integrity sha512-7+IIwDG/4JICrWHL/Q/ZPK5yozEnvRm6vHImu0LKwQlmWGKeiF7mbAenLlK/cTNXrTtXHU/SFASQHzB6+oSJMQ== +use-subscription@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" + integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== dependencies: object-assign "^4.1.1" @@ -13937,7 +13718,7 @@ util.promisify@1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== @@ -13961,7 +13742,7 @@ util@^0.11.0: dependencies: inherits "2.0.3" -utila@^0.4.0, utila@~0.4: +utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= @@ -13986,15 +13767,15 @@ uuid@^8.0.0, uuid@^8.3.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== +v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== -v8-to-istanbul@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-6.0.1.tgz#7ef0e32faa10f841fe4c1b0f8de96ed067c0be1e" - integrity sha512-PzM1WlqquhBvsV+Gco6WSFeg1AGdD53ccMRkFeyHRE/KRZaVacPOmQYP3EeVgDBtKD2BJ8kgynBQ5OtKiHCH+w== +v8-to-istanbul@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" + integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -14022,10 +13803,10 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vfile-location@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.1.0.tgz#81cd8a04b0ac935185f4fce16f270503fc2f692f" - integrity sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g== +vfile-location@^3.0.0, vfile-location@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c" + integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA== vfile-message@^2.0.0: version "2.0.4" @@ -14079,10 +13860,10 @@ warning@^4.0.2, warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== dependencies: chokidar "^2.1.8" @@ -14095,26 +13876,29 @@ watchpack@2.0.0-beta.13: graceful-fs "^4.1.2" watchpack@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" - integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== dependencies: graceful-fs "^4.1.2" neo-async "^2.5.0" optionalDependencies: chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.0" + watchpack-chokidar2 "^2.0.1" + +watchpack@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.0.1.tgz#2f2192c542c82a3bcde76acd3411470c120426a8" + integrity sha512-vO8AKGX22ZRo6PiOFM9dC0re8IcKh8Kd/aH2zeqUc6w4/jBGlTy2P7fTC6ekT0NjVeGjgU2dGC5rNstKkeLEQg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" web-namespaces@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== -web-vitals@0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-0.2.4.tgz#ec3df43c834a207fd7cdefd732b2987896e08511" - integrity sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg== - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -14141,6 +13925,11 @@ webpack-dev-middleware@^3.7.0: range-parser "^1.2.1" webpack-log "^2.0.0" +webpack-filter-warnings-plugin@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz#dc61521cf4f9b4a336fbc89108a75ae1da951cdb" + integrity sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg== + webpack-hot-middleware@^2.25.0: version "2.25.0" resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" @@ -14177,6 +13966,14 @@ webpack-sources@1.4.3, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-s source-list-map "^2.0.0" source-map "~0.6.1" +webpack-sources@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" + integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + webpack-virtual-modules@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" @@ -14213,7 +14010,7 @@ webpack@4.44.1: watchpack "^1.7.4" webpack-sources "^1.4.1" -webpack@^4.43.0: +webpack@^4.44.2: version "4.44.2" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== @@ -14242,6 +14039,36 @@ webpack@^4.43.0: watchpack "^1.7.4" webpack-sources "^1.4.1" +webpack@^5.9.0: + version "5.9.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.9.0.tgz#af2e9cf9d6c7867cdcf214ea3bb5eb77aece6895" + integrity sha512-YnnqIV/uAS5ZrNpctSv378qV7HmbJ74DL+XfvMxzbX1bV9e7eeT6eEWU4wuUw33CNr/HspBh7R/xQlVjTEyAeA== + dependencies: + "@types/eslint-scope" "^3.7.0" + "@types/estree" "^0.0.45" + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^8.0.4" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.3.1" + eslint-scope "^5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.4" + json-parse-better-errors "^1.0.2" + loader-runner "^4.1.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + pkg-dir "^4.2.0" + schema-utils "^3.0.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.0.3" + watchpack "^2.0.0" + webpack-sources "^2.1.1" + whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -14286,6 +14113,11 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -14381,9 +14213,9 @@ ws@^5.2.0: async-limiter "~1.0.0" ws@^7.2.3: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + version "7.4.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7" + integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ== xml-name-validator@^3.0.0: version "3.0.0" @@ -14401,9 +14233,9 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== yallist@^3.0.2: version "3.1.1" @@ -14420,12 +14252,12 @@ yaml@^1.10.0, yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@20.x: - version "20.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.1.tgz#28f3773c546cdd8a69ddae68116b48a5da328e77" - integrity sha512-yYsjuSkjbLMBp16eaOt7/siKTjNVjMm3SoJnIg3sEh/JsvqVVDyjRKmaJV4cl+lNIgq6QEco2i3gDebJl7/vLA== +yargs-parser@20.x, yargs-parser@^20.2.3: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^18.1.2, yargs-parser@^18.1.3: +yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -14450,6 +14282,11 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"