Skip to content

Instantly share code, notes, and snippets.

View souporserious's full-sized avatar

Travis Arnold souporserious

View GitHub Profile
import { App } from '@tinyhttp/app'
import cors from 'cors'
import * as fs from 'fs/promises'
import * as prettier from 'prettier'
import * as codemod from '@codemod/core'
const app = new App()
const plugin = () => {
return {
@souporserious
souporserious / analyze.tsx
Last active January 22, 2025 18:17
Using TS Morph to analyze JSX
import React, { useState } from 'react';
import { Box, Text } from 'ink';
import TextInput from 'ink-text-input';
import Spinner from 'ink-spinner';
import Table from 'ink-table';
import type { ExportedDeclarations, ImportDeclaration } from 'ts-morph';
import { Project, SourceFile, ts } from 'ts-morph';
import { resolve } from 'node:path';
import { promises } from 'node:fs';
export function usePointer({
onStart,
onMove,
onEnd,
}: {
onStart: () => void
onMove: () => void
onEnd: () => void
}) {
const pressed = useSignal(false)
import * as React from "react"
import { useSnapshot } from "valtio"
import { TreeStateContext, TreeMapContext, createInitialTreeState } from "./contexts"
import { useServerComputedData } from "./server"
import { useIndex, useIndexedChildren } from "./use-indexed-children"
import { isServer, useIsomorphicLayoutEffect } from "./utils"
export function useTreeSnapshot<ComputedData extends any>(
computeData?: (treeMap: Map<string, any>) => ComputedData,
@souporserious
souporserious / atoms.tsx
Created August 12, 2022 01:45
Reforest jotai sketch
import * as React from "react"
import { atom, useAtom, useAtomValue } from "jotai"
import "./styles.css"
const isServer = typeof window === "undefined"
const useIsomorphicLayoutEffect = isServer
? React.useEffect
: React.useLayoutEffect
import * as React from 'react'
import { suspend } from 'suspend-react'
import { useIndexedChildren, useIndex } from 'use-indexed-children'
import mitt from 'mitt'
type EmitterContextValue = ReturnType<typeof mitt> | null
const EmitterContext = React.createContext<EmitterContextValue>(null)
type ChildrenMapContextValue = Map<string, any> | null
@souporserious
souporserious / yoga.tsx
Created July 9, 2022 22:01
Testing use-indexed-children with yoga
import * as React from 'react'
import * as Yoga from 'yoga-layout-prebuilt'
import { useIndexedChildren, useIndexPath } from 'use-indexed-children'
import useConstant from 'use-constant'
type Node = ReturnType<typeof Yoga.Node.create>
const LayoutContext = React.createContext<{ root: Node; node: Node } | null>(
null
)
type Node = {
type: 'grid' | 'row' | 'column' | 'space' | 'node'
parentType?: 'grid' | 'row' | 'column'
columns?: number
rows?: number
column?: number
columnOffset?: number
row?: number
rowOffset?: number
width: number | 'fill' | 'auto'
@souporserious
souporserious / fixtures.ts
Last active June 23, 2022 17:57
Print a 2D grid of nodes.
const layout = {
type: 'grid',
columns: 24,
rows: 18,
children: [
{
type: 'row',
width: 'auto',
height: 'auto',
children: [
@souporserious
souporserious / getEditorLink.ts
Created June 22, 2022 19:42
Opens a file in the user's IDE of choice