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 / dataurl.ts
Last active February 17, 2024 07:50
`DataURL`: a custom subclass of `URL` to handle data-uri strings
/**
* User-extensible type for encoding types that can be used with the `DataURL`
* class. This interface can be extended using TypeSript's declaration merging,
* to supplement the built-in encoding types. */
// deno-lint-ignore no-empty-interface
export interface EncodingTypeMap {
"uri": "uri";
"url": "uri";
"uri-component": "uri";
"percent": "uri";
@nberlette
nberlette / chainable.ts
Last active January 18, 2024 21:38
Chainable Stage 3 Decorators (experimental)
/*~----------------------------------------~*\
* CHAINABLE DECORATORS UTILITY CLASS *
* FOR TYPESCRIPT 5.0 *
*~----------------------------------------~*
* © 2023-2024 NICHOLAS BERLETTE • MIT *
\*~----------------------------------------~*/
// deno-lint-ignore-file no-explicit-any ban-types
import type {
@nberlette
nberlette / expect.ts
Last active February 9, 2024 23:53
Hard fork of the Deno stdlib 'expect' module + BDD testing tools (from https://deno.land/std/expect/mod.ts)
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
// Copyright 2019 Allain Lalonde. All rights reserved. ISC License.
import {
type AnyConstructor,
type Matcher,
matchers,
type TypeNames,
} from "./matchers.ts";
import { AssertionError, type Async, type Fn, isPromiseLike } from "./utils.ts";
@nberlette
nberlette / example.ts
Last active January 17, 2024 06:56
Polyfill for the Iterator Helpers TC39 Proposal
import { Iterator } from "./iterator.ts";
/** Simple numeric iterator that returns the numbers passed to the constructor. Extremely useless. */
export class NumericIterator extends Iterator<number> {
#index = 0;
#numbers: number[] = [];
constructor(...numbers: number[]) {
super();
this.#numbers = numbers;
@nberlette
nberlette / hook.ts
Last active August 2, 2024 14:19
`Hook`: git hooks integration with Deno's task runner
const TASK_NAME_REGEXP = /^[a-z\^\$][a-z0-9\-_$:.\^]*$/i;
type TaskConfig = { [key: string]: string };
type HooksConfig<K extends MaybeHookNames = Hook.Name> = {
readonly [P in K]: string | string[];
};
type HookNames = typeof Hook.names[number];
@nberlette
nberlette / xml-formatter.ts
Last active March 24, 2024 13:53
XMLFormatter
export enum EOL {
CRLF = "\r\n",
CR = "\r",
LF = "\n",
}
export interface Options {
newLine?: EOL | `${EOL}`;
lineWidth?: number;
tabSize?: number;
@nberlette
nberlette / char.ts
Last active November 26, 2023 23:37
`Char`: TypeScript Enum of Unicode Character Code Points
export enum CharacterCodes {
Null = 0,
/**
* The `\b` character.
*/
Backspace = 8,
/**
* The `\t` character.
*/
Tab = 9,
@nberlette
nberlette / char.ts
Last active January 25, 2024 06:56
`Color`: TypeScript Color Conversion and Manipulation Tools
export enum Char {
Null = 0,
/**
* The `\b` character.
*/
Backspace = 8,
/**
* The `\t` character.
*/
Tab = 9,
@nberlette
nberlette / README.md
Last active April 7, 2024 09:13
`DenoHTML`: enhances Deno's builtin HTML documentation generator (v1.38.0+)

Deno HTML Documentation Enhancer

This is a simple tool to enhance the HTML documentation generated by the Deno CLI's builtin command, deno doc --html (Deno v1.38.0+). It improves the CSS styling, adding support for dark mode and persisted color scheme preferences, along with some other usability improvements.

Usage

@nberlette
nberlette / style.css
Last active November 25, 2023 21:39
deno doc stylesheet with custom props instead of hardcoded values
:root {
--bg-body: rgb(231 229 228);
--bg-content: white;
--bg-highlight: white;
--bg-searchbar: rgb(231 229 228);
--bg-search-results-hover: rgb(243 244 246);
--bg-code: rgb(243 244 246);
--bg-overload-label: rgb(243 244 246);