Skip to content

Instantly share code, notes, and snippets.

View nberlette's full-sized avatar
🧱
make, break, patch, repeat ad infinitum

Nicholas Berlette nberlette

🧱
make, break, patch, repeat ad infinitum
View GitHub Profile
@nberlette
nberlette / block_letters.ts
Last active April 17, 2025 23:25
TypeScript Block Letter Renderer (ASCII or Unicode)
/**
* This module provides a block letter rendering utility for text,
* capable of rendering arbitrary strings into multiple styles of
* block letters using either ASCII characters or Unicode blocks.
*
* It's perfect for creating stylized text in console applications!
*
*
* @license MIT (https://nick.mit-license.org)
* @author Nicholas Berlette <https://github.com/nberlette>
@nberlette
nberlette / LICENSE
Last active April 17, 2025 07:02
Rc, Weak, Cell, OnceCell in TypeScript
The MIT License (MIT)
Copyright (c) 2025+ Nicholas Berlette (https://github.com/nberlette)
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
@nberlette
nberlette / LICENSE
Last active April 17, 2025 07:02
colorhash
The MIT License (MIT)
Copyright (c) 2023-2025+ Nicholas Berlette (https://github.com/nberlette)
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
@nberlette
nberlette / example.ts
Last active March 23, 2025 08:37
`@promisify` decorator - wraps `[...]Sync` methods to create overloaded async variants that support callbacks and promises
import type {
Closer,
Reader,
ReaderSync,
Seeker,
SeekerSync,
Writer,
WriterSync,
} from "jsr:@std/[email protected]/types";
@nberlette
nberlette / playground.rs
Created March 15, 2025 05:37 — forked from rust-play/playground.rs
Code shared from the Rust Playground
//! # `braces`
//!
//! This module implements Bash-like brace expansion. It supports
//! comma-separated options (e.g. `"a{b,c}d"` expands to `["abd", "acd"]`),
//! numeric sequences (e.g. `"file{1..3}.txt"`), alpha sequences, and even
//! nested brace expressions. It also supports stepped sequences (e.g. to
//! generate 10, 20, 30, etc. use `"file{10..30..10}.txt"`).
//!
//! The overall algorithm is similar to the TypeScript version: first the
//! string is “escaped” by swapping literal chars for tokens, balanced brace
@nberlette
nberlette / basic.ts
Last active March 14, 2025 21:12
typescript runtime type validation
// deno-lint-ignore-file no-explicit-any no-namespace
import { inspect, type InspectOptions } from "node:util";
// #region Validation Types
export type Err<T = never> = {
success: false;
error: string | ValidationError<T>;
};
@nberlette
nberlette / ease.ts
Created March 14, 2025 09:16
TypeScript Easing / Tween API
export interface EasingMethods {
in(t: number): number;
out(t: number): number;
inOut(t: number): number;
}
interface EasingDef<K extends string = string> extends EasingMethods {
readonly name: K;
}
@nberlette
nberlette / atob_btoa.wat
Created March 14, 2025 09:14
WebAssembly (WAT) implementation of atob / btoa
(module
;; Memory: 1 page = 64 KiB
(memory $memory 1)
;; Exported error flag (0 = no error, 1 = error)
(global $error_flag (mut i32) (i32.const 0))
;; Base64 encoding table
(data (i32.const 0) "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
@nberlette
nberlette / option.ts
Created March 14, 2025 09:10
Option<T>
const _tag: unique symbol = Symbol("Option.#tag");
type _tag = typeof _tag;
export interface Some<T> extends Option<T> {
readonly [_tag]: "Some";
readonly value: T;
}
export interface None extends Option<never> {
@nberlette
nberlette / LICENSE
Last active April 17, 2025 07:06
Virtual File System API (mostly compatible with `node:fs`)
The MIT License (MIT)
Copyright (c) 2025+ Nicholas Berlette (https://github.com/nberlette)
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions: