Compare commits
4 commits
735ca6c07b
...
99290235f5
| Author | SHA1 | Date | |
|---|---|---|---|
| 99290235f5 | |||
| 00ec7002cb | |||
| bdd4356894 | |||
| a72d043659 |
10 changed files with 229 additions and 260 deletions
|
|
@ -1,6 +1,4 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import * as Sentry from "@sentry/react";
|
|
||||||
import { Integrations } from "@sentry/tracing";
|
|
||||||
import {
|
import {
|
||||||
ChakraProvider,
|
ChakraProvider,
|
||||||
Box,
|
Box,
|
||||||
|
|
@ -43,8 +41,6 @@ const globalStyles = theme.styles.global;
|
||||||
theme.styles.global = {};
|
theme.styles.global = {};
|
||||||
|
|
||||||
export default function AppProvider({ children }) {
|
export default function AppProvider({ children }) {
|
||||||
React.useEffect(() => setupLogging(), []);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BrowserRouter>
|
<BrowserRouter>
|
||||||
<QueryClientProvider client={reactQueryClient}>
|
<QueryClientProvider client={reactQueryClient}>
|
||||||
|
|
@ -58,47 +54,6 @@ export default function AppProvider({ children }) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupLogging() {
|
|
||||||
Sentry.init({
|
|
||||||
dsn: "https://c55875c3b0904264a1a99e5b741a221e@o506079.ingest.sentry.io/5595379",
|
|
||||||
autoSessionTracking: true,
|
|
||||||
integrations: [
|
|
||||||
new Integrations.BrowserTracing({
|
|
||||||
beforeNavigate: (context) => ({
|
|
||||||
...context,
|
|
||||||
// Assume any path segment starting with a digit is an ID, and replace
|
|
||||||
// it with `:id`. This will help group related routes in Sentry stats.
|
|
||||||
// NOTE: I'm a bit uncertain about the timing on this for tracking
|
|
||||||
// client-side navs... but we now only track first-time
|
|
||||||
// pageloads, and it definitely works correctly for them!
|
|
||||||
name: window.location.pathname.replaceAll(/\/[0-9][^/]*/g, "/:id"),
|
|
||||||
}),
|
|
||||||
|
|
||||||
// We have a _lot_ of location changes that don't actually signify useful
|
|
||||||
// navigations, like in the wardrobe page. It could be useful to trace
|
|
||||||
// them with better filtering someday, but frankly we don't use the perf
|
|
||||||
// features besides Web Vitals right now, and those only get tracked on
|
|
||||||
// first-time pageloads, anyway. So, don't track client-side navs!
|
|
||||||
startTransactionOnLocationChange: false,
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
denyUrls: [
|
|
||||||
// Don't log errors that were probably triggered by extensions and not by
|
|
||||||
// our own app. (Apparently Sentry's setting to ignore browser extension
|
|
||||||
// errors doesn't do this anywhere near as consistently as I'd expect?)
|
|
||||||
//
|
|
||||||
// Adapted from https://gist.github.com/impressiver/5092952, as linked in
|
|
||||||
// https://docs.sentry.io/platforms/javascript/configuration/filtering/.
|
|
||||||
/^chrome-extension:\/\//,
|
|
||||||
/^moz-extension:\/\//,
|
|
||||||
],
|
|
||||||
|
|
||||||
// Since we're only tracking first-page loads and not navigations, 100%
|
|
||||||
// sampling isn't actually so much! Tune down if it becomes a problem, tho.
|
|
||||||
tracesSampleRate: 1.0,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ScopedCSSReset applies a copy of Chakra UI's CSS reset, but only to its
|
* ScopedCSSReset applies a copy of Chakra UI's CSS reset, but only to its
|
||||||
* children (or, well, any element with the chakra-css-reset class). It also
|
* children (or, well, any element with the chakra-css-reset class). It also
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Box, Flex, useBreakpointValue } from "@chakra-ui/react";
|
import { Box, Flex, useBreakpointValue } from "@chakra-ui/react";
|
||||||
import * as Sentry from "@sentry/react";
|
|
||||||
|
|
||||||
import ItemsPanel from "./ItemsPanel";
|
import ItemsPanel from "./ItemsPanel";
|
||||||
import SearchToolbar, { searchQueryIsEmpty } from "./SearchToolbar";
|
import SearchToolbar, { searchQueryIsEmpty } from "./SearchToolbar";
|
||||||
import SearchPanel from "./SearchPanel";
|
import SearchPanel from "./SearchPanel";
|
||||||
import { MajorErrorMessage, TestErrorSender, useLocalStorage } from "../util";
|
import { ErrorBoundary, TestErrorSender, useLocalStorage } from "../util";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ItemsAndSearchPanels manages the shared layout and state for:
|
* ItemsAndSearchPanels manages the shared layout and state for:
|
||||||
|
|
@ -40,7 +39,7 @@ function ItemsAndSearchPanels({
|
||||||
const isShowingSearchFooter = canUseSearchFooter && hasRoomForSearchFooter;
|
const isShowingSearchFooter = canUseSearchFooter && hasRoomForSearchFooter;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Sentry.ErrorBoundary fallback={MajorErrorMessage}>
|
<ErrorBoundary>
|
||||||
<TestErrorSender />
|
<TestErrorSender />
|
||||||
<Flex direction="column" height="100%">
|
<Flex direction="column" height="100%">
|
||||||
{isShowingSearchFooter && <Box height="2" />}
|
{isShowingSearchFooter && <Box height="2" />}
|
||||||
|
|
@ -85,7 +84,7 @@ function ItemsAndSearchPanels({
|
||||||
</Box>
|
</Box>
|
||||||
)}
|
)}
|
||||||
</Flex>
|
</Flex>
|
||||||
</Sentry.ErrorBoundary>
|
</ErrorBoundary>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import * as Sentry from "@sentry/react";
|
|
||||||
import { Box, Flex } from "@chakra-ui/react";
|
import { Box, Flex } from "@chakra-ui/react";
|
||||||
import SearchToolbar from "./SearchToolbar";
|
import SearchToolbar from "./SearchToolbar";
|
||||||
import { MajorErrorMessage, TestErrorSender, useLocalStorage } from "../util";
|
import { ErrorBoundary, TestErrorSender, useLocalStorage } from "../util";
|
||||||
import PaginationToolbar from "../components/PaginationToolbar";
|
import PaginationToolbar from "../components/PaginationToolbar";
|
||||||
import { useSearchResults } from "./useSearchResults";
|
import { useSearchResults } from "./useSearchResults";
|
||||||
|
|
||||||
|
|
@ -34,7 +33,7 @@ function SearchFooter({ searchQuery, onChangeSearchQuery, outfitState }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Sentry.ErrorBoundary fallback={MajorErrorMessage}>
|
<ErrorBoundary>
|
||||||
<TestErrorSender />
|
<TestErrorSender />
|
||||||
<Box>
|
<Box>
|
||||||
<Box paddingX="4" paddingY="4">
|
<Box paddingX="4" paddingY="4">
|
||||||
|
|
@ -73,7 +72,7 @@ function SearchFooter({ searchQuery, onChangeSearchQuery, outfitState }) {
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
</Sentry.ErrorBoundary>
|
</ErrorBoundary>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,10 @@ import React from "react";
|
||||||
import { Box, Center, DarkMode } from "@chakra-ui/react";
|
import { Box, Center, DarkMode } from "@chakra-ui/react";
|
||||||
import gql from "graphql-tag";
|
import gql from "graphql-tag";
|
||||||
import { useQuery } from "@apollo/client";
|
import { useQuery } from "@apollo/client";
|
||||||
import * as Sentry from "@sentry/react";
|
|
||||||
|
|
||||||
import OutfitThumbnail from "../components/OutfitThumbnail";
|
import OutfitThumbnail from "../components/OutfitThumbnail";
|
||||||
import { useOutfitPreview } from "../components/OutfitPreview";
|
import { useOutfitPreview } from "../components/OutfitPreview";
|
||||||
import { loadable, MajorErrorMessage, TestErrorSender } from "../util";
|
import { loadable, ErrorBoundary, TestErrorSender } from "../util";
|
||||||
|
|
||||||
const OutfitControls = loadable(() => import("./OutfitControls"));
|
const OutfitControls = loadable(() => import("./OutfitControls"));
|
||||||
|
|
||||||
|
|
@ -33,7 +32,7 @@ function WardrobePreviewAndControls({
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Sentry.ErrorBoundary fallback={MajorErrorMessage}>
|
<ErrorBoundary>
|
||||||
<TestErrorSender />
|
<TestErrorSender />
|
||||||
<Center position="absolute" top="0" bottom="0" left="0" right="0">
|
<Center position="absolute" top="0" bottom="0" left="0" right="0">
|
||||||
<DarkMode>{preview}</DarkMode>
|
<DarkMode>{preview}</DarkMode>
|
||||||
|
|
@ -46,7 +45,7 @@ function WardrobePreviewAndControls({
|
||||||
appearance={appearance}
|
appearance={appearance}
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
</Sentry.ErrorBoundary>
|
</ErrorBoundary>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import {
|
||||||
useColorModeValue,
|
useColorModeValue,
|
||||||
} from "@chakra-ui/react";
|
} from "@chakra-ui/react";
|
||||||
import loadableLibrary from "@loadable/component";
|
import loadableLibrary from "@loadable/component";
|
||||||
import * as Sentry from "@sentry/react";
|
|
||||||
import { WarningIcon } from "@chakra-ui/icons";
|
import { WarningIcon } from "@chakra-ui/icons";
|
||||||
|
|
||||||
import { buildImpress2020Url } from "./impress-2020-config";
|
import { buildImpress2020Url } from "./impress-2020-config";
|
||||||
|
|
@ -414,14 +413,17 @@ export function loadable(load, options) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* logAndCapture will print an error to the console, and send it to Sentry.
|
* logAndCapture will print an error to the console.
|
||||||
|
*
|
||||||
|
* NOTE: Previously, this would log to Sentry, but we actually just don't log
|
||||||
|
* JS errors anymore, because we haven't done in-depth JS debugging in a
|
||||||
|
* while.
|
||||||
*
|
*
|
||||||
* This is useful when there's a graceful recovery path, but it's still a
|
* This is useful when there's a graceful recovery path, but it's still a
|
||||||
* genuinely unexpected error worth logging.
|
* genuinely unexpected error worth logging.
|
||||||
*/
|
*/
|
||||||
export function logAndCapture(e) {
|
export function logAndCapture(e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
Sentry.captureException(e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getGraphQLErrorMessage(error) {
|
export function getGraphQLErrorMessage(error) {
|
||||||
|
|
@ -475,8 +477,8 @@ export function MajorErrorMessage({ error = null, variant = "unexpected" }) {
|
||||||
<Box gridArea="description" marginBottom="2">
|
<Box gridArea="description" marginBottom="2">
|
||||||
{variant === "unexpected" && (
|
{variant === "unexpected" && (
|
||||||
<>
|
<>
|
||||||
There was an error displaying this page. I'll get info about it
|
There was an error displaying this page. If it keeps happening,
|
||||||
automatically, but you can tell me more at{" "}
|
you can tell me more at{" "}
|
||||||
<Link href="mailto:matchu@openneo.net" color="green.400">
|
<Link href="mailto:matchu@openneo.net" color="green.400">
|
||||||
matchu@openneo.net
|
matchu@openneo.net
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -523,10 +525,29 @@ export function MajorErrorMessage({ error = null, variant = "unexpected" }) {
|
||||||
|
|
||||||
export function TestErrorSender() {
|
export function TestErrorSender() {
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if (window.location.href.includes("send-test-error-for-sentry")) {
|
if (window.location.href.includes("send-test-error")) {
|
||||||
throw new Error("Test error for Sentry");
|
throw new Error("Test error for debugging <ErrorBoundary>s");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class ErrorBoundary extends React.Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = { error: null };
|
||||||
|
}
|
||||||
|
|
||||||
|
static getDerivedStateFromError(error) {
|
||||||
|
return { error };
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
if (this.state.error != null) {
|
||||||
|
return <MajorErrorMessage error={this.state.error} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.props.children;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
3
bin/deploy:rollback
Executable file
3
bin/deploy:rollback
Executable file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Rollback to a previous version in production.
|
||||||
|
cd $(dirname $0)/../deploy && ansible-playbook rollback.yml --extra-vars="new_app_version=$1"
|
||||||
71
deploy/rollback.yml
Normal file
71
deploy/rollback.yml
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
---
|
||||||
|
- name: Rollback impress to a previous version
|
||||||
|
hosts: webserver
|
||||||
|
become: yes
|
||||||
|
become_user: impress
|
||||||
|
vars:
|
||||||
|
remote_project_root: "/srv/impress"
|
||||||
|
ruby_version: "3.3.7"
|
||||||
|
tasks:
|
||||||
|
- name: Read the second-to-most-recent version
|
||||||
|
command:
|
||||||
|
chdir: "{{ remote_project_root }}/versions"
|
||||||
|
cmd: bash -c 'ls | tail -n 2 | head -n 1'
|
||||||
|
register: new_app_version
|
||||||
|
|
||||||
|
- name: Print out the new version name
|
||||||
|
debug:
|
||||||
|
msg: "Rolling back to version: {{ new_app_version.stdout }}"
|
||||||
|
|
||||||
|
- name: Save new remote folder path to a variable
|
||||||
|
set_fact:
|
||||||
|
remote_app_root: "{{ remote_project_root }}/versions/{{ new_app_version.stdout }}"
|
||||||
|
|
||||||
|
- name: Configure Bundler to run in deployment mode
|
||||||
|
command:
|
||||||
|
chdir: "{{ remote_app_root }}"
|
||||||
|
cmd: /opt/ruby-{{ ruby_version }}/bin/bundle config set --local deployment true
|
||||||
|
|
||||||
|
# This ensures that, while attempting our current deploy, we don't
|
||||||
|
# accidentally delete gems out from under the currently-running version.
|
||||||
|
# NOTE: From reading the docs, I thiink this is the default behavior, but
|
||||||
|
# I can't be sure? Rather than deep-dive to find out, I'd rather just set
|
||||||
|
# it, to be clear about the default(?) behavior we're depending on.
|
||||||
|
- name: Configure Bundler to *not* clean up old gems when installing
|
||||||
|
command:
|
||||||
|
chdir: "{{ remote_app_root }}"
|
||||||
|
cmd: /opt/ruby-{{ ruby_version }}/bin/bundle config set --local clean false
|
||||||
|
|
||||||
|
# NOTE: Bundler recommends this, and they're pretty smart about it: if the
|
||||||
|
# Gemfile changes, this shouldn't disrupt the currently-running version,
|
||||||
|
# because we won't clean up its now-unused gems yet, and if we upgrade a
|
||||||
|
# gem it'll install *both* versions of the gem until we clean up.
|
||||||
|
- name: Configure Bundler to use the bundle folder shared by all app versions
|
||||||
|
command:
|
||||||
|
chdir: "{{ remote_app_root }}"
|
||||||
|
cmd: "/opt/ruby-{{ ruby_version }}/bin/bundle config set --local path {{ remote_project_root}}/shared/bundle"
|
||||||
|
|
||||||
|
- name: Run `bundle install` to install dependencies in remote folder
|
||||||
|
command:
|
||||||
|
chdir: "{{ remote_app_root }}"
|
||||||
|
# The `--local` flag instructs Bundler to use the cached dependencies
|
||||||
|
# in `vendor/cache`, instead of reading from the web, which is much
|
||||||
|
# faster and more reliable!
|
||||||
|
cmd: /opt/ruby-{{ ruby_version }}/bin/bundle install --local
|
||||||
|
|
||||||
|
- name: Update the `current` folder to point to the new version
|
||||||
|
file:
|
||||||
|
src: "{{ remote_app_root }}"
|
||||||
|
dest: /srv/impress/current
|
||||||
|
state: link
|
||||||
|
|
||||||
|
# NOTE: This uses the passwordless sudo rule we set up in deploy:setup.
|
||||||
|
# We write it as a command rather than using the built-in `systemd` Ansible
|
||||||
|
# module, to make sure we're invoking it exactly as we wrote in that rule.
|
||||||
|
#
|
||||||
|
# NOTE: We use `sudo` instead of `become_user: root`, because we don't have
|
||||||
|
# permission to *become* the root user; we only have permission to run this
|
||||||
|
# one command as them.
|
||||||
|
- name: Restart the app
|
||||||
|
become: no
|
||||||
|
command: sudo systemctl restart impress
|
||||||
|
|
@ -9,12 +9,9 @@
|
||||||
"@emotion/styled": "^11.0.0",
|
"@emotion/styled": "^11.0.0",
|
||||||
"@hotwired/turbo-rails": "^8.0.4",
|
"@hotwired/turbo-rails": "^8.0.4",
|
||||||
"@loadable/component": "^5.12.0",
|
"@loadable/component": "^5.12.0",
|
||||||
"@sentry/react": "^5.30.0",
|
|
||||||
"@sentry/tracing": "^5.30.0",
|
|
||||||
"@tanstack/react-query": "^5.4.3",
|
"@tanstack/react-query": "^5.4.3",
|
||||||
"apollo-link-persisted-queries": "^0.2.2",
|
"apollo-link-persisted-queries": "^0.2.2",
|
||||||
"easeljs": "^1.0.2",
|
"easeljs": "^1.0.2",
|
||||||
"esbuild": "^0.19.0",
|
|
||||||
"framer-motion": "^4.1.11",
|
"framer-motion": "^4.1.11",
|
||||||
"graphql": "^15.5.0",
|
"graphql": "^15.5.0",
|
||||||
"graphql-tag": "^2.12.6",
|
"graphql-tag": "^2.12.6",
|
||||||
|
|
@ -31,6 +28,7 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "^7.8.0",
|
"@typescript-eslint/eslint-plugin": "^7.8.0",
|
||||||
"@typescript-eslint/parser": "^7.8.0",
|
"@typescript-eslint/parser": "^7.8.0",
|
||||||
|
"esbuild": "^0.25.3",
|
||||||
"eslint": "^8.52.0",
|
"eslint": "^8.52.0",
|
||||||
"eslint-plugin-jsx-a11y": "^6.8.0",
|
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||||
"eslint-plugin-react": "^7.33.2",
|
"eslint-plugin-react": "^7.33.2",
|
||||||
|
|
|
||||||
BIN
vendor/cache/nokogiri-1.18.6-x86_64-linux-gnu.gem
vendored
Normal file
BIN
vendor/cache/nokogiri-1.18.6-x86_64-linux-gnu.gem
vendored
Normal file
Binary file not shown.
310
yarn.lock
310
yarn.lock
|
|
@ -1120,163 +1120,177 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/aix-ppc64@npm:0.19.12":
|
"@esbuild/aix-ppc64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/aix-ppc64@npm:0.19.12"
|
resolution: "@esbuild/aix-ppc64@npm:0.25.3"
|
||||||
conditions: os=aix & cpu=ppc64
|
conditions: os=aix & cpu=ppc64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/android-arm64@npm:0.19.12":
|
"@esbuild/android-arm64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/android-arm64@npm:0.19.12"
|
resolution: "@esbuild/android-arm64@npm:0.25.3"
|
||||||
conditions: os=android & cpu=arm64
|
conditions: os=android & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/android-arm@npm:0.19.12":
|
"@esbuild/android-arm@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/android-arm@npm:0.19.12"
|
resolution: "@esbuild/android-arm@npm:0.25.3"
|
||||||
conditions: os=android & cpu=arm
|
conditions: os=android & cpu=arm
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/android-x64@npm:0.19.12":
|
"@esbuild/android-x64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/android-x64@npm:0.19.12"
|
resolution: "@esbuild/android-x64@npm:0.25.3"
|
||||||
conditions: os=android & cpu=x64
|
conditions: os=android & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/darwin-arm64@npm:0.19.12":
|
"@esbuild/darwin-arm64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/darwin-arm64@npm:0.19.12"
|
resolution: "@esbuild/darwin-arm64@npm:0.25.3"
|
||||||
conditions: os=darwin & cpu=arm64
|
conditions: os=darwin & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/darwin-x64@npm:0.19.12":
|
"@esbuild/darwin-x64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/darwin-x64@npm:0.19.12"
|
resolution: "@esbuild/darwin-x64@npm:0.25.3"
|
||||||
conditions: os=darwin & cpu=x64
|
conditions: os=darwin & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/freebsd-arm64@npm:0.19.12":
|
"@esbuild/freebsd-arm64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/freebsd-arm64@npm:0.19.12"
|
resolution: "@esbuild/freebsd-arm64@npm:0.25.3"
|
||||||
conditions: os=freebsd & cpu=arm64
|
conditions: os=freebsd & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/freebsd-x64@npm:0.19.12":
|
"@esbuild/freebsd-x64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/freebsd-x64@npm:0.19.12"
|
resolution: "@esbuild/freebsd-x64@npm:0.25.3"
|
||||||
conditions: os=freebsd & cpu=x64
|
conditions: os=freebsd & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/linux-arm64@npm:0.19.12":
|
"@esbuild/linux-arm64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/linux-arm64@npm:0.19.12"
|
resolution: "@esbuild/linux-arm64@npm:0.25.3"
|
||||||
conditions: os=linux & cpu=arm64
|
conditions: os=linux & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/linux-arm@npm:0.19.12":
|
"@esbuild/linux-arm@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/linux-arm@npm:0.19.12"
|
resolution: "@esbuild/linux-arm@npm:0.25.3"
|
||||||
conditions: os=linux & cpu=arm
|
conditions: os=linux & cpu=arm
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/linux-ia32@npm:0.19.12":
|
"@esbuild/linux-ia32@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/linux-ia32@npm:0.19.12"
|
resolution: "@esbuild/linux-ia32@npm:0.25.3"
|
||||||
conditions: os=linux & cpu=ia32
|
conditions: os=linux & cpu=ia32
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/linux-loong64@npm:0.19.12":
|
"@esbuild/linux-loong64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/linux-loong64@npm:0.19.12"
|
resolution: "@esbuild/linux-loong64@npm:0.25.3"
|
||||||
conditions: os=linux & cpu=loong64
|
conditions: os=linux & cpu=loong64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/linux-mips64el@npm:0.19.12":
|
"@esbuild/linux-mips64el@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/linux-mips64el@npm:0.19.12"
|
resolution: "@esbuild/linux-mips64el@npm:0.25.3"
|
||||||
conditions: os=linux & cpu=mips64el
|
conditions: os=linux & cpu=mips64el
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/linux-ppc64@npm:0.19.12":
|
"@esbuild/linux-ppc64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/linux-ppc64@npm:0.19.12"
|
resolution: "@esbuild/linux-ppc64@npm:0.25.3"
|
||||||
conditions: os=linux & cpu=ppc64
|
conditions: os=linux & cpu=ppc64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/linux-riscv64@npm:0.19.12":
|
"@esbuild/linux-riscv64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/linux-riscv64@npm:0.19.12"
|
resolution: "@esbuild/linux-riscv64@npm:0.25.3"
|
||||||
conditions: os=linux & cpu=riscv64
|
conditions: os=linux & cpu=riscv64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/linux-s390x@npm:0.19.12":
|
"@esbuild/linux-s390x@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/linux-s390x@npm:0.19.12"
|
resolution: "@esbuild/linux-s390x@npm:0.25.3"
|
||||||
conditions: os=linux & cpu=s390x
|
conditions: os=linux & cpu=s390x
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/linux-x64@npm:0.19.12":
|
"@esbuild/linux-x64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/linux-x64@npm:0.19.12"
|
resolution: "@esbuild/linux-x64@npm:0.25.3"
|
||||||
conditions: os=linux & cpu=x64
|
conditions: os=linux & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/netbsd-x64@npm:0.19.12":
|
"@esbuild/netbsd-arm64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/netbsd-x64@npm:0.19.12"
|
resolution: "@esbuild/netbsd-arm64@npm:0.25.3"
|
||||||
|
conditions: os=netbsd & cpu=arm64
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@esbuild/netbsd-x64@npm:0.25.3":
|
||||||
|
version: 0.25.3
|
||||||
|
resolution: "@esbuild/netbsd-x64@npm:0.25.3"
|
||||||
conditions: os=netbsd & cpu=x64
|
conditions: os=netbsd & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/openbsd-x64@npm:0.19.12":
|
"@esbuild/openbsd-arm64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/openbsd-x64@npm:0.19.12"
|
resolution: "@esbuild/openbsd-arm64@npm:0.25.3"
|
||||||
|
conditions: os=openbsd & cpu=arm64
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@esbuild/openbsd-x64@npm:0.25.3":
|
||||||
|
version: 0.25.3
|
||||||
|
resolution: "@esbuild/openbsd-x64@npm:0.25.3"
|
||||||
conditions: os=openbsd & cpu=x64
|
conditions: os=openbsd & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/sunos-x64@npm:0.19.12":
|
"@esbuild/sunos-x64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/sunos-x64@npm:0.19.12"
|
resolution: "@esbuild/sunos-x64@npm:0.25.3"
|
||||||
conditions: os=sunos & cpu=x64
|
conditions: os=sunos & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/win32-arm64@npm:0.19.12":
|
"@esbuild/win32-arm64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/win32-arm64@npm:0.19.12"
|
resolution: "@esbuild/win32-arm64@npm:0.25.3"
|
||||||
conditions: os=win32 & cpu=arm64
|
conditions: os=win32 & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/win32-ia32@npm:0.19.12":
|
"@esbuild/win32-ia32@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/win32-ia32@npm:0.19.12"
|
resolution: "@esbuild/win32-ia32@npm:0.25.3"
|
||||||
conditions: os=win32 & cpu=ia32
|
conditions: os=win32 & cpu=ia32
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@esbuild/win32-x64@npm:0.19.12":
|
"@esbuild/win32-x64@npm:0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "@esbuild/win32-x64@npm:0.19.12"
|
resolution: "@esbuild/win32-x64@npm:0.25.3"
|
||||||
conditions: os=win32 & cpu=x64
|
conditions: os=win32 & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
@ -1477,100 +1491,6 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@sentry/browser@npm:5.30.0":
|
|
||||||
version: 5.30.0
|
|
||||||
resolution: "@sentry/browser@npm:5.30.0"
|
|
||||||
dependencies:
|
|
||||||
"@sentry/core": "npm:5.30.0"
|
|
||||||
"@sentry/types": "npm:5.30.0"
|
|
||||||
"@sentry/utils": "npm:5.30.0"
|
|
||||||
tslib: "npm:^1.9.3"
|
|
||||||
checksum: 10c0/6793e1b49a8cdb1f025115bcc591bf67c97b6515f62a33ffcbb7b1ab66e459ebc471797d02e471be1ebf14092b56eb25ed914f043962388cc224bc961e334a17
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@sentry/core@npm:5.30.0":
|
|
||||||
version: 5.30.0
|
|
||||||
resolution: "@sentry/core@npm:5.30.0"
|
|
||||||
dependencies:
|
|
||||||
"@sentry/hub": "npm:5.30.0"
|
|
||||||
"@sentry/minimal": "npm:5.30.0"
|
|
||||||
"@sentry/types": "npm:5.30.0"
|
|
||||||
"@sentry/utils": "npm:5.30.0"
|
|
||||||
tslib: "npm:^1.9.3"
|
|
||||||
checksum: 10c0/6407b9c2a6a56f90c198f5714b3257df24d89d1b4ca6726bd44760d0adabc25798b69fef2c88ccea461c7e79e3c78861aaebfd51fd3cb892aee656c3f7e11801
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@sentry/hub@npm:5.30.0":
|
|
||||||
version: 5.30.0
|
|
||||||
resolution: "@sentry/hub@npm:5.30.0"
|
|
||||||
dependencies:
|
|
||||||
"@sentry/types": "npm:5.30.0"
|
|
||||||
"@sentry/utils": "npm:5.30.0"
|
|
||||||
tslib: "npm:^1.9.3"
|
|
||||||
checksum: 10c0/386c91d06aa44be0465fc11330d748a113e464d41cd562a9e1d222a682cbcb14e697a3e640953e7a0239997ad8a02b223a0df3d9e1d8816cb823fd3613be3e2f
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@sentry/minimal@npm:5.30.0":
|
|
||||||
version: 5.30.0
|
|
||||||
resolution: "@sentry/minimal@npm:5.30.0"
|
|
||||||
dependencies:
|
|
||||||
"@sentry/hub": "npm:5.30.0"
|
|
||||||
"@sentry/types": "npm:5.30.0"
|
|
||||||
tslib: "npm:^1.9.3"
|
|
||||||
checksum: 10c0/34ec05503de46d01f98c94701475d5d89cc044892c86ccce30e01f62f28344eb23b718e7cf573815e46f30a4ac9da3129bed9b3d20c822938acfb40cbe72437b
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@sentry/react@npm:^5.30.0":
|
|
||||||
version: 5.30.0
|
|
||||||
resolution: "@sentry/react@npm:5.30.0"
|
|
||||||
dependencies:
|
|
||||||
"@sentry/browser": "npm:5.30.0"
|
|
||||||
"@sentry/minimal": "npm:5.30.0"
|
|
||||||
"@sentry/types": "npm:5.30.0"
|
|
||||||
"@sentry/utils": "npm:5.30.0"
|
|
||||||
hoist-non-react-statics: "npm:^3.3.2"
|
|
||||||
tslib: "npm:^1.9.3"
|
|
||||||
peerDependencies:
|
|
||||||
react: 15.x || 16.x || 17.x
|
|
||||||
react-dom: 15.x || 16.x || 17.x
|
|
||||||
checksum: 10c0/2a80eb40038ac3d9b2ff9346cfecb39a248a14fedfc45ca5f32a4194620ea6dccf9f53ccc43c6d151687178e4741f80e4218c5e0ac66e174c341088a30517abf
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@sentry/tracing@npm:^5.30.0":
|
|
||||||
version: 5.30.0
|
|
||||||
resolution: "@sentry/tracing@npm:5.30.0"
|
|
||||||
dependencies:
|
|
||||||
"@sentry/hub": "npm:5.30.0"
|
|
||||||
"@sentry/minimal": "npm:5.30.0"
|
|
||||||
"@sentry/types": "npm:5.30.0"
|
|
||||||
"@sentry/utils": "npm:5.30.0"
|
|
||||||
tslib: "npm:^1.9.3"
|
|
||||||
checksum: 10c0/46830265bc54a3203d7d9f0d8d9f2f7d9d2c6a977e07ccdae317fa3ea29c388b904b3bef28f7a0ba9c074845d67feab63c6d3c0ddce9aeb275b6c966253fb415
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@sentry/types@npm:5.30.0":
|
|
||||||
version: 5.30.0
|
|
||||||
resolution: "@sentry/types@npm:5.30.0"
|
|
||||||
checksum: 10c0/99c6e55c0a82c8ca95be2e9dbb35f581b29e4ff7af74b23bc62b690de4e35febfa15868184a2303480ef86babd4fea5273cf3b5ddf4a27685b841a72f13a0c88
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@sentry/utils@npm:5.30.0":
|
|
||||||
version: 5.30.0
|
|
||||||
resolution: "@sentry/utils@npm:5.30.0"
|
|
||||||
dependencies:
|
|
||||||
"@sentry/types": "npm:5.30.0"
|
|
||||||
tslib: "npm:^1.9.3"
|
|
||||||
checksum: 10c0/ca8eebfea7ac7db6d16f6c0b8a66ac62587df12a79ce9d0d8393f4d69880bb8d40d438f9810f7fb107a9880fe0d68bbf797b89cbafd113e89a0829eb06b205f8
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@tanstack/query-core@npm:5.32.1":
|
"@tanstack/query-core@npm:5.32.1":
|
||||||
version: 5.32.1
|
version: 5.32.1
|
||||||
resolution: "@tanstack/query-core@npm:5.32.1"
|
resolution: "@tanstack/query-core@npm:5.32.1"
|
||||||
|
|
@ -2731,33 +2651,35 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"esbuild@npm:^0.19.0":
|
"esbuild@npm:^0.25.3":
|
||||||
version: 0.19.12
|
version: 0.25.3
|
||||||
resolution: "esbuild@npm:0.19.12"
|
resolution: "esbuild@npm:0.25.3"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@esbuild/aix-ppc64": "npm:0.19.12"
|
"@esbuild/aix-ppc64": "npm:0.25.3"
|
||||||
"@esbuild/android-arm": "npm:0.19.12"
|
"@esbuild/android-arm": "npm:0.25.3"
|
||||||
"@esbuild/android-arm64": "npm:0.19.12"
|
"@esbuild/android-arm64": "npm:0.25.3"
|
||||||
"@esbuild/android-x64": "npm:0.19.12"
|
"@esbuild/android-x64": "npm:0.25.3"
|
||||||
"@esbuild/darwin-arm64": "npm:0.19.12"
|
"@esbuild/darwin-arm64": "npm:0.25.3"
|
||||||
"@esbuild/darwin-x64": "npm:0.19.12"
|
"@esbuild/darwin-x64": "npm:0.25.3"
|
||||||
"@esbuild/freebsd-arm64": "npm:0.19.12"
|
"@esbuild/freebsd-arm64": "npm:0.25.3"
|
||||||
"@esbuild/freebsd-x64": "npm:0.19.12"
|
"@esbuild/freebsd-x64": "npm:0.25.3"
|
||||||
"@esbuild/linux-arm": "npm:0.19.12"
|
"@esbuild/linux-arm": "npm:0.25.3"
|
||||||
"@esbuild/linux-arm64": "npm:0.19.12"
|
"@esbuild/linux-arm64": "npm:0.25.3"
|
||||||
"@esbuild/linux-ia32": "npm:0.19.12"
|
"@esbuild/linux-ia32": "npm:0.25.3"
|
||||||
"@esbuild/linux-loong64": "npm:0.19.12"
|
"@esbuild/linux-loong64": "npm:0.25.3"
|
||||||
"@esbuild/linux-mips64el": "npm:0.19.12"
|
"@esbuild/linux-mips64el": "npm:0.25.3"
|
||||||
"@esbuild/linux-ppc64": "npm:0.19.12"
|
"@esbuild/linux-ppc64": "npm:0.25.3"
|
||||||
"@esbuild/linux-riscv64": "npm:0.19.12"
|
"@esbuild/linux-riscv64": "npm:0.25.3"
|
||||||
"@esbuild/linux-s390x": "npm:0.19.12"
|
"@esbuild/linux-s390x": "npm:0.25.3"
|
||||||
"@esbuild/linux-x64": "npm:0.19.12"
|
"@esbuild/linux-x64": "npm:0.25.3"
|
||||||
"@esbuild/netbsd-x64": "npm:0.19.12"
|
"@esbuild/netbsd-arm64": "npm:0.25.3"
|
||||||
"@esbuild/openbsd-x64": "npm:0.19.12"
|
"@esbuild/netbsd-x64": "npm:0.25.3"
|
||||||
"@esbuild/sunos-x64": "npm:0.19.12"
|
"@esbuild/openbsd-arm64": "npm:0.25.3"
|
||||||
"@esbuild/win32-arm64": "npm:0.19.12"
|
"@esbuild/openbsd-x64": "npm:0.25.3"
|
||||||
"@esbuild/win32-ia32": "npm:0.19.12"
|
"@esbuild/sunos-x64": "npm:0.25.3"
|
||||||
"@esbuild/win32-x64": "npm:0.19.12"
|
"@esbuild/win32-arm64": "npm:0.25.3"
|
||||||
|
"@esbuild/win32-ia32": "npm:0.25.3"
|
||||||
|
"@esbuild/win32-x64": "npm:0.25.3"
|
||||||
dependenciesMeta:
|
dependenciesMeta:
|
||||||
"@esbuild/aix-ppc64":
|
"@esbuild/aix-ppc64":
|
||||||
optional: true
|
optional: true
|
||||||
|
|
@ -2793,8 +2715,12 @@ __metadata:
|
||||||
optional: true
|
optional: true
|
||||||
"@esbuild/linux-x64":
|
"@esbuild/linux-x64":
|
||||||
optional: true
|
optional: true
|
||||||
|
"@esbuild/netbsd-arm64":
|
||||||
|
optional: true
|
||||||
"@esbuild/netbsd-x64":
|
"@esbuild/netbsd-x64":
|
||||||
optional: true
|
optional: true
|
||||||
|
"@esbuild/openbsd-arm64":
|
||||||
|
optional: true
|
||||||
"@esbuild/openbsd-x64":
|
"@esbuild/openbsd-x64":
|
||||||
optional: true
|
optional: true
|
||||||
"@esbuild/sunos-x64":
|
"@esbuild/sunos-x64":
|
||||||
|
|
@ -2807,7 +2733,7 @@ __metadata:
|
||||||
optional: true
|
optional: true
|
||||||
bin:
|
bin:
|
||||||
esbuild: bin/esbuild
|
esbuild: bin/esbuild
|
||||||
checksum: 10c0/0f2d21ffe24ebead64843f87c3aebe2e703a5ed9feb086a0728b24907fac2eb9923e4a79857d3df9059c915739bd7a870dd667972eae325c67f478b592b8582d
|
checksum: 10c0/127aff654310ede4e2eb232a7b1d8823f5b5d69222caf17aa7f172574a5b6b75f71ce78c6d8a40030421d7c75b784dc640de0fb1b87b7ea77ab2a1c832fa8df8
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
|
@ -3557,14 +3483,12 @@ __metadata:
|
||||||
"@emotion/styled": "npm:^11.0.0"
|
"@emotion/styled": "npm:^11.0.0"
|
||||||
"@hotwired/turbo-rails": "npm:^8.0.4"
|
"@hotwired/turbo-rails": "npm:^8.0.4"
|
||||||
"@loadable/component": "npm:^5.12.0"
|
"@loadable/component": "npm:^5.12.0"
|
||||||
"@sentry/react": "npm:^5.30.0"
|
|
||||||
"@sentry/tracing": "npm:^5.30.0"
|
|
||||||
"@tanstack/react-query": "npm:^5.4.3"
|
"@tanstack/react-query": "npm:^5.4.3"
|
||||||
"@typescript-eslint/eslint-plugin": "npm:^7.8.0"
|
"@typescript-eslint/eslint-plugin": "npm:^7.8.0"
|
||||||
"@typescript-eslint/parser": "npm:^7.8.0"
|
"@typescript-eslint/parser": "npm:^7.8.0"
|
||||||
apollo-link-persisted-queries: "npm:^0.2.2"
|
apollo-link-persisted-queries: "npm:^0.2.2"
|
||||||
easeljs: "npm:^1.0.2"
|
easeljs: "npm:^1.0.2"
|
||||||
esbuild: "npm:^0.19.0"
|
esbuild: "npm:^0.25.3"
|
||||||
eslint: "npm:^8.52.0"
|
eslint: "npm:^8.52.0"
|
||||||
eslint-plugin-jsx-a11y: "npm:^6.8.0"
|
eslint-plugin-jsx-a11y: "npm:^6.8.0"
|
||||||
eslint-plugin-react: "npm:^7.33.2"
|
eslint-plugin-react: "npm:^7.33.2"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue