Skip to content

Instantly share code, notes, and snippets.

View eddiemoore's full-sized avatar
🤯
Blowing minds

Ed Moore eddiemoore

🤯
Blowing minds
View GitHub Profile
@eddiemoore
eddiemoore / BarcodeDetector.d.ts
Last active July 20, 2022 23:51
BarcodeDetector TypeScript types
/*
Spec: https://wicg.github.io/shape-detection-api/#barcode-detection-api
*/
interface BarcodeDetector {
detect(image: ImageBitmapSource): Promise<DetectedBarcode[]>;
}
type BarcodeFormat =
| "aztec"
@eddiemoore
eddiemoore / camelcase.ts
Created November 28, 2021 02:04
TypeScript CamelCase type
type CamelCase<T> = T extends `-${infer A}-${infer B}`
? `${A}${Capitalize<CamelCase<B>>}`
: T extends `${infer A}-${infer B}`
? `${A}${Capitalize<CamelCase<B>>}`
: T
@eddiemoore
eddiemoore / optionalKeys.d.ts
Created March 14, 2019 01:36
Typescript get optional keys from interface
type Undefined<T> = { [P in keyof T]: P extends undefined ? T[P] : never }
type FilterFlags<Base, Condition> = {
[Key in keyof Base]:
Base[Key] extends Condition ? Key : never
};
type AllowedNames<Base, Condition> =
FilterFlags<Base, Condition>[keyof Base];
@eddiemoore
eddiemoore / isFormValid.js
Last active January 4, 2017 06:42
Simple function to check if all required fields are filled out correctly
const isFormValid = form => {
const elements = form && form.elements
if (!elements) return false
return Array.from(elements).every(elem => elem.validity && elem.validity.valid)
}
@eddiemoore
eddiemoore / nric-validation.js
Last active October 17, 2022 05:39
Validation for Singapore NRIC and FIN number
//Based on http://www.samliew.com/icval/
function validateNRIC(str) {
if (str.length != 9)
return false;
str = str.toUpperCase();
var i,
icArray = [];
for(i = 0; i < 9; i++) {
@eddiemoore
eddiemoore / grid.scss
Last active July 20, 2018 12:38
SASS Loop to generate CSS column classes
$total-columns: 6;
$col-widths: ();
@for $i from 1 through $total-columns {
@for $j from 1 through $i {
$w: ($j/$i);
@if not index($col-widths, $w) {
.col-#{$j}-#{$i} {
width: $w * 100%;