Skip to content

Instantly share code, notes, and snippets.

writing JavaScript

Max Stoiber mxstbr

writing JavaScript
Block or report user

Report or block mxstbr

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
mxstbr /
Last active Feb 16, 2020
Code splitting react-router routes with webpack 2

NOTE: Sokra confirmed I had a misunderstanding, Webpack is still a static build tool and the below won't work. It's still a nice concept though...

With webpack 1, code splitting react-router routes is quite tedious. It requires us to repeat the getComponent function over and over again. (See here for an explanation how it works with webpack 1)


<Router history={history}>
mxstbr /
Last active Feb 14, 2020
Enable tab completion for JSX with Emmet in Atom

Enable tab completion for JSX with Emmet in Atom

This guide assumes you have the emmet and language-babel packages already installed in Atom

Gif of the tab completion working

  1. Open the keymap.cson file by clicking on Atom -> Keymap… in the menu bar
  2. Add these lines of code to your keymap:
mxstbr / Field.js
Last active Jan 27, 2020 — forked from hungrysquirrel/Field.js
Style Storybook with Styled Components
View Field.js
import React, { PropTypes } from 'react';
import styled from 'styled-components'
const Wrapper = styled.div`
// styles here that used to be for .test
const Label = styled.label`
// label styles here
mxstbr / webpack-for-node-modules.js
Last active Jun 26, 2019
How to use webpack to compile node modules
View webpack-for-node-modules.js
/* eslint-disable no-var */
var path = require('path');
var autoprefixer = require('autoprefixer');
module.exports = [{
output: {
filename: '[name].js',
library: 'atrium-react-plugin-beta',
mxstbr / Component.js
Last active Jun 18, 2019
styled-components ❤ tachyons
View Component.js
// There's two ways to use Tachyons together with styled-components
// Both are valid, which one you use depends if you want to always apply a tachyons class when a certain component
// is rendered or if you want to apply it for specific instances.
// 1. Use .attrs to define classNames that should always be applied to a styled component
// Whenever you use <Component /> now it'll have both the styled-components as well as the Tachyons class
// See the docs for more info:
const Component = styled.div.attrs({
className: 'bw0-l',
mxstbr / PaginationTypes.graphql
Created Feb 20, 2018
Code snippets for "Securing Your GraphQL API from Malicious Queries" blog post
View PaginationTypes.graphql
type Participant {
# The complexity of getting one thread in a thread connection is 3, and multiply that by the amount of threads fetched
threadConnection(first: PaginationAmount, after: String): ThreadConnection @cost(complexity: 3, multiplier: "first")
type Thread {
participants(first: PaginationAmount,...): [Participant] @cost(complexity: 2, multiplier: "first")
mxstbr / asyncify.js
Last active Mar 13, 2018 — forked from ForbesLindesay/iter.js
A reusable utility to turn a callback-based listener into an async iterable
View asyncify.js
// @flow
// Turn a callback-based listener into many async iterators without buffering
import { $$asyncIterator } from 'iterall';
type Listener = ((arg: any) => void) => Promise<any>;
const defaultOnError = (err: Error) => {
throw new Error(err);

First, start Chrome and open the page you want to profile:

./chrome --js-flags=”--prof” --no-sandbox http://localhost:8080/index.html

Note: This page should do things on-load, simply close Chrome once it's done

Then preprocess the biggest .log file you get: (since the biggest one should be from the main renderer):

mxstbr / send-email.js
Created Nov 13, 2017
A send email util for Postmark
View send-email.js
import postmark from 'postmark';
const debug = require('debug')('send-email');
const stringify = require('json-stringify-pretty-compact');
let client;
if (process.env.POSTMARK_SERVER_KEY) {
client = new postmark.Client(process.env.POSTMARK_SERVER_KEY);
} else {
'\nℹ️ POSTMARK_SERVER_KEY not provided, debug mode enabled. Will log emails instead of actually sending them.'
View log-resolvers.js
import createLogger from 'graphql-log';
let list = [];
const logExecutions = createLogger({
logger: (name) => {
fs.writeFileSync('resolvers.js', JSON.stringify(list, null, 2));
You can’t perform that action at this time.