Skip to content

Instantly share code, notes, and snippets.

View danielbayley's full-sized avatar
👨‍💻
Working on too many things…

Daniel Bayley danielbayley

👨‍💻
Working on too many things…
View GitHub Profile
@samwho
samwho / DOM.ts
Created May 19, 2025 16:38
DOM.ts
interface ExtraOpts {
class?: string | string[];
data?: Record<string, string>;
}
type TagName = keyof HTMLElementTagNameMap;
type Tag = HTMLElementTagNameMap;
type Opts<K extends TagName> = Partial<Tag[K]> & ExtraOpts;
type Child = Node | string;
@kwikwag
kwikwag / node-engine-strict.js
Created April 29, 2025 09:31
A script that ensures your project runs with a Node.js version that satisfies the `engines.node` field in your `package.json`, using either NVM or the system-installed Node.js.
/*
# `node-engine-strict.js`
A script that ensures your project runs with a Node.js version that satisfies
the `engines.node` field in your `package.json`.
It works by checking for a compatible version installed via **NVM** (Node
Version Manager), and will fall back to the system-installed Node.js if it's
compatible. If neither is suitable, the script exits with an error.
@t3dotgg
t3dotgg / try-catch.ts
Last active June 1, 2025 04:06
Theo's preferred way of handling try/catch in TypeScript
// Types for the result object with discriminated union
type Success<T> = {
data: T;
error: null;
};
type Failure<E> = {
data: null;
error: E;
};
@fredrare
fredrare / NumberRange.ts
Created December 6, 2024 21:34
Small and simple generic number range implementation in TypeScript
type NextDigit = [1, 2, 3, 4, 5, 6, 7, 8, 9]
type Split<Str> = Str extends `${infer Head extends number}${infer Tail}` ? [Head, ...Split<Tail>] : []
type Increase<X extends number[]> = X extends [...infer Rest extends number[], infer Last extends number] ?
Last extends 9 ? [...Increase<Rest>, 0] : [...Rest, NextDigit[Last]]
: [1]
type TupleToString<T extends number[]> =
T extends [infer First extends number, ...infer Rest extends number[]]

Ruby: The future of frozen string literals

What is a literal?

In programming languages, literals are textual representations of values in the source code. This is a syntactical concept.

Some examples:

7 # integer literal
@danielbayley
danielbayley / seticon.swift
Created February 25, 2023 15:27
Set icon for file or folder from image, existing app or folder.
#! /usr/bin/xcrun swift
import Cocoa
let args = CommandLine.arguments[1...]
let (target, icon) = (URL(fileURLWithPath: args.first!).path, args[2])
var folder: ObjCBool = false
FileManager.default.fileExists(atPath: icon, isDirectory: &folder)
let image: NSImage = folder.boolValue
@kaizhu256
kaizhu256 / globExclude.mjs
Last active June 29, 2024 01:21
This gist file demos a performant, self-contained function "globExclude()", which batch-globs <pathnameList> in a single pass, with given filters <excludeList>, <includeList>.
/*jslint beta, node*/
// This gist file demos a performant, self-contained function "globExclude()",
// which batch-globs <pathnameList> in a single pass,
// with given filters <excludeList>, <includeList>.
//
// Could be useful if you need to glob thousands of files for test-coverage,
// or other purposes.
// Example usage
@n8henrie
n8henrie / OpenTerminalToFinderWindow.js
Last active March 9, 2025 02:19
JXA to open a Terminal window to the frontmost Finder window
#!/usr/bin/osascript -l JavaScript
'use strict';
const DEBUG = false;
function launchTerminal(path) {
const terminalApp = Application("Terminal.app")
terminalApp.includeStandardAdditions = true
let cmd = `cd ${path}; clear;`
url scheme:
x-apple.systempreferences:com.apple.KEY[.KEY]?SUB-PANE
examples:
x-apple.systempreferences:com.apple.systempreferences.AppleIDSettings?iCloud
x-apple.systempreferences:com.apple.preference.keyboard?Shortcuts
urls:
com.apple.systempreferences.ApplelDSettings