Merge branch 'beautiful-profile-save' into 'dev'
Beautiful profile save See merge request discoursio/discoursio-webapp!14
This commit is contained in:
commit
6f90e4c10e
|
@ -12,12 +12,16 @@
|
|||
"selector-class-pattern": null,
|
||||
"no-descending-specificity": null,
|
||||
"scss/function-no-unknown": null,
|
||||
"scss/no-global-function-names": null,
|
||||
"function-url-quotes": null,
|
||||
"font-family-no-missing-generic-family-keyword": null,
|
||||
"order/order": [
|
||||
"custom-properties",
|
||||
"declarations"
|
||||
]
|
||||
],
|
||||
"scss/dollar-variable-pattern": ["^[a-z][a-zA-Z]+$", {
|
||||
"ignore": "global"
|
||||
}]
|
||||
},
|
||||
"defaultSeverity": "warning"
|
||||
}
|
||||
|
|
31
README.md
31
README.md
|
@ -1,8 +1,27 @@
|
|||
# How to start
|
||||
|
||||
If you use yarn
|
||||
|
||||
## How to start
|
||||
```
|
||||
yarn
|
||||
PUBLIC_API_URL=https://v2.discours.io yarn dev
|
||||
yarn install
|
||||
yarn start
|
||||
```
|
||||
with different backends
|
||||
```
|
||||
yarn run start:local
|
||||
yarn run start:production
|
||||
yarn run start:staging
|
||||
```
|
||||
|
||||
## Useful commands
|
||||
run checks
|
||||
```
|
||||
yarn run check
|
||||
```
|
||||
type checking with watch
|
||||
```
|
||||
yarn run typecheck:watch
|
||||
```
|
||||
## Code generation
|
||||
|
||||
generate new SolidJS context:
|
||||
```
|
||||
npx hygen context new NewContextName
|
||||
```
|
||||
|
|
27
_templates/context/new/hello.ejs.t
Normal file
27
_templates/context/new/hello.ejs.t
Normal file
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
to: src/context/<%= h.changeCase.camel(name) %>.tsx
|
||||
---
|
||||
import type { Accessor, JSX } from 'solid-js'
|
||||
import { createContext, createSignal, useContext } from 'solid-js'
|
||||
|
||||
type <%= h.changeCase.pascal(name) %>ContextType = {
|
||||
actions: {
|
||||
}
|
||||
}
|
||||
|
||||
const <%= h.changeCase.pascal(name) %>Context = createContext<<%= h.changeCase.pascal(name) %>ContextType>()
|
||||
|
||||
export function use<%= h.changeCase.pascal(name) %>() {
|
||||
return useContext(<%= h.changeCase.pascal(name) %>Context)
|
||||
}
|
||||
|
||||
export const <%= h.changeCase.pascal(name) %>Provider = (props: { children: JSX.Element }) => {
|
||||
const actions = {
|
||||
}
|
||||
|
||||
const value: <%= h.changeCase.pascal(name) %>ContextType = { actions }
|
||||
|
||||
return <<%= h.changeCase.pascal(name) %>Context.Provider value={value}>{props.children}</<%= h.changeCase.pascal(name) %>Context.Provider>
|
||||
}
|
||||
|
||||
|
5
_templates/generator/help/index.ejs.t
Normal file
5
_templates/generator/help/index.ejs.t
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
message: |
|
||||
hygen {bold generator new} --name [NAME] --action [ACTION]
|
||||
hygen {bold generator with-prompt} --name [NAME] --action [ACTION]
|
||||
---
|
18
_templates/generator/new/hello.ejs.t
Normal file
18
_templates/generator/new/hello.ejs.t
Normal file
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
to: _templates/<%= name %>/<%= action || 'new' %>/hello.ejs.t
|
||||
---
|
||||
---
|
||||
to: app/hello.js
|
||||
---
|
||||
const hello = ```
|
||||
Hello!
|
||||
This is your first hygen template.
|
||||
|
||||
Learn what it can do here:
|
||||
|
||||
https://github.com/jondot/hygen
|
||||
```
|
||||
|
||||
console.log(hello)
|
||||
|
||||
|
18
_templates/generator/with-prompt/hello.ejs.t
Normal file
18
_templates/generator/with-prompt/hello.ejs.t
Normal file
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
to: _templates/<%= name %>/<%= action || 'new' %>/hello.ejs.t
|
||||
---
|
||||
---
|
||||
to: app/hello.js
|
||||
---
|
||||
const hello = ```
|
||||
Hello!
|
||||
This is your first prompt based hygen template.
|
||||
|
||||
Learn what it can do here:
|
||||
|
||||
https://github.com/jondot/hygen
|
||||
```
|
||||
|
||||
console.log(hello)
|
||||
|
||||
|
14
_templates/generator/with-prompt/prompt.ejs.t
Normal file
14
_templates/generator/with-prompt/prompt.ejs.t
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
to: _templates/<%= name %>/<%= action || 'new' %>/prompt.js
|
||||
---
|
||||
|
||||
// see types of prompts:
|
||||
// https://github.com/enquirer/enquirer/tree/master/examples
|
||||
//
|
||||
module.exports = [
|
||||
{
|
||||
type: 'input',
|
||||
name: 'message',
|
||||
message: "What's your message?"
|
||||
}
|
||||
]
|
4
_templates/init/repo/new-repo.ejs.t
Normal file
4
_templates/init/repo/new-repo.ejs.t
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
setup: <%= name %>
|
||||
force: true # this is because mostly, people init into existing folders is safe
|
||||
---
|
|
@ -13,7 +13,7 @@ export default async (req, res) => {
|
|||
const client = mailgun.client(mgOptions)
|
||||
|
||||
try {
|
||||
const response = await client.lists.members.createMember(mgOptions.domain, {
|
||||
await client.lists.members.createMember(mgOptions.domain, {
|
||||
address: email,
|
||||
subscribed: true,
|
||||
upsert: 'yes'
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
import { defineConfig, AstroUserConfig } from 'astro/config'
|
||||
import vercel from '@astrojs/vercel/serverless'
|
||||
import solidJs from '@astrojs/solid-js'
|
||||
import type { CSSOptions } from 'vite'
|
||||
import defaultGenerateScopedName from 'postcss-modules/build/generateScopedName'
|
||||
import { isDev } from './src/utils/config'
|
||||
import { visualizer } from 'rollup-plugin-visualizer'
|
||||
// import { visualizer } from 'rollup-plugin-visualizer'
|
||||
|
||||
const PATH_PREFIX = '/src/'
|
||||
|
||||
|
@ -18,18 +17,6 @@ const getDevCssClassPrefix = (filename: string): string => {
|
|||
const devGenerateScopedName = (name: string, filename: string, css: string) =>
|
||||
getDevCssClassPrefix(filename) + '_' + defaultGenerateScopedName(name, filename, css)
|
||||
|
||||
const css: CSSOptions = {
|
||||
preprocessorOptions: {
|
||||
scss: {
|
||||
additionalData: '@import "src/styles/imports";\n'
|
||||
}
|
||||
},
|
||||
modules: {
|
||||
generateScopedName: isDev ? devGenerateScopedName : defaultGenerateScopedName,
|
||||
localsConvention: null
|
||||
}
|
||||
}
|
||||
|
||||
const astroConfig: AstroUserConfig = {
|
||||
site: 'https://new.discours.io',
|
||||
integrations: [solidJs()],
|
||||
|
@ -39,7 +26,7 @@ const astroConfig: AstroUserConfig = {
|
|||
build: {
|
||||
chunkSizeWarningLimit: 777,
|
||||
rollupOptions: {
|
||||
plugins: [visualizer()],
|
||||
// plugins: [visualizer()],
|
||||
output: {
|
||||
// eslint-disable-next-line sonarjs/cognitive-complexity
|
||||
/*
|
||||
|
@ -71,7 +58,17 @@ const astroConfig: AstroUserConfig = {
|
|||
external: []
|
||||
}
|
||||
},
|
||||
css
|
||||
css: {
|
||||
preprocessorOptions: {
|
||||
scss: {
|
||||
additionalData: '@import "src/styles/imports";\n'
|
||||
}
|
||||
},
|
||||
modules: {
|
||||
generateScopedName: isDev ? devGenerateScopedName : defaultGenerateScopedName,
|
||||
localsConvention: null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -92,6 +92,7 @@
|
|||
"graphql-ws": "^5.11.2",
|
||||
"hast-util-select": "^5.0.4",
|
||||
"husky": "^8.0.3",
|
||||
"hygen": "^6.2.11",
|
||||
"idb": "^7.1.1",
|
||||
"jest": "^29.3.1",
|
||||
"lint-staged": "^13.1.0",
|
||||
|
@ -125,6 +126,7 @@
|
|||
"rollup-plugin-visualizer": "^5.9.0",
|
||||
"sass": "1.32.13",
|
||||
"solid-js": "^1.6.9",
|
||||
"solid-transition-group": "^0.0.13",
|
||||
"sort-package-json": "^2.3.0",
|
||||
"stylelint": "^14.16.1",
|
||||
"stylelint-config-css-modules": "^4.1.0",
|
||||
|
|
|
@ -13,13 +13,14 @@
|
|||
}
|
||||
|
||||
.comment {
|
||||
&:before,
|
||||
&:after {
|
||||
&::before,
|
||||
&::after {
|
||||
content: '';
|
||||
left: 0;
|
||||
position: absolute;
|
||||
}
|
||||
&:before {
|
||||
|
||||
&::before {
|
||||
border-bottom: 2px solid #ccc;
|
||||
border-left: 2px solid #ccc;
|
||||
border-radius: 0 0 0 1.2rem;
|
||||
|
@ -27,20 +28,24 @@
|
|||
height: 2.4rem;
|
||||
width: 1.2rem;
|
||||
}
|
||||
&:after {
|
||||
|
||||
&::after {
|
||||
background: #ccc;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
width: 2px;
|
||||
}
|
||||
&:last-child:after {
|
||||
|
||||
&:last-child::after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.shout-body {
|
||||
@include font-size(1.5rem);
|
||||
|
||||
margin-bottom: 1em;
|
||||
|
||||
*:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
@ -76,7 +81,7 @@
|
|||
.commentControlEdit,
|
||||
.commentControlComplain {
|
||||
@include media-breakpoint-up(md) {
|
||||
//opacity: 0;
|
||||
// opacity: 0;
|
||||
transition: opacity 0.3s;
|
||||
}
|
||||
}
|
||||
|
@ -105,6 +110,7 @@
|
|||
&:hover {
|
||||
background: #000;
|
||||
color: #fff;
|
||||
|
||||
.icon {
|
||||
filter: invert(1);
|
||||
opacity: 1;
|
||||
|
@ -116,6 +122,7 @@
|
|||
margin-right: 0.3em;
|
||||
opacity: 0.6;
|
||||
transition: filter 0.3s, opacity 0.2s;
|
||||
|
||||
img {
|
||||
margin-bottom: -0.1em;
|
||||
}
|
||||
|
@ -166,7 +173,6 @@
|
|||
gap: 1rem;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
color: rgba(0, 0, 0, 0.3);
|
||||
font-size: 1.2rem;
|
||||
margin-bottom: 4px;
|
||||
color: rgb(0 0 0 / 30%);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { Show, createMemo, createSignal, onMount, For } from 'solid-js'
|
||||
import Comment from './Comment'
|
||||
import { Comment } from './Comment'
|
||||
import { t } from '../../utils/intl'
|
||||
import styles from '../../styles/Article.module.scss'
|
||||
import { createReaction, useReactionsStore } from '../../stores/zine/reactions'
|
||||
|
@ -14,7 +14,6 @@ import { ShowOnlyOnClient } from '../_shared/ShowOnlyOnClient'
|
|||
import Button from '../_shared/Button'
|
||||
|
||||
const ARTICLE_COMMENTS_PAGE_SIZE = 50
|
||||
const MAX_COMMENT_LEVEL = 6
|
||||
|
||||
type Props = {
|
||||
commentAuthors: Author[]
|
||||
|
@ -48,13 +47,7 @@ export const CommentsTree = (props: Props) => {
|
|||
setIsCommentsLoading(false)
|
||||
}
|
||||
}
|
||||
const getCommentById = (cid: number) => reactions().find((r: Reaction) => r.id === cid)
|
||||
const getCommentLevel = (c: Reaction, level = 0) => {
|
||||
if (c && c.replyTo && level < MAX_COMMENT_LEVEL) {
|
||||
return getCommentLevel(getCommentById(c.replyTo), level + 1)
|
||||
}
|
||||
return level
|
||||
}
|
||||
|
||||
onMount(async () => await loadMore())
|
||||
|
||||
const [submitted, setSubmitted] = createSignal<boolean>(false)
|
||||
|
|
|
@ -6,7 +6,7 @@ import { createMemo, For, Match, onMount, Show, Switch } from 'solid-js'
|
|||
import type { Author, Shout } from '../../graphql/types.gen'
|
||||
import { t } from '../../utils/intl'
|
||||
import MD from './MD'
|
||||
import { getShareUrl, SharePopup } from './SharePopup'
|
||||
import { SharePopup } from './SharePopup'
|
||||
import { getDescription } from '../../utils/meta'
|
||||
import stylesHeader from '../Nav/Header.module.scss'
|
||||
import styles from '../../styles/Article.module.scss'
|
||||
|
|
|
@ -201,6 +201,7 @@
|
|||
|
||||
.authorName {
|
||||
@include font-size(3.4rem);
|
||||
|
||||
font-weight: 500;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
@ -313,6 +314,7 @@
|
|||
|
||||
.authorName {
|
||||
@include font-size(1.2rem);
|
||||
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -39,8 +39,6 @@ export const AuthorCard = (props: AuthorCardProps) => {
|
|||
actions: { loadSession }
|
||||
} = useSession()
|
||||
|
||||
if (!props.author) return false // FIXME: с сервера должен приходить автор реакции (ApiClient.CreateReaction)
|
||||
|
||||
const [isSubscribing, setIsSubscribing] = createSignal(false)
|
||||
|
||||
const subscribed = createMemo<boolean>(() => {
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
.author-page {
|
||||
.view-switcher {
|
||||
@include font-size(1.5rem);
|
||||
|
||||
margin-top: 0;
|
||||
|
||||
button {
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-nocheck
|
||||
import { inputRules } from 'prosemirror-inputrules'
|
||||
import type { Mark, MarkType } from 'prosemirror-model'
|
||||
import type { EditorState, Transaction } from 'prosemirror-state'
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-nocheck
|
||||
import { Plugin, PluginKey, TextSelection, Transaction } from 'prosemirror-state'
|
||||
import type { EditorView } from 'prosemirror-view'
|
||||
import type { Mark, Node, Schema } from 'prosemirror-model'
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-nocheck
|
||||
import { Plugin } from 'prosemirror-state'
|
||||
import type { EditorView } from 'prosemirror-view'
|
||||
import type { ProseMirrorExtension } from '../helpers'
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-nocheck
|
||||
import { renderGrouped } from 'prosemirror-menu'
|
||||
import { EditorState, Plugin } from 'prosemirror-state'
|
||||
import styles from '../styles/ProseMirror.module.scss'
|
||||
|
|
|
@ -411,12 +411,13 @@
|
|||
}
|
||||
|
||||
.shoutCardDetails {
|
||||
@include font-size(1.5rem);
|
||||
|
||||
align-items: flex-start;
|
||||
border-top: 2px solid #141414;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
@include font-size(1.5rem);
|
||||
margin-top: 1em;
|
||||
padding: 1em 0 0;
|
||||
position: relative;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.feedArticlePopup {
|
||||
box-shadow: none !important;
|
||||
border: 1px solid rgb(0 0 0 / 0.15);
|
||||
border: 1px solid rgb(0 0 0 / 15%);
|
||||
border-radius: 1.6rem;
|
||||
padding: 1.6rem !important;
|
||||
|
||||
|
|
|
@ -7,12 +7,13 @@
|
|||
}
|
||||
|
||||
.counter {
|
||||
@include font-size(1.2rem);
|
||||
|
||||
align-items: center;
|
||||
align-self: flex-start;
|
||||
background: #f6f6f6;
|
||||
border-radius: 0.8rem;
|
||||
display: flex;
|
||||
@include font-size(1.2rem);
|
||||
font-weight: 500;
|
||||
padding: 0.2em 0.5em;
|
||||
}
|
||||
|
|
|
@ -73,6 +73,7 @@
|
|||
&.opened,
|
||||
&.opened:hover {
|
||||
background: #000;
|
||||
|
||||
.name,
|
||||
.message,
|
||||
.time {
|
||||
|
|
|
@ -51,10 +51,12 @@ $actionsWidth: 32px * 2;
|
|||
z-index: -1;
|
||||
transition: 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
&.popupVisible {
|
||||
position: relative;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
&.popupVisible,
|
||||
&:hover {
|
||||
.actions {
|
||||
|
@ -101,6 +103,7 @@ $actionsWidth: 32px * 2;
|
|||
right: unset;
|
||||
left: -$actionsWidth/2;
|
||||
flex-direction: row-reverse;
|
||||
|
||||
.reply {
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
|
|
|
@ -53,7 +53,6 @@
|
|||
.headerInner {
|
||||
align-items: center;
|
||||
background: #fff;
|
||||
border-bottom: 4px solid #000;
|
||||
flex-wrap: nowrap;
|
||||
justify-content: space-between;
|
||||
margin: 0;
|
||||
|
|
|
@ -4,15 +4,16 @@ import { Modal } from './Modal'
|
|||
import { AuthModal } from './AuthModal'
|
||||
import { t } from '../../utils/intl'
|
||||
import { useModalStore } from '../../stores/ui'
|
||||
import { router, Routes, useRouter } from '../../stores/router'
|
||||
import { router, useRouter } from '../../stores/router'
|
||||
import styles from './Header.module.scss'
|
||||
import { getPagePath } from '@nanostores/router'
|
||||
import { clsx } from 'clsx'
|
||||
import { HeaderAuth } from './HeaderAuth'
|
||||
import { getShareUrl, SharePopup } from '../Article/SharePopup'
|
||||
import { getDescription } from '../../utils/meta'
|
||||
import { Snackbar } from './Snackbar'
|
||||
|
||||
const resources: { name: string; route: keyof Routes }[] = [
|
||||
const resources: { name: string; route: 'home' | 'feed' | 'topics' }[] = [
|
||||
{ name: t('zine'), route: 'home' },
|
||||
{ name: t('feed'), route: 'feed' },
|
||||
{ name: t('topics'), route: 'topics' }
|
||||
|
@ -110,7 +111,7 @@ export const Header = (props: Props) => {
|
|||
<For each={resources}>
|
||||
{(r) => (
|
||||
<li classList={{ [styles.selected]: r.route === page().route }}>
|
||||
<a href={getPagePath(router, r.route, null)}>{r.name}</a>
|
||||
<a href={getPagePath(router, r.route)}>{r.name}</a>
|
||||
</li>
|
||||
)}
|
||||
</For>
|
||||
|
@ -153,6 +154,7 @@ export const Header = (props: Props) => {
|
|||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<Snackbar />
|
||||
</div>
|
||||
</header>
|
||||
)
|
||||
|
|
24
src/components/Nav/Snackbar.module.scss
Normal file
24
src/components/Nav/Snackbar.module.scss
Normal file
|
@ -0,0 +1,24 @@
|
|||
.snackbar {
|
||||
min-height: 4px;
|
||||
background-color: #141414;
|
||||
color: #fff;
|
||||
transition: background-color 0.3s;
|
||||
|
||||
&.error {
|
||||
background-color: #d00820;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
transition: height 0.3s, color 0.3s;
|
||||
height: 60px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
&.enter,
|
||||
&.exitTo {
|
||||
height: 0;
|
||||
color: transparent;
|
||||
}
|
||||
}
|
27
src/components/Nav/Snackbar.tsx
Normal file
27
src/components/Nav/Snackbar.tsx
Normal file
|
@ -0,0 +1,27 @@
|
|||
import { Show } from 'solid-js'
|
||||
import { useSnackbar } from '../../context/snackbar'
|
||||
import styles from './Snackbar.module.scss'
|
||||
import { Transition } from 'solid-transition-group'
|
||||
import { clsx } from 'clsx'
|
||||
|
||||
export const Snackbar = () => {
|
||||
const { snackbarMessage } = useSnackbar()
|
||||
|
||||
return (
|
||||
<div
|
||||
class={clsx(styles.snackbar, {
|
||||
[styles.error]: snackbarMessage()?.type === 'error'
|
||||
})}
|
||||
>
|
||||
<Transition
|
||||
enterClass={styles.enter}
|
||||
exitToClass={styles.exitTo}
|
||||
onExit={(el, done) => setTimeout(() => done(), 300)}
|
||||
>
|
||||
<Show when={snackbarMessage()}>
|
||||
<div class={styles.content}>{snackbarMessage().body}</div>
|
||||
</Show>
|
||||
</Transition>
|
||||
</div>
|
||||
)
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
import { createSignal, Show } from 'solid-js'
|
||||
import { PageWrap } from '../../_shared/PageWrap'
|
||||
import { Icon } from '../../_shared/Icon'
|
||||
import { showModal } from '../../../stores/ui'
|
||||
|
||||
// const title = t('Terms of use')
|
||||
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
import { PageWrap } from '../../_shared/PageWrap'
|
||||
import type { PageProps } from '../../types'
|
||||
import styles from './Settings.module.scss'
|
||||
import { Icon } from '../../_shared/Icon'
|
||||
import { clsx } from 'clsx'
|
||||
import ProfileSettingsNavigation from '../../Discours/ProfileSettingsNavigation'
|
||||
|
||||
export const ProfileSecurityPage = (props: PageProps) => {
|
||||
export const ProfileSecurityPage = () => {
|
||||
return (
|
||||
<PageWrap>
|
||||
<div class="wide-container">
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import { PageWrap } from '../../_shared/PageWrap'
|
||||
import { t } from '../../../utils/intl'
|
||||
import type { PageProps } from '../../types'
|
||||
import { Icon } from '../../_shared/Icon'
|
||||
import ProfileSettingsNavigation from '../../Discours/ProfileSettingsNavigation'
|
||||
import { For, createSignal, Show, onMount } from 'solid-js'
|
||||
|
@ -9,12 +8,36 @@ import styles from './Settings.module.scss'
|
|||
import { useProfileForm } from '../../../context/profile'
|
||||
import validateUrl from '../../../utils/validateUrl'
|
||||
import { createFileUploader, UploadFile } from '@solid-primitives/upload'
|
||||
import { Loading } from '../../Loading'
|
||||
import { useSession } from '../../../context/session'
|
||||
import Button from '../../_shared/Button'
|
||||
import { useSnackbar } from '../../../context/snackbar'
|
||||
|
||||
export const ProfileSettingsPage = (props: PageProps) => {
|
||||
const [addLinkForm, setAddLinkForm] = createSignal<boolean>(false)
|
||||
const [incorrectUrl, setIncorrectUrl] = createSignal<boolean>(false)
|
||||
const handleFileUpload = async (uploadFile: UploadFile) => {
|
||||
const formData = new FormData()
|
||||
formData.append('file', uploadFile.file, uploadFile.name)
|
||||
const response = await fetch('/api/upload', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
})
|
||||
return response.json()
|
||||
}
|
||||
|
||||
export const ProfileSettingsPage = () => {
|
||||
const [addLinkForm, setAddLinkForm] = createSignal(false)
|
||||
const [incorrectUrl, setIncorrectUrl] = createSignal(false)
|
||||
const [isSubmitting, setIsSubmitting] = createSignal(false)
|
||||
const [isUserpicUpdating, setIsUserpicUpdating] = createSignal(false)
|
||||
|
||||
const {
|
||||
actions: { showSnackbar }
|
||||
} = useSnackbar()
|
||||
|
||||
const {
|
||||
actions: { loadSession }
|
||||
} = useSession()
|
||||
const { form, updateFormField, submit, slugError } = useProfileForm()
|
||||
let updateForm: HTMLFormElement
|
||||
|
||||
const handleChangeSocial = (value: string) => {
|
||||
if (validateUrl(value)) {
|
||||
updateFormField('links', value)
|
||||
|
@ -23,28 +46,31 @@ export const ProfileSettingsPage = (props: PageProps) => {
|
|||
setIncorrectUrl(true)
|
||||
}
|
||||
}
|
||||
const handleSubmit = (event: Event): void => {
|
||||
|
||||
const handleSubmit = async (event: Event) => {
|
||||
event.preventDefault()
|
||||
submit(form)
|
||||
setIsSubmitting(true)
|
||||
|
||||
try {
|
||||
await submit(form)
|
||||
showSnackbar({ body: t('Profile successfully saved') })
|
||||
} catch {
|
||||
showSnackbar({ type: 'error', body: t('Error') })
|
||||
}
|
||||
|
||||
loadSession()
|
||||
setIsSubmitting(false)
|
||||
}
|
||||
|
||||
const { selectFiles } = createFileUploader({ multiple: false, accept: 'image/*' })
|
||||
|
||||
const handleFileUpload = async (uploadFile: UploadFile) => {
|
||||
const formData = new FormData()
|
||||
formData.append('file', uploadFile.file, uploadFile.name)
|
||||
const response = await fetch('/api/upload', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
})
|
||||
return response.json()
|
||||
}
|
||||
|
||||
const handleUserpicUpload = async () => {
|
||||
const handleAvatarClick = async () => {
|
||||
await selectFiles(async ([uploadFile]) => {
|
||||
try {
|
||||
setIsUserpicUpdating(true)
|
||||
const fileUrl = await handleFileUpload(uploadFile)
|
||||
updateFormField('userpic', fileUrl)
|
||||
setIsUserpicUpdating(false)
|
||||
} catch (error) {
|
||||
console.error('[upload avatar] error', error)
|
||||
}
|
||||
|
@ -68,13 +94,18 @@ export const ProfileSettingsPage = (props: PageProps) => {
|
|||
<div class="col-md-10 col-lg-9 col-xl-8">
|
||||
<h1>{t('Profile settings')}</h1>
|
||||
<p class="description">{t('Here you can customize your profile the way you want.')}</p>
|
||||
<form ref={updateForm} onSubmit={handleSubmit} enctype="multipart/form-data">
|
||||
<form onSubmit={handleSubmit} enctype="multipart/form-data">
|
||||
<h4>{t('Userpic')}</h4>
|
||||
<div class="pretty-form__item">
|
||||
<div class={styles.avatarContainer}>
|
||||
<button role="button" onClick={() => handleUserpicUpload()}>
|
||||
<img class={styles.avatar} src={form.userpic} alt={form.name} />
|
||||
</button>
|
||||
<Show when={!isUserpicUpdating()} fallback={<Loading />}>
|
||||
<img
|
||||
class={styles.avatar}
|
||||
src={form.userpic}
|
||||
alt={form.name}
|
||||
onClick={handleAvatarClick}
|
||||
/>
|
||||
</Show>
|
||||
</div>
|
||||
</div>
|
||||
<h4>{t('Name')}</h4>
|
||||
|
@ -187,13 +218,8 @@ export const ProfileSettingsPage = (props: PageProps) => {
|
|||
)}
|
||||
</For>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
<p>
|
||||
<button type="submit" class="button button--submit">
|
||||
{t('Save settings')}
|
||||
</button>
|
||||
</p>
|
||||
<Button type="submit" size="L" value={t('Save settings')} loading={isSubmitting()} />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
import { PageWrap } from '../../_shared/PageWrap'
|
||||
import type { PageProps } from '../../types'
|
||||
import styles from './Settings.module.scss'
|
||||
import stylesSettings from '../../../styles/FeedSettings.module.scss'
|
||||
import { clsx } from 'clsx'
|
||||
import ProfileSettingsNavigation from '../../Discours/ProfileSettingsNavigation'
|
||||
import { SearchField } from '../../_shared/SearchField'
|
||||
|
||||
export const ProfileSubscriptionsPage = (props: PageProps) => {
|
||||
export const ProfileSubscriptionsPage = () => {
|
||||
return (
|
||||
<PageWrap>
|
||||
<div class="wide-container">
|
||||
|
|
|
@ -21,16 +21,13 @@ h5 {
|
|||
width: 18rem;
|
||||
}
|
||||
|
||||
.avatar,
|
||||
.avatarInput {
|
||||
.avatar {
|
||||
height: 100%;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
cursor: pointer;
|
||||
background: #ccc;
|
||||
border: none;
|
||||
object-fit: cover;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import { MODALS, setLocale, showModal } from '../stores/ui'
|
||||
import { Component, createEffect, createMemo } from 'solid-js'
|
||||
import { Routes, useRouter } from '../stores/router'
|
||||
import { ROUTES, useRouter } from '../stores/router'
|
||||
import { Dynamic, isServer } from 'solid-js/web'
|
||||
|
||||
import type { PageProps, RootSearchParams } from './types'
|
||||
|
@ -35,12 +35,13 @@ import { SessionProvider } from '../context/session'
|
|||
import { ProfileSettingsPage } from './Pages/profile/ProfileSettingsPage'
|
||||
import { ProfileSecurityPage } from './Pages/profile/ProfileSecurityPage'
|
||||
import { ProfileSubscriptionsPage } from './Pages/profile/ProfileSubscriptionsPage'
|
||||
import CreateSettingsPage from './Pages/CreateSettingsPage'
|
||||
import { CreateSettingsPage } from './Pages/CreateSettingsPage'
|
||||
import { SnackbarProvider } from '../context/snackbar'
|
||||
|
||||
// TODO: lazy load
|
||||
// const SomePage = lazy(() => import('./Pages/SomePage'))
|
||||
|
||||
const pagesMap: Record<keyof Routes, Component<PageProps>> = {
|
||||
const pagesMap: Record<keyof typeof ROUTES, Component<PageProps>> = {
|
||||
inbox: InboxPage,
|
||||
expo: LayoutShoutsPage,
|
||||
connect: ConnectPage,
|
||||
|
@ -98,8 +99,10 @@ export const Root = (props: PageProps) => {
|
|||
}
|
||||
|
||||
return (
|
||||
<SessionProvider>
|
||||
<Dynamic component={pageComponent()} {...props} />
|
||||
</SessionProvider>
|
||||
<SnackbarProvider>
|
||||
<SessionProvider>
|
||||
<Dynamic component={pageComponent()} {...props} />
|
||||
</SessionProvider>
|
||||
</SnackbarProvider>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import type { Topic } from '../../graphql/types.gen'
|
|||
import { FollowingEntity } from '../../graphql/types.gen'
|
||||
import { t } from '../../utils/intl'
|
||||
import { follow, unfollow } from '../../stores/zine/common'
|
||||
import { getLogger } from '../../utils/logger'
|
||||
import { clsx } from 'clsx'
|
||||
import { useSession } from '../../context/session'
|
||||
import { ShowOnlyOnClient } from '../_shared/ShowOnlyOnClient'
|
||||
|
|
|
@ -11,7 +11,6 @@ import { translit } from '../../utils/ru2en'
|
|||
import styles from '../../styles/AllTopics.module.scss'
|
||||
import { SearchField } from '../_shared/SearchField'
|
||||
import { scrollHandler } from '../../utils/scroll'
|
||||
import { StatMetrics } from '../_shared/StatMetrics'
|
||||
|
||||
type AllAuthorsPageSearchParams = {
|
||||
by: '' | 'name' | 'shouts' | 'followers'
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
.ratingContainer {
|
||||
@include font-size(1.5rem);
|
||||
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.ratingControl {
|
||||
@include font-size(1.5rem);
|
||||
|
||||
display: inline-flex;
|
||||
margin-left: 1em;
|
||||
vertical-align: middle;
|
||||
|
@ -35,10 +37,11 @@
|
|||
}
|
||||
|
||||
.subscribersCounter {
|
||||
@include font-size(1rem);
|
||||
|
||||
background: #fff;
|
||||
border: 2px solid #000;
|
||||
border-radius: 100%;
|
||||
@include font-size(1rem);
|
||||
font-weight: bold;
|
||||
height: 32px;
|
||||
line-height: 30px;
|
||||
|
|
|
@ -6,8 +6,6 @@ import { AuthorFull } from '../Author/Full'
|
|||
import { t } from '../../utils/intl'
|
||||
import { useAuthorsStore } from '../../stores/zine/authors'
|
||||
import { loadShouts, useArticlesStore } from '../../stores/zine/articles'
|
||||
|
||||
import { useTopicsStore } from '../../stores/zine/topics'
|
||||
import { useRouter } from '../../stores/router'
|
||||
import { restoreScrollPosition, saveScrollPosition } from '../../utils/scroll'
|
||||
import { splitToPages } from '../../utils/splitToPages'
|
||||
|
@ -18,7 +16,6 @@ import { clsx } from 'clsx'
|
|||
import Userpic from '../Author/Userpic'
|
||||
import { Popup } from '../_shared/Popup'
|
||||
import { AuthorCard } from '../Author/Card'
|
||||
import { loadReactionsBy, REACTIONS_AMOUNT_PER_PAGE } from '../../stores/zine/reactions'
|
||||
import { apiClient } from '../../utils/apiClient'
|
||||
import { Comment } from '../Article/Comment'
|
||||
|
||||
|
@ -43,7 +40,6 @@ export const AuthorView = (props: AuthorProps) => {
|
|||
shouts: props.shouts
|
||||
})
|
||||
const { authorEntities } = useAuthorsStore({ authors: [props.author] })
|
||||
const { topicsByAuthor } = useTopicsStore()
|
||||
const [isLoadMoreButtonVisible, setIsLoadMoreButtonVisible] = createSignal(false)
|
||||
|
||||
const author = createMemo(() => authorEntities()[props.authorSlug])
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
.feedNavigation {
|
||||
@include font-size(1.5rem);
|
||||
|
||||
font-weight: 500;
|
||||
|
||||
h4 {
|
||||
|
@ -40,6 +41,7 @@
|
|||
.feedAside {
|
||||
h4 {
|
||||
@include font-size(2.2rem);
|
||||
|
||||
font-weight: bold;
|
||||
margin-bottom: 2.4rem;
|
||||
text-transform: lowercase;
|
||||
|
@ -69,7 +71,7 @@
|
|||
a {
|
||||
position: static;
|
||||
|
||||
&:before {
|
||||
&::before {
|
||||
content: '';
|
||||
height: 100%;
|
||||
left: 0;
|
||||
|
@ -88,6 +90,7 @@
|
|||
|
||||
ul {
|
||||
@include font-size(1.4rem);
|
||||
|
||||
font-weight: bold;
|
||||
margin: 1rem 0 0;
|
||||
line-height: 1.4;
|
||||
|
@ -106,6 +109,7 @@
|
|||
|
||||
.comment {
|
||||
@include font-size(1.5rem);
|
||||
|
||||
line-height: 1.4;
|
||||
margin-bottom: 2.4rem;
|
||||
|
||||
|
@ -126,6 +130,7 @@
|
|||
|
||||
.commentArticleTitle {
|
||||
@include font-size(1.2rem);
|
||||
|
||||
line-clamp: 1;
|
||||
-webkit-line-clamp: 1;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@ import { createEffect, createMemo, createSignal, For, onMount, Show } from 'soli
|
|||
import '../../styles/Feed.scss'
|
||||
import stylesBeside from '../../components/Feed/Beside.module.scss'
|
||||
import { Icon } from '../_shared/Icon'
|
||||
import { TopicCard } from '../Topic/Card'
|
||||
import { ArticleCard } from '../Feed/Card'
|
||||
import { AuthorCard } from '../Author/Card'
|
||||
import { t } from '../../utils/intl'
|
||||
|
@ -14,12 +13,9 @@ import { useAuthorsStore } from '../../stores/zine/authors'
|
|||
import { useTopicsStore } from '../../stores/zine/topics'
|
||||
import { useTopAuthorsStore } from '../../stores/zine/topAuthors'
|
||||
import { useSession } from '../../context/session'
|
||||
import stylesArticle from '../../styles/Article.module.scss'
|
||||
import stylesTopic from '../Feed/CardTopic.module.scss'
|
||||
import styles from './Feed.module.scss'
|
||||
import { clsx } from 'clsx'
|
||||
import Userpic from '../Author/Userpic'
|
||||
import type { Author } from '../../graphql/types.gen'
|
||||
|
||||
// const AUTHORSHIP_REACTIONS = [
|
||||
// ReactionKind.Accept,
|
||||
|
|
|
@ -22,12 +22,12 @@ type InboxSearchParams = {
|
|||
initChat: string
|
||||
chat: string
|
||||
}
|
||||
const userSearch = (array: Author[], keyword: string) => {
|
||||
const searchTerm = keyword.toLowerCase()
|
||||
return array.filter((value) => {
|
||||
return value.name.toLowerCase().match(new RegExp(searchTerm, 'g'))
|
||||
})
|
||||
}
|
||||
// const userSearch = (array: Author[], keyword: string) => {
|
||||
// const searchTerm = keyword.toLowerCase()
|
||||
// return array.filter((value) => {
|
||||
// return value.name.toLowerCase().match(new RegExp(searchTerm, 'g'))
|
||||
// })
|
||||
// }
|
||||
|
||||
export const InboxView = () => {
|
||||
const {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { blockTypeItem, icons, MenuItem, wrapItem } from 'prosemirror-menu'
|
||||
import { icons, MenuItem, wrapItem } from 'prosemirror-menu'
|
||||
import { toggleMark } from 'prosemirror-commands'
|
||||
|
||||
const markActive = (state, type) => {
|
||||
|
|
|
@ -12,7 +12,7 @@ export const schema = new Schema({
|
|||
paragraph: {
|
||||
content: 'inline*',
|
||||
group: 'block',
|
||||
toDOM: function toDOM(node) {
|
||||
toDOM: function toDOM() {
|
||||
return ['p', { class: 'paragraph' }, 0]
|
||||
}
|
||||
},
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.buttons {
|
||||
gap: 10px;
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
|
||||
&.bordered {
|
||||
@include font-size(1.6rem);
|
||||
|
||||
border: 2px solid #000;
|
||||
padding: 2.4rem;
|
||||
|
||||
|
@ -41,7 +42,8 @@
|
|||
|
||||
&.tiny {
|
||||
@include font-size(1.4rem);
|
||||
box-shadow: 0 4px 60px rgba(0, 0, 0, 0.1);
|
||||
|
||||
box-shadow: 0 4px 60px rgb(0 0 0 / 10%);
|
||||
padding: 1rem;
|
||||
|
||||
ul li {
|
||||
|
|
|
@ -2,7 +2,6 @@ import { createEffect, createSignal, JSX, Show } from 'solid-js'
|
|||
import styles from './Popup.module.scss'
|
||||
import { clsx } from 'clsx'
|
||||
import { useOutsideClickHandler } from '../../../utils/useOutsideClickHandler'
|
||||
import { set } from 'husky'
|
||||
|
||||
type HorizontalAnchor = 'center' | 'right'
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { Accessor, createMemo, JSX } from 'solid-js'
|
||||
import { createContext, createSignal, useContext } from 'solid-js'
|
||||
import type { Accessor, JSX } from 'solid-js'
|
||||
import { createContext, createSignal, useContext, createMemo } from 'solid-js'
|
||||
import { createChatClient } from '../graphql/privateGraphQLClient'
|
||||
import type { Chat, Message, MutationCreateMessageArgs } from '../graphql/types.gen'
|
||||
import { apiClient } from '../utils/apiClient'
|
||||
|
|
|
@ -13,16 +13,12 @@ const useProfileForm = () => {
|
|||
const [slugError, setSlugError] = createSignal<string>()
|
||||
|
||||
const submit = async (profile: ProfileInput) => {
|
||||
try {
|
||||
const response = await apiClient.updateProfile(profile)
|
||||
if (response.error) {
|
||||
setSlugError(response.error)
|
||||
return response.error
|
||||
}
|
||||
return response
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
const response = await apiClient.updateProfile(profile)
|
||||
if (response.error) {
|
||||
setSlugError(response.error)
|
||||
return response.error
|
||||
}
|
||||
return response
|
||||
}
|
||||
|
||||
const [form, setForm] = createStore<ProfileInput>({
|
||||
|
|
79
src/context/snackbar.tsx
Normal file
79
src/context/snackbar.tsx
Normal file
|
@ -0,0 +1,79 @@
|
|||
import type { Accessor, JSX } from 'solid-js'
|
||||
import { createContext, createSignal, useContext } from 'solid-js'
|
||||
import { delay } from '../utils/delay'
|
||||
|
||||
const DEFAULT_DURATION = 5000 // 5 sec
|
||||
|
||||
type SnackbarMessage = {
|
||||
type: 'success' | 'error'
|
||||
body: string | JSX.Element
|
||||
duration: number
|
||||
}
|
||||
|
||||
type SnackbarContextType = {
|
||||
snackbarMessage: Accessor<SnackbarMessage>
|
||||
actions: {
|
||||
showSnackbar: (message: {
|
||||
type?: SnackbarMessage['type']
|
||||
body: SnackbarMessage['body']
|
||||
duration?: SnackbarMessage['duration']
|
||||
}) => Promise<void>
|
||||
}
|
||||
}
|
||||
|
||||
const SnackbarContext = createContext<SnackbarContextType>()
|
||||
|
||||
export function useSnackbar() {
|
||||
return useContext(SnackbarContext)
|
||||
}
|
||||
|
||||
const messagesToShow: SnackbarMessage[] = []
|
||||
|
||||
let currentCheckMessagesPromise = null
|
||||
|
||||
export const SnackbarProvider = (props: { children: JSX.Element }) => {
|
||||
const [snackbarMessage, setSnackbarMessage] = createSignal<SnackbarMessage>(null)
|
||||
|
||||
const checkMessages = async () => {
|
||||
if (messagesToShow.length === 0) {
|
||||
currentCheckMessagesPromise = null
|
||||
return
|
||||
}
|
||||
|
||||
setSnackbarMessage(messagesToShow[0])
|
||||
await delay(messagesToShow[0].duration)
|
||||
setSnackbarMessage(null)
|
||||
await delay(1000)
|
||||
messagesToShow.shift()
|
||||
await checkMessages()
|
||||
}
|
||||
|
||||
const showSnackbar = async (message: {
|
||||
type?: SnackbarMessage['type']
|
||||
body: SnackbarMessage['body']
|
||||
duration?: SnackbarMessage['duration']
|
||||
}): Promise<void> => {
|
||||
const messageToShow = {
|
||||
type: message.type ?? 'success',
|
||||
body: message.body,
|
||||
duration: message.duration ?? DEFAULT_DURATION
|
||||
}
|
||||
|
||||
messagesToShow.push(messageToShow)
|
||||
|
||||
if (!currentCheckMessagesPromise) {
|
||||
currentCheckMessagesPromise = checkMessages()
|
||||
await currentCheckMessagesPromise
|
||||
}
|
||||
|
||||
return currentCheckMessagesPromise
|
||||
}
|
||||
|
||||
const actions = {
|
||||
showSnackbar
|
||||
}
|
||||
|
||||
const value: SnackbarContextType = { snackbarMessage, actions }
|
||||
|
||||
return <SnackbarContext.Provider value={value}>{props.children}</SnackbarContext.Provider>
|
||||
}
|
|
@ -225,9 +225,9 @@
|
|||
"My subscriptions": "Подписки",
|
||||
"Nothing here yet": "Здесь пока ничего нет",
|
||||
"Edited": "Отредактирован",
|
||||
"Nothing here yet": "Здесь пока ничего нет",
|
||||
"Invite experts": "Пригласить экспертов",
|
||||
"Subscribe to comments": "Подписаться на комментарии",
|
||||
"Add to bookmarks": "Добавить в закладки",
|
||||
"Get notifications": "Получать уведомления"
|
||||
"Get notifications": "Получать уведомления",
|
||||
"Profile successfully saved": "Профиль успешно сохранён"
|
||||
}
|
||||
|
|
|
@ -3,71 +3,40 @@ import { createRouter, createSearchParams } from '@nanostores/router'
|
|||
import { isServer } from 'solid-js/web'
|
||||
import { useStore } from '@nanostores/solid'
|
||||
|
||||
// TODO: more
|
||||
export interface Routes {
|
||||
home: void
|
||||
connect: void
|
||||
create: void
|
||||
createSettings: void
|
||||
topics: void
|
||||
topic: 'slug'
|
||||
authors: void
|
||||
author: 'slug'
|
||||
feed: void
|
||||
article: 'slug'
|
||||
search: 'q'
|
||||
dogma: void
|
||||
discussionRules: void
|
||||
guide: void
|
||||
help: void
|
||||
manifest: void
|
||||
partners: void
|
||||
principles: void
|
||||
projects: void
|
||||
termsOfUse: void
|
||||
thanks: void
|
||||
expo: 'layout'
|
||||
inbox: void // TODO: добавить ID текущего юзера
|
||||
profileSettings: void
|
||||
profileSecurity: void
|
||||
profileSubscriptions: void
|
||||
}
|
||||
export const ROUTES = {
|
||||
home: '/',
|
||||
inbox: '/inbox',
|
||||
connect: '/connect',
|
||||
create: '/create',
|
||||
createSettings: '/create/settings',
|
||||
topics: '/topics',
|
||||
topic: '/topic/:slug',
|
||||
authors: '/authors',
|
||||
author: '/author/:slug',
|
||||
feed: '/feed',
|
||||
search: '/search/:q?',
|
||||
article: '/:slug',
|
||||
dogma: '/about/dogma',
|
||||
discussionRules: '/about/discussion-rules',
|
||||
guide: '/about/guide',
|
||||
help: '/about/help',
|
||||
manifest: '/about/manifest',
|
||||
partners: '/about/partners',
|
||||
principles: '/about/principles',
|
||||
projects: '/about/projects',
|
||||
termsOfUse: '/about/terms-of-use',
|
||||
thanks: '/about/thanks',
|
||||
expo: '/expo/:layout',
|
||||
profileSettings: '/profile/settings',
|
||||
profileSecurity: '/profile/security',
|
||||
profileSubscriptions: '/profile/subscriptions'
|
||||
} as const
|
||||
|
||||
const searchParamsStore = createSearchParams()
|
||||
const routerStore = createRouter<Routes>(
|
||||
{
|
||||
home: '/',
|
||||
inbox: '/inbox',
|
||||
connect: '/connect',
|
||||
create: '/create',
|
||||
createSettings: '/create/settings',
|
||||
topics: '/topics',
|
||||
topic: '/topic/:slug',
|
||||
authors: '/authors',
|
||||
author: '/author/:slug',
|
||||
feed: '/feed',
|
||||
search: '/search/:q?',
|
||||
article: '/:slug',
|
||||
dogma: '/about/dogma',
|
||||
discussionRules: '/about/discussion-rules',
|
||||
guide: '/about/guide',
|
||||
help: '/about/help',
|
||||
manifest: '/about/manifest',
|
||||
partners: '/about/partners',
|
||||
principles: '/about/principles',
|
||||
projects: '/about/projects',
|
||||
termsOfUse: '/about/terms-of-use',
|
||||
thanks: '/about/thanks',
|
||||
expo: '/expo/:layout',
|
||||
profileSettings: '/profile/settings',
|
||||
profileSecurity: '/profile/security',
|
||||
profileSubscriptions: '/profile/subscriptions'
|
||||
},
|
||||
{
|
||||
search: false,
|
||||
links: false
|
||||
}
|
||||
)
|
||||
const routerStore = createRouter(ROUTES, {
|
||||
search: false,
|
||||
links: false
|
||||
})
|
||||
|
||||
export const router = routerStore
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import type { Reaction, ReactionInput } from '../../graphql/types.gen'
|
||||
import { apiClient } from '../../utils/apiClient'
|
||||
import { createEffect, createSignal } from 'solid-js'
|
||||
import { createSignal } from 'solid-js'
|
||||
// TODO: import { roomConnect } from '../../utils/p2p'
|
||||
|
||||
export const REACTIONS_AMOUNT_PER_PAGE = 100
|
||||
|
|
|
@ -56,9 +56,10 @@
|
|||
}
|
||||
|
||||
.feed-filter {
|
||||
@include font-size(1.7rem);
|
||||
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
@include font-size(1.7rem);
|
||||
font-weight: 500;
|
||||
list-style: none;
|
||||
margin: 0 0 1.6rem;
|
||||
|
|
|
@ -38,7 +38,7 @@ main {
|
|||
padding: 10px;
|
||||
height: calc(100% - 10px);
|
||||
|
||||
$fade-height: 10px;
|
||||
$fadeHeight: 10px;
|
||||
|
||||
.sidebarHeader {
|
||||
display: flex;
|
||||
|
@ -50,7 +50,7 @@ main {
|
|||
overflow: hidden;
|
||||
flex: 1;
|
||||
position: relative;
|
||||
padding: $fade-height 0;
|
||||
padding: $fadeHeight 0;
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
|
@ -59,17 +59,17 @@ main {
|
|||
width: 100%;
|
||||
right: 0;
|
||||
z-index: 1;
|
||||
height: $fade-height;
|
||||
height: $fadeHeight;
|
||||
}
|
||||
|
||||
&::before {
|
||||
top: 0;
|
||||
background: linear-gradient(white, transparent $fade-height);
|
||||
background: linear-gradient(white, transparent $fadeHeight);
|
||||
}
|
||||
|
||||
&::after {
|
||||
bottom: 0;
|
||||
background: linear-gradient(transparent, white $fade-height);
|
||||
background: linear-gradient(transparent, white $fadeHeight);
|
||||
}
|
||||
|
||||
.dialogs {
|
||||
|
@ -207,6 +207,7 @@ main {
|
|||
flex: 1;
|
||||
overflow: auto;
|
||||
position: relative;
|
||||
|
||||
.messagesContainer {
|
||||
left: 0;
|
||||
height: 100%;
|
||||
|
@ -216,6 +217,7 @@ main {
|
|||
width: 100%;
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
.conversation__date {
|
||||
position: relative;
|
||||
text-align: center;
|
||||
|
|
1
src/utils/delay.ts
Normal file
1
src/utils/delay.ts
Normal file
|
@ -0,0 +1 @@
|
|||
export const delay = async (ms: number): Promise<void> => new Promise((resolve) => setTimeout(resolve, ms))
|
474
yarn.lock
474
yarn.lock
|
@ -217,6 +217,14 @@
|
|||
"@aws-sdk/types" "3.226.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/abort-controller@^3.266.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.267.0.tgz#a9101d6ed54ebd58741cd83fb6aea0f9c187e3b0"
|
||||
integrity sha512-5R7OSnHFV/f+qQpMf1RuSQoVdXroK94Vl6naWjMOAhMyofHykVhEok9hmFPac86AVx8rVX/vuA7u9GKI6/EE7g==
|
||||
dependencies:
|
||||
"@aws-sdk/types" "3.267.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/chunked-blob-reader-native@3.208.0":
|
||||
version "3.208.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.208.0.tgz"
|
||||
|
@ -605,13 +613,13 @@
|
|||
dependencies:
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/lib-storage@^3.223.0":
|
||||
version "3.235.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.235.0.tgz"
|
||||
integrity sha512-+xQtPsToeA4RFiWmO+j5DbDsisPBwNb5k87z1NbrlsZkbj7ONTunX5F3qqe2bR+1o7Pb5O1REQrIQohT6QECaw==
|
||||
"@aws-sdk/lib-storage@^3.266.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.267.0.tgz#ba77c4eb559370ed0f29afac5f273fc9b69dc37f"
|
||||
integrity sha512-MljL0PavGZ3Yc1kkSjWIAzY6TWTWi7iuCpAi/DQKs0TyjSuX5vtxLmSVv1Wlx3ywrI8HDlo2xG7bvhjDQDN3gw==
|
||||
dependencies:
|
||||
"@aws-sdk/middleware-endpoint" "3.226.0"
|
||||
"@aws-sdk/smithy-client" "3.234.0"
|
||||
"@aws-sdk/middleware-endpoint" "3.267.0"
|
||||
"@aws-sdk/smithy-client" "3.267.0"
|
||||
buffer "5.6.0"
|
||||
events "3.3.0"
|
||||
stream-browserify "3.0.0"
|
||||
|
@ -661,6 +669,20 @@
|
|||
"@aws-sdk/util-middleware" "3.226.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/middleware-endpoint@3.267.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.267.0.tgz#2e5ca14e1a26220b9b77dddf0ddec0db8d79155d"
|
||||
integrity sha512-pGICM/qlQVfixtfKZt8zHq54KvLG2MmOAgNWj2MXB7oirPs/3rC9Kz9ITFXJgjlRFyfssgP/feKhs2yZkI8lhw==
|
||||
dependencies:
|
||||
"@aws-sdk/middleware-serde" "3.267.0"
|
||||
"@aws-sdk/protocol-http" "3.267.0"
|
||||
"@aws-sdk/signature-v4" "3.267.0"
|
||||
"@aws-sdk/types" "3.267.0"
|
||||
"@aws-sdk/url-parser" "3.267.0"
|
||||
"@aws-sdk/util-config-provider" "3.208.0"
|
||||
"@aws-sdk/util-middleware" "3.267.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/middleware-expect-continue@3.226.0":
|
||||
version "3.226.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.226.0.tgz"
|
||||
|
@ -759,6 +781,14 @@
|
|||
"@aws-sdk/types" "3.226.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/middleware-serde@3.267.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.267.0.tgz#b1ce247834ad9531e868189616b3adfb2d8af1b2"
|
||||
integrity sha512-9qspxiZs+JShukzKMAameBSubfvtUOGZviu9GT5OfRekY2dBbwWcfchP2WvlwxZ/CcC+GwO1HcPqKDCMGsNoow==
|
||||
dependencies:
|
||||
"@aws-sdk/types" "3.267.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/middleware-signing@3.226.0":
|
||||
version "3.226.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.226.0.tgz"
|
||||
|
@ -786,6 +816,13 @@
|
|||
dependencies:
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/middleware-stack@3.267.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.267.0.tgz#f16334b1f99e8714e1f4d98faa065f669aff7885"
|
||||
integrity sha512-52uH3JO3ceI15dgzt8gU7lpJf59qbRUQYJ7pAmTMiHtyEawZ39Puv6sGheY3fAffhqd/aQvup6wn18Q1fRIQUA==
|
||||
dependencies:
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/middleware-user-agent@3.226.0":
|
||||
version "3.226.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.226.0.tgz"
|
||||
|
@ -832,6 +869,14 @@
|
|||
"@aws-sdk/types" "3.226.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/protocol-http@3.267.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.267.0.tgz#12c2e0fbaa01f9658daedad8196fa52c74675394"
|
||||
integrity sha512-8HhOZXMCZ0nsJC/FoifX7YrTYGP91tCpSxIHkr7HxQcTdBMI7QakMtIIWK9Qjsy6tUI98aAdEo5PNCbzdpozmQ==
|
||||
dependencies:
|
||||
"@aws-sdk/types" "3.267.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/querystring-builder@3.226.0":
|
||||
version "3.226.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.226.0.tgz"
|
||||
|
@ -849,6 +894,14 @@
|
|||
"@aws-sdk/types" "3.226.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/querystring-parser@3.267.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.267.0.tgz#497758012c335aab08bbea1e5a7d5e6d61dec320"
|
||||
integrity sha512-Krq36GXqEfRfzJ9wOzkkzpbb4SWjgSYydTIgK6KtKapme0HPcB24kmmsjsUVuHzKuQMCHHDRWm+b47iBmHGpSQ==
|
||||
dependencies:
|
||||
"@aws-sdk/types" "3.267.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/service-error-classification@3.229.0":
|
||||
version "3.229.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.229.0.tgz"
|
||||
|
@ -885,6 +938,19 @@
|
|||
"@aws-sdk/util-uri-escape" "3.201.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/signature-v4@3.267.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.267.0.tgz#15812f48f487828353c1e33574cb789cedef659c"
|
||||
integrity sha512-Je1e7rum2zvxa3jWfwq4E+fyBdFJmSJAwGtWYz3+/rWipwXFlSAPeSVqtNjHdfzakgabvzLp7aesG4yQTrO2YQ==
|
||||
dependencies:
|
||||
"@aws-sdk/is-array-buffer" "3.201.0"
|
||||
"@aws-sdk/types" "3.267.0"
|
||||
"@aws-sdk/util-hex-encoding" "3.201.0"
|
||||
"@aws-sdk/util-middleware" "3.267.0"
|
||||
"@aws-sdk/util-uri-escape" "3.201.0"
|
||||
"@aws-sdk/util-utf8" "3.254.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/smithy-client@3.234.0":
|
||||
version "3.234.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz"
|
||||
|
@ -894,6 +960,15 @@
|
|||
"@aws-sdk/types" "3.226.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/smithy-client@3.267.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.267.0.tgz#a3148a49900e284c3c140a5b7514e20e6d4342ae"
|
||||
integrity sha512-WdgXHqKmFQIkAWETO/I5boX9u6QbMLC4X74OVSBaBLhRjqYmvolMFtNrQzvSKGB3FaxAN9Do41amC0mGoeLC8A==
|
||||
dependencies:
|
||||
"@aws-sdk/middleware-stack" "3.267.0"
|
||||
"@aws-sdk/types" "3.267.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/token-providers@3.235.0":
|
||||
version "3.235.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.235.0.tgz"
|
||||
|
@ -912,6 +987,13 @@
|
|||
dependencies:
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/types@3.267.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.267.0.tgz#fe543d1a1977c4e9e7ca6c32c837fcfd87b32441"
|
||||
integrity sha512-fICTbSeIfXlTHnciQgDt37R0kXoKxgh0a3prnLWVvTcmf7NFujdZmg5YTAZT3KJJ7SuKsIgnI8azBYioVY8BVQ==
|
||||
dependencies:
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/url-parser@3.226.0":
|
||||
version "3.226.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.226.0.tgz"
|
||||
|
@ -921,6 +1003,15 @@
|
|||
"@aws-sdk/types" "3.226.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/url-parser@3.267.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.267.0.tgz#c103fba8f2c1c4bed1c6fa85ef4fd27d3147f81d"
|
||||
integrity sha512-xoQ5Fd11moiE82QTL9GGE6e73SFuD0Wi73tA75TAwKuY12OP5vDJ4oBC86A1G2T+OzeHJQmYyqiA5j48CzqB6A==
|
||||
dependencies:
|
||||
"@aws-sdk/querystring-parser" "3.267.0"
|
||||
"@aws-sdk/types" "3.267.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/util-arn-parser@3.208.0":
|
||||
version "3.208.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.208.0.tgz"
|
||||
|
@ -1016,6 +1107,13 @@
|
|||
dependencies:
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/util-middleware@3.267.0":
|
||||
version "3.267.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.267.0.tgz#99a9c72b889e6d8cbd3ee6fa8c7a0190984945ce"
|
||||
integrity sha512-7nvqBZVz3RdwYv6lU958g6sWI2Qt8lzxDVn0uwfnPH+fAiX7Ln1Hen2A0XeW5cL5uYUJy6wNM5cyfTzFZosE0A==
|
||||
dependencies:
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/util-retry@3.229.0":
|
||||
version "3.229.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.229.0.tgz"
|
||||
|
@ -1086,6 +1184,14 @@
|
|||
"@aws-sdk/util-buffer-from" "3.208.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/util-utf8@3.254.0":
|
||||
version "3.254.0"
|
||||
resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.254.0.tgz#909af9c6549833a9a9bf77004b7484bfc96b2c35"
|
||||
integrity sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw==
|
||||
dependencies:
|
||||
"@aws-sdk/util-buffer-from" "3.208.0"
|
||||
tslib "^2.3.1"
|
||||
|
||||
"@aws-sdk/util-waiter@3.226.0":
|
||||
version "3.226.0"
|
||||
resolved "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.226.0.tgz"
|
||||
|
@ -1675,7 +1781,7 @@
|
|||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.18.9"
|
||||
|
||||
"@babel/runtime@^7.0.0", "@babel/runtime@^7.15.4":
|
||||
"@babel/runtime@^7.0.0":
|
||||
version "7.20.0"
|
||||
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.0.tgz"
|
||||
integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==
|
||||
|
@ -3183,11 +3289,6 @@
|
|||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/lodash@^4.14.175":
|
||||
version "4.14.186"
|
||||
resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz"
|
||||
integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==
|
||||
|
||||
"@types/mdast@^3.0.0":
|
||||
version "3.0.10"
|
||||
resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz"
|
||||
|
@ -3222,6 +3323,11 @@
|
|||
resolved "https://registry.npmjs.org/@types/node/-/node-18.11.17.tgz"
|
||||
integrity sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==
|
||||
|
||||
"@types/node@^17.0.19":
|
||||
version "17.0.45"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190"
|
||||
integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==
|
||||
|
||||
"@types/node@^18.11.18":
|
||||
version "18.11.18"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f"
|
||||
|
@ -3625,6 +3731,11 @@ ansi-align@^3.0.1:
|
|||
dependencies:
|
||||
string-width "^4.1.0"
|
||||
|
||||
ansi-colors@^4.1.1:
|
||||
version "4.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
|
||||
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
|
||||
|
||||
ansi-escapes@^4.2.1, ansi-escapes@^4.3.0:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz"
|
||||
|
@ -3895,6 +4006,11 @@ async-sema@^3.1.1:
|
|||
resolved "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz"
|
||||
integrity sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==
|
||||
|
||||
async@^3.2.3:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
|
||||
integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
|
||||
|
@ -4147,6 +4263,13 @@ brace-expansion@^1.1.7:
|
|||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
brace-expansion@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
|
||||
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
|
||||
braces@^3.0.2, braces@~3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
|
||||
|
@ -4230,6 +4353,14 @@ callsites@^3.0.0:
|
|||
resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
|
||||
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
|
||||
|
||||
camel-case@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
|
||||
integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==
|
||||
dependencies:
|
||||
no-case "^2.2.0"
|
||||
upper-case "^1.1.1"
|
||||
|
||||
camel-case@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz"
|
||||
|
@ -4296,7 +4427,7 @@ chalk@^2.0.0:
|
|||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^5.3.0"
|
||||
|
||||
chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
|
||||
chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
|
||||
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
|
||||
|
@ -4341,6 +4472,30 @@ change-case-all@1.0.15:
|
|||
upper-case "^2.0.2"
|
||||
upper-case-first "^2.0.2"
|
||||
|
||||
change-case@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.1.0.tgz#0e611b7edc9952df2e8513b27b42de72647dd17e"
|
||||
integrity sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==
|
||||
dependencies:
|
||||
camel-case "^3.0.0"
|
||||
constant-case "^2.0.0"
|
||||
dot-case "^2.1.0"
|
||||
header-case "^1.0.0"
|
||||
is-lower-case "^1.1.0"
|
||||
is-upper-case "^1.1.0"
|
||||
lower-case "^1.1.1"
|
||||
lower-case-first "^1.0.0"
|
||||
no-case "^2.3.2"
|
||||
param-case "^2.1.0"
|
||||
pascal-case "^2.0.0"
|
||||
path-case "^2.1.0"
|
||||
sentence-case "^2.1.0"
|
||||
snake-case "^2.1.0"
|
||||
swap-case "^1.1.0"
|
||||
title-case "^2.1.0"
|
||||
upper-case "^1.1.1"
|
||||
upper-case-first "^1.1.0"
|
||||
|
||||
change-case@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz"
|
||||
|
@ -4590,6 +4745,14 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0:
|
|||
resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
|
||||
integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
|
||||
|
||||
constant-case@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46"
|
||||
integrity sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==
|
||||
dependencies:
|
||||
snake-case "^2.1.0"
|
||||
upper-case "^1.1.1"
|
||||
|
||||
constant-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz"
|
||||
|
@ -4731,7 +4894,7 @@ debounce@^1.2.0:
|
|||
resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
|
||||
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
|
||||
|
||||
debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
|
||||
debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
|
||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||
|
@ -4828,6 +4991,11 @@ define-properties@^1.1.3, define-properties@^1.1.4:
|
|||
has-property-descriptors "^1.0.0"
|
||||
object-keys "^1.1.1"
|
||||
|
||||
degit@^2.8.4:
|
||||
version "2.8.4"
|
||||
resolved "https://registry.yarnpkg.com/degit/-/degit-2.8.4.tgz#3bb9c5c00f157c44724dd4a50724e4aa75a54d38"
|
||||
integrity sha512-vqYuzmSA5I50J882jd+AbAhQtgK6bdKUJIex1JNfEUPENCgYsxugzKVZlFyMwV4i06MmnV47/Iqi5Io86zf3Ng==
|
||||
|
||||
delayed-stream@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
|
||||
|
@ -4939,6 +5107,13 @@ dom7@^4.0.4:
|
|||
dependencies:
|
||||
ssr-window "^4.0.0"
|
||||
|
||||
dot-case@^2.1.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee"
|
||||
integrity sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==
|
||||
dependencies:
|
||||
no-case "^2.2.0"
|
||||
|
||||
dot-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz"
|
||||
|
@ -4969,6 +5144,13 @@ ecdsa-sig-formatter@1.0.11:
|
|||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
ejs@^3.1.6:
|
||||
version "3.1.8"
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b"
|
||||
integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==
|
||||
dependencies:
|
||||
jake "^10.8.5"
|
||||
|
||||
electron-to-chromium@^1.4.251:
|
||||
version "1.4.284"
|
||||
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz"
|
||||
|
@ -5005,6 +5187,13 @@ enhanced-resolve@^5.10.0:
|
|||
graceful-fs "^4.2.4"
|
||||
tapable "^2.2.0"
|
||||
|
||||
enquirer@^2.3.6:
|
||||
version "2.3.6"
|
||||
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
|
||||
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
|
||||
dependencies:
|
||||
ansi-colors "^4.1.1"
|
||||
|
||||
entities@~3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz"
|
||||
|
@ -5872,6 +6061,13 @@ file-uri-to-path@1.0.0:
|
|||
resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"
|
||||
integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
|
||||
|
||||
filelist@^1.0.1:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
|
||||
integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
|
||||
dependencies:
|
||||
minimatch "^5.0.1"
|
||||
|
||||
fill-range@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
|
||||
|
@ -5969,6 +6165,22 @@ formidable@^2.1.1:
|
|||
once "^1.4.0"
|
||||
qs "^6.11.0"
|
||||
|
||||
front-matter@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5"
|
||||
integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==
|
||||
dependencies:
|
||||
js-yaml "^3.13.1"
|
||||
|
||||
fs-extra@^10.0.0:
|
||||
version "10.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
|
||||
integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.0"
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
fs-minipass@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"
|
||||
|
@ -6196,7 +6408,7 @@ gopd@^1.0.1:
|
|||
dependencies:
|
||||
get-intrinsic "^1.1.3"
|
||||
|
||||
graceful-fs@^4.1.5, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
|
||||
graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
|
||||
version "4.2.10"
|
||||
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
|
||||
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
|
||||
|
@ -6465,6 +6677,14 @@ hastscript@^7.0.0:
|
|||
property-information "^6.0.0"
|
||||
space-separated-tokens "^2.0.0"
|
||||
|
||||
header-case@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d"
|
||||
integrity sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==
|
||||
dependencies:
|
||||
no-case "^2.2.0"
|
||||
upper-case "^1.1.3"
|
||||
|
||||
header-case@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz"
|
||||
|
@ -6547,6 +6767,26 @@ husky@^8.0.3:
|
|||
resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184"
|
||||
integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==
|
||||
|
||||
hygen@^6.2.11:
|
||||
version "6.2.11"
|
||||
resolved "https://registry.yarnpkg.com/hygen/-/hygen-6.2.11.tgz#c8fd1a5da6799783d6511f416048db02df1c2dda"
|
||||
integrity sha512-t6/zLI2XozP5gvV74nnl8LZSbwpVNFUkUs/O9DwuOdiiBbws5k4AQNVwKZ9FGzcKjdJ5EBBYkVzlcUHkLyY0FQ==
|
||||
dependencies:
|
||||
"@types/node" "^17.0.19"
|
||||
chalk "^4.1.2"
|
||||
change-case "^3.1.0"
|
||||
debug "^4.3.3"
|
||||
degit "^2.8.4"
|
||||
ejs "^3.1.6"
|
||||
enquirer "^2.3.6"
|
||||
execa "^5.0.0"
|
||||
front-matter "^4.0.2"
|
||||
fs-extra "^10.0.0"
|
||||
ignore-walk "^4.0.1"
|
||||
inflection "^1.12.0"
|
||||
ora "^5.0.0"
|
||||
yargs-parser "^21.0.0"
|
||||
|
||||
iconv-lite@^0.4.24:
|
||||
version "0.4.24"
|
||||
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
|
||||
|
@ -6574,6 +6814,13 @@ ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1:
|
|||
resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
|
||||
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
|
||||
|
||||
ignore-walk@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-4.0.1.tgz#fc840e8346cf88a3a9380c5b17933cd8f4d39fa3"
|
||||
integrity sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==
|
||||
dependencies:
|
||||
minimatch "^3.0.4"
|
||||
|
||||
ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.1:
|
||||
version "5.2.4"
|
||||
resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
|
||||
|
@ -6625,6 +6872,11 @@ indent-string@^4.0.0:
|
|||
resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz"
|
||||
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
|
||||
|
||||
inflection@^1.12.0:
|
||||
version "1.13.4"
|
||||
resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.13.4.tgz#65aa696c4e2da6225b148d7a154c449366633a32"
|
||||
integrity sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
|
||||
|
@ -6836,6 +7088,13 @@ is-interactive@^2.0.0:
|
|||
resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz"
|
||||
integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==
|
||||
|
||||
is-lower-case@^1.1.0:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393"
|
||||
integrity sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==
|
||||
dependencies:
|
||||
lower-case "^1.1.0"
|
||||
|
||||
is-lower-case@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz"
|
||||
|
@ -6964,6 +7223,13 @@ is-unicode-supported@^1.1.0:
|
|||
resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz"
|
||||
integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==
|
||||
|
||||
is-upper-case@^1.1.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f"
|
||||
integrity sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==
|
||||
dependencies:
|
||||
upper-case "^1.1.0"
|
||||
|
||||
is-upper-case@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz"
|
||||
|
@ -7073,6 +7339,16 @@ istanbul-reports@^3.1.3:
|
|||
html-escaper "^2.0.0"
|
||||
istanbul-lib-report "^3.0.0"
|
||||
|
||||
jake@^10.8.5:
|
||||
version "10.8.5"
|
||||
resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46"
|
||||
integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==
|
||||
dependencies:
|
||||
async "^3.2.3"
|
||||
chalk "^4.0.2"
|
||||
filelist "^1.0.1"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
jest-changed-files@^29.2.0:
|
||||
version "29.2.0"
|
||||
resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz"
|
||||
|
@ -7541,6 +7817,15 @@ jsonc-parser@^3.0.0:
|
|||
resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz"
|
||||
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
|
||||
|
||||
jsonfile@^6.0.1:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
|
||||
integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
|
||||
dependencies:
|
||||
universalify "^2.0.0"
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsonify@~0.0.0:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz"
|
||||
|
@ -7736,11 +8021,6 @@ locate-path@^6.0.0:
|
|||
dependencies:
|
||||
p-locate "^5.0.0"
|
||||
|
||||
lodash-es@^4.17.21:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz"
|
||||
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
|
||||
|
||||
lodash.camelcase@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz"
|
||||
|
@ -7817,6 +8097,13 @@ loose-envify@^1.0.0:
|
|||
dependencies:
|
||||
js-tokens "^3.0.0 || ^4.0.0"
|
||||
|
||||
lower-case-first@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1"
|
||||
integrity sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==
|
||||
dependencies:
|
||||
lower-case "^1.1.2"
|
||||
|
||||
lower-case-first@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz"
|
||||
|
@ -7824,6 +8111,11 @@ lower-case-first@^2.0.2:
|
|||
dependencies:
|
||||
tslib "^2.0.3"
|
||||
|
||||
lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
|
||||
integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==
|
||||
|
||||
lower-case@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz"
|
||||
|
@ -8430,6 +8722,13 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
|
|||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@^5.0.1:
|
||||
version "5.1.6"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
|
||||
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimist-options@4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz"
|
||||
|
@ -8484,11 +8783,6 @@ mute-stream@0.0.8:
|
|||
resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz"
|
||||
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
|
||||
|
||||
nanoclone@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz"
|
||||
integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==
|
||||
|
||||
nanoid@^3.3.4:
|
||||
version "3.3.4"
|
||||
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz"
|
||||
|
@ -8521,6 +8815,13 @@ nlcst-to-string@^3.0.0:
|
|||
dependencies:
|
||||
"@types/nlcst" "^1.0.0"
|
||||
|
||||
no-case@^2.2.0, no-case@^2.3.2:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
|
||||
integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
|
||||
dependencies:
|
||||
lower-case "^1.1.1"
|
||||
|
||||
no-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz"
|
||||
|
@ -8738,7 +9039,7 @@ optionator@^0.9.1:
|
|||
type-check "^0.4.0"
|
||||
word-wrap "^1.2.3"
|
||||
|
||||
ora@^5.4.1:
|
||||
ora@^5.0.0, ora@^5.4.1:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz"
|
||||
integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
|
||||
|
@ -8818,6 +9119,13 @@ p-try@^2.0.0:
|
|||
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
|
||||
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
||||
|
||||
param-case@^2.1.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
|
||||
integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==
|
||||
dependencies:
|
||||
no-case "^2.2.0"
|
||||
|
||||
param-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz"
|
||||
|
@ -8866,6 +9174,14 @@ parse5@^6.0.0:
|
|||
resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz"
|
||||
integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
|
||||
|
||||
pascal-case@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e"
|
||||
integrity sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==
|
||||
dependencies:
|
||||
camel-case "^3.0.0"
|
||||
upper-case-first "^1.1.0"
|
||||
|
||||
pascal-case@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz"
|
||||
|
@ -8874,6 +9190,13 @@ pascal-case@^3.1.2:
|
|||
no-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
path-case@^2.1.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5"
|
||||
integrity sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==
|
||||
dependencies:
|
||||
no-case "^2.2.0"
|
||||
|
||||
path-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz"
|
||||
|
@ -9156,11 +9479,6 @@ prompts@^2.0.1, prompts@^2.4.2:
|
|||
kleur "^3.0.3"
|
||||
sisteransi "^1.0.5"
|
||||
|
||||
property-expr@^2.0.4:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz"
|
||||
integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==
|
||||
|
||||
property-information@^6.0.0:
|
||||
version "6.1.1"
|
||||
resolved "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz"
|
||||
|
@ -9842,6 +10160,14 @@ semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8:
|
|||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
sentence-case@^2.1.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4"
|
||||
integrity sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==
|
||||
dependencies:
|
||||
no-case "^2.2.0"
|
||||
upper-case-first "^1.1.2"
|
||||
|
||||
sentence-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz"
|
||||
|
@ -9970,6 +10296,13 @@ slice-ansi@^5.0.0:
|
|||
ansi-styles "^6.0.0"
|
||||
is-fullwidth-code-point "^4.0.0"
|
||||
|
||||
snake-case@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f"
|
||||
integrity sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==
|
||||
dependencies:
|
||||
no-case "^2.2.0"
|
||||
|
||||
snake-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz"
|
||||
|
@ -9978,21 +10311,6 @@ snake-case@^3.0.4:
|
|||
dot-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
solid-js-form@^0.1.8:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.yarnpkg.com/solid-js-form/-/solid-js-form-0.1.8.tgz#cc50bb7f782fa6f91651a1885b799432b03d6b3b"
|
||||
integrity sha512-kOKZ5et9t1T8P8GAi4FIyuoGO2Y14YnTyKT7kla3wbtcDeWb4dqvxSqmNHRx8r9ZxTN/hpl3WxmwtOBOPalSaA==
|
||||
dependencies:
|
||||
solid-js "^1.1.2"
|
||||
yup "^0.32.9"
|
||||
|
||||
solid-js@^1.1.2:
|
||||
version "1.6.6"
|
||||
resolved "https://registry.npmjs.org/solid-js/-/solid-js-1.6.6.tgz"
|
||||
integrity sha512-5x33mEbPI8QLuywvFjQP4krjWDr8xiYFgZx9KCBH7b0ZzypQCHaUubob7bK6i+1u6nhaAqhWtvXS587Kb8DShA==
|
||||
dependencies:
|
||||
csstype "^3.1.0"
|
||||
|
||||
solid-js@^1.6.9:
|
||||
version "1.6.10"
|
||||
resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.6.10.tgz#fbd8e0a4adfe7b38da1885170369ede6a1cc7379"
|
||||
|
@ -10000,15 +10318,10 @@ solid-js@^1.6.9:
|
|||
dependencies:
|
||||
csstype "^3.1.0"
|
||||
|
||||
solid-jsx@^0.9.1:
|
||||
version "0.9.1"
|
||||
resolved "https://registry.npmjs.org/solid-jsx/-/solid-jsx-0.9.1.tgz"
|
||||
integrity sha512-HHTx58rx3tqg5LMGuQnaE1vqZjpl+RMP0jYQnBkTY0xKIASVNSLZJCZoPFrpKH8wWWYyTLHdepgzs8u/e6yz5Q==
|
||||
|
||||
solid-utils@^0.8.1:
|
||||
version "0.8.1"
|
||||
resolved "https://registry.npmjs.org/solid-utils/-/solid-utils-0.8.1.tgz"
|
||||
integrity sha512-LLeO7Hr99OLFY+Zfx8U7Hw5VZOaFT8qWoLWGfnq3kDmo7KAGdIoq44ijy7mdYj88e+2cWPdkyhItsS3FGjeS6g==
|
||||
solid-transition-group@^0.0.13:
|
||||
version "0.0.13"
|
||||
resolved "https://registry.yarnpkg.com/solid-transition-group/-/solid-transition-group-0.0.13.tgz#1a476d3798759be106ad1062cc071db139b0d564"
|
||||
integrity sha512-VA1V0ip4dsNOQJ/dCluCiAPBUuHspYFm4WYG91jpNmcP4rC4DY1S1EGds44JjiUAP7qEoEZdMhPaiS6lqTF7AA==
|
||||
|
||||
sort-object-keys@^1.1.3:
|
||||
version "1.1.3"
|
||||
|
@ -10461,6 +10774,14 @@ svg-tags@^1.0.0:
|
|||
resolved "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz"
|
||||
integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
|
||||
|
||||
swap-case@^1.1.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3"
|
||||
integrity sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==
|
||||
dependencies:
|
||||
lower-case "^1.1.1"
|
||||
upper-case "^1.1.1"
|
||||
|
||||
swap-case@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz"
|
||||
|
@ -10539,6 +10860,14 @@ tiny-glob@^0.2.9:
|
|||
globalyzer "0.1.0"
|
||||
globrex "^0.1.2"
|
||||
|
||||
title-case@^2.1.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa"
|
||||
integrity sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==
|
||||
dependencies:
|
||||
no-case "^2.2.0"
|
||||
upper-case "^1.0.3"
|
||||
|
||||
title-case@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz"
|
||||
|
@ -10570,11 +10899,6 @@ to-regex-range@^5.0.1:
|
|||
dependencies:
|
||||
is-number "^7.0.0"
|
||||
|
||||
toposort@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz"
|
||||
integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==
|
||||
|
||||
tr46@~0.0.3:
|
||||
version "0.0.3"
|
||||
resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz"
|
||||
|
@ -10851,6 +11175,11 @@ unist-util-visit@^4.0.0, unist-util-visit@^4.1.0:
|
|||
unist-util-is "^5.0.0"
|
||||
unist-util-visit-parents "^5.1.1"
|
||||
|
||||
universalify@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
|
||||
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
|
||||
|
||||
unixify@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz"
|
||||
|
@ -10866,6 +11195,13 @@ update-browserslist-db@^1.0.9:
|
|||
escalade "^3.1.1"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
upper-case-first@^1.1.0, upper-case-first@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115"
|
||||
integrity sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==
|
||||
dependencies:
|
||||
upper-case "^1.1.1"
|
||||
|
||||
upper-case-first@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz"
|
||||
|
@ -10873,6 +11209,11 @@ upper-case-first@^2.0.2:
|
|||
dependencies:
|
||||
tslib "^2.0.3"
|
||||
|
||||
upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
|
||||
integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==
|
||||
|
||||
upper-case@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz"
|
||||
|
@ -11437,19 +11778,6 @@ yocto-queue@^0.1.0:
|
|||
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
|
||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||
|
||||
yup@^0.32.9:
|
||||
version "0.32.11"
|
||||
resolved "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz"
|
||||
integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.15.4"
|
||||
"@types/lodash" "^4.14.175"
|
||||
lodash "^4.17.21"
|
||||
lodash-es "^4.17.21"
|
||||
nanoclone "^0.2.1"
|
||||
property-expr "^2.0.4"
|
||||
toposort "^2.0.2"
|
||||
|
||||
zod@^3.17.3:
|
||||
version "3.19.1"
|
||||
resolved "https://registry.npmjs.org/zod/-/zod-3.19.1.tgz"
|
||||
|
|
Loading…
Reference in New Issue
Block a user