Skip to content

Instantly share code, notes, and snippets.

View asleepace's full-sized avatar
🚀

Colin asleepace

🚀
View GitHub Profile
// https://www.typescriptlang.org/play/?#code/MYewdgziA2CmB0w4EMBOAKAlAKG6SALgAQAkyEAnmMAJJgCWxAvEQMoUC2ARjOgOQB9AeSrAB9BgQGUOfHPgjESExgCVYyACYUiLdt16DhlauMkDU2uXnCLSwVBoKwAcrADuutpx7R+QkVMHJ1gBMA9rPGhyCCIAIXJYIgBvbCJ0okVkAnpgTJ8YOjUNbS8sXQA+UhUCdS0KAG40jKycvMDaSX1fMsxK0g6igiaMzIJs3PyDaABhR2zXD17+kmCFt3cm5vTWyY6iAG1V+ecNgF1y1NHRxwIAV1QwInDPAgALeggsI5q67TPtkQAL64UYAB1Q9AAbgtDmQTJ1GGcAFxEcpMKoABVQIA4n1gAB5kGAKFUAD5EbG4-EEqEgeiaCqAiHQ2E-SR-Cgoyk4vEQQnE0mgjIKAioO7AAggDB9K7XdLvT5HQaSM7LDE86n8+COABWsEl-A4dzswGQ0GgREVEHgNQA6ow3qwpahkABzWDlCREUXiyXSgCE1nlCo+EHZxXqapYVL5CEcUGgUM9ADNzfycKMQYD9vbHc7pe7PWaLVxkMAANao9CabLIVEEChg2AgFNWsN9DWxml0hkVWWA0bWiO1EpcrwvTVx9D7dAJmDJgA0RD1BoInaqcpDItsxGbqAgn2cmgAInWvMlnsgOLBUXxQNAJHxgURyK+SYOQ8h3MhGD7zdAZaVug+6HoosCnnWmbbhk85Jp61rQfKQJIcC2DZlEMREAAsiAmiwJasAAB7OGAmixAk-IpICzI4s4koQUQtbjKigrCukvoSi6lyfjsdz7lgvHtp8tqSA67wFq6HozgiaKgUeEFnuMG7UTBO6QDACDQCAbr8PJ4GQeMfDLvpx5KcgqFZqh2ajPyBDmSBaA5Oa5mopiTn0OaRIklULDJChqkhta8DMcgF5EPAkXBaFy6RfAYIeS554gtutwPE80V1oCILZvsKZ3NQOTgEQ2laAAYryklFjx
/**
* Key / Value container which enforces a max capacity and
* provides several methods for iteration.
*
* Demo:
* https://www.typescriptlang.org/play/?target=99#code/PQKhCgAIUyGkCmBPSxIDUCGAbArgyAYwHsA7AF0wEtSEAnSAdwAsrDnIFSAzYuwhAGdImSAFtMADyKYADpkJVyKTKQAmUGJFl1iANypqhkQQj30c4hOWbE1w3gyUXyVMgDpIm4OELZMgsIAgnR0mEgAsnIAPAAqALyqSAB8kADe4FCw2nRUepjkBBKSAMJyCkpIAFyQpLhiAEb0kPGQACxZsDp5BQQ0pnTkAPJ0RnQ1guS5pADmANoAui2Qi505PYUm5HwINQBKCCSj0ZPTMwA0kLGprWkAvpnZ2rgN2GyQM9ZExLgUABQAShqdUazQyTyedGsuDopEgQwaACtDuR3ABrZCCP42KiCdyTHYA9zYLgzGxrB5rUAQCEwADKXxsBAxSGA+TwBHkVAYqjUTCo2GwnAMhHIkGI2DGnAouSEa2gkCo3HEUhk8kUykVwihCmYCDUngAksrVMK2K4yOLCIQYcJ5TAccJGAKhThBMRIFDyDC4UyzaL9ZB2fh3PafE9ZC83oQTNY-iyJlMaBcgzh8DVYkCrpAAD5B4iGdLy7KO9z9ejDUb0dy-QSsbjkePIAHF2ClglQuYspatYMIVtMVgkyDY1h4ki-MWpUvFMrqyoAosQ5ffUiTTiSWTc-WIFCtUvlwYjMbuWTEWSAgdPJUjhCb7dqXeQABkz43W6hj+Qit9Y-x2yhRdwRXECSDXMU7w-fUsA5ZZ2wAhA5kgh9dwWK8VyMElNngnYkPvT9UPQ5cvR9d8Hxg-AiMgB4QJo7JKQjKN3k+RsEy2M4s1iXNIF+IxuBoQNgOI6FYUgHDO27ClHmySNXneKExH0BAm2qdjkyzBpiAlBBT
@asleepace
asleepace / try.ts
Last active September 3, 2024 20:37
A simple extension for TypeScript which enables the `.try(args)` method on functions. This works for both normal & async functions, and reduces a lot of boilerplate.
// Try.ts
// By Colin Teahan
// August 14th, 2024
//
// This TypeScript file enables usage of the .try() method which will return a result tuple of [T?, Error?]
// from any function or async function. This works by defining a new property on the global Object.prototype
// and then do some type-fu.
//
// Example usage:
// https://www.typescriptlang.org/play/?target=99#code/MYewdgziA2CmB0w4EMBOAKAlAKGwejwAJCAVVAT3gBcJ8jCAhcwgYRgEsxTZkALZMHWIBBAK4BzURCqEAjABYqvADSEATAAY18ukNK92EUuQAOsAMrBU7EzIBm7OIVhhkAIzhGpycbEIg7QiU-agosQgBbWCUQABNCAHcDYF5Ex2hCVGjRVC5kTNgIUWgZKlETJwDCAG0SAH5VAFFUVBBUOoBdPTtWiMIBZjtRMGAqdnB-VH6IchHCIZGx8Hh9Q0S2gGsjN2ZY2AcwTnF+wjBYBMITVrNUKmYJ4MJxaBA3ZAyAeTcAK1hR+CuICoQNMsD0AniwS4sRAhCgUSCoIAtEN4LoCMRGgAPZARCp+by+ABc6PoC1G4y4vioAFUILBUEwAJKxdDsWJE06iCJuBmYQgAbz0xGI7ECbPiAB4ALyEDT8pStC5nC7NVoYADknAAbu92YQpAzCOyNTgMSLiFkyrlBadcbBORqGK8Nap9QBfPSegh6UCQGTVQ2oVQM9UdQiy6l0hnM2KhcjoeWESVIpHOFptNLQDK8grWs6xX3gaQ1IMhjOocOR6LRxnkFnx9CyfkptNBwhOl3GoxWnIF0nEAByHxIjU5JAMRjW0nSJwSm2NXEB4iyECMEO7pyBcNE
/**
* GenericSubClass
*
* This class extends a base class (in this case FooType) without having to manually
* define all of the base classes properties and methods. This is accomplished using
* a Proxy wrapper and a factory method.
*
* When creating a new instance do not call new GenericSubClass directly, but instead
* use the static factory method GenericSubClass.new({ ... }) which will return the
* GenericSubClass with a proxy wrapper.
@asleepace
asleepace / GenericSortedType.ts
Created January 22, 2023 09:35
Generic Sorted Type - TypeScript 4.9.4
/**
* Sorted - Utility Type
*
* Takes a tuple of unsorted numbers and returns a sorted tuple of the
* same values in ascending order. Can handle negative as well as
* duplicate numbers.
*
* This works by destructuring the list into [List[0], ...List.slice(1)]
* sorting the list slice recursively until the slice is only one element.
* Then as we return we insert List[0] at each level into a sorted list.
@asleepace
asleepace / index.html
Last active September 13, 2022 21:13
Soladex
<html>
<head>
<title>Soladex Corp.</title>
<description></description>
<script>
</script>
</head>
@asleepace
asleepace / index.html
Created September 12, 2022 13:36
Soladex
<html>
<head>
<title>Soladex Corp.</title>
<script>
function getAddress(latitude, longitude) {
return new Promise(function(resolve, reject) {
var request = new XMLHttpRequest();
var method = 'GET';
var url = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitude + ',' + longitude + '&sensor=true';