mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
chore: replace eslint with biome (#14263)
This commit is contained in:
committed by
GitHub
parent
7b09d98238
commit
d15f16fa2e
@ -7,7 +7,7 @@ trim_trailing_whitespace = true
|
|||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
|
|
||||||
[*.{md,json,yaml,yml,tf,tfvars,nix}]
|
[*.{md,yaml,yml,tf,tfvars,nix}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
@ -79,19 +79,13 @@ result
|
|||||||
# by Prettier.
|
# by Prettier.
|
||||||
helm/**/templates/*.yaml
|
helm/**/templates/*.yaml
|
||||||
|
|
||||||
# Terraform state files used in tests, these are automatically generated.
|
|
||||||
# Example: provisioner/terraform/testdata/instance-id/instance-id.tfstate.json
|
|
||||||
**/testdata/**/*.tf*.json
|
|
||||||
|
|
||||||
# Testdata shouldn't be formatted.
|
# Testdata shouldn't be formatted.
|
||||||
scripts/apitypings/testdata/**/*.ts
|
testdata/
|
||||||
enterprise/tailnet/testdata/*.golden.html
|
|
||||||
tailnet/testdata/*.golden.html
|
|
||||||
|
|
||||||
# Generated files shouldn't be formatted.
|
|
||||||
site/e2e/provisionerGenerated.ts
|
|
||||||
|
|
||||||
|
# Ignore generated files
|
||||||
**/pnpm-lock.yaml
|
**/pnpm-lock.yaml
|
||||||
|
|
||||||
# Ignore generated JSON (e.g. examples/examples.gen.json).
|
|
||||||
**/*.gen.json
|
**/*.gen.json
|
||||||
|
|
||||||
|
# Everything in site/ is formatted by Biome. For the rest of the repo though, we
|
||||||
|
# need broader language support.
|
||||||
|
site/
|
||||||
|
@ -2,19 +2,13 @@
|
|||||||
# by Prettier.
|
# by Prettier.
|
||||||
helm/**/templates/*.yaml
|
helm/**/templates/*.yaml
|
||||||
|
|
||||||
# Terraform state files used in tests, these are automatically generated.
|
|
||||||
# Example: provisioner/terraform/testdata/instance-id/instance-id.tfstate.json
|
|
||||||
**/testdata/**/*.tf*.json
|
|
||||||
|
|
||||||
# Testdata shouldn't be formatted.
|
# Testdata shouldn't be formatted.
|
||||||
scripts/apitypings/testdata/**/*.ts
|
testdata/
|
||||||
enterprise/tailnet/testdata/*.golden.html
|
|
||||||
tailnet/testdata/*.golden.html
|
|
||||||
|
|
||||||
# Generated files shouldn't be formatted.
|
|
||||||
site/e2e/provisionerGenerated.ts
|
|
||||||
|
|
||||||
|
# Ignore generated files
|
||||||
**/pnpm-lock.yaml
|
**/pnpm-lock.yaml
|
||||||
|
|
||||||
# Ignore generated JSON (e.g. examples/examples.gen.json).
|
|
||||||
**/*.gen.json
|
**/*.gen.json
|
||||||
|
|
||||||
|
# Everything in site/ is formatted by Biome. For the rest of the repo though, we
|
||||||
|
# need broader language support.
|
||||||
|
site/
|
||||||
|
4
.vscode/extensions.json
vendored
4
.vscode/extensions.json
vendored
@ -9,7 +9,7 @@
|
|||||||
"zxh404.vscode-proto3",
|
"zxh404.vscode-proto3",
|
||||||
"redhat.vscode-yaml",
|
"redhat.vscode-yaml",
|
||||||
"streetsidesoftware.code-spell-checker",
|
"streetsidesoftware.code-spell-checker",
|
||||||
"dbaeumer.vscode-eslint",
|
"EditorConfig.EditorConfig",
|
||||||
"EditorConfig.EditorConfig"
|
"biomejs.biome"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
14
.vscode/settings.json
vendored
14
.vscode/settings.json
vendored
@ -190,7 +190,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"eslint.workingDirectories": ["./site"],
|
|
||||||
"search.exclude": {
|
"search.exclude": {
|
||||||
"**.pb.go": true,
|
"**.pb.go": true,
|
||||||
"**/*.gen.json": true,
|
"**/*.gen.json": true,
|
||||||
@ -224,5 +223,16 @@
|
|||||||
// with VS Code.
|
// with VS Code.
|
||||||
"typescript.tsdk": "./site/node_modules/typescript/lib",
|
"typescript.tsdk": "./site/node_modules/typescript/lib",
|
||||||
// Playwright tests in VSCode will open a browser to live "view" the test.
|
// Playwright tests in VSCode will open a browser to live "view" the test.
|
||||||
"playwright.reuseBrowser": true
|
"playwright.reuseBrowser": true,
|
||||||
|
|
||||||
|
"[javascript][javascriptreact][json][jsonc][typescript][typescriptreact]": {
|
||||||
|
"editor.defaultFormatter": "biomejs.biome"
|
||||||
|
// "editor.codeActionsOnSave": {
|
||||||
|
// "source.organizeImports.biome": "explicit"
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
|
||||||
|
"[css][html][markdown][yaml]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
80
Makefile
80
Makefile
@ -391,7 +391,7 @@ BOLD := $(shell tput bold 2>/dev/null)
|
|||||||
GREEN := $(shell tput setaf 2 2>/dev/null)
|
GREEN := $(shell tput setaf 2 2>/dev/null)
|
||||||
RESET := $(shell tput sgr0 2>/dev/null)
|
RESET := $(shell tput sgr0 2>/dev/null)
|
||||||
|
|
||||||
fmt: fmt/eslint fmt/prettier fmt/terraform fmt/shfmt fmt/go
|
fmt: fmt/ts fmt/go fmt/terraform fmt/shfmt fmt/prettier
|
||||||
.PHONY: fmt
|
.PHONY: fmt
|
||||||
|
|
||||||
fmt/go:
|
fmt/go:
|
||||||
@ -401,15 +401,19 @@ fmt/go:
|
|||||||
go run mvdan.cc/gofumpt@v0.4.0 -w -l .
|
go run mvdan.cc/gofumpt@v0.4.0 -w -l .
|
||||||
.PHONY: fmt/go
|
.PHONY: fmt/go
|
||||||
|
|
||||||
fmt/eslint:
|
fmt/ts:
|
||||||
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/eslint$(RESET)"
|
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/ts$(RESET)"
|
||||||
cd site
|
cd site
|
||||||
pnpm run lint:fix
|
# Avoid writing files in CI to reduce file write activity
|
||||||
.PHONY: fmt/eslint
|
ifdef CI
|
||||||
|
pnpm run check --linter-enabled=false
|
||||||
|
else
|
||||||
|
pnpm run check:fix
|
||||||
|
endif
|
||||||
|
.PHONY: fmt/ts
|
||||||
|
|
||||||
fmt/prettier:
|
fmt/prettier: .prettierignore
|
||||||
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/prettier$(RESET)"
|
echo "$(GREEN)==>$(RESET) $(BOLD)fmt/prettier$(RESET)"
|
||||||
cd site
|
|
||||||
# Avoid writing files in CI to reduce file write activity
|
# Avoid writing files in CI to reduce file write activity
|
||||||
ifdef CI
|
ifdef CI
|
||||||
pnpm run format:check
|
pnpm run format:check
|
||||||
@ -442,7 +446,7 @@ lint/site-icons:
|
|||||||
|
|
||||||
lint/ts:
|
lint/ts:
|
||||||
cd site
|
cd site
|
||||||
pnpm i && pnpm lint
|
pnpm lint
|
||||||
.PHONY: lint/ts
|
.PHONY: lint/ts
|
||||||
|
|
||||||
lint/go:
|
lint/go:
|
||||||
@ -495,9 +499,6 @@ gen: \
|
|||||||
.prettierignore.include \
|
.prettierignore.include \
|
||||||
.prettierignore \
|
.prettierignore \
|
||||||
provisioner/terraform/testdata/version \
|
provisioner/terraform/testdata/version \
|
||||||
site/.prettierrc.yaml \
|
|
||||||
site/.prettierignore \
|
|
||||||
site/.eslintignore \
|
|
||||||
site/e2e/provisionerGenerated.ts \
|
site/e2e/provisionerGenerated.ts \
|
||||||
site/src/theme/icons.json \
|
site/src/theme/icons.json \
|
||||||
examples/examples.gen.json \
|
examples/examples.gen.json \
|
||||||
@ -526,9 +527,6 @@ gen/mark-fresh:
|
|||||||
coderd/apidoc/swagger.json \
|
coderd/apidoc/swagger.json \
|
||||||
.prettierignore.include \
|
.prettierignore.include \
|
||||||
.prettierignore \
|
.prettierignore \
|
||||||
site/.prettierrc.yaml \
|
|
||||||
site/.prettierignore \
|
|
||||||
site/.eslintignore \
|
|
||||||
site/e2e/provisionerGenerated.ts \
|
site/e2e/provisionerGenerated.ts \
|
||||||
site/src/theme/icons.json \
|
site/src/theme/icons.json \
|
||||||
examples/examples.gen.json \
|
examples/examples.gen.json \
|
||||||
@ -603,7 +601,6 @@ provisionerd/proto/provisionerd.pb.go: provisionerd/proto/provisionerd.proto
|
|||||||
site/src/api/typesGenerated.ts: $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go')
|
site/src/api/typesGenerated.ts: $(wildcard scripts/apitypings/*) $(shell find ./codersdk $(FIND_EXCLUSIONS) -type f -name '*.go')
|
||||||
go run ./scripts/apitypings/ > $@
|
go run ./scripts/apitypings/ > $@
|
||||||
./scripts/pnpm_install.sh
|
./scripts/pnpm_install.sh
|
||||||
pnpm exec prettier --write "$@"
|
|
||||||
|
|
||||||
site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisionersdk/proto/provisioner.pb.go
|
site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisionersdk/proto/provisioner.pb.go
|
||||||
cd site
|
cd site
|
||||||
@ -613,7 +610,7 @@ site/e2e/provisionerGenerated.ts: provisionerd/proto/provisionerd.pb.go provisio
|
|||||||
site/src/theme/icons.json: $(wildcard scripts/gensite/*) $(wildcard site/static/icon/*)
|
site/src/theme/icons.json: $(wildcard scripts/gensite/*) $(wildcard site/static/icon/*)
|
||||||
go run ./scripts/gensite/ -icons "$@"
|
go run ./scripts/gensite/ -icons "$@"
|
||||||
./scripts/pnpm_install.sh
|
./scripts/pnpm_install.sh
|
||||||
pnpm exec prettier --write "$@"
|
pnpm -C site/ exec biome format --write src/theme/icons.json
|
||||||
|
|
||||||
examples/examples.gen.json: scripts/examplegen/main.go examples/examples.go $(shell find ./examples/templates)
|
examples/examples.gen.json: scripts/examplegen/main.go examples/examples.go $(shell find ./examples/templates)
|
||||||
go run ./scripts/examplegen/main.go > examples/examples.gen.json
|
go run ./scripts/examplegen/main.go > examples/examples.gen.json
|
||||||
@ -702,23 +699,6 @@ scripts/ci-report/testdata/.gen-golden: $(wildcard scripts/ci-report/testdata/*)
|
|||||||
go test ./scripts/ci-report -run=TestOutputMatchesGoldenFile -update
|
go test ./scripts/ci-report -run=TestOutputMatchesGoldenFile -update
|
||||||
touch "$@"
|
touch "$@"
|
||||||
|
|
||||||
# Generate a prettierrc for the site package that uses relative paths for
|
|
||||||
# overrides. This allows us to share the same prettier config between the
|
|
||||||
# site and the root of the repo.
|
|
||||||
site/.prettierrc.yaml: .prettierrc.yaml
|
|
||||||
. ./scripts/lib.sh
|
|
||||||
dependencies yq
|
|
||||||
|
|
||||||
echo "# Code generated by Makefile (../$<). DO NOT EDIT." > "$@"
|
|
||||||
echo "" >> "$@"
|
|
||||||
|
|
||||||
# Replace all listed override files with relative paths inside site/.
|
|
||||||
# - ./ -> ../
|
|
||||||
# - ./site -> ./
|
|
||||||
yq \
|
|
||||||
'.overrides[].files |= map(. | sub("^./"; "") | sub("^"; "../") | sub("../site/"; "./") | sub("../!"; "!../"))' \
|
|
||||||
"$<" >> "$@"
|
|
||||||
|
|
||||||
# Combine .gitignore with .prettierignore.include to generate .prettierignore.
|
# Combine .gitignore with .prettierignore.include to generate .prettierignore.
|
||||||
.prettierignore: .gitignore .prettierignore.include
|
.prettierignore: .gitignore .prettierignore.include
|
||||||
echo "# Code generated by Makefile ($^). DO NOT EDIT." > "$@"
|
echo "# Code generated by Makefile ($^). DO NOT EDIT." > "$@"
|
||||||
@ -728,40 +708,6 @@ site/.prettierrc.yaml: .prettierrc.yaml
|
|||||||
cat "$$f" >> "$@"
|
cat "$$f" >> "$@"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Generate ignore files based on gitignore into the site directory. We turn all
|
|
||||||
# rules into relative paths for the `site/` directory (where applicable),
|
|
||||||
# following the pattern format defined by git:
|
|
||||||
# https://git-scm.com/docs/gitignore#_pattern_format
|
|
||||||
#
|
|
||||||
# This is done for compatibility reasons, see:
|
|
||||||
# https://github.com/prettier/prettier/issues/8048
|
|
||||||
# https://github.com/prettier/prettier/issues/8506
|
|
||||||
# https://github.com/prettier/prettier/issues/8679
|
|
||||||
site/.eslintignore site/.prettierignore: .prettierignore Makefile
|
|
||||||
rm -f "$@"
|
|
||||||
touch "$@"
|
|
||||||
# Skip generated by header, inherit `.prettierignore` header as-is.
|
|
||||||
while read -r rule; do
|
|
||||||
# Remove leading ! if present to simplify rule, added back at the end.
|
|
||||||
tmp="$${rule#!}"
|
|
||||||
ignore="$${rule%"$$tmp"}"
|
|
||||||
rule="$$tmp"
|
|
||||||
case "$$rule" in
|
|
||||||
# Comments or empty lines (include).
|
|
||||||
\#*|'') ;;
|
|
||||||
# Generic rules (include).
|
|
||||||
\*\**) ;;
|
|
||||||
# Site prefixed rules (include).
|
|
||||||
site/*) rule="$${rule#site/}";;
|
|
||||||
./site/*) rule="$${rule#./site/}";;
|
|
||||||
# Rules that are non-generic and don't start with site (rewrite).
|
|
||||||
/*) rule=.."$$rule";;
|
|
||||||
*/?*) rule=../"$$rule";;
|
|
||||||
*) ;;
|
|
||||||
esac
|
|
||||||
echo "$${ignore}$${rule}" >> "$@"
|
|
||||||
done < "$<"
|
|
||||||
|
|
||||||
test:
|
test:
|
||||||
$(GIT_FLAGS) gotestsum --format standard-quiet -- -v -short -count=1 ./...
|
$(GIT_FLAGS) gotestsum --format standard-quiet -- -v -short -count=1 ./...
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
"@chakra-ui/react": "2.8.2",
|
"@chakra-ui/react": "2.8.2",
|
||||||
"@emotion/react": "11.11.4",
|
"@emotion/react": "11.11.4",
|
||||||
"@emotion/styled": "11.11.5",
|
"@emotion/styled": "11.11.5",
|
||||||
"@types/lodash": "4.14.196",
|
|
||||||
"archiver": "6.0.2",
|
"archiver": "6.0.2",
|
||||||
"framer-motion": "^10.17.6",
|
"framer-motion": "^10.17.6",
|
||||||
"front-matter": "4.0.2",
|
"front-matter": "4.0.2",
|
||||||
@ -36,7 +35,7 @@
|
|||||||
"@types/react-dom": "18.3.0",
|
"@types/react-dom": "18.3.0",
|
||||||
"eslint": "8.56.0",
|
"eslint": "8.56.0",
|
||||||
"eslint-config-next": "14.0.1",
|
"eslint-config-next": "14.0.1",
|
||||||
"prettier": "3.1.0",
|
"prettier": "3.3.3",
|
||||||
"typescript": "5.3.2"
|
"typescript": "5.3.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
427
offlinedocs/pnpm-lock.yaml
generated
427
offlinedocs/pnpm-lock.yaml
generated
@ -10,22 +10,19 @@ importers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/react':
|
'@chakra-ui/react':
|
||||||
specifier: 2.8.2
|
specifier: 2.8.2
|
||||||
version: 2.8.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.3)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)
|
version: 2.8.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@emotion/react':
|
'@emotion/react':
|
||||||
specifier: 11.11.4
|
specifier: 11.11.4
|
||||||
version: 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
version: 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
||||||
'@emotion/styled':
|
'@emotion/styled':
|
||||||
specifier: 11.11.5
|
specifier: 11.11.5
|
||||||
version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)
|
version: 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
|
||||||
'@types/lodash':
|
|
||||||
specifier: 4.14.196
|
|
||||||
version: 4.14.196
|
|
||||||
archiver:
|
archiver:
|
||||||
specifier: 6.0.2
|
specifier: 6.0.2
|
||||||
version: 6.0.2
|
version: 6.0.2
|
||||||
framer-motion:
|
framer-motion:
|
||||||
specifier: ^10.17.6
|
specifier: ^10.17.6
|
||||||
version: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
version: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
front-matter:
|
front-matter:
|
||||||
specifier: 4.0.2
|
specifier: 4.0.2
|
||||||
version: 4.0.2
|
version: 4.0.2
|
||||||
@ -34,7 +31,7 @@ importers:
|
|||||||
version: 4.17.21
|
version: 4.17.21
|
||||||
next:
|
next:
|
||||||
specifier: 14.2.4
|
specifier: 14.2.4
|
||||||
version: 14.2.4(react-dom@18.3.1)(react@18.3.1)
|
version: 14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react:
|
react:
|
||||||
specifier: 18.3.1
|
specifier: 18.3.1
|
||||||
version: 18.3.1
|
version: 18.3.1
|
||||||
@ -54,6 +51,9 @@ importers:
|
|||||||
specifier: 4.0.0
|
specifier: 4.0.0
|
||||||
version: 4.0.0
|
version: 4.0.0
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@types/lodash':
|
||||||
|
specifier: 4.14.196
|
||||||
|
version: 4.14.196
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: 18.19.0
|
specifier: 18.19.0
|
||||||
version: 18.19.0
|
version: 18.19.0
|
||||||
@ -70,8 +70,8 @@ importers:
|
|||||||
specifier: 14.0.1
|
specifier: 14.0.1
|
||||||
version: 14.0.1(eslint@8.56.0)(typescript@5.3.2)
|
version: 14.0.1(eslint@8.56.0)(typescript@5.3.2)
|
||||||
prettier:
|
prettier:
|
||||||
specifier: 3.1.0
|
specifier: 3.3.3
|
||||||
version: 3.1.0
|
version: 3.3.3
|
||||||
typescript:
|
typescript:
|
||||||
specifier: 5.3.2
|
specifier: 5.3.2
|
||||||
version: 5.3.2
|
version: 5.3.2
|
||||||
@ -2100,8 +2100,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
|
|
||||||
prettier@3.1.0:
|
prettier@3.3.3:
|
||||||
resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==}
|
resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
@ -2634,69 +2634,69 @@ snapshots:
|
|||||||
'@babel/helper-validator-identifier': 7.22.20
|
'@babel/helper-validator-identifier': 7.22.20
|
||||||
to-fast-properties: 2.0.0
|
to-fast-properties: 2.0.0
|
||||||
|
|
||||||
'@chakra-ui/accordion@2.3.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)':
|
'@chakra-ui/accordion@2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
||||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-controllable-state': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-controllable-state': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6)(react@18.3.1)
|
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/alert@2.2.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/alert@2.2.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/anatomy@2.2.2': {}
|
'@chakra-ui/anatomy@2.2.2': {}
|
||||||
|
|
||||||
'@chakra-ui/avatar@2.3.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/avatar@2.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/image': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/image': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/breadcrumb@2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/breadcrumb@2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/breakpoint-utils@2.0.8':
|
'@chakra-ui/breakpoint-utils@2.0.8':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
|
|
||||||
'@chakra-ui/button@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/button@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/card@2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/card@2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/checkbox@2.3.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/checkbox@2.3.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||||
'@chakra-ui/react-use-callback-ref': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-callback-ref': 2.1.0(react@18.3.1)
|
||||||
@ -2705,8 +2705,8 @@ snapshots:
|
|||||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@zag-js/focus-visible': 0.16.0
|
'@zag-js/focus-visible': 0.16.0
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
@ -2716,10 +2716,10 @@ snapshots:
|
|||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/close-button@2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/close-button@2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/color-mode@2.2.0(react@18.3.1)':
|
'@chakra-ui/color-mode@2.2.0(react@18.3.1)':
|
||||||
@ -2727,9 +2727,9 @@ snapshots:
|
|||||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/control-box@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/control-box@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/counter@2.1.0(react@18.3.1)':
|
'@chakra-ui/counter@2.1.0(react@18.3.1)':
|
||||||
@ -2739,7 +2739,7 @@ snapshots:
|
|||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/css-reset@2.3.0(@emotion/react@11.11.4)(react@18.3.1)':
|
'@chakra-ui/css-reset@2.3.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
@ -2752,7 +2752,7 @@ snapshots:
|
|||||||
|
|
||||||
'@chakra-ui/dom-utils@2.1.0': {}
|
'@chakra-ui/dom-utils@2.1.0': {}
|
||||||
|
|
||||||
'@chakra-ui/editable@3.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/editable@3.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||||
@ -2763,7 +2763,7 @@ snapshots:
|
|||||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/event-utils@2.0.8': {}
|
'@chakra-ui/event-utils@2.0.8': {}
|
||||||
@ -2776,14 +2776,14 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/react'
|
- '@types/react'
|
||||||
|
|
||||||
'@chakra-ui/form-control@2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/form-control@2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/hooks@2.2.1(react@18.3.1)':
|
'@chakra-ui/hooks@2.2.1(react@18.3.1)':
|
||||||
@ -2794,38 +2794,38 @@ snapshots:
|
|||||||
copy-to-clipboard: 3.3.3
|
copy-to-clipboard: 3.3.3
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/icon@3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/icon@3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/image@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/image@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/input@2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/input@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/object-utils': 2.1.0
|
'@chakra-ui/object-utils': 2.1.0
|
||||||
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/layout@2.3.1(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/layout@2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/breakpoint-utils': 2.0.8
|
'@chakra-ui/breakpoint-utils': 2.0.8
|
||||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/object-utils': 2.1.0
|
'@chakra-ui/object-utils': 2.1.0
|
||||||
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/lazy-utils@2.0.5': {}
|
'@chakra-ui/lazy-utils@2.0.5': {}
|
||||||
@ -2834,15 +2834,15 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/media-query@3.3.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/media-query@3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/breakpoint-utils': 2.0.8
|
'@chakra-ui/breakpoint-utils': 2.0.8
|
||||||
'@chakra-ui/react-env': 3.1.0(react@18.3.1)
|
'@chakra-ui/react-env': 3.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/menu@2.2.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)':
|
'@chakra-ui/menu@2.2.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/clickable': 2.1.0(react@18.3.1)
|
'@chakra-ui/clickable': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
||||||
@ -2858,35 +2858,35 @@ snapshots:
|
|||||||
'@chakra-ui/react-use-outside-click': 2.2.0(react@18.3.1)
|
'@chakra-ui/react-use-outside-click': 2.2.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6)(react@18.3.1)
|
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/modal@2.3.1(@chakra-ui/system@2.6.2)(@types/react@18.3.3)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)':
|
'@chakra-ui/modal@2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/focus-lock': 2.1.0(@types/react@18.3.3)(react@18.3.1)
|
'@chakra-ui/focus-lock': 2.1.0(@types/react@18.3.3)(react@18.3.1)
|
||||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1)(react@18.3.1)
|
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6)(react@18.3.1)
|
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
aria-hidden: 1.2.3
|
aria-hidden: 1.2.3
|
||||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
react-remove-scroll: 2.5.6(@types/react@18.3.3)(react@18.3.1)
|
react-remove-scroll: 2.5.6(@types/react@18.3.3)(react@18.3.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/react'
|
- '@types/react'
|
||||||
|
|
||||||
'@chakra-ui/number-input@2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/number-input@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/counter': 2.1.0(react@18.3.1)
|
'@chakra-ui/counter': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||||
'@chakra-ui/react-use-callback-ref': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-callback-ref': 2.1.0(react@18.3.1)
|
||||||
@ -2896,14 +2896,14 @@ snapshots:
|
|||||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/number-utils@2.0.7': {}
|
'@chakra-ui/number-utils@2.0.7': {}
|
||||||
|
|
||||||
'@chakra-ui/object-utils@2.1.0': {}
|
'@chakra-ui/object-utils@2.1.0': {}
|
||||||
|
|
||||||
'@chakra-ui/pin-input@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/pin-input@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
'@chakra-ui/react-children-utils': 2.0.6(react@18.3.1)
|
||||||
@ -2911,12 +2911,12 @@ snapshots:
|
|||||||
'@chakra-ui/react-use-controllable-state': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-controllable-state': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/popover@2.2.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)':
|
'@chakra-ui/popover@2.2.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/lazy-utils': 2.0.5
|
'@chakra-ui/lazy-utils': 2.0.5
|
||||||
'@chakra-ui/popper': 3.1.0(react@18.3.1)
|
'@chakra-ui/popper': 3.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
@ -2927,8 +2927,8 @@ snapshots:
|
|||||||
'@chakra-ui/react-use-focus-on-pointer-down': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-focus-on-pointer-down': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/popper@3.1.0(react@18.3.1)':
|
'@chakra-ui/popper@3.1.0(react@18.3.1)':
|
||||||
@ -2938,39 +2938,39 @@ snapshots:
|
|||||||
'@popperjs/core': 2.11.8
|
'@popperjs/core': 2.11.8
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/portal@2.1.0(react-dom@18.3.1)(react@18.3.1)':
|
'@chakra-ui/portal@2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
'@chakra-ui/progress@2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/progress@2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/provider@2.4.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1)':
|
'@chakra-ui/provider@2.4.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.4)(react@18.3.1)
|
'@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1)(react@18.3.1)
|
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-env': 3.1.0(react@18.3.1)
|
'@chakra-ui/react-env': 3.1.0(react@18.3.1)
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/utils': 2.0.15
|
'@chakra-ui/utils': 2.0.15
|
||||||
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
||||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)
|
'@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
'@chakra-ui/radio@2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/radio@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
'@zag-js/focus-visible': 0.16.0
|
'@zag-js/focus-visible': 0.16.0
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
@ -3081,92 +3081,92 @@ snapshots:
|
|||||||
'@chakra-ui/utils': 2.0.15
|
'@chakra-ui/utils': 2.0.15
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/react@2.8.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.3.3)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)':
|
'@chakra-ui/react@2.8.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/accordion': 2.3.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)
|
'@chakra-ui/accordion': 2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/alert': 2.2.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/alert': 2.2.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/avatar': 2.3.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/avatar': 2.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/breadcrumb': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/breadcrumb': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/button': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/button': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/card': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/card': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/checkbox': 2.3.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/checkbox': 2.3.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/control-box': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/control-box': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/counter': 2.1.0(react@18.3.1)
|
'@chakra-ui/counter': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.4)(react@18.3.1)
|
'@chakra-ui/css-reset': 2.3.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/editable': 3.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/editable': 3.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/focus-lock': 2.1.0(@types/react@18.3.3)(react@18.3.1)
|
'@chakra-ui/focus-lock': 2.1.0(@types/react@18.3.3)(react@18.3.1)
|
||||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/hooks': 2.2.1(react@18.3.1)
|
'@chakra-ui/hooks': 2.2.1(react@18.3.1)
|
||||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/image': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/image': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/input': 2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/input': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/layout': 2.3.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/layout': 2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/live-region': 2.1.0(react@18.3.1)
|
'@chakra-ui/live-region': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/menu': 2.2.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)
|
'@chakra-ui/menu': 2.2.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/modal': 2.3.1(@chakra-ui/system@2.6.2)(@types/react@18.3.3)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)
|
'@chakra-ui/modal': 2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/number-input': 2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/number-input': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/pin-input': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/pin-input': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/popover': 2.2.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)
|
'@chakra-ui/popover': 2.2.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/popper': 3.1.0(react@18.3.1)
|
'@chakra-ui/popper': 3.1.0(react@18.3.1)
|
||||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1)(react@18.3.1)
|
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/progress': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/progress': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/provider': 2.4.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1)
|
'@chakra-ui/provider': 2.4.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/radio': 2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/radio': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-env': 3.1.0(react@18.3.1)
|
'@chakra-ui/react-env': 3.1.0(react@18.3.1)
|
||||||
'@chakra-ui/select': 2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/select': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/skeleton': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/skeleton': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/skip-nav': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/skip-nav': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/slider': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/slider': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/spinner': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/stat': 2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/stat': 2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/stepper': 2.3.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/stepper': 2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/styled-system': 2.9.2
|
'@chakra-ui/styled-system': 2.9.2
|
||||||
'@chakra-ui/switch': 2.1.2(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)
|
'@chakra-ui/switch': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/table': 2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/table': 2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/tabs': 3.0.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/tabs': 3.0.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/tag': 3.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/tag': 3.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/textarea': 2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/textarea': 2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/theme': 3.3.1(@chakra-ui/styled-system@2.9.2)
|
'@chakra-ui/theme': 3.3.1(@chakra-ui/styled-system@2.9.2)
|
||||||
'@chakra-ui/theme-utils': 2.0.21
|
'@chakra-ui/theme-utils': 2.0.21
|
||||||
'@chakra-ui/toast': 7.0.2(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)
|
'@chakra-ui/toast': 7.0.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/tooltip': 2.3.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)
|
'@chakra-ui/tooltip': 2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6)(react@18.3.1)
|
'@chakra-ui/transition': 2.1.0(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/utils': 2.0.15
|
'@chakra-ui/utils': 2.0.15
|
||||||
'@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/visually-hidden': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
||||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)
|
'@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
|
||||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/react'
|
- '@types/react'
|
||||||
|
|
||||||
'@chakra-ui/select@2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/select@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/shared-utils@2.0.5': {}
|
'@chakra-ui/shared-utils@2.0.5': {}
|
||||||
|
|
||||||
'@chakra-ui/skeleton@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/skeleton@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/media-query': 3.3.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-use-previous': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-previous': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/skip-nav@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/skip-nav@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/slider@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/slider@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/number-utils': 2.0.7
|
'@chakra-ui/number-utils': 2.0.7
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
@ -3178,29 +3178,29 @@ snapshots:
|
|||||||
'@chakra-ui/react-use-pan-event': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-pan-event': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-size': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-size': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/spinner@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/spinner@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/stat@2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/stat@2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/stepper@2.3.1(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/stepper@2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/styled-system@2.9.2':
|
'@chakra-ui/styled-system@2.9.2':
|
||||||
@ -3209,15 +3209,15 @@ snapshots:
|
|||||||
csstype: 3.1.2
|
csstype: 3.1.2
|
||||||
lodash.mergewith: 4.6.2
|
lodash.mergewith: 4.6.2
|
||||||
|
|
||||||
'@chakra-ui/switch@2.1.2(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react@18.3.1)':
|
'@chakra-ui/switch@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/checkbox': 2.3.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/checkbox': 2.3.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/system@2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)':
|
'@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/color-mode': 2.2.0(react@18.3.1)
|
'@chakra-ui/color-mode': 2.2.0(react@18.3.1)
|
||||||
'@chakra-ui/object-utils': 2.1.0
|
'@chakra-ui/object-utils': 2.1.0
|
||||||
@ -3226,18 +3226,18 @@ snapshots:
|
|||||||
'@chakra-ui/theme-utils': 2.0.21
|
'@chakra-ui/theme-utils': 2.0.21
|
||||||
'@chakra-ui/utils': 2.0.15
|
'@chakra-ui/utils': 2.0.15
|
||||||
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
'@emotion/react': 11.11.4(@types/react@18.3.3)(react@18.3.1)
|
||||||
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)
|
'@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-fast-compare: 3.2.2
|
react-fast-compare: 3.2.2
|
||||||
|
|
||||||
'@chakra-ui/table@2.1.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/table@2.1.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/tabs@3.0.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/tabs@3.0.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/clickable': 2.1.0(react@18.3.1)
|
'@chakra-ui/clickable': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
'@chakra-ui/descendant': 3.1.0(react@18.3.1)
|
||||||
@ -3248,21 +3248,21 @@ snapshots:
|
|||||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-safe-layout-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/tag@3.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/tag@3.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/icon': 3.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/textarea@2.1.2(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/textarea@2.1.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/form-control': 2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/theme-tools@2.1.2(@chakra-ui/styled-system@2.9.2)':
|
'@chakra-ui/theme-tools@2.1.2(@chakra-ui/styled-system@2.9.2)':
|
||||||
@ -3286,41 +3286,41 @@ snapshots:
|
|||||||
'@chakra-ui/styled-system': 2.9.2
|
'@chakra-ui/styled-system': 2.9.2
|
||||||
'@chakra-ui/theme-tools': 2.1.2(@chakra-ui/styled-system@2.9.2)
|
'@chakra-ui/theme-tools': 2.1.2(@chakra-ui/styled-system@2.9.2)
|
||||||
|
|
||||||
'@chakra-ui/toast@7.0.2(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)':
|
'@chakra-ui/toast@7.0.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/alert': 2.2.2(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/alert': 2.2.2(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2)(react@18.3.1)
|
'@chakra-ui/close-button': 2.1.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1)(react@18.3.1)
|
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-context': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-timeout': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-timeout': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-update-effect': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/styled-system': 2.9.2
|
'@chakra-ui/styled-system': 2.9.2
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/theme': 3.3.1(@chakra-ui/styled-system@2.9.2)
|
'@chakra-ui/theme': 3.3.1(@chakra-ui/styled-system@2.9.2)
|
||||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
'@chakra-ui/tooltip@2.3.1(@chakra-ui/system@2.6.2)(framer-motion@10.17.6)(react-dom@18.3.1)(react@18.3.1)':
|
'@chakra-ui/tooltip@2.3.1(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/dom-utils': 2.1.0
|
'@chakra-ui/dom-utils': 2.1.0
|
||||||
'@chakra-ui/popper': 3.1.0(react@18.3.1)
|
'@chakra-ui/popper': 3.1.0(react@18.3.1)
|
||||||
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1)(react@18.3.1)
|
'@chakra-ui/portal': 2.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
'@chakra-ui/react-types': 2.0.7(react@18.3.1)
|
||||||
'@chakra-ui/react-use-disclosure': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-disclosure': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-event-listener': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-event-listener': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
'@chakra-ui/react-use-merge-refs': 2.1.0(react@18.3.1)
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
'@chakra-ui/transition@2.1.0(framer-motion@10.17.6)(react@18.3.1)':
|
'@chakra-ui/transition@2.1.0(framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/shared-utils': 2.0.5
|
'@chakra-ui/shared-utils': 2.0.5
|
||||||
framer-motion: 10.17.6(react-dom@18.3.1)(react@18.3.1)
|
framer-motion: 10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@chakra-ui/utils@2.0.15':
|
'@chakra-ui/utils@2.0.15':
|
||||||
@ -3330,9 +3330,9 @@ snapshots:
|
|||||||
framesync: 6.1.2
|
framesync: 6.1.2
|
||||||
lodash.mergewith: 4.6.2
|
lodash.mergewith: 4.6.2
|
||||||
|
|
||||||
'@chakra-ui/visually-hidden@2.2.0(@chakra-ui/system@2.6.2)(react@18.3.1)':
|
'@chakra-ui/visually-hidden@2.2.0(@chakra-ui/system@2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
|
'@chakra-ui/system': 2.6.2(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
|
||||||
'@emotion/babel-plugin@11.11.0':
|
'@emotion/babel-plugin@11.11.0':
|
||||||
@ -3382,9 +3382,10 @@ snapshots:
|
|||||||
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
|
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
|
||||||
'@emotion/utils': 1.2.1
|
'@emotion/utils': 1.2.1
|
||||||
'@emotion/weak-memoize': 0.3.1
|
'@emotion/weak-memoize': 0.3.1
|
||||||
'@types/react': 18.3.3
|
|
||||||
hoist-non-react-statics: 3.3.2
|
hoist-non-react-statics: 3.3.2
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/react': 18.3.3
|
||||||
|
|
||||||
'@emotion/serialize@1.1.4':
|
'@emotion/serialize@1.1.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -3396,7 +3397,7 @@ snapshots:
|
|||||||
|
|
||||||
'@emotion/sheet@1.2.2': {}
|
'@emotion/sheet@1.2.2': {}
|
||||||
|
|
||||||
'@emotion/styled@11.11.5(@emotion/react@11.11.4)(@types/react@18.3.3)(react@18.3.1)':
|
'@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.22.6
|
'@babel/runtime': 7.22.6
|
||||||
'@emotion/babel-plugin': 11.11.0
|
'@emotion/babel-plugin': 11.11.0
|
||||||
@ -3405,8 +3406,9 @@ snapshots:
|
|||||||
'@emotion/serialize': 1.1.4
|
'@emotion/serialize': 1.1.4
|
||||||
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
|
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
|
||||||
'@emotion/utils': 1.2.1
|
'@emotion/utils': 1.2.1
|
||||||
'@types/react': 18.3.3
|
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/react': 18.3.3
|
||||||
|
|
||||||
'@emotion/unitless@0.8.1': {}
|
'@emotion/unitless@0.8.1': {}
|
||||||
|
|
||||||
@ -3574,6 +3576,7 @@ snapshots:
|
|||||||
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.2)
|
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.2)
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
eslint: 8.56.0
|
eslint: 8.56.0
|
||||||
|
optionalDependencies:
|
||||||
typescript: 5.3.2
|
typescript: 5.3.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -3594,6 +3597,7 @@ snapshots:
|
|||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
semver: 7.5.4
|
semver: 7.5.4
|
||||||
tsutils: 3.21.0(typescript@5.3.2)
|
tsutils: 3.21.0(typescript@5.3.2)
|
||||||
|
optionalDependencies:
|
||||||
typescript: 5.3.2
|
typescript: 5.3.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@ -4040,11 +4044,12 @@ snapshots:
|
|||||||
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
||||||
eslint: 8.56.0
|
eslint: 8.56.0
|
||||||
eslint-import-resolver-node: 0.3.7
|
eslint-import-resolver-node: 0.3.7
|
||||||
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1)(eslint@8.56.0)
|
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0)
|
||||||
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0)
|
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
||||||
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.56.0)
|
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.56.0)
|
||||||
eslint-plugin-react: 7.33.2(eslint@8.56.0)
|
eslint-plugin-react: 7.33.2(eslint@8.56.0)
|
||||||
eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0)
|
eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0)
|
||||||
|
optionalDependencies:
|
||||||
typescript: 5.3.2
|
typescript: 5.3.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
@ -4058,13 +4063,13 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1)(eslint@8.56.0):
|
eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
enhanced-resolve: 5.15.0
|
enhanced-resolve: 5.15.0
|
||||||
eslint: 8.56.0
|
eslint: 8.56.0
|
||||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0)
|
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
||||||
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0)
|
eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
||||||
get-tsconfig: 4.6.2
|
get-tsconfig: 4.6.2
|
||||||
globby: 13.2.2
|
globby: 13.2.2
|
||||||
is-core-module: 2.13.0
|
is-core-module: 2.13.0
|
||||||
@ -4076,19 +4081,19 @@ snapshots:
|
|||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0):
|
eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
|
optionalDependencies:
|
||||||
|
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
||||||
eslint: 8.56.0
|
eslint: 8.56.0
|
||||||
eslint-import-resolver-node: 0.3.7
|
eslint-import-resolver-node: 0.3.7
|
||||||
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1)(eslint@8.56.0)
|
eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0):
|
eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
|
||||||
array-includes: 3.1.6
|
array-includes: 3.1.6
|
||||||
array.prototype.findlastindex: 1.2.3
|
array.prototype.findlastindex: 1.2.3
|
||||||
array.prototype.flat: 1.3.1
|
array.prototype.flat: 1.3.1
|
||||||
@ -4097,7 +4102,7 @@ snapshots:
|
|||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 8.56.0
|
eslint: 8.56.0
|
||||||
eslint-import-resolver-node: 0.3.7
|
eslint-import-resolver-node: 0.3.7
|
||||||
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.56.0)
|
eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.2))(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
|
||||||
has: 1.0.3
|
has: 1.0.3
|
||||||
is-core-module: 2.13.0
|
is-core-module: 2.13.0
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
@ -4107,6 +4112,8 @@ snapshots:
|
|||||||
object.values: 1.1.6
|
object.values: 1.1.6
|
||||||
semver: 6.3.1
|
semver: 6.3.1
|
||||||
tsconfig-paths: 3.14.2
|
tsconfig-paths: 3.14.2
|
||||||
|
optionalDependencies:
|
||||||
|
'@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- eslint-import-resolver-typescript
|
- eslint-import-resolver-typescript
|
||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
@ -4305,13 +4312,13 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-callable: 1.2.7
|
is-callable: 1.2.7
|
||||||
|
|
||||||
framer-motion@10.17.6(react-dom@18.3.1)(react@18.3.1):
|
framer-motion@10.17.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
react: 18.3.1
|
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@emotion/is-prop-valid': 0.8.8
|
'@emotion/is-prop-valid': 0.8.8
|
||||||
|
react: 18.3.1
|
||||||
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
framesync@6.1.2:
|
framesync@6.1.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5137,7 +5144,7 @@ snapshots:
|
|||||||
|
|
||||||
natural-compare@1.4.0: {}
|
natural-compare@1.4.0: {}
|
||||||
|
|
||||||
next@14.2.4(react-dom@18.3.1)(react@18.3.1):
|
next@14.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/env': 14.2.4
|
'@next/env': 14.2.4
|
||||||
'@swc/helpers': 0.5.5
|
'@swc/helpers': 0.5.5
|
||||||
@ -5301,7 +5308,7 @@ snapshots:
|
|||||||
|
|
||||||
prelude-ls@1.2.1: {}
|
prelude-ls@1.2.1: {}
|
||||||
|
|
||||||
prettier@3.1.0: {}
|
prettier@3.3.3: {}
|
||||||
|
|
||||||
process-nextick-args@2.0.1: {}
|
process-nextick-args@2.0.1: {}
|
||||||
|
|
||||||
@ -5335,13 +5342,14 @@ snapshots:
|
|||||||
react-focus-lock@2.9.5(@types/react@18.3.3)(react@18.3.1):
|
react-focus-lock@2.9.5(@types/react@18.3.3)(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.22.6
|
'@babel/runtime': 7.22.6
|
||||||
'@types/react': 18.3.3
|
|
||||||
focus-lock: 0.11.6
|
focus-lock: 0.11.6
|
||||||
prop-types: 15.8.1
|
prop-types: 15.8.1
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-clientside-effect: 1.2.6(react@18.3.1)
|
react-clientside-effect: 1.2.6(react@18.3.1)
|
||||||
use-callback-ref: 1.3.0(@types/react@18.3.3)(react@18.3.1)
|
use-callback-ref: 1.3.0(@types/react@18.3.3)(react@18.3.1)
|
||||||
use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
|
use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/react': 18.3.3
|
||||||
|
|
||||||
react-icons@4.12.0(react@18.3.1):
|
react-icons@4.12.0(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5368,28 +5376,31 @@ snapshots:
|
|||||||
|
|
||||||
react-remove-scroll-bar@2.3.4(@types/react@18.3.3)(react@18.3.1):
|
react-remove-scroll-bar@2.3.4(@types/react@18.3.3)(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 18.3.3
|
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
|
react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/react': 18.3.3
|
||||||
|
|
||||||
react-remove-scroll@2.5.6(@types/react@18.3.3)(react@18.3.1):
|
react-remove-scroll@2.5.6(@types/react@18.3.3)(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 18.3.3
|
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-remove-scroll-bar: 2.3.4(@types/react@18.3.3)(react@18.3.1)
|
react-remove-scroll-bar: 2.3.4(@types/react@18.3.3)(react@18.3.1)
|
||||||
react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
|
react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
use-callback-ref: 1.3.0(@types/react@18.3.3)(react@18.3.1)
|
use-callback-ref: 1.3.0(@types/react@18.3.3)(react@18.3.1)
|
||||||
use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
|
use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/react': 18.3.3
|
||||||
|
|
||||||
react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1):
|
react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 18.3.3
|
|
||||||
get-nonce: 1.0.1
|
get-nonce: 1.0.1
|
||||||
invariant: 2.2.4
|
invariant: 2.2.4
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/react': 18.3.3
|
||||||
|
|
||||||
react@18.3.1:
|
react@18.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -5789,16 +5800,18 @@ snapshots:
|
|||||||
|
|
||||||
use-callback-ref@1.3.0(@types/react@18.3.3)(react@18.3.1):
|
use-callback-ref@1.3.0(@types/react@18.3.3)(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 18.3.3
|
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/react': 18.3.3
|
||||||
|
|
||||||
use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1):
|
use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 18.3.3
|
|
||||||
detect-node-es: 1.1.0
|
detect-node-es: 1.1.0
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/react': 18.3.3
|
||||||
|
|
||||||
util-deprecate@1.0.2: {}
|
util-deprecate@1.0.2: {}
|
||||||
|
|
||||||
|
12
package.json
12
package.json
@ -2,15 +2,13 @@
|
|||||||
"_comment": "This version doesn't matter, it's just to allow importing from other repos.",
|
"_comment": "This version doesn't matter, it's just to allow importing from other repos.",
|
||||||
"name": "coder",
|
"name": "coder",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
|
"packageManager": "pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"format": "prettier --cache --write",
|
"format": "prettier --cache --write '**/*.{css,html,json,md,yaml,yml}'",
|
||||||
|
"format:check": "prettier --cache --check '**/*.{css,html,json,md,yaml,yml}'",
|
||||||
"storybook": "pnpm run -C site/ storybook"
|
"storybook": "pnpm run -C site/ storybook"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"prettier": "3.0.0"
|
"prettier": "3.3.3"
|
||||||
},
|
}
|
||||||
"dependencies": {
|
|
||||||
"exec": "^0.2.1"
|
|
||||||
},
|
|
||||||
"packageManager": "pnpm@8.14.0+sha1.bb42032ff80dba5f9245bc1b03470d2fa0b7fb2f"
|
|
||||||
}
|
}
|
||||||
|
21
pnpm-lock.yaml
generated
21
pnpm-lock.yaml
generated
@ -7,29 +7,18 @@ settings:
|
|||||||
importers:
|
importers:
|
||||||
|
|
||||||
.:
|
.:
|
||||||
dependencies:
|
|
||||||
exec:
|
|
||||||
specifier: ^0.2.1
|
|
||||||
version: 0.2.1
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
prettier:
|
prettier:
|
||||||
specifier: 3.0.0
|
specifier: 3.3.3
|
||||||
version: 3.0.0
|
version: 3.3.3
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
exec@0.2.1:
|
prettier@3.3.3:
|
||||||
resolution: {integrity: sha512-lE5ZlJgRYh+rmwidatL2AqRA/U9IBoCpKlLriBmnfUIrV/Rj4oLjb63qZ57iBCHWi5j9IjLt5wOWkFYPiTfYAg==}
|
resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
|
||||||
engines: {node: '>= v0.9.1'}
|
|
||||||
deprecated: deprecated in favor of builtin child_process.execFile
|
|
||||||
|
|
||||||
prettier@3.0.0:
|
|
||||||
resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==}
|
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
snapshots:
|
snapshots:
|
||||||
|
|
||||||
exec@0.2.1: {}
|
prettier@3.3.3: {}
|
||||||
|
|
||||||
prettier@3.0.0: {}
|
|
||||||
|
@ -1,97 +0,0 @@
|
|||||||
# Code generated by Makefile (.gitignore .prettierignore.include). DO NOT EDIT.
|
|
||||||
|
|
||||||
# .gitignore:
|
|
||||||
# Common ignore patterns, these rules applies in both root and subdirectories.
|
|
||||||
.DS_Store
|
|
||||||
.eslintcache
|
|
||||||
.gitpod.yml
|
|
||||||
.idea
|
|
||||||
**/*.swp
|
|
||||||
gotests.coverage
|
|
||||||
gotests.xml
|
|
||||||
gotests_stats.json
|
|
||||||
gotests.json
|
|
||||||
node_modules/
|
|
||||||
vendor/
|
|
||||||
yarn-error.log
|
|
||||||
|
|
||||||
# VSCode settings.
|
|
||||||
**/.vscode/*
|
|
||||||
# Allow VSCode recommendations and default settings in project root.
|
|
||||||
!../.vscode/extensions.json
|
|
||||||
!../.vscode/settings.json
|
|
||||||
|
|
||||||
# Front-end ignore patterns.
|
|
||||||
.next/
|
|
||||||
build-storybook.log
|
|
||||||
coverage/
|
|
||||||
storybook-static/
|
|
||||||
test-results/*
|
|
||||||
e2e/test-results/*
|
|
||||||
e2e/states/*.json
|
|
||||||
e2e/.auth.json
|
|
||||||
playwright-report/*
|
|
||||||
.swc
|
|
||||||
|
|
||||||
# Make target for updating golden files (any dir).
|
|
||||||
.gen-golden
|
|
||||||
|
|
||||||
# Build
|
|
||||||
build/
|
|
||||||
dist/
|
|
||||||
out/
|
|
||||||
|
|
||||||
# Bundle analysis
|
|
||||||
stats/
|
|
||||||
|
|
||||||
*.tfstate
|
|
||||||
*.tfstate.backup
|
|
||||||
*.tfplan
|
|
||||||
*.lock.hcl
|
|
||||||
.terraform/
|
|
||||||
|
|
||||||
**/.coderv2/*
|
|
||||||
**/__debug_bin
|
|
||||||
|
|
||||||
# direnv
|
|
||||||
.envrc
|
|
||||||
*.test
|
|
||||||
|
|
||||||
# Loadtesting
|
|
||||||
.././scaletest/terraform/.terraform
|
|
||||||
.././scaletest/terraform/.terraform.lock.hcl
|
|
||||||
../scaletest/terraform/secrets.tfvars
|
|
||||||
.terraform.tfstate.*
|
|
||||||
|
|
||||||
# Nix
|
|
||||||
result
|
|
||||||
|
|
||||||
# Data dumps from unit tests
|
|
||||||
**/*.test.sql
|
|
||||||
|
|
||||||
# Filebrowser.db
|
|
||||||
**/filebrowser.db
|
|
||||||
|
|
||||||
# pnpm
|
|
||||||
.pnpm-store/
|
|
||||||
# .prettierignore.include:
|
|
||||||
# Helm templates contain variables that are invalid YAML and can't be formatted
|
|
||||||
# by Prettier.
|
|
||||||
../helm/**/templates/*.yaml
|
|
||||||
|
|
||||||
# Terraform state files used in tests, these are automatically generated.
|
|
||||||
# Example: provisioner/terraform/testdata/instance-id/instance-id.tfstate.json
|
|
||||||
**/testdata/**/*.tf*.json
|
|
||||||
|
|
||||||
# Testdata shouldn't be formatted.
|
|
||||||
../scripts/apitypings/testdata/**/*.ts
|
|
||||||
../enterprise/tailnet/testdata/*.golden.html
|
|
||||||
../tailnet/testdata/*.golden.html
|
|
||||||
|
|
||||||
# Generated files shouldn't be formatted.
|
|
||||||
e2e/provisionerGenerated.ts
|
|
||||||
|
|
||||||
**/pnpm-lock.yaml
|
|
||||||
|
|
||||||
# Ignore generated JSON (e.g. examples/examples.gen.json).
|
|
||||||
**/*.gen.json
|
|
@ -1,205 +0,0 @@
|
|||||||
---
|
|
||||||
env:
|
|
||||||
browser: true
|
|
||||||
commonjs: true
|
|
||||||
es6: true
|
|
||||||
jest: true
|
|
||||||
node: true
|
|
||||||
ignorePatterns:
|
|
||||||
- "jest.polyfills.js"
|
|
||||||
extends:
|
|
||||||
- eslint:recommended
|
|
||||||
- plugin:@typescript-eslint/recommended
|
|
||||||
- plugin:@typescript-eslint/recommended-requiring-type-checking
|
|
||||||
- plugin:eslint-comments/recommended
|
|
||||||
- plugin:import/recommended
|
|
||||||
- plugin:import/typescript
|
|
||||||
- plugin:react/recommended
|
|
||||||
- plugin:jsx-a11y/strict
|
|
||||||
- plugin:compat/recommended
|
|
||||||
- prettier
|
|
||||||
parser: "@typescript-eslint/parser"
|
|
||||||
parserOptions:
|
|
||||||
ecmaVersion: 2018
|
|
||||||
project: "./tsconfig.json"
|
|
||||||
sourceType: module
|
|
||||||
ecmaFeatures:
|
|
||||||
jsx: true
|
|
||||||
# REMARK(Grey): We might want to move this to repository root eventually to
|
|
||||||
# lint multiple projects (supply array to project property).
|
|
||||||
tsconfigRootDir: "./"
|
|
||||||
plugins:
|
|
||||||
- "@typescript-eslint"
|
|
||||||
- import
|
|
||||||
- react-hooks
|
|
||||||
- jest
|
|
||||||
- unicorn
|
|
||||||
- testing-library
|
|
||||||
overrides:
|
|
||||||
- files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"]
|
|
||||||
extends: ["plugin:testing-library/react", "plugin:testing-library/dom"]
|
|
||||||
rules:
|
|
||||||
# Occasionally, we must traverse the DOM when querying for an element to
|
|
||||||
# avoid the performance costs that come with using selectors like ByRole.
|
|
||||||
# You can read more about these performance costs here:
|
|
||||||
# https://coder.com/docs/contributing/frontend#tests-getting-too-slow.
|
|
||||||
testing-library/no-node-access: off
|
|
||||||
testing-library/no-container: off
|
|
||||||
- files: ["e2e/**/*.[tj]s"]
|
|
||||||
extends: ["plugin:testing-library/react", "plugin:testing-library/dom"]
|
|
||||||
rules:
|
|
||||||
# Sometimes the eslint-plugin-testing-library believes playwright queries are
|
|
||||||
# also react-testing-library queries, which is not the case. So we disable this
|
|
||||||
# rule for all e2e tests.
|
|
||||||
testing-library/prefer-screen-queries: "off"
|
|
||||||
root: true
|
|
||||||
rules:
|
|
||||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
|
||||||
"@typescript-eslint/no-misused-promises": "off"
|
|
||||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
|
||||||
"@typescript-eslint/no-unsafe-argument": "off"
|
|
||||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
|
||||||
"@typescript-eslint/no-unsafe-assignment": "off"
|
|
||||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
|
||||||
"@typescript-eslint/no-unsafe-call": "off"
|
|
||||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
|
||||||
"@typescript-eslint/no-unsafe-member-access": "off"
|
|
||||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
|
||||||
"@typescript-eslint/no-unsafe-return": "off"
|
|
||||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
|
||||||
"@typescript-eslint/require-await": "off"
|
|
||||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
|
||||||
"@typescript-eslint/restrict-plus-operands": "off"
|
|
||||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
|
||||||
"@typescript-eslint/restrict-template-expressions": "off"
|
|
||||||
# TODO: Investigate whether to enable this rule & fix and/or disable all its complaints
|
|
||||||
"@typescript-eslint/unbound-method": "off"
|
|
||||||
|
|
||||||
"@typescript-eslint/brace-style":
|
|
||||||
["error", "1tbs", { "allowSingleLine": false }]
|
|
||||||
"@typescript-eslint/consistent-type-imports":
|
|
||||||
- error
|
|
||||||
- fixStyle: inline-type-imports
|
|
||||||
"@typescript-eslint/method-signature-style": ["error", "property"]
|
|
||||||
"@typescript-eslint/no-import-type-side-effects": "error"
|
|
||||||
# We're disabling the `no-namespace` rule to use a pattern of defining an interface,
|
|
||||||
# and then defining functions that operate on that data via namespace. This is helpful for
|
|
||||||
# dealing with immutable objects. This is a common pattern that shows up in some other
|
|
||||||
# large TypeScript projects, like VSCode.
|
|
||||||
# More details: https://github.com/coder/m/pull/9720#discussion_r697609528
|
|
||||||
"@typescript-eslint/no-namespace": "off"
|
|
||||||
"@typescript-eslint/no-unused-vars":
|
|
||||||
- error
|
|
||||||
- argsIgnorePattern: "^_"
|
|
||||||
varsIgnorePattern: "^_"
|
|
||||||
ignoreRestSiblings: true
|
|
||||||
"@typescript-eslint/no-empty-interface":
|
|
||||||
- error
|
|
||||||
- allowSingleExtends: true
|
|
||||||
"brace-style": "off"
|
|
||||||
"curly": ["error", "all"]
|
|
||||||
"eslint-comments/disable-enable-pair":
|
|
||||||
- error
|
|
||||||
- allowWholeFile: true
|
|
||||||
"eslint-comments/require-description": "error"
|
|
||||||
eqeqeq: error
|
|
||||||
import/default: "off"
|
|
||||||
import/namespace: "off"
|
|
||||||
import/newline-after-import:
|
|
||||||
- error
|
|
||||||
- count: 1
|
|
||||||
import/no-named-as-default: "off"
|
|
||||||
import/no-named-as-default-member: "off"
|
|
||||||
import/prefer-default-export: "off"
|
|
||||||
import/order:
|
|
||||||
- error
|
|
||||||
- groups: [["builtin", "external"], "internal", "parent"]
|
|
||||||
newlines-between: never
|
|
||||||
alphabetize:
|
|
||||||
order: asc
|
|
||||||
caseInsensitive: true
|
|
||||||
jest/no-focused-tests: "error"
|
|
||||||
jsx-a11y/label-has-for: "off"
|
|
||||||
jsx-a11y/no-autofocus: "off"
|
|
||||||
no-console:
|
|
||||||
- warn
|
|
||||||
- allow:
|
|
||||||
- warn
|
|
||||||
- error
|
|
||||||
- info
|
|
||||||
- debug
|
|
||||||
no-dupe-class-members: "off"
|
|
||||||
no-implicit-coercion: "error"
|
|
||||||
no-restricted-imports:
|
|
||||||
- error
|
|
||||||
- paths:
|
|
||||||
- name: "@mui/material"
|
|
||||||
message:
|
|
||||||
"Use path imports to avoid pulling in unused modules. See:
|
|
||||||
https://material-ui.com/guides/minimizing-bundle-size/"
|
|
||||||
- name: "@mui/icons-material"
|
|
||||||
message:
|
|
||||||
"Use path imports to avoid pulling in unused modules. See:
|
|
||||||
https://material-ui.com/guides/minimizing-bundle-size/"
|
|
||||||
- name: "@mui/material/Avatar"
|
|
||||||
message:
|
|
||||||
"You should use the Avatar component provided on
|
|
||||||
components/Avatar/Avatar"
|
|
||||||
- name: "@mui/material/Alert"
|
|
||||||
message:
|
|
||||||
"You should use the Alert component provided on
|
|
||||||
components/Alert/Alert"
|
|
||||||
- name: "@mui/material/Popover"
|
|
||||||
message:
|
|
||||||
"You should use the Popover component provided on
|
|
||||||
components/Popover/Popover"
|
|
||||||
- name: "@mui/material/Typography"
|
|
||||||
message:
|
|
||||||
"You should use the native HTML elements as span, p, h1, h2, h3..."
|
|
||||||
- name: "@mui/material/Box"
|
|
||||||
message: "You should use a <div> instead"
|
|
||||||
- name: "@mui/material/styles"
|
|
||||||
importNames: ["Interpolation", "Theme", "useTheme"]
|
|
||||||
message: "Import from @emotion/react instead."
|
|
||||||
- name: "lodash"
|
|
||||||
message: "Import from lodash/<name> instead."
|
|
||||||
no-unused-vars: "off"
|
|
||||||
"object-curly-spacing": "off"
|
|
||||||
react-hooks/exhaustive-deps: warn
|
|
||||||
react-hooks/rules-of-hooks: error
|
|
||||||
react/display-name: "off"
|
|
||||||
react/jsx-no-script-url:
|
|
||||||
- error
|
|
||||||
- - name: Link
|
|
||||||
props:
|
|
||||||
- to
|
|
||||||
- name: Button
|
|
||||||
props:
|
|
||||||
- href
|
|
||||||
- name: IconButton
|
|
||||||
props:
|
|
||||||
- href
|
|
||||||
react/prop-types: "off"
|
|
||||||
react/jsx-boolean-value: ["error", "never"]
|
|
||||||
react/jsx-curly-brace-presence:
|
|
||||||
- error
|
|
||||||
- children: ignore
|
|
||||||
# https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#eslint
|
|
||||||
react/jsx-key: error
|
|
||||||
react/jsx-uses-react: "off"
|
|
||||||
react/no-unknown-property: ["error", { ignore: ["css"] }]
|
|
||||||
react/react-in-jsx-scope: "off"
|
|
||||||
# https://github.com/jsx-eslint/eslint-plugin-react/issues/2628#issuecomment-984160944
|
|
||||||
no-restricted-syntax:
|
|
||||||
[
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
selector: "ImportDeclaration[source.value='react'][specifiers.0.type='ImportDefaultSpecifier']",
|
|
||||||
message: "Default React import not allowed",
|
|
||||||
},
|
|
||||||
]
|
|
||||||
settings:
|
|
||||||
react:
|
|
||||||
version: detect
|
|
||||||
import/resolver:
|
|
||||||
typescript: {}
|
|
@ -1,97 +0,0 @@
|
|||||||
# Code generated by Makefile (.gitignore .prettierignore.include). DO NOT EDIT.
|
|
||||||
|
|
||||||
# .gitignore:
|
|
||||||
# Common ignore patterns, these rules applies in both root and subdirectories.
|
|
||||||
.DS_Store
|
|
||||||
.eslintcache
|
|
||||||
.gitpod.yml
|
|
||||||
.idea
|
|
||||||
**/*.swp
|
|
||||||
gotests.coverage
|
|
||||||
gotests.xml
|
|
||||||
gotests_stats.json
|
|
||||||
gotests.json
|
|
||||||
node_modules/
|
|
||||||
vendor/
|
|
||||||
yarn-error.log
|
|
||||||
|
|
||||||
# VSCode settings.
|
|
||||||
**/.vscode/*
|
|
||||||
# Allow VSCode recommendations and default settings in project root.
|
|
||||||
!../.vscode/extensions.json
|
|
||||||
!../.vscode/settings.json
|
|
||||||
|
|
||||||
# Front-end ignore patterns.
|
|
||||||
.next/
|
|
||||||
build-storybook.log
|
|
||||||
coverage/
|
|
||||||
storybook-static/
|
|
||||||
test-results/*
|
|
||||||
e2e/test-results/*
|
|
||||||
e2e/states/*.json
|
|
||||||
e2e/.auth.json
|
|
||||||
playwright-report/*
|
|
||||||
.swc
|
|
||||||
|
|
||||||
# Make target for updating golden files (any dir).
|
|
||||||
.gen-golden
|
|
||||||
|
|
||||||
# Build
|
|
||||||
build/
|
|
||||||
dist/
|
|
||||||
out/
|
|
||||||
|
|
||||||
# Bundle analysis
|
|
||||||
stats/
|
|
||||||
|
|
||||||
*.tfstate
|
|
||||||
*.tfstate.backup
|
|
||||||
*.tfplan
|
|
||||||
*.lock.hcl
|
|
||||||
.terraform/
|
|
||||||
|
|
||||||
**/.coderv2/*
|
|
||||||
**/__debug_bin
|
|
||||||
|
|
||||||
# direnv
|
|
||||||
.envrc
|
|
||||||
*.test
|
|
||||||
|
|
||||||
# Loadtesting
|
|
||||||
.././scaletest/terraform/.terraform
|
|
||||||
.././scaletest/terraform/.terraform.lock.hcl
|
|
||||||
../scaletest/terraform/secrets.tfvars
|
|
||||||
.terraform.tfstate.*
|
|
||||||
|
|
||||||
# Nix
|
|
||||||
result
|
|
||||||
|
|
||||||
# Data dumps from unit tests
|
|
||||||
**/*.test.sql
|
|
||||||
|
|
||||||
# Filebrowser.db
|
|
||||||
**/filebrowser.db
|
|
||||||
|
|
||||||
# pnpm
|
|
||||||
.pnpm-store/
|
|
||||||
# .prettierignore.include:
|
|
||||||
# Helm templates contain variables that are invalid YAML and can't be formatted
|
|
||||||
# by Prettier.
|
|
||||||
../helm/**/templates/*.yaml
|
|
||||||
|
|
||||||
# Terraform state files used in tests, these are automatically generated.
|
|
||||||
# Example: provisioner/terraform/testdata/instance-id/instance-id.tfstate.json
|
|
||||||
**/testdata/**/*.tf*.json
|
|
||||||
|
|
||||||
# Testdata shouldn't be formatted.
|
|
||||||
../scripts/apitypings/testdata/**/*.ts
|
|
||||||
../enterprise/tailnet/testdata/*.golden.html
|
|
||||||
../tailnet/testdata/*.golden.html
|
|
||||||
|
|
||||||
# Generated files shouldn't be formatted.
|
|
||||||
e2e/provisionerGenerated.ts
|
|
||||||
|
|
||||||
**/pnpm-lock.yaml
|
|
||||||
|
|
||||||
# Ignore generated JSON (e.g. examples/examples.gen.json).
|
|
||||||
**/*.gen.json
|
|
@ -1,20 +0,0 @@
|
|||||||
# Code generated by Makefile (../.prettierrc.yaml). DO NOT EDIT.
|
|
||||||
|
|
||||||
# This config file is used in conjunction with `.editorconfig` to specify
|
|
||||||
# formatting for prettier-supported files. See `.editorconfig` and
|
|
||||||
# `site/.editorconfig` for whitespace formatting options.
|
|
||||||
printWidth: 80
|
|
||||||
proseWrap: always
|
|
||||||
trailingComma: all
|
|
||||||
useTabs: false
|
|
||||||
tabWidth: 2
|
|
||||||
overrides:
|
|
||||||
- files:
|
|
||||||
- ../README.md
|
|
||||||
- ../docs/reference/api/**/*.md
|
|
||||||
- ../docs/reference/cli/**/*.md
|
|
||||||
- ../docs/changelogs/*.md
|
|
||||||
- ../.github/**/*.{yaml,yml,toml}
|
|
||||||
- ../scripts/**/*.{yaml,yml,toml}
|
|
||||||
options:
|
|
||||||
proseWrap: preserve
|
|
45
site/biome.json
Normal file
45
site/biome.json
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
"files": {
|
||||||
|
"ignore": ["**/*Generated.ts"]
|
||||||
|
},
|
||||||
|
"formatter": {
|
||||||
|
"indentStyle": "space",
|
||||||
|
"indentWidth": 2
|
||||||
|
},
|
||||||
|
"linter": {
|
||||||
|
"rules": {
|
||||||
|
"a11y": {
|
||||||
|
"noSvgWithoutTitle": { "level": "off" },
|
||||||
|
"useButtonType": { "level": "off" }
|
||||||
|
},
|
||||||
|
"style": {
|
||||||
|
"noNonNullAssertion": { "level": "off" },
|
||||||
|
"noParameterAssign": { "level": "off" },
|
||||||
|
"useDefaultParameterLast": { "level": "off" },
|
||||||
|
"useSelfClosingElements": { "level": "off" }
|
||||||
|
},
|
||||||
|
"suspicious": {
|
||||||
|
"noArrayIndexKey": { "level": "off" },
|
||||||
|
"noThenProperty": { "level": "off" }
|
||||||
|
},
|
||||||
|
"nursery": {
|
||||||
|
"noRestrictedImports": {
|
||||||
|
"level": "error",
|
||||||
|
"options": {
|
||||||
|
"paths": {
|
||||||
|
"@mui/material": "Use @mui/material/<name> instead. See: https://material-ui.com/guides/minimizing-bundle-size/.",
|
||||||
|
"@mui/icons-material": "Use @mui/icons-material/<name> instead. See: https://material-ui.com/guides/minimizing-bundle-size/.",
|
||||||
|
"@mui/material/Avatar": "Use components/Avatar/Avatar instead.",
|
||||||
|
"@mui/material/Alert": "Use components/Alert/Alert instead.",
|
||||||
|
"@mui/material/Popover": "Use components/Popover/Popover instead.",
|
||||||
|
"@mui/material/Typography": "Use native HTML elements instead. Eg: <span>, <p>, <h1>, etc.",
|
||||||
|
"@mui/material/Box": "Use a <div> instead.",
|
||||||
|
"@mui/material/styles": "Import from @emotion/react instead.",
|
||||||
|
"lodash": "Use lodash/<name> instead."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,8 @@
|
|||||||
import type { Page } from "@playwright/test";
|
import type { Page } from "@playwright/test";
|
||||||
import { expect } from "@playwright/test";
|
import { expect } from "@playwright/test";
|
||||||
import { formatDuration, intervalToDuration } from "date-fns";
|
import { API, type DeploymentConfig } from "api/api";
|
||||||
import { type DeploymentConfig, API } from "api/api";
|
|
||||||
import type { SerpentOption } from "api/typesGenerated";
|
import type { SerpentOption } from "api/typesGenerated";
|
||||||
|
import { formatDuration, intervalToDuration } from "date-fns";
|
||||||
import { coderPort } from "./constants";
|
import { coderPort } from "./constants";
|
||||||
import { findSessionToken, randomName } from "./helpers";
|
import { findSessionToken, randomName } from "./helpers";
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import * as path from "path";
|
import * as path from "node:path";
|
||||||
|
|
||||||
export const coderMain = path.join(__dirname, "../../enterprise/cmd/coder");
|
export const coderMain = path.join(__dirname, "../../enterprise/cmd/coder");
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { expect, type Page } from "@playwright/test";
|
import { type Page, expect } from "@playwright/test";
|
||||||
|
|
||||||
type PollingOptions = { timeout?: number; intervals?: number[] };
|
type PollingOptions = { timeout?: number; intervals?: number[] };
|
||||||
|
|
||||||
@ -11,7 +11,10 @@ export const expectUrl = expect.extend({
|
|||||||
let pass: boolean;
|
let pass: boolean;
|
||||||
try {
|
try {
|
||||||
await expect
|
await expect
|
||||||
.poll(() => (actual = new URL(page.url()).pathname), options)
|
.poll(() => {
|
||||||
|
actual = new URL(page.url()).pathname;
|
||||||
|
return actual;
|
||||||
|
}, options)
|
||||||
.toBe(expected);
|
.toBe(expected);
|
||||||
pass = true;
|
pass = true;
|
||||||
} catch {
|
} catch {
|
||||||
@ -24,11 +27,11 @@ export const expectUrl = expect.extend({
|
|||||||
actual,
|
actual,
|
||||||
expected,
|
expected,
|
||||||
message: () =>
|
message: () =>
|
||||||
"The page does not have the expected URL pathname.\n" +
|
`The page does not have the expected URL pathname.\nExpected: ${
|
||||||
`Expected: ${this.isNot ? "not" : ""}${this.utils.printExpected(
|
this.isNot ? "not" : ""
|
||||||
|
}${this.utils.printExpected(
|
||||||
expected,
|
expected,
|
||||||
)}\n` +
|
)}\nActual: ${this.utils.printReceived(actual)}`,
|
||||||
`Actual: ${this.utils.printReceived(actual)}`,
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
import { type BrowserContext, expect, type Page, test } from "@playwright/test";
|
import { type ChildProcess, exec, spawn } from "node:child_process";
|
||||||
import { type ChildProcess, exec, spawn } from "child_process";
|
import { randomUUID } from "node:crypto";
|
||||||
import { randomUUID } from "crypto";
|
import path from "node:path";
|
||||||
import express from "express";
|
import { Duplex } from "node:stream";
|
||||||
import capitalize from "lodash/capitalize";
|
import { type BrowserContext, type Page, expect, test } from "@playwright/test";
|
||||||
import path from "path";
|
|
||||||
import * as ssh from "ssh2";
|
|
||||||
import { Duplex } from "stream";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type {
|
import type {
|
||||||
WorkspaceBuildParameter,
|
|
||||||
UpdateTemplateMeta,
|
UpdateTemplateMeta,
|
||||||
|
WorkspaceBuildParameter,
|
||||||
} from "api/typesGenerated";
|
} from "api/typesGenerated";
|
||||||
|
import express from "express";
|
||||||
|
import capitalize from "lodash/capitalize";
|
||||||
|
import * as ssh from "ssh2";
|
||||||
import { TarWriter } from "utils/tar";
|
import { TarWriter } from "utils/tar";
|
||||||
import {
|
import {
|
||||||
agentPProfPort,
|
agentPProfPort,
|
||||||
@ -26,13 +26,13 @@ import {
|
|||||||
Agent,
|
Agent,
|
||||||
type App,
|
type App,
|
||||||
AppSharingLevel,
|
AppSharingLevel,
|
||||||
|
type ApplyComplete,
|
||||||
|
type ExternalAuthProviderResource,
|
||||||
type ParseComplete,
|
type ParseComplete,
|
||||||
type PlanComplete,
|
type PlanComplete,
|
||||||
type ApplyComplete,
|
|
||||||
type Resource,
|
type Resource,
|
||||||
Response,
|
Response,
|
||||||
type RichParameter,
|
type RichParameter,
|
||||||
type ExternalAuthProviderResource,
|
|
||||||
} from "./provisionerGenerated";
|
} from "./provisionerGenerated";
|
||||||
|
|
||||||
// requiresEnterpriseLicense will skip the test if we're not running with an enterprise license
|
// requiresEnterpriseLicense will skip the test if we're not running with an enterprise license
|
||||||
@ -88,7 +88,7 @@ export const createWorkspace = async (
|
|||||||
|
|
||||||
await page.getByTestId("form-submit").click();
|
await page.getByTestId("form-submit").click();
|
||||||
|
|
||||||
await expectUrl(page).toHavePathName("/@admin/" + name);
|
await expectUrl(page).toHavePathName(`/@admin/${name}`);
|
||||||
|
|
||||||
await page.waitForSelector("*[data-testid='build-status'] >> text=Running", {
|
await page.waitForSelector("*[data-testid='build-status'] >> text=Running", {
|
||||||
state: "visible",
|
state: "visible",
|
||||||
@ -102,7 +102,7 @@ export const verifyParameters = async (
|
|||||||
richParameters: RichParameter[],
|
richParameters: RichParameter[],
|
||||||
expectedBuildParameters: WorkspaceBuildParameter[],
|
expectedBuildParameters: WorkspaceBuildParameter[],
|
||||||
) => {
|
) => {
|
||||||
await page.goto("/@admin/" + workspaceName + "/settings/parameters", {
|
await page.goto(`/@admin/${workspaceName}/settings/parameters`, {
|
||||||
waitUntil: "domcontentloaded",
|
waitUntil: "domcontentloaded",
|
||||||
});
|
});
|
||||||
await expectUrl(page).toHavePathName(
|
await expectUrl(page).toHavePathName(
|
||||||
@ -120,7 +120,7 @@ export const verifyParameters = async (
|
|||||||
}
|
}
|
||||||
|
|
||||||
const parameterLabel = await page.waitForSelector(
|
const parameterLabel = await page.waitForSelector(
|
||||||
"[data-testid='parameter-field-" + richParameter.name + "']",
|
`[data-testid='parameter-field-${richParameter.name}']`,
|
||||||
{ state: "visible" },
|
{ state: "visible" },
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -128,17 +128,13 @@ export const verifyParameters = async (
|
|||||||
|
|
||||||
if (richParameter.type === "bool") {
|
if (richParameter.type === "bool") {
|
||||||
const parameterField = await parameterLabel.waitForSelector(
|
const parameterField = await parameterLabel.waitForSelector(
|
||||||
"[data-testid='parameter-field-bool'] .MuiRadio-root.Mui-checked" +
|
`[data-testid='parameter-field-bool'] .MuiRadio-root.Mui-checked${muiDisabled} input`,
|
||||||
muiDisabled +
|
|
||||||
" input",
|
|
||||||
);
|
);
|
||||||
const value = await parameterField.inputValue();
|
const value = await parameterField.inputValue();
|
||||||
expect(value).toEqual(buildParameter.value);
|
expect(value).toEqual(buildParameter.value);
|
||||||
} else if (richParameter.options.length > 0) {
|
} else if (richParameter.options.length > 0) {
|
||||||
const parameterField = await parameterLabel.waitForSelector(
|
const parameterField = await parameterLabel.waitForSelector(
|
||||||
"[data-testid='parameter-field-options'] .MuiRadio-root.Mui-checked" +
|
`[data-testid='parameter-field-options'] .MuiRadio-root.Mui-checked${muiDisabled} input`,
|
||||||
muiDisabled +
|
|
||||||
" input",
|
|
||||||
);
|
);
|
||||||
const value = await parameterField.inputValue();
|
const value = await parameterField.inputValue();
|
||||||
expect(value).toEqual(buildParameter.value);
|
expect(value).toEqual(buildParameter.value);
|
||||||
@ -147,7 +143,7 @@ export const verifyParameters = async (
|
|||||||
} else {
|
} else {
|
||||||
// text or number
|
// text or number
|
||||||
const parameterField = await parameterLabel.waitForSelector(
|
const parameterField = await parameterLabel.waitForSelector(
|
||||||
"[data-testid='parameter-field-text'] input" + muiDisabled,
|
`[data-testid='parameter-field-text'] input${muiDisabled}`,
|
||||||
);
|
);
|
||||||
const value = await parameterField.inputValue();
|
const value = await parameterField.inputValue();
|
||||||
expect(value).toEqual(buildParameter.value);
|
expect(value).toEqual(buildParameter.value);
|
||||||
@ -266,7 +262,7 @@ export const sshIntoWorkspace = async (
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const stopWorkspace = async (page: Page, workspaceName: string) => {
|
export const stopWorkspace = async (page: Page, workspaceName: string) => {
|
||||||
await page.goto("/@admin/" + workspaceName, {
|
await page.goto(`/@admin/${workspaceName}`, {
|
||||||
waitUntil: "domcontentloaded",
|
waitUntil: "domcontentloaded",
|
||||||
});
|
});
|
||||||
await expectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
|
await expectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
|
||||||
@ -283,9 +279,9 @@ export const buildWorkspaceWithParameters = async (
|
|||||||
workspaceName: string,
|
workspaceName: string,
|
||||||
richParameters: RichParameter[] = [],
|
richParameters: RichParameter[] = [],
|
||||||
buildParameters: WorkspaceBuildParameter[] = [],
|
buildParameters: WorkspaceBuildParameter[] = [],
|
||||||
confirm: boolean = false,
|
confirm = false,
|
||||||
) => {
|
) => {
|
||||||
await page.goto("/@admin/" + workspaceName, {
|
await page.goto(`/@admin/${workspaceName}`, {
|
||||||
waitUntil: "domcontentloaded",
|
waitUntil: "domcontentloaded",
|
||||||
});
|
});
|
||||||
await expectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
|
await expectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
|
||||||
@ -321,7 +317,7 @@ export const downloadCoderVersion = async (
|
|||||||
version = version.slice(1);
|
version = version.slice(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
const binaryName = "coder-e2e-" + version;
|
const binaryName = `coder-e2e-${version}`;
|
||||||
const tempDir = "/tmp/coder-e2e-cache";
|
const tempDir = "/tmp/coder-e2e-cache";
|
||||||
// The install script adds `./bin` automatically to the path :shrug:
|
// The install script adds `./bin` automatically to the path :shrug:
|
||||||
const binaryPath = path.join(tempDir, "bin", binaryName);
|
const binaryPath = path.join(tempDir, "bin", binaryName);
|
||||||
@ -367,7 +363,7 @@ export const downloadCoderVersion = async (
|
|||||||
if (code === 0) {
|
if (code === 0) {
|
||||||
resolve();
|
resolve();
|
||||||
} else {
|
} else {
|
||||||
reject(new Error("install.sh failed with code " + code));
|
reject(new Error(`install.sh failed with code ${code}`));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -385,8 +381,8 @@ export const startAgentWithCommand = async (
|
|||||||
...process.env,
|
...process.env,
|
||||||
CODER_AGENT_URL: `http://localhost:${coderPort}`,
|
CODER_AGENT_URL: `http://localhost:${coderPort}`,
|
||||||
CODER_AGENT_TOKEN: token,
|
CODER_AGENT_TOKEN: token,
|
||||||
CODER_AGENT_PPROF_ADDRESS: "127.0.0.1:" + agentPProfPort,
|
CODER_AGENT_PPROF_ADDRESS: `127.0.0.1:${agentPProfPort}`,
|
||||||
CODER_AGENT_PROMETHEUS_ADDRESS: "127.0.0.1:" + prometheusPort,
|
CODER_AGENT_PROMETHEUS_ADDRESS: `127.0.0.1:${prometheusPort}`,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
cp.stdout.on("data", (data: Buffer) => {
|
cp.stdout.on("data", (data: Buffer) => {
|
||||||
@ -406,7 +402,7 @@ export const startAgentWithCommand = async (
|
|||||||
return cp;
|
return cp;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const stopAgent = async (cp: ChildProcess, goRun: boolean = true) => {
|
export const stopAgent = async (cp: ChildProcess, goRun = true) => {
|
||||||
// When the web server is started with `go run`, it spawns a child process with coder server.
|
// When the web server is started with `go run`, it spawns a child process with coder server.
|
||||||
// `pkill -P` terminates child processes belonging the same group as `go run`.
|
// `pkill -P` terminates child processes belonging the same group as `go run`.
|
||||||
// The command `kill` is used to terminate a web server started as a standalone binary.
|
// The command `kill` is used to terminate a web server started as a standalone binary.
|
||||||
@ -415,7 +411,7 @@ export const stopAgent = async (cp: ChildProcess, goRun: boolean = true) => {
|
|||||||
throw new Error(`exec error: ${JSON.stringify(error)}`);
|
throw new Error(`exec error: ${JSON.stringify(error)}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
await waitUntilUrlIsNotResponding("http://localhost:" + prometheusPort);
|
await waitUntilUrlIsNotResponding(`http://localhost:${prometheusPort}`);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const waitUntilUrlIsNotResponding = async (url: string) => {
|
export const waitUntilUrlIsNotResponding = async (url: string) => {
|
||||||
@ -555,7 +551,7 @@ const createTemplateVersionTar = async (
|
|||||||
try {
|
try {
|
||||||
Agent.encode(agentResource);
|
Agent.encode(agentResource);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
let m = `Error: agentResource encode failed, missing defaults?`;
|
let m = "Error: agentResource encode failed, missing defaults?";
|
||||||
if (e instanceof Error) {
|
if (e instanceof Error) {
|
||||||
if (!e.stack?.includes(e.message)) {
|
if (!e.stack?.includes(e.message)) {
|
||||||
m += `\n${e.name}: ${e.message}`;
|
m += `\n${e.name}: ${e.message}`;
|
||||||
@ -632,7 +628,9 @@ export class Awaiter {
|
|||||||
private callback?: () => void;
|
private callback?: () => void;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.promise = new Promise((r) => (this.callback = r));
|
this.promise = new Promise((r) => {
|
||||||
|
this.callback = r;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public done(): void {
|
public done(): void {
|
||||||
@ -745,22 +743,18 @@ export const fillParameters = async (
|
|||||||
}
|
}
|
||||||
|
|
||||||
const parameterLabel = await page.waitForSelector(
|
const parameterLabel = await page.waitForSelector(
|
||||||
"[data-testid='parameter-field-" + richParameter.name + "']",
|
`[data-testid='parameter-field-${richParameter.name}']`,
|
||||||
{ state: "visible" },
|
{ state: "visible" },
|
||||||
);
|
);
|
||||||
|
|
||||||
if (richParameter.type === "bool") {
|
if (richParameter.type === "bool") {
|
||||||
const parameterField = await parameterLabel.waitForSelector(
|
const parameterField = await parameterLabel.waitForSelector(
|
||||||
"[data-testid='parameter-field-bool'] .MuiRadio-root input[value='" +
|
`[data-testid='parameter-field-bool'] .MuiRadio-root input[value='${buildParameter.value}']`,
|
||||||
buildParameter.value +
|
|
||||||
"']",
|
|
||||||
);
|
);
|
||||||
await parameterField.click();
|
await parameterField.click();
|
||||||
} else if (richParameter.options.length > 0) {
|
} else if (richParameter.options.length > 0) {
|
||||||
const parameterField = await parameterLabel.waitForSelector(
|
const parameterField = await parameterLabel.waitForSelector(
|
||||||
"[data-testid='parameter-field-options'] .MuiRadio-root input[value='" +
|
`[data-testid='parameter-field-options'] .MuiRadio-root input[value='${buildParameter.value}']`,
|
||||||
buildParameter.value +
|
|
||||||
"']",
|
|
||||||
);
|
);
|
||||||
await parameterField.click();
|
await parameterField.click();
|
||||||
} else if (richParameter.type === "list(string)") {
|
} else if (richParameter.type === "list(string)") {
|
||||||
@ -856,7 +850,7 @@ export const updateWorkspace = async (
|
|||||||
richParameters: RichParameter[] = [],
|
richParameters: RichParameter[] = [],
|
||||||
buildParameters: WorkspaceBuildParameter[] = [],
|
buildParameters: WorkspaceBuildParameter[] = [],
|
||||||
) => {
|
) => {
|
||||||
await page.goto("/@admin/" + workspaceName, {
|
await page.goto(`/@admin/${workspaceName}`, {
|
||||||
waitUntil: "domcontentloaded",
|
waitUntil: "domcontentloaded",
|
||||||
});
|
});
|
||||||
await expectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
|
await expectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
|
||||||
@ -878,7 +872,7 @@ export const updateWorkspaceParameters = async (
|
|||||||
richParameters: RichParameter[] = [],
|
richParameters: RichParameter[] = [],
|
||||||
buildParameters: WorkspaceBuildParameter[] = [],
|
buildParameters: WorkspaceBuildParameter[] = [],
|
||||||
) => {
|
) => {
|
||||||
await page.goto("/@admin/" + workspaceName + "/settings/parameters", {
|
await page.goto(`/@admin/${workspaceName}/settings/parameters`, {
|
||||||
waitUntil: "domcontentloaded",
|
waitUntil: "domcontentloaded",
|
||||||
});
|
});
|
||||||
await expectUrl(page).toHavePathName(
|
await expectUrl(page).toHavePathName(
|
||||||
@ -897,7 +891,7 @@ export async function openTerminalWindow(
|
|||||||
page: Page,
|
page: Page,
|
||||||
context: BrowserContext,
|
context: BrowserContext,
|
||||||
workspaceName: string,
|
workspaceName: string,
|
||||||
agentName: string = "dev",
|
agentName = "dev",
|
||||||
): Promise<Page> {
|
): Promise<Page> {
|
||||||
// Wait for the web terminal to open in a new tab
|
// Wait for the web terminal to open in a new tab
|
||||||
const pagePromise = context.waitForEvent("page");
|
const pagePromise = context.waitForEvent("page");
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
|
import http from "node:http";
|
||||||
import type { BrowserContext, Page } from "@playwright/test";
|
import type { BrowserContext, Page } from "@playwright/test";
|
||||||
import http from "http";
|
|
||||||
import { coderPort, gitAuth } from "./constants";
|
import { coderPort, gitAuth } from "./constants";
|
||||||
|
|
||||||
export const beforeCoderTest = async (page: Page) => {
|
export const beforeCoderTest = async (page: Page) => {
|
||||||
// eslint-disable-next-line no-console -- Show everything that was printed with console.log()
|
// eslint-disable-next-line no-console -- Show everything that was printed with console.log()
|
||||||
page.on("console", (msg) => console.log("[onConsole] " + msg.text()));
|
page.on("console", (msg) => console.log(`[onConsole] ${msg.text()}`));
|
||||||
|
|
||||||
page.on("request", (request) => {
|
page.on("request", (request) => {
|
||||||
if (!isApiCall(request.url())) {
|
if (!isApiCall(request.url())) {
|
||||||
|
@ -132,7 +132,7 @@ export const seventhParameter: RichParameter = {
|
|||||||
// It helps to avoid cross-test interference when user-auto-fill triggers on
|
// It helps to avoid cross-test interference when user-auto-fill triggers on
|
||||||
// the same parameter name.
|
// the same parameter name.
|
||||||
export const randParamName = (p: RichParameter): RichParameter => {
|
export const randParamName = (p: RichParameter): RichParameter => {
|
||||||
const name = p.name + "_" + Math.random().toString(36).substring(7);
|
const name = `${p.name}_${Math.random().toString(36).substring(7)}`;
|
||||||
return { ...p, name: name };
|
return { ...p, name: name };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
import { execSync } from "node:child_process";
|
||||||
|
import * as path from "node:path";
|
||||||
import { defineConfig } from "@playwright/test";
|
import { defineConfig } from "@playwright/test";
|
||||||
import { execSync } from "child_process";
|
|
||||||
import * as path from "path";
|
|
||||||
import {
|
import {
|
||||||
coderMain,
|
coderMain,
|
||||||
coderPort,
|
coderPort,
|
||||||
@ -38,14 +38,15 @@ try {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!hasTerraform || !hasDocker) {
|
if (!hasTerraform || !hasDocker) {
|
||||||
const msg =
|
const msg = `Terraform provisioners require docker & terraform binaries to function. \n${
|
||||||
"Terraform provisioners require docker & terraform binaries to function. \n" +
|
hasTerraform
|
||||||
(hasTerraform
|
|
||||||
? ""
|
? ""
|
||||||
: "\tThe `terraform` executable is not present in the runtime environment.\n") +
|
: "\tThe `terraform` executable is not present in the runtime environment.\n"
|
||||||
(hasDocker
|
}${
|
||||||
|
hasDocker
|
||||||
? ""
|
? ""
|
||||||
: "\tThe `docker` executable is not present in the runtime environment.\n");
|
: "\tThe `docker` executable is not present in the runtime environment.\n"
|
||||||
|
}`;
|
||||||
throw new Error(msg);
|
throw new Error(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,7 +97,7 @@ export default defineConfig({
|
|||||||
"--provisioner-daemons 10",
|
"--provisioner-daemons 10",
|
||||||
// TODO: Enable some terraform provisioners
|
// TODO: Enable some terraform provisioners
|
||||||
`--provisioner-types=echo${requireTerraformTests ? ",terraform" : ""}`,
|
`--provisioner-types=echo${requireTerraformTests ? ",terraform" : ""}`,
|
||||||
`--provisioner-daemons=10`,
|
"--provisioner-daemons=10",
|
||||||
"--web-terminal-renderer=dom",
|
"--web-terminal-renderer=dom",
|
||||||
"--pprof-enable",
|
"--pprof-enable",
|
||||||
]
|
]
|
||||||
@ -146,7 +147,7 @@ export default defineConfig({
|
|||||||
gitAuth.webPort,
|
gitAuth.webPort,
|
||||||
gitAuth.validatePath,
|
gitAuth.validatePath,
|
||||||
),
|
),
|
||||||
CODER_PPROF_ADDRESS: "127.0.0.1:" + coderdPProfPort,
|
CODER_PPROF_ADDRESS: `127.0.0.1:${coderdPProfPort}`,
|
||||||
CODER_EXPERIMENTS: `multi-organization,${e2eFakeExperiment1},${e2eFakeExperiment2}`,
|
CODER_EXPERIMENTS: `multi-organization,${e2eFakeExperiment1},${e2eFakeExperiment2}`,
|
||||||
|
|
||||||
// Tests for Deployment / User Authentication / OIDC
|
// Tests for Deployment / User Authentication / OIDC
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { spawn, type ChildProcess, exec } from "child_process";
|
import { type ChildProcess, exec, spawn } from "node:child_process";
|
||||||
import { coderMain, coderPort, workspaceProxyPort } from "./constants";
|
import { coderMain, coderPort, workspaceProxyPort } from "./constants";
|
||||||
import { waitUntilUrlIsNotResponding } from "./helpers";
|
import { waitUntilUrlIsNotResponding } from "./helpers";
|
||||||
|
|
||||||
@ -28,10 +28,7 @@ export const startWorkspaceProxy = async (
|
|||||||
return cp;
|
return cp;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const stopWorkspaceProxy = async (
|
export const stopWorkspaceProxy = async (cp: ChildProcess, goRun = true) => {
|
||||||
cp: ChildProcess,
|
|
||||||
goRun: boolean = true,
|
|
||||||
) => {
|
|
||||||
exec(goRun ? `pkill -P ${cp.pid}` : `kill ${cp.pid}`, (error) => {
|
exec(goRun ? `pkill -P ${cp.pid}` : `kill ${cp.pid}`, (error) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
throw new Error(`exec error: ${JSON.stringify(error)}`);
|
throw new Error(`exec error: ${JSON.stringify(error)}`);
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
|
import * as fs from "node:fs/promises";
|
||||||
|
import type { Writable } from "node:stream";
|
||||||
/* eslint-disable no-console -- Logging is sort of the whole point here */
|
/* eslint-disable no-console -- Logging is sort of the whole point here */
|
||||||
import type {
|
import type {
|
||||||
FullConfig,
|
FullConfig,
|
||||||
Suite,
|
|
||||||
TestCase,
|
|
||||||
TestResult,
|
|
||||||
FullResult,
|
FullResult,
|
||||||
Reporter,
|
Reporter,
|
||||||
|
Suite,
|
||||||
|
TestCase,
|
||||||
TestError,
|
TestError,
|
||||||
|
TestResult,
|
||||||
} from "@playwright/test/reporter";
|
} from "@playwright/test/reporter";
|
||||||
import * as fs from "fs/promises";
|
|
||||||
import type { Writable } from "stream";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import { coderdPProfPort, enterpriseLicense } from "./constants";
|
import { coderdPProfPort, enterpriseLicense } from "./constants";
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
import { randomUUID } from "node:crypto";
|
||||||
|
import * as http from "node:http";
|
||||||
import { test } from "@playwright/test";
|
import { test } from "@playwright/test";
|
||||||
import { randomUUID } from "crypto";
|
|
||||||
import * as http from "http";
|
|
||||||
import {
|
import {
|
||||||
createTemplate,
|
createTemplate,
|
||||||
createWorkspace,
|
createWorkspace,
|
||||||
@ -37,7 +37,7 @@ test("app", async ({ context, page }) => {
|
|||||||
token,
|
token,
|
||||||
apps: [
|
apps: [
|
||||||
{
|
{
|
||||||
url: "http://localhost:" + addr.port,
|
url: `http://localhost:${addr.port}`,
|
||||||
displayName: appName,
|
displayName: appName,
|
||||||
order: 0,
|
order: 0,
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import type { Page } from "@playwright/test";
|
import type { Page } from "@playwright/test";
|
||||||
import { expect, test } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { type DeploymentConfig, API } from "api/api";
|
import { API, type DeploymentConfig } from "api/api";
|
||||||
import {
|
import {
|
||||||
findConfigOption,
|
findConfigOption,
|
||||||
setupApiCalls,
|
setupApiCalls,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect, type Page } from "@playwright/test";
|
import { type Page, expect, test } from "@playwright/test";
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import { setupApiCalls } from "../../api";
|
import { setupApiCalls } from "../../api";
|
||||||
import { coderPort, workspaceProxyPort } from "../../constants";
|
import { coderPort, workspaceProxyPort } from "../../constants";
|
||||||
@ -23,7 +23,7 @@ test("default proxy is online", async ({ page }) => {
|
|||||||
const workspaceProxyStatus = workspaceProxyPrimary.locator("td.status span");
|
const workspaceProxyStatus = workspaceProxyPrimary.locator("td.status span");
|
||||||
|
|
||||||
await expect(workspaceProxyName).toHaveText("Default");
|
await expect(workspaceProxyName).toHaveText("Default");
|
||||||
await expect(workspaceProxyURL).toHaveText("http://localhost:" + coderPort);
|
await expect(workspaceProxyURL).toHaveText(`http://localhost:${coderPort}`);
|
||||||
await expect(workspaceProxyStatus).toHaveText("Healthy");
|
await expect(workspaceProxyStatus).toHaveText("Healthy");
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ test("custom proxy is online", async ({ page }) => {
|
|||||||
waitUntil: "domcontentloaded",
|
waitUntil: "domcontentloaded",
|
||||||
});
|
});
|
||||||
|
|
||||||
const workspaceProxy = page.locator(`table.MuiTable-root tr`, {
|
const workspaceProxy = page.locator("table.MuiTable-root tr", {
|
||||||
hasText: proxyName,
|
hasText: proxyName,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ const waitUntilWorkspaceProxyIsHealthy = async (
|
|||||||
while (retries < maxRetries) {
|
while (retries < maxRetries) {
|
||||||
await page.reload();
|
await page.reload();
|
||||||
|
|
||||||
const workspaceProxy = page.locator(`table.MuiTable-root tr`, {
|
const workspaceProxy = page.locator("table.MuiTable-root tr", {
|
||||||
hasText: proxyName,
|
hasText: proxyName,
|
||||||
});
|
});
|
||||||
const workspaceProxyStatus = workspaceProxy.locator("td.status span");
|
const workspaceProxyStatus = workspaceProxy.locator("td.status span");
|
||||||
|
@ -26,8 +26,7 @@ test.beforeAll(async ({ baseURL }) => {
|
|||||||
});
|
});
|
||||||
srv.use(gitAuth.authPath, (req, res) => {
|
srv.use(gitAuth.authPath, (req, res) => {
|
||||||
res.redirect(
|
res.redirect(
|
||||||
`${baseURL}/external-auth/${gitAuth.webProvider}/callback?code=1234&state=` +
|
`${baseURL}/external-auth/${gitAuth.webProvider}/callback?code=1234&state=${req.query.state}`,
|
||||||
req.query.state,
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import {
|
import {
|
||||||
createGroup,
|
createGroup,
|
||||||
createUser,
|
createUser,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { createUser, getCurrentOrgId, setupApiCalls } from "../../api";
|
import { createUser, getCurrentOrgId, setupApiCalls } from "../../api";
|
||||||
import { requiresEnterpriseLicense } from "../../helpers";
|
import { requiresEnterpriseLicense } from "../../helpers";
|
||||||
import { beforeCoderTest } from "../../hooks";
|
import { beforeCoderTest } from "../../hooks";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { randomName, requiresEnterpriseLicense } from "../../helpers";
|
import { randomName, requiresEnterpriseLicense } from "../../helpers";
|
||||||
import { beforeCoderTest } from "../../hooks";
|
import { beforeCoderTest } from "../../hooks";
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { createGroup, getCurrentOrgId, setupApiCalls } from "../../api";
|
import { createGroup, getCurrentOrgId, setupApiCalls } from "../../api";
|
||||||
import { requiresEnterpriseLicense } from "../../helpers";
|
import { requiresEnterpriseLicense } from "../../helpers";
|
||||||
import { beforeCoderTest } from "../../hooks";
|
import { beforeCoderTest } from "../../hooks";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { createGroup, getCurrentOrgId, setupApiCalls } from "../../api";
|
import { createGroup, getCurrentOrgId, setupApiCalls } from "../../api";
|
||||||
import { requiresEnterpriseLicense } from "../../helpers";
|
import { requiresEnterpriseLicense } from "../../helpers";
|
||||||
import { beforeCoderTest } from "../../hooks";
|
import { beforeCoderTest } from "../../hooks";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import {
|
import {
|
||||||
createGroup,
|
createGroup,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { setupApiCalls } from "../api";
|
import { setupApiCalls } from "../api";
|
||||||
import { expectUrl } from "../expectUrl";
|
import { expectUrl } from "../expectUrl";
|
||||||
import { requiresEnterpriseLicense } from "../helpers";
|
import { requiresEnterpriseLicense } from "../helpers";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
import { randomUUID } from "node:crypto";
|
||||||
import { test } from "@playwright/test";
|
import { test } from "@playwright/test";
|
||||||
import { randomUUID } from "crypto";
|
|
||||||
import {
|
import {
|
||||||
createTemplate,
|
createTemplate,
|
||||||
createWorkspace,
|
createWorkspace,
|
||||||
@ -16,7 +16,7 @@ const agentVersion = "v2.12.1";
|
|||||||
|
|
||||||
test.beforeEach(({ page }) => beforeCoderTest(page));
|
test.beforeEach(({ page }) => beforeCoderTest(page));
|
||||||
|
|
||||||
test("ssh with agent " + agentVersion, async ({ page }) => {
|
test(`ssh with agent ${agentVersion}`, async ({ page }) => {
|
||||||
test.setTimeout(40_000); // This is a slow test, 20s may not be enough on Mac.
|
test.setTimeout(40_000); // This is a slow test, 20s may not be enough on Mac.
|
||||||
|
|
||||||
const token = randomUUID();
|
const token = randomUUID();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
import { randomUUID } from "node:crypto";
|
||||||
import { test } from "@playwright/test";
|
import { test } from "@playwright/test";
|
||||||
import { randomUUID } from "crypto";
|
|
||||||
import {
|
import {
|
||||||
createTemplate,
|
createTemplate,
|
||||||
createWorkspace,
|
createWorkspace,
|
||||||
@ -16,7 +16,7 @@ const clientVersion = "v0.27.0";
|
|||||||
|
|
||||||
test.beforeEach(({ page }) => beforeCoderTest(page));
|
test.beforeEach(({ page }) => beforeCoderTest(page));
|
||||||
|
|
||||||
test("ssh with client " + clientVersion, async ({ page }) => {
|
test(`ssh with client ${clientVersion}`, async ({ page }) => {
|
||||||
const token = randomUUID();
|
const token = randomUUID();
|
||||||
const template = await createTemplate(page, {
|
const template = await createTemplate(page, {
|
||||||
apply: [
|
apply: [
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { beforeCoderTest } from "../../hooks";
|
import { beforeCoderTest } from "../../hooks";
|
||||||
|
|
||||||
test.beforeEach(({ page }) => beforeCoderTest(page));
|
test.beforeEach(({ page }) => beforeCoderTest(page));
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { randomName } from "../../helpers";
|
import { randomName } from "../../helpers";
|
||||||
import { beforeCoderTest } from "../../hooks";
|
import { beforeCoderTest } from "../../hooks";
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { createUser, getCurrentOrgId, setupApiCalls } from "../../api";
|
import { createUser, getCurrentOrgId, setupApiCalls } from "../../api";
|
||||||
import { beforeCoderTest } from "../../hooks";
|
import { beforeCoderTest } from "../../hooks";
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
import { randomUUID } from "node:crypto";
|
||||||
import { test } from "@playwright/test";
|
import { test } from "@playwright/test";
|
||||||
import { randomUUID } from "crypto";
|
|
||||||
import {
|
import {
|
||||||
createTemplate,
|
createTemplate,
|
||||||
createWorkspace,
|
createWorkspace,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { username } from "../../constants";
|
import { username } from "../../constants";
|
||||||
import {
|
import {
|
||||||
createTemplate,
|
createTemplate,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test, expect } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import {
|
import {
|
||||||
StarterTemplates,
|
StarterTemplates,
|
||||||
createTemplate,
|
createTemplate,
|
||||||
@ -10,14 +10,14 @@ import {
|
|||||||
} from "../../helpers";
|
} from "../../helpers";
|
||||||
import { beforeCoderTest } from "../../hooks";
|
import { beforeCoderTest } from "../../hooks";
|
||||||
import {
|
import {
|
||||||
secondParameter,
|
|
||||||
fourthParameter,
|
|
||||||
fifthParameter,
|
fifthParameter,
|
||||||
firstParameter,
|
firstParameter,
|
||||||
thirdParameter,
|
fourthParameter,
|
||||||
|
randParamName,
|
||||||
|
secondParameter,
|
||||||
seventhParameter,
|
seventhParameter,
|
||||||
sixthParameter,
|
sixthParameter,
|
||||||
randParamName,
|
thirdParameter,
|
||||||
} from "../../parameters";
|
} from "../../parameters";
|
||||||
import type { RichParameter } from "../../provisionerGenerated";
|
import type { RichParameter } from "../../provisionerGenerated";
|
||||||
|
|
||||||
|
@ -12,9 +12,9 @@ import { beforeCoderTest } from "../../hooks";
|
|||||||
import {
|
import {
|
||||||
fifthParameter,
|
fifthParameter,
|
||||||
firstParameter,
|
firstParameter,
|
||||||
|
secondBuildOption,
|
||||||
secondParameter,
|
secondParameter,
|
||||||
sixthParameter,
|
sixthParameter,
|
||||||
secondBuildOption,
|
|
||||||
} from "../../parameters";
|
} from "../../parameters";
|
||||||
import type { RichParameter } from "../../provisionerGenerated";
|
import type { RichParameter } from "../../provisionerGenerated";
|
||||||
|
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
// Toggle eslint --fix by specifying the `FIX` env.
|
|
||||||
const fix = !!process.env.FIX;
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
cliOptions: {
|
|
||||||
ext: [".js", ".ts", ".tsx"],
|
|
||||||
ignorePath: ".eslintignore",
|
|
||||||
cache: false,
|
|
||||||
fix,
|
|
||||||
resolvePluginsRelativeTo: ".",
|
|
||||||
maxWarnings: 0,
|
|
||||||
},
|
|
||||||
};
|
|
@ -49,21 +49,6 @@ module.exports = {
|
|||||||
"^@fontsource": "<rootDir>/src/testHelpers/styleMock.ts",
|
"^@fontsource": "<rootDir>/src/testHelpers/styleMock.ts",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
displayName: "lint",
|
|
||||||
runner: "jest-runner-eslint",
|
|
||||||
testMatch: [
|
|
||||||
"<rootDir>/**/*.js",
|
|
||||||
"<rootDir>/**/*.ts",
|
|
||||||
"<rootDir>/**/*.tsx",
|
|
||||||
],
|
|
||||||
testPathIgnorePatterns: [
|
|
||||||
"/out/",
|
|
||||||
"/_jest/",
|
|
||||||
"jest.config.js",
|
|
||||||
"jest-runner.*.js",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
collectCoverageFrom: [
|
collectCoverageFrom: [
|
||||||
// included files
|
// included files
|
||||||
|
@ -1,193 +1,177 @@
|
|||||||
{
|
{
|
||||||
"name": "coder-v2",
|
"name": "coder-v2",
|
||||||
"description": "Coder V2 (Workspaces V2)",
|
"description": "Coder V2 (Workspaces V2)",
|
||||||
"repository": "https://github.com/coder/coder",
|
"repository": "https://github.com/coder/coder",
|
||||||
"private": true,
|
"private": true,
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "NODE_ENV=production pnpm vite build",
|
"build": "NODE_ENV=production pnpm vite build",
|
||||||
"check:all": "pnpm format:check && pnpm lint && pnpm test",
|
"check": "biome check --error-on-warnings e2e/ src/",
|
||||||
"chromatic": "chromatic",
|
"check:fix": "biome check --error-on-warnings --fix e2e/ src/",
|
||||||
"dev": "vite",
|
"check:all": "pnpm check && pnpm test",
|
||||||
"format": "prettier --cache --write '../**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'",
|
"chromatic": "chromatic",
|
||||||
"format:check": "prettier --cache --check '../**/*.{css,html,js,json,jsx,md,ts,tsx,yaml,yml}'",
|
"dev": "vite",
|
||||||
"lint": "pnpm run lint:types && jest --selectProjects lint",
|
"format": "biome format --write e2e/ src/",
|
||||||
"lint:fix": "eslint --fix e2e/ src/",
|
"format:check": "biome format e2e/ src/",
|
||||||
"lint:types": "tsc -p .",
|
"lint": "pnpm run lint:check && pnpm run lint:types",
|
||||||
"playwright:install": "playwright install --with-deps chromium",
|
"lint:check": " biome lint --error-on-warnings e2e/ src/",
|
||||||
"playwright:test": "playwright test --config=e2e/playwright.config.ts",
|
"lint:fix": " biome lint --error-on-warnings --write e2e/ src/",
|
||||||
"playwright:test-ui": "playwright test --config=e2e/playwright.config.ts --ui $([[ \"$CODER\" == \"true\" ]] && echo --ui-port=7500 --ui-host=0.0.0.0)",
|
"lint:types": "tsc -p .",
|
||||||
"gen:provisioner": "protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto --ts_proto_out=./e2e/ --ts_proto_opt=outputJsonMethods=false,outputEncodeMethods=encode-no-creation,outputClientImpl=false,nestJs=false,outputPartialMethods=false,fileSuffix=Generated,suffix=hey -I ../provisionersdk/proto ../provisionersdk/proto/provisioner.proto && pnpm exec prettier --ignore-path '/dev/null' --cache --write './e2e/provisionerGenerated.ts'",
|
"playwright:install": "playwright install --with-deps chromium",
|
||||||
"storybook": "STORYBOOK=true storybook dev -p 6006",
|
"playwright:test": "playwright test --config=e2e/playwright.config.ts",
|
||||||
"storybook:build": "storybook build",
|
"playwright:test-ui": "playwright test --config=e2e/playwright.config.ts --ui $([[ \"$CODER\" == \"true\" ]] && echo --ui-port=7500 --ui-host=0.0.0.0)",
|
||||||
"storybook:ci": "storybook build --test",
|
"gen:provisioner": "protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto --ts_proto_out=./e2e/ --ts_proto_opt=outputJsonMethods=false,outputEncodeMethods=encode-no-creation,outputClientImpl=false,nestJs=false,outputPartialMethods=false,fileSuffix=Generated,suffix=hey -I ../provisionersdk/proto ../provisionersdk/proto/provisioner.proto && pnpm exec prettier --ignore-path '/dev/null' --cache --write './e2e/provisionerGenerated.ts'",
|
||||||
"test": "jest --selectProjects test",
|
"storybook": "STORYBOOK=true storybook dev -p 6006",
|
||||||
"test:ci": "jest --selectProjects test --silent",
|
"storybook:build": "storybook build",
|
||||||
"test:coverage": "jest --selectProjects test --collectCoverage",
|
"storybook:ci": "storybook build --test",
|
||||||
"test:watch": "jest --selectProjects test --watch",
|
"test": "jest --selectProjects test",
|
||||||
"test:storybook": "test-storybook",
|
"test:ci": "jest --selectProjects test --silent",
|
||||||
"stats": "STATS=true pnpm build && npx http-server ./stats -p 8081 -c-1",
|
"test:coverage": "jest --selectProjects test --collectCoverage",
|
||||||
"deadcode": "ts-prune | grep -v \".stories\\|.config\\|e2e\\|__mocks__\\|used in module\\|testHelpers\\|typesGenerated\" || echo \"No deadcode found.\""
|
"test:watch": "jest --selectProjects test --watch",
|
||||||
},
|
"test:storybook": "test-storybook",
|
||||||
"dependencies": {
|
"stats": "STATS=true pnpm build && npx http-server ./stats -p 8081 -c-1",
|
||||||
"@alwaysmeticulous/recorder-loader": "2.137.0",
|
"deadcode": "ts-prune | grep -v \".stories\\|.config\\|e2e\\|__mocks__\\|used in module\\|testHelpers\\|typesGenerated\" || echo \"No deadcode found.\""
|
||||||
"@emoji-mart/data": "1.2.1",
|
},
|
||||||
"@emoji-mart/react": "1.1.1",
|
"dependencies": {
|
||||||
"@emotion/css": "11.11.2",
|
"@alwaysmeticulous/recorder-loader": "2.137.0",
|
||||||
"@emotion/react": "11.11.4",
|
"@emoji-mart/data": "1.2.1",
|
||||||
"@emotion/styled": "11.11.5",
|
"@emoji-mart/react": "1.1.1",
|
||||||
"@fastly/performance-observer-polyfill": "2.0.0",
|
"@emotion/css": "11.11.2",
|
||||||
"@fontsource-variable/inter": "5.0.15",
|
"@emotion/react": "11.11.4",
|
||||||
"@fontsource/ibm-plex-mono": "5.0.5",
|
"@emotion/styled": "11.11.5",
|
||||||
"@monaco-editor/react": "4.6.0",
|
"@fastly/performance-observer-polyfill": "2.0.0",
|
||||||
"@mui/icons-material": "5.16.0",
|
"@fontsource-variable/inter": "5.0.15",
|
||||||
"@mui/lab": "5.0.0-alpha.129",
|
"@fontsource/ibm-plex-mono": "5.0.5",
|
||||||
"@mui/material": "5.16.0",
|
"@monaco-editor/react": "4.6.0",
|
||||||
"@mui/system": "5.16.0",
|
"@mui/icons-material": "5.16.0",
|
||||||
"@mui/utils": "5.16.0",
|
"@mui/lab": "5.0.0-alpha.129",
|
||||||
"@mui/x-tree-view": "7.9.0",
|
"@mui/material": "5.16.0",
|
||||||
"@tanstack/react-query-devtools": "4.35.3",
|
"@mui/system": "5.16.0",
|
||||||
"@xterm/addon-canvas": "0.7.0",
|
"@mui/utils": "5.16.0",
|
||||||
"@xterm/addon-fit": "0.10.0",
|
"@mui/x-tree-view": "7.9.0",
|
||||||
"@xterm/addon-unicode11": "0.8.0",
|
"@tanstack/react-query-devtools": "4.35.3",
|
||||||
"@xterm/addon-web-links": "0.11.0",
|
"@xterm/addon-canvas": "0.7.0",
|
||||||
"@xterm/addon-webgl": "0.18.0",
|
"@xterm/addon-fit": "0.10.0",
|
||||||
"@xterm/xterm": "5.5.0",
|
"@xterm/addon-unicode11": "0.8.0",
|
||||||
"ansi-to-html": "0.7.2",
|
"@xterm/addon-web-links": "0.11.0",
|
||||||
"axios": "1.7.2",
|
"@xterm/addon-webgl": "0.18.0",
|
||||||
"canvas": "3.0.0-rc2",
|
"@xterm/xterm": "5.5.0",
|
||||||
"chart.js": "4.4.0",
|
"ansi-to-html": "0.7.2",
|
||||||
"chartjs-adapter-date-fns": "3.0.0",
|
"axios": "1.7.2",
|
||||||
"chartjs-plugin-annotation": "3.0.1",
|
"canvas": "3.0.0-rc2",
|
||||||
"chroma-js": "2.4.2",
|
"chart.js": "4.4.0",
|
||||||
"color-convert": "2.0.1",
|
"chartjs-adapter-date-fns": "3.0.0",
|
||||||
"cron-parser": "4.9.0",
|
"chartjs-plugin-annotation": "3.0.1",
|
||||||
"cronstrue": "2.43.0",
|
"chroma-js": "2.4.2",
|
||||||
"date-fns": "2.30.0",
|
"color-convert": "2.0.1",
|
||||||
"dayjs": "1.11.4",
|
"cron-parser": "4.9.0",
|
||||||
"emoji-mart": "5.6.0",
|
"cronstrue": "2.43.0",
|
||||||
"file-saver": "2.0.5",
|
"date-fns": "2.30.0",
|
||||||
"formik": "2.4.6",
|
"dayjs": "1.11.4",
|
||||||
"front-matter": "4.0.2",
|
"emoji-mart": "5.6.0",
|
||||||
"jszip": "3.10.1",
|
"file-saver": "2.0.5",
|
||||||
"lodash": "4.17.21",
|
"formik": "2.4.6",
|
||||||
"monaco-editor": "0.50.0",
|
"front-matter": "4.0.2",
|
||||||
"pretty-bytes": "6.1.0",
|
"jszip": "3.10.1",
|
||||||
"react": "18.3.1",
|
"lodash": "4.17.21",
|
||||||
"react-chartjs-2": "5.2.0",
|
"monaco-editor": "0.50.0",
|
||||||
"react-color": "2.19.3",
|
"pretty-bytes": "6.1.0",
|
||||||
"react-confetti": "6.1.0",
|
"react": "18.3.1",
|
||||||
"react-date-range": "1.4.0",
|
"react-chartjs-2": "5.2.0",
|
||||||
"react-dom": "18.3.1",
|
"react-color": "2.19.3",
|
||||||
"react-helmet-async": "2.0.5",
|
"react-confetti": "6.1.0",
|
||||||
"react-markdown": "9.0.1",
|
"react-date-range": "1.4.0",
|
||||||
"react-query": "npm:@tanstack/react-query@4.35.3",
|
"react-dom": "18.3.1",
|
||||||
"react-router-dom": "6.24.0",
|
"react-helmet-async": "2.0.5",
|
||||||
"react-syntax-highlighter": "15.5.0",
|
"react-markdown": "9.0.1",
|
||||||
"react-virtualized-auto-sizer": "1.0.24",
|
"react-query": "npm:@tanstack/react-query@4.35.3",
|
||||||
"react-window": "1.8.10",
|
"react-router-dom": "6.24.0",
|
||||||
"remark-gfm": "4.0.0",
|
"react-syntax-highlighter": "15.5.0",
|
||||||
"rollup-plugin-visualizer": "5.12.0",
|
"react-virtualized-auto-sizer": "1.0.24",
|
||||||
"semver": "7.6.2",
|
"react-window": "1.8.10",
|
||||||
"tzdata": "1.0.30",
|
"remark-gfm": "4.0.0",
|
||||||
"ua-parser-js": "1.0.33",
|
"rollup-plugin-visualizer": "5.12.0",
|
||||||
"ufuzzy": "npm:@leeoniya/ufuzzy@1.0.10",
|
"semver": "7.6.2",
|
||||||
"undici": "6.19.2",
|
"tzdata": "1.0.30",
|
||||||
"unique-names-generator": "4.7.1",
|
"ua-parser-js": "1.0.33",
|
||||||
"uuid": "9.0.0",
|
"ufuzzy": "npm:@leeoniya/ufuzzy@1.0.10",
|
||||||
"yup": "1.4.0"
|
"undici": "6.19.2",
|
||||||
},
|
"unique-names-generator": "4.7.1",
|
||||||
"devDependencies": {
|
"uuid": "9.0.0",
|
||||||
"@chromatic-com/storybook": "1.6.0",
|
"yup": "1.4.0"
|
||||||
"@octokit/types": "12.3.0",
|
},
|
||||||
"@playwright/test": "1.40.1",
|
"devDependencies": {
|
||||||
"@storybook/addon-actions": "8.1.11",
|
"@biomejs/biome": "1.8.3",
|
||||||
"@storybook/addon-essentials": "8.1.11",
|
"@chromatic-com/storybook": "1.6.0",
|
||||||
"@storybook/addon-interactions": "8.1.11",
|
"@octokit/types": "12.3.0",
|
||||||
"@storybook/addon-links": "8.1.11",
|
"@playwright/test": "1.40.1",
|
||||||
"@storybook/addon-mdx-gfm": "8.1.11",
|
"@storybook/addon-actions": "8.1.11",
|
||||||
"@storybook/addon-themes": "8.1.11",
|
"@storybook/addon-essentials": "8.1.11",
|
||||||
"@storybook/preview-api": "8.1.11",
|
"@storybook/addon-interactions": "8.1.11",
|
||||||
"@storybook/react": "8.1.11",
|
"@storybook/addon-links": "8.1.11",
|
||||||
"@storybook/react-vite": "8.1.11",
|
"@storybook/addon-mdx-gfm": "8.1.11",
|
||||||
"@storybook/test": "8.1.11",
|
"@storybook/addon-themes": "8.1.11",
|
||||||
"@swc/core": "1.3.38",
|
"@storybook/preview-api": "8.1.11",
|
||||||
"@swc/jest": "0.2.24",
|
"@storybook/react": "8.1.11",
|
||||||
"@testing-library/jest-dom": "6.4.6",
|
"@storybook/react-vite": "8.1.11",
|
||||||
"@testing-library/react": "14.1.0",
|
"@storybook/test": "8.1.11",
|
||||||
"@testing-library/react-hooks": "8.0.1",
|
"@swc/core": "1.3.38",
|
||||||
"@testing-library/user-event": "14.5.1",
|
"@swc/jest": "0.2.24",
|
||||||
"@types/chroma-js": "2.4.0",
|
"@testing-library/jest-dom": "6.4.6",
|
||||||
"@types/color-convert": "2.0.0",
|
"@testing-library/react": "14.1.0",
|
||||||
"@types/express": "4.17.17",
|
"@testing-library/react-hooks": "8.0.1",
|
||||||
"@types/file-saver": "2.0.7",
|
"@testing-library/user-event": "14.5.1",
|
||||||
"@types/jest": "29.5.2",
|
"@types/chroma-js": "2.4.0",
|
||||||
"@types/lodash": "4.17.6",
|
"@types/color-convert": "2.0.0",
|
||||||
"@types/node": "18.19.0",
|
"@types/express": "4.17.17",
|
||||||
"@types/react": "18.2.6",
|
"@types/file-saver": "2.0.7",
|
||||||
"@types/react-color": "3.0.6",
|
"@types/jest": "29.5.2",
|
||||||
"@types/react-date-range": "1.4.4",
|
"@types/lodash": "4.17.6",
|
||||||
"@types/react-dom": "18.2.4",
|
"@types/node": "18.19.0",
|
||||||
"@types/react-syntax-highlighter": "15.5.13",
|
"@types/react": "18.2.6",
|
||||||
"@types/react-virtualized-auto-sizer": "1.0.4",
|
"@types/react-color": "3.0.6",
|
||||||
"@types/react-window": "1.8.8",
|
"@types/react-date-range": "1.4.4",
|
||||||
"@types/semver": "7.5.8",
|
"@types/react-dom": "18.2.4",
|
||||||
"@types/ssh2": "1.15.0",
|
"@types/react-syntax-highlighter": "15.5.13",
|
||||||
"@types/ua-parser-js": "0.7.36",
|
"@types/react-virtualized-auto-sizer": "1.0.4",
|
||||||
"@types/uuid": "9.0.2",
|
"@types/react-window": "1.8.8",
|
||||||
"@typescript-eslint/eslint-plugin": "6.9.1",
|
"@types/semver": "7.5.8",
|
||||||
"@typescript-eslint/parser": "6.9.1",
|
"@types/ssh2": "1.15.0",
|
||||||
"@vitejs/plugin-react": "4.3.1",
|
"@types/ua-parser-js": "0.7.36",
|
||||||
"chromatic": "11.3.0",
|
"@types/uuid": "9.0.2",
|
||||||
"eslint": "8.52.0",
|
"@vitejs/plugin-react": "4.3.1",
|
||||||
"eslint-config-prettier": "9.0.0",
|
"chromatic": "11.3.0",
|
||||||
"eslint-import-resolver-typescript": "3.6.0",
|
"eventsourcemock": "2.0.0",
|
||||||
"eslint-plugin-compat": "4.2.0",
|
"express": "4.19.2",
|
||||||
"eslint-plugin-eslint-comments": "3.2.0",
|
"jest": "29.6.2",
|
||||||
"eslint-plugin-import": "2.29.0",
|
"jest-canvas-mock": "2.5.2",
|
||||||
"eslint-plugin-jest": "27.6.0",
|
"jest-environment-jsdom": "29.5.0",
|
||||||
"eslint-plugin-jsx-a11y": "6.7.1",
|
"jest-location-mock": "2.0.0",
|
||||||
"eslint-plugin-react": "7.33.0",
|
"jest-websocket-mock": "2.5.0",
|
||||||
"eslint-plugin-react-hooks": "4.6.0",
|
"jest_workaround": "0.1.14",
|
||||||
"eslint-plugin-storybook": "0.8.0",
|
"msw": "2.2.3",
|
||||||
"eslint-plugin-testing-library": "6.1.0",
|
"prettier": "3.3.3",
|
||||||
"eslint-plugin-unicorn": "49.0.0",
|
"protobufjs": "7.2.5",
|
||||||
"eventsourcemock": "2.0.0",
|
"rxjs": "7.8.1",
|
||||||
"express": "4.19.2",
|
"ssh2": "1.15.0",
|
||||||
"jest": "29.6.2",
|
"storybook": "8.1.11",
|
||||||
"jest-canvas-mock": "2.5.2",
|
"storybook-addon-remix-react-router": "3.0.0",
|
||||||
"jest-environment-jsdom": "29.5.0",
|
"storybook-react-context": "0.6.0",
|
||||||
"jest-location-mock": "2.0.0",
|
"ts-node": "10.9.1",
|
||||||
"jest-runner-eslint": "2.1.0",
|
"ts-proto": "1.164.0",
|
||||||
"jest-websocket-mock": "2.5.0",
|
"ts-prune": "0.10.3",
|
||||||
"jest_workaround": "0.1.14",
|
"typescript": "5.2.2",
|
||||||
"msw": "2.2.3",
|
"vite": "5.3.3",
|
||||||
"prettier": "3.1.0",
|
"vite-plugin-checker": "0.7.1",
|
||||||
"protobufjs": "7.2.5",
|
"vite-plugin-turbosnap": "1.0.2"
|
||||||
"rxjs": "7.8.1",
|
},
|
||||||
"ssh2": "1.15.0",
|
"browserslist": ["chrome 110", "firefox 111", "safari 16.0"],
|
||||||
"storybook": "8.1.11",
|
"resolutions": {
|
||||||
"storybook-addon-remix-react-router": "3.0.0",
|
"optionator": "0.9.3",
|
||||||
"storybook-react-context": "0.6.0",
|
"semver": "7.6.2"
|
||||||
"ts-node": "10.9.1",
|
},
|
||||||
"ts-proto": "1.164.0",
|
"engines": {
|
||||||
"ts-prune": "0.10.3",
|
"npm": ">=9.0.0 <10.0.0",
|
||||||
"typescript": "5.2.2",
|
"node": ">=18.0.0 <21.0.0"
|
||||||
"vite": "5.3.3",
|
}
|
||||||
"vite-plugin-checker": "0.7.1",
|
|
||||||
"vite-plugin-turbosnap": "1.0.2"
|
|
||||||
},
|
|
||||||
"browserslist": [
|
|
||||||
"chrome 110",
|
|
||||||
"firefox 111",
|
|
||||||
"safari 16.0"
|
|
||||||
],
|
|
||||||
"resolutions": {
|
|
||||||
"optionator": "0.9.3",
|
|
||||||
"semver": "7.6.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"npm": ">=9.0.0 <10.0.0",
|
|
||||||
"node": ">=18.0.0 <21.0.0"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
1633
site/pnpm-lock.yaml
generated
1633
site/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
1
site/src/@types/mui.d.ts
vendored
1
site/src/@types/mui.d.ts
vendored
@ -1,3 +1,4 @@
|
|||||||
|
// biome-ignore lint/nursery/noRestrictedImports: base theme types
|
||||||
import type { PaletteColor, PaletteColorOptions } from "@mui/material/styles";
|
import type { PaletteColor, PaletteColorOptions } from "@mui/material/styles";
|
||||||
|
|
||||||
declare module "@mui/material/styles" {
|
declare module "@mui/material/styles" {
|
||||||
|
4
site/src/@types/storybook.d.ts
vendored
4
site/src/@types/storybook.d.ts
vendored
@ -1,13 +1,13 @@
|
|||||||
import * as _storybook_types from "@storybook/react";
|
import * as _storybook_types from "@storybook/react";
|
||||||
import type { QueryKey } from "react-query";
|
|
||||||
import type {
|
import type {
|
||||||
|
DeploymentValues,
|
||||||
Experiments,
|
Experiments,
|
||||||
FeatureName,
|
FeatureName,
|
||||||
SerpentOption,
|
SerpentOption,
|
||||||
User,
|
User,
|
||||||
DeploymentValues,
|
|
||||||
} from "api/typesGenerated";
|
} from "api/typesGenerated";
|
||||||
import type { Permissions } from "contexts/auth/permissions";
|
import type { Permissions } from "contexts/auth/permissions";
|
||||||
|
import type { QueryKey } from "react-query";
|
||||||
|
|
||||||
declare module "@storybook/react" {
|
declare module "@storybook/react" {
|
||||||
type WebSocketEvent =
|
type WebSocketEvent =
|
||||||
|
@ -12,8 +12,8 @@ import { QueryClient, QueryClientProvider } from "react-query";
|
|||||||
import { RouterProvider } from "react-router-dom";
|
import { RouterProvider } from "react-router-dom";
|
||||||
import { ErrorBoundary } from "./components/ErrorBoundary/ErrorBoundary";
|
import { ErrorBoundary } from "./components/ErrorBoundary/ErrorBoundary";
|
||||||
import { GlobalSnackbar } from "./components/GlobalSnackbar/GlobalSnackbar";
|
import { GlobalSnackbar } from "./components/GlobalSnackbar/GlobalSnackbar";
|
||||||
import { AuthProvider } from "./contexts/auth/AuthProvider";
|
|
||||||
import { ThemeProvider } from "./contexts/ThemeProvider";
|
import { ThemeProvider } from "./contexts/ThemeProvider";
|
||||||
|
import { AuthProvider } from "./contexts/auth/AuthProvider";
|
||||||
import { router } from "./router";
|
import { router } from "./router";
|
||||||
|
|
||||||
const defaultQueryClient = new QueryClient({
|
const defaultQueryClient = new QueryClient({
|
||||||
|
@ -17,4 +17,4 @@ const monaco = {
|
|||||||
|
|
||||||
module.exports = monaco;
|
module.exports = monaco;
|
||||||
|
|
||||||
export {};
|
export type {};
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
MockWorkspaceBuild,
|
MockWorkspaceBuild,
|
||||||
MockWorkspaceBuildParameter1,
|
MockWorkspaceBuildParameter1,
|
||||||
} from "testHelpers/entities";
|
} from "testHelpers/entities";
|
||||||
import { API, getURLWithSearchParams, MissingBuildParameters } from "./api";
|
import { API, MissingBuildParameters, getURLWithSearchParams } from "./api";
|
||||||
import type * as TypesGen from "./typesGenerated";
|
import type * as TypesGen from "./typesGenerated";
|
||||||
|
|
||||||
const axiosInstance = API.getAxiosInstance();
|
const axiosInstance = API.getAxiosInstance();
|
||||||
@ -146,7 +146,7 @@ describe("api.ts", () => {
|
|||||||
"/api/v2/workspaces?q=owner%3Ame",
|
"/api/v2/workspaces?q=owner%3Ame",
|
||||||
],
|
],
|
||||||
])(
|
])(
|
||||||
`Workspaces - getURLWithSearchParams(%p, %p) returns %p`,
|
"Workspaces - getURLWithSearchParams(%p, %p) returns %p",
|
||||||
(basePath, filter, expected) => {
|
(basePath, filter, expected) => {
|
||||||
expect(getURLWithSearchParams(basePath, filter)).toBe(expected);
|
expect(getURLWithSearchParams(basePath, filter)).toBe(expected);
|
||||||
},
|
},
|
||||||
@ -163,7 +163,7 @@ describe("api.ts", () => {
|
|||||||
],
|
],
|
||||||
["/api/v2/users", { q: "" }, "/api/v2/users"],
|
["/api/v2/users", { q: "" }, "/api/v2/users"],
|
||||||
])(
|
])(
|
||||||
`Users - getURLWithSearchParams(%p, %p) returns %p`,
|
"Users - getURLWithSearchParams(%p, %p) returns %p",
|
||||||
(basePath, filter, expected) => {
|
(basePath, filter, expected) => {
|
||||||
expect(getURLWithSearchParams(basePath, filter)).toBe(expected);
|
expect(getURLWithSearchParams(basePath, filter)).toBe(expected);
|
||||||
},
|
},
|
||||||
|
@ -34,7 +34,7 @@ const getMissingParameters = (
|
|||||||
const missingParameters: TypesGen.TemplateVersionParameter[] = [];
|
const missingParameters: TypesGen.TemplateVersionParameter[] = [];
|
||||||
const requiredParameters: TypesGen.TemplateVersionParameter[] = [];
|
const requiredParameters: TypesGen.TemplateVersionParameter[] = [];
|
||||||
|
|
||||||
templateParameters.forEach((p) => {
|
for (const p of templateParameters) {
|
||||||
// It is mutable and required. Mutable values can be changed after so we
|
// It is mutable and required. Mutable values can be changed after so we
|
||||||
// don't need to ask them if they are not required.
|
// don't need to ask them if they are not required.
|
||||||
const isMutableAndRequired = p.mutable && p.required;
|
const isMutableAndRequired = p.mutable && p.required;
|
||||||
@ -44,7 +44,7 @@ const getMissingParameters = (
|
|||||||
if (isMutableAndRequired || isImmutable) {
|
if (isMutableAndRequired || isImmutable) {
|
||||||
requiredParameters.push(p);
|
requiredParameters.push(p);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
for (const parameter of requiredParameters) {
|
for (const parameter of requiredParameters) {
|
||||||
// Check if there is a new value
|
// Check if there is a new value
|
||||||
@ -68,9 +68,9 @@ const getMissingParameters = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if parameter "options" changed and we can't use old build parameters.
|
// Check if parameter "options" changed and we can't use old build parameters.
|
||||||
templateParameters.forEach((templateParameter) => {
|
for (const templateParameter of templateParameters) {
|
||||||
if (templateParameter.options.length === 0) {
|
if (templateParameter.options.length === 0) {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if there is a new value
|
// Check if there is a new value
|
||||||
@ -86,7 +86,7 @@ const getMissingParameters = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!buildParameter) {
|
if (!buildParameter) {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const matchingOption = templateParameter.options.find(
|
const matchingOption = templateParameter.options.find(
|
||||||
@ -95,7 +95,8 @@ const getMissingParameters = (
|
|||||||
if (!matchingOption) {
|
if (!matchingOption) {
|
||||||
missingParameters.push(templateParameter);
|
missingParameters.push(templateParameter);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
return missingParameters;
|
return missingParameters;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -132,13 +133,11 @@ export const getURLWithSearchParams = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
const searchParams = new URLSearchParams();
|
const searchParams = new URLSearchParams();
|
||||||
const keys = Object.keys(options) as (keyof SearchParamOptions)[];
|
for (const [key, value] of Object.entries(options)) {
|
||||||
keys.forEach((key) => {
|
|
||||||
const value = options[key];
|
|
||||||
if (value !== undefined && value !== "") {
|
if (value !== undefined && value !== "") {
|
||||||
searchParams.append(key, value.toString());
|
searchParams.append(key, value.toString());
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
const searchString = searchParams.toString();
|
const searchString = searchParams.toString();
|
||||||
return searchString ? `${basePath}?${searchString}` : basePath;
|
return searchString ? `${basePath}?${searchString}` : basePath;
|
||||||
@ -241,7 +240,7 @@ export const watchWorkspaceAgentLogs = (
|
|||||||
});
|
});
|
||||||
|
|
||||||
socket.addEventListener("close", () => {
|
socket.addEventListener("close", () => {
|
||||||
onDone && onDone();
|
onDone?.();
|
||||||
});
|
});
|
||||||
|
|
||||||
return socket;
|
return socket;
|
||||||
@ -281,13 +280,13 @@ export const watchBuildLogsByBuildId = (
|
|||||||
);
|
);
|
||||||
|
|
||||||
socket.addEventListener("error", () => {
|
socket.addEventListener("error", () => {
|
||||||
onError && onError(new Error("Connection for logs failed."));
|
onError?.(new Error("Connection for logs failed."));
|
||||||
socket.close();
|
socket.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.addEventListener("close", () => {
|
socket.addEventListener("close", () => {
|
||||||
// When the socket closes, logs have finished streaming!
|
// When the socket closes, logs have finished streaming!
|
||||||
onDone && onDone();
|
onDone?.();
|
||||||
});
|
});
|
||||||
|
|
||||||
return socket;
|
return socket;
|
||||||
@ -317,7 +316,7 @@ function normalizeGetTemplatesOptions(
|
|||||||
|
|
||||||
const params: Record<string, string> = {};
|
const params: Record<string, string> = {};
|
||||||
if (options.deprecated !== undefined) {
|
if (options.deprecated !== undefined) {
|
||||||
params["deprecated"] = String(options.deprecated);
|
params.deprecated = String(options.deprecated);
|
||||||
}
|
}
|
||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
@ -464,7 +463,7 @@ class ApiMethods {
|
|||||||
params: TypesGen.AuthorizationRequest,
|
params: TypesGen.AuthorizationRequest,
|
||||||
): Promise<TypesGen.AuthorizationResponse> => {
|
): Promise<TypesGen.AuthorizationResponse> => {
|
||||||
const response = await this.axios.post<TypesGen.AuthorizationResponse>(
|
const response = await this.axios.post<TypesGen.AuthorizationResponse>(
|
||||||
`/api/v2/authcheck`,
|
"/api/v2/authcheck",
|
||||||
params,
|
params,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -483,7 +482,7 @@ class ApiMethods {
|
|||||||
params: TypesGen.TokensFilter,
|
params: TypesGen.TokensFilter,
|
||||||
): Promise<TypesGen.APIKeyWithOwner[]> => {
|
): Promise<TypesGen.APIKeyWithOwner[]> => {
|
||||||
const response = await this.axios.get<TypesGen.APIKeyWithOwner[]>(
|
const response = await this.axios.get<TypesGen.APIKeyWithOwner[]>(
|
||||||
`/api/v2/users/me/keys/tokens`,
|
"/api/v2/users/me/keys/tokens",
|
||||||
{ params },
|
{ params },
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -498,7 +497,7 @@ class ApiMethods {
|
|||||||
params: TypesGen.CreateTokenRequest,
|
params: TypesGen.CreateTokenRequest,
|
||||||
): Promise<TypesGen.GenerateAPIKeyResponse> => {
|
): Promise<TypesGen.GenerateAPIKeyResponse> => {
|
||||||
const response = await this.axios.post(
|
const response = await this.axios.post(
|
||||||
`/api/v2/users/me/keys/tokens`,
|
"/api/v2/users/me/keys/tokens",
|
||||||
params,
|
params,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -706,7 +705,7 @@ class ApiMethods {
|
|||||||
): Promise<TypesGen.Template[]> => {
|
): Promise<TypesGen.Template[]> => {
|
||||||
const params = normalizeGetTemplatesOptions(options);
|
const params = normalizeGetTemplatesOptions(options);
|
||||||
const response = await this.axios.get<TypesGen.Template[]>(
|
const response = await this.axios.get<TypesGen.Template[]>(
|
||||||
`/api/v2/templates`,
|
"/api/v2/templates",
|
||||||
{ params },
|
{ params },
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -993,8 +992,8 @@ class ApiMethods {
|
|||||||
let latestJobInfo: TypesGen.ProvisionerJob | undefined = undefined;
|
let latestJobInfo: TypesGen.ProvisionerJob | undefined = undefined;
|
||||||
|
|
||||||
while (
|
while (
|
||||||
!["succeeded", "canceled"].some(
|
!["succeeded", "canceled"].some((status) =>
|
||||||
(status) => latestJobInfo?.status.includes(status),
|
latestJobInfo?.status.includes(status),
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
const { job } = await this.getWorkspaceBuildByNumber(
|
const { job } = await this.getWorkspaceBuildByNumber(
|
||||||
@ -1276,7 +1275,7 @@ class ApiMethods {
|
|||||||
createFirstUser = async (
|
createFirstUser = async (
|
||||||
req: TypesGen.CreateFirstUserRequest,
|
req: TypesGen.CreateFirstUserRequest,
|
||||||
): Promise<TypesGen.CreateFirstUserResponse> => {
|
): Promise<TypesGen.CreateFirstUserResponse> => {
|
||||||
const response = await this.axios.post(`/api/v2/users/first`, req);
|
const response = await this.axios.post("/api/v2/users/first", req);
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1288,8 +1287,9 @@ class ApiMethods {
|
|||||||
};
|
};
|
||||||
|
|
||||||
getRoles = async (): Promise<Array<TypesGen.AssignableRoles>> => {
|
getRoles = async (): Promise<Array<TypesGen.AssignableRoles>> => {
|
||||||
const response =
|
const response = await this.axios.get<TypesGen.AssignableRoles[]>(
|
||||||
await this.axios.get<TypesGen.AssignableRoles[]>(`/api/v2/users/roles`);
|
"/api/v2/users/roles",
|
||||||
|
);
|
||||||
|
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
@ -1449,7 +1449,7 @@ class ApiMethods {
|
|||||||
|
|
||||||
getUserExternalAuthProviders =
|
getUserExternalAuthProviders =
|
||||||
async (): Promise<TypesGen.ListUserExternalAuthResponse> => {
|
async (): Promise<TypesGen.ListUserExternalAuthResponse> => {
|
||||||
const resp = await this.axios.get(`/api/v2/external-auth`);
|
const resp = await this.axios.get("/api/v2/external-auth");
|
||||||
return resp.data;
|
return resp.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1480,7 +1480,7 @@ class ApiMethods {
|
|||||||
data: TypesGen.PostOAuth2ProviderAppRequest,
|
data: TypesGen.PostOAuth2ProviderAppRequest,
|
||||||
): Promise<TypesGen.OAuth2ProviderApp> => {
|
): Promise<TypesGen.OAuth2ProviderApp> => {
|
||||||
const response = await this.axios.post(
|
const response = await this.axios.post(
|
||||||
`/api/v2/oauth2-provider/apps`,
|
"/api/v2/oauth2-provider/apps",
|
||||||
data,
|
data,
|
||||||
);
|
);
|
||||||
return response.data;
|
return response.data;
|
||||||
@ -1599,7 +1599,7 @@ class ApiMethods {
|
|||||||
};
|
};
|
||||||
|
|
||||||
getApplicationsHost = async (): Promise<TypesGen.AppHostResponse> => {
|
getApplicationsHost = async (): Promise<TypesGen.AppHostResponse> => {
|
||||||
const response = await this.axios.get(`/api/v2/applications/host`);
|
const response = await this.axios.get("/api/v2/applications/host");
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1722,22 +1722,22 @@ class ApiMethods {
|
|||||||
|
|
||||||
// getDeploymentSSHConfig is used by the VSCode-Extension.
|
// getDeploymentSSHConfig is used by the VSCode-Extension.
|
||||||
getDeploymentSSHConfig = async (): Promise<TypesGen.SSHConfigResponse> => {
|
getDeploymentSSHConfig = async (): Promise<TypesGen.SSHConfigResponse> => {
|
||||||
const response = await this.axios.get(`/api/v2/deployment/ssh`);
|
const response = await this.axios.get("/api/v2/deployment/ssh");
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
getDeploymentConfig = async (): Promise<DeploymentConfig> => {
|
getDeploymentConfig = async (): Promise<DeploymentConfig> => {
|
||||||
const response = await this.axios.get(`/api/v2/deployment/config`);
|
const response = await this.axios.get("/api/v2/deployment/config");
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
getDeploymentStats = async (): Promise<TypesGen.DeploymentStats> => {
|
getDeploymentStats = async (): Promise<TypesGen.DeploymentStats> => {
|
||||||
const response = await this.axios.get(`/api/v2/deployment/stats`);
|
const response = await this.axios.get("/api/v2/deployment/stats");
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
getReplicas = async (): Promise<TypesGen.Replica[]> => {
|
getReplicas = async (): Promise<TypesGen.Replica[]> => {
|
||||||
const response = await this.axios.get(`/api/v2/replicas`);
|
const response = await this.axios.get("/api/v2/replicas");
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1755,7 +1755,7 @@ class ApiMethods {
|
|||||||
> => {
|
> => {
|
||||||
const response =
|
const response =
|
||||||
await this.axios.get<TypesGen.RegionsResponse<TypesGen.Region>>(
|
await this.axios.get<TypesGen.RegionsResponse<TypesGen.Region>>(
|
||||||
`/api/v2/regions`,
|
"/api/v2/regions",
|
||||||
);
|
);
|
||||||
|
|
||||||
return response.data;
|
return response.data;
|
||||||
@ -1766,7 +1766,7 @@ class ApiMethods {
|
|||||||
> => {
|
> => {
|
||||||
const response = await this.axios.get<
|
const response = await this.axios.get<
|
||||||
TypesGen.RegionsResponse<TypesGen.WorkspaceProxy>
|
TypesGen.RegionsResponse<TypesGen.WorkspaceProxy>
|
||||||
>(`/api/v2/workspaceproxies`);
|
>("/api/v2/workspaceproxies");
|
||||||
|
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
@ -1774,13 +1774,13 @@ class ApiMethods {
|
|||||||
createWorkspaceProxy = async (
|
createWorkspaceProxy = async (
|
||||||
b: TypesGen.CreateWorkspaceProxyRequest,
|
b: TypesGen.CreateWorkspaceProxyRequest,
|
||||||
): Promise<TypesGen.UpdateWorkspaceProxyResponse> => {
|
): Promise<TypesGen.UpdateWorkspaceProxyResponse> => {
|
||||||
const response = await this.axios.post(`/api/v2/workspaceproxies`, b);
|
const response = await this.axios.post("/api/v2/workspaceproxies", b);
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
getAppearance = async (): Promise<TypesGen.AppearanceConfig> => {
|
getAppearance = async (): Promise<TypesGen.AppearanceConfig> => {
|
||||||
try {
|
try {
|
||||||
const response = await this.axios.get(`/api/v2/appearance`);
|
const response = await this.axios.get("/api/v2/appearance");
|
||||||
return response.data || {};
|
return response.data || {};
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
if (isAxiosError(ex) && ex.response?.status === 404) {
|
if (isAxiosError(ex) && ex.response?.status === 404) {
|
||||||
@ -1801,7 +1801,7 @@ class ApiMethods {
|
|||||||
updateAppearance = async (
|
updateAppearance = async (
|
||||||
b: TypesGen.AppearanceConfig,
|
b: TypesGen.AppearanceConfig,
|
||||||
): Promise<TypesGen.AppearanceConfig> => {
|
): Promise<TypesGen.AppearanceConfig> => {
|
||||||
const response = await this.axios.put(`/api/v2/appearance`, b);
|
const response = await this.axios.put("/api/v2/appearance", b);
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1809,7 +1809,7 @@ class ApiMethods {
|
|||||||
* @param organization Can be the organization's ID or name
|
* @param organization Can be the organization's ID or name
|
||||||
*/
|
*/
|
||||||
getTemplateExamples = async (): Promise<TypesGen.TemplateExample[]> => {
|
getTemplateExamples = async (): Promise<TypesGen.TemplateExample[]> => {
|
||||||
const response = await this.axios.get(`/api/v2/templates/examples`);
|
const response = await this.axios.get("/api/v2/templates/examples");
|
||||||
|
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
@ -1849,14 +1849,14 @@ class ApiMethods {
|
|||||||
};
|
};
|
||||||
|
|
||||||
getLicenses = async (): Promise<GetLicensesResponse[]> => {
|
getLicenses = async (): Promise<GetLicensesResponse[]> => {
|
||||||
const response = await this.axios.get(`/api/v2/licenses`);
|
const response = await this.axios.get("/api/v2/licenses");
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
createLicense = async (
|
createLicense = async (
|
||||||
data: TypesGen.AddLicenseRequest,
|
data: TypesGen.AddLicenseRequest,
|
||||||
): Promise<TypesGen.AddLicenseRequest> => {
|
): Promise<TypesGen.AddLicenseRequest> => {
|
||||||
const response = await this.axios.post(`/api/v2/licenses`, data);
|
const response = await this.axios.post("/api/v2/licenses", data);
|
||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2005,7 +2005,7 @@ class ApiMethods {
|
|||||||
return response.data;
|
return response.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
getHealth = async (force: boolean = false) => {
|
getHealth = async (force = false) => {
|
||||||
const params = new URLSearchParams({ force: force.toString() });
|
const params = new URLSearchParams({ force: force.toString() });
|
||||||
const response = await this.axios.get<TypesGen.HealthcheckReport>(
|
const response = await this.axios.get<TypesGen.HealthcheckReport>(
|
||||||
`/api/v2/debug/health?${params}`,
|
`/api/v2/debug/health?${params}`,
|
||||||
@ -2015,7 +2015,7 @@ class ApiMethods {
|
|||||||
|
|
||||||
getHealthSettings = async (): Promise<TypesGen.HealthSettings> => {
|
getHealthSettings = async (): Promise<TypesGen.HealthSettings> => {
|
||||||
const res = await this.axios.get<TypesGen.HealthSettings>(
|
const res = await this.axios.get<TypesGen.HealthSettings>(
|
||||||
`/api/v2/debug/health/settings`,
|
"/api/v2/debug/health/settings",
|
||||||
);
|
);
|
||||||
|
|
||||||
return res.data;
|
return res.data;
|
||||||
@ -2023,7 +2023,7 @@ class ApiMethods {
|
|||||||
|
|
||||||
updateHealthSettings = async (data: TypesGen.UpdateHealthSettings) => {
|
updateHealthSettings = async (data: TypesGen.UpdateHealthSettings) => {
|
||||||
const response = await this.axios.put<TypesGen.HealthSettings>(
|
const response = await this.axios.put<TypesGen.HealthSettings>(
|
||||||
`/api/v2/debug/health/settings`,
|
"/api/v2/debug/health/settings",
|
||||||
data,
|
data,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -2093,14 +2093,14 @@ class ApiMethods {
|
|||||||
|
|
||||||
getSystemNotificationTemplates = async () => {
|
getSystemNotificationTemplates = async () => {
|
||||||
const res = await this.axios.get<TypesGen.NotificationTemplate[]>(
|
const res = await this.axios.get<TypesGen.NotificationTemplate[]>(
|
||||||
`/api/v2/notifications/templates/system`,
|
"/api/v2/notifications/templates/system",
|
||||||
);
|
);
|
||||||
return res.data;
|
return res.data;
|
||||||
};
|
};
|
||||||
|
|
||||||
getNotificationDispatchMethods = async () => {
|
getNotificationDispatchMethods = async () => {
|
||||||
const res = await this.axios.get<TypesGen.NotificationMethodsResponse>(
|
const res = await this.axios.get<TypesGen.NotificationMethodsResponse>(
|
||||||
`/api/v2/notifications/dispatch-methods`,
|
"/api/v2/notifications/dispatch-methods",
|
||||||
);
|
);
|
||||||
return res.data;
|
return res.data;
|
||||||
};
|
};
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import { mockApiError } from "testHelpers/entities";
|
import { mockApiError } from "testHelpers/entities";
|
||||||
import {
|
import {
|
||||||
|
getErrorMessage,
|
||||||
getValidationErrorMessage,
|
getValidationErrorMessage,
|
||||||
isApiError,
|
isApiError,
|
||||||
mapApiErrorToFieldErrors,
|
mapApiErrorToFieldErrors,
|
||||||
getErrorMessage,
|
|
||||||
} from "./errors";
|
} from "./errors";
|
||||||
|
|
||||||
describe("isApiError", () => {
|
describe("isApiError", () => {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import type { QueryClient } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type { AppearanceConfig } from "api/typesGenerated";
|
import type { AppearanceConfig } from "api/typesGenerated";
|
||||||
import type { MetadataState } from "hooks/useEmbeddedMetadata";
|
import type { MetadataState } from "hooks/useEmbeddedMetadata";
|
||||||
|
import type { QueryClient } from "react-query";
|
||||||
import { cachedQuery } from "./util";
|
import { cachedQuery } from "./util";
|
||||||
|
|
||||||
export const appearanceConfigKey = ["appearance"] as const;
|
export const appearanceConfigKey = ["appearance"] as const;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import type { QueryClient, UseMutationOptions } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type { HealthSettings, UpdateHealthSettings } from "api/typesGenerated";
|
import type { HealthSettings, UpdateHealthSettings } from "api/typesGenerated";
|
||||||
|
import type { QueryClient, UseMutationOptions } from "react-query";
|
||||||
|
|
||||||
export const HEALTH_QUERY_KEY = ["health"];
|
export const HEALTH_QUERY_KEY = ["health"];
|
||||||
export const HEALTH_QUERY_SETTINGS_KEY = ["health", "settings"];
|
export const HEALTH_QUERY_SETTINGS_KEY = ["health", "settings"];
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import type { QueryClient } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type { Entitlements } from "api/typesGenerated";
|
import type { Entitlements } from "api/typesGenerated";
|
||||||
import type { MetadataState } from "hooks/useEmbeddedMetadata";
|
import type { MetadataState } from "hooks/useEmbeddedMetadata";
|
||||||
|
import type { QueryClient } from "react-query";
|
||||||
import { cachedQuery } from "./util";
|
import { cachedQuery } from "./util";
|
||||||
|
|
||||||
const entitlementsQueryKey = ["entitlements"] as const;
|
const entitlementsQueryKey = ["entitlements"] as const;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import type { QueryClient, UseMutationOptions } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type { ExternalAuth } from "api/typesGenerated";
|
import type { ExternalAuth } from "api/typesGenerated";
|
||||||
|
import type { QueryClient, UseMutationOptions } from "react-query";
|
||||||
|
|
||||||
// Returns all configured external auths for a given user.
|
// Returns all configured external auths for a given user.
|
||||||
export const externalAuths = () => {
|
export const externalAuths = () => {
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import type { QueryClient, UseQueryOptions } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type {
|
import type {
|
||||||
CreateGroupRequest,
|
CreateGroupRequest,
|
||||||
Group,
|
Group,
|
||||||
PatchGroupRequest,
|
PatchGroupRequest,
|
||||||
} from "api/typesGenerated";
|
} from "api/typesGenerated";
|
||||||
|
import type { QueryClient, UseQueryOptions } from "react-query";
|
||||||
|
|
||||||
type GroupSortOrder = "asc" | "desc";
|
type GroupSortOrder = "asc" | "desc";
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ export const patchGroup = (queryClient: QueryClient) => {
|
|||||||
export const deleteGroup = (queryClient: QueryClient) => {
|
export const deleteGroup = (queryClient: QueryClient) => {
|
||||||
return {
|
return {
|
||||||
mutationFn: API.deleteGroup,
|
mutationFn: API.deleteGroup,
|
||||||
onSuccess: async (_: void, groupId: string) =>
|
onSuccess: async (_: unknown, groupId: string) =>
|
||||||
invalidateGroup(queryClient, "default", groupId),
|
invalidateGroup(queryClient, "default", groupId),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -159,15 +159,12 @@ export function sortGroupsByName(
|
|||||||
) {
|
) {
|
||||||
return [...groups].sort((g1, g2) => {
|
return [...groups].sort((g1, g2) => {
|
||||||
const key = g1.display_name && g2.display_name ? "display_name" : "name";
|
const key = g1.display_name && g2.display_name ? "display_name" : "name";
|
||||||
|
const direction = order === "asc" ? 1 : -1;
|
||||||
|
|
||||||
if (g1[key] === g2[key]) {
|
if (g1[key] === g2[key]) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (order === "asc") {
|
return (g1[key] < g2[key] ? -1 : 1) * direction;
|
||||||
return g1[key] < g2[key] ? -1 : 1;
|
|
||||||
} else {
|
|
||||||
return g1[key] < g2[key] ? 1 : -1;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { type InsightsParams, type InsightsTemplateParams, API } from "api/api";
|
import { API, type InsightsParams, type InsightsTemplateParams } from "api/api";
|
||||||
|
|
||||||
export const insightsTemplate = (params: InsightsTemplateParams) => {
|
export const insightsTemplate = (params: InsightsTemplateParams) => {
|
||||||
return {
|
return {
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import type { QueryClient, UseMutationOptions } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type {
|
import type {
|
||||||
NotificationPreference,
|
NotificationPreference,
|
||||||
@ -6,6 +5,7 @@ import type {
|
|||||||
UpdateNotificationTemplateMethod,
|
UpdateNotificationTemplateMethod,
|
||||||
UpdateUserNotificationPreferences,
|
UpdateUserNotificationPreferences,
|
||||||
} from "api/typesGenerated";
|
} from "api/typesGenerated";
|
||||||
|
import type { QueryClient, UseMutationOptions } from "react-query";
|
||||||
|
|
||||||
export const userNotificationPreferencesKey = (userId: string) => [
|
export const userNotificationPreferencesKey = (userId: string) => [
|
||||||
"users",
|
"users",
|
||||||
@ -98,7 +98,7 @@ export const notificationDispatchMethodsKey = [
|
|||||||
|
|
||||||
export const notificationDispatchMethods = () => {
|
export const notificationDispatchMethods = () => {
|
||||||
return {
|
return {
|
||||||
staleTime: Infinity,
|
staleTime: Number.POSITIVE_INFINITY,
|
||||||
queryKey: notificationDispatchMethodsKey,
|
queryKey: notificationDispatchMethodsKey,
|
||||||
queryFn: () => API.getNotificationDispatchMethods(),
|
queryFn: () => API.getNotificationDispatchMethods(),
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import type { QueryClient } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type * as TypesGen from "api/typesGenerated";
|
import type * as TypesGen from "api/typesGenerated";
|
||||||
|
import type { QueryClient } from "react-query";
|
||||||
|
|
||||||
const appsKey = ["oauth2-provider", "apps"];
|
const appsKey = ["oauth2-provider", "apps"];
|
||||||
const userAppsKey = (userId: string) => appsKey.concat(userId);
|
const userAppsKey = (userId: string) => appsKey.concat(userId);
|
||||||
@ -85,7 +85,7 @@ export const deleteAppSecret = (queryClient: QueryClient) => {
|
|||||||
return {
|
return {
|
||||||
mutationFn: ({ appId, secretId }: { appId: string; secretId: string }) =>
|
mutationFn: ({ appId, secretId }: { appId: string; secretId: string }) =>
|
||||||
API.deleteOAuth2ProviderAppSecret(appId, secretId),
|
API.deleteOAuth2ProviderAppSecret(appId, secretId),
|
||||||
onSuccess: async (_: void, { appId }: { appId: string }) => {
|
onSuccess: async (_: unknown, { appId }: { appId: string }) => {
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: appSecretsKey(appId),
|
queryKey: appSecretsKey(appId),
|
||||||
});
|
});
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import type { QueryClient } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type {
|
import type {
|
||||||
AuthorizationResponse,
|
AuthorizationResponse,
|
||||||
CreateOrganizationRequest,
|
CreateOrganizationRequest,
|
||||||
UpdateOrganizationRequest,
|
UpdateOrganizationRequest,
|
||||||
} from "api/typesGenerated";
|
} from "api/typesGenerated";
|
||||||
|
import type { QueryClient } from "react-query";
|
||||||
import { meKey } from "./users";
|
import { meKey } from "./users";
|
||||||
|
|
||||||
export const createOrganization = (queryClient: QueryClient) => {
|
export const createOrganization = (queryClient: QueryClient) => {
|
||||||
@ -221,14 +221,12 @@ export const organizationsPermissions = (
|
|||||||
|
|
||||||
// The endpoint takes a flat array, so to avoid collisions prepend each
|
// The endpoint takes a flat array, so to avoid collisions prepend each
|
||||||
// check with the org ID (the key can be anything we want).
|
// check with the org ID (the key can be anything we want).
|
||||||
const prefixedChecks = organizationIds
|
const prefixedChecks = organizationIds.flatMap((orgId) =>
|
||||||
.map((orgId) =>
|
Object.entries(checks(orgId)).map(([key, val]) => [
|
||||||
Object.entries(checks(orgId)).map(([key, val]) => [
|
`${orgId}.${key}`,
|
||||||
`${orgId}.${key}`,
|
val,
|
||||||
val,
|
]),
|
||||||
]),
|
);
|
||||||
)
|
|
||||||
.flat();
|
|
||||||
|
|
||||||
const response = await API.checkAuthorization({
|
const response = await API.checkAuthorization({
|
||||||
checks: Object.fromEntries(prefixedChecks),
|
checks: Object.fromEntries(prefixedChecks),
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import type { QueryClient } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type { Role } from "api/typesGenerated";
|
import type { Role } from "api/typesGenerated";
|
||||||
|
import type { QueryClient } from "react-query";
|
||||||
|
|
||||||
const getRoleQueryKey = (organizationId: string, roleName: string) => [
|
const getRoleQueryKey = (organizationId: string, roleName: string) => [
|
||||||
"organization",
|
"organization",
|
||||||
@ -58,7 +58,7 @@ export const deleteOrganizationRole = (
|
|||||||
return {
|
return {
|
||||||
mutationFn: (roleName: string) =>
|
mutationFn: (roleName: string) =>
|
||||||
API.deleteOrganizationRole(organization, roleName),
|
API.deleteOrganizationRole(organization, roleName),
|
||||||
onSuccess: async (_: void, roleName: string) =>
|
onSuccess: async (_: unknown, roleName: string) =>
|
||||||
await queryClient.invalidateQueries(
|
await queryClient.invalidateQueries(
|
||||||
getRoleQueryKey(organization, roleName),
|
getRoleQueryKey(organization, roleName),
|
||||||
),
|
),
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import type { QueryClient, QueryOptions } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type {
|
import type {
|
||||||
UpdateUserQuietHoursScheduleRequest,
|
UpdateUserQuietHoursScheduleRequest,
|
||||||
UserQuietHoursScheduleResponse,
|
UserQuietHoursScheduleResponse,
|
||||||
} from "api/typesGenerated";
|
} from "api/typesGenerated";
|
||||||
|
import type { QueryClient, QueryOptions } from "react-query";
|
||||||
|
|
||||||
export const userQuietHoursScheduleKey = (userId: string) => [
|
export const userQuietHoursScheduleKey = (userId: string) => [
|
||||||
"settings",
|
"settings",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import type { QueryClient } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type { GitSSHKey } from "api/typesGenerated";
|
import type { GitSSHKey } from "api/typesGenerated";
|
||||||
|
import type { QueryClient } from "react-query";
|
||||||
|
|
||||||
const getUserSSHKeyQueryKey = (userId: string) => [userId, "sshKey"];
|
const getUserSSHKeyQueryKey = (userId: string) => [userId, "sshKey"];
|
||||||
|
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
import type { MutationOptions, QueryClient, QueryOptions } from "react-query";
|
import { API, type GetTemplatesOptions, type GetTemplatesQuery } from "api/api";
|
||||||
import { API, type GetTemplatesQuery, type GetTemplatesOptions } from "api/api";
|
|
||||||
import type {
|
import type {
|
||||||
CreateTemplateRequest,
|
CreateTemplateRequest,
|
||||||
CreateTemplateVersionRequest,
|
CreateTemplateVersionRequest,
|
||||||
ProvisionerJob,
|
ProvisionerJob,
|
||||||
ProvisionerJobStatus,
|
ProvisionerJobStatus,
|
||||||
UsersRequest,
|
|
||||||
Template,
|
Template,
|
||||||
TemplateRole,
|
TemplateRole,
|
||||||
TemplateVersion,
|
TemplateVersion,
|
||||||
|
UsersRequest,
|
||||||
} from "api/typesGenerated";
|
} from "api/typesGenerated";
|
||||||
|
import type { MutationOptions, QueryClient, QueryOptions } from "react-query";
|
||||||
import { delay } from "utils/delay";
|
import { delay } from "utils/delay";
|
||||||
import { getTemplateVersionFiles } from "utils/templateVersion";
|
import { getTemplateVersionFiles } from "utils/templateVersion";
|
||||||
|
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
|
import { API } from "api/api";
|
||||||
|
import type {
|
||||||
|
AuthorizationRequest,
|
||||||
|
GenerateAPIKeyResponse,
|
||||||
|
GetUsersResponse,
|
||||||
|
UpdateUserAppearanceSettingsRequest,
|
||||||
|
UpdateUserPasswordRequest,
|
||||||
|
UpdateUserProfileRequest,
|
||||||
|
User,
|
||||||
|
UsersRequest,
|
||||||
|
} from "api/typesGenerated";
|
||||||
|
import {
|
||||||
|
type MetadataState,
|
||||||
|
defaultMetadataManager,
|
||||||
|
} from "hooks/useEmbeddedMetadata";
|
||||||
|
import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery";
|
||||||
import type {
|
import type {
|
||||||
QueryClient,
|
QueryClient,
|
||||||
UseMutationOptions,
|
UseMutationOptions,
|
||||||
UseQueryOptions,
|
UseQueryOptions,
|
||||||
} from "react-query";
|
} from "react-query";
|
||||||
import { API } from "api/api";
|
|
||||||
import type {
|
|
||||||
AuthorizationRequest,
|
|
||||||
GetUsersResponse,
|
|
||||||
UpdateUserPasswordRequest,
|
|
||||||
UpdateUserProfileRequest,
|
|
||||||
UpdateUserAppearanceSettingsRequest,
|
|
||||||
UsersRequest,
|
|
||||||
User,
|
|
||||||
GenerateAPIKeyResponse,
|
|
||||||
} from "api/typesGenerated";
|
|
||||||
import {
|
|
||||||
defaultMetadataManager,
|
|
||||||
type MetadataState,
|
|
||||||
} from "hooks/useEmbeddedMetadata";
|
|
||||||
import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery";
|
|
||||||
import { prepareQuery } from "utils/filters";
|
import { prepareQuery } from "utils/filters";
|
||||||
import { getAuthorizationKey } from "./authCheck";
|
import { getAuthorizationKey } from "./authCheck";
|
||||||
import { cachedQuery } from "./util";
|
import { cachedQuery } from "./util";
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import type { UseQueryOptions, QueryKey } from "react-query";
|
|
||||||
import type { MetadataState, MetadataValue } from "hooks/useEmbeddedMetadata";
|
import type { MetadataState, MetadataValue } from "hooks/useEmbeddedMetadata";
|
||||||
|
import type { QueryKey, UseQueryOptions } from "react-query";
|
||||||
|
|
||||||
export const disabledRefetchOptions = {
|
export const disabledRefetchOptions = {
|
||||||
cacheTime: Infinity,
|
cacheTime: Number.POSITIVE_INFINITY,
|
||||||
staleTime: Infinity,
|
staleTime: Number.POSITIVE_INFINITY,
|
||||||
refetchOnMount: false,
|
refetchOnMount: false,
|
||||||
refetchOnReconnect: false,
|
refetchOnReconnect: false,
|
||||||
refetchOnWindowFocus: false,
|
refetchOnWindowFocus: false,
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import type { QueryOptions, UseInfiniteQueryOptions } from "react-query";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import type {
|
import type {
|
||||||
WorkspaceBuild,
|
WorkspaceBuild,
|
||||||
WorkspaceBuildParameter,
|
WorkspaceBuildParameter,
|
||||||
WorkspaceBuildsRequest,
|
WorkspaceBuildsRequest,
|
||||||
} from "api/typesGenerated";
|
} from "api/typesGenerated";
|
||||||
|
import type { QueryOptions, UseInfiniteQueryOptions } from "react-query";
|
||||||
|
|
||||||
export function workspaceBuildParametersKey(workspaceBuildId: string) {
|
export function workspaceBuildParametersKey(workspaceBuildId: string) {
|
||||||
return ["workspaceBuilds", workspaceBuildId, "parameters"] as const;
|
return ["workspaceBuilds", workspaceBuildId, "parameters"] as const;
|
||||||
|
@ -1,10 +1,4 @@
|
|||||||
import type { Dayjs } from "dayjs";
|
import { API, type DeleteWorkspaceOptions } from "api/api";
|
||||||
import type {
|
|
||||||
QueryClient,
|
|
||||||
QueryOptions,
|
|
||||||
UseMutationOptions,
|
|
||||||
} from "react-query";
|
|
||||||
import { type DeleteWorkspaceOptions, API } from "api/api";
|
|
||||||
import { DetailedError, isApiValidationError } from "api/errors";
|
import { DetailedError, isApiValidationError } from "api/errors";
|
||||||
import type {
|
import type {
|
||||||
CreateWorkspaceRequest,
|
CreateWorkspaceRequest,
|
||||||
@ -16,7 +10,13 @@ import type {
|
|||||||
WorkspacesRequest,
|
WorkspacesRequest,
|
||||||
WorkspacesResponse,
|
WorkspacesResponse,
|
||||||
} from "api/typesGenerated";
|
} from "api/typesGenerated";
|
||||||
|
import type { Dayjs } from "dayjs";
|
||||||
import type { ConnectionStatus } from "pages/TerminalPage/types";
|
import type { ConnectionStatus } from "pages/TerminalPage/types";
|
||||||
|
import type {
|
||||||
|
QueryClient,
|
||||||
|
QueryOptions,
|
||||||
|
UseMutationOptions,
|
||||||
|
} from "react-query";
|
||||||
import { disabledRefetchOptions } from "./util";
|
import { disabledRefetchOptions } from "./util";
|
||||||
import { workspaceBuildsKey } from "./workspaceBuilds";
|
import { workspaceBuildsKey } from "./workspaceBuilds";
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ export const autoCreateWorkspace = (queryClient: QueryClient) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let templateVersionParameters;
|
let templateVersionParameters: Partial<CreateWorkspaceRequest>;
|
||||||
|
|
||||||
if (templateVersionId) {
|
if (templateVersionId) {
|
||||||
templateVersionParameters = { template_version_id: templateVersionId };
|
templateVersionParameters = { template_version_id: templateVersionId };
|
||||||
@ -307,9 +307,8 @@ export const toggleFavorite = (
|
|||||||
mutationFn: () => {
|
mutationFn: () => {
|
||||||
if (workspace.favorite) {
|
if (workspace.favorite) {
|
||||||
return API.deleteFavoriteWorkspace(workspace.id);
|
return API.deleteFavoriteWorkspace(workspace.id);
|
||||||
} else {
|
|
||||||
return API.putFavoriteWorkspace(workspace.id);
|
|
||||||
}
|
}
|
||||||
|
return API.putFavoriteWorkspace(workspace.id);
|
||||||
},
|
},
|
||||||
onSuccess: async () => {
|
onSuccess: async () => {
|
||||||
queryClient.setQueryData(
|
queryClient.setQueryData(
|
||||||
|
2910
site/src/api/typesGenerated.ts
generated
2910
site/src/api/typesGenerated.ts
generated
File diff suppressed because it is too large
Load Diff
@ -57,7 +57,7 @@ function getAccessibleLabel(
|
|||||||
}
|
}
|
||||||
|
|
||||||
function initializeText(text: string): string {
|
function initializeText(text: string): string {
|
||||||
return text.trim().toUpperCase().replaceAll(/\B/g, ".") + ".";
|
return `${text.trim().toUpperCase().replaceAll(/\B/g, ".")}.`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function flattenPronunciation(text: string): string {
|
function flattenPronunciation(text: string): string {
|
||||||
|
@ -4,27 +4,27 @@ import {
|
|||||||
CategoryScale,
|
CategoryScale,
|
||||||
Chart as ChartJS,
|
Chart as ChartJS,
|
||||||
type ChartOptions,
|
type ChartOptions,
|
||||||
defaults,
|
|
||||||
Filler,
|
Filler,
|
||||||
Legend,
|
Legend,
|
||||||
LinearScale,
|
|
||||||
LineElement,
|
LineElement,
|
||||||
|
LinearScale,
|
||||||
|
PointElement,
|
||||||
TimeScale,
|
TimeScale,
|
||||||
Title,
|
Title,
|
||||||
Tooltip,
|
Tooltip,
|
||||||
PointElement,
|
defaults,
|
||||||
} from "chart.js";
|
} from "chart.js";
|
||||||
import annotationPlugin from "chartjs-plugin-annotation";
|
import annotationPlugin from "chartjs-plugin-annotation";
|
||||||
|
import {
|
||||||
|
HelpTooltip,
|
||||||
|
HelpTooltipContent,
|
||||||
|
HelpTooltipText,
|
||||||
|
HelpTooltipTitle,
|
||||||
|
HelpTooltipTrigger,
|
||||||
|
} from "components/HelpTooltip/HelpTooltip";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import type { FC } from "react";
|
import type { FC } from "react";
|
||||||
import { Line } from "react-chartjs-2";
|
import { Line } from "react-chartjs-2";
|
||||||
import {
|
|
||||||
HelpTooltip,
|
|
||||||
HelpTooltipTitle,
|
|
||||||
HelpTooltipText,
|
|
||||||
HelpTooltipContent,
|
|
||||||
HelpTooltipTrigger,
|
|
||||||
} from "components/HelpTooltip/HelpTooltip";
|
|
||||||
|
|
||||||
ChartJS.register(
|
ChartJS.register(
|
||||||
CategoryScale,
|
CategoryScale,
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
// eslint-disable-next-line no-restricted-imports -- It is the base component
|
|
||||||
import MuiAlert, {
|
import MuiAlert, {
|
||||||
type AlertProps as MuiAlertProps,
|
type AlertProps as MuiAlertProps,
|
||||||
|
// biome-ignore lint/nursery/noRestrictedImports: Used as base component
|
||||||
} from "@mui/material/Alert";
|
} from "@mui/material/Alert";
|
||||||
import Button from "@mui/material/Button";
|
import Button from "@mui/material/Button";
|
||||||
import Collapse from "@mui/material/Collapse";
|
import Collapse from "@mui/material/Collapse";
|
||||||
import {
|
import {
|
||||||
useState,
|
|
||||||
type FC,
|
type FC,
|
||||||
type ReactNode,
|
|
||||||
type PropsWithChildren,
|
type PropsWithChildren,
|
||||||
|
type ReactNode,
|
||||||
|
useState,
|
||||||
} from "react";
|
} from "react";
|
||||||
|
|
||||||
export type AlertProps = MuiAlertProps & {
|
export type AlertProps = MuiAlertProps & {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import AlertTitle from "@mui/material/AlertTitle";
|
import AlertTitle from "@mui/material/AlertTitle";
|
||||||
|
import { getErrorDetail, getErrorMessage } from "api/errors";
|
||||||
import type { FC } from "react";
|
import type { FC } from "react";
|
||||||
import { getErrorMessage, getErrorDetail } from "api/errors";
|
|
||||||
import { Alert, AlertDetail, type AlertProps } from "./Alert";
|
import { Alert, AlertDetail, type AlertProps } from "./Alert";
|
||||||
|
|
||||||
export const ErrorAlert: FC<
|
export const ErrorAlert: FC<
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import { css, type Interpolation, type Theme, useTheme } from "@emotion/react";
|
import { type Interpolation, type Theme, css, useTheme } from "@emotion/react";
|
||||||
// This is the only place MuiAvatar can be used
|
|
||||||
// eslint-disable-next-line no-restricted-imports -- Read above
|
|
||||||
import MuiAvatar, {
|
import MuiAvatar, {
|
||||||
type AvatarProps as MuiAvatarProps,
|
type AvatarProps as MuiAvatarProps,
|
||||||
|
// biome-ignore lint/nursery/noRestrictedImports: Used as base component
|
||||||
} from "@mui/material/Avatar";
|
} from "@mui/material/Avatar";
|
||||||
import { visuallyHidden } from "@mui/utils";
|
import { visuallyHidden } from "@mui/utils";
|
||||||
import { type FC, useId } from "react";
|
import { type FC, useId } from "react";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { type CSSObject, useTheme } from "@emotion/react";
|
import { type CSSObject, useTheme } from "@emotion/react";
|
||||||
import type { FC, ReactNode } from "react";
|
|
||||||
import { Avatar } from "components/Avatar/Avatar";
|
import { Avatar } from "components/Avatar/Avatar";
|
||||||
|
import type { FC, ReactNode } from "react";
|
||||||
|
|
||||||
type AvatarCardProps = {
|
type AvatarCardProps = {
|
||||||
header: string;
|
header: string;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { useTheme } from "@emotion/react";
|
import { useTheme } from "@emotion/react";
|
||||||
import type { FC, ReactNode } from "react";
|
|
||||||
import { Avatar } from "components/Avatar/Avatar";
|
import { Avatar } from "components/Avatar/Avatar";
|
||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
|
import type { FC, ReactNode } from "react";
|
||||||
|
|
||||||
export interface AvatarDataProps {
|
export interface AvatarDataProps {
|
||||||
title: ReactNode;
|
title: ReactNode;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import Skeleton from "@mui/material/Skeleton";
|
import Skeleton from "@mui/material/Skeleton";
|
||||||
import type { FC } from "react";
|
|
||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
|
import type { FC } from "react";
|
||||||
|
|
||||||
export const AvatarDataSkeleton: FC = () => {
|
export const AvatarDataSkeleton: FC = () => {
|
||||||
return (
|
return (
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
import type { Meta, StoryObj } from "@storybook/react";
|
import type { Meta, StoryObj } from "@storybook/react";
|
||||||
import {
|
import {
|
||||||
Badges,
|
|
||||||
AlphaBadge,
|
AlphaBadge,
|
||||||
PreviewBadge,
|
Badges,
|
||||||
DisabledBadge,
|
DisabledBadge,
|
||||||
EnabledBadge,
|
EnabledBadge,
|
||||||
EntitledBadge,
|
|
||||||
EnterpriseBadge,
|
EnterpriseBadge,
|
||||||
|
EntitledBadge,
|
||||||
HealthyBadge,
|
HealthyBadge,
|
||||||
NotHealthyBadge,
|
NotHealthyBadge,
|
||||||
NotRegisteredBadge,
|
|
||||||
NotReachableBadge,
|
NotReachableBadge,
|
||||||
|
NotRegisteredBadge,
|
||||||
|
PreviewBadge,
|
||||||
} from "./Badges";
|
} from "./Badges";
|
||||||
|
|
||||||
const meta: Meta<typeof Badges> = {
|
const meta: Meta<typeof Badges> = {
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import type { Interpolation, Theme } from "@emotion/react";
|
import type { Interpolation, Theme } from "@emotion/react";
|
||||||
import Tooltip from "@mui/material/Tooltip";
|
import Tooltip from "@mui/material/Tooltip";
|
||||||
|
import { Stack } from "components/Stack/Stack";
|
||||||
import {
|
import {
|
||||||
type FC,
|
type FC,
|
||||||
forwardRef,
|
|
||||||
type HTMLAttributes,
|
type HTMLAttributes,
|
||||||
type PropsWithChildren,
|
type PropsWithChildren,
|
||||||
|
forwardRef,
|
||||||
} from "react";
|
} from "react";
|
||||||
import { Stack } from "components/Stack/Stack";
|
|
||||||
|
|
||||||
const styles = {
|
const styles = {
|
||||||
badge: {
|
badge: {
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import { css, cx } from "@emotion/css";
|
import { css, cx } from "@emotion/css";
|
||||||
import { useTheme } from "@emotion/react";
|
import { useTheme } from "@emotion/react";
|
||||||
import Badge from "@mui/material/Badge";
|
import Badge from "@mui/material/Badge";
|
||||||
import type { FC } from "react";
|
|
||||||
import type { WorkspaceBuild } from "api/typesGenerated";
|
import type { WorkspaceBuild } from "api/typesGenerated";
|
||||||
import { Avatar, type AvatarProps } from "components/Avatar/Avatar";
|
import { Avatar, type AvatarProps } from "components/Avatar/Avatar";
|
||||||
import { BuildIcon } from "components/BuildIcon/BuildIcon";
|
import { BuildIcon } from "components/BuildIcon/BuildIcon";
|
||||||
import { useClassName } from "hooks/useClassName";
|
import { useClassName } from "hooks/useClassName";
|
||||||
|
import type { FC } from "react";
|
||||||
import { getDisplayWorkspaceBuildStatus } from "utils/workspace";
|
import { getDisplayWorkspaceBuildStatus } from "utils/workspace";
|
||||||
|
|
||||||
export interface BuildAvatarProps {
|
export interface BuildAvatarProps {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import DeleteOutlined from "@mui/icons-material/DeleteOutlined";
|
import DeleteOutlined from "@mui/icons-material/DeleteOutlined";
|
||||||
import PlayArrowOutlined from "@mui/icons-material/PlayArrowOutlined";
|
import PlayArrowOutlined from "@mui/icons-material/PlayArrowOutlined";
|
||||||
import StopOutlined from "@mui/icons-material/StopOutlined";
|
import StopOutlined from "@mui/icons-material/StopOutlined";
|
||||||
import type { ComponentProps } from "react";
|
|
||||||
import type { WorkspaceTransition } from "api/typesGenerated";
|
import type { WorkspaceTransition } from "api/typesGenerated";
|
||||||
|
import type { ComponentProps } from "react";
|
||||||
|
|
||||||
type SVGIcon = typeof PlayArrowOutlined;
|
type SVGIcon = typeof PlayArrowOutlined;
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import { css, type Interpolation, type Theme } from "@emotion/react";
|
import { type Interpolation, type Theme, css } from "@emotion/react";
|
||||||
import Check from "@mui/icons-material/Check";
|
import Check from "@mui/icons-material/Check";
|
||||||
import IconButton from "@mui/material/Button";
|
import IconButton from "@mui/material/Button";
|
||||||
import Tooltip from "@mui/material/Tooltip";
|
import Tooltip from "@mui/material/Tooltip";
|
||||||
import { forwardRef, type ReactNode } from "react";
|
|
||||||
import { useClipboard } from "hooks/useClipboard";
|
import { useClipboard } from "hooks/useClipboard";
|
||||||
|
import { type ReactNode, forwardRef } from "react";
|
||||||
import { FileCopyIcon } from "../Icons/FileCopyIcon";
|
import { FileCopyIcon } from "../Icons/FileCopyIcon";
|
||||||
|
|
||||||
interface CopyButtonProps {
|
interface CopyButtonProps {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import Tooltip, { type TooltipProps } from "@mui/material/Tooltip";
|
import Tooltip, { type TooltipProps } from "@mui/material/Tooltip";
|
||||||
import type { FC, HTMLAttributes } from "react";
|
|
||||||
import { useClickable } from "hooks/useClickable";
|
import { useClickable } from "hooks/useClickable";
|
||||||
import { useClipboard } from "hooks/useClipboard";
|
import { useClipboard } from "hooks/useClipboard";
|
||||||
|
import type { FC, HTMLAttributes } from "react";
|
||||||
|
|
||||||
interface CopyableValueProps extends HTMLAttributes<HTMLSpanElement> {
|
interface CopyableValueProps extends HTMLAttributes<HTMLSpanElement> {
|
||||||
value: string;
|
value: string;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import type { Meta, StoryObj } from "@storybook/react";
|
import type { Meta, StoryObj } from "@storybook/react";
|
||||||
import { expect, within, userEvent } from "@storybook/test";
|
import { expect, userEvent, within } from "@storybook/test";
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { DurationField } from "./DurationField";
|
import { DurationField } from "./DurationField";
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ function intMask(value: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function durationInMs(durationFieldValue: string, unit: TimeUnit): number {
|
function durationInMs(durationFieldValue: string, unit: TimeUnit): number {
|
||||||
const durationInMs = parseInt(durationFieldValue, 10);
|
const durationInMs = Number.parseInt(durationFieldValue, 10);
|
||||||
|
|
||||||
if (Number.isNaN(durationInMs)) {
|
if (Number.isNaN(durationInMs)) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
import { css, type Interpolation, type Theme } from "@emotion/react";
|
import { type Interpolation, type Theme, css } from "@emotion/react";
|
||||||
import RefreshOutlined from "@mui/icons-material/RefreshOutlined";
|
import RefreshOutlined from "@mui/icons-material/RefreshOutlined";
|
||||||
import Button from "@mui/material/Button";
|
import Button from "@mui/material/Button";
|
||||||
import Link from "@mui/material/Link";
|
import Link from "@mui/material/Link";
|
||||||
import { type FC, useEffect, useState } from "react";
|
|
||||||
import { Helmet } from "react-helmet-async";
|
|
||||||
import type { BuildInfoResponse } from "api/typesGenerated";
|
import type { BuildInfoResponse } from "api/typesGenerated";
|
||||||
import { CopyButton } from "components/CopyButton/CopyButton";
|
import { CopyButton } from "components/CopyButton/CopyButton";
|
||||||
import { CoderIcon } from "components/Icons/CoderIcon";
|
import { CoderIcon } from "components/Icons/CoderIcon";
|
||||||
import { Loader } from "components/Loader/Loader";
|
import { Loader } from "components/Loader/Loader";
|
||||||
import { Margins } from "components/Margins/Margins";
|
import { Margins } from "components/Margins/Margins";
|
||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
|
import { type FC, useEffect, useState } from "react";
|
||||||
|
import { Helmet } from "react-helmet-async";
|
||||||
import { getStaticBuildInfo } from "utils/buildInfo";
|
import { getStaticBuildInfo } from "utils/buildInfo";
|
||||||
|
|
||||||
const fetchDynamicallyImportedModuleError =
|
const fetchDynamicallyImportedModuleError =
|
||||||
@ -71,8 +71,8 @@ export const RuntimeErrorState: FC<RuntimeErrorStateProps> = ({ error }) => {
|
|||||||
["**Version**", coderVersion ?? "-- Set version --"].join(
|
["**Version**", coderVersion ?? "-- Set version --"].join(
|
||||||
"\n",
|
"\n",
|
||||||
),
|
),
|
||||||
["**Path**", "`" + location.pathname + "`"].join("\n"),
|
["**Path**", `\`${location.pathname}\``].join("\n"),
|
||||||
["**Error**", "```\n" + error.stack + "\n```"].join("\n"),
|
["**Error**", `\`\`\`\n${error.stack}\n\`\`\``].join("\n"),
|
||||||
].join("\n\n"),
|
].join("\n\n"),
|
||||||
)}`}
|
)}`}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import type { Interpolation, Theme } from "@emotion/react";
|
import type { Interpolation, Theme } from "@emotion/react";
|
||||||
import Collapse from "@mui/material/Collapse";
|
import Collapse from "@mui/material/Collapse";
|
||||||
import Link from "@mui/material/Link";
|
import Link from "@mui/material/Link";
|
||||||
import type { FC, ReactNode } from "react";
|
|
||||||
import { DropdownArrow } from "components/DropdownArrow/DropdownArrow";
|
import { DropdownArrow } from "components/DropdownArrow/DropdownArrow";
|
||||||
|
import type { FC, ReactNode } from "react";
|
||||||
|
|
||||||
export interface ExpanderProps {
|
export interface ExpanderProps {
|
||||||
expanded: boolean;
|
expanded: boolean;
|
||||||
|
@ -9,9 +9,9 @@ export const ExternalImage = forwardRef<
|
|||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
// biome-ignore lint/a11y/useAltText: no reasonable alt to provide
|
||||||
<img
|
<img
|
||||||
ref={ref}
|
ref={ref}
|
||||||
alt=""
|
|
||||||
css={getExternalImageStylesFromUrl(theme.externalImages, attrs.src)}
|
css={getExternalImageStylesFromUrl(theme.externalImages, attrs.src)}
|
||||||
{...attrs}
|
{...attrs}
|
||||||
/>
|
/>
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import { css, type Interpolation, type Theme } from "@emotion/react";
|
import { type Interpolation, type Theme, css } from "@emotion/react";
|
||||||
import UploadIcon from "@mui/icons-material/CloudUploadOutlined";
|
import UploadIcon from "@mui/icons-material/CloudUploadOutlined";
|
||||||
import RemoveIcon from "@mui/icons-material/DeleteOutline";
|
import RemoveIcon from "@mui/icons-material/DeleteOutline";
|
||||||
import FileIcon from "@mui/icons-material/FolderOutlined";
|
import FileIcon from "@mui/icons-material/FolderOutlined";
|
||||||
import CircularProgress from "@mui/material/CircularProgress";
|
import CircularProgress from "@mui/material/CircularProgress";
|
||||||
import IconButton from "@mui/material/IconButton";
|
import IconButton from "@mui/material/IconButton";
|
||||||
import { type FC, type DragEvent, useRef, type ReactNode } from "react";
|
|
||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
import { useClickable } from "hooks/useClickable";
|
import { useClickable } from "hooks/useClickable";
|
||||||
|
import { type DragEvent, type FC, type ReactNode, useRef } from "react";
|
||||||
|
|
||||||
export interface FileUploadProps {
|
export interface FileUploadProps {
|
||||||
isUploading: boolean;
|
isUploading: boolean;
|
||||||
@ -31,8 +31,8 @@ export const FileUpload: FC<FileUploadProps> = ({
|
|||||||
}) => {
|
}) => {
|
||||||
const fileDrop = useFileDrop(onUpload, extensions);
|
const fileDrop = useFileDrop(onUpload, extensions);
|
||||||
const inputRef = useRef<HTMLInputElement>(null);
|
const inputRef = useRef<HTMLInputElement>(null);
|
||||||
const clickable = useClickable<HTMLDivElement>(
|
const clickable = useClickable<HTMLDivElement>(() =>
|
||||||
() => inputRef.current?.click(),
|
inputRef.current?.click(),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!isUploading && file) {
|
if (!isUploading && file) {
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
import { action } from "@storybook/addon-actions";
|
import { action } from "@storybook/addon-actions";
|
||||||
import type { Meta, StoryObj } from "@storybook/react";
|
import type { Meta, StoryObj } from "@storybook/react";
|
||||||
import { userEvent, within, expect } from "@storybook/test";
|
import { expect, userEvent, within } from "@storybook/test";
|
||||||
import { useState } from "react";
|
|
||||||
import { UserAvatar } from "components/UserAvatar/UserAvatar";
|
import { UserAvatar } from "components/UserAvatar/UserAvatar";
|
||||||
|
import { useState } from "react";
|
||||||
import { withDesktopViewport } from "testHelpers/storybook";
|
import { withDesktopViewport } from "testHelpers/storybook";
|
||||||
import {
|
import {
|
||||||
SelectFilter,
|
SelectFilter,
|
||||||
SelectFilterSearch,
|
|
||||||
type SelectFilterOption,
|
type SelectFilterOption,
|
||||||
|
SelectFilterSearch,
|
||||||
} from "./SelectFilter";
|
} from "./SelectFilter";
|
||||||
|
|
||||||
const options: SelectFilterOption[] = Array.from({ length: 50 }, (_, i) => ({
|
const options: SelectFilterOption[] = Array.from({ length: 50 }, (_, i) => ({
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
import { useState, type FC, type ReactNode } from "react";
|
|
||||||
import { Loader } from "components/Loader/Loader";
|
import { Loader } from "components/Loader/Loader";
|
||||||
import {
|
import {
|
||||||
SelectMenu,
|
SelectMenu,
|
||||||
SelectMenuTrigger,
|
|
||||||
SelectMenuButton,
|
SelectMenuButton,
|
||||||
SelectMenuContent,
|
SelectMenuContent,
|
||||||
SelectMenuSearch,
|
|
||||||
SelectMenuList,
|
|
||||||
SelectMenuItem,
|
|
||||||
SelectMenuIcon,
|
SelectMenuIcon,
|
||||||
|
SelectMenuItem,
|
||||||
|
SelectMenuList,
|
||||||
|
SelectMenuSearch,
|
||||||
|
SelectMenuTrigger,
|
||||||
} from "components/SelectMenu/SelectMenu";
|
} from "components/SelectMenu/SelectMenu";
|
||||||
|
import { type FC, type ReactNode, useState } from "react";
|
||||||
|
|
||||||
const BASE_WIDTH = 200;
|
const BASE_WIDTH = 200;
|
||||||
const POPOVER_WIDTH = 320;
|
const POPOVER_WIDTH = 320;
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import type { FC } from "react";
|
|
||||||
import { API } from "api/api";
|
import { API } from "api/api";
|
||||||
import {
|
import {
|
||||||
SelectFilter,
|
SelectFilter,
|
||||||
SelectFilterSearch,
|
|
||||||
type SelectFilterOption,
|
type SelectFilterOption,
|
||||||
|
SelectFilterSearch,
|
||||||
} from "components/Filter/SelectFilter";
|
} from "components/Filter/SelectFilter";
|
||||||
import { UserAvatar } from "components/UserAvatar/UserAvatar";
|
import { UserAvatar } from "components/UserAvatar/UserAvatar";
|
||||||
import { useAuthenticated } from "contexts/auth/RequireAuth";
|
import { useAuthenticated } from "contexts/auth/RequireAuth";
|
||||||
|
import type { FC } from "react";
|
||||||
import { type UseFilterMenuOptions, useFilterMenu } from "./menu";
|
import { type UseFilterMenuOptions, useFilterMenu } from "./menu";
|
||||||
|
|
||||||
export const useUserFilterMenu = ({
|
export const useUserFilterMenu = ({
|
||||||
|
@ -7,8 +7,6 @@ import Menu from "@mui/material/Menu";
|
|||||||
import MenuItem from "@mui/material/MenuItem";
|
import MenuItem from "@mui/material/MenuItem";
|
||||||
import Skeleton, { type SkeletonProps } from "@mui/material/Skeleton";
|
import Skeleton, { type SkeletonProps } from "@mui/material/Skeleton";
|
||||||
import type { Breakpoint } from "@mui/system/createTheme";
|
import type { Breakpoint } from "@mui/system/createTheme";
|
||||||
import { type FC, type ReactNode, useEffect, useRef, useState } from "react";
|
|
||||||
import type { useSearchParams } from "react-router-dom";
|
|
||||||
import {
|
import {
|
||||||
getValidationErrorMessage,
|
getValidationErrorMessage,
|
||||||
hasError,
|
hasError,
|
||||||
@ -17,6 +15,8 @@ import {
|
|||||||
import { InputGroup } from "components/InputGroup/InputGroup";
|
import { InputGroup } from "components/InputGroup/InputGroup";
|
||||||
import { SearchField } from "components/SearchField/SearchField";
|
import { SearchField } from "components/SearchField/SearchField";
|
||||||
import { useDebouncedFunction } from "hooks/debounce";
|
import { useDebouncedFunction } from "hooks/debounce";
|
||||||
|
import { type FC, type ReactNode, useEffect, useRef, useState } from "react";
|
||||||
|
import type { useSearchParams } from "react-router-dom";
|
||||||
|
|
||||||
export type PresetFilter = {
|
export type PresetFilter = {
|
||||||
name: string;
|
name: string;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
import type { SelectFilterOption } from "components/Filter/SelectFilter";
|
||||||
import { useMemo, useRef, useState } from "react";
|
import { useMemo, useRef, useState } from "react";
|
||||||
import { useQuery } from "react-query";
|
import { useQuery } from "react-query";
|
||||||
import type { SelectFilterOption } from "components/Filter/SelectFilter";
|
|
||||||
|
|
||||||
export type UseFilterMenuOptions<TOption extends SelectFilterOption> = {
|
export type UseFilterMenuOptions<TOption extends SelectFilterOption> = {
|
||||||
id: string;
|
id: string;
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
import { type Interpolation, type Theme, useTheme } from "@emotion/react";
|
import { type Interpolation, type Theme, useTheme } from "@emotion/react";
|
||||||
import {
|
|
||||||
type ComponentProps,
|
|
||||||
createContext,
|
|
||||||
type FC,
|
|
||||||
forwardRef,
|
|
||||||
type HTMLProps,
|
|
||||||
type ReactNode,
|
|
||||||
useContext,
|
|
||||||
} from "react";
|
|
||||||
import { AlphaBadge, DeprecatedBadge } from "components/Badges/Badges";
|
import { AlphaBadge, DeprecatedBadge } from "components/Badges/Badges";
|
||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
|
import {
|
||||||
|
type ComponentProps,
|
||||||
|
type FC,
|
||||||
|
type HTMLProps,
|
||||||
|
type ReactNode,
|
||||||
|
createContext,
|
||||||
|
forwardRef,
|
||||||
|
useContext,
|
||||||
|
} from "react";
|
||||||
import {
|
import {
|
||||||
FormFooter as BaseFormFooter,
|
FormFooter as BaseFormFooter,
|
||||||
type FormFooterProps,
|
type FormFooterProps,
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import type { FC, ReactNode } from "react";
|
|
||||||
import { Margins } from "components/Margins/Margins";
|
import { Margins } from "components/Margins/Margins";
|
||||||
import {
|
import {
|
||||||
PageHeader,
|
PageHeader,
|
||||||
PageHeaderTitle,
|
|
||||||
PageHeaderSubtitle,
|
PageHeaderSubtitle,
|
||||||
|
PageHeaderTitle,
|
||||||
} from "components/PageHeader/PageHeader";
|
} from "components/PageHeader/PageHeader";
|
||||||
|
import type { FC, ReactNode } from "react";
|
||||||
|
|
||||||
export interface FullPageFormProps {
|
export interface FullPageFormProps {
|
||||||
title: string;
|
title: string;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user