+2
-1
.prettierrc
+2
-1
.prettierrc
+1
package.json
+1
package.json
+22
-2
pnpm-lock.yaml
+22
-2
pnpm-lock.yaml
···
111
111
prettier:
112
112
specifier: ^3.6.2
113
113
version: 3.6.2
114
+
prettier-plugin-organize-imports:
115
+
specifier: ^4.2.0
116
+
version: 4.2.0(prettier@3.6.2)(typescript@5.9.2)
114
117
prettier-plugin-tailwindcss:
115
118
specifier: ^0.6.14
116
-
version: 0.6.14(prettier@3.6.2)
119
+
version: 0.6.14(prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@5.9.2))(prettier@3.6.2)
117
120
tailwindcss:
118
121
specifier: ^4.1.12
119
122
version: 4.1.12
···
1194
1197
postcss@8.5.6:
1195
1198
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
1196
1199
engines: {node: ^10 || ^12 || >=14}
1200
+
1201
+
prettier-plugin-organize-imports@4.2.0:
1202
+
resolution: {integrity: sha512-Zdy27UhlmyvATZi67BTnLcKTo8fm6Oik59Sz6H64PgZJVs6NJpPD1mT240mmJn62c98/QaL+r3kx9Q3gRpDajg==}
1203
+
peerDependencies:
1204
+
prettier: '>=2.0'
1205
+
typescript: '>=2.9'
1206
+
vue-tsc: ^2.1.0 || 3
1207
+
peerDependenciesMeta:
1208
+
vue-tsc:
1209
+
optional: true
1197
1210
1198
1211
prettier-plugin-tailwindcss@0.6.14:
1199
1212
resolution: {integrity: sha512-pi2e/+ZygeIqntN+vC573BcW5Cve8zUB0SSAGxqpB4f96boZF4M3phPVoOFCeypwkpRYdi7+jQ5YJJUwrkGUAg==}
···
2384
2397
picocolors: 1.1.1
2385
2398
source-map-js: 1.2.1
2386
2399
2387
-
prettier-plugin-tailwindcss@0.6.14(prettier@3.6.2):
2400
+
prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@5.9.2):
2401
+
dependencies:
2402
+
prettier: 3.6.2
2403
+
typescript: 5.9.2
2404
+
2405
+
prettier-plugin-tailwindcss@0.6.14(prettier-plugin-organize-imports@4.2.0(prettier@3.6.2)(typescript@5.9.2))(prettier@3.6.2):
2388
2406
dependencies:
2389
2407
prettier: 3.6.2
2408
+
optionalDependencies:
2409
+
prettier-plugin-organize-imports: 4.2.0(prettier@3.6.2)(typescript@5.9.2)
2390
2410
2391
2411
prettier@3.6.2: {}
2392
2412
+6
-6
src/components/account.tsx
+6
-6
src/components/account.tsx
···
1
-
import { createSignal, onMount, For, Show } from "solid-js";
2
-
import { deleteStoredSession, getSession, OAuthUserAgent } from "@atcute/oauth-browser-client";
3
-
import { agent, Login, retrieveSession, setAgent } from "./login.jsx";
1
+
import { Client, CredentialManager } from "@atcute/client";
4
2
import { Did } from "@atcute/lexicons";
5
-
import { resolveDidDoc } from "../utils/api.js";
3
+
import { deleteStoredSession, getSession, OAuthUserAgent } from "@atcute/oauth-browser-client";
4
+
import { A } from "@solidjs/router";
5
+
import { createSignal, For, onMount, Show } from "solid-js";
6
6
import { createStore } from "solid-js/store";
7
-
import { Client, CredentialManager } from "@atcute/client";
7
+
import { resolveDidDoc } from "../utils/api.js";
8
+
import { agent, Login, retrieveSession, setAgent } from "./login.jsx";
8
9
import { Modal } from "./modal.jsx";
9
-
import { A } from "@solidjs/router";
10
10
11
11
const AccountManager = () => {
12
12
const [openManager, setOpenManager] = createSignal(false);
+2
-2
src/components/backlinks.tsx
+2
-2
src/components/backlinks.tsx
···
1
-
import { createSignal, onMount, Show, For, createResource } from "solid-js";
2
-
import { getRecordBacklinks, getDidBacklinks, getAllBacklinks } from "../utils/api.js";
3
1
import * as TID from "@atcute/tid";
2
+
import { createResource, createSignal, For, onMount, Show } from "solid-js";
3
+
import { getAllBacklinks, getDidBacklinks, getRecordBacklinks } from "../utils/api.js";
4
4
import { localDateFromTimestamp } from "../utils/date.js";
5
5
import { Button } from "./button.jsx";
6
6
+8
-8
src/components/create.tsx
+8
-8
src/components/create.tsx
···
1
-
import { createSignal, Show } from "solid-js";
2
1
import { Client } from "@atcute/client";
3
-
import { agent } from "../components/login.jsx";
4
-
import { Editor, editorView } from "../components/editor.jsx";
5
-
import Tooltip from "./tooltip.jsx";
6
-
import { useNavigate, useParams } from "@solidjs/router";
7
2
import { remove } from "@mary/exif-rm";
8
-
import { TextInput } from "./text-input.jsx";
9
-
import { Modal } from "./modal.jsx";
10
-
import { Button } from "./button.jsx";
3
+
import { useNavigate, useParams } from "@solidjs/router";
4
+
import { createSignal, Show } from "solid-js";
5
+
import { Editor, editorView } from "../components/editor.jsx";
6
+
import { agent } from "../components/login.jsx";
11
7
import { setNotif } from "../layout.jsx";
8
+
import { Button } from "./button.jsx";
9
+
import { Modal } from "./modal.jsx";
10
+
import { TextInput } from "./text-input.jsx";
11
+
import Tooltip from "./tooltip.jsx";
12
12
13
13
export const RecordEditor = (props: { create: boolean; record?: any; refetch?: any }) => {
14
14
const navigate = useNavigate();
+5
-5
src/components/editor.tsx
+5
-5
src/components/editor.tsx
···
1
-
import { onCleanup, onMount } from "solid-js";
2
-
import { basicSetup, EditorView } from "codemirror";
1
+
import { indentWithTab } from "@codemirror/commands";
3
2
import { json, jsonParseLinter } from "@codemirror/lang-json";
4
3
import { linter } from "@codemirror/lint";
5
-
import { basicLight } from "@fsegurai/codemirror-theme-basic-light";
6
-
import { basicDark } from "@fsegurai/codemirror-theme-basic-dark";
7
4
import { Compartment } from "@codemirror/state";
8
-
import { indentWithTab } from "@codemirror/commands";
9
5
import { keymap } from "@codemirror/view";
6
+
import { basicDark } from "@fsegurai/codemirror-theme-basic-dark";
7
+
import { basicLight } from "@fsegurai/codemirror-theme-basic-light";
8
+
import { basicSetup, EditorView } from "codemirror";
9
+
import { onCleanup, onMount } from "solid-js";
10
10
11
11
export let editorView: EditorView;
12
12
+3
-3
src/components/json.tsx
+3
-3
src/components/json.tsx
···
1
-
import VideoPlayer from "./video-player";
1
+
import { A } from "@solidjs/router";
2
2
import { createEffect, createSignal, For, Show } from "solid-js";
3
-
import { A } from "@solidjs/router";
3
+
import { hideMedia } from "../views/settings";
4
4
import { pds } from "./navbar";
5
5
import Tooltip from "./tooltip";
6
-
import { hideMedia } from "../views/settings";
6
+
import VideoPlayer from "./video-player";
7
7
8
8
interface AtBlob {
9
9
$type: string;
+3
-3
src/components/login.tsx
+3
-3
src/components/login.tsx
···
1
-
import { createSignal } from "solid-js";
1
+
import { Did } from "@atcute/lexicons";
2
+
import { isHandle } from "@atcute/lexicons/syntax";
2
3
import {
3
4
configureOAuth,
4
5
createAuthorizationUrl,
···
10
11
resolveFromService,
11
12
type Session,
12
13
} from "@atcute/oauth-browser-client";
13
-
import { Did } from "@atcute/lexicons";
14
-
import { isHandle } from "@atcute/lexicons/syntax";
14
+
import { createSignal } from "solid-js";
15
15
import { TextInput } from "./text-input";
16
16
17
17
configureOAuth({
+2
-2
src/components/search.tsx
+2
-2
src/components/search.tsx
···
1
-
import { resolveHandle } from "../utils/api.js";
1
+
import { Handle } from "@atcute/lexicons";
2
2
import { useNavigate } from "@solidjs/router";
3
3
import { createSignal, Show } from "solid-js";
4
-
import { Handle } from "@atcute/lexicons";
4
+
import { resolveHandle } from "../utils/api.js";
5
5
6
6
const Search = () => {
7
7
const navigate = useNavigate();
+6
-6
src/index.tsx
+6
-6
src/index.tsx
···
1
1
/* @refresh reload */
2
+
import { Route, Router } from "@solidjs/router";
2
3
import { render } from "solid-js/web";
3
-
import "./styles/index.css";
4
-
import { Route, Router } from "@solidjs/router";
5
4
import { Layout } from "./layout.tsx";
6
-
import { Home } from "./views/home.tsx";
7
-
import { PdsView } from "./views/pds.tsx";
8
-
import { RepoView } from "./views/repo.tsx";
5
+
import "./styles/index.css";
9
6
import { CollectionView } from "./views/collection.tsx";
7
+
import { Home } from "./views/home.tsx";
10
8
import { LabelView } from "./views/labels.tsx";
11
-
import { StreamView } from "./views/stream.tsx";
9
+
import { PdsView } from "./views/pds.tsx";
12
10
import { RecordView } from "./views/record.tsx";
11
+
import { RepoView } from "./views/repo.tsx";
13
12
import { Settings } from "./views/settings.tsx";
13
+
import { StreamView } from "./views/stream.tsx";
14
14
15
15
render(
16
16
() => (
+6
-6
src/layout.tsx
+6
-6
src/layout.tsx
···
1
-
import { createEffect, createSignal, ErrorBoundary, onMount, Show, Suspense } from "solid-js";
1
+
import { Handle } from "@atcute/lexicons";
2
+
import { Meta, MetaProvider } from "@solidjs/meta";
2
3
import { A, RouteSectionProps, useLocation, useNavigate } from "@solidjs/router";
3
-
import { agent } from "./components/login.jsx";
4
+
import { createEffect, createSignal, ErrorBoundary, onMount, Show, Suspense } from "solid-js";
5
+
import { AccountManager } from "./components/account.jsx";
4
6
import { RecordEditor } from "./components/create.jsx";
7
+
import { agent } from "./components/login.jsx";
5
8
import { NavBar } from "./components/navbar.jsx";
6
9
import { Search } from "./components/search.jsx";
7
-
import { AccountManager } from "./components/account.jsx";
8
-
import { resolveHandle } from "./utils/api.js";
9
-
import { Meta, MetaProvider } from "@solidjs/meta";
10
-
import { Handle } from "@atcute/lexicons";
11
10
import { themeEvent, ThemeSelection } from "./components/theme.jsx";
11
+
import { resolveHandle } from "./utils/api.js";
12
12
13
13
export const [notif, setNotif] = createSignal<{
14
14
show: boolean;
+3
-5
src/utils/api.ts
+3
-5
src/utils/api.ts
···
1
-
import { createStore } from "solid-js/store";
2
-
3
1
import "@atcute/atproto";
4
2
import {
5
3
type DidDocument,
···
18
16
} from "@atcute/identity-resolver";
19
17
import { Did, Handle } from "@atcute/lexicons";
20
18
import { isHandle } from "@atcute/lexicons/syntax";
21
-
19
+
import { createStore } from "solid-js/store";
22
20
import { setPDS } from "../components/navbar";
23
21
24
22
const didDocumentResolver = new CompositeDidDocumentResolver({
···
167
165
getPDS,
168
166
getRecordBacklinks,
169
167
labelerCache,
170
-
resolveHandle,
171
168
resolveDidDoc,
172
-
validateHandle,
169
+
resolveHandle,
173
170
resolvePDS,
171
+
validateHandle,
174
172
type LinkData,
175
173
};
-1
src/utils/types/lexicons.ts
-1
src/utils/types/lexicons.ts
+1
-2
src/utils/verify.ts
+1
-2
src/utils/verify.ts
···
1
-
import { Client } from "@atcute/client";
2
-
3
1
import * as CAR from "@atcute/car";
4
2
import { CarReader } from "@atcute/car/v4";
5
3
import * as CBOR from "@atcute/cbor";
6
4
import * as CID from "@atcute/cid";
5
+
import { Client } from "@atcute/client";
7
6
import { type FoundPublicKey, getPublicKeyFromDidController, verifySig } from "@atcute/crypto";
8
7
import { type DidDocument, getAtprotoVerificationMaterial } from "@atcute/identity";
9
8
import { Did } from "@atcute/lexicons";
+1
-1
src/views/blob.tsx
+1
-1
src/views/blob.tsx
+10
-10
src/views/collection.tsx
+10
-10
src/views/collection.tsx
···
1
-
import { createEffect, createResource, createSignal, For, Show, untrack } from "solid-js";
2
-
import { CredentialManager, Client } from "@atcute/client";
3
-
import { A, useParams } from "@solidjs/router";
4
-
import { resolvePDS } from "../utils/api.js";
1
+
import { ComAtprotoRepoApplyWrites, ComAtprotoRepoGetRecord } from "@atcute/atproto";
2
+
import { Client, CredentialManager } from "@atcute/client";
3
+
import { $type, ActorIdentifier, InferXRPCBodyOutput } from "@atcute/lexicons";
5
4
import * as TID from "@atcute/tid";
5
+
import { A, useParams } from "@solidjs/router";
6
+
import { createEffect, createResource, createSignal, For, Show, untrack } from "solid-js";
7
+
import { createStore } from "solid-js/store";
8
+
import { Button } from "../components/button.jsx";
6
9
import { JSONType, JSONValue } from "../components/json.jsx";
7
10
import { agent } from "../components/login.jsx";
8
-
import { createStore } from "solid-js/store";
9
-
import Tooltip from "../components/tooltip.jsx";
10
-
import { localDateFromTimestamp } from "../utils/date.js";
11
-
import { $type, ActorIdentifier, InferXRPCBodyOutput } from "@atcute/lexicons";
12
-
import { ComAtprotoRepoApplyWrites, ComAtprotoRepoGetRecord } from "@atcute/atproto";
13
11
import { TextInput } from "../components/text-input.jsx";
14
-
import { Button } from "../components/button.jsx";
12
+
import Tooltip from "../components/tooltip.jsx";
15
13
import { setNotif } from "../layout.jsx";
14
+
import { resolvePDS } from "../utils/api.js";
15
+
import { localDateFromTimestamp } from "../utils/date.js";
16
16
17
17
interface AtprotoRecord {
18
18
rkey: string;
+4
-4
src/views/labels.tsx
+4
-4
src/views/labels.tsx
···
1
-
import { createResource, createSignal, For, onMount, Show } from "solid-js";
1
+
import { ComAtprotoLabelDefs } from "@atcute/atproto";
2
2
import { Client, CredentialManager } from "@atcute/client";
3
3
import { A, useParams, useSearchParams } from "@solidjs/router";
4
+
import { createResource, createSignal, For, onMount, Show } from "solid-js";
5
+
import { Button } from "../components/button.jsx";
6
+
import { TextInput } from "../components/text-input.jsx";
4
7
import { labelerCache, resolvePDS } from "../utils/api.js";
5
8
import { localDateFromTimestamp } from "../utils/date.js";
6
-
import { ComAtprotoLabelDefs } from "@atcute/atproto";
7
-
import { TextInput } from "../components/text-input.jsx";
8
-
import { Button } from "../components/button.jsx";
9
9
10
10
const LabelView = () => {
11
11
const params = useParams();
+5
-5
src/views/pds.tsx
+5
-5
src/views/pds.tsx
···
1
-
import { createSignal, For, Show, createResource } from "solid-js";
1
+
import { ComAtprotoServerDescribeServer, ComAtprotoSyncListRepos } from "@atcute/atproto";
2
2
import { Client, CredentialManager } from "@atcute/client";
3
+
import { InferXRPCBodyOutput } from "@atcute/lexicons";
4
+
import * as TID from "@atcute/tid";
3
5
import { A, useParams } from "@solidjs/router";
6
+
import { createResource, createSignal, For, Show } from "solid-js";
7
+
import { Button } from "../components/button";
4
8
import { setPDS } from "../components/navbar";
5
9
import Tooltip from "../components/tooltip";
6
-
import { InferXRPCBodyOutput } from "@atcute/lexicons";
7
-
import { ComAtprotoServerDescribeServer, ComAtprotoSyncListRepos } from "@atcute/atproto";
8
-
import * as TID from "@atcute/tid";
9
10
import { localDateFromTimestamp } from "../utils/date";
10
-
import { Button } from "../components/button";
11
11
12
12
const LIMIT = 1000;
13
13
+10
-13
src/views/record.tsx
+10
-13
src/views/record.tsx
···
1
-
import { CredentialManager, Client } from "@atcute/client";
2
-
1
+
import { Client, CredentialManager } from "@atcute/client";
2
+
import { lexiconDoc } from "@atcute/lexicon-doc";
3
+
import { ActorIdentifier, is } from "@atcute/lexicons";
3
4
import { A, useLocation, useNavigate, useParams } from "@solidjs/router";
4
5
import { createResource, createSignal, ErrorBoundary, Show, Suspense } from "solid-js";
5
-
6
6
import { Backlinks } from "../components/backlinks.jsx";
7
+
import { Button } from "../components/button.jsx";
8
+
import { RecordEditor } from "../components/create.jsx";
7
9
import { JSONValue } from "../components/json.jsx";
8
10
import { agent } from "../components/login.jsx";
11
+
import { Modal } from "../components/modal.jsx";
9
12
import { pds, setCID, setValidRecord, setValidSchema, validRecord } from "../components/navbar.jsx";
10
-
13
+
import Tooltip from "../components/tooltip.jsx";
14
+
import { setNotif } from "../layout.jsx";
11
15
import { didDocCache, resolvePDS } from "../utils/api.js";
16
+
import { addToClipboard } from "../utils/copy.js";
12
17
import { AtUri, uriTemplates } from "../utils/templates.js";
13
-
import { verifyRecord } from "../utils/verify.js";
14
-
import { ActorIdentifier, is } from "@atcute/lexicons";
15
-
import { lexiconDoc } from "@atcute/lexicon-doc";
16
18
import { lexicons } from "../utils/types/lexicons.js";
17
-
import { RecordEditor } from "../components/create.jsx";
18
-
import { addToClipboard } from "../utils/copy.js";
19
-
import Tooltip from "../components/tooltip.jsx";
20
-
import { Modal } from "../components/modal.jsx";
21
-
import { Button } from "../components/button.jsx";
22
-
import { setNotif } from "../layout.jsx";
19
+
import { verifyRecord } from "../utils/verify.js";
23
20
24
21
export const RecordView = () => {
25
22
const location = useLocation();
+12
-12
src/views/repo.tsx
+12
-12
src/views/repo.tsx
···
1
-
import { createSignal, For, Show, createResource, Suspense, ErrorBoundary } from "solid-js";
2
1
import { Client, CredentialManager } from "@atcute/client";
3
-
import { A, useLocation, useNavigate, useParams } from "@solidjs/router";
4
-
import { didDocCache, resolvePDS } from "../utils/api.js";
5
-
import { Backlinks } from "../components/backlinks.jsx";
6
-
import { ActorIdentifier } from "@atcute/lexicons";
7
-
import { DidDocument } from "@atcute/identity";
8
-
import { BlobView } from "./blob.jsx";
9
-
import { TextInput } from "../components/text-input.jsx";
10
-
import Tooltip from "../components/tooltip.jsx";
2
+
import { parsePublicMultikey } from "@atcute/crypto";
11
3
import {
12
4
CompatibleOperationOrTombstone,
13
5
defs,
14
6
IndexedEntry,
15
7
processIndexedEntryLog,
16
8
} from "@atcute/did-plc";
17
-
import { createOperationHistory, DiffEntry, groupBy } from "../utils/plc-logs.js";
18
-
import { localDateFromTimestamp } from "../utils/date.js";
9
+
import { DidDocument } from "@atcute/identity";
10
+
import { ActorIdentifier } from "@atcute/lexicons";
11
+
import { A, useLocation, useNavigate, useParams } from "@solidjs/router";
12
+
import { createResource, createSignal, ErrorBoundary, For, Show, Suspense } from "solid-js";
13
+
import { Backlinks } from "../components/backlinks.jsx";
19
14
import { Button } from "../components/button.jsx";
20
-
import { parsePublicMultikey } from "@atcute/crypto";
15
+
import { TextInput } from "../components/text-input.jsx";
16
+
import Tooltip from "../components/tooltip.jsx";
17
+
import { didDocCache, resolvePDS } from "../utils/api.js";
18
+
import { localDateFromTimestamp } from "../utils/date.js";
19
+
import { createOperationHistory, DiffEntry, groupBy } from "../utils/plc-logs.js";
20
+
import { BlobView } from "./blob.jsx";
21
21
22
22
type Tab = "collections" | "backlinks" | "identity" | "blobs";
23
23
type PlcEvent = "handle" | "rotation_key" | "service" | "verification_method";
+4
-4
src/views/stream.tsx
+4
-4
src/views/stream.tsx
···
1
-
import { createSignal, For, Show, onCleanup, onMount } from "solid-js";
2
-
import { JSONValue } from "../components/json";
3
-
import { A, useLocation, useSearchParams } from "@solidjs/router";
4
1
import { Firehose } from "@skyware/firehose";
5
-
import { TextInput } from "../components/text-input";
2
+
import { A, useLocation, useSearchParams } from "@solidjs/router";
3
+
import { createSignal, For, onCleanup, onMount, Show } from "solid-js";
6
4
import { Button } from "../components/button";
5
+
import { JSONValue } from "../components/json";
6
+
import { TextInput } from "../components/text-input";
7
7
8
8
const LIMIT = 25;
9
9
type Parameter = { name: string; param: string | string[] | undefined };
+1
-1
vite.config.ts
+1
-1
vite.config.ts
···
1
+
import tailwindcss from "@tailwindcss/vite";
1
2
import { defineConfig } from "vite";
2
3
import solidPlugin from "vite-plugin-solid";
3
4
import metadata from "./public/oauth-client-metadata.json";
4
-
import tailwindcss from "@tailwindcss/vite";
5
5
6
6
const SERVER_HOST = "127.0.0.1";
7
7
const SERVER_PORT = 13213;