Skip to content

Instantly share code, notes, and snippets.

View jwulf's full-sized avatar
:octocat:
Coding on Halmak

Josh Wulf jwulf

:octocat:
Coding on Halmak
View GitHub Profile
@jwulf
jwulf / naive-rate-limiter.ts
Created December 1, 2020 01:03
A naive functional rate limiter with an absolute limit
interface QueuedTask<T> {
task: () => T;
promise: {
resolve: (res: any) => void;
reject: (err: any) => void;
};
}
interface RateLimitedTask<T> {
task: () => T;
@jwulf
jwulf / CONTRIBUTING.template.md
Last active September 17, 2020 05:38
Zeebe Community Contribution Guidelines
@jwulf
jwulf / outline.md
Last active May 12, 2020 02:42
Camunda Cloud Getting Started Video: Node.js
  • Prerequisites: Node, npm, TypeScript, Zeebe Modeler
  • Scaffold new project
  • Create new Camunda Cloud account
  • Create new Camunda Cloud cluster
  • Point them to the Slack channel for support
  • Create new worker credentials
  • Put worker credentials in .env file
  • Create BPMN model: Start event, single service task, end event
  • Save model
  • Write code to deploy model, log response to console
async function executeAsyncTasks(tasks: AsyncTask<any>[]) {
const success = async res => ({ success: await res }) // Promise<{success: res}>
const error = async err => ({ error: await err }) // Promise<{error: e}>
const runWithResult = task => task.run()
.then(result => {
success(result)
task._success(result)
})
.catch(e => {
class AsyncTask<T> {
_run: () => Promise<T>;
_success: (result: T) => void;
_error: (e: Error) => void;
constructor({
error,
run,
success
}: {
// Takes an array of async tasks that may throw of shape {run: () => Promise<result>}
// Returns Promise<{error: error[], success: result[]}>
async function executeAsyncTasks(arrayOfAsyncTasks) {
const success = async res => ({ success: await res }) // Promise<{success: res}>
const error = async err => ({ error: await err }) // Promise<{error: e}>
const runWithResult = task => task.run().then(success).catch(error)
const outcomes = await Promise.all(arrayOfAsyncTasks.map(runWithResult))
const { error, success } = outcomes.reduce((acc, o) => o.error ?
{ error: [...acc.error, o.error], success: acc.success } :
{ error: acc.error, success: [...acc.success, o.success] },
{ error: [], success: [] })
async function myAsyncFunction(argument) {
const success = async res => ({ success: await res }) // Promise<{success: res}>
const error = async err => ({ error: await err }) // Promise<{error: e}>
const arrayTasks = [
{
run: async () => getDataAsync()
}
},
async function myAsyncFunction(argument) {
let arrayTasks = [
{
const run = async () => {
let response = await getDataAsync();
}
},
{
const run = async () => {
const makeProject = i => ({
Project_ID: i.id,
Project_Name: i.name,
Project_Start_Date: i.starts_at,
Project_End_Date: i.ends_at,
Project_Status: i.project_state
})
const projects = content.map(makeProject)