Skip to content

Instantly share code, notes, and snippets.

View kulakowka's full-sized avatar

Anton Kulakov kulakowka

View GitHub Profile
@kulakowka
kulakowka / RegExp.js
Last active July 3, 2017 08:08
Magic by @n4kz
'AAAABBHHJOPPPP'
.replace(/(\w)\1+/g, (match) => match[0] + (match.length));
// => "A4B2H2JOP4"
@kulakowka
kulakowka / maxRetries.js
Created July 3, 2017 08:06
make N retries to API call before catch error
// demo
var _requestsCount = 6
const fetchF = url => {
// _requestsCount--
console.log('fake request %d', _requestsCount)
if (_requestsCount--) return Promise.reject(new Error('ololo'))
return Promise.resolve('data')
}
export const setEntities = (entityType, entities) => ({
type: 'SET_ENTITIES',
payload: { entities },
meta: { entityType }
})
export const removeEntities = (entityType, ids) => ({
type: 'REMOVE_ENTITIES',
meta: { ids, entityType }
})
export const setEntity = (entityType, entity) => ({
{
"name": "react-apollo-starter-kit",
"private": true,
"description": "Scaphold.io's Starter Kit React and Apollo",
"repository": "scaphold-io/react-apollo-starter-kit",
"version": "0.1.0",
"scripts": {
"start": "babel-node ./src/server.js",
"start-prod": "node ./lib/server.js",
"build": "cp src/index.html lib/ && babel src --out-dir lib --sourceRoot src",
@kulakowka
kulakowka / Service-Objects-in-JavaScript.js
Last active February 6, 2017 08:41
Service Objects in JavaScript.js
import WelcomeEmailMailer from './WelcomeEmailMailer'
import SlackNotifier from './SlackNotifier'
class NewRegistrationService {
initialize (params) {
this.user = params.user // Mongooose model: User
this.organization = params.organization // Mongooose model: Organisation
}
perform () {
return this.organizationCreate()
@kulakowka
kulakowka / runSerial.js
Created September 29, 2016 20:08
promise serial
function runSerial (tasks) {
var result = Promise.resolve()
tasks.forEach(task => {
result = result.then(() => task())
})
return result
}
var prop = (prop) => (obj) => obj[prop]
var html = (selector) => (data) => $(selector).html(data)
var render = (template) => (json) => Template.render(template, json)
var comments = (params) => fetch('/comments', params).then(JSON.parse).then(prop('data')).then(render('commentsList'))
var renderComments = (params) => comments(params).then(html('.comments'))
renderComments({ user: 1 }).catch(err => console.error(err))
@kulakowka
kulakowka / Reactfire-messages-example.js
Last active March 6, 2016 19:33
How to create messages list with new message form
import React, { Component } from 'react'
import Firebase from 'firebase'
import ReactFireMixin from 'reactfire'
import reactMixin from 'react-mixin'
import LinkedStateMixin from 'react-addons-linked-state-mixin'
const ref = new Firebase('https://<APP NAME>.firebaseio.com/')
class Messages extends Component {
constructor (props, context) {
import React, { Component } from 'react'
import Firebase from 'firebase'
import ReactFireMixin from 'reactfire'
import reactMixin from 'react-mixin'
const ref = new Firebase('https://<APPNAME>.firebaseio.com/users')
class UsersList extends Component {
constructor (props, context) {
super(props, context)
@kulakowka
kulakowka / mithril.layout.js
Created March 3, 2016 13:09
How to create different layouts for Mithril.js
import m from 'mithril'
// Function for compose header and footer into layout
function mixinLayout (layout, header, footer, body) {
return layout(header, footer, body)
}
// Layout component
function layout (header, footer, body) {