Skip to content

Instantly share code, notes, and snippets.

function ordgroupIterable<reference, key>(
refs: Accessor<Iterable<reference>>,
keyFn: (ref: reference) => key
): Accessor<ReadonlyMap<key, Accessor<readonly reference[]>>> {
const signals = createMemo((keyset: Map<key, Signal<readonly reference[]>>) => {
const exists = new Set();
let changed = false;
// Check for group creations
const ord: key[] = [];
@webstrand
webstrand / obsidian-open.sh
Created November 9, 2024 21:46
A command to create or update the named (default: temporary-vault) Obsidian Vault and open it in Obsidian.
#!/bin/bash
set -euo pipefail
shopt -s lastpipe
name="temporary-vault"
already_set_path=
path="$(pwd)"
_usage() {
local status=${1:-0}
export class SharedMap<K extends string, V> extends Map<string, V> {
storageKey: string;
subscriptions = new Set<(added: Iterable<string>, deleted: Iterable<string>) => void>;
updatedKeys!: Set<string>;
deletedKeys!: Set<string>;
timeoutId = 0;
validateValue;
deserializeValue;
serializeValue;
(?(DEFINE)
(?<S>[\x20\x9\xD\xA]+)
(?<NameStartChar>[A-Za-z:_\xC0-\xD6\x{D8}-\x{F6}\x{F8}-\x{2FF}\x{370}-\x{37D}\x{37F}-\x{1FFF}\x{200C}-\x{200D}\x{2070}-\x{218F}\x{2C00}-\x{2FEF}\x{3001}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFFD}\x{10000}-\x{EFFFF}])
(?<NameChar>(?&NameStartChar)|[\-\.0-9\x{B7}\x{0300}-\x{036F}\x{203F}-\x{2040}])
(?<Name>(?&NameStartChar)(?&NameChar)*)
(?<EntityRef>&(?&Name);)
(?<PercRef>%(?&Name);)
(?<Reference>(?&EntityRef)|(?&PercRef))
(?<AttValue>"(?:[^<&"]|(?&Reference))*"|'(?:[^<&']|(?&Reference))*'|[^"'`=<>\x20\x9\xD\xA]+)
(?<Attribute>(?&Name)(?:=(?:(?&AttValue))?)?)
@webstrand
webstrand / 0-usage.ts
Created June 29, 2024 03:41
Tagged template literal unindenter. It's caches the intermediate unindented segments.
import { dedent } from "./dedent.ts"
for(let i = 0; i < 10; i++) {
console.log(dedent`
Hello, World!
this block of text gets unindented
interpolation works: ${i}
enjoy!
```)
}
type RFC9457ProblemOccurrence = {
/**
* A string containing a URI reference that identifies the problem type.
*
* Consumers MUST use this URI (after resolution, if necessary) as the problem type's
* primary identifier.
*
* When this member is not present, its value is assumed to be "about:blank".
*
* If the URI is a locator (e.g., those with an "http" or "https" scheme),
import { useCallback, Reducer, Dispatch, useState, useMemo, useEffect, useRef } from 'react';
type Batch<S, A extends object> = {
state: S,
actions: A[],
next: Batch<S, A> | null
}
class StreamReducer<S, A extends object> {
/**
@webstrand
webstrand / dev-mongodb.sh
Last active May 18, 2024 23:42
Create a mongodb replication-set for use with Prisma
mkdir -p dev.mongodb/{0,1,2}; rm -f dev.mongodb/{0,1,2}/log.*;
(
for i in {1..100}; do
socat -u OPEN:/dev/null UNIX-CONNECT:./dev.mongodb/0/.sock 2>/dev/null && break;
sleep 0.1;
done;
exec mongosh 'mongodb://.%2Fdev.mongodb%2F0%2F.sock' --eval "$(cat << EOF
const reinitiate = (() => {
@webstrand
webstrand / nginx.conf
Created May 10, 2024 14:31
Portable nginx reverse proxy with CORS override
#!/usr/bin/env -S nginx -e /dev/stderr -p . -c
# Run an NGINX instance serving the current directory on ports 8080 and 8443
# (when configured). Execute one of the following commands in the terminal.
# - start-nodaemon: ./nginx.conf -g 'daemon off;'
# - start: ./nginx.conf
# - stop: ./nginx.conf -s stop
# - reload: ./nginx.conf -s reload
pid .nginx/nginx.pid;
events {}
@webstrand
webstrand / instanceofvtag.js
Last active April 18, 2024 18:11
Comparing the performance of instanceof against tags
const Benchmark = require('benchmark');
const suite = new Benchmark.Suite;
class Base {
type = "base"
}
class Child extends Base {
type = "child"
}