Skip to content

Instantly share code, notes, and snippets.

View SystemDisc's full-sized avatar

Zorn SystemDisc

View GitHub Profile
@SystemDisc
SystemDisc / page.tsx
Created July 23, 2024 07:52
Get Tailwind CSS styles for a dynamic HTML string (e.g. CMS content) in a Next.js 14+ Server Component
import appRootPath from 'app-root-path';
import { readFile } from 'fs/promises';
import { resolve } from 'path';
import postcss from 'postcss';
import tailwindcss, { Config } from 'tailwindcss';
function extractTailwindClasses(htmlContent: string): string[] {
const classRegex = /class=("([^"]+?)"|'([^']+?)')/g;
const classes = new Set<string>();
@SystemDisc
SystemDisc / ynab-improvements.user.js
Last active December 18, 2019 02:48
YNAB's new web software is a million times worse than their desktop software was
// ==UserScript==
// @name YNAB Improvements
// @namespace https://zornco.com/
// @version 0.0.7
// @description Improvements to the YNAB web app by Timothy Zorn (SystemDisc)
// @author SystemDisc
// @updateURL https://rawgit.com/SystemDisc/dc0f2745e8b3cf9e7dd7522c0609299d/raw/50c2268551b5f60d593e3a138e8b1bc4b4e048c8/ynab-improvements.user.js
// @downloadURL https://rawgit.com/SystemDisc/dc0f2745e8b3cf9e7dd7522c0609299d/raw/50c2268551b5f60d593e3a138e8b1bc4b4e048c8/ynab-improvements.user.js
// @match https://app.youneedabudget.com/*
// @run-at document-end
@SystemDisc
SystemDisc / deferred-promise.ts
Last active February 12, 2026 21:56
class definition for DeferredPromise
export class DeferredPromise<T> {
public promise: Promise<T>;
private resolved: PromiseLike<T>;
public constructor() {
this.promise = new Promise((resolve, reject) => {
if (this.resolved) {
resolve(this.resolved);
}
this.resolve = resolve;