├── .editorconfig
├── .eslintignore
├── .eslintrc
├── .github
└── workflows
│ └── test.yml
├── .gitignore
├── .prettierrc.json
├── README.md
├── api
└── index.ts
├── client
├── .postcssrc.json
├── .stylelintignore
├── .stylelintrc
├── index.html
├── package.json
├── src
│ ├── App.tsx
│ ├── components
│ │ ├── ControlPanel
│ │ │ ├── ControlPanel.module.css
│ │ │ └── ControlPanel.tsx
│ │ ├── Layout
│ │ │ ├── Layout.module.css
│ │ │ └── Layout.tsx
│ │ ├── LoginForm
│ │ │ ├── LoginForm.module.css
│ │ │ └── LoginForm.tsx
│ │ ├── Routes
│ │ │ └── Routes.tsx
│ │ ├── TextField
│ │ │ ├── TextField.module.css
│ │ │ └── TextField.tsx
│ │ ├── TodosList
│ │ │ ├── TodosList.module.css
│ │ │ ├── TodosList.tsx
│ │ │ └── TodosListItem.tsx
│ │ └── ToggleAction
│ │ │ ├── ToggleAction.module.css
│ │ │ └── ToggleAction.tsx
│ ├── lib
│ │ └── api.ts
│ ├── main.tsx
│ ├── pages
│ │ ├── AccessDeniedPage.tsx
│ │ ├── ErrorPage.tsx
│ │ ├── LoginPage.tsx
│ │ ├── LogoutPage.tsx
│ │ ├── MainPage.tsx
│ │ └── NotFoundPage.tsx
│ ├── stores
│ │ ├── auth.ts
│ │ ├── filter.ts
│ │ ├── logux-client.ts
│ │ ├── router.ts
│ │ └── tasks.ts
│ ├── styles
│ │ ├── base.css
│ │ └── theme.css
│ └── vite-env.d.ts
└── vite.config.ts
├── package.json
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── server
├── db.ts
├── index.ts
├── modules
│ ├── auth.ts
│ └── tasks.ts
└── package.json
└── tsconfig.json
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | dist
2 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@logux/eslint-config/ts",
3 | "rules": {
4 | "prefer-let/prefer-let": "off"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Test
2 | on:
3 | push:
4 | branches:
5 | - main
6 | pull_request:
7 | permissions:
8 | contents: read
9 | jobs:
10 | test:
11 | name: Test
12 | runs-on: ubuntu-latest
13 | permissions:
14 | contents: read
15 | steps:
16 | - name: Checkout the repository
17 | uses: actions/checkout@v3
18 | - name: Install pnpm
19 | uses: pnpm/action-setup@v2
20 | with:
21 | version: 8
22 | - name: Install Node.js
23 | uses: actions/setup-node@v3
24 | with:
25 | node-version: 20
26 | cache: pnpm
27 | - name: Install dependencies
28 | run: pnpm install --frozen-lockfile --ignore-scripts
29 | - name: Run tests
30 | run: pnpm test
31 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | pnpm-debug.log*
3 |
4 | dist
5 |
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "arrowParens": "avoid",
3 | "jsxSingleQuote": false,
4 | "quoteProps": "consistent",
5 | "semi": false,
6 | "singleQuote": true,
7 | "trailingComma": "none"
8 | }
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Logux Examples
--------------------------------------------------------------------------------
/api/index.ts:
--------------------------------------------------------------------------------
1 | export const subprotocol = '1.0.0'
2 |
3 | export type User = {
4 | id: string
5 | name: string
6 | password: string
7 | }
8 |
9 | export type Task = {
10 | text: string
11 | completed: boolean
12 | authorId?: string
13 | }
14 |
--------------------------------------------------------------------------------
/client/.postcssrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "plugins": {
3 | "postcss-normalize": {},
4 | "postcss-nested": {},
5 | "autoprefixer": {}
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/client/.stylelintignore:
--------------------------------------------------------------------------------
1 | dist
2 |
--------------------------------------------------------------------------------
/client/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "@logux/stylelint-config"
4 | ],
5 | "rules": {
6 | "at-rule-no-unknown": [
7 | true,
8 | {
9 | "ignoreAtRules": [
10 | "import-normalize"
11 | ]
12 | }
13 | ]
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/client/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Logux ToDo Example
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "logux-to-do-example-client",
3 | "private": true,
4 | "engines": {
5 | "node": ">=16"
6 | },
7 | "scripts": {
8 | "start": "vite",
9 | "build": "tsc && vite build",
10 | "preview": "vite preview",
11 | "lint": "stylelint **/*.css"
12 | },
13 | "dependencies": {
14 | "@logux/client": "^0.18.4",
15 | "@logux/core": "^0.8.4",
16 | "@nanostores/react": "^0.4.1",
17 | "@nanostores/router": "^0.8.3",
18 | "@vitejs/plugin-react": "^3.1.0",
19 | "autoprefixer": "^10.4.14",
20 | "browserslist": "^4.21.10",
21 | "classnames": "^2.3.2",
22 | "nanoid": "^4.0.2",
23 | "nanostores": "^0.7.4",
24 | "postcss": "^8.4.27",
25 | "postcss-nested": "^6.0.1",
26 | "postcss-normalize": "^10.0.1",
27 | "react": "^18.2.0",
28 | "react-dom": "^18.2.0",
29 | "stylelint": "^14.16.1",
30 | "vite": "^4.4.8"
31 | },
32 | "devDependencies": {
33 | "@logux/stylelint-config": "^0.13.0",
34 | "@types/react": "^18.2.18",
35 | "@types/react-dom": "^18.2.7",
36 | "typescript": "^4.9.5"
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/client/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { ClientContext, ErrorsContext } from '@logux/client/react'
2 | import { useStore } from '@nanostores/react'
3 |
4 | import './styles/theme.css'
5 | import './styles/base.css'
6 |
7 | import { AccessDeniedPage } from './pages/AccessDeniedPage.js'
8 | import { ErrorPage } from './pages/ErrorPage.js'
9 | import { NotFoundPage } from './pages/NotFoundPage.js'
10 | import { Layout } from './components/Layout/Layout.js'
11 | import Routes from './components/Routes/Routes.js'
12 | import { clientStore } from './stores/logux-client.js'
13 |
14 | const errorPages = {
15 | NotFound: NotFoundPage,
16 | AccessDenied: AccessDeniedPage,
17 | Error: ErrorPage
18 | }
19 |
20 | export const App = (): JSX.Element => {
21 | let client = useStore(clientStore)
22 |
23 | return (
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/client/src/components/ControlPanel/ControlPanel.module.css:
--------------------------------------------------------------------------------
1 | .control-panel {
2 | position: relative;
3 | display: grid;
4 | grid-template-columns: repeat(3, 1fr);
5 | padding: 10px 15px;
6 | color: var(--dark-gray);
7 | border-top: 1px solid var(--light-gray);
8 |
9 | &::before {
10 | position: absolute;
11 | right: 0;
12 | bottom: 0;
13 | left: 0;
14 | height: 50px;
15 | content: "";
16 | box-shadow:
17 | 0 1px 1px var(--gray),
18 | 0 8px 0 -3px var(--light-gray-100),
19 | 0 9px 1px -3px var(--gray),
20 | 0 16px 0 -6px var(--light-gray-100),
21 | 0 17px 2px -6px var(--gray);
22 | }
23 | }
24 |
25 | .items-count {
26 | position: relative;
27 | align-self: center;
28 | justify-self: start;
29 | }
30 |
31 | .filters {
32 | position: relative;
33 | display: flex;
34 | justify-self: center;
35 | padding: 0;
36 | margin: 0;
37 | list-style: none;
38 | }
39 |
40 | .filters-item-content {
41 | padding: 3px 7px;
42 | margin: 3px;
43 | font-weight: 300;
44 | color: var(--dark-gray);
45 | text-decoration: none;
46 | background: transparent;
47 | border: 1px solid transparent;
48 | border-radius: 3px;
49 |
50 | &:hover {
51 | border-color: var(--accent-300);
52 | }
53 |
54 | &:focus {
55 | border-color: var(--accent-200);
56 | outline: none;
57 | }
58 |
59 | &_selected {
60 | border-color: var(--accent-200);
61 | }
62 | }
63 |
64 | .clear-action {
65 | position: relative;
66 | justify-self: end;
67 | padding: 3px 7px;
68 | font-weight: 300;
69 | color: var(--dark-gray);
70 | background: transparent;
71 | border: 1px solid transparent;
72 | border-radius: 3px;
73 |
74 | &:hover,
75 | &:focus {
76 | border-color: var(--accent-300);
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/client/src/components/ControlPanel/ControlPanel.tsx:
--------------------------------------------------------------------------------
1 | import { useStore } from '@nanostores/react'
2 | import cn from 'classnames'
3 | import { useClient, useFilter } from '@logux/client/react'
4 | import { deleteSyncMapById } from '@logux/client'
5 | import { useCallback } from 'react'
6 |
7 | import { Filter, filterStore } from '../../stores/filter.js'
8 | import { tasksStore } from '../../stores/tasks.js'
9 | import { authStore } from '../../stores/auth.js'
10 | import styles from './ControlPanel.module.css'
11 |
12 | export const ControlPanel = (): JSX.Element => {
13 | const client = useClient()
14 | const filter = useStore(filterStore)
15 | const { id: authorId } = useStore(authStore)
16 | const tasks = useFilter(tasksStore, { authorId })
17 | const activeTasksCount = tasks.list.filter(task => !task.completed).length
18 |
19 | const handleClearCompletedClick = useCallback(() => {
20 | const tasksToDelete = tasks.list.filter(task => task.completed)
21 |
22 | tasksToDelete.forEach(task =>
23 | deleteSyncMapById(client, tasksStore, task.id)
24 | )
25 | }, [client, tasks])
26 |
27 | return (
28 |
82 | )
83 | }
84 |
--------------------------------------------------------------------------------
/client/src/components/Layout/Layout.module.css:
--------------------------------------------------------------------------------
1 | .layout {
2 | width: 550px;
3 | margin: 0 auto;
4 | }
5 |
6 | .title {
7 | display: block;
8 | margin: 8px 0;
9 | font-size: 100px;
10 | font-weight: 100;
11 | color: var(--accent-200);
12 | text-align: center;
13 | }
14 |
15 | .footer {
16 | margin: 65px auto 0;
17 | font-size: 14px;
18 | color: var(--gray);
19 | text-align: center;
20 | }
21 |
22 | .footer-link {
23 | font-weight: 400;
24 | color: inherit;
25 | text-decoration: none;
26 |
27 | &:hover {
28 | text-decoration: underline;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/client/src/components/Layout/Layout.tsx:
--------------------------------------------------------------------------------
1 | import { ReactNode } from 'react'
2 | import { getPagePath } from '@nanostores/router'
3 | import { useStore } from '@nanostores/react'
4 |
5 | import { authStore } from '../../stores/auth.js'
6 | import { router } from '../../stores/router.js'
7 | import styles from './Layout.module.css'
8 |
9 | type Props = {
10 | children: ReactNode
11 | }
12 |
13 | export const Layout = ({ children }: Props): JSX.Element => {
14 | const { id: userId } = useStore(authStore)
15 |
16 | return (
17 |
18 |
21 |
22 |
{children}
23 |
24 |
51 |
52 | )
53 | }
54 |
--------------------------------------------------------------------------------
/client/src/components/LoginForm/LoginForm.module.css:
--------------------------------------------------------------------------------
1 | .form {
2 | display: flex;
3 | flex-direction: column;
4 | }
5 |
6 | .field {
7 | display: flex;
8 | flex-direction: column;
9 | margin-bottom: 8px;
10 |
11 | &:last-child {
12 | margin-bottom: 0;
13 | }
14 |
15 | & + .action {
16 | margin-top: 12px;
17 | }
18 | }
19 |
20 | .label {
21 | margin-bottom: 4px;
22 | }
23 |
--------------------------------------------------------------------------------
/client/src/components/LoginForm/LoginForm.tsx:
--------------------------------------------------------------------------------
1 | import { useState } from 'react'
2 |
3 | import { auth } from '../../stores/auth.js'
4 | import { TextField } from '../TextField/TextField.js'
5 | import styles from './LoginForm.module.css'
6 |
7 | export const LoginForm = (): JSX.Element => {
8 | const [login, setLogin] = useState('admin')
9 | const [password, setPassword] = useState('admin')
10 |
11 | return (
12 |
51 | )
52 | }
53 |
--------------------------------------------------------------------------------
/client/src/components/Routes/Routes.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { useStore } from '@nanostores/react'
3 | import { redirectPage } from '@nanostores/router'
4 |
5 | import { MainPage } from '../../pages/MainPage.js'
6 | import { LoginPage } from '../../pages/LoginPage.js'
7 | import { LogoutPage } from '../../pages/LogoutPage.js'
8 | import { NotFoundPage } from '../../pages/NotFoundPage.js'
9 | import { router } from '../../stores/router.js'
10 | import { authStore } from '../../stores/auth.js'
11 |
12 | const Routes = (): JSX.Element | null => {
13 | const page = useStore(router)
14 | const { id: userId } = useStore(authStore)
15 |
16 | if (!page) {
17 | return
18 | }
19 |
20 | if (!userId) {
21 | redirectPage(router, 'login')
22 | } else if (page.route === 'login') {
23 | redirectPage(router, 'main')
24 | }
25 |
26 | switch (page.route) {
27 | case 'login':
28 | return
29 | case 'main':
30 | return
31 | case 'logout':
32 | return
33 | }
34 |
35 | return null
36 | }
37 |
38 | export default Routes
39 |
--------------------------------------------------------------------------------
/client/src/components/TextField/TextField.module.css:
--------------------------------------------------------------------------------
1 | .input {
2 | position: relative;
3 | box-sizing: border-box;
4 | width: 100%;
5 | font-family: inherit;
6 | font-size: 24px;
7 | font-weight: inherit;
8 | line-height: 34px;
9 |
10 | &:hover,
11 | &:focus {
12 | outline: 2px solid var(--accent-200);
13 | }
14 |
15 | &::placeholder {
16 | font-style: italic;
17 | font-weight: 300;
18 | color: var(--gray);
19 | }
20 | }
21 |
22 | .label {
23 | display: block;
24 | margin-bottom: 4px;
25 | }
26 |
27 | .field {
28 | &_theme_default {
29 | & .input {
30 | padding: 14px 16px;
31 | border: 1px solid var(--dark-gray-100);
32 | }
33 | }
34 |
35 | &_theme_flat {
36 | & .input {
37 | padding: 15px 15px 15px 60px;
38 | border: none;
39 | box-shadow: inset 0 -2px 1px var(--light-gray-100);
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/client/src/components/TextField/TextField.tsx:
--------------------------------------------------------------------------------
1 | import cn from 'classnames'
2 | import {
3 | ChangeEvent,
4 | ForwardedRef,
5 | forwardRef,
6 | KeyboardEvent,
7 | useCallback
8 | } from 'react'
9 |
10 | import styles from './TextField.module.css'
11 |
12 | type Props = {
13 | value: string
14 | id: string
15 | className?: string
16 | label: string
17 | placeholder?: string
18 | theme: 'default' | 'flat'
19 | hiddenLabel?: boolean
20 | type?: string
21 | autoComplete?: string
22 | onKeyDown?: (event: KeyboardEvent) => void
23 | onChange: (event: ChangeEvent) => void
24 | }
25 |
26 | export const TextField = forwardRef(
27 | (
28 | {
29 | className,
30 | id,
31 | label,
32 | placeholder,
33 | theme,
34 | hiddenLabel,
35 | value,
36 | type,
37 | autoComplete,
38 | onChange,
39 | onKeyDown
40 | }: Props,
41 | ref: ForwardedRef
42 | ): JSX.Element => {
43 | const handleChange = useCallback(
44 | (event: ChangeEvent) => {
45 | onChange(event)
46 | },
47 | [onChange]
48 | )
49 |
50 | return (
51 |
54 | {!hiddenLabel && }
55 |
67 |
68 | )
69 | }
70 | )
71 |
--------------------------------------------------------------------------------
/client/src/components/TodosList/TodosList.module.css:
--------------------------------------------------------------------------------
1 | .todos-list {
2 | position: relative;
3 | background: var(--white);
4 | box-shadow: 0 2px 4px 0 var(--gray), 0 25px 50px 0 var(--light-gray);
5 | }
6 |
7 | .toggle-action {
8 | position: absolute;
9 | top: 20px;
10 | left: 15px;
11 | }
12 |
13 | .create-action {
14 | display: none;
15 | }
16 |
17 | .list {
18 | padding: 0;
19 | margin: 0;
20 | list-style: none;
21 | }
22 |
23 | .label {
24 | display: block;
25 | padding: 15px 15px 15px 60px;
26 | font-size: 24px;
27 | line-height: 34px;
28 | word-break: break-all;
29 | background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23ededed%22%20stroke-width%3D%223%22/%3E%3C/svg%3E");
30 | background-repeat: no-repeat;
31 | background-position: center left;
32 | transition: color 0.4s;
33 | }
34 |
35 | .note {
36 | position: relative;
37 |
38 | &_completed {
39 | .label {
40 | color: var(--light-gray);
41 | text-decoration: line-through;
42 | }
43 | }
44 |
45 | &_type_skeleton {
46 | & .label {
47 | &::before {
48 | display: block;
49 | width: 170px;
50 | height: 34px;
51 | content: "";
52 | background: var(--light-gray);
53 | }
54 |
55 | background-color: var(--white);
56 | }
57 | }
58 | }
59 |
60 | .text-input {
61 | display: none;
62 | width: 506px;
63 | margin: 0 0 0 43px;
64 | }
65 |
66 | .delete-control {
67 | position: absolute;
68 | top: 50%;
69 | right: 10px;
70 | bottom: 0;
71 | display: none;
72 | width: 40px;
73 | height: 40px;
74 | font-size: 0;
75 | line-height: 40px;
76 | color: var(--accent-100);
77 | background: transparent;
78 | border: none;
79 | transition: color 0.2s ease-out;
80 | transform: translateY(-50%);
81 |
82 | &:hover {
83 | color: var(--accent);
84 | }
85 |
86 | &:focus {
87 | outline: 2px solid var(--accent-200);
88 | }
89 |
90 | &::after {
91 | font-size: 30px;
92 | content: "×";
93 | }
94 | }
95 |
96 | .list-item {
97 | font-size: 24px;
98 | border-bottom: 1px solid var(--light-gray);
99 |
100 | &:last-child {
101 | border-bottom: none;
102 | }
103 |
104 | &_editable {
105 | padding: 0;
106 | border-bottom-color: transparent;
107 |
108 | .text-input {
109 | display: block;
110 | }
111 |
112 | .note {
113 | display: none;
114 | }
115 | }
116 |
117 | &:hover {
118 | .delete-control {
119 | display: block;
120 | }
121 | }
122 | }
123 |
124 | .checkbox {
125 | position: absolute;
126 | top: 0;
127 | bottom: 0;
128 | width: 40px;
129 | height: auto;
130 | margin: auto 0;
131 | text-align: center;
132 | border: none;
133 | opacity: 0;
134 |
135 | &:checked + .label {
136 | background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23bddad5%22%20stroke-width%3D%223%22/%3E%3Cpath%20fill%3D%22%235dc2af%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22/%3E%3C/svg%3E");
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/client/src/components/TodosList/TodosList.tsx:
--------------------------------------------------------------------------------
1 | import cn from 'classnames'
2 | import { useClient, useFilter } from '@logux/client/react'
3 | import { createSyncMap } from '@logux/client'
4 | import { useState } from 'react'
5 | import { useStore } from '@nanostores/react'
6 | import { nanoid } from 'nanoid'
7 |
8 | import { ControlPanel } from '../ControlPanel/ControlPanel.js'
9 | import { TextField } from '../TextField/TextField.js'
10 | import { ToggleAction } from '../ToggleAction/ToggleAction.js'
11 | import { TodosListItem } from './TodosListItem.js'
12 | import { authStore } from '../../stores/auth.js'
13 | import { tasksStore } from '../../stores/tasks.js'
14 | import { Filter, filterStore } from '../../stores/filter.js'
15 | import styles from './TodosList.module.css'
16 |
17 | export const TodosList = (): JSX.Element => {
18 | const client = useClient()
19 | const filter = useStore(filterStore)
20 | const { id: authorId } = useStore(authStore)
21 | const [newTaskTitle, setNewTaskTitle] = useState('')
22 |
23 | const tasks = useFilter(tasksStore, {
24 | authorId,
25 | ...(filter === Filter.all ? {} : { completed: filter === Filter.completed })
26 | })
27 |
28 | return (
29 |
30 |
59 |
60 |
61 |
62 |
63 |
64 | {tasks.isLoading ? (
65 |
66 |
67 |
68 | ) : (
69 |
70 | {tasks.list.map(todo => (
71 |
77 | ))}
78 |
79 | )}
80 |
81 |
82 |
83 | )
84 | }
85 |
--------------------------------------------------------------------------------
/client/src/components/TodosList/TodosListItem.tsx:
--------------------------------------------------------------------------------
1 | import cn from 'classnames'
2 | import { useClient } from '@logux/client/react'
3 | import { changeSyncMapById, deleteSyncMapById } from '@logux/client'
4 | import { useCallback, useRef, useState } from 'react'
5 |
6 | import { TextField } from '../TextField/TextField.js'
7 | import { tasksStore } from '../../stores/tasks.js'
8 | import styles from './TodosList.module.css'
9 |
10 | type Props = {
11 | id: string
12 | completed: boolean
13 | text: string
14 | }
15 |
16 | export const TodosListItem = ({ id, completed, text }: Props): JSX.Element => {
17 | const client = useClient()
18 | const [editableItemId, setEditableItemId] = useState('')
19 | const [editableInitialValue, setEditableInitialValue] = useState('')
20 | const inputElement = useRef(null)
21 |
22 | const handleItemOutsideClick = useCallback(
23 | (event: MouseEvent) => {
24 | if (event.target === inputElement.current) return
25 |
26 | setEditableItemId('')
27 | document.removeEventListener('click', handleItemOutsideClick)
28 | },
29 | [inputElement]
30 | )
31 |
32 | return (
33 |
39 |
40 | {
45 | changeSyncMapById(client, tasksStore, id, {
46 | completed: Boolean(event.target.checked)
47 | })
48 | }}
49 | checked={completed}
50 | />
51 |
66 |
75 |
76 | {
85 | if (event.key === 'Escape') {
86 | changeSyncMapById(client, tasksStore, id, {
87 | text: editableInitialValue
88 | })
89 |
90 | setEditableItemId('')
91 | } else if (event.key === 'Enter') {
92 | setEditableItemId('')
93 | }
94 | }}
95 | onChange={event => {
96 | changeSyncMapById(client, tasksStore, id, {
97 | text: event.target.value
98 | })
99 | }}
100 | />
101 |
102 | )
103 | }
104 |
--------------------------------------------------------------------------------
/client/src/components/ToggleAction/ToggleAction.module.css:
--------------------------------------------------------------------------------
1 | .label {
2 | display: block;
3 | font-size: 0;
4 | transform: rotate(90deg);
5 |
6 | &::before {
7 | font-size: 22px;
8 | color: var(--light-gray);
9 | content: "❯";
10 | }
11 | }
12 |
13 | .action {
14 | display: none;
15 | text-align: center;
16 |
17 | &:checked + .label::before {
18 | color: var(--dark-gray);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/client/src/components/ToggleAction/ToggleAction.tsx:
--------------------------------------------------------------------------------
1 | import { ChangeEvent, useCallback } from 'react'
2 | import { changeSyncMapById } from '@logux/client'
3 | import { useClient, useFilter } from '@logux/client/react'
4 | import { useStore } from '@nanostores/react'
5 |
6 | import { tasksStore } from '../../stores/tasks.js'
7 | import { authStore } from '../../stores/auth.js'
8 | import styles from './ToggleAction.module.css'
9 |
10 | export const ToggleAction = (): JSX.Element => {
11 | const client = useClient()
12 | const { id: authorId } = useStore(authStore)
13 | const tasks = useFilter(tasksStore, { authorId })
14 |
15 | const handleToggleAction = useCallback(
16 | (event: ChangeEvent) => {
17 | tasks.list.forEach(task =>
18 | changeSyncMapById(client, tasksStore, task.id, {
19 | completed: event.target.checked
20 | })
21 | )
22 | },
23 | [client, tasks]
24 | )
25 |
26 | return (
27 | <>
28 |
34 |
37 | >
38 | )
39 | }
40 |
--------------------------------------------------------------------------------
/client/src/lib/api.ts:
--------------------------------------------------------------------------------
1 | export async function signIn({
2 | name,
3 | password
4 | }: {
5 | name: string
6 | password: string
7 | }): Promise {
8 | return await fetch('/api/auth', {
9 | method: 'POST',
10 | headers: {
11 | 'Content-Type': 'application/json'
12 | },
13 | body: JSON.stringify({ name, password })
14 | })
15 | }
16 |
17 | export async function logout(): Promise {
18 | return await fetch('/api/auth', {
19 | method: 'DELETE'
20 | })
21 | }
22 |
--------------------------------------------------------------------------------
/client/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import { createRoot } from 'react-dom/client'
3 |
4 | import { App } from './App.js'
5 |
6 | const container = document.getElementById('root')
7 |
8 | if (container) {
9 | const root = createRoot(container)
10 | root.render(
11 |
12 |
13 |
14 | )
15 | }
16 |
--------------------------------------------------------------------------------
/client/src/pages/AccessDeniedPage.tsx:
--------------------------------------------------------------------------------
1 | export const AccessDeniedPage = (): JSX.Element => {
2 | return Access denied
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/pages/ErrorPage.tsx:
--------------------------------------------------------------------------------
1 | export const ErrorPage = (): JSX.Element => {
2 | return Error
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/pages/LoginPage.tsx:
--------------------------------------------------------------------------------
1 | import { LoginForm } from '../components/LoginForm/LoginForm.js'
2 |
3 | export const LoginPage = (): JSX.Element => {
4 | return
5 | }
6 |
--------------------------------------------------------------------------------
/client/src/pages/LogoutPage.tsx:
--------------------------------------------------------------------------------
1 | import { useStore } from '@nanostores/react'
2 | import { useEffect } from 'react'
3 | import { redirectPage } from '@nanostores/router'
4 |
5 | import { authStore, logout } from '../stores/auth.js'
6 | import { router } from '../stores/router.js'
7 |
8 | export const LogoutPage = (): null => {
9 | const { id: userId } = useStore(authStore)
10 |
11 | useEffect(() => {
12 | if (userId) {
13 | logout()
14 | } else {
15 | redirectPage(router, 'main')
16 | }
17 | }, [userId])
18 |
19 | return null
20 | }
21 |
--------------------------------------------------------------------------------
/client/src/pages/MainPage.tsx:
--------------------------------------------------------------------------------
1 | import { TodosList } from '../components/TodosList/TodosList.js'
2 |
3 | export const MainPage = (): JSX.Element => {
4 | return
5 | }
6 |
--------------------------------------------------------------------------------
/client/src/pages/NotFoundPage.tsx:
--------------------------------------------------------------------------------
1 | export const NotFoundPage = (): JSX.Element => {
2 | return Not found
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/stores/auth.ts:
--------------------------------------------------------------------------------
1 | import { map } from 'nanostores'
2 |
3 | import { signIn, logout as logoutRequest } from '../lib/api.js'
4 |
5 | export const authStore = map<{ id?: string }>({
6 | id: localStorage.getItem('id') ?? undefined
7 | })
8 |
9 | export async function auth(data: {
10 | name: string
11 | password: string
12 | }): Promise {
13 | const res = await signIn(data)
14 | const userData = await res.json()
15 | if (res.ok) {
16 | authStore.setKey('id', userData.id)
17 | }
18 | }
19 |
20 | export function logout(): void {
21 | logoutRequest()
22 | authStore.setKey('id', undefined)
23 | }
24 |
25 | authStore.subscribe(
26 | ({ id }: { id?: string }, changedKey: string | undefined) => {
27 | if (changedKey === 'id') {
28 | if (id) {
29 | localStorage.setItem('id', id)
30 | } else {
31 | localStorage.removeItem('id')
32 | }
33 | }
34 | }
35 | )
36 |
--------------------------------------------------------------------------------
/client/src/stores/filter.ts:
--------------------------------------------------------------------------------
1 | import { atom } from 'nanostores'
2 |
3 | export enum Filter {
4 | all = 'all',
5 | active = 'active',
6 | completed = 'completed'
7 | }
8 |
9 | export const filterStore = atom(Filter.all)
10 |
--------------------------------------------------------------------------------
/client/src/stores/logux-client.ts:
--------------------------------------------------------------------------------
1 | import { badge, badgeEn, confirm, CrossTabClient, log } from '@logux/client'
2 | import { badgeStyles } from '@logux/client/badge/styles'
3 | import { atom, onMount } from 'nanostores'
4 | import { Client } from '@logux/client/client'
5 |
6 | import { subprotocol } from '../../../api/index.js'
7 | import { authStore, logout } from './auth.js'
8 |
9 | const loguxServer = `${
10 | window.location.protocol.endsWith('s') ? 'wss' : 'ws'
11 | }://${window.location.host}/logux`
12 |
13 | const fakeClient = new CrossTabClient({
14 | subprotocol,
15 | userId: '',
16 | server: loguxServer,
17 | allowDangerousProtocol: true
18 | })
19 |
20 | export const clientStore = atom(fakeClient)
21 |
22 | onMount(clientStore, () => {
23 | const client = new CrossTabClient({
24 | subprotocol,
25 | userId: '',
26 | server: loguxServer,
27 | allowDangerousProtocol: true
28 | })
29 |
30 | badge(client, { messages: badgeEn, styles: badgeStyles })
31 | log(client)
32 | confirm(client)
33 |
34 | let started = false
35 |
36 | clientStore.set(client)
37 |
38 | let authUnsubscribe = authStore.subscribe(({ id }, changedKey) => {
39 | if (!changedKey) {
40 | if (id) {
41 | client.changeUser(id)
42 |
43 | if (started) {
44 | client.node.connection.connect()
45 | } else {
46 | client.start()
47 | started = true
48 | }
49 | } else if (client.node.connected) {
50 | client.node.connection.disconnect()
51 | client.changeUser('')
52 | }
53 | }
54 | })
55 |
56 | client.node.catch(error => {
57 | if (error.type === 'wrong-credentials') {
58 | logout()
59 | }
60 | })
61 |
62 | return () => {
63 | authUnsubscribe()
64 | client.destroy()
65 | }
66 | })
67 |
--------------------------------------------------------------------------------
/client/src/stores/router.ts:
--------------------------------------------------------------------------------
1 | import { createRouter } from '@nanostores/router'
2 |
3 | export const router = createRouter({
4 | main: '/',
5 | login: '/login',
6 | logout: '/logout'
7 | } as const)
8 |
--------------------------------------------------------------------------------
/client/src/stores/tasks.ts:
--------------------------------------------------------------------------------
1 | import { syncMapTemplate } from '@logux/client'
2 |
3 | import { Task } from '../../../api/index.js'
4 |
5 | export const tasksStore = syncMapTemplate('tasks')
6 |
--------------------------------------------------------------------------------
/client/src/styles/base.css:
--------------------------------------------------------------------------------
1 | @import-normalize "normalize/opinionated.css";
2 |
3 | body {
4 | font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif;
5 | font-weight: 300;
6 | color: var(--black);
7 | background: var(--light-gray-100);
8 | }
9 |
--------------------------------------------------------------------------------
/client/src/styles/theme.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --black: rgb(77 77 77);
3 | --white: rgb(255 255 255);
4 | --dark-gray: rgb(119 119 119);
5 | --dark-gray-100: rgb(153 153 153);
6 | --gray: rgb(191 191 191);
7 | --light-gray: rgb(230 230 230);
8 | --light-gray-100: rgb(246 246 246);
9 | --accent: rgb(175 91 94);
10 | --accent-100: rgb(204 154 154);
11 | --accent-200: rgb(175 47 47 / 0.2);
12 | --accent-300: rgb(175 47 47 / 0.1);
13 | }
14 |
--------------------------------------------------------------------------------
/client/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/client/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | export default defineConfig({
5 | plugins: [react()],
6 | css: {
7 | modules: {
8 | localsConvention: 'camelCase'
9 | }
10 | },
11 |
12 | server: {
13 | proxy: {
14 | '/logux': {
15 | target: 'ws://127.0.0.1:31337',
16 | changeOrigin: true,
17 | ws: true,
18 | rewrite: path => path.replace(/^\/logux/, '')
19 | },
20 | '/api': {
21 | target: 'http://127.0.0.1:31337',
22 | changeOrigin: true,
23 | rewrite: path => path.replace(/^\/api/, '')
24 | }
25 | }
26 | }
27 | })
28 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "logux-to-do-example",
3 | "private": true,
4 | "scripts": {
5 | "start": "pnpm -r start",
6 | "test": "pnpm -r --include-workspace-root lint",
7 | "lint": "tsc --noEmit && eslint ."
8 | },
9 | "type": "module",
10 | "devDependencies": {
11 | "@logux/eslint-config": "^48.0.0",
12 | "@typescript-eslint/eslint-plugin": "^5.62.0",
13 | "@typescript-eslint/parser": "^5.62.0",
14 | "eslint": "^8.46.0",
15 | "eslint-config-standard": "^17.1.0",
16 | "eslint-plugin-import": "^2.28.0",
17 | "eslint-plugin-n": "^15.7.0",
18 | "eslint-plugin-prefer-let": "^3.0.1",
19 | "eslint-plugin-promise": "^6.1.1",
20 | "typescript": "^4.9.5"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | devDependencies:
11 | '@logux/eslint-config':
12 | specifier: ^48.0.0
13 | version: 48.0.0(eslint-config-standard@17.1.0)(eslint-plugin-import@2.28.0)(eslint-plugin-n@15.7.0)(eslint-plugin-prefer-let@3.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.46.0)
14 | '@typescript-eslint/eslint-plugin':
15 | specifier: ^5.62.0
16 | version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@4.9.5)
17 | '@typescript-eslint/parser':
18 | specifier: ^5.62.0
19 | version: 5.62.0(eslint@8.46.0)(typescript@4.9.5)
20 | eslint:
21 | specifier: ^8.46.0
22 | version: 8.46.0
23 | eslint-config-standard:
24 | specifier: ^17.1.0
25 | version: 17.1.0(eslint-plugin-import@2.28.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.46.0)
26 | eslint-plugin-import:
27 | specifier: ^2.28.0
28 | version: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)
29 | eslint-plugin-n:
30 | specifier: ^15.7.0
31 | version: 15.7.0(eslint@8.46.0)
32 | eslint-plugin-prefer-let:
33 | specifier: ^3.0.1
34 | version: 3.0.1
35 | eslint-plugin-promise:
36 | specifier: ^6.1.1
37 | version: 6.1.1(eslint@8.46.0)
38 | typescript:
39 | specifier: ^4.9.5
40 | version: 4.9.5
41 |
42 | client:
43 | dependencies:
44 | '@logux/client':
45 | specifier: ^0.18.4
46 | version: 0.18.4(@logux/core@0.8.4)(@nanostores/react@0.4.1)(nanostores@0.7.4)(react-dom@18.2.0)(react@18.2.0)
47 | '@logux/core':
48 | specifier: ^0.8.4
49 | version: 0.8.4
50 | '@nanostores/react':
51 | specifier: ^0.4.1
52 | version: 0.4.1(nanostores@0.7.4)(react@18.2.0)
53 | '@nanostores/router':
54 | specifier: ^0.8.3
55 | version: 0.8.3(nanostores@0.7.4)
56 | '@vitejs/plugin-react':
57 | specifier: ^3.1.0
58 | version: 3.1.0(vite@4.4.8)
59 | autoprefixer:
60 | specifier: ^10.4.14
61 | version: 10.4.14(postcss@8.4.27)
62 | browserslist:
63 | specifier: ^4.21.10
64 | version: 4.21.10
65 | classnames:
66 | specifier: ^2.3.2
67 | version: 2.3.2
68 | nanoid:
69 | specifier: ^4.0.2
70 | version: 4.0.2
71 | nanostores:
72 | specifier: ^0.7.4
73 | version: 0.7.4
74 | postcss:
75 | specifier: ^8.4.27
76 | version: 8.4.27
77 | postcss-nested:
78 | specifier: ^6.0.1
79 | version: 6.0.1(postcss@8.4.27)
80 | postcss-normalize:
81 | specifier: ^10.0.1
82 | version: 10.0.1(browserslist@4.21.10)(postcss@8.4.27)
83 | react:
84 | specifier: ^18.2.0
85 | version: 18.2.0
86 | react-dom:
87 | specifier: ^18.2.0
88 | version: 18.2.0(react@18.2.0)
89 | stylelint:
90 | specifier: ^14.16.1
91 | version: 14.16.1
92 | vite:
93 | specifier: ^4.4.8
94 | version: 4.4.8
95 | devDependencies:
96 | '@logux/stylelint-config':
97 | specifier: ^0.13.0
98 | version: 0.13.0(stylelint@14.16.1)
99 | '@types/react':
100 | specifier: ^18.2.18
101 | version: 18.2.18
102 | '@types/react-dom':
103 | specifier: ^18.2.7
104 | version: 18.2.7
105 | typescript:
106 | specifier: ^4.9.5
107 | version: 4.9.5
108 |
109 | server:
110 | dependencies:
111 | '@logux/actions':
112 | specifier: ^0.3.1
113 | version: 0.3.1(@logux/core@0.8.4)
114 | '@logux/core':
115 | specifier: ^0.8.4
116 | version: 0.8.4
117 | '@logux/server':
118 | specifier: github:logux/server#main
119 | version: github.com/logux/server/1b649580cf7f5f9ae1598ce2f3bfba00482dc471
120 | devDependencies:
121 | '@types/node':
122 | specifier: ^18.17.2
123 | version: 18.17.2
124 | tsm:
125 | specifier: ^2.3.0
126 | version: 2.3.0
127 |
128 | packages:
129 |
130 | /@aashutoshrathi/word-wrap@1.2.6:
131 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
132 | engines: {node: '>=0.10.0'}
133 | dev: true
134 |
135 | /@ampproject/remapping@2.2.1:
136 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
137 | engines: {node: '>=6.0.0'}
138 | dependencies:
139 | '@jridgewell/gen-mapping': 0.3.3
140 | '@jridgewell/trace-mapping': 0.3.18
141 | dev: false
142 |
143 | /@babel/code-frame@7.22.5:
144 | resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
145 | engines: {node: '>=6.9.0'}
146 | dependencies:
147 | '@babel/highlight': 7.22.5
148 |
149 | /@babel/compat-data@7.22.9:
150 | resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==}
151 | engines: {node: '>=6.9.0'}
152 | dev: false
153 |
154 | /@babel/core@7.22.9:
155 | resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==}
156 | engines: {node: '>=6.9.0'}
157 | dependencies:
158 | '@ampproject/remapping': 2.2.1
159 | '@babel/code-frame': 7.22.5
160 | '@babel/generator': 7.22.9
161 | '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9)
162 | '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9)
163 | '@babel/helpers': 7.22.6
164 | '@babel/parser': 7.22.7
165 | '@babel/template': 7.22.5
166 | '@babel/traverse': 7.22.8
167 | '@babel/types': 7.22.5
168 | convert-source-map: 1.9.0
169 | debug: 4.3.4
170 | gensync: 1.0.0-beta.2
171 | json5: 2.2.3
172 | semver: 6.3.1
173 | transitivePeerDependencies:
174 | - supports-color
175 | dev: false
176 |
177 | /@babel/generator@7.22.9:
178 | resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==}
179 | engines: {node: '>=6.9.0'}
180 | dependencies:
181 | '@babel/types': 7.22.5
182 | '@jridgewell/gen-mapping': 0.3.3
183 | '@jridgewell/trace-mapping': 0.3.18
184 | jsesc: 2.5.2
185 | dev: false
186 |
187 | /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9):
188 | resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==}
189 | engines: {node: '>=6.9.0'}
190 | peerDependencies:
191 | '@babel/core': ^7.0.0
192 | dependencies:
193 | '@babel/compat-data': 7.22.9
194 | '@babel/core': 7.22.9
195 | '@babel/helper-validator-option': 7.22.5
196 | browserslist: 4.21.10
197 | lru-cache: 5.1.1
198 | semver: 6.3.1
199 | dev: false
200 |
201 | /@babel/helper-environment-visitor@7.22.5:
202 | resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==}
203 | engines: {node: '>=6.9.0'}
204 | dev: false
205 |
206 | /@babel/helper-function-name@7.22.5:
207 | resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==}
208 | engines: {node: '>=6.9.0'}
209 | dependencies:
210 | '@babel/template': 7.22.5
211 | '@babel/types': 7.22.5
212 | dev: false
213 |
214 | /@babel/helper-hoist-variables@7.22.5:
215 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
216 | engines: {node: '>=6.9.0'}
217 | dependencies:
218 | '@babel/types': 7.22.5
219 | dev: false
220 |
221 | /@babel/helper-module-imports@7.22.5:
222 | resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==}
223 | engines: {node: '>=6.9.0'}
224 | dependencies:
225 | '@babel/types': 7.22.5
226 | dev: false
227 |
228 | /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9):
229 | resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==}
230 | engines: {node: '>=6.9.0'}
231 | peerDependencies:
232 | '@babel/core': ^7.0.0
233 | dependencies:
234 | '@babel/core': 7.22.9
235 | '@babel/helper-environment-visitor': 7.22.5
236 | '@babel/helper-module-imports': 7.22.5
237 | '@babel/helper-simple-access': 7.22.5
238 | '@babel/helper-split-export-declaration': 7.22.6
239 | '@babel/helper-validator-identifier': 7.22.5
240 | dev: false
241 |
242 | /@babel/helper-plugin-utils@7.22.5:
243 | resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
244 | engines: {node: '>=6.9.0'}
245 | dev: false
246 |
247 | /@babel/helper-simple-access@7.22.5:
248 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
249 | engines: {node: '>=6.9.0'}
250 | dependencies:
251 | '@babel/types': 7.22.5
252 | dev: false
253 |
254 | /@babel/helper-split-export-declaration@7.22.6:
255 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
256 | engines: {node: '>=6.9.0'}
257 | dependencies:
258 | '@babel/types': 7.22.5
259 | dev: false
260 |
261 | /@babel/helper-string-parser@7.22.5:
262 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
263 | engines: {node: '>=6.9.0'}
264 | dev: false
265 |
266 | /@babel/helper-validator-identifier@7.22.5:
267 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
268 | engines: {node: '>=6.9.0'}
269 |
270 | /@babel/helper-validator-option@7.22.5:
271 | resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==}
272 | engines: {node: '>=6.9.0'}
273 | dev: false
274 |
275 | /@babel/helpers@7.22.6:
276 | resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==}
277 | engines: {node: '>=6.9.0'}
278 | dependencies:
279 | '@babel/template': 7.22.5
280 | '@babel/traverse': 7.22.8
281 | '@babel/types': 7.22.5
282 | transitivePeerDependencies:
283 | - supports-color
284 | dev: false
285 |
286 | /@babel/highlight@7.22.5:
287 | resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
288 | engines: {node: '>=6.9.0'}
289 | dependencies:
290 | '@babel/helper-validator-identifier': 7.22.5
291 | chalk: 2.4.2
292 | js-tokens: 4.0.0
293 |
294 | /@babel/parser@7.22.7:
295 | resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==}
296 | engines: {node: '>=6.0.0'}
297 | hasBin: true
298 | dependencies:
299 | '@babel/types': 7.22.5
300 | dev: false
301 |
302 | /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.9):
303 | resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==}
304 | engines: {node: '>=6.9.0'}
305 | peerDependencies:
306 | '@babel/core': ^7.0.0-0
307 | dependencies:
308 | '@babel/core': 7.22.9
309 | '@babel/helper-plugin-utils': 7.22.5
310 | dev: false
311 |
312 | /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.9):
313 | resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==}
314 | engines: {node: '>=6.9.0'}
315 | peerDependencies:
316 | '@babel/core': ^7.0.0-0
317 | dependencies:
318 | '@babel/core': 7.22.9
319 | '@babel/helper-plugin-utils': 7.22.5
320 | dev: false
321 |
322 | /@babel/template@7.22.5:
323 | resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==}
324 | engines: {node: '>=6.9.0'}
325 | dependencies:
326 | '@babel/code-frame': 7.22.5
327 | '@babel/parser': 7.22.7
328 | '@babel/types': 7.22.5
329 | dev: false
330 |
331 | /@babel/traverse@7.22.8:
332 | resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==}
333 | engines: {node: '>=6.9.0'}
334 | dependencies:
335 | '@babel/code-frame': 7.22.5
336 | '@babel/generator': 7.22.9
337 | '@babel/helper-environment-visitor': 7.22.5
338 | '@babel/helper-function-name': 7.22.5
339 | '@babel/helper-hoist-variables': 7.22.5
340 | '@babel/helper-split-export-declaration': 7.22.6
341 | '@babel/parser': 7.22.7
342 | '@babel/types': 7.22.5
343 | debug: 4.3.4
344 | globals: 11.12.0
345 | transitivePeerDependencies:
346 | - supports-color
347 | dev: false
348 |
349 | /@babel/types@7.22.5:
350 | resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==}
351 | engines: {node: '>=6.9.0'}
352 | dependencies:
353 | '@babel/helper-string-parser': 7.22.5
354 | '@babel/helper-validator-identifier': 7.22.5
355 | to-fast-properties: 2.0.0
356 | dev: false
357 |
358 | /@csstools/normalize.css@12.0.0:
359 | resolution: {integrity: sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==}
360 | dev: false
361 |
362 | /@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.13):
363 | resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==}
364 | engines: {node: ^14 || ^16 || >=18}
365 | peerDependencies:
366 | postcss-selector-parser: ^6.0.10
367 | dependencies:
368 | postcss-selector-parser: 6.0.13
369 |
370 | /@esbuild/android-arm64@0.18.17:
371 | resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==}
372 | engines: {node: '>=12'}
373 | cpu: [arm64]
374 | os: [android]
375 | requiresBuild: true
376 | dev: false
377 | optional: true
378 |
379 | /@esbuild/android-arm@0.15.18:
380 | resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==}
381 | engines: {node: '>=12'}
382 | cpu: [arm]
383 | os: [android]
384 | requiresBuild: true
385 | dev: true
386 | optional: true
387 |
388 | /@esbuild/android-arm@0.18.17:
389 | resolution: {integrity: sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==}
390 | engines: {node: '>=12'}
391 | cpu: [arm]
392 | os: [android]
393 | requiresBuild: true
394 | dev: false
395 | optional: true
396 |
397 | /@esbuild/android-x64@0.18.17:
398 | resolution: {integrity: sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==}
399 | engines: {node: '>=12'}
400 | cpu: [x64]
401 | os: [android]
402 | requiresBuild: true
403 | dev: false
404 | optional: true
405 |
406 | /@esbuild/darwin-arm64@0.18.17:
407 | resolution: {integrity: sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==}
408 | engines: {node: '>=12'}
409 | cpu: [arm64]
410 | os: [darwin]
411 | requiresBuild: true
412 | dev: false
413 | optional: true
414 |
415 | /@esbuild/darwin-x64@0.18.17:
416 | resolution: {integrity: sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==}
417 | engines: {node: '>=12'}
418 | cpu: [x64]
419 | os: [darwin]
420 | requiresBuild: true
421 | dev: false
422 | optional: true
423 |
424 | /@esbuild/freebsd-arm64@0.18.17:
425 | resolution: {integrity: sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==}
426 | engines: {node: '>=12'}
427 | cpu: [arm64]
428 | os: [freebsd]
429 | requiresBuild: true
430 | dev: false
431 | optional: true
432 |
433 | /@esbuild/freebsd-x64@0.18.17:
434 | resolution: {integrity: sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==}
435 | engines: {node: '>=12'}
436 | cpu: [x64]
437 | os: [freebsd]
438 | requiresBuild: true
439 | dev: false
440 | optional: true
441 |
442 | /@esbuild/linux-arm64@0.18.17:
443 | resolution: {integrity: sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==}
444 | engines: {node: '>=12'}
445 | cpu: [arm64]
446 | os: [linux]
447 | requiresBuild: true
448 | dev: false
449 | optional: true
450 |
451 | /@esbuild/linux-arm@0.18.17:
452 | resolution: {integrity: sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==}
453 | engines: {node: '>=12'}
454 | cpu: [arm]
455 | os: [linux]
456 | requiresBuild: true
457 | dev: false
458 | optional: true
459 |
460 | /@esbuild/linux-ia32@0.18.17:
461 | resolution: {integrity: sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==}
462 | engines: {node: '>=12'}
463 | cpu: [ia32]
464 | os: [linux]
465 | requiresBuild: true
466 | dev: false
467 | optional: true
468 |
469 | /@esbuild/linux-loong64@0.15.18:
470 | resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==}
471 | engines: {node: '>=12'}
472 | cpu: [loong64]
473 | os: [linux]
474 | requiresBuild: true
475 | dev: true
476 | optional: true
477 |
478 | /@esbuild/linux-loong64@0.18.17:
479 | resolution: {integrity: sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==}
480 | engines: {node: '>=12'}
481 | cpu: [loong64]
482 | os: [linux]
483 | requiresBuild: true
484 | dev: false
485 | optional: true
486 |
487 | /@esbuild/linux-mips64el@0.18.17:
488 | resolution: {integrity: sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==}
489 | engines: {node: '>=12'}
490 | cpu: [mips64el]
491 | os: [linux]
492 | requiresBuild: true
493 | dev: false
494 | optional: true
495 |
496 | /@esbuild/linux-ppc64@0.18.17:
497 | resolution: {integrity: sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==}
498 | engines: {node: '>=12'}
499 | cpu: [ppc64]
500 | os: [linux]
501 | requiresBuild: true
502 | dev: false
503 | optional: true
504 |
505 | /@esbuild/linux-riscv64@0.18.17:
506 | resolution: {integrity: sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==}
507 | engines: {node: '>=12'}
508 | cpu: [riscv64]
509 | os: [linux]
510 | requiresBuild: true
511 | dev: false
512 | optional: true
513 |
514 | /@esbuild/linux-s390x@0.18.17:
515 | resolution: {integrity: sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==}
516 | engines: {node: '>=12'}
517 | cpu: [s390x]
518 | os: [linux]
519 | requiresBuild: true
520 | dev: false
521 | optional: true
522 |
523 | /@esbuild/linux-x64@0.18.17:
524 | resolution: {integrity: sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==}
525 | engines: {node: '>=12'}
526 | cpu: [x64]
527 | os: [linux]
528 | requiresBuild: true
529 | dev: false
530 | optional: true
531 |
532 | /@esbuild/netbsd-x64@0.18.17:
533 | resolution: {integrity: sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==}
534 | engines: {node: '>=12'}
535 | cpu: [x64]
536 | os: [netbsd]
537 | requiresBuild: true
538 | dev: false
539 | optional: true
540 |
541 | /@esbuild/openbsd-x64@0.18.17:
542 | resolution: {integrity: sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==}
543 | engines: {node: '>=12'}
544 | cpu: [x64]
545 | os: [openbsd]
546 | requiresBuild: true
547 | dev: false
548 | optional: true
549 |
550 | /@esbuild/sunos-x64@0.18.17:
551 | resolution: {integrity: sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==}
552 | engines: {node: '>=12'}
553 | cpu: [x64]
554 | os: [sunos]
555 | requiresBuild: true
556 | dev: false
557 | optional: true
558 |
559 | /@esbuild/win32-arm64@0.18.17:
560 | resolution: {integrity: sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==}
561 | engines: {node: '>=12'}
562 | cpu: [arm64]
563 | os: [win32]
564 | requiresBuild: true
565 | dev: false
566 | optional: true
567 |
568 | /@esbuild/win32-ia32@0.18.17:
569 | resolution: {integrity: sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==}
570 | engines: {node: '>=12'}
571 | cpu: [ia32]
572 | os: [win32]
573 | requiresBuild: true
574 | dev: false
575 | optional: true
576 |
577 | /@esbuild/win32-x64@0.18.17:
578 | resolution: {integrity: sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==}
579 | engines: {node: '>=12'}
580 | cpu: [x64]
581 | os: [win32]
582 | requiresBuild: true
583 | dev: false
584 | optional: true
585 |
586 | /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0):
587 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
588 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
589 | peerDependencies:
590 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
591 | dependencies:
592 | eslint: 8.46.0
593 | eslint-visitor-keys: 3.4.2
594 | dev: true
595 |
596 | /@eslint-community/regexpp@4.6.2:
597 | resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==}
598 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
599 | dev: true
600 |
601 | /@eslint/eslintrc@2.1.1:
602 | resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==}
603 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
604 | dependencies:
605 | ajv: 6.12.6
606 | debug: 4.3.4
607 | espree: 9.6.1
608 | globals: 13.20.0
609 | ignore: 5.2.4
610 | import-fresh: 3.3.0
611 | js-yaml: 4.1.0
612 | minimatch: 3.1.2
613 | strip-json-comments: 3.1.1
614 | transitivePeerDependencies:
615 | - supports-color
616 | dev: true
617 |
618 | /@eslint/js@8.46.0:
619 | resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==}
620 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
621 | dev: true
622 |
623 | /@humanwhocodes/config-array@0.11.10:
624 | resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==}
625 | engines: {node: '>=10.10.0'}
626 | dependencies:
627 | '@humanwhocodes/object-schema': 1.2.1
628 | debug: 4.3.4
629 | minimatch: 3.1.2
630 | transitivePeerDependencies:
631 | - supports-color
632 | dev: true
633 |
634 | /@humanwhocodes/module-importer@1.0.1:
635 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
636 | engines: {node: '>=12.22'}
637 | dev: true
638 |
639 | /@humanwhocodes/object-schema@1.2.1:
640 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
641 | dev: true
642 |
643 | /@jridgewell/gen-mapping@0.3.3:
644 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
645 | engines: {node: '>=6.0.0'}
646 | dependencies:
647 | '@jridgewell/set-array': 1.1.2
648 | '@jridgewell/sourcemap-codec': 1.4.15
649 | '@jridgewell/trace-mapping': 0.3.18
650 | dev: false
651 |
652 | /@jridgewell/resolve-uri@3.1.0:
653 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
654 | engines: {node: '>=6.0.0'}
655 | dev: false
656 |
657 | /@jridgewell/set-array@1.1.2:
658 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
659 | engines: {node: '>=6.0.0'}
660 | dev: false
661 |
662 | /@jridgewell/sourcemap-codec@1.4.14:
663 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
664 | dev: false
665 |
666 | /@jridgewell/sourcemap-codec@1.4.15:
667 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
668 | dev: false
669 |
670 | /@jridgewell/trace-mapping@0.3.18:
671 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
672 | dependencies:
673 | '@jridgewell/resolve-uri': 3.1.0
674 | '@jridgewell/sourcemap-codec': 1.4.14
675 | dev: false
676 |
677 | /@logux/actions@0.3.1(@logux/core@0.8.4):
678 | resolution: {integrity: sha512-9NU+3he2DaOYXlQjaZWornrnMsbw+8mvgUHtTyKcBotvpS5me5VVxVo9y02G7k2byz4FXtvafq9KPVStyag3oA==}
679 | engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
680 | peerDependencies:
681 | '@logux/core': ^0.8.0
682 | dependencies:
683 | '@logux/core': 0.8.4
684 | dev: false
685 |
686 | /@logux/client@0.18.4(@logux/core@0.8.4)(@nanostores/react@0.4.1)(nanostores@0.7.4)(react-dom@18.2.0)(react@18.2.0):
687 | resolution: {integrity: sha512-gFOU22dxxxR1psxmQH1EO82nSgqkfSgVtKsMpwdLQCvgidjoYLAQYmiv8w5wfo5Kk53V/QvK9irMvr/0N7IW7Q==}
688 | engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
689 | peerDependencies:
690 | '@logux/core': ^0.8.0
691 | '@nanostores/preact': '>=0.0.0'
692 | '@nanostores/react': '>=0.0.0'
693 | '@nanostores/vue': '>=0.0.0'
694 | nanostores: ^0.6.0 || ^0.7.0
695 | preact: '>=10.0.0'
696 | react: '>=18.0.0'
697 | react-dom: '>=16.8.0'
698 | vue: '>=3.2.30'
699 | peerDependenciesMeta:
700 | '@nanostores/preact':
701 | optional: true
702 | '@nanostores/react':
703 | optional: true
704 | '@nanostores/vue':
705 | optional: true
706 | preact:
707 | optional: true
708 | react:
709 | optional: true
710 | react-dom:
711 | optional: true
712 | vue:
713 | optional: true
714 | dependencies:
715 | '@logux/actions': 0.3.1(@logux/core@0.8.4)
716 | '@logux/core': 0.8.4
717 | '@nanostores/react': 0.4.1(nanostores@0.7.4)(react@18.2.0)
718 | fast-json-stable-stringify: 2.1.0
719 | nanodelay: 2.0.2
720 | nanoevents: 7.0.1
721 | nanoid: 4.0.2
722 | nanostores: 0.7.4
723 | react: 18.2.0
724 | react-dom: 18.2.0(react@18.2.0)
725 | dev: false
726 |
727 | /@logux/core@0.8.4:
728 | resolution: {integrity: sha512-dw/Wq+6iBLN1lalKf98WOsiksO1WtN0kH3SN8LcpWGF+wGP6x+N8jpqP8ZPKFOyduvb3r1T50gvk3xyr2mDLuQ==}
729 | engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
730 | dependencies:
731 | nanoevents: 7.0.1
732 | dev: false
733 |
734 | /@logux/eslint-config@48.0.0(eslint-config-standard@17.1.0)(eslint-plugin-import@2.28.0)(eslint-plugin-n@15.7.0)(eslint-plugin-prefer-let@3.0.1)(eslint-plugin-promise@6.1.1)(eslint@8.46.0):
735 | resolution: {integrity: sha512-4Lwgy14TmEbrp0Xsm7YjiptitLkigOAdqrnkYaNIgeMEe54hO6I99KueeS0348CFWqVAaV9g0eJQaPF6vCJGJg==}
736 | engines: {node: '>=10.0.0'}
737 | peerDependencies:
738 | eslint: ^8.27.0
739 | eslint-config-standard: ^17.0.0
740 | eslint-plugin-import: ^2.26.0
741 | eslint-plugin-n: ^15.5.0
742 | eslint-plugin-prefer-let: ^3.0.1
743 | eslint-plugin-promise: ^6.1.1
744 | dependencies:
745 | eslint: 8.46.0
746 | eslint-config-standard: 17.1.0(eslint-plugin-import@2.28.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.46.0)
747 | eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)
748 | eslint-plugin-n: 15.7.0(eslint@8.46.0)
749 | eslint-plugin-prefer-let: 3.0.1
750 | eslint-plugin-promise: 6.1.1(eslint@8.46.0)
751 | dev: true
752 |
753 | /@logux/stylelint-config@0.13.0(stylelint@14.16.1):
754 | resolution: {integrity: sha512-2IzekKL3YKPD6GSrd89RzCJ7FbGODzBafoNpqsqZfq3Qx2sdXQZZUR2F40YM0c6yx+pSJCRCZHVB4Qc699pM7w==}
755 | peerDependencies:
756 | stylelint: ^14.16.0
757 | dependencies:
758 | stylelint: 14.16.1
759 | stylelint-config-recess-order: 3.1.0(stylelint@14.16.1)
760 | stylelint-config-standard: 29.0.0(stylelint@14.16.1)
761 | stylelint-gamut: 1.3.3(stylelint@14.16.1)
762 | stylelint-order: 5.0.0(stylelint@14.16.1)
763 | dev: true
764 |
765 | /@nanostores/react@0.4.1(nanostores@0.7.4)(react@18.2.0):
766 | resolution: {integrity: sha512-lsv0CYrMxczbXtoV/mxFVEoL/uVjEjseoP89srO/5yNAOkJka+dSFS7LYyWEbuvCPO7EgbtkvRpO5V+OztKQOw==}
767 | engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
768 | peerDependencies:
769 | nanostores: ^0.7.0
770 | react: '>=18.0.0'
771 | dependencies:
772 | nanostores: 0.7.4
773 | react: 18.2.0
774 | use-sync-external-store: 1.2.0(react@18.2.0)
775 | dev: false
776 |
777 | /@nanostores/router@0.8.3(nanostores@0.7.4):
778 | resolution: {integrity: sha512-AEGqyQQITIYgp232mIzwaG1wbP0yghCbEUi4ziy4kQaEfM8mRiaz/rrlnbDddd0MkwDZIWs3L3c3VodR5X9dUQ==}
779 | engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
780 | peerDependencies:
781 | nanostores: ^0.7.0
782 | dependencies:
783 | nanostores: 0.7.4
784 | dev: false
785 |
786 | /@nodelib/fs.scandir@2.1.5:
787 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
788 | engines: {node: '>= 8'}
789 | dependencies:
790 | '@nodelib/fs.stat': 2.0.5
791 | run-parallel: 1.2.0
792 |
793 | /@nodelib/fs.stat@2.0.5:
794 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
795 | engines: {node: '>= 8'}
796 |
797 | /@nodelib/fs.walk@1.2.8:
798 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
799 | engines: {node: '>= 8'}
800 | dependencies:
801 | '@nodelib/fs.scandir': 2.1.5
802 | fastq: 1.15.0
803 |
804 | /@types/json-schema@7.0.12:
805 | resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
806 | dev: true
807 |
808 | /@types/json5@0.0.29:
809 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
810 | dev: true
811 |
812 | /@types/minimist@1.2.2:
813 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
814 |
815 | /@types/node@18.17.2:
816 | resolution: {integrity: sha512-wBo3KqP/PBqje5TI9UTiuL3yWfP6sdPtjtygSOqcYZWT232dfDeDOnkDps5wqZBP9NgGgYrNejinl0faAuE+HQ==}
817 | dev: true
818 |
819 | /@types/normalize-package-data@2.4.1:
820 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
821 |
822 | /@types/parse-json@4.0.0:
823 | resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
824 |
825 | /@types/prop-types@15.7.5:
826 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
827 | dev: true
828 |
829 | /@types/react-dom@18.2.7:
830 | resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==}
831 | dependencies:
832 | '@types/react': 18.2.18
833 | dev: true
834 |
835 | /@types/react@18.2.18:
836 | resolution: {integrity: sha512-da4NTSeBv/P34xoZPhtcLkmZuJ+oYaCxHmyHzwaDQo9RQPBeXV+06gEk2FpqEcsX9XrnNLvRpVh6bdavDSjtiQ==}
837 | dependencies:
838 | '@types/prop-types': 15.7.5
839 | '@types/scheduler': 0.16.3
840 | csstype: 3.1.2
841 | dev: true
842 |
843 | /@types/scheduler@0.16.3:
844 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==}
845 | dev: true
846 |
847 | /@types/semver@7.5.0:
848 | resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
849 | dev: true
850 |
851 | /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@4.9.5):
852 | resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
853 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
854 | peerDependencies:
855 | '@typescript-eslint/parser': ^5.0.0
856 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
857 | typescript: '*'
858 | peerDependenciesMeta:
859 | typescript:
860 | optional: true
861 | dependencies:
862 | '@eslint-community/regexpp': 4.6.2
863 | '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
864 | '@typescript-eslint/scope-manager': 5.62.0
865 | '@typescript-eslint/type-utils': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
866 | '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
867 | debug: 4.3.4
868 | eslint: 8.46.0
869 | graphemer: 1.4.0
870 | ignore: 5.2.4
871 | natural-compare-lite: 1.4.0
872 | semver: 7.5.4
873 | tsutils: 3.21.0(typescript@4.9.5)
874 | typescript: 4.9.5
875 | transitivePeerDependencies:
876 | - supports-color
877 | dev: true
878 |
879 | /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@4.9.5):
880 | resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
881 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
882 | peerDependencies:
883 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
884 | typescript: '*'
885 | peerDependenciesMeta:
886 | typescript:
887 | optional: true
888 | dependencies:
889 | '@typescript-eslint/scope-manager': 5.62.0
890 | '@typescript-eslint/types': 5.62.0
891 | '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
892 | debug: 4.3.4
893 | eslint: 8.46.0
894 | typescript: 4.9.5
895 | transitivePeerDependencies:
896 | - supports-color
897 | dev: true
898 |
899 | /@typescript-eslint/scope-manager@5.62.0:
900 | resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
901 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
902 | dependencies:
903 | '@typescript-eslint/types': 5.62.0
904 | '@typescript-eslint/visitor-keys': 5.62.0
905 | dev: true
906 |
907 | /@typescript-eslint/type-utils@5.62.0(eslint@8.46.0)(typescript@4.9.5):
908 | resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
909 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
910 | peerDependencies:
911 | eslint: '*'
912 | typescript: '*'
913 | peerDependenciesMeta:
914 | typescript:
915 | optional: true
916 | dependencies:
917 | '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
918 | '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
919 | debug: 4.3.4
920 | eslint: 8.46.0
921 | tsutils: 3.21.0(typescript@4.9.5)
922 | typescript: 4.9.5
923 | transitivePeerDependencies:
924 | - supports-color
925 | dev: true
926 |
927 | /@typescript-eslint/types@5.62.0:
928 | resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
929 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
930 | dev: true
931 |
932 | /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5):
933 | resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
934 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
935 | peerDependencies:
936 | typescript: '*'
937 | peerDependenciesMeta:
938 | typescript:
939 | optional: true
940 | dependencies:
941 | '@typescript-eslint/types': 5.62.0
942 | '@typescript-eslint/visitor-keys': 5.62.0
943 | debug: 4.3.4
944 | globby: 11.1.0
945 | is-glob: 4.0.3
946 | semver: 7.5.4
947 | tsutils: 3.21.0(typescript@4.9.5)
948 | typescript: 4.9.5
949 | transitivePeerDependencies:
950 | - supports-color
951 | dev: true
952 |
953 | /@typescript-eslint/utils@5.62.0(eslint@8.46.0)(typescript@4.9.5):
954 | resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
955 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
956 | peerDependencies:
957 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
958 | dependencies:
959 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
960 | '@types/json-schema': 7.0.12
961 | '@types/semver': 7.5.0
962 | '@typescript-eslint/scope-manager': 5.62.0
963 | '@typescript-eslint/types': 5.62.0
964 | '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
965 | eslint: 8.46.0
966 | eslint-scope: 5.1.1
967 | semver: 7.5.4
968 | transitivePeerDependencies:
969 | - supports-color
970 | - typescript
971 | dev: true
972 |
973 | /@typescript-eslint/visitor-keys@5.62.0:
974 | resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
975 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
976 | dependencies:
977 | '@typescript-eslint/types': 5.62.0
978 | eslint-visitor-keys: 3.4.2
979 | dev: true
980 |
981 | /@vitejs/plugin-react@3.1.0(vite@4.4.8):
982 | resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==}
983 | engines: {node: ^14.18.0 || >=16.0.0}
984 | peerDependencies:
985 | vite: ^4.1.0-beta.0
986 | dependencies:
987 | '@babel/core': 7.22.9
988 | '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.9)
989 | '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.9)
990 | magic-string: 0.27.0
991 | react-refresh: 0.14.0
992 | vite: 4.4.8
993 | transitivePeerDependencies:
994 | - supports-color
995 | dev: false
996 |
997 | /JSONStream@1.3.5:
998 | resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
999 | hasBin: true
1000 | dependencies:
1001 | jsonparse: 1.3.1
1002 | through: 2.3.8
1003 | dev: false
1004 |
1005 | /abort-controller@3.0.0:
1006 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
1007 | engines: {node: '>=6.5'}
1008 | dependencies:
1009 | event-target-shim: 5.0.1
1010 | dev: false
1011 |
1012 | /acorn-jsx@5.3.2(acorn@8.10.0):
1013 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
1014 | peerDependencies:
1015 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
1016 | dependencies:
1017 | acorn: 8.10.0
1018 | dev: true
1019 |
1020 | /acorn@8.10.0:
1021 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
1022 | engines: {node: '>=0.4.0'}
1023 | hasBin: true
1024 | dev: true
1025 |
1026 | /ajv@6.12.6:
1027 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
1028 | dependencies:
1029 | fast-deep-equal: 3.1.3
1030 | fast-json-stable-stringify: 2.1.0
1031 | json-schema-traverse: 0.4.1
1032 | uri-js: 4.4.1
1033 | dev: true
1034 |
1035 | /ajv@8.12.0:
1036 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
1037 | dependencies:
1038 | fast-deep-equal: 3.1.3
1039 | json-schema-traverse: 1.0.0
1040 | require-from-string: 2.0.2
1041 | uri-js: 4.4.1
1042 |
1043 | /ansi-regex@5.0.1:
1044 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
1045 | engines: {node: '>=8'}
1046 |
1047 | /ansi-regex@6.0.1:
1048 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
1049 | engines: {node: '>=12'}
1050 | dev: false
1051 |
1052 | /ansi-styles@3.2.1:
1053 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
1054 | engines: {node: '>=4'}
1055 | dependencies:
1056 | color-convert: 1.9.3
1057 |
1058 | /ansi-styles@4.3.0:
1059 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
1060 | engines: {node: '>=8'}
1061 | dependencies:
1062 | color-convert: 2.0.1
1063 |
1064 | /argparse@2.0.1:
1065 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
1066 | dev: true
1067 |
1068 | /array-buffer-byte-length@1.0.0:
1069 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
1070 | dependencies:
1071 | call-bind: 1.0.2
1072 | is-array-buffer: 3.0.2
1073 | dev: true
1074 |
1075 | /array-includes@3.1.6:
1076 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==}
1077 | engines: {node: '>= 0.4'}
1078 | dependencies:
1079 | call-bind: 1.0.2
1080 | define-properties: 1.2.0
1081 | es-abstract: 1.22.1
1082 | get-intrinsic: 1.2.1
1083 | is-string: 1.0.7
1084 | dev: true
1085 |
1086 | /array-union@2.1.0:
1087 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
1088 | engines: {node: '>=8'}
1089 |
1090 | /array.prototype.findlastindex@1.2.2:
1091 | resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==}
1092 | engines: {node: '>= 0.4'}
1093 | dependencies:
1094 | call-bind: 1.0.2
1095 | define-properties: 1.2.0
1096 | es-abstract: 1.22.1
1097 | es-shim-unscopables: 1.0.0
1098 | get-intrinsic: 1.2.1
1099 | dev: true
1100 |
1101 | /array.prototype.flat@1.3.1:
1102 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
1103 | engines: {node: '>= 0.4'}
1104 | dependencies:
1105 | call-bind: 1.0.2
1106 | define-properties: 1.2.0
1107 | es-abstract: 1.22.1
1108 | es-shim-unscopables: 1.0.0
1109 | dev: true
1110 |
1111 | /array.prototype.flatmap@1.3.1:
1112 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==}
1113 | engines: {node: '>= 0.4'}
1114 | dependencies:
1115 | call-bind: 1.0.2
1116 | define-properties: 1.2.0
1117 | es-abstract: 1.22.1
1118 | es-shim-unscopables: 1.0.0
1119 | dev: true
1120 |
1121 | /arraybuffer.prototype.slice@1.0.1:
1122 | resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==}
1123 | engines: {node: '>= 0.4'}
1124 | dependencies:
1125 | array-buffer-byte-length: 1.0.0
1126 | call-bind: 1.0.2
1127 | define-properties: 1.2.0
1128 | get-intrinsic: 1.2.1
1129 | is-array-buffer: 3.0.2
1130 | is-shared-array-buffer: 1.0.2
1131 | dev: true
1132 |
1133 | /arrify@1.0.1:
1134 | resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
1135 | engines: {node: '>=0.10.0'}
1136 |
1137 | /astral-regex@2.0.0:
1138 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
1139 | engines: {node: '>=8'}
1140 |
1141 | /atomic-sleep@1.0.0:
1142 | resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
1143 | engines: {node: '>=8.0.0'}
1144 | dev: false
1145 |
1146 | /autoprefixer@10.4.14(postcss@8.4.27):
1147 | resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
1148 | engines: {node: ^10 || ^12 || >=14}
1149 | hasBin: true
1150 | peerDependencies:
1151 | postcss: ^8.1.0
1152 | dependencies:
1153 | browserslist: 4.21.10
1154 | caniuse-lite: 1.0.30001519
1155 | fraction.js: 4.2.0
1156 | normalize-range: 0.1.2
1157 | picocolors: 1.0.0
1158 | postcss: 8.4.27
1159 | postcss-value-parser: 4.2.0
1160 | dev: false
1161 |
1162 | /available-typed-arrays@1.0.5:
1163 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
1164 | engines: {node: '>= 0.4'}
1165 | dev: true
1166 |
1167 | /balanced-match@1.0.2:
1168 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
1169 |
1170 | /balanced-match@2.0.0:
1171 | resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
1172 |
1173 | /base64-js@1.5.1:
1174 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
1175 | dev: false
1176 |
1177 | /brace-expansion@1.1.11:
1178 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
1179 | dependencies:
1180 | balanced-match: 1.0.2
1181 | concat-map: 0.0.1
1182 |
1183 | /braces@3.0.2:
1184 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
1185 | engines: {node: '>=8'}
1186 | dependencies:
1187 | fill-range: 7.0.1
1188 |
1189 | /browserslist@4.21.10:
1190 | resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==}
1191 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
1192 | hasBin: true
1193 | dependencies:
1194 | caniuse-lite: 1.0.30001519
1195 | electron-to-chromium: 1.4.485
1196 | node-releases: 2.0.13
1197 | update-browserslist-db: 1.0.11(browserslist@4.21.10)
1198 | dev: false
1199 |
1200 | /buffer@6.0.3:
1201 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
1202 | dependencies:
1203 | base64-js: 1.5.1
1204 | ieee754: 1.2.1
1205 | dev: false
1206 |
1207 | /builtins@5.0.1:
1208 | resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==}
1209 | dependencies:
1210 | semver: 7.5.4
1211 | dev: true
1212 |
1213 | /call-bind@1.0.2:
1214 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
1215 | dependencies:
1216 | function-bind: 1.1.1
1217 | get-intrinsic: 1.2.1
1218 | dev: true
1219 |
1220 | /callsites@3.1.0:
1221 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
1222 | engines: {node: '>=6'}
1223 |
1224 | /camelcase-keys@6.2.2:
1225 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
1226 | engines: {node: '>=8'}
1227 | dependencies:
1228 | camelcase: 5.3.1
1229 | map-obj: 4.3.0
1230 | quick-lru: 4.0.1
1231 |
1232 | /camelcase@5.3.1:
1233 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
1234 | engines: {node: '>=6'}
1235 |
1236 | /caniuse-lite@1.0.30001519:
1237 | resolution: {integrity: sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==}
1238 | dev: false
1239 |
1240 | /chalk@2.4.2:
1241 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
1242 | engines: {node: '>=4'}
1243 | dependencies:
1244 | ansi-styles: 3.2.1
1245 | escape-string-regexp: 1.0.5
1246 | supports-color: 5.5.0
1247 |
1248 | /chalk@4.1.2:
1249 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
1250 | engines: {node: '>=10'}
1251 | dependencies:
1252 | ansi-styles: 4.3.0
1253 | supports-color: 7.2.0
1254 | dev: true
1255 |
1256 | /classnames@2.3.2:
1257 | resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==}
1258 | dev: false
1259 |
1260 | /color-convert@1.9.3:
1261 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
1262 | dependencies:
1263 | color-name: 1.1.3
1264 |
1265 | /color-convert@2.0.1:
1266 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
1267 | engines: {node: '>=7.0.0'}
1268 | dependencies:
1269 | color-name: 1.1.4
1270 |
1271 | /color-name@1.1.3:
1272 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
1273 |
1274 | /color-name@1.1.4:
1275 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
1276 |
1277 | /colord@2.9.3:
1278 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
1279 |
1280 | /colorjs.io@0.4.5:
1281 | resolution: {integrity: sha512-yCtUNCmge7llyfd/Wou19PMAcf5yC3XXhgFoAh6zsO2pGswhUPBaaUh8jzgHnXtXuZyFKzXZNAnyF5i+apICow==}
1282 | dev: true
1283 |
1284 | /concat-map@0.0.1:
1285 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
1286 |
1287 | /convert-source-map@1.9.0:
1288 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
1289 | dev: false
1290 |
1291 | /cookie@0.5.0:
1292 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
1293 | engines: {node: '>= 0.6'}
1294 | dev: false
1295 |
1296 | /cosmiconfig@7.1.0:
1297 | resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
1298 | engines: {node: '>=10'}
1299 | dependencies:
1300 | '@types/parse-json': 4.0.0
1301 | import-fresh: 3.3.0
1302 | parse-json: 5.2.0
1303 | path-type: 4.0.0
1304 | yaml: 1.10.2
1305 |
1306 | /cross-spawn@7.0.3:
1307 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
1308 | engines: {node: '>= 8'}
1309 | dependencies:
1310 | path-key: 3.1.1
1311 | shebang-command: 2.0.0
1312 | which: 2.0.2
1313 | dev: true
1314 |
1315 | /css-functions-list@3.2.0:
1316 | resolution: {integrity: sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==}
1317 | engines: {node: '>=12.22'}
1318 |
1319 | /cssesc@3.0.0:
1320 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
1321 | engines: {node: '>=4'}
1322 | hasBin: true
1323 |
1324 | /csstype@3.1.2:
1325 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
1326 | dev: true
1327 |
1328 | /data-uri-to-buffer@4.0.1:
1329 | resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
1330 | engines: {node: '>= 12'}
1331 | dev: false
1332 |
1333 | /debug@3.2.7:
1334 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
1335 | peerDependencies:
1336 | supports-color: '*'
1337 | peerDependenciesMeta:
1338 | supports-color:
1339 | optional: true
1340 | dependencies:
1341 | ms: 2.1.3
1342 | dev: true
1343 |
1344 | /debug@4.3.4:
1345 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
1346 | engines: {node: '>=6.0'}
1347 | peerDependencies:
1348 | supports-color: '*'
1349 | peerDependenciesMeta:
1350 | supports-color:
1351 | optional: true
1352 | dependencies:
1353 | ms: 2.1.2
1354 |
1355 | /decamelize-keys@1.1.1:
1356 | resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
1357 | engines: {node: '>=0.10.0'}
1358 | dependencies:
1359 | decamelize: 1.2.0
1360 | map-obj: 1.0.1
1361 |
1362 | /decamelize@1.2.0:
1363 | resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
1364 | engines: {node: '>=0.10.0'}
1365 |
1366 | /deep-is@0.1.4:
1367 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
1368 | dev: true
1369 |
1370 | /define-properties@1.2.0:
1371 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
1372 | engines: {node: '>= 0.4'}
1373 | dependencies:
1374 | has-property-descriptors: 1.0.0
1375 | object-keys: 1.1.1
1376 | dev: true
1377 |
1378 | /dir-glob@3.0.1:
1379 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
1380 | engines: {node: '>=8'}
1381 | dependencies:
1382 | path-type: 4.0.0
1383 |
1384 | /doctrine@2.1.0:
1385 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
1386 | engines: {node: '>=0.10.0'}
1387 | dependencies:
1388 | esutils: 2.0.3
1389 | dev: true
1390 |
1391 | /doctrine@3.0.0:
1392 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
1393 | engines: {node: '>=6.0.0'}
1394 | dependencies:
1395 | esutils: 2.0.3
1396 | dev: true
1397 |
1398 | /dotenv@16.3.1:
1399 | resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==}
1400 | engines: {node: '>=12'}
1401 | dev: false
1402 |
1403 | /electron-to-chromium@1.4.485:
1404 | resolution: {integrity: sha512-1ndQ5IBNEnFirPwvyud69GHL+31FkE09gH/CJ6m3KCbkx3i0EVOrjwz4UNxRmN9H8OVHbC6vMRZGN1yCvjSs9w==}
1405 | dev: false
1406 |
1407 | /emoji-regex@8.0.0:
1408 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1409 |
1410 | /error-ex@1.3.2:
1411 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
1412 | dependencies:
1413 | is-arrayish: 0.2.1
1414 |
1415 | /es-abstract@1.22.1:
1416 | resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==}
1417 | engines: {node: '>= 0.4'}
1418 | dependencies:
1419 | array-buffer-byte-length: 1.0.0
1420 | arraybuffer.prototype.slice: 1.0.1
1421 | available-typed-arrays: 1.0.5
1422 | call-bind: 1.0.2
1423 | es-set-tostringtag: 2.0.1
1424 | es-to-primitive: 1.2.1
1425 | function.prototype.name: 1.1.5
1426 | get-intrinsic: 1.2.1
1427 | get-symbol-description: 1.0.0
1428 | globalthis: 1.0.3
1429 | gopd: 1.0.1
1430 | has: 1.0.3
1431 | has-property-descriptors: 1.0.0
1432 | has-proto: 1.0.1
1433 | has-symbols: 1.0.3
1434 | internal-slot: 1.0.5
1435 | is-array-buffer: 3.0.2
1436 | is-callable: 1.2.7
1437 | is-negative-zero: 2.0.2
1438 | is-regex: 1.1.4
1439 | is-shared-array-buffer: 1.0.2
1440 | is-string: 1.0.7
1441 | is-typed-array: 1.1.12
1442 | is-weakref: 1.0.2
1443 | object-inspect: 1.12.3
1444 | object-keys: 1.1.1
1445 | object.assign: 4.1.4
1446 | regexp.prototype.flags: 1.5.0
1447 | safe-array-concat: 1.0.0
1448 | safe-regex-test: 1.0.0
1449 | string.prototype.trim: 1.2.7
1450 | string.prototype.trimend: 1.0.6
1451 | string.prototype.trimstart: 1.0.6
1452 | typed-array-buffer: 1.0.0
1453 | typed-array-byte-length: 1.0.0
1454 | typed-array-byte-offset: 1.0.0
1455 | typed-array-length: 1.0.4
1456 | unbox-primitive: 1.0.2
1457 | which-typed-array: 1.1.11
1458 | dev: true
1459 |
1460 | /es-set-tostringtag@2.0.1:
1461 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
1462 | engines: {node: '>= 0.4'}
1463 | dependencies:
1464 | get-intrinsic: 1.2.1
1465 | has: 1.0.3
1466 | has-tostringtag: 1.0.0
1467 | dev: true
1468 |
1469 | /es-shim-unscopables@1.0.0:
1470 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
1471 | dependencies:
1472 | has: 1.0.3
1473 | dev: true
1474 |
1475 | /es-to-primitive@1.2.1:
1476 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
1477 | engines: {node: '>= 0.4'}
1478 | dependencies:
1479 | is-callable: 1.2.7
1480 | is-date-object: 1.0.5
1481 | is-symbol: 1.0.4
1482 | dev: true
1483 |
1484 | /esbuild-android-64@0.15.18:
1485 | resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==}
1486 | engines: {node: '>=12'}
1487 | cpu: [x64]
1488 | os: [android]
1489 | requiresBuild: true
1490 | dev: true
1491 | optional: true
1492 |
1493 | /esbuild-android-arm64@0.15.18:
1494 | resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==}
1495 | engines: {node: '>=12'}
1496 | cpu: [arm64]
1497 | os: [android]
1498 | requiresBuild: true
1499 | dev: true
1500 | optional: true
1501 |
1502 | /esbuild-darwin-64@0.15.18:
1503 | resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==}
1504 | engines: {node: '>=12'}
1505 | cpu: [x64]
1506 | os: [darwin]
1507 | requiresBuild: true
1508 | dev: true
1509 | optional: true
1510 |
1511 | /esbuild-darwin-arm64@0.15.18:
1512 | resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==}
1513 | engines: {node: '>=12'}
1514 | cpu: [arm64]
1515 | os: [darwin]
1516 | requiresBuild: true
1517 | dev: true
1518 | optional: true
1519 |
1520 | /esbuild-freebsd-64@0.15.18:
1521 | resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==}
1522 | engines: {node: '>=12'}
1523 | cpu: [x64]
1524 | os: [freebsd]
1525 | requiresBuild: true
1526 | dev: true
1527 | optional: true
1528 |
1529 | /esbuild-freebsd-arm64@0.15.18:
1530 | resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==}
1531 | engines: {node: '>=12'}
1532 | cpu: [arm64]
1533 | os: [freebsd]
1534 | requiresBuild: true
1535 | dev: true
1536 | optional: true
1537 |
1538 | /esbuild-linux-32@0.15.18:
1539 | resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==}
1540 | engines: {node: '>=12'}
1541 | cpu: [ia32]
1542 | os: [linux]
1543 | requiresBuild: true
1544 | dev: true
1545 | optional: true
1546 |
1547 | /esbuild-linux-64@0.15.18:
1548 | resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==}
1549 | engines: {node: '>=12'}
1550 | cpu: [x64]
1551 | os: [linux]
1552 | requiresBuild: true
1553 | dev: true
1554 | optional: true
1555 |
1556 | /esbuild-linux-arm64@0.15.18:
1557 | resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==}
1558 | engines: {node: '>=12'}
1559 | cpu: [arm64]
1560 | os: [linux]
1561 | requiresBuild: true
1562 | dev: true
1563 | optional: true
1564 |
1565 | /esbuild-linux-arm@0.15.18:
1566 | resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==}
1567 | engines: {node: '>=12'}
1568 | cpu: [arm]
1569 | os: [linux]
1570 | requiresBuild: true
1571 | dev: true
1572 | optional: true
1573 |
1574 | /esbuild-linux-mips64le@0.15.18:
1575 | resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==}
1576 | engines: {node: '>=12'}
1577 | cpu: [mips64el]
1578 | os: [linux]
1579 | requiresBuild: true
1580 | dev: true
1581 | optional: true
1582 |
1583 | /esbuild-linux-ppc64le@0.15.18:
1584 | resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==}
1585 | engines: {node: '>=12'}
1586 | cpu: [ppc64]
1587 | os: [linux]
1588 | requiresBuild: true
1589 | dev: true
1590 | optional: true
1591 |
1592 | /esbuild-linux-riscv64@0.15.18:
1593 | resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==}
1594 | engines: {node: '>=12'}
1595 | cpu: [riscv64]
1596 | os: [linux]
1597 | requiresBuild: true
1598 | dev: true
1599 | optional: true
1600 |
1601 | /esbuild-linux-s390x@0.15.18:
1602 | resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==}
1603 | engines: {node: '>=12'}
1604 | cpu: [s390x]
1605 | os: [linux]
1606 | requiresBuild: true
1607 | dev: true
1608 | optional: true
1609 |
1610 | /esbuild-netbsd-64@0.15.18:
1611 | resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==}
1612 | engines: {node: '>=12'}
1613 | cpu: [x64]
1614 | os: [netbsd]
1615 | requiresBuild: true
1616 | dev: true
1617 | optional: true
1618 |
1619 | /esbuild-openbsd-64@0.15.18:
1620 | resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==}
1621 | engines: {node: '>=12'}
1622 | cpu: [x64]
1623 | os: [openbsd]
1624 | requiresBuild: true
1625 | dev: true
1626 | optional: true
1627 |
1628 | /esbuild-sunos-64@0.15.18:
1629 | resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==}
1630 | engines: {node: '>=12'}
1631 | cpu: [x64]
1632 | os: [sunos]
1633 | requiresBuild: true
1634 | dev: true
1635 | optional: true
1636 |
1637 | /esbuild-windows-32@0.15.18:
1638 | resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==}
1639 | engines: {node: '>=12'}
1640 | cpu: [ia32]
1641 | os: [win32]
1642 | requiresBuild: true
1643 | dev: true
1644 | optional: true
1645 |
1646 | /esbuild-windows-64@0.15.18:
1647 | resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==}
1648 | engines: {node: '>=12'}
1649 | cpu: [x64]
1650 | os: [win32]
1651 | requiresBuild: true
1652 | dev: true
1653 | optional: true
1654 |
1655 | /esbuild-windows-arm64@0.15.18:
1656 | resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==}
1657 | engines: {node: '>=12'}
1658 | cpu: [arm64]
1659 | os: [win32]
1660 | requiresBuild: true
1661 | dev: true
1662 | optional: true
1663 |
1664 | /esbuild@0.15.18:
1665 | resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==}
1666 | engines: {node: '>=12'}
1667 | hasBin: true
1668 | requiresBuild: true
1669 | optionalDependencies:
1670 | '@esbuild/android-arm': 0.15.18
1671 | '@esbuild/linux-loong64': 0.15.18
1672 | esbuild-android-64: 0.15.18
1673 | esbuild-android-arm64: 0.15.18
1674 | esbuild-darwin-64: 0.15.18
1675 | esbuild-darwin-arm64: 0.15.18
1676 | esbuild-freebsd-64: 0.15.18
1677 | esbuild-freebsd-arm64: 0.15.18
1678 | esbuild-linux-32: 0.15.18
1679 | esbuild-linux-64: 0.15.18
1680 | esbuild-linux-arm: 0.15.18
1681 | esbuild-linux-arm64: 0.15.18
1682 | esbuild-linux-mips64le: 0.15.18
1683 | esbuild-linux-ppc64le: 0.15.18
1684 | esbuild-linux-riscv64: 0.15.18
1685 | esbuild-linux-s390x: 0.15.18
1686 | esbuild-netbsd-64: 0.15.18
1687 | esbuild-openbsd-64: 0.15.18
1688 | esbuild-sunos-64: 0.15.18
1689 | esbuild-windows-32: 0.15.18
1690 | esbuild-windows-64: 0.15.18
1691 | esbuild-windows-arm64: 0.15.18
1692 | dev: true
1693 |
1694 | /esbuild@0.18.17:
1695 | resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==}
1696 | engines: {node: '>=12'}
1697 | hasBin: true
1698 | requiresBuild: true
1699 | optionalDependencies:
1700 | '@esbuild/android-arm': 0.18.17
1701 | '@esbuild/android-arm64': 0.18.17
1702 | '@esbuild/android-x64': 0.18.17
1703 | '@esbuild/darwin-arm64': 0.18.17
1704 | '@esbuild/darwin-x64': 0.18.17
1705 | '@esbuild/freebsd-arm64': 0.18.17
1706 | '@esbuild/freebsd-x64': 0.18.17
1707 | '@esbuild/linux-arm': 0.18.17
1708 | '@esbuild/linux-arm64': 0.18.17
1709 | '@esbuild/linux-ia32': 0.18.17
1710 | '@esbuild/linux-loong64': 0.18.17
1711 | '@esbuild/linux-mips64el': 0.18.17
1712 | '@esbuild/linux-ppc64': 0.18.17
1713 | '@esbuild/linux-riscv64': 0.18.17
1714 | '@esbuild/linux-s390x': 0.18.17
1715 | '@esbuild/linux-x64': 0.18.17
1716 | '@esbuild/netbsd-x64': 0.18.17
1717 | '@esbuild/openbsd-x64': 0.18.17
1718 | '@esbuild/sunos-x64': 0.18.17
1719 | '@esbuild/win32-arm64': 0.18.17
1720 | '@esbuild/win32-ia32': 0.18.17
1721 | '@esbuild/win32-x64': 0.18.17
1722 | dev: false
1723 |
1724 | /escalade@3.1.1:
1725 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1726 | engines: {node: '>=6'}
1727 | dev: false
1728 |
1729 | /escape-string-regexp@1.0.5:
1730 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1731 | engines: {node: '>=0.8.0'}
1732 |
1733 | /escape-string-regexp@4.0.0:
1734 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1735 | engines: {node: '>=10'}
1736 | dev: true
1737 |
1738 | /eslint-config-standard@17.1.0(eslint-plugin-import@2.28.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.46.0):
1739 | resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==}
1740 | engines: {node: '>=12.0.0'}
1741 | peerDependencies:
1742 | eslint: ^8.0.1
1743 | eslint-plugin-import: ^2.25.2
1744 | eslint-plugin-n: '^15.0.0 || ^16.0.0 '
1745 | eslint-plugin-promise: ^6.0.0
1746 | dependencies:
1747 | eslint: 8.46.0
1748 | eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)
1749 | eslint-plugin-n: 15.7.0(eslint@8.46.0)
1750 | eslint-plugin-promise: 6.1.1(eslint@8.46.0)
1751 | dev: true
1752 |
1753 | /eslint-import-resolver-node@0.3.7:
1754 | resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==}
1755 | dependencies:
1756 | debug: 3.2.7
1757 | is-core-module: 2.12.1
1758 | resolve: 1.22.3
1759 | transitivePeerDependencies:
1760 | - supports-color
1761 | dev: true
1762 |
1763 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0):
1764 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
1765 | engines: {node: '>=4'}
1766 | peerDependencies:
1767 | '@typescript-eslint/parser': '*'
1768 | eslint: '*'
1769 | eslint-import-resolver-node: '*'
1770 | eslint-import-resolver-typescript: '*'
1771 | eslint-import-resolver-webpack: '*'
1772 | peerDependenciesMeta:
1773 | '@typescript-eslint/parser':
1774 | optional: true
1775 | eslint:
1776 | optional: true
1777 | eslint-import-resolver-node:
1778 | optional: true
1779 | eslint-import-resolver-typescript:
1780 | optional: true
1781 | eslint-import-resolver-webpack:
1782 | optional: true
1783 | dependencies:
1784 | '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
1785 | debug: 3.2.7
1786 | eslint: 8.46.0
1787 | eslint-import-resolver-node: 0.3.7
1788 | transitivePeerDependencies:
1789 | - supports-color
1790 | dev: true
1791 |
1792 | /eslint-plugin-es@4.1.0(eslint@8.46.0):
1793 | resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==}
1794 | engines: {node: '>=8.10.0'}
1795 | peerDependencies:
1796 | eslint: '>=4.19.1'
1797 | dependencies:
1798 | eslint: 8.46.0
1799 | eslint-utils: 2.1.0
1800 | regexpp: 3.2.0
1801 | dev: true
1802 |
1803 | /eslint-plugin-import@2.28.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0):
1804 | resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==}
1805 | engines: {node: '>=4'}
1806 | peerDependencies:
1807 | '@typescript-eslint/parser': '*'
1808 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
1809 | peerDependenciesMeta:
1810 | '@typescript-eslint/parser':
1811 | optional: true
1812 | dependencies:
1813 | '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@4.9.5)
1814 | array-includes: 3.1.6
1815 | array.prototype.findlastindex: 1.2.2
1816 | array.prototype.flat: 1.3.1
1817 | array.prototype.flatmap: 1.3.1
1818 | debug: 3.2.7
1819 | doctrine: 2.1.0
1820 | eslint: 8.46.0
1821 | eslint-import-resolver-node: 0.3.7
1822 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint@8.46.0)
1823 | has: 1.0.3
1824 | is-core-module: 2.12.1
1825 | is-glob: 4.0.3
1826 | minimatch: 3.1.2
1827 | object.fromentries: 2.0.6
1828 | object.groupby: 1.0.0
1829 | object.values: 1.1.6
1830 | resolve: 1.22.3
1831 | semver: 6.3.1
1832 | tsconfig-paths: 3.14.2
1833 | transitivePeerDependencies:
1834 | - eslint-import-resolver-typescript
1835 | - eslint-import-resolver-webpack
1836 | - supports-color
1837 | dev: true
1838 |
1839 | /eslint-plugin-n@15.7.0(eslint@8.46.0):
1840 | resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==}
1841 | engines: {node: '>=12.22.0'}
1842 | peerDependencies:
1843 | eslint: '>=7.0.0'
1844 | dependencies:
1845 | builtins: 5.0.1
1846 | eslint: 8.46.0
1847 | eslint-plugin-es: 4.1.0(eslint@8.46.0)
1848 | eslint-utils: 3.0.0(eslint@8.46.0)
1849 | ignore: 5.2.4
1850 | is-core-module: 2.12.1
1851 | minimatch: 3.1.2
1852 | resolve: 1.22.2
1853 | semver: 7.5.4
1854 | dev: true
1855 |
1856 | /eslint-plugin-prefer-let@3.0.1:
1857 | resolution: {integrity: sha512-vbznkkBSXB63d4o1o0NIm5C2ey3V5wKr/25dAvPdydQXdowAcnr69cbLgxd2YAG81IV5eddCO55Lp6gL7wSE4w==}
1858 | engines: {node: '>=0.10.0'}
1859 | dependencies:
1860 | requireindex: 1.2.0
1861 | dev: true
1862 |
1863 | /eslint-plugin-promise@6.1.1(eslint@8.46.0):
1864 | resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==}
1865 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1866 | peerDependencies:
1867 | eslint: ^7.0.0 || ^8.0.0
1868 | dependencies:
1869 | eslint: 8.46.0
1870 | dev: true
1871 |
1872 | /eslint-scope@5.1.1:
1873 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
1874 | engines: {node: '>=8.0.0'}
1875 | dependencies:
1876 | esrecurse: 4.3.0
1877 | estraverse: 4.3.0
1878 | dev: true
1879 |
1880 | /eslint-scope@7.2.2:
1881 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1882 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1883 | dependencies:
1884 | esrecurse: 4.3.0
1885 | estraverse: 5.3.0
1886 | dev: true
1887 |
1888 | /eslint-utils@2.1.0:
1889 | resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==}
1890 | engines: {node: '>=6'}
1891 | dependencies:
1892 | eslint-visitor-keys: 1.3.0
1893 | dev: true
1894 |
1895 | /eslint-utils@3.0.0(eslint@8.46.0):
1896 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
1897 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
1898 | peerDependencies:
1899 | eslint: '>=5'
1900 | dependencies:
1901 | eslint: 8.46.0
1902 | eslint-visitor-keys: 2.1.0
1903 | dev: true
1904 |
1905 | /eslint-visitor-keys@1.3.0:
1906 | resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
1907 | engines: {node: '>=4'}
1908 | dev: true
1909 |
1910 | /eslint-visitor-keys@2.1.0:
1911 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
1912 | engines: {node: '>=10'}
1913 | dev: true
1914 |
1915 | /eslint-visitor-keys@3.4.2:
1916 | resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==}
1917 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1918 | dev: true
1919 |
1920 | /eslint@8.46.0:
1921 | resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==}
1922 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1923 | hasBin: true
1924 | dependencies:
1925 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
1926 | '@eslint-community/regexpp': 4.6.2
1927 | '@eslint/eslintrc': 2.1.1
1928 | '@eslint/js': 8.46.0
1929 | '@humanwhocodes/config-array': 0.11.10
1930 | '@humanwhocodes/module-importer': 1.0.1
1931 | '@nodelib/fs.walk': 1.2.8
1932 | ajv: 6.12.6
1933 | chalk: 4.1.2
1934 | cross-spawn: 7.0.3
1935 | debug: 4.3.4
1936 | doctrine: 3.0.0
1937 | escape-string-regexp: 4.0.0
1938 | eslint-scope: 7.2.2
1939 | eslint-visitor-keys: 3.4.2
1940 | espree: 9.6.1
1941 | esquery: 1.5.0
1942 | esutils: 2.0.3
1943 | fast-deep-equal: 3.1.3
1944 | file-entry-cache: 6.0.1
1945 | find-up: 5.0.0
1946 | glob-parent: 6.0.2
1947 | globals: 13.20.0
1948 | graphemer: 1.4.0
1949 | ignore: 5.2.4
1950 | imurmurhash: 0.1.4
1951 | is-glob: 4.0.3
1952 | is-path-inside: 3.0.3
1953 | js-yaml: 4.1.0
1954 | json-stable-stringify-without-jsonify: 1.0.1
1955 | levn: 0.4.1
1956 | lodash.merge: 4.6.2
1957 | minimatch: 3.1.2
1958 | natural-compare: 1.4.0
1959 | optionator: 0.9.3
1960 | strip-ansi: 6.0.1
1961 | text-table: 0.2.0
1962 | transitivePeerDependencies:
1963 | - supports-color
1964 | dev: true
1965 |
1966 | /espree@9.6.1:
1967 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1968 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1969 | dependencies:
1970 | acorn: 8.10.0
1971 | acorn-jsx: 5.3.2(acorn@8.10.0)
1972 | eslint-visitor-keys: 3.4.2
1973 | dev: true
1974 |
1975 | /esquery@1.5.0:
1976 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1977 | engines: {node: '>=0.10'}
1978 | dependencies:
1979 | estraverse: 5.3.0
1980 | dev: true
1981 |
1982 | /esrecurse@4.3.0:
1983 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1984 | engines: {node: '>=4.0'}
1985 | dependencies:
1986 | estraverse: 5.3.0
1987 | dev: true
1988 |
1989 | /estraverse@4.3.0:
1990 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
1991 | engines: {node: '>=4.0'}
1992 | dev: true
1993 |
1994 | /estraverse@5.3.0:
1995 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1996 | engines: {node: '>=4.0'}
1997 | dev: true
1998 |
1999 | /esutils@2.0.3:
2000 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
2001 | engines: {node: '>=0.10.0'}
2002 | dev: true
2003 |
2004 | /event-target-shim@5.0.1:
2005 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
2006 | engines: {node: '>=6'}
2007 | dev: false
2008 |
2009 | /events@3.3.0:
2010 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
2011 | engines: {node: '>=0.8.x'}
2012 | dev: false
2013 |
2014 | /fast-deep-equal@3.1.3:
2015 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
2016 |
2017 | /fast-glob@3.3.1:
2018 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
2019 | engines: {node: '>=8.6.0'}
2020 | dependencies:
2021 | '@nodelib/fs.stat': 2.0.5
2022 | '@nodelib/fs.walk': 1.2.8
2023 | glob-parent: 5.1.2
2024 | merge2: 1.4.1
2025 | micromatch: 4.0.5
2026 |
2027 | /fast-json-stable-stringify@2.1.0:
2028 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
2029 |
2030 | /fast-levenshtein@2.0.6:
2031 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
2032 | dev: true
2033 |
2034 | /fast-redact@3.3.0:
2035 | resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==}
2036 | engines: {node: '>=6'}
2037 | dev: false
2038 |
2039 | /fastest-levenshtein@1.0.16:
2040 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
2041 | engines: {node: '>= 4.9.1'}
2042 |
2043 | /fastq@1.15.0:
2044 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
2045 | dependencies:
2046 | reusify: 1.0.4
2047 |
2048 | /fetch-blob@3.2.0:
2049 | resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
2050 | engines: {node: ^12.20 || >= 14.13}
2051 | dependencies:
2052 | node-domexception: 1.0.0
2053 | web-streams-polyfill: 3.2.1
2054 | dev: false
2055 |
2056 | /file-entry-cache@6.0.1:
2057 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
2058 | engines: {node: ^10.12.0 || >=12.0.0}
2059 | dependencies:
2060 | flat-cache: 3.0.4
2061 |
2062 | /fill-range@7.0.1:
2063 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
2064 | engines: {node: '>=8'}
2065 | dependencies:
2066 | to-regex-range: 5.0.1
2067 |
2068 | /find-up@4.1.0:
2069 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
2070 | engines: {node: '>=8'}
2071 | dependencies:
2072 | locate-path: 5.0.0
2073 | path-exists: 4.0.0
2074 |
2075 | /find-up@5.0.0:
2076 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
2077 | engines: {node: '>=10'}
2078 | dependencies:
2079 | locate-path: 6.0.0
2080 | path-exists: 4.0.0
2081 | dev: true
2082 |
2083 | /flat-cache@3.0.4:
2084 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
2085 | engines: {node: ^10.12.0 || >=12.0.0}
2086 | dependencies:
2087 | flatted: 3.2.7
2088 | rimraf: 3.0.2
2089 |
2090 | /flatted@3.2.7:
2091 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
2092 |
2093 | /for-each@0.3.3:
2094 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
2095 | dependencies:
2096 | is-callable: 1.2.7
2097 | dev: true
2098 |
2099 | /formdata-polyfill@4.0.10:
2100 | resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
2101 | engines: {node: '>=12.20.0'}
2102 | dependencies:
2103 | fetch-blob: 3.2.0
2104 | dev: false
2105 |
2106 | /fraction.js@4.2.0:
2107 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
2108 | dev: false
2109 |
2110 | /fs.realpath@1.0.0:
2111 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
2112 |
2113 | /fsevents@2.3.2:
2114 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
2115 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
2116 | os: [darwin]
2117 | requiresBuild: true
2118 | dev: false
2119 | optional: true
2120 |
2121 | /function-bind@1.1.1:
2122 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
2123 |
2124 | /function.prototype.name@1.1.5:
2125 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
2126 | engines: {node: '>= 0.4'}
2127 | dependencies:
2128 | call-bind: 1.0.2
2129 | define-properties: 1.2.0
2130 | es-abstract: 1.22.1
2131 | functions-have-names: 1.2.3
2132 | dev: true
2133 |
2134 | /functions-have-names@1.2.3:
2135 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
2136 | dev: true
2137 |
2138 | /gensync@1.0.0-beta.2:
2139 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
2140 | engines: {node: '>=6.9.0'}
2141 | dev: false
2142 |
2143 | /get-intrinsic@1.2.1:
2144 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
2145 | dependencies:
2146 | function-bind: 1.1.1
2147 | has: 1.0.3
2148 | has-proto: 1.0.1
2149 | has-symbols: 1.0.3
2150 | dev: true
2151 |
2152 | /get-symbol-description@1.0.0:
2153 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
2154 | engines: {node: '>= 0.4'}
2155 | dependencies:
2156 | call-bind: 1.0.2
2157 | get-intrinsic: 1.2.1
2158 | dev: true
2159 |
2160 | /glob-parent@5.1.2:
2161 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
2162 | engines: {node: '>= 6'}
2163 | dependencies:
2164 | is-glob: 4.0.3
2165 |
2166 | /glob-parent@6.0.2:
2167 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
2168 | engines: {node: '>=10.13.0'}
2169 | dependencies:
2170 | is-glob: 4.0.3
2171 | dev: true
2172 |
2173 | /glob@7.2.3:
2174 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
2175 | dependencies:
2176 | fs.realpath: 1.0.0
2177 | inflight: 1.0.6
2178 | inherits: 2.0.4
2179 | minimatch: 3.1.2
2180 | once: 1.4.0
2181 | path-is-absolute: 1.0.1
2182 |
2183 | /global-modules@2.0.0:
2184 | resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==}
2185 | engines: {node: '>=6'}
2186 | dependencies:
2187 | global-prefix: 3.0.0
2188 |
2189 | /global-prefix@3.0.0:
2190 | resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==}
2191 | engines: {node: '>=6'}
2192 | dependencies:
2193 | ini: 1.3.8
2194 | kind-of: 6.0.3
2195 | which: 1.3.1
2196 |
2197 | /globals@11.12.0:
2198 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
2199 | engines: {node: '>=4'}
2200 | dev: false
2201 |
2202 | /globals@13.20.0:
2203 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
2204 | engines: {node: '>=8'}
2205 | dependencies:
2206 | type-fest: 0.20.2
2207 | dev: true
2208 |
2209 | /globalthis@1.0.3:
2210 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
2211 | engines: {node: '>= 0.4'}
2212 | dependencies:
2213 | define-properties: 1.2.0
2214 | dev: true
2215 |
2216 | /globby@11.1.0:
2217 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
2218 | engines: {node: '>=10'}
2219 | dependencies:
2220 | array-union: 2.1.0
2221 | dir-glob: 3.0.1
2222 | fast-glob: 3.3.1
2223 | ignore: 5.2.4
2224 | merge2: 1.4.1
2225 | slash: 3.0.0
2226 |
2227 | /globjoin@0.1.4:
2228 | resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==}
2229 |
2230 | /gopd@1.0.1:
2231 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
2232 | dependencies:
2233 | get-intrinsic: 1.2.1
2234 | dev: true
2235 |
2236 | /graphemer@1.4.0:
2237 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
2238 | dev: true
2239 |
2240 | /hard-rejection@2.1.0:
2241 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
2242 | engines: {node: '>=6'}
2243 |
2244 | /has-bigints@1.0.2:
2245 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
2246 | dev: true
2247 |
2248 | /has-flag@3.0.0:
2249 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
2250 | engines: {node: '>=4'}
2251 |
2252 | /has-flag@4.0.0:
2253 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
2254 | engines: {node: '>=8'}
2255 |
2256 | /has-property-descriptors@1.0.0:
2257 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
2258 | dependencies:
2259 | get-intrinsic: 1.2.1
2260 | dev: true
2261 |
2262 | /has-proto@1.0.1:
2263 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
2264 | engines: {node: '>= 0.4'}
2265 | dev: true
2266 |
2267 | /has-symbols@1.0.3:
2268 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
2269 | engines: {node: '>= 0.4'}
2270 | dev: true
2271 |
2272 | /has-tostringtag@1.0.0:
2273 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
2274 | engines: {node: '>= 0.4'}
2275 | dependencies:
2276 | has-symbols: 1.0.3
2277 | dev: true
2278 |
2279 | /has@1.0.3:
2280 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
2281 | engines: {node: '>= 0.4.0'}
2282 | dependencies:
2283 | function-bind: 1.1.1
2284 |
2285 | /hosted-git-info@2.8.9:
2286 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
2287 |
2288 | /hosted-git-info@4.1.0:
2289 | resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
2290 | engines: {node: '>=10'}
2291 | dependencies:
2292 | lru-cache: 6.0.0
2293 |
2294 | /html-tags@3.3.1:
2295 | resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
2296 | engines: {node: '>=8'}
2297 |
2298 | /ieee754@1.2.1:
2299 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
2300 | dev: false
2301 |
2302 | /ignore@5.2.4:
2303 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
2304 | engines: {node: '>= 4'}
2305 |
2306 | /import-fresh@3.3.0:
2307 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
2308 | engines: {node: '>=6'}
2309 | dependencies:
2310 | parent-module: 1.0.1
2311 | resolve-from: 4.0.0
2312 |
2313 | /import-lazy@4.0.0:
2314 | resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
2315 | engines: {node: '>=8'}
2316 |
2317 | /imurmurhash@0.1.4:
2318 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
2319 | engines: {node: '>=0.8.19'}
2320 |
2321 | /indent-string@4.0.0:
2322 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
2323 | engines: {node: '>=8'}
2324 |
2325 | /inflight@1.0.6:
2326 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
2327 | dependencies:
2328 | once: 1.4.0
2329 | wrappy: 1.0.2
2330 |
2331 | /inherits@2.0.4:
2332 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
2333 |
2334 | /ini@1.3.8:
2335 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
2336 |
2337 | /internal-slot@1.0.5:
2338 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
2339 | engines: {node: '>= 0.4'}
2340 | dependencies:
2341 | get-intrinsic: 1.2.1
2342 | has: 1.0.3
2343 | side-channel: 1.0.4
2344 | dev: true
2345 |
2346 | /ip@1.1.8:
2347 | resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==}
2348 | dev: false
2349 |
2350 | /is-array-buffer@3.0.2:
2351 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
2352 | dependencies:
2353 | call-bind: 1.0.2
2354 | get-intrinsic: 1.2.1
2355 | is-typed-array: 1.1.12
2356 | dev: true
2357 |
2358 | /is-arrayish@0.2.1:
2359 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
2360 |
2361 | /is-bigint@1.0.4:
2362 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
2363 | dependencies:
2364 | has-bigints: 1.0.2
2365 | dev: true
2366 |
2367 | /is-boolean-object@1.1.2:
2368 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
2369 | engines: {node: '>= 0.4'}
2370 | dependencies:
2371 | call-bind: 1.0.2
2372 | has-tostringtag: 1.0.0
2373 | dev: true
2374 |
2375 | /is-callable@1.2.7:
2376 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
2377 | engines: {node: '>= 0.4'}
2378 | dev: true
2379 |
2380 | /is-core-module@2.12.1:
2381 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
2382 | dependencies:
2383 | has: 1.0.3
2384 |
2385 | /is-date-object@1.0.5:
2386 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
2387 | engines: {node: '>= 0.4'}
2388 | dependencies:
2389 | has-tostringtag: 1.0.0
2390 | dev: true
2391 |
2392 | /is-extglob@2.1.1:
2393 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
2394 | engines: {node: '>=0.10.0'}
2395 |
2396 | /is-fullwidth-code-point@3.0.0:
2397 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
2398 | engines: {node: '>=8'}
2399 |
2400 | /is-glob@4.0.3:
2401 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
2402 | engines: {node: '>=0.10.0'}
2403 | dependencies:
2404 | is-extglob: 2.1.1
2405 |
2406 | /is-negative-zero@2.0.2:
2407 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
2408 | engines: {node: '>= 0.4'}
2409 | dev: true
2410 |
2411 | /is-number-object@1.0.7:
2412 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
2413 | engines: {node: '>= 0.4'}
2414 | dependencies:
2415 | has-tostringtag: 1.0.0
2416 | dev: true
2417 |
2418 | /is-number@7.0.0:
2419 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
2420 | engines: {node: '>=0.12.0'}
2421 |
2422 | /is-path-inside@3.0.3:
2423 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
2424 | engines: {node: '>=8'}
2425 | dev: true
2426 |
2427 | /is-plain-obj@1.1.0:
2428 | resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
2429 | engines: {node: '>=0.10.0'}
2430 |
2431 | /is-plain-object@5.0.0:
2432 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
2433 | engines: {node: '>=0.10.0'}
2434 |
2435 | /is-regex@1.1.4:
2436 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
2437 | engines: {node: '>= 0.4'}
2438 | dependencies:
2439 | call-bind: 1.0.2
2440 | has-tostringtag: 1.0.0
2441 | dev: true
2442 |
2443 | /is-shared-array-buffer@1.0.2:
2444 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
2445 | dependencies:
2446 | call-bind: 1.0.2
2447 | dev: true
2448 |
2449 | /is-string@1.0.7:
2450 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
2451 | engines: {node: '>= 0.4'}
2452 | dependencies:
2453 | has-tostringtag: 1.0.0
2454 | dev: true
2455 |
2456 | /is-symbol@1.0.4:
2457 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
2458 | engines: {node: '>= 0.4'}
2459 | dependencies:
2460 | has-symbols: 1.0.3
2461 | dev: true
2462 |
2463 | /is-typed-array@1.1.12:
2464 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
2465 | engines: {node: '>= 0.4'}
2466 | dependencies:
2467 | which-typed-array: 1.1.11
2468 | dev: true
2469 |
2470 | /is-weakref@1.0.2:
2471 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
2472 | dependencies:
2473 | call-bind: 1.0.2
2474 | dev: true
2475 |
2476 | /isarray@2.0.5:
2477 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
2478 | dev: true
2479 |
2480 | /isexe@2.0.0:
2481 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
2482 |
2483 | /js-tokens@4.0.0:
2484 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
2485 |
2486 | /js-yaml@4.1.0:
2487 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
2488 | hasBin: true
2489 | dependencies:
2490 | argparse: 2.0.1
2491 | dev: true
2492 |
2493 | /jsesc@2.5.2:
2494 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
2495 | engines: {node: '>=4'}
2496 | hasBin: true
2497 | dev: false
2498 |
2499 | /json-parse-even-better-errors@2.3.1:
2500 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
2501 |
2502 | /json-schema-traverse@0.4.1:
2503 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
2504 | dev: true
2505 |
2506 | /json-schema-traverse@1.0.0:
2507 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
2508 |
2509 | /json-stable-stringify-without-jsonify@1.0.1:
2510 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
2511 | dev: true
2512 |
2513 | /json5@1.0.2:
2514 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
2515 | hasBin: true
2516 | dependencies:
2517 | minimist: 1.2.8
2518 | dev: true
2519 |
2520 | /json5@2.2.3:
2521 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
2522 | engines: {node: '>=6'}
2523 | hasBin: true
2524 | dev: false
2525 |
2526 | /jsonparse@1.3.1:
2527 | resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
2528 | engines: {'0': node >= 0.2.0}
2529 | dev: false
2530 |
2531 | /kind-of@6.0.3:
2532 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
2533 | engines: {node: '>=0.10.0'}
2534 |
2535 | /known-css-properties@0.26.0:
2536 | resolution: {integrity: sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==}
2537 |
2538 | /levn@0.4.1:
2539 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
2540 | engines: {node: '>= 0.8.0'}
2541 | dependencies:
2542 | prelude-ls: 1.2.1
2543 | type-check: 0.4.0
2544 | dev: true
2545 |
2546 | /lines-and-columns@1.2.4:
2547 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
2548 |
2549 | /locate-path@5.0.0:
2550 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
2551 | engines: {node: '>=8'}
2552 | dependencies:
2553 | p-locate: 4.1.0
2554 |
2555 | /locate-path@6.0.0:
2556 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
2557 | engines: {node: '>=10'}
2558 | dependencies:
2559 | p-locate: 5.0.0
2560 | dev: true
2561 |
2562 | /lodash.merge@4.6.2:
2563 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
2564 | dev: true
2565 |
2566 | /lodash.truncate@4.4.2:
2567 | resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==}
2568 |
2569 | /loose-envify@1.4.0:
2570 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
2571 | hasBin: true
2572 | dependencies:
2573 | js-tokens: 4.0.0
2574 | dev: false
2575 |
2576 | /lru-cache@5.1.1:
2577 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
2578 | dependencies:
2579 | yallist: 3.1.1
2580 | dev: false
2581 |
2582 | /lru-cache@6.0.0:
2583 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
2584 | engines: {node: '>=10'}
2585 | dependencies:
2586 | yallist: 4.0.0
2587 |
2588 | /magic-string@0.27.0:
2589 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
2590 | engines: {node: '>=12'}
2591 | dependencies:
2592 | '@jridgewell/sourcemap-codec': 1.4.15
2593 | dev: false
2594 |
2595 | /map-obj@1.0.1:
2596 | resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
2597 | engines: {node: '>=0.10.0'}
2598 |
2599 | /map-obj@4.3.0:
2600 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
2601 | engines: {node: '>=8'}
2602 |
2603 | /mathml-tag-names@2.1.3:
2604 | resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
2605 |
2606 | /meow@9.0.0:
2607 | resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==}
2608 | engines: {node: '>=10'}
2609 | dependencies:
2610 | '@types/minimist': 1.2.2
2611 | camelcase-keys: 6.2.2
2612 | decamelize: 1.2.0
2613 | decamelize-keys: 1.1.1
2614 | hard-rejection: 2.1.0
2615 | minimist-options: 4.1.0
2616 | normalize-package-data: 3.0.3
2617 | read-pkg-up: 7.0.1
2618 | redent: 3.0.0
2619 | trim-newlines: 3.0.1
2620 | type-fest: 0.18.1
2621 | yargs-parser: 20.2.9
2622 |
2623 | /merge2@1.4.1:
2624 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
2625 | engines: {node: '>= 8'}
2626 |
2627 | /micromatch@4.0.5:
2628 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
2629 | engines: {node: '>=8.6'}
2630 | dependencies:
2631 | braces: 3.0.2
2632 | picomatch: 2.3.1
2633 |
2634 | /min-indent@1.0.1:
2635 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
2636 | engines: {node: '>=4'}
2637 |
2638 | /minimatch@3.1.2:
2639 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
2640 | dependencies:
2641 | brace-expansion: 1.1.11
2642 |
2643 | /minimist-options@4.1.0:
2644 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
2645 | engines: {node: '>= 6'}
2646 | dependencies:
2647 | arrify: 1.0.1
2648 | is-plain-obj: 1.1.0
2649 | kind-of: 6.0.3
2650 |
2651 | /minimist@1.2.8:
2652 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
2653 | dev: true
2654 |
2655 | /ms@2.1.2:
2656 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
2657 |
2658 | /ms@2.1.3:
2659 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
2660 | dev: true
2661 |
2662 | /nanodelay@2.0.2:
2663 | resolution: {integrity: sha512-6AS5aCSXsjoxq2Jr9CdaAeT60yoYDOTp6po9ziqeOeY6vf6uTEHYSqWql6EFILrM3fEfXgkZ4KqE9L0rTm/wlA==}
2664 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
2665 | dev: false
2666 |
2667 | /nanoevents@7.0.1:
2668 | resolution: {integrity: sha512-o6lpKiCxLeijK4hgsqfR6CNToPyRU3keKyyI6uwuHRvpRTbZ0wXw51WRgyldVugZqoJfkGFrjrIenYH3bfEO3Q==}
2669 | engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
2670 | dev: false
2671 |
2672 | /nanoevents@8.0.0:
2673 | resolution: {integrity: sha512-bYYwNCdNc5ea6/Lwh1uioU1/7aaKa3EPmNQ2weTm8PWSpbWrsaWHePe0Zq4SF+D3F3JX3cn+QdktOPCf1meOqw==}
2674 | engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0}
2675 | dev: false
2676 |
2677 | /nanoid@3.3.6:
2678 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
2679 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2680 | hasBin: true
2681 |
2682 | /nanoid@4.0.2:
2683 | resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==}
2684 | engines: {node: ^14 || ^16 || >=18}
2685 | hasBin: true
2686 | dev: false
2687 |
2688 | /nanostores@0.7.4:
2689 | resolution: {integrity: sha512-MBeUVt7NBcXqh7AGT+KSr3O0X/995CZsvcP2QEMP+PXFwb07qv3Vjyq+EX0yS8f12Vv3Tn2g/BvK/OZoMhJlOQ==}
2690 | engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
2691 | dev: false
2692 |
2693 | /natural-compare-lite@1.4.0:
2694 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
2695 | dev: true
2696 |
2697 | /natural-compare@1.4.0:
2698 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
2699 | dev: true
2700 |
2701 | /node-domexception@1.0.0:
2702 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
2703 | engines: {node: '>=10.5.0'}
2704 | dev: false
2705 |
2706 | /node-fetch@3.3.2:
2707 | resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
2708 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
2709 | dependencies:
2710 | data-uri-to-buffer: 4.0.1
2711 | fetch-blob: 3.2.0
2712 | formdata-polyfill: 4.0.10
2713 | dev: false
2714 |
2715 | /node-releases@2.0.13:
2716 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
2717 | dev: false
2718 |
2719 | /normalize-package-data@2.5.0:
2720 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
2721 | dependencies:
2722 | hosted-git-info: 2.8.9
2723 | resolve: 1.22.2
2724 | semver: 5.7.2
2725 | validate-npm-package-license: 3.0.4
2726 |
2727 | /normalize-package-data@3.0.3:
2728 | resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
2729 | engines: {node: '>=10'}
2730 | dependencies:
2731 | hosted-git-info: 4.1.0
2732 | is-core-module: 2.12.1
2733 | semver: 7.5.4
2734 | validate-npm-package-license: 3.0.4
2735 |
2736 | /normalize-path@3.0.0:
2737 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
2738 | engines: {node: '>=0.10.0'}
2739 |
2740 | /normalize-range@0.1.2:
2741 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
2742 | engines: {node: '>=0.10.0'}
2743 | dev: false
2744 |
2745 | /object-inspect@1.12.3:
2746 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
2747 | dev: true
2748 |
2749 | /object-keys@1.1.1:
2750 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
2751 | engines: {node: '>= 0.4'}
2752 | dev: true
2753 |
2754 | /object.assign@4.1.4:
2755 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
2756 | engines: {node: '>= 0.4'}
2757 | dependencies:
2758 | call-bind: 1.0.2
2759 | define-properties: 1.2.0
2760 | has-symbols: 1.0.3
2761 | object-keys: 1.1.1
2762 | dev: true
2763 |
2764 | /object.fromentries@2.0.6:
2765 | resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==}
2766 | engines: {node: '>= 0.4'}
2767 | dependencies:
2768 | call-bind: 1.0.2
2769 | define-properties: 1.2.0
2770 | es-abstract: 1.22.1
2771 | dev: true
2772 |
2773 | /object.groupby@1.0.0:
2774 | resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==}
2775 | dependencies:
2776 | call-bind: 1.0.2
2777 | define-properties: 1.2.0
2778 | es-abstract: 1.22.1
2779 | get-intrinsic: 1.2.1
2780 | dev: true
2781 |
2782 | /object.values@1.1.6:
2783 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==}
2784 | engines: {node: '>= 0.4'}
2785 | dependencies:
2786 | call-bind: 1.0.2
2787 | define-properties: 1.2.0
2788 | es-abstract: 1.22.1
2789 | dev: true
2790 |
2791 | /on-exit-leak-free@2.1.0:
2792 | resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==}
2793 | dev: false
2794 |
2795 | /once@1.4.0:
2796 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
2797 | dependencies:
2798 | wrappy: 1.0.2
2799 |
2800 | /optionator@0.9.3:
2801 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
2802 | engines: {node: '>= 0.8.0'}
2803 | dependencies:
2804 | '@aashutoshrathi/word-wrap': 1.2.6
2805 | deep-is: 0.1.4
2806 | fast-levenshtein: 2.0.6
2807 | levn: 0.4.1
2808 | prelude-ls: 1.2.1
2809 | type-check: 0.4.0
2810 | dev: true
2811 |
2812 | /p-limit@2.3.0:
2813 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
2814 | engines: {node: '>=6'}
2815 | dependencies:
2816 | p-try: 2.2.0
2817 |
2818 | /p-limit@3.1.0:
2819 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
2820 | engines: {node: '>=10'}
2821 | dependencies:
2822 | yocto-queue: 0.1.0
2823 | dev: true
2824 |
2825 | /p-locate@4.1.0:
2826 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
2827 | engines: {node: '>=8'}
2828 | dependencies:
2829 | p-limit: 2.3.0
2830 |
2831 | /p-locate@5.0.0:
2832 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
2833 | engines: {node: '>=10'}
2834 | dependencies:
2835 | p-limit: 3.1.0
2836 | dev: true
2837 |
2838 | /p-try@2.2.0:
2839 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
2840 | engines: {node: '>=6'}
2841 |
2842 | /parent-module@1.0.1:
2843 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
2844 | engines: {node: '>=6'}
2845 | dependencies:
2846 | callsites: 3.1.0
2847 |
2848 | /parse-json@5.2.0:
2849 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
2850 | engines: {node: '>=8'}
2851 | dependencies:
2852 | '@babel/code-frame': 7.22.5
2853 | error-ex: 1.3.2
2854 | json-parse-even-better-errors: 2.3.1
2855 | lines-and-columns: 1.2.4
2856 |
2857 | /path-exists@4.0.0:
2858 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
2859 | engines: {node: '>=8'}
2860 |
2861 | /path-is-absolute@1.0.1:
2862 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
2863 | engines: {node: '>=0.10.0'}
2864 |
2865 | /path-key@3.1.1:
2866 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2867 | engines: {node: '>=8'}
2868 | dev: true
2869 |
2870 | /path-parse@1.0.7:
2871 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
2872 |
2873 | /path-type@4.0.0:
2874 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
2875 | engines: {node: '>=8'}
2876 |
2877 | /picocolors@1.0.0:
2878 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2879 |
2880 | /picomatch@2.3.1:
2881 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2882 | engines: {node: '>=8.6'}
2883 |
2884 | /pino-abstract-transport@1.0.0:
2885 | resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==}
2886 | dependencies:
2887 | readable-stream: 4.4.2
2888 | split2: 4.2.0
2889 | dev: false
2890 |
2891 | /pino-std-serializers@6.2.2:
2892 | resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
2893 | dev: false
2894 |
2895 | /pino@8.15.0:
2896 | resolution: {integrity: sha512-olUADJByk4twxccmAxb1RiGKOSvddHugCV3wkqjyv+3Sooa2KLrmXrKEWOKi0XPCLasRR5jBXxioE1jxUa4KzQ==}
2897 | hasBin: true
2898 | dependencies:
2899 | atomic-sleep: 1.0.0
2900 | fast-redact: 3.3.0
2901 | on-exit-leak-free: 2.1.0
2902 | pino-abstract-transport: 1.0.0
2903 | pino-std-serializers: 6.2.2
2904 | process-warning: 2.2.0
2905 | quick-format-unescaped: 4.0.4
2906 | real-require: 0.2.0
2907 | safe-stable-stringify: 2.4.3
2908 | sonic-boom: 3.3.0
2909 | thread-stream: 2.3.0
2910 | dev: false
2911 |
2912 | /postcss-browser-comments@4.0.0(browserslist@4.21.10)(postcss@8.4.27):
2913 | resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==}
2914 | engines: {node: '>=8'}
2915 | peerDependencies:
2916 | browserslist: '>=4'
2917 | postcss: '>=8'
2918 | dependencies:
2919 | browserslist: 4.21.10
2920 | postcss: 8.4.27
2921 | dev: false
2922 |
2923 | /postcss-media-query-parser@0.2.3:
2924 | resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==}
2925 |
2926 | /postcss-nested@6.0.1(postcss@8.4.27):
2927 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
2928 | engines: {node: '>=12.0'}
2929 | peerDependencies:
2930 | postcss: ^8.2.14
2931 | dependencies:
2932 | postcss: 8.4.27
2933 | postcss-selector-parser: 6.0.13
2934 | dev: false
2935 |
2936 | /postcss-normalize@10.0.1(browserslist@4.21.10)(postcss@8.4.27):
2937 | resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==}
2938 | engines: {node: '>= 12'}
2939 | peerDependencies:
2940 | browserslist: '>= 4'
2941 | postcss: '>= 8'
2942 | dependencies:
2943 | '@csstools/normalize.css': 12.0.0
2944 | browserslist: 4.21.10
2945 | postcss: 8.4.27
2946 | postcss-browser-comments: 4.0.0(browserslist@4.21.10)(postcss@8.4.27)
2947 | sanitize.css: 13.0.0
2948 | dev: false
2949 |
2950 | /postcss-resolve-nested-selector@0.1.1:
2951 | resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==}
2952 |
2953 | /postcss-safe-parser@6.0.0(postcss@8.4.27):
2954 | resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==}
2955 | engines: {node: '>=12.0'}
2956 | peerDependencies:
2957 | postcss: ^8.3.3
2958 | dependencies:
2959 | postcss: 8.4.27
2960 |
2961 | /postcss-selector-parser@6.0.13:
2962 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
2963 | engines: {node: '>=4'}
2964 | dependencies:
2965 | cssesc: 3.0.0
2966 | util-deprecate: 1.0.2
2967 |
2968 | /postcss-sorting@7.0.1(postcss@8.4.27):
2969 | resolution: {integrity: sha512-iLBFYz6VRYyLJEJsBJ8M3TCqNcckVzz4wFounSc5Oez35ogE/X+aoC5fFu103Ot7NyvjU3/xqIXn93Gp3kJk4g==}
2970 | peerDependencies:
2971 | postcss: ^8.3.9
2972 | dependencies:
2973 | postcss: 8.4.27
2974 | dev: true
2975 |
2976 | /postcss-value-parser@4.2.0:
2977 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
2978 |
2979 | /postcss@8.4.27:
2980 | resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==}
2981 | engines: {node: ^10 || ^12 || >=14}
2982 | dependencies:
2983 | nanoid: 3.3.6
2984 | picocolors: 1.0.0
2985 | source-map-js: 1.0.2
2986 |
2987 | /prelude-ls@1.2.1:
2988 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
2989 | engines: {node: '>= 0.8.0'}
2990 | dev: true
2991 |
2992 | /process-warning@2.2.0:
2993 | resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==}
2994 | dev: false
2995 |
2996 | /process@0.11.10:
2997 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
2998 | engines: {node: '>= 0.6.0'}
2999 | dev: false
3000 |
3001 | /punycode@2.3.0:
3002 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
3003 | engines: {node: '>=6'}
3004 |
3005 | /queue-microtask@1.2.3:
3006 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
3007 |
3008 | /quick-format-unescaped@4.0.4:
3009 | resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
3010 | dev: false
3011 |
3012 | /quick-lru@4.0.1:
3013 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
3014 | engines: {node: '>=8'}
3015 |
3016 | /react-dom@18.2.0(react@18.2.0):
3017 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
3018 | peerDependencies:
3019 | react: ^18.2.0
3020 | dependencies:
3021 | loose-envify: 1.4.0
3022 | react: 18.2.0
3023 | scheduler: 0.23.0
3024 | dev: false
3025 |
3026 | /react-refresh@0.14.0:
3027 | resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
3028 | engines: {node: '>=0.10.0'}
3029 | dev: false
3030 |
3031 | /react@18.2.0:
3032 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
3033 | engines: {node: '>=0.10.0'}
3034 | dependencies:
3035 | loose-envify: 1.4.0
3036 | dev: false
3037 |
3038 | /read-pkg-up@7.0.1:
3039 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
3040 | engines: {node: '>=8'}
3041 | dependencies:
3042 | find-up: 4.1.0
3043 | read-pkg: 5.2.0
3044 | type-fest: 0.8.1
3045 |
3046 | /read-pkg@5.2.0:
3047 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
3048 | engines: {node: '>=8'}
3049 | dependencies:
3050 | '@types/normalize-package-data': 2.4.1
3051 | normalize-package-data: 2.5.0
3052 | parse-json: 5.2.0
3053 | type-fest: 0.6.0
3054 |
3055 | /readable-stream@4.4.2:
3056 | resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==}
3057 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3058 | dependencies:
3059 | abort-controller: 3.0.0
3060 | buffer: 6.0.3
3061 | events: 3.3.0
3062 | process: 0.11.10
3063 | string_decoder: 1.3.0
3064 | dev: false
3065 |
3066 | /real-require@0.2.0:
3067 | resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
3068 | engines: {node: '>= 12.13.0'}
3069 | dev: false
3070 |
3071 | /redent@3.0.0:
3072 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
3073 | engines: {node: '>=8'}
3074 | dependencies:
3075 | indent-string: 4.0.0
3076 | strip-indent: 3.0.0
3077 |
3078 | /regexp.prototype.flags@1.5.0:
3079 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
3080 | engines: {node: '>= 0.4'}
3081 | dependencies:
3082 | call-bind: 1.0.2
3083 | define-properties: 1.2.0
3084 | functions-have-names: 1.2.3
3085 | dev: true
3086 |
3087 | /regexpp@3.2.0:
3088 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
3089 | engines: {node: '>=8'}
3090 | dev: true
3091 |
3092 | /require-from-string@2.0.2:
3093 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
3094 | engines: {node: '>=0.10.0'}
3095 |
3096 | /requireindex@1.2.0:
3097 | resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==}
3098 | engines: {node: '>=0.10.5'}
3099 | dev: true
3100 |
3101 | /resolve-from@4.0.0:
3102 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
3103 | engines: {node: '>=4'}
3104 |
3105 | /resolve-from@5.0.0:
3106 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
3107 | engines: {node: '>=8'}
3108 |
3109 | /resolve@1.22.2:
3110 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
3111 | hasBin: true
3112 | dependencies:
3113 | is-core-module: 2.12.1
3114 | path-parse: 1.0.7
3115 | supports-preserve-symlinks-flag: 1.0.0
3116 |
3117 | /resolve@1.22.3:
3118 | resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==}
3119 | hasBin: true
3120 | dependencies:
3121 | is-core-module: 2.12.1
3122 | path-parse: 1.0.7
3123 | supports-preserve-symlinks-flag: 1.0.0
3124 | dev: true
3125 |
3126 | /reusify@1.0.4:
3127 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
3128 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
3129 |
3130 | /rimraf@3.0.2:
3131 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
3132 | hasBin: true
3133 | dependencies:
3134 | glob: 7.2.3
3135 |
3136 | /rollup@3.27.2:
3137 | resolution: {integrity: sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==}
3138 | engines: {node: '>=14.18.0', npm: '>=8.0.0'}
3139 | hasBin: true
3140 | optionalDependencies:
3141 | fsevents: 2.3.2
3142 | dev: false
3143 |
3144 | /run-parallel@1.2.0:
3145 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
3146 | dependencies:
3147 | queue-microtask: 1.2.3
3148 |
3149 | /safe-array-concat@1.0.0:
3150 | resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==}
3151 | engines: {node: '>=0.4'}
3152 | dependencies:
3153 | call-bind: 1.0.2
3154 | get-intrinsic: 1.2.1
3155 | has-symbols: 1.0.3
3156 | isarray: 2.0.5
3157 | dev: true
3158 |
3159 | /safe-buffer@5.2.1:
3160 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
3161 | dev: false
3162 |
3163 | /safe-regex-test@1.0.0:
3164 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
3165 | dependencies:
3166 | call-bind: 1.0.2
3167 | get-intrinsic: 1.2.1
3168 | is-regex: 1.1.4
3169 | dev: true
3170 |
3171 | /safe-stable-stringify@2.4.3:
3172 | resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==}
3173 | engines: {node: '>=10'}
3174 | dev: false
3175 |
3176 | /sanitize.css@13.0.0:
3177 | resolution: {integrity: sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==}
3178 | dev: false
3179 |
3180 | /scheduler@0.23.0:
3181 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
3182 | dependencies:
3183 | loose-envify: 1.4.0
3184 | dev: false
3185 |
3186 | /semver@5.7.2:
3187 | resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
3188 | hasBin: true
3189 |
3190 | /semver@6.3.1:
3191 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
3192 | hasBin: true
3193 |
3194 | /semver@7.5.4:
3195 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
3196 | engines: {node: '>=10'}
3197 | hasBin: true
3198 | dependencies:
3199 | lru-cache: 6.0.0
3200 |
3201 | /shebang-command@2.0.0:
3202 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
3203 | engines: {node: '>=8'}
3204 | dependencies:
3205 | shebang-regex: 3.0.0
3206 | dev: true
3207 |
3208 | /shebang-regex@3.0.0:
3209 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
3210 | engines: {node: '>=8'}
3211 | dev: true
3212 |
3213 | /side-channel@1.0.4:
3214 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
3215 | dependencies:
3216 | call-bind: 1.0.2
3217 | get-intrinsic: 1.2.1
3218 | object-inspect: 1.12.3
3219 | dev: true
3220 |
3221 | /signal-exit@3.0.7:
3222 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
3223 |
3224 | /slash@3.0.0:
3225 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
3226 | engines: {node: '>=8'}
3227 |
3228 | /slice-ansi@4.0.0:
3229 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
3230 | engines: {node: '>=10'}
3231 | dependencies:
3232 | ansi-styles: 4.3.0
3233 | astral-regex: 2.0.0
3234 | is-fullwidth-code-point: 3.0.0
3235 |
3236 | /sonic-boom@3.3.0:
3237 | resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==}
3238 | dependencies:
3239 | atomic-sleep: 1.0.0
3240 | dev: false
3241 |
3242 | /source-map-js@1.0.2:
3243 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
3244 | engines: {node: '>=0.10.0'}
3245 |
3246 | /spdx-correct@3.2.0:
3247 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
3248 | dependencies:
3249 | spdx-expression-parse: 3.0.1
3250 | spdx-license-ids: 3.0.13
3251 |
3252 | /spdx-exceptions@2.3.0:
3253 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
3254 |
3255 | /spdx-expression-parse@3.0.1:
3256 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
3257 | dependencies:
3258 | spdx-exceptions: 2.3.0
3259 | spdx-license-ids: 3.0.13
3260 |
3261 | /spdx-license-ids@3.0.13:
3262 | resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==}
3263 |
3264 | /split2@4.2.0:
3265 | resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
3266 | engines: {node: '>= 10.x'}
3267 | dev: false
3268 |
3269 | /string-width@4.2.3:
3270 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
3271 | engines: {node: '>=8'}
3272 | dependencies:
3273 | emoji-regex: 8.0.0
3274 | is-fullwidth-code-point: 3.0.0
3275 | strip-ansi: 6.0.1
3276 |
3277 | /string.prototype.trim@1.2.7:
3278 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==}
3279 | engines: {node: '>= 0.4'}
3280 | dependencies:
3281 | call-bind: 1.0.2
3282 | define-properties: 1.2.0
3283 | es-abstract: 1.22.1
3284 | dev: true
3285 |
3286 | /string.prototype.trimend@1.0.6:
3287 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
3288 | dependencies:
3289 | call-bind: 1.0.2
3290 | define-properties: 1.2.0
3291 | es-abstract: 1.22.1
3292 | dev: true
3293 |
3294 | /string.prototype.trimstart@1.0.6:
3295 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
3296 | dependencies:
3297 | call-bind: 1.0.2
3298 | define-properties: 1.2.0
3299 | es-abstract: 1.22.1
3300 | dev: true
3301 |
3302 | /string_decoder@1.3.0:
3303 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
3304 | dependencies:
3305 | safe-buffer: 5.2.1
3306 | dev: false
3307 |
3308 | /strip-ansi@6.0.1:
3309 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
3310 | engines: {node: '>=8'}
3311 | dependencies:
3312 | ansi-regex: 5.0.1
3313 |
3314 | /strip-ansi@7.1.0:
3315 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
3316 | engines: {node: '>=12'}
3317 | dependencies:
3318 | ansi-regex: 6.0.1
3319 | dev: false
3320 |
3321 | /strip-bom@3.0.0:
3322 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
3323 | engines: {node: '>=4'}
3324 | dev: true
3325 |
3326 | /strip-indent@3.0.0:
3327 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
3328 | engines: {node: '>=8'}
3329 | dependencies:
3330 | min-indent: 1.0.1
3331 |
3332 | /strip-json-comments@3.1.1:
3333 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
3334 | engines: {node: '>=8'}
3335 | dev: true
3336 |
3337 | /style-search@0.1.0:
3338 | resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==}
3339 |
3340 | /stylelint-config-recess-order@3.1.0(stylelint@14.16.1):
3341 | resolution: {integrity: sha512-LXR6zD5O9cS1a9gbLbuKvWLs7qmHj4xm5MQ5KhhwZPMhtQP9da3F6Jsp/NAUdsAwDQEnT1ShU16YVdgN6p4a/w==}
3342 | peerDependencies:
3343 | stylelint: '>=14'
3344 | dependencies:
3345 | stylelint: 14.16.1
3346 | stylelint-order: 5.0.0(stylelint@14.16.1)
3347 | dev: true
3348 |
3349 | /stylelint-config-recommended@9.0.0(stylelint@14.16.1):
3350 | resolution: {integrity: sha512-9YQSrJq4NvvRuTbzDsWX3rrFOzOlYBmZP+o513BJN/yfEmGSr0AxdvrWs0P/ilSpVV/wisamAHu5XSk8Rcf4CQ==}
3351 | peerDependencies:
3352 | stylelint: ^14.10.0
3353 | dependencies:
3354 | stylelint: 14.16.1
3355 | dev: true
3356 |
3357 | /stylelint-config-standard@29.0.0(stylelint@14.16.1):
3358 | resolution: {integrity: sha512-uy8tZLbfq6ZrXy4JKu3W+7lYLgRQBxYTUUB88vPgQ+ZzAxdrvcaSUW9hOMNLYBnwH+9Kkj19M2DHdZ4gKwI7tg==}
3359 | peerDependencies:
3360 | stylelint: ^14.14.0
3361 | dependencies:
3362 | stylelint: 14.16.1
3363 | stylelint-config-recommended: 9.0.0(stylelint@14.16.1)
3364 | dev: true
3365 |
3366 | /stylelint-gamut@1.3.3(stylelint@14.16.1):
3367 | resolution: {integrity: sha512-O7aNt2dgmtwTbA+hdbXAKcKDRfE4AV09VrZDTyO8bMnfFnHQTkflfPhR1fLGM+w2kcn1hep8rIvaDteIryer8A==}
3368 | engines: {node: '>=16.0.0'}
3369 | peerDependencies:
3370 | stylelint: ^14.0.0 || ^15.0.0
3371 | dependencies:
3372 | colorjs.io: 0.4.5
3373 | stylelint: 14.16.1
3374 | dev: true
3375 |
3376 | /stylelint-order@5.0.0(stylelint@14.16.1):
3377 | resolution: {integrity: sha512-OWQ7pmicXufDw5BlRqzdz3fkGKJPgLyDwD1rFY3AIEfIH/LQY38Vu/85v8/up0I+VPiuGRwbc2Hg3zLAsJaiyw==}
3378 | peerDependencies:
3379 | stylelint: ^14.0.0
3380 | dependencies:
3381 | postcss: 8.4.27
3382 | postcss-sorting: 7.0.1(postcss@8.4.27)
3383 | stylelint: 14.16.1
3384 | dev: true
3385 |
3386 | /stylelint@14.16.1:
3387 | resolution: {integrity: sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==}
3388 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
3389 | hasBin: true
3390 | dependencies:
3391 | '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13)
3392 | balanced-match: 2.0.0
3393 | colord: 2.9.3
3394 | cosmiconfig: 7.1.0
3395 | css-functions-list: 3.2.0
3396 | debug: 4.3.4
3397 | fast-glob: 3.3.1
3398 | fastest-levenshtein: 1.0.16
3399 | file-entry-cache: 6.0.1
3400 | global-modules: 2.0.0
3401 | globby: 11.1.0
3402 | globjoin: 0.1.4
3403 | html-tags: 3.3.1
3404 | ignore: 5.2.4
3405 | import-lazy: 4.0.0
3406 | imurmurhash: 0.1.4
3407 | is-plain-object: 5.0.0
3408 | known-css-properties: 0.26.0
3409 | mathml-tag-names: 2.1.3
3410 | meow: 9.0.0
3411 | micromatch: 4.0.5
3412 | normalize-path: 3.0.0
3413 | picocolors: 1.0.0
3414 | postcss: 8.4.27
3415 | postcss-media-query-parser: 0.2.3
3416 | postcss-resolve-nested-selector: 0.1.1
3417 | postcss-safe-parser: 6.0.0(postcss@8.4.27)
3418 | postcss-selector-parser: 6.0.13
3419 | postcss-value-parser: 4.2.0
3420 | resolve-from: 5.0.0
3421 | string-width: 4.2.3
3422 | strip-ansi: 6.0.1
3423 | style-search: 0.1.0
3424 | supports-hyperlinks: 2.3.0
3425 | svg-tags: 1.0.0
3426 | table: 6.8.1
3427 | v8-compile-cache: 2.3.0
3428 | write-file-atomic: 4.0.2
3429 | transitivePeerDependencies:
3430 | - supports-color
3431 |
3432 | /supports-color@5.5.0:
3433 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
3434 | engines: {node: '>=4'}
3435 | dependencies:
3436 | has-flag: 3.0.0
3437 |
3438 | /supports-color@7.2.0:
3439 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
3440 | engines: {node: '>=8'}
3441 | dependencies:
3442 | has-flag: 4.0.0
3443 |
3444 | /supports-hyperlinks@2.3.0:
3445 | resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==}
3446 | engines: {node: '>=8'}
3447 | dependencies:
3448 | has-flag: 4.0.0
3449 | supports-color: 7.2.0
3450 |
3451 | /supports-preserve-symlinks-flag@1.0.0:
3452 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
3453 | engines: {node: '>= 0.4'}
3454 |
3455 | /svg-tags@1.0.0:
3456 | resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
3457 |
3458 | /table@6.8.1:
3459 | resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==}
3460 | engines: {node: '>=10.0.0'}
3461 | dependencies:
3462 | ajv: 8.12.0
3463 | lodash.truncate: 4.4.2
3464 | slice-ansi: 4.0.0
3465 | string-width: 4.2.3
3466 | strip-ansi: 6.0.1
3467 |
3468 | /text-table@0.2.0:
3469 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
3470 | dev: true
3471 |
3472 | /thread-stream@2.3.0:
3473 | resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==}
3474 | dependencies:
3475 | real-require: 0.2.0
3476 | dev: false
3477 |
3478 | /through@2.3.8:
3479 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
3480 | dev: false
3481 |
3482 | /to-fast-properties@2.0.0:
3483 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
3484 | engines: {node: '>=4'}
3485 | dev: false
3486 |
3487 | /to-regex-range@5.0.1:
3488 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
3489 | engines: {node: '>=8.0'}
3490 | dependencies:
3491 | is-number: 7.0.0
3492 |
3493 | /trim-newlines@3.0.1:
3494 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
3495 | engines: {node: '>=8'}
3496 |
3497 | /tsconfig-paths@3.14.2:
3498 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
3499 | dependencies:
3500 | '@types/json5': 0.0.29
3501 | json5: 1.0.2
3502 | minimist: 1.2.8
3503 | strip-bom: 3.0.0
3504 | dev: true
3505 |
3506 | /tslib@1.14.1:
3507 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
3508 | dev: true
3509 |
3510 | /tsm@2.3.0:
3511 | resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==}
3512 | engines: {node: '>=12'}
3513 | hasBin: true
3514 | dependencies:
3515 | esbuild: 0.15.18
3516 | dev: true
3517 |
3518 | /tsutils@3.21.0(typescript@4.9.5):
3519 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
3520 | engines: {node: '>= 6'}
3521 | peerDependencies:
3522 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
3523 | dependencies:
3524 | tslib: 1.14.1
3525 | typescript: 4.9.5
3526 | dev: true
3527 |
3528 | /type-check@0.4.0:
3529 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
3530 | engines: {node: '>= 0.8.0'}
3531 | dependencies:
3532 | prelude-ls: 1.2.1
3533 | dev: true
3534 |
3535 | /type-fest@0.18.1:
3536 | resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
3537 | engines: {node: '>=10'}
3538 |
3539 | /type-fest@0.20.2:
3540 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
3541 | engines: {node: '>=10'}
3542 | dev: true
3543 |
3544 | /type-fest@0.6.0:
3545 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
3546 | engines: {node: '>=8'}
3547 |
3548 | /type-fest@0.8.1:
3549 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
3550 | engines: {node: '>=8'}
3551 |
3552 | /typed-array-buffer@1.0.0:
3553 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
3554 | engines: {node: '>= 0.4'}
3555 | dependencies:
3556 | call-bind: 1.0.2
3557 | get-intrinsic: 1.2.1
3558 | is-typed-array: 1.1.12
3559 | dev: true
3560 |
3561 | /typed-array-byte-length@1.0.0:
3562 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
3563 | engines: {node: '>= 0.4'}
3564 | dependencies:
3565 | call-bind: 1.0.2
3566 | for-each: 0.3.3
3567 | has-proto: 1.0.1
3568 | is-typed-array: 1.1.12
3569 | dev: true
3570 |
3571 | /typed-array-byte-offset@1.0.0:
3572 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
3573 | engines: {node: '>= 0.4'}
3574 | dependencies:
3575 | available-typed-arrays: 1.0.5
3576 | call-bind: 1.0.2
3577 | for-each: 0.3.3
3578 | has-proto: 1.0.1
3579 | is-typed-array: 1.1.12
3580 | dev: true
3581 |
3582 | /typed-array-length@1.0.4:
3583 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
3584 | dependencies:
3585 | call-bind: 1.0.2
3586 | for-each: 0.3.3
3587 | is-typed-array: 1.1.12
3588 | dev: true
3589 |
3590 | /typescript@4.9.5:
3591 | resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
3592 | engines: {node: '>=4.2.0'}
3593 | hasBin: true
3594 | dev: true
3595 |
3596 | /unbox-primitive@1.0.2:
3597 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
3598 | dependencies:
3599 | call-bind: 1.0.2
3600 | has-bigints: 1.0.2
3601 | has-symbols: 1.0.3
3602 | which-boxed-primitive: 1.0.2
3603 | dev: true
3604 |
3605 | /update-browserslist-db@1.0.11(browserslist@4.21.10):
3606 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
3607 | hasBin: true
3608 | peerDependencies:
3609 | browserslist: '>= 4.21.0'
3610 | dependencies:
3611 | browserslist: 4.21.10
3612 | escalade: 3.1.1
3613 | picocolors: 1.0.0
3614 | dev: false
3615 |
3616 | /uri-js@4.4.1:
3617 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
3618 | dependencies:
3619 | punycode: 2.3.0
3620 |
3621 | /url-pattern@1.0.3:
3622 | resolution: {integrity: sha512-uQcEj/2puA4aq1R3A2+VNVBgaWYR24FdWjl7VNW83rnWftlhyzOZ/tBjezRiC2UkIzuxC8Top3IekN3vUf1WxA==}
3623 | engines: {node: '>=0.12.0'}
3624 | dev: false
3625 |
3626 | /use-sync-external-store@1.2.0(react@18.2.0):
3627 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
3628 | peerDependencies:
3629 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
3630 | dependencies:
3631 | react: 18.2.0
3632 | dev: false
3633 |
3634 | /util-deprecate@1.0.2:
3635 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
3636 |
3637 | /v8-compile-cache@2.3.0:
3638 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
3639 |
3640 | /validate-npm-package-license@3.0.4:
3641 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
3642 | dependencies:
3643 | spdx-correct: 3.2.0
3644 | spdx-expression-parse: 3.0.1
3645 |
3646 | /vite@4.4.8:
3647 | resolution: {integrity: sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==}
3648 | engines: {node: ^14.18.0 || >=16.0.0}
3649 | hasBin: true
3650 | peerDependencies:
3651 | '@types/node': '>= 14'
3652 | less: '*'
3653 | lightningcss: ^1.21.0
3654 | sass: '*'
3655 | stylus: '*'
3656 | sugarss: '*'
3657 | terser: ^5.4.0
3658 | peerDependenciesMeta:
3659 | '@types/node':
3660 | optional: true
3661 | less:
3662 | optional: true
3663 | lightningcss:
3664 | optional: true
3665 | sass:
3666 | optional: true
3667 | stylus:
3668 | optional: true
3669 | sugarss:
3670 | optional: true
3671 | terser:
3672 | optional: true
3673 | dependencies:
3674 | esbuild: 0.18.17
3675 | postcss: 8.4.27
3676 | rollup: 3.27.2
3677 | optionalDependencies:
3678 | fsevents: 2.3.2
3679 | dev: false
3680 |
3681 | /web-streams-polyfill@3.2.1:
3682 | resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==}
3683 | engines: {node: '>= 8'}
3684 | dev: false
3685 |
3686 | /which-boxed-primitive@1.0.2:
3687 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
3688 | dependencies:
3689 | is-bigint: 1.0.4
3690 | is-boolean-object: 1.1.2
3691 | is-number-object: 1.0.7
3692 | is-string: 1.0.7
3693 | is-symbol: 1.0.4
3694 | dev: true
3695 |
3696 | /which-typed-array@1.1.11:
3697 | resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
3698 | engines: {node: '>= 0.4'}
3699 | dependencies:
3700 | available-typed-arrays: 1.0.5
3701 | call-bind: 1.0.2
3702 | for-each: 0.3.3
3703 | gopd: 1.0.1
3704 | has-tostringtag: 1.0.0
3705 | dev: true
3706 |
3707 | /which@1.3.1:
3708 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
3709 | hasBin: true
3710 | dependencies:
3711 | isexe: 2.0.0
3712 |
3713 | /which@2.0.2:
3714 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
3715 | engines: {node: '>= 8'}
3716 | hasBin: true
3717 | dependencies:
3718 | isexe: 2.0.0
3719 | dev: true
3720 |
3721 | /wrappy@1.0.2:
3722 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
3723 |
3724 | /write-file-atomic@4.0.2:
3725 | resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
3726 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
3727 | dependencies:
3728 | imurmurhash: 0.1.4
3729 | signal-exit: 3.0.7
3730 |
3731 | /ws@8.13.0:
3732 | resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
3733 | engines: {node: '>=10.0.0'}
3734 | peerDependencies:
3735 | bufferutil: ^4.0.1
3736 | utf-8-validate: '>=5.0.2'
3737 | peerDependenciesMeta:
3738 | bufferutil:
3739 | optional: true
3740 | utf-8-validate:
3741 | optional: true
3742 | dev: false
3743 |
3744 | /yallist@3.1.1:
3745 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
3746 | dev: false
3747 |
3748 | /yallist@4.0.0:
3749 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
3750 |
3751 | /yaml@1.10.2:
3752 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
3753 | engines: {node: '>= 6'}
3754 |
3755 | /yargs-parser@20.2.9:
3756 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
3757 | engines: {node: '>=10'}
3758 |
3759 | /yocto-queue@0.1.0:
3760 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
3761 | engines: {node: '>=10'}
3762 | dev: true
3763 |
3764 | /yyyy-mm-dd@1.0.2:
3765 | resolution: {integrity: sha512-xHhOFKT1Y29Jc4/6To1hmIUswKhCKplPSbkCyIabAAZ5q/9GmZvlN3WNcafcq3zze3CzYU66XNeSBLCD8Oickw==}
3766 | dev: false
3767 |
3768 | github.com/logux/server/1b649580cf7f5f9ae1598ce2f3bfba00482dc471:
3769 | resolution: {tarball: https://codeload.github.com/logux/server/tar.gz/1b649580cf7f5f9ae1598ce2f3bfba00482dc471}
3770 | name: '@logux/server'
3771 | version: 0.12.4
3772 | engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0}
3773 | dependencies:
3774 | '@logux/actions': 0.3.1(@logux/core@0.8.4)
3775 | '@logux/core': 0.8.4
3776 | JSONStream: 1.3.5
3777 | cookie: 0.5.0
3778 | dotenv: 16.3.1
3779 | fast-glob: 3.3.1
3780 | ip: 1.1.8
3781 | nanodelay: 2.0.2
3782 | nanoevents: 8.0.0
3783 | nanoid: 4.0.2
3784 | node-fetch: 3.3.2
3785 | picocolors: 1.0.0
3786 | pino: 8.15.0
3787 | pino-abstract-transport: 1.0.0
3788 | semver: 7.5.4
3789 | strip-ansi: 7.1.0
3790 | url-pattern: 1.0.3
3791 | ws: 8.13.0
3792 | yyyy-mm-dd: 1.0.2
3793 | transitivePeerDependencies:
3794 | - bufferutil
3795 | - utf-8-validate
3796 | dev: false
3797 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - client
3 | - server
4 |
--------------------------------------------------------------------------------
/server/db.ts:
--------------------------------------------------------------------------------
1 | import { Task, User } from '../api/index.js'
2 |
3 | export type TaskRecord = {
4 | id: string
5 | textChangeTime: number
6 | completedChangeTime: number
7 | } & Task
8 |
9 | let users = [
10 | { id: '1', name: 'admin', password: 'admin' },
11 | { id: '2', name: 'user', password: 'user' }
12 | ]
13 | let tasks: TaskRecord[] = [
14 | {
15 | id: '1',
16 | text: 'Create logux example app',
17 | textChangeTime: 0,
18 | completed: false,
19 | completedChangeTime: 0,
20 | authorId: '1'
21 | }
22 | ]
23 | let userTasks: Record = { '1': ['1'], '2': [] }
24 |
25 | export function findUser(name: string): User | undefined {
26 | return users.find(it => it.name === name)
27 | }
28 |
29 | export function getUserTasks(userId: string): Promise {
30 | return Promise.resolve(tasks.filter(it => userTasks[userId].includes(it.id)))
31 | }
32 |
33 | export function findTask(taskId: string): Promise {
34 | return Promise.resolve(tasks.find(it => it.id === taskId))
35 | }
36 |
37 | export function createTask(
38 | userId: string,
39 | task: TaskRecord
40 | ): Promise {
41 | tasks.push(task)
42 | userTasks[userId].push(task.id)
43 | return Promise.resolve(task)
44 | }
45 |
46 | export function changeTask(
47 | taskId: string,
48 | patch: Partial>
49 | ): Promise {
50 | tasks = tasks.map(it => {
51 | if (it.id !== taskId) return it
52 | return { ...it, ...patch }
53 | })
54 | return Promise.resolve(tasks.find(it => it.id === taskId)!)
55 | }
56 |
57 | export function deleteTask(taskId: string): Promise {
58 | tasks = tasks.filter(it => it.id !== taskId)
59 |
60 | users.forEach(user => {
61 | userTasks[user.id].filter(id => id !== taskId)
62 | })
63 |
64 | return Promise.resolve()
65 | }
66 |
--------------------------------------------------------------------------------
/server/index.ts:
--------------------------------------------------------------------------------
1 | import { Server } from '@logux/server'
2 |
3 | import { subprotocol } from '../api/index.js'
4 |
5 | const server = new Server(
6 | Server.loadOptions(process, {
7 | subprotocol,
8 | supports: subprotocol,
9 | fileUrl: import.meta.url
10 | })
11 | )
12 |
13 | server
14 | .autoloadModules(
15 | process.env.NODE_ENV === 'production'
16 | ? 'modules/*.js'
17 | : ['modules/*.ts', '!modules/*.test.ts']
18 | )
19 | .then(() => {
20 | server.listen()
21 | })
22 |
--------------------------------------------------------------------------------
/server/modules/auth.ts:
--------------------------------------------------------------------------------
1 | import { BaseServer } from '@logux/server/base-server'
2 | import { IncomingMessage } from 'http'
3 |
4 | import { findUser } from '../db.js'
5 | import { User } from '../../api/index.js'
6 |
7 | const cookieSessionIdKey = 'sessionId'
8 | const activeSessions = new Map()
9 | let lastSessionId = 0
10 |
11 | async function signIn(req: IncomingMessage): Promise<[string, User] | null> {
12 | let data = ''
13 |
14 | req.on('data', chunk => {
15 | data += chunk
16 | })
17 |
18 | return new Promise(resolve => {
19 | req.on('end', () => {
20 | const parsed = JSON.parse(data)
21 |
22 | const user = findUser(parsed.name)
23 |
24 | if (user && user.password === parsed.password) {
25 | const sessionId = lastSessionId++
26 | activeSessions.set(sessionId.toString(), true)
27 | resolve([sessionId.toString(), user])
28 | return
29 | }
30 |
31 | resolve(null)
32 | })
33 | })
34 | }
35 |
36 | export default function applyAuth(server: BaseServer): void {
37 | server.http(async (req, res) => {
38 | if (req.url === '/auth') {
39 | if (req.method === 'POST') {
40 | const sessionData = await signIn(req)
41 |
42 | if (sessionData !== null) {
43 | res.setHeader(
44 | 'Set-Cookie',
45 | `${cookieSessionIdKey}=${sessionData[0]}; Path=/; HttpOnly;`
46 | )
47 |
48 | res.write(JSON.stringify({ id: sessionData[1].id }))
49 | res.end()
50 | } else {
51 | res.statusCode = 400
52 | res.end('Wrong user or password')
53 | }
54 | }
55 |
56 | if (req.method === 'DELETE') {
57 | // TODO move to cookie parsing library in separated PR
58 | const maybeSessionId = req.headers.cookie
59 | ?.split(';')
60 | ?.map(it => it.trim())
61 | ?.find(it => it.startsWith(cookieSessionIdKey))
62 | ?.split('=')?.[1]
63 |
64 | if (maybeSessionId) {
65 | activeSessions.delete(maybeSessionId)
66 | res.end()
67 | } else {
68 | res.statusCode = 404
69 | res.end('Session not found')
70 | }
71 | }
72 | }
73 | })
74 |
75 | server.auth(props => {
76 | return activeSessions.has(props.cookie[cookieSessionIdKey])
77 | })
78 | }
79 |
--------------------------------------------------------------------------------
/server/modules/tasks.ts:
--------------------------------------------------------------------------------
1 | import {
2 | addSyncMap,
3 | addSyncMapFilter,
4 | BaseServer,
5 | ChangedAt,
6 | NoConflictResolution
7 | } from '@logux/server'
8 | import { defineSyncMapActions, LoguxNotFoundError } from '@logux/actions'
9 |
10 | import {
11 | changeTask,
12 | createTask,
13 | deleteTask,
14 | findTask,
15 | getUserTasks
16 | } from '../db.js'
17 | import { Task } from '../../api/index.js'
18 |
19 | const modelName = 'tasks'
20 |
21 | const [createTaskActionType] = defineSyncMapActions(modelName)
22 |
23 | export default (server: BaseServer): void => {
24 | addSyncMap(server, modelName, {
25 | async access(ctx, id, action) {
26 | if (createTaskActionType.match(action)) {
27 | return ctx.userId === action.fields.authorId
28 | } else {
29 | const task = await findTask(id)
30 | return !!task && ctx.userId === task.authorId
31 | }
32 | },
33 |
34 | async load(ctx, id) {
35 | const task = await findTask(id)
36 |
37 | if (!task) throw new LoguxNotFoundError()
38 |
39 | return {
40 | id,
41 | text: ChangedAt(task.text, task.textChangeTime),
42 | completed: ChangedAt(task.completed, task.completedChangeTime),
43 | // Since authorId is not changing while todo's lifecycle, no need to use change time here
44 | authorId: NoConflictResolution(task.authorId)
45 | }
46 | },
47 |
48 | create(ctx, id, fields, time) {
49 | createTask(ctx.userId, {
50 | id,
51 | ...fields,
52 | textChangeTime: time,
53 | completedChangeTime: time
54 | })
55 | },
56 |
57 | async change(ctx, id, fields) {
58 | const task = await findTask(id)
59 |
60 | if (!task) throw new LoguxNotFoundError()
61 |
62 | await changeTask(id, fields)
63 | },
64 |
65 | async delete(ctx, id) {
66 | await deleteTask(id)
67 | }
68 | })
69 |
70 | addSyncMapFilter(server, modelName, {
71 | access(ctx, id, action) {
72 | return !!action.filter?.authorId && ctx.userId === action.filter.authorId
73 | },
74 |
75 | async initial(ctx) {
76 | const tasks = await getUserTasks(ctx.userId)
77 |
78 | return tasks.map(task => ({
79 | id: task.id,
80 | text: ChangedAt(task.text, task.textChangeTime),
81 | completed: ChangedAt(task.completed, task.completedChangeTime),
82 | // Since authorId is not changing while todo's lifecycle, no need to use change time here
83 | authorId: NoConflictResolution(task.authorId)
84 | }))
85 | },
86 |
87 | actions(filterCtx) {
88 | return (actionCtx, action) => {
89 | if ('fields' in action) {
90 | return action.fields.authorId === filterCtx.userId
91 | } else {
92 | return findTask(action.id).then(task => {
93 | return filterCtx.userId === task?.authorId
94 | })
95 | }
96 | }
97 | }
98 | })
99 | }
100 |
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "logux-to-do-example-server",
3 | "private": true,
4 | "type": "module",
5 | "engines": {
6 | "node": ">=16"
7 | },
8 | "scripts": {
9 | "start": "node --experimental-specifier-resolution=node --loader tsm ./index.ts"
10 | },
11 | "dependencies": {
12 | "@logux/actions": "^0.3.1",
13 | "@logux/core": "^0.8.4",
14 | "@logux/server": "github:logux/server#main"
15 | },
16 | "devDependencies": {
17 | "@types/node": "^18.17.2",
18 | "tsm": "^2.3.0"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": true,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx"
18 | },
19 | "include": ["./"],
20 | }
21 |
--------------------------------------------------------------------------------