Compare commits
No commits in common. "a26fc8fb6ef14e253df5609366bedb61358a4b1f" and "9b5500305f8f4b43bdf1129c7be12c4870190fd8" have entirely different histories.
a26fc8fb6e
...
9b5500305f
@ -17,7 +17,6 @@
|
|||||||
"autoprefixer": "^10.4.17",
|
"autoprefixer": "^10.4.17",
|
||||||
"daisyui": "^4.6.0",
|
"daisyui": "^4.6.0",
|
||||||
"postcss": "^8.4.33",
|
"postcss": "^8.4.33",
|
||||||
"solid-devtools": "^0.29.3",
|
|
||||||
"tailwindcss": "^3.4.1",
|
"tailwindcss": "^3.4.1",
|
||||||
"typescript": "^5.2.2",
|
"typescript": "^5.2.2",
|
||||||
"vite": "^5.0.8",
|
"vite": "^5.0.8",
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
import "solid-devtools";
|
|
||||||
|
|
||||||
/* @refresh reload */
|
/* @refresh reload */
|
||||||
import { render } from "solid-js/web";
|
import { render } from "solid-js/web";
|
||||||
|
|
||||||
@ -8,16 +6,14 @@ import "./assets/fonts/fonts.css";
|
|||||||
import { Route, Router } from "@solidjs/router";
|
import { Route, Router } from "@solidjs/router";
|
||||||
|
|
||||||
import RootLayout from "./layouts/RootLayout.tsx";
|
import RootLayout from "./layouts/RootLayout.tsx";
|
||||||
import DashboardPage from "./pages/dashboard.tsx";
|
import Dashboard from "./pages/dashboard.tsx";
|
||||||
import LoginPage from "./pages/auth/login.tsx";
|
import Login from "./pages/auth/login.tsx";
|
||||||
import RegisterPage from "./pages/auth/register.tsx";
|
|
||||||
|
|
||||||
const root = document.getElementById("root");
|
const root = document.getElementById("root");
|
||||||
|
|
||||||
render(() => (
|
render(() => (
|
||||||
<Router root={RootLayout}>
|
<Router root={RootLayout}>
|
||||||
<Route path="/" component={DashboardPage} />
|
<Route path="/" component={Dashboard} />
|
||||||
<Route path="/auth/login" component={LoginPage} />
|
<Route path="/auth/login" component={Login} />
|
||||||
<Route path="/auth/register" component={RegisterPage} />
|
|
||||||
</Router>
|
</Router>
|
||||||
), root!);
|
), root!);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import Navbar from "./shared/Navbar.tsx";
|
import Navbar from "./shared/Navbar.tsx";
|
||||||
import { readProfiles, UserinfoProvider } from "../stores/userinfo.tsx";
|
import { readProfiles } from "../stores/userinfo.ts";
|
||||||
import { createSignal, Show } from "solid-js";
|
import { createSignal, Show } from "solid-js";
|
||||||
|
|
||||||
export default function RootLayout(props: any) {
|
export default function RootLayout(props: any) {
|
||||||
@ -15,11 +15,11 @@ export default function RootLayout(props: any) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}>
|
}>
|
||||||
<UserinfoProvider>
|
<div>
|
||||||
<Navbar />
|
<Navbar />
|
||||||
|
|
||||||
<main class="h-[calc(100vh-68px)]">{props.children}</main>
|
<main class="h-[calc(100vh-68px)]">{props.children}</main>
|
||||||
</UserinfoProvider>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
);
|
);
|
||||||
}
|
}
|
@ -1,6 +1,5 @@
|
|||||||
import { For, Match, Switch } from "solid-js";
|
import { For, Show } from "solid-js";
|
||||||
import { clearUserinfo, useUserinfo } from "../../stores/userinfo.tsx";
|
import { userinfo } from "../../stores/userinfo.ts";
|
||||||
import { useNavigate } from "@solidjs/router";
|
|
||||||
|
|
||||||
interface MenuItem {
|
interface MenuItem {
|
||||||
label: string;
|
label: string;
|
||||||
@ -10,14 +9,6 @@ interface MenuItem {
|
|||||||
export default function Navbar() {
|
export default function Navbar() {
|
||||||
const nav: MenuItem[] = [{ label: "Dashboard", href: "/" }];
|
const nav: MenuItem[] = [{ label: "Dashboard", href: "/" }];
|
||||||
|
|
||||||
const userinfo = useUserinfo();
|
|
||||||
const navigate = useNavigate();
|
|
||||||
|
|
||||||
function logout() {
|
|
||||||
clearUserinfo();
|
|
||||||
navigate("/auth/login");
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class="navbar bg-base-100 shadow-md px-5">
|
<div class="navbar bg-base-100 shadow-md px-5">
|
||||||
<div class="navbar-start">
|
<div class="navbar-start">
|
||||||
@ -67,14 +58,9 @@ export default function Navbar() {
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="navbar-end pe-5">
|
<div class="navbar-end pe-5">
|
||||||
<Switch>
|
<Show when={!userinfo.isLoggedIn}>
|
||||||
<Match when={userinfo?.isLoggedIn}>
|
<a href="/auth/login" class="btn btn-sm btn-primary">Login</a>
|
||||||
<button type="button" class="btn btn-sm btn-ghost" onClick={() => logout()}>Logout</button>
|
</Show>
|
||||||
</Match>
|
|
||||||
<Match when={!userinfo?.isLoggedIn}>
|
|
||||||
<a href="/auth/login" class="btn btn-sm btn-primary">Login</a>
|
|
||||||
</Match>
|
|
||||||
</Switch>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import { readProfiles } from "../../stores/userinfo.tsx";
|
import { readProfiles } from "../../stores/userinfo.ts";
|
||||||
import { useNavigate } from "@solidjs/router";
|
import { useNavigate } from "@solidjs/router";
|
||||||
import { createSignal, For, Match, Show, Switch } from "solid-js";
|
import { createSignal, For, Match, Show, Switch } from "solid-js";
|
||||||
import Cookie from "universal-cookie";
|
import Cookie from "universal-cookie";
|
||||||
|
|
||||||
export default function LoginPage() {
|
export default function Login() {
|
||||||
const [title, setTitle] = createSignal("Sign in");
|
const [title, setTitle] = createSignal("Sign in");
|
||||||
const [subtitle, setSubtitle] = createSignal("Via your Goatpass account");
|
const [subtitle, setSubtitle] = createSignal("Via your Goatpass account");
|
||||||
|
|
||||||
@ -131,78 +131,72 @@ export default function LoginPage() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div class="w-full h-full flex justify-center items-center">
|
<div class="w-full h-full flex justify-center items-center">
|
||||||
<div>
|
<div class="card w-[480px] max-w-screen shadow-xl">
|
||||||
<div class="card w-[480px] max-w-screen shadow-xl">
|
<div class="card-body">
|
||||||
<div class="card-body">
|
<div id="header" class="text-center mb-5">
|
||||||
<div id="header" class="text-center mb-5">
|
<h1 class="text-xl font-bold">{title()}</h1>
|
||||||
<h1 class="text-xl font-bold">{title()}</h1>
|
<p>{subtitle()}</p>
|
||||||
<p>{subtitle()}</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Show when={error()}>
|
|
||||||
<div id="alerts" class="mt-1">
|
|
||||||
<div role="alert" class="alert alert-error">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="stroke-current shrink-0 h-6 w-6" fill="none"
|
|
||||||
viewBox="0 0 24 24">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
||||||
d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
||||||
</svg>
|
|
||||||
<span class="capitalize">{error()}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Show>
|
|
||||||
|
|
||||||
<form id="form" onSubmit={(e) => handlers[stage()](e)}>
|
|
||||||
<Switch>
|
|
||||||
<Match when={stage() === "starting"}>
|
|
||||||
<label class="form-control w-full">
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text">Account ID</span>
|
|
||||||
</div>
|
|
||||||
<input name="id" type="text" placeholder="Type here" class="input input-bordered w-full" />
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text-alt">Your username, email or phone number.</span>
|
|
||||||
</div>
|
|
||||||
</label>
|
|
||||||
</Match>
|
|
||||||
<Match when={stage() === "choosing"}>
|
|
||||||
<div class="join join-vertical w-full">
|
|
||||||
<For each={factors()}>
|
|
||||||
{item =>
|
|
||||||
<input class="join-item btn" type="radio" name="factor"
|
|
||||||
value={item.id}
|
|
||||||
aria-label={getFactorName(item)}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
</For>
|
|
||||||
</div>
|
|
||||||
<p class="text-center text-sm mt-2">Choose a way to verify that's you</p>
|
|
||||||
</Match>
|
|
||||||
<Match when={stage() === "verifying"}>
|
|
||||||
<label class="form-control w-full">
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text">Credentials</span>
|
|
||||||
</div>
|
|
||||||
<input name="credentials" type="password" placeholder="Type here"
|
|
||||||
class="input input-bordered w-full" />
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text-alt">Password or one time password.</span>
|
|
||||||
</div>
|
|
||||||
</label>
|
|
||||||
</Match>
|
|
||||||
</Switch>
|
|
||||||
|
|
||||||
<button type="submit" class="btn btn-primary btn-block mt-3" disabled={loading()}>
|
|
||||||
<Show when={loading()} fallback={"Next"}>
|
|
||||||
<span class="loading loading-spinner"></span>
|
|
||||||
</Show>
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="text-sm text-center mt-3">
|
<Show when={error()}>
|
||||||
<a href="/auth/register" class="link">Haven't an account? Click here to create one!</a>
|
<div id="alerts" class="mt-1">
|
||||||
|
<div role="alert" class="alert alert-error">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" class="stroke-current shrink-0 h-6 w-6" fill="none"
|
||||||
|
viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||||
|
</svg>
|
||||||
|
<span class="capitalize">{error()}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Show>
|
||||||
|
|
||||||
|
<form id="form" onSubmit={(e) => handlers[stage()](e)}>
|
||||||
|
<Switch>
|
||||||
|
<Match when={stage() === "starting"}>
|
||||||
|
<label class="form-control w-full">
|
||||||
|
<div class="label">
|
||||||
|
<span class="label-text">Account ID</span>
|
||||||
|
</div>
|
||||||
|
<input name="id" type="text" placeholder="Type here" class="input input-bordered w-full" />
|
||||||
|
<div class="label">
|
||||||
|
<span class="label-text-alt">Your username, email or phone number.</span>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</Match>
|
||||||
|
<Match when={stage() === "choosing"}>
|
||||||
|
<div class="join join-vertical w-full">
|
||||||
|
<For each={factors()}>
|
||||||
|
{item =>
|
||||||
|
<input class="join-item btn" type="radio" name="factor"
|
||||||
|
value={item.id}
|
||||||
|
aria-label={getFactorName(item)}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
</For>
|
||||||
|
</div>
|
||||||
|
<p class="text-center text-sm mt-2">Choose a way to verify that's you</p>
|
||||||
|
</Match>
|
||||||
|
<Match when={stage() === "verifying"}>
|
||||||
|
<label class="form-control w-full">
|
||||||
|
<div class="label">
|
||||||
|
<span class="label-text">Credentials</span>
|
||||||
|
</div>
|
||||||
|
<input name="credentials" type="password" placeholder="Type here"
|
||||||
|
class="input input-bordered w-full" />
|
||||||
|
<div class="label">
|
||||||
|
<span class="label-text-alt">Password or one time password.</span>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</Match>
|
||||||
|
</Switch>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-primary btn-block mt-3" disabled={loading()}>
|
||||||
|
<Show when={loading()} fallback={"Next"}>
|
||||||
|
<span class="loading loading-spinner"></span>
|
||||||
|
</Show>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,116 +0,0 @@
|
|||||||
import { createSignal, Show } from "solid-js";
|
|
||||||
|
|
||||||
export default function RegisterPage() {
|
|
||||||
const [title, setTitle] = createSignal("Create an account");
|
|
||||||
const [subtitle, setSubtitle] = createSignal("The first step to join our community.");
|
|
||||||
|
|
||||||
const [error, setError] = createSignal<null | string>(null);
|
|
||||||
const [loading, setLoading] = createSignal(false);
|
|
||||||
const [done, setDone] = createSignal(false);
|
|
||||||
|
|
||||||
async function submit(evt: SubmitEvent) {
|
|
||||||
evt.preventDefault();
|
|
||||||
|
|
||||||
const data = Object.fromEntries(new FormData(evt.target as HTMLFormElement));
|
|
||||||
if (!data.name || !data.nick || !data.email || !data.password) return;
|
|
||||||
|
|
||||||
setLoading(true);
|
|
||||||
const res = await fetch("/api/users", {
|
|
||||||
method: "POST",
|
|
||||||
headers: { "Content-Type": "application/json" },
|
|
||||||
body: JSON.stringify(data)
|
|
||||||
});
|
|
||||||
if (res.status !== 200) {
|
|
||||||
setError(await res.text());
|
|
||||||
} else {
|
|
||||||
setTitle("Congratulations!");
|
|
||||||
setSubtitle("Your account has been created and activation email has sent to your inbox!");
|
|
||||||
setDone(true);
|
|
||||||
}
|
|
||||||
setLoading(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div class="w-full h-full flex justify-center items-center">
|
|
||||||
<div class="card w-[480px] max-w-screen shadow-xl">
|
|
||||||
<div class="card-body">
|
|
||||||
<div id="header" class="text-center mb-5">
|
|
||||||
<h1 class="text-xl font-bold">{title()}</h1>
|
|
||||||
<p>{subtitle()}</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Show when={error()}>
|
|
||||||
<div id="alerts" class="mt-1">
|
|
||||||
<div role="alert" class="alert alert-error">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="stroke-current shrink-0 h-6 w-6" fill="none"
|
|
||||||
viewBox="0 0 24 24">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
||||||
d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
||||||
</svg>
|
|
||||||
<span class="capitalize">{error()}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Show>
|
|
||||||
|
|
||||||
<Show when={!done()}>
|
|
||||||
<form id="form" onSubmit={submit}>
|
|
||||||
<label class="form-control w-full">
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text">Username</span>
|
|
||||||
<span class="label-text-alt font-bold">Cannot be modify</span>
|
|
||||||
</div>
|
|
||||||
<input name="name" type="text" placeholder="Type here" class="input input-bordered w-full" />
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text-alt">Lowercase alphabet and numbers only, maximum 16 characters</span>
|
|
||||||
</div>
|
|
||||||
</label>
|
|
||||||
<label class="form-control w-full">
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text">Nickname</span>
|
|
||||||
</div>
|
|
||||||
<input name="nick" type="text" placeholder="Type here" class="input input-bordered w-full" />
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text-alt">Maximum length is 24 characters</span>
|
|
||||||
</div>
|
|
||||||
</label>
|
|
||||||
<label class="form-control w-full">
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text">Email Address</span>
|
|
||||||
</div>
|
|
||||||
<input name="email" type="email" placeholder="Type here" class="input input-bordered w-full" />
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text-alt">Do not accept address with plus sign</span>
|
|
||||||
</div>
|
|
||||||
</label>
|
|
||||||
<label class="form-control w-full">
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text">Password</span>
|
|
||||||
</div>
|
|
||||||
<input name="password" type="password" placeholder="Type here" class="input input-bordered w-full" />
|
|
||||||
<div class="label">
|
|
||||||
<span class="label-text-alt">Must be secure</span>
|
|
||||||
</div>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<button type="submit" class="btn btn-primary btn-block mt-3" disabled={loading()}>
|
|
||||||
<Show when={loading()} fallback={"Next"}>
|
|
||||||
<span class="loading loading-spinner"></span>
|
|
||||||
</Show>
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
</Show>
|
|
||||||
|
|
||||||
<Show when={done()}>
|
|
||||||
<div class="py-12 text-center">
|
|
||||||
<h2 class="text-lg font-bold">What's next?</h2>
|
|
||||||
<span>
|
|
||||||
<a href="/auth/login" class="link">Go login</a>{" "}
|
|
||||||
then you can take part in the entire smartsheep community.
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</Show>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
@ -1,12 +1,10 @@
|
|||||||
import { useUserinfo } from "../stores/userinfo.tsx";
|
import { userinfo } from "../stores/userinfo.ts";
|
||||||
|
|
||||||
export default function DashboardPage() {
|
|
||||||
const userinfo = useUserinfo();
|
|
||||||
|
|
||||||
|
export default function Dashboard() {
|
||||||
return (
|
return (
|
||||||
<div class="container mx-auto pt-12">
|
<div class="container mx-auto pt-12">
|
||||||
<h1 class="text-2xl font-bold">Welcome, {userinfo?.displayName}</h1>
|
<h1 class="text-2xl font-bold">Welcome, {userinfo.displayName}</h1>
|
||||||
<p>What's a nice day!</p>
|
<p>What's a nice day!</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
)
|
||||||
}
|
}
|
@ -1,24 +1,16 @@
|
|||||||
import Cookie from "universal-cookie";
|
|
||||||
import { createContext, useContext } from "solid-js";
|
|
||||||
import { createStore } from "solid-js/store";
|
import { createStore } from "solid-js/store";
|
||||||
|
import Cookie from "universal-cookie";
|
||||||
|
|
||||||
export interface Userinfo {
|
const [userinfo, setUserinfo] = createStore({
|
||||||
isLoggedIn: boolean,
|
|
||||||
displayName: string,
|
|
||||||
profiles: any,
|
|
||||||
meta: any
|
|
||||||
}
|
|
||||||
|
|
||||||
const UserinfoContext = createContext<Userinfo>();
|
|
||||||
|
|
||||||
const defaultUserinfo: Userinfo = {
|
|
||||||
isLoggedIn: false,
|
isLoggedIn: false,
|
||||||
displayName: "Citizen",
|
displayName: "Citizen",
|
||||||
profiles: null,
|
profiles: null,
|
||||||
meta: null
|
meta: null
|
||||||
};
|
});
|
||||||
|
|
||||||
const [userinfo, setUserinfo] = createStore<Userinfo>(structuredClone(defaultUserinfo));
|
function checkLoggedIn(): boolean {
|
||||||
|
return new Cookie().get("access_token");
|
||||||
|
}
|
||||||
|
|
||||||
export function getAtk(): string {
|
export function getAtk(): string {
|
||||||
return new Cookie().get("access_token");
|
return new Cookie().get("access_token");
|
||||||
@ -44,10 +36,6 @@ export async function refreshAtk() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkLoggedIn(): boolean {
|
|
||||||
return new Cookie().get("access_token");
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function readProfiles() {
|
export async function readProfiles() {
|
||||||
if (!checkLoggedIn()) return;
|
if (!checkLoggedIn()) return;
|
||||||
|
|
||||||
@ -71,20 +59,4 @@ export async function readProfiles() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function clearUserinfo() {
|
export { userinfo };
|
||||||
new Cookie().remove("access_token", { path: "/" });
|
|
||||||
new Cookie().remove("refresh_token", { path: "/" });
|
|
||||||
setUserinfo(defaultUserinfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function UserinfoProvider(props: any) {
|
|
||||||
return (
|
|
||||||
<UserinfoContext.Provider value={userinfo}>
|
|
||||||
{props.children}
|
|
||||||
</UserinfoContext.Provider>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function useUserinfo() {
|
|
||||||
return useContext(UserinfoContext);
|
|
||||||
}
|
|
@ -1,12 +1,11 @@
|
|||||||
import { defineConfig } from "vite";
|
import { defineConfig } from 'vite'
|
||||||
import solid from "vite-plugin-solid";
|
import solid from 'vite-plugin-solid'
|
||||||
import devtools from "solid-devtools/vite";
|
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [devtools({ autoname: true }), solid()],
|
plugins: [solid()],
|
||||||
server: {
|
server: {
|
||||||
proxy: {
|
proxy: {
|
||||||
"/api": "http://localhost:8444"
|
"/api": "http://localhost:8444"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
169
view/yarn.lock
169
view/yarn.lock
@ -179,13 +179,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-plugin-utils" "^7.22.5"
|
"@babel/helper-plugin-utils" "^7.22.5"
|
||||||
|
|
||||||
"@babel/plugin-syntax-typescript@^7.23.3":
|
|
||||||
version "7.23.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f"
|
|
||||||
integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==
|
|
||||||
dependencies:
|
|
||||||
"@babel/helper-plugin-utils" "^7.22.5"
|
|
||||||
|
|
||||||
"@babel/template@^7.22.15", "@babel/template@^7.23.9":
|
"@babel/template@^7.22.15", "@babel/template@^7.23.9":
|
||||||
version "7.23.9"
|
version "7.23.9"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a"
|
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a"
|
||||||
@ -211,7 +204,7 @@
|
|||||||
debug "^4.3.1"
|
debug "^4.3.1"
|
||||||
globals "^11.1.0"
|
globals "^11.1.0"
|
||||||
|
|
||||||
"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.3", "@babel/types@^7.23.6", "@babel/types@^7.23.9":
|
"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9":
|
||||||
version "7.23.9"
|
version "7.23.9"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002"
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002"
|
||||||
integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==
|
integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==
|
||||||
@ -400,11 +393,6 @@
|
|||||||
"@nodelib/fs.scandir" "2.1.5"
|
"@nodelib/fs.scandir" "2.1.5"
|
||||||
fastq "^1.6.0"
|
fastq "^1.6.0"
|
||||||
|
|
||||||
"@nothing-but/utils@~0.12.0":
|
|
||||||
version "0.12.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@nothing-but/utils/-/utils-0.12.1.tgz#e95549e78738d328fed740e1055e696bd5ce9126"
|
|
||||||
integrity sha512-1qZU1Q5El0IjE7JT/ucvJNzdr2hL3W8Rm27xNf1p6gb3Nw8pGnZmxp6/GEW9h+I1k1cICxXNq25hBwknTQ7yhg==
|
|
||||||
|
|
||||||
"@pkgjs/parseargs@^0.11.0":
|
"@pkgjs/parseargs@^0.11.0":
|
||||||
version "0.11.0"
|
version "0.11.0"
|
||||||
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
|
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
|
||||||
@ -475,150 +463,6 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6"
|
||||||
integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==
|
integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==
|
||||||
|
|
||||||
"@solid-devtools/debugger@^0.23.3":
|
|
||||||
version "0.23.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-devtools/debugger/-/debugger-0.23.3.tgz#f56fa5952460db45a146673eda764b349474381d"
|
|
||||||
integrity sha512-VrgswTjb2FyHxQJp5y5u7OaJ2k1R14LYlAOX/1rDZrGHWKdGYCaWHGzxI7C8AExtMP+LS+WOxy0uXMPQpoAD2g==
|
|
||||||
dependencies:
|
|
||||||
"@nothing-but/utils" "~0.12.0"
|
|
||||||
"@solid-devtools/shared" "^0.13.1"
|
|
||||||
"@solid-primitives/bounds" "^0.0.118"
|
|
||||||
"@solid-primitives/cursor" "^0.0.112"
|
|
||||||
"@solid-primitives/event-bus" "^1.0.8"
|
|
||||||
"@solid-primitives/event-listener" "^2.3.0"
|
|
||||||
"@solid-primitives/keyboard" "^1.2.5"
|
|
||||||
"@solid-primitives/platform" "^0.1.0"
|
|
||||||
"@solid-primitives/rootless" "^1.4.2"
|
|
||||||
"@solid-primitives/scheduled" "^1.4.1"
|
|
||||||
"@solid-primitives/static-store" "^0.0.5"
|
|
||||||
"@solid-primitives/utils" "^6.2.1"
|
|
||||||
|
|
||||||
"@solid-devtools/shared@^0.13.1":
|
|
||||||
version "0.13.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-devtools/shared/-/shared-0.13.1.tgz#f672ec4c96d77b6f91e9b0e598dd3ae3abf4a6fb"
|
|
||||||
integrity sha512-qaAcZF47FFr4alVQSy5ooLy7mMt4MMDxSHw52heY1oCut8yfXDrnLcYDONabfoin2WYIwsQpjYhryHgjtB0uDg==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/event-bus" "^1.0.8"
|
|
||||||
"@solid-primitives/event-listener" "^2.3.0"
|
|
||||||
"@solid-primitives/media" "^2.2.5"
|
|
||||||
"@solid-primitives/refs" "^1.0.5"
|
|
||||||
"@solid-primitives/rootless" "^1.4.2"
|
|
||||||
"@solid-primitives/scheduled" "^1.4.1"
|
|
||||||
"@solid-primitives/static-store" "^0.0.5"
|
|
||||||
"@solid-primitives/styles" "^0.0.111"
|
|
||||||
"@solid-primitives/utils" "^6.2.1"
|
|
||||||
|
|
||||||
"@solid-primitives/bounds@^0.0.118":
|
|
||||||
version "0.0.118"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/bounds/-/bounds-0.0.118.tgz#098229e9996288e0220ec4639731f8977a90c706"
|
|
||||||
integrity sha512-Qj42w8LlnhJ3r/t+t0c0vrdwIvvQMPgjEFGmLiwREaA85ojLbgL9lSBq2tKvljeLCvRVkgj10KEUf+vc99VCIg==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/event-listener" "^2.3.0"
|
|
||||||
"@solid-primitives/resize-observer" "^2.0.22"
|
|
||||||
"@solid-primitives/static-store" "^0.0.5"
|
|
||||||
"@solid-primitives/utils" "^6.2.1"
|
|
||||||
|
|
||||||
"@solid-primitives/cursor@^0.0.112":
|
|
||||||
version "0.0.112"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/cursor/-/cursor-0.0.112.tgz#00f5bf5492bbfb0c927407f07bef38c5d53bc6fd"
|
|
||||||
integrity sha512-TAtU7qD7ipSLSXHnq8FhhosAPVX+dnOCb/ITcGcLlj8e/C9YKcxDhgBHJ3R/d1xDRb5/vO/szJtEz6fnQD311Q==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/utils" "^6.2.1"
|
|
||||||
|
|
||||||
"@solid-primitives/event-bus@^1.0.8":
|
|
||||||
version "1.0.9"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/event-bus/-/event-bus-1.0.9.tgz#8c618145dea3f7f187938c259c5221e4a2fd6fa3"
|
|
||||||
integrity sha512-BI9dla3GQzINsufEzr/CV3B/9e0D1pyk7Ig6kPI6s4geUkiVgFadY5V8R95PEeHH1NagOny7AHpw+RaRIuBpkA==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/utils" "^6.2.2"
|
|
||||||
|
|
||||||
"@solid-primitives/event-listener@^2.3.0", "@solid-primitives/event-listener@^2.3.1":
|
|
||||||
version "2.3.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/event-listener/-/event-listener-2.3.1.tgz#a303bc1f090a6c145cf8d71556ec2eac9d37cb7b"
|
|
||||||
integrity sha512-S1AfFYatOJ3g/ZUbGDoKplSGLTTfarQ3Mfd3F/fXb9SnzGtROtd+Y6yLkPVzK4AVw83r2wUSaS0GS6dg8izTEQ==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/utils" "^6.2.2"
|
|
||||||
|
|
||||||
"@solid-primitives/keyboard@^1.2.5":
|
|
||||||
version "1.2.6"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/keyboard/-/keyboard-1.2.6.tgz#b23692239253478c406d6a7c61d0ff84a52a73d7"
|
|
||||||
integrity sha512-ZbXkzAwFs+6hyaZ2hT9uQ38iPZzGTjV6kWvVvJ3BDfKASg0dDDuhEZRKmpkmpLfnqOabV58BUkASJWMAA4dZCg==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/event-listener" "^2.3.1"
|
|
||||||
"@solid-primitives/rootless" "^1.4.3"
|
|
||||||
"@solid-primitives/utils" "^6.2.2"
|
|
||||||
|
|
||||||
"@solid-primitives/media@^2.2.5":
|
|
||||||
version "2.2.6"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/media/-/media-2.2.6.tgz#a36b39242518a4bdfcc69f44aee10cd118cbbc0a"
|
|
||||||
integrity sha512-VopOSqoUZgmSFY4SNnwBzHYaoGG+7gQYcwX+RJ/qQtuZJgzOiC+PejZEwNJh+aBZ383HPwrypyd3zrYVm7EnpQ==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/event-listener" "^2.3.1"
|
|
||||||
"@solid-primitives/rootless" "^1.4.3"
|
|
||||||
"@solid-primitives/static-store" "^0.0.6"
|
|
||||||
"@solid-primitives/utils" "^6.2.2"
|
|
||||||
|
|
||||||
"@solid-primitives/platform@^0.1.0":
|
|
||||||
version "0.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/platform/-/platform-0.1.1.tgz#a90a84b2325d1b42b9d87b4ce5be60abbbfbd6c5"
|
|
||||||
integrity sha512-Ln7dzHFjNDpjmhnKiMAUWBjObRZ01FQtj4ABkSmE51VjLI0i9JW54lbZhJImYjpCyoBjtxBEGWsCgYi9JyRXrA==
|
|
||||||
|
|
||||||
"@solid-primitives/refs@^1.0.5":
|
|
||||||
version "1.0.6"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/refs/-/refs-1.0.6.tgz#636b4a792243e00e3899ed948be00857d1b16666"
|
|
||||||
integrity sha512-ruh4YdVMxThEVnvqbpeLXKojW442vpFU8q7dSKtElGOTa31aKOAkRb9BTbdaTwVjN4BEq79fiiYIXozJNl4dSw==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/utils" "^6.2.2"
|
|
||||||
|
|
||||||
"@solid-primitives/resize-observer@^2.0.22":
|
|
||||||
version "2.0.23"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/resize-observer/-/resize-observer-2.0.23.tgz#5ba0cdc415ea03e86fb31ffafade68d33a0536c3"
|
|
||||||
integrity sha512-SgKRzRfy1oFbPSapmtF5H9VQcN66foQaQK3QTyzh4cihIG2k/UiVNjbC+el1nEDnSeAP7zTO4Xsf2UW8dc+aBw==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/event-listener" "^2.3.1"
|
|
||||||
"@solid-primitives/rootless" "^1.4.3"
|
|
||||||
"@solid-primitives/static-store" "^0.0.6"
|
|
||||||
"@solid-primitives/utils" "^6.2.2"
|
|
||||||
|
|
||||||
"@solid-primitives/rootless@^1.4.2", "@solid-primitives/rootless@^1.4.3":
|
|
||||||
version "1.4.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/rootless/-/rootless-1.4.3.tgz#9ac2fb5a96135a760031376428a0d195a1f97919"
|
|
||||||
integrity sha512-IPsfUhKsqQOxLtRMQWK2EZAYbL9RKJMLBelLwpaXl9+oa1tl5aNvA6GHgrNrK+85oUhiYh7/OuogO18AuHepqQ==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/utils" "^6.2.2"
|
|
||||||
|
|
||||||
"@solid-primitives/scheduled@^1.4.1":
|
|
||||||
version "1.4.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/scheduled/-/scheduled-1.4.2.tgz#9ec2bec6d0961297a22da0b317e8623520ece6f9"
|
|
||||||
integrity sha512-duKaugDQtPk0v6MnkBuEalWk66/vA2G7zzoimQEvmUdh2+K2o8t908HIfI2NdBfwakQMQBV4epE3TFeN2Vsveg==
|
|
||||||
|
|
||||||
"@solid-primitives/static-store@^0.0.5":
|
|
||||||
version "0.0.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/static-store/-/static-store-0.0.5.tgz#ed3e5be8e72121f92fac54e7cfd4ed81aa2e29cd"
|
|
||||||
integrity sha512-ssQ+s/wrlFAEE4Zw8GV499yBfvWx7SMm+ZVc11wvao4T5xg9VfXCL9Oa+x4h+vPMvSV/Knv5LrsLiUa+wlJUXQ==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/utils" "^6.2.1"
|
|
||||||
|
|
||||||
"@solid-primitives/static-store@^0.0.6":
|
|
||||||
version "0.0.6"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/static-store/-/static-store-0.0.6.tgz#54249f5db9befef4818b22f8782cfcd8bb95088f"
|
|
||||||
integrity sha512-PtvkbbucbjT+9p95pksOciG9gOnCtJz4IUyAKX1Ld7YwI+QgtPTo0Wuxs8gNbNtLtoDv5PNv5t4YRzUyl0fwdg==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/utils" "^6.2.2"
|
|
||||||
|
|
||||||
"@solid-primitives/styles@^0.0.111":
|
|
||||||
version "0.0.111"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/styles/-/styles-0.0.111.tgz#b11372dc07f64b87042c20c0be742e2c02ca2869"
|
|
||||||
integrity sha512-1mBxOGAPXmfD5oYCvqjKBDN7SuNjz2qz7RdH7KtsuNLQh6lpuSKadtHnLvru0Y8Vz1InqTJisBIy/6P5kyDmPw==
|
|
||||||
dependencies:
|
|
||||||
"@solid-primitives/rootless" "^1.4.2"
|
|
||||||
"@solid-primitives/utils" "^6.2.1"
|
|
||||||
|
|
||||||
"@solid-primitives/utils@^6.2.1", "@solid-primitives/utils@^6.2.2":
|
|
||||||
version "6.2.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@solid-primitives/utils/-/utils-6.2.2.tgz#01c28bab7b2842b46bd5559716497decc51ad3cd"
|
|
||||||
integrity sha512-11ypVbp987XxETeRqY5Y3OmmTpm8/jZqJXRvo6AyqBthzkvvjEdReuUMU2yVb+pwWGxfZpWHZ6EUCcGXUMhfwg==
|
|
||||||
|
|
||||||
"@solidjs/router@^0.10.10":
|
"@solidjs/router@^0.10.10":
|
||||||
version "0.10.10"
|
version "0.10.10"
|
||||||
resolved "https://registry.yarnpkg.com/@solidjs/router/-/router-0.10.10.tgz#cd236ef438e9aa50864e7361db710af26b152ad5"
|
resolved "https://registry.yarnpkg.com/@solidjs/router/-/router-0.10.10.tgz#cd236ef438e9aa50864e7361db710af26b152ad5"
|
||||||
@ -1437,17 +1281,6 @@ signal-exit@^4.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
|
||||||
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
|
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
|
||||||
|
|
||||||
solid-devtools@^0.29.3:
|
|
||||||
version "0.29.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/solid-devtools/-/solid-devtools-0.29.3.tgz#62c563ab5c340d02168b63017c204f5632aad537"
|
|
||||||
integrity sha512-9j3VxVbEoC54ML22gAMytR8ZS1nk9xKatsWziKSkI4c/Bcyh4sxQBGESHuXSLs9xaxpyGVTmFl3hknoxEpKzlA==
|
|
||||||
dependencies:
|
|
||||||
"@babel/core" "^7.23.3"
|
|
||||||
"@babel/plugin-syntax-typescript" "^7.23.3"
|
|
||||||
"@babel/types" "^7.23.3"
|
|
||||||
"@solid-devtools/debugger" "^0.23.3"
|
|
||||||
"@solid-devtools/shared" "^0.13.1"
|
|
||||||
|
|
||||||
solid-js@^1.8.7:
|
solid-js@^1.8.7:
|
||||||
version "1.8.12"
|
version "1.8.12"
|
||||||
resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.8.12.tgz#12903f076cdbd74e13dd6ab47b1006c3a07f5591"
|
resolved "https://registry.yarnpkg.com/solid-js/-/solid-js-1.8.12.tgz#12903f076cdbd74e13dd6ab47b1006c3a07f5591"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user