handy online tools for AT Protocol boat.kelinci.net
atproto bluesky atcute typescript solidjs
20
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: enable verbatimModuleSyntax

Mary f37fe97a 0a164cd7

+55 -55
+1 -1
src/api/queries/plc.ts
··· 1 1 import { defs } from '@atcute/did-plc'; 2 - import { Did } from '@atcute/lexicons/syntax'; 2 + import type { Did } from '@atcute/lexicons/syntax'; 3 3 4 4 export const getPlcAuditLogs = async ({ did, signal }: { did: Did<'plc'>; signal?: AbortSignal }) => { 5 5 const origin = import.meta.env.VITE_PLC_DIRECTORY_URL;
+2 -2
src/api/types/plc.ts
··· 1 1 import * as v from '@badrap/valita'; 2 2 3 - import { defs, UnsignedOperation } from '@atcute/did-plc'; 3 + import { defs, type UnsignedOperation } from '@atcute/did-plc'; 4 4 5 - import { ToValidator } from '../utils/valita'; 5 + import type { ToValidator } from '../utils/valita'; 6 6 import { serviceUrlString } from './strings'; 7 7 8 8 const _unsignedOperation = defs.unsignedOperation as ToValidator<UnsignedOperation>;
+1 -1
src/components/inputs/button.tsx
··· 1 - import { JSX } from 'solid-js'; 1 + import type { JSX } from 'solid-js'; 2 2 3 3 interface ButtonProps { 4 4 children?: JSX.Element;
+2 -2
src/components/inputs/multiline-input.tsx
··· 1 - import { createEffect, JSX } from 'solid-js'; 1 + import { createEffect, type JSX } from 'solid-js'; 2 2 3 3 import { createId } from '~/lib/hooks/id'; 4 4 5 - import { BoundInputEvent } from './_types'; 5 + import type { BoundInputEvent } from './_types'; 6 6 7 7 interface MultilineInputProps { 8 8 label: JSX.Element;
+2 -2
src/components/inputs/radio-input.tsx
··· 1 - import { JSX } from 'solid-js'; 1 + import type { JSX } from 'solid-js'; 2 2 3 3 import { createId } from '~/lib/hooks/id'; 4 4 5 - import { BoundInputEvent } from './_types'; 5 + import type { BoundInputEvent } from './_types'; 6 6 7 7 interface RadioInputProps<T extends string> { 8 8 label: JSX.Element;
+2 -2
src/components/inputs/select-input.tsx
··· 1 - import { createEffect, JSX } from 'solid-js'; 1 + import { createEffect, type JSX } from 'solid-js'; 2 2 3 3 import { createId } from '~/lib/hooks/id'; 4 4 5 - import { BoundInputEvent } from './_types'; 5 + import type { BoundInputEvent } from './_types'; 6 6 7 7 interface SelectInputProps<T extends string> { 8 8 label: JSX.Element;
+2 -2
src/components/inputs/text-input.tsx
··· 1 - import { createEffect, JSX } from 'solid-js'; 1 + import { createEffect, type JSX } from 'solid-js'; 2 2 3 3 import { createId } from '~/lib/hooks/id'; 4 4 5 - import { BoundInputEvent } from './_types'; 5 + import type { BoundInputEvent } from './_types'; 6 6 7 7 interface TextInputProps { 8 8 label: JSX.Element;
+1 -1
src/components/inputs/toggle-input.tsx
··· 2 2 3 3 import { createId } from '~/lib/hooks/id'; 4 4 5 - import { BoundInputEvent } from './_types'; 5 + import type { BoundInputEvent } from './_types'; 6 6 7 7 export interface ToggleInputProps { 8 8 label: string;
+1 -1
src/components/wizard.tsx
··· 1 - import { Component, createMemo, createSignal, For, JSX } from 'solid-js'; 1 + import { type Component, createMemo, createSignal, For, type JSX } from 'solid-js'; 2 2 3 3 type EmptyObjectKeys<T> = { 4 4 [K in keyof T]: T[K] extends Record<string, never> ? K : never;
+1 -1
src/lib/utils/search-params.ts
··· 2 2 3 3 import { isDid, isHandle } from '@atcute/lexicons/syntax'; 4 4 5 - import { UnwrapArray } from '~/api/utils/types'; 5 + import type { UnwrapArray } from '~/api/utils/types'; 6 6 7 7 export interface ParamParser<T> { 8 8 parse: (value: string | string[] | null) => T | null;
+2 -2
src/views/bluesky/threadgate-applicator/page.tsx
··· 2 2 3 3 import { AppBskyFeedDefs, AppBskyFeedThreadgate } from '@atcute/bluesky'; 4 4 import { CredentialManager } from '@atcute/client'; 5 - import { DidDocument } from '@atcute/identity'; 5 + import type { DidDocument } from '@atcute/identity'; 6 6 7 - import { UnwrapArray } from '~/api/utils/types'; 7 + import type { UnwrapArray } from '~/api/utils/types'; 8 8 9 9 import { history } from '~/globals/navigation'; 10 10
+2 -2
src/views/bluesky/threadgate-applicator/steps/step1_handle-input.tsx
··· 14 14 15 15 import Button from '~/components/inputs/button'; 16 16 import TextInput from '~/components/inputs/text-input'; 17 - import { Stage, StageActions, StageErrorView, WizardStepProps } from '~/components/wizard'; 17 + import { Stage, StageActions, StageErrorView, type WizardStepProps } from '~/components/wizard'; 18 18 19 - import { ThreadgateApplicatorConstraints, ThreadgateState, ThreadItem } from '../page'; 19 + import type { ThreadgateApplicatorConstraints, ThreadgateState, ThreadItem } from '../page'; 20 20 import { sortThreadgateState } from '../utils'; 21 21 22 22 class NoThreadsError extends Error {}
+3 -3
src/views/bluesky/threadgate-applicator/steps/step2_rules-input.tsx
··· 2 2 3 3 import { AppBskyFeedThreadgate } from '@atcute/bluesky'; 4 4 import { ok } from '@atcute/client'; 5 - import { $type } from '@atcute/lexicons'; 5 + import type { $type } from '@atcute/lexicons'; 6 6 7 7 import { appViewRpc } from '~/globals/rpc'; 8 8 ··· 11 11 import { createQuery } from '~/lib/utils/query'; 12 12 13 13 import RadioInput from '~/components/inputs/radio-input'; 14 - import { Stage, StageActions, WizardStepProps } from '~/components/wizard'; 14 + import { Stage, StageActions, type WizardStepProps } from '~/components/wizard'; 15 15 16 16 import CircularProgressView from '~/components/circular-progress-view'; 17 17 import Button from '~/components/inputs/button'; 18 18 import ToggleInput from '~/components/inputs/toggle-input'; 19 19 20 - import { ThreadgateApplicatorConstraints, ThreadgateRule } from '../page'; 20 + import type { ThreadgateApplicatorConstraints, ThreadgateRule } from '../page'; 21 21 import { sortThreadgateAllow } from '../utils'; 22 22 23 23 const enum FilterType {
+2 -2
src/views/bluesky/threadgate-applicator/steps/step3_authentication.tsx
··· 2 2 3 3 import { CredentialManager } from '@atcute/client'; 4 4 5 - import { WizardStepProps } from '~/components/wizard'; 5 + import type { WizardStepProps } from '~/components/wizard'; 6 6 import BlueskyLoginStep from '~/components/wizards/bluesky-login-step'; 7 7 8 - import { ThreadgateApplicatorConstraints } from '../page'; 8 + import type { ThreadgateApplicatorConstraints } from '../page'; 9 9 10 10 const Step3_Authentication = ({ 11 11 data,
+2 -2
src/views/bluesky/threadgate-applicator/steps/step4_confirmation.tsx
··· 12 12 import Button from '~/components/inputs/button'; 13 13 import ToggleInput from '~/components/inputs/toggle-input'; 14 14 import Logger, { createLogger } from '~/components/logger'; 15 - import { Stage, StageActions, StageErrorView, WizardStepProps } from '~/components/wizard'; 15 + import { Stage, StageActions, StageErrorView, type WizardStepProps } from '~/components/wizard'; 16 16 17 - import { ThreadgateApplicatorConstraints } from '../page'; 17 + import type { ThreadgateApplicatorConstraints } from '../page'; 18 18 19 19 const Step4_Confirmation = ({ 20 20 data,
+2 -2
src/views/bluesky/threadgate-applicator/steps/step5_finished.tsx
··· 1 - import { Stage, WizardStepProps } from '~/components/wizard'; 1 + import { Stage, type WizardStepProps } from '~/components/wizard'; 2 2 3 - import { ThreadgateApplicatorConstraints } from '../page'; 3 + import type { ThreadgateApplicatorConstraints } from '../page'; 4 4 5 5 export const Step5_Finished = ({}: WizardStepProps<ThreadgateApplicatorConstraints, 'Step5_Finished'>) => { 6 6 return (
+1 -1
src/views/bluesky/threadgate-applicator/utils.ts
··· 1 - import { ThreadgateState } from './page'; 1 + import type { ThreadgateState } from './page'; 2 2 3 3 const collator = new Intl.Collator('en'); 4 4
+1 -1
src/views/frontpage.tsx
··· 1 - import { Component, ComponentProps } from 'solid-js'; 1 + import type { Component, ComponentProps } from 'solid-js'; 2 2 3 3 import { useTitle } from '~/lib/navigation/router'; 4 4
+1 -1
src/views/identity/plc-applicator/page.tsx
··· 7 7 import type { DidDocument } from '@atcute/identity'; 8 8 import type { Did } from '@atcute/lexicons/syntax'; 9 9 10 - import { UpdatePayload } from '~/api/types/plc'; 10 + import type { UpdatePayload } from '~/api/types/plc'; 11 11 12 12 import { history } from '~/globals/navigation'; 13 13
+1 -1
src/views/identity/plc-applicator/plc-utils.ts
··· 1 1 import type { IndexedEntry } from '@atcute/did-plc'; 2 2 3 - import { UpdatePayload } from '~/api/types/plc'; 3 + import type { UpdatePayload } from '~/api/types/plc'; 4 4 5 5 import { assert } from '~/lib/utils/invariant'; 6 6
+2 -2
src/views/identity/plc-applicator/steps/step1_handle-input.tsx
··· 14 14 import Button from '~/components/inputs/button'; 15 15 import RadioInput from '~/components/inputs/radio-input'; 16 16 import TextInput from '~/components/inputs/text-input'; 17 - import { Stage, StageActions, StageErrorView, WizardStepProps } from '~/components/wizard'; 17 + import { Stage, StageActions, StageErrorView, type WizardStepProps } from '~/components/wizard'; 18 18 19 - import { PlcApplicatorConstraints, type PlcInformation } from '../page'; 19 + import type { PlcApplicatorConstraints, PlcInformation } from '../page'; 20 20 21 21 type Method = 'pds' | 'key'; 22 22
+3 -3
src/views/identity/plc-applicator/steps/step2_pds-authentication.tsx
··· 1 1 import { createSignal, Match, Show, Switch } from 'solid-js'; 2 2 3 - import { AtpAccessJwt, Client, ClientResponseError, CredentialManager, ok } from '@atcute/client'; 3 + import { type AtpAccessJwt, Client, ClientResponseError, CredentialManager, ok } from '@atcute/client'; 4 4 import { getPdsEndpoint } from '@atcute/identity'; 5 5 6 6 import { formatTotpCode, TOTP_RE } from '~/api/utils/auth'; ··· 10 10 11 11 import Button from '~/components/inputs/button'; 12 12 import TextInput from '~/components/inputs/text-input'; 13 - import { Stage, StageActions, StageErrorView, WizardStepProps } from '~/components/wizard'; 13 + import { Stage, StageActions, StageErrorView, type WizardStepProps } from '~/components/wizard'; 14 14 15 - import { PlcApplicatorConstraints } from '../page'; 15 + import type { PlcApplicatorConstraints } from '../page'; 16 16 17 17 class InsufficientLoginError extends Error {} 18 18
+1 -1
src/views/identity/plc-applicator/steps/step2_private-key-input.tsx
··· 8 8 import Button from '~/components/inputs/button'; 9 9 import RadioInput from '~/components/inputs/radio-input'; 10 10 import TextInput from '~/components/inputs/text-input'; 11 - import { Stage, StageActions, StageErrorView, WizardStepProps } from '~/components/wizard'; 11 + import { Stage, StageActions, StageErrorView, type WizardStepProps } from '~/components/wizard'; 12 12 13 13 import type { Keypair, PlcApplicatorConstraints, PrivateKeySigningMethod } from '../page'; 14 14
+2 -2
src/views/identity/plc-applicator/steps/step3_operation-select.tsx
··· 12 12 import Button from '~/components/inputs/button'; 13 13 import RadioInput from '~/components/inputs/radio-input'; 14 14 import SelectInput from '~/components/inputs/select-input'; 15 - import { Stage, StageActions, StageErrorView, WizardStepProps } from '~/components/wizard'; 15 + import { Stage, StageActions, StageErrorView, type WizardStepProps } from '~/components/wizard'; 16 16 17 - import { PlcApplicatorConstraints } from '../page'; 17 + import type { PlcApplicatorConstraints } from '../page'; 18 18 19 19 const Step3_OperationSelect = ({ 20 20 data,
+2 -2
src/views/identity/plc-applicator/steps/step4_payload-input.tsx
··· 4 4 5 5 import Button from '~/components/inputs/button'; 6 6 import MultilineInput from '~/components/inputs/multiline-input'; 7 - import { Stage, StageActions, StageErrorView, WizardStepProps } from '~/components/wizard'; 7 + import { Stage, StageActions, StageErrorView, type WizardStepProps } from '~/components/wizard'; 8 8 9 - import { PlcApplicatorConstraints } from '../page'; 9 + import type { PlcApplicatorConstraints } from '../page'; 10 10 import { getPlcPayload } from '../plc-utils'; 11 11 12 12 export const Step4_PayloadInput = ({
+2 -2
src/views/identity/plc-applicator/steps/step5_pds-confirmation.tsx
··· 9 9 import CheckIcon from '~/components/ic-icons/baseline-check'; 10 10 import Button from '~/components/inputs/button'; 11 11 import TextInput from '~/components/inputs/text-input'; 12 - import { Stage, StageActions, StageErrorView, WizardStepProps } from '~/components/wizard'; 12 + import { Stage, StageActions, StageErrorView, type WizardStepProps } from '~/components/wizard'; 13 13 14 - import { PlcApplicatorConstraints } from '../page'; 14 + import type { PlcApplicatorConstraints } from '../page'; 15 15 16 16 export const Step5_PdsConfirmation = ({ 17 17 data,
+2 -2
src/views/identity/plc-applicator/steps/step5_private-key-confirmation.tsx
··· 9 9 10 10 import Button from '~/components/inputs/button'; 11 11 import TextInput from '~/components/inputs/text-input'; 12 - import { Stage, StageActions, StageErrorView, WizardStepProps } from '~/components/wizard'; 12 + import { Stage, StageActions, StageErrorView, type WizardStepProps } from '~/components/wizard'; 13 13 14 - import { PlcApplicatorConstraints } from '../page'; 14 + import type { PlcApplicatorConstraints } from '../page'; 15 15 16 16 const Step5_PrivateKeyConfirmation = ({ 17 17 data,
+2 -2
src/views/identity/plc-applicator/steps/step6_finished.tsx
··· 1 - import { Stage, WizardStepProps } from '~/components/wizard'; 1 + import { Stage, type WizardStepProps } from '~/components/wizard'; 2 2 3 - import { PlcApplicatorConstraints } from '../page'; 3 + import type { PlcApplicatorConstraints } from '../page'; 4 4 5 5 export const Step6_Finished = ({}: WizardStepProps<PlcApplicatorConstraints, 'Step6_Finished'>) => { 6 6 return (
+1 -1
src/views/identity/plc-oplogs.tsx
··· 1 - import { createSignal, JSX, Match, onCleanup, Switch } from 'solid-js'; 1 + import { createSignal, Match, onCleanup, Switch, type JSX } from 'solid-js'; 2 2 3 3 import type { IndexedEntry, Service } from '@atcute/did-plc'; 4 4 import { isPlcDid } from '@atcute/identity';
+2 -3
src/views/repository/repo-archive-explore/page.tsx
··· 4 4 5 5 import { createMutation } from '~/lib/utils/mutation'; 6 6 7 + import type { Archive, RecordEntry } from './types'; 8 + import ExploreView from './views/explore'; 7 9 import WelcomeView from './views/welcome'; 8 - 9 - import { Archive, RecordEntry } from './types'; 10 - import ExploreView from './views/explore'; 11 10 12 11 const ArchiveExplorePage = () => { 13 12 const mutation = createMutation({
+1 -1
src/views/repository/repo-archive-explore/views/explore/record.tsx
··· 4 4 5 5 import { createQuery } from '~/lib/utils/query'; 6 6 7 - import { Archive, RecordEntry } from '../../types'; 7 + import type { Archive, RecordEntry } from '../../types'; 8 8 9 9 interface RecordSubviewProps { 10 10 archive: Archive;
+2 -2
src/views/repository/repo-archive-explore/views/welcome.tsx
··· 3 3 import type { MutationReturn } from '~/lib/utils/mutation'; 4 4 5 5 import CircularProgress from '~/components/circular-progress'; 6 - 7 - import { Archive } from '../types'; 8 6 import { createDropZone } from '~/lib/hooks/dropzone'; 7 + 8 + import type { Archive } from '../types'; 9 9 10 10 interface WelcomeViewProps { 11 11 mutation: MutationReturn<Archive, { file: File }>;
+1
tsconfig.app.json
··· 9 9 "moduleResolution": "Bundler", 10 10 "allowImportingTsExtensions": true, 11 11 "isolatedModules": true, 12 + "verbatimModuleSyntax": true, 12 13 "moduleDetection": "force", 13 14 "noEmit": true, 14 15