Skip to content

Instantly share code, notes, and snippets.

@alex-taxiera
alex-taxiera / index.js
Last active February 24, 2021 21:56
Create image posts with Tumblr API v2 (NPF)
import { readFile } from 'fs/promises'
import crypto from 'crypto'
import OAuth from 'oauth-1.0a'
import fetch from 'node-fetch'
import { config } from 'dotenv'
config()
const CAPTION_SEPARATOR = ' - '
const POST_STATE = 'draft' // creating post as a draft
@alex-taxiera
alex-taxiera / typeguards.ts
Created October 12, 2020 15:12
Eris TS Channel/Message Typeguards
export function isInDM (
subject: TextableChannel,
): subject is PrivateChannel
export function isInDM (
subject: Message,
): subject is Message<PrivateChannel>
export function isInDM (
subject: Message | TextableChannel,
): subject is Message<PrivateChannel> | PrivateChannel {
if (subject.constructor === Message) {
@alex-taxiera
alex-taxiera / package.json
Last active February 23, 2021 04:29
node http request wrapper (JS and TS)
{
"name": "request",
"version": "1.0.0",
"main": "request.js"
}
@alex-taxiera
alex-taxiera / file-loader.ts
Created June 23, 2020 00:52
a utility for dynamically loading, unloading, and reloading JS and TS source files.
/* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-return */
import {
promises as fs,
} from 'fs'
import { join } from 'path'
export async function load (path: string): Promise<any>
export async function load (path: Array<string>): Promise<Array<any>>
export async function load (
path: string | Array<string>,
@alex-taxiera
alex-taxiera / group-by.ts
Created June 19, 2020 02:57
group by function to replace lodash groupBy
function groupBy <T = unknown> (
list: Array<T>,
keyGen: (item: T) => string | number,
): {[k: string]: Array<T>} {
return list.reduce<{[k: string]: Array<T>}>((ax, dx) => {
const key = keyGen(dx)
if (ax[key]) {
ax[key].push(dx)
} else {
@alex-taxiera
alex-taxiera / stream.ts
Last active March 26, 2020 05:08
Simple example of server side events with express in TypeScript
import express, { RequestHandler, Response } from 'express'
import bodyParser from 'body-parser'
import cors from 'cors'
interface Client {
id: string
res: Response
}
interface Item {
@alex-taxiera
alex-taxiera / meme.ts
Last active February 21, 2020 00:15
Just an Azure DevOps meme...
class Project {
private _workItems: WorkItem[] = [];
public get workItems(): WorkItem[] {
return this._workItems;
}
public addWorkItem(item: WorkItem): number {
const id = this._workItems.push(item);
item.id = id;
const { EventEmitter } = require('events')
class PriorityJobQueue extends EventEmitter {
constructor (levels, ...rest) {
super(...rest)
this.queues = new Array(levels).fill([])
this.currentJob = null
this.totalJobs = 0
}
@alex-taxiera
alex-taxiera / Artist.js
Created November 11, 2019 23:37
A front end canvas manager
import Upload from './Upload.js'
export default class Artist {
constructor (canvas) {
this.canvas = canvas
this.ctx = canvas.getContext('2d')
}
getLink () {
return this.canvas.toDataURL()
@alex-taxiera
alex-taxiera / request.js
Last active October 25, 2019 02:39
Native HTTP Request Module
// request('https://www.google.com').then(console.log)
const https = require('https')
const http = require('http')
const { URL } = require('url')
const requesters = {
'http:': http,
'https:': https
}