Skip to content

Instantly share code, notes, and snippets.

☕️
j chillin

Chris Opperwall copperwall

☕️
j chillin
Block or report user

Report or block copperwall

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View aws_proxy.ts
const util = require('util');
const S3 = require('aws-sdk/clients/s3');
const client = new S3();
const createBucket = util.promisify(client.createBucket);
const upload = util.promisify(client.upload);
const getObject = util.promisify(client.getObject);
client.createBucket = createBucket;
client.upload = upload;
View proxy_2.js
const test = {
spy: function(fn) {
const calls = [];
return new Proxy(stuff, {
apply(target, thisArg, args) {
const result = target.apply(thisArg, args);
calls.push([args, result]);
},
get(target, p){
View proxy_1.js
const myObject = {};
const loudObject = new Proxy({}, {
get(target, p) {
console.log(`Accessing key ${String(p)} at ${(new Error()).stack}`);
return target[p];
},
set(target, p, value) {
console.log(`Setting key ${String(p)} to ${String(value)} at ${(new Error()).stack}`);
target[p] = value;
View generator_1.js
function *sortOfAsyncFunction() {
const ivysaur = yield fetch('https://pokeapi.co/api/v2/pokemon/ivysaur');
return pikachu.name.toUpperCase();
}
// "IVYSAUR"
runner(sortOfAsyncFunction).then(result => console.log(result));
View runner.js
function runner(gen, ...args) {
// Initialize the generator.
let iterator = gen(...args);
// handleNext is responsible for restarting the generator with new input.
return Promise.resolve().then(function handleNext(value) {
// next can be a promise or a sync value.
let next = iterator.next(value);
// handleResult is responsible for taking the output of the generator
View async_2.js
async function doStuff() {
const partyProfileRes = fetch('/v1/users');
const accountRes = fetch('/v1/customers');
const [partyProfile, account] = await Promise.all([
partyProfileRes,
accountRes
]);
try {
View promise_1.js
function getGuides() {
let ids = [...Array(10).keys()];
return ids.reduce((accumulator, id) => {
return accumulator.then(results => {
return fetch(id).then(result => {
results.push(result);
return results;
});
});
View form_submit.js
Form.onSubmitFactory = fn => form => ev => {
ev.preventDefault();
fn(Form.getData(form));
};
View form_onchange.js
Form.onChangeFactory = fn => (form, fieldKey) => updatedProps => fn({
...form,
fields: {
...form.fields,
[fieldKey]: {
...form.fields[fieldKey],
...updatedProps,
},
},
});
View form_props.js
Form.getProps = form => Object.assign({},
...Object.entries(form)
.filter(([formPropKey, formProp]) => formPropKey !== 'fields')
.map(([formPropKey, formProp]) => ({
[formPropKey]: formProp instanceof Function ? formProp(form) : formProp,
})),
{
fields: Object.assign({}, ...Object.entries(form.fields).map(([fieldKey, field]) => ({
[fieldKey]: Object.assign({}, ...Object.entries(field).map(([fieldPropKey, fieldProp]) => ({
[fieldPropKey]: fieldProp instanceof Function ? fieldProp(form, fieldKey) : fieldProp,
You can’t perform that action at this time.