Skip to content

Instantly share code, notes, and snippets.

View saiashirwad's full-sized avatar
🏠
Working from home

texoport saiashirwad

🏠
Working from home
View GitHub Profile
@saiashirwad
saiashirwad / either.ts
Last active December 30, 2024 17:24
A minimal Either in Typescript, with generator syntax
export type Either<R, L> = Left<L, R> | Right<R, L>
export class Left<L, R = never> {
readonly _tag = "Left"
constructor(public readonly left: L) {}
*[Symbol.iterator](): Generator<Either<R, L>, R, any> {
return yield this
}
}
@saiashirwad
saiashirwad / colors.lua
Created December 18, 2024 13:24
make neovim use terminal's colors
vim.opt.termguicolors = false
vim.env.TERM = "xterm-256color"
vim.cmd("colorscheme default")
vim.cmd("highlight Normal ctermbg=NONE guibg=NONE")
vim.cmd("highlight NonText ctermbg=NONE guibg=NONE")
vim.cmd("highlight SignColumn ctermbg=NONE guibg=NONE")
vim.cmd("highlight VertSplit ctermbg=NONE guibg=NONE")
@saiashirwad
saiashirwad / xmllang.ts
Last active October 27, 2024 12:11
xmllang v0
export type merge<O> = { [K in keyof O]: O[K] } & {};
type Type = "number" | "string";
type concatStrings<arr extends any[], acc extends string = ""> = arr extends []
? acc
: arr extends [infer x extends string]
? concatStrings<[], `${acc}${x}`>
: arr extends [infer x extends string, ...infer xs extends string[]]
? concatStrings<xs, `${acc}${x}`>
@saiashirwad
saiashirwad / .phoenix.js
Last active July 7, 2024 10:55
phoenix-stream-mode
const frame = Screen.main().visibleFrame();
const toggleStreaming = Key.on("s", ["control", "option"], () => {
const isStreaming = Storage.get("isStreaming") ?? false;
Storage.set("isStreaming", !isStreaming);
if (isStreaming) {
getAndMoveApp(
"Chatterino",
{ x: 0, y: 0 },
{ width: 250, height: frame.height },
import { FileSystem } from '@effect/platform';
import { NodeFileSystem, NodeRuntime } from '@effect/platform-node';
import * as Codegen from '@sinclair/typebox-codegen';
import { Console, Context, Effect, Layer, Ref, Stream, pipe } from 'effect';
import { compose } from 'effect/Function';
import { kebabToSnake, snakeToPascal } from 'effect/String';
import type { InternalRoute } from 'elysia';
import * as fs from 'node:fs/promises';
import ts from 'typescript';
import { elysiaRouter } from '~/elysia.router';
alt - h : yabai -m window --focus west
alt - j : yabai -m window --focus south
alt - k : yabai -m window --focus north
alt - l : yabai -m window --focus east
alt + shift - h : yabai -m window --swap west || $(yabai -m window --display west; yabai -m display --focus west)
alt + shift - j : yabai -m window --swap south || $(yabai -m window --display south; yabai -m display --focus south)
alt + shift - k : yabai -m window --swap north || $(yabai -m window --display north; yabai -m display --focus north)
alt + shift - l : yabai -m window --swap east || $(yabai -m window --display east; yabai -m display --focus east)
@saiashirwad
saiashirwad / nightmare-2.sql
Last active February 7, 2024 19:25
nightmare.sql
drop function if exists create_workflow(
name text, created_by varchar(24), workflow_type workflow_type, milestone_name text
);
create function create_workflow(name text, created_by varchar(24), workflow_type workflow_type, milestone_name text)
returns uuid
language plpgsql
as
$$
local utils = require("utils")
return {
{
"nvim-treesitter/nvim-treesitter",
init = function()
utils.lazy_load("nvim-treesitter")
end,
cmd = { "TSInstall", "TSBufEnable", "TSBufDisable", "TSModuleInfo" },
build = ":TSUpdate",
type ControlledField<
TFieldValues extends FieldValues = FieldValues,
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
> = {
control: Control<TFieldValues>;
name: TName;
label?: string;
description?: string;
render: (props: {
field: ControllerRenderProps<TFieldValues, TName>;