Skip to content

Instantly share code, notes, and snippets.

View Fasteroid's full-sized avatar
🪐

Fasteroid

🪐
View GitHub Profile
@Fasteroid
Fasteroid / angular.dev.accessible.css
Last active November 12, 2024 20:08
Makes the new Angular docs site more accessible by getting rid of gradients on text.
@-moz-document domain("angular.dev") {
/*
Angular.dev "accessible" edit
Revision 2
*/
.docs-dark-mode, .docs-light-mode {
--red-to-pink-horizontal-gradient: var(--hot-red);
--red-to-pink-to-purple-horizontal-gradient: var(--vivid-pink);
--pink-to-highlight-to-purple-to-blue-horizontal-gradient: var(--electric-violet);
@Fasteroid
Fasteroid / Maps.ts
Last active September 16, 2024 19:26
Variations of javascript's "Map"
/**
* Like a normal {@link Map}, but if you get a key that doesn't exist, it will automatically make it exist.
*/
export class AutoMap<K, V> extends Map<K, V> {
/**
* @param computer Instantiates default value for keys that don't exist
*/
public constructor( private computer: (key: K) => V ){ super(); }
public override get(key: K): V {
@Fasteroid
Fasteroid / Conduit.ts
Last active September 19, 2024 20:59
Hotwireable observables that remember.
import { MonoTypeOperatorFunction, Observable, Observer, OperatorFunction, Subject, Subscription, take, takeUntil } from "rxjs";
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { DestroyRef, inject } from "@angular/core";
const STUPID_DEV_WARNING: string = "While RxJS allows null subscriptions, I do not. Please remove this null subscription or fix it.";
/**
* A data conduit that auto-pushes its contents to new and existing subscribers once pressurized with {@linkcode Subject.next}.
*
* Might explode if connected circularly.
@Fasteroid
Fasteroid / dropschema.sql
Last active September 4, 2024 15:31
Rui Romano's implementation of DROP SCHEMA CASCADE for MSSQL Server
/****** Object: StoredProcedure [dbo].[DropSchema] Script Date: 31/01/2013 16:51:00 ******/
/* https://ruiromanoblog.wordpress.com/2011/01/27/drop-a-sql-server-schema-and-all-objects-related/ */
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS [dbo].[DropSchema]
GO
CREATE PROCEDURE [dbo].[DropSchema]
(
@Fasteroid
Fasteroid / white-space.svg
Last active August 29, 2024 18:30
This SVG is not rendered correctly according to the W3C's specifications (if you're on a chromium browser)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@Fasteroid
Fasteroid / bracing_spacing.regex
Last active September 19, 2024 20:42
Substitution regex for adding spaces around braces. Works on regex101 but seems broken in Visual Studio...
(""(?>[^""]|\\"")*?"")|(?!\( )(\()(?!\))(\1??(?>(?>""(?>[^""]|\\"")*?"")|.){4,})(\))(?<! \))
$1$2 $3 $4
For use in Visual Studio (.NET Regex Engine)
FEATURES
- Inserts space after opening and before closing parenthesis if contents between parentheses is longer than <x> (4 in this example)
- Does not do anything to strings
- Ignores parentheses that already have space
- Can be used multiple times to hit nested offenders
@Fasteroid
Fasteroid / module_tree_explorer.py
Created July 17, 2024 16:52
Ever been in an unknown python environment and needed to learn more about it?
import sys
import pkgutil
import importlib
def get_all_modules():
all_modules = set(sys.modules.keys())
# Add all discoverable modules
for module in pkgutil.iter_modules():
all_modules.add(module.name)
@Fasteroid
Fasteroid / DegenerateTypescript.ts
Created June 12, 2024 22:27
Ever wanted to write horrible type-unsafe code without using 𝚊𝚗𝚢 or 𝚞𝚗𝚔𝚗𝚘𝚠𝚗 ?
type Fruit = {
name: string
color: string
sweetness: number
}
type Apple = Fruit & {
variety: string
color: "red" | "green" | "yellow"
}
@Fasteroid
Fasteroid / TypeSafeTree.ts
Created June 12, 2024 14:30
Ever needed to define a tree-like type in TypeScript with strict rules about what's on each level?
// PLEASE CREDIT EVERYONE IN HERE IF YOU USE THIS PLEASE AND THANKS 🙏🙏🙏
// https://itnext.io/implementing-arithmetic-within-typescripts-type-system-a1ef140a6f6f
// These types let you do (buggy) arithmetic within typescript's type system
type BuildTuple<L extends number, T extends any[] = []> =
T extends { length: L } ? T : BuildTuple<L, [...T, any]>;
type Length<T extends any[]> =
T extends { length: infer L } ? L : never;
@Fasteroid
Fasteroid / AngularThemeExposer.scss
Created May 22, 2024 18:48
Ever wondered how to expose your entire Angular Material theme as normal CSS variables?
@use 'sass:map';
@use '@angular/material' as mat;
@include mat.core();
$my-app-primary: mat.define-palette(mat.$indigo-palette);
$my-app-accent: mat.define-palette(mat.$pink-palette);
$my-app-warn: mat.define-palette(mat.$amber-palette);
$my-app-theme: mat.define-light-theme(
(