Skip to content

Instantly share code, notes, and snippets.

View WomB0ComB0's full-sized avatar
πŸ˜΅β€πŸ’«
I need an Advil

Mike Odnis WomB0ComB0

πŸ˜΅β€πŸ’«
I need an Advil
View GitHub Profile
@WomB0ComB0
WomB0ComB0 / multi-threading.ts
Created November 15, 2024 18:56
Typescript multi-threading template (will apply opinionated changes soon)
// types.ts
export interface WorkerMessage<T = any> {
id: string;
type: 'TASK' | 'RESULT' | 'ERROR' | 'STATUS';
payload: T;
timestamp: number;
}
export interface WorkerTask {
id: string;
@WomB0ComB0
WomB0ComB0 / python.d.ts
Created November 13, 2024 05:33
adding python methods to typescript
/**
* Extends global interfaces to add Python-like functionality
*/
declare global {
interface Number {
/**
* Returns true if the number is within the given range [start, end).
* Similar to Python's `in range()`.
*/
inRange(start: number, end?: number, step?: number): boolean;
@WomB0ComB0
WomB0ComB0 / my-ts-utils.ts
Created November 13, 2024 05:14
Advanced Typescript utility types
// Prettify - Prettifies a type by removing readonly and optional modifiers
type Prettify<T> = {
[K in keyof T]: T[K];
} & {};
// Head - Gets the first element of an array
type Head<T extends Array<any>> = T extends [infer U, ...infer _Rest] ? U : never
// Tail - Gets the tail of an array
type Tail<T extends any[]> = T extends [infer _U, ...infer Rest] ? Rest : never
@WomB0ComB0
WomB0ComB0 / lazy-image-wrapper.tsx
Created November 13, 2024 04:42
Lazy image wrapper, React
import React, {
type PropsWithChildren,
cloneElement,
isValidElement,
type DetailedReactHTMLElement,
type ImgHTMLAttributes,
type FC,
Children,
} from "react";
@WomB0ComB0
WomB0ComB0 / lazy-blur-image-hasher.js
Created November 13, 2024 04:36
bs64 image hasher javascript
"use strict";
const sharp = require("sharp");
const fs = require("fs");
const path = require("path");
sharp.cache(false);
async function generateLazyImage(src) {
const { default: got } = await import("got");
@WomB0ComB0
WomB0ComB0 / convert-to-webp.py
Last active January 4, 2025 10:09
convert images to webp
import os
import subprocess
from pathlib import Path
from concurrent.futures import Future, ThreadPoolExecutor, as_completed
from time import perf_counter
import logging
from typing import List, Set
# Constants
EXTENSIONS: tuple[str, ...] = (".png", ".jpg", ".jpeg")
@WomB0ComB0
WomB0ComB0 / merge-package-json.ts
Created November 1, 2024 19:32
Merge package.json files
import { readFileSync, writeFileSync } from "node:fs";
import { join } from "node:path";
interface PackageJson {
dependencies: Record<string, string>;
devDependencies: Record<string, string>;
[key: string]: any;
}
function mergePackageJsons(current: PackageJson, toMerge: PackageJson): PackageJson {
@WomB0ComB0
WomB0ComB0 / full-stack.sh
Last active May 5, 2025 22:15
full-stack language install
#!/bin/bash
# Exit immediately if a command exits with a non-zero status.
set -e
# Treat unset variables as an error.
set -u
# --- Colors ---
RED='\033[0;31m'
GREEN='\033[0;32m'
@WomB0ComB0
WomB0ComB0 / sort-package-json.ts
Created October 16, 2024 17:21
Sort your package.json dependencies
import { readFileSync, writeFileSync } from "node:fs";
import { join } from "node:path";
const packageJsonPath: string = join(process.cwd(), "package.json");
const packageJson: { dependencies: Record<string, string>, devDependencies: Record<string, string> } = JSON.parse(readFileSync(packageJsonPath, "utf8"));
const dependencies: Map<string, string> = new Map(Object.entries(packageJson.dependencies));
const devDependencies: Map<string, string> = new Map(Object.entries(packageJson.devDependencies));
const dependencies_: Record<string, string> = Object.fromEntries(dependencies);
@WomB0ComB0
WomB0ComB0 / use-persisted-id.ts
Created September 3, 2024 23:11
Query param state management
import { useQueryState } from 'nuqs';
import { useCallback } from 'react';
import { useIsomorphicLayoutEffect } from 'usehooks-ts';
import { v4 as uuidv4 } from 'uuid';
export const usePersistedId = (
key: string,
): {
id: string | null;
clearId: () => void;