Skip to content

Instantly share code, notes, and snippets.

View iamstarkov's full-sized avatar
🔥

Vladimir Starkov iamstarkov

🔥
View GitHub Profile
@iamstarkov
iamstarkov / machine.js
Last active February 14, 2020 12:24
Generated by XState Viz: https://xstate.js.org/viz
const fetchMachine = Machine(
{
id: 'OAUTH CLIENT',
type: 'parallel',
context: {
hasAuthorizationCode: true
},
states: {
AUTHORIZED: {
id: 'authed',
@iamstarkov
iamstarkov / machine.js
Last active February 13, 2020 15:56
Generated by XState Viz: https://xstate.js.org/viz
const fetchMachine = Machine({
id: 'root',
initial: 'INIT',
states: {
'INIT': {
on: {
'*': [
{
target: 'MAYBE AUTHORIZED',
cond: 'hasAuthorizationCode'
```
// src/modules/jwt-fetch.js
let token;
const updateToken = x => { token = x };
const getToken = () => fetch('/api/jwt/token').then(extractTokenFromRes);
const refreshToken = () => fetch('/api/jwt/token/refresh').then(extractTokenFromRes);
const jwtFetch = async (url, opts) => {
const api = require('./bb-got');
const R = require('./nanoramda');
const fn = p => p
.then(R.prop('body'))
// .then(R.prop('id'))
.then(R.debug)
.catch(R.err);
const opts = { headers: { Authorization: `Basic ${process.env.BB_TOKEN}` }};
@iamstarkov
iamstarkov / README.md
Last active January 4, 2018 07:08
hackernews pwa checklist

hackernews pwa checklist

  • top stories index page
  • header and footer
  • pagination
  • post page
  • comments to post
  • more information about the post itself
  • user page
  • New, Top and Best Stories
@iamstarkov
iamstarkov / README.md
Created January 4, 2018 06:27
hackernews pwa checklist

hackernews pwa checklist

  • top stories index page
  • header and footer
  • pagination
  • post page
  • comments to post
  • more information about the post itself
  • user page
  • New, Top and Best Stories
const curry = fn => (...args) => args.length < fn.length
? (...rest) => curry(fn)(...args, ...rest)
: fn(...args);
const applyTo = curry( (x, fn) => fn(x) );
const pipe = (headFN, ...restFns) => (...args) => restFns.reduce(applyTo, headFN(...args));
const prop = curry( (key, x) => x[key] );
const equals = curry( (x, y) => x === y );
const startsWith = curry( (str, x) => x.indexOf(str) === 0 );
const prep = x => x.trim().replace(/\s+/gim, ' ').replace(' latest', ':').replace('❯◯', 'bump')
module.exports = {
keymaps: {
'tab:prev': 'ctrl+shift+tab',
'tab:next': 'ctrl+tab',
'pane:prev': 'alt+cmd+left',
'pane:next': 'alt+cmd+right',
},
config: {},
};
module.exports = {
config: {
// default font size in pixels for all tabs
fontSize: 14,
// font family with optional fallbacks
fontFamily: 'Fira Code',
uiFontFamily: 'Fira Code',
// terminal cursor background color (hex)