Skip to content

Instantly share code, notes, and snippets.

View mainendra's full-sized avatar
👨‍💻

Mainendra mainendra

👨‍💻
View GitHub Profile
interface deferType<T> extends Promise<T> {
resolve: (value: T) => void,
reject: (reason?: any) => void,
};
function defer<T>(): deferType<T> {
const data = {};
return Object.assign(new Promise<T>((resolve, reject) => Object.assign(data, { resolve, reject })), data) as deferType<T>;
};
function throttle<T extends [...T], U>(callback: (...args: [...T]) => U, interval: number): (...args: [...T]) => void {
let enableCall = true;
return (...args: [...T]) => {
if (!enableCall) {
return;
}
enableCall = false;
callback(...args);
function debounce<T extends [...T], U>(callback: (...args: [...T]) => U, delayMs: number): (...args: [...T]) => void {
let timerId: any = null;
return (...args: [...T]) => {
clearTimeout(timerId);
timerId = setTimeout(() => callback(...args), delayMs);
};
}
export {
import { serve } from "https://deno.land/std@0.135.0/http/server.ts";
import { create } from "https://deno.land/x/pkce_deno@v2.0/mod.ts";
serve((req) => {
try {
const len = (new URL(req.url)).searchParams.get('length');
const respData = (len ? create(+len) : create());
return new Response(JSON.stringify({
...respData,
}), {
@mainendra
mainendra / ttsEngine.ts
Last active March 13, 2024 14:53
TTS engine
const synth = window.speechSynthesis;
let currentReadoutStrings: string[] = [];
let currentAlertStrings: string[] = [];
let currentSSU: SpeechSynthesisUtterance;
function reset(): void {
currentReadoutStrings = [];
currentAlertStrings = [];
}
@mainendra
mainendra / KeyListener.js
Created January 15, 2022 17:50
Key Listener
let handlers = [];
let keyListenerEnabled = false;
function addKeyListener() {
document.addEventListener('keydown', onKeyDown);
}
function onKeyDown(event: KeyboardEvent) {
for (let i = handlers.length - 1; i >= 0; i--) {
if (handlers[i] && handlers[i](event)) {
import { useCallback, useState } from "react";
export default function Image({
src,
altText,
textClassName = "",
imageClassName = ""
}: {
src: string[] | string;
altText?: string;
@mainendra
mainendra / debounce.js
Created August 19, 2020 19:34
Simple Debounce
function debounce(callback, delayMs) {
let timerId = null;
return function (...args) {
clearTimeout(timerId);
timerId = setTimeout(() => callback(...args), delayMs);
};
}
export {
@mainendra
mainendra / throttle.js
Created August 19, 2020 19:33
Simple Throttle
function throttle(callback, interval) {
let enableCall = true;
return function (...args) {
if (!enableCall) {
return;
}
enableCall = false;
callback(...args);
@mainendra
mainendra / retry.js
Created August 19, 2020 19:22
Retry algorithms
const backOffAlgorithms = {};
const algorithms = {
EXPONENTIAL: 'exponential',
FIBONACCI: 'fibonacci',
LINEAR: 'linear',
STATIC: 'static'
};
function create(options) {