Skip to content

Instantly share code, notes, and snippets.

View mctep's full-sized avatar

Konstantin Vasilev mctep

View GitHub Profile
@mctep
mctep / 01-backend.ts
Last active December 5, 2020 18:12
PoC Typescript RPC Client & Server
export const backend = {
echo: async (message: string) => message,
};
export type Backend = typeof backend;
@mctep
mctep / application.tsx
Last active April 4, 2018 13:14
React Router 4 prefix support (Draw)
type PrefixParser = (prefix?: string) => string;
interface RoutePrefixSettings {
parse: PrefixParser;
defaultPrefix: string;
}
interface RoutePrefixConsumerProps {
routePath: (path: string) => string;
linkPath: (path: string) => string;
@mctep
mctep / react-apollo-fix.ts
Last active October 13, 2019 13:01
Fix React Apollo graphql decorator
import * as React from 'react';
import { DocumentNode } from 'graphql';
import { graphql as _graphql, OperationOption } from 'react-apollo';
type CompositeComponent<P> =
| React.ComponentClass<P>
| React.StatelessComponent<P>;
interface InferableComponentDecorator<TOwnProps> {
<T extends CompositeComponent<TOwnProps>>(component: T): T;
@mctep
mctep / api-store.js
Last active January 7, 2016 23:21
Fortune Serializer Middleware Helper
import fortune from 'fortune';
import fortuneJSONApi from 'fortune-json-api';
import extend from './fortune-serializer-middleware';
import Scope from './fortune-serializer-scope';
import defineTypes from './define-types';
const scope = new Scope();
function api(Serializer) {
const ApiSerializer = fortuneJSONApi(Serializer);
app.get('/', function(req, res, next) {
if (typeof req.body.foo !== 'boolean') {
return next (new TypeError());
}
next()
}, function(req, res, next) {
mysql.query('select 1', function(err, result) {
if (err) { return next(err); }
res.send(result);
@mctep
mctep / HTML (Angular).tmLanguage
Created August 15, 2014 12:22
HTML (Angular).tmLanguage
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>html</string>
</array>
<key>name</key>
<string>HTML (Angular)</string>
@mctep
mctep / gist:6b270dc2e7dab4ab6295
Created August 7, 2014 13:16
REST resources by permissions
// Update user by manager
router.put('/users/:id')
.use(access.perm('manager'))
.use(schema.validate({
type: 'object',
properties: {
password: {
type: 'string',
minLength: 6,
app.use(
// меняет токен на user
// создает в req объект user:
// req.user = { id: 1, roles: [...] }
exchangePassportToken
)
app
.put('/users/:uid')
.use(roles('manager'))
var Promise = require('bluebird');
var fs = require('fs');
var util = require('util');
var memwatch = require('/usr/lib/node_modules/memwatch');
var prReadFile = Promise.promisify(fs.readFile);
var _ = require('lodash');
console.log(process.pid);
show('start memory:');
@mctep
mctep / gist:10987531
Created April 17, 2014 14:25
Параллельное и последовательное выполнения асинхронного кода
function initA(cb) {
setTimeout(function() {
var a = 1;
cb(a);
}, Math.random() * 3000);
}
function initB(cb) {
setTimeout(function() {