Skip to content

Instantly share code, notes, and snippets.

:octocat:
Working on OSS 20% of the time

Mohsen Azimi mohsen1

:octocat:
Working on OSS 20% of the time
Block or report user

Report or block mohsen1

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
@mohsen1
mohsen1 / reactor.js
Last active Apr 22, 2020
Reactor Pattern in JavaScript
View reactor.js
function Event(name){
this.name = name;
this.callbacks = [];
}
Event.prototype.registerCallback = function(callback){
this.callbacks.push(callback);
}
function Reactor(){
this.events = {};
@mohsen1
mohsen1 / download.js
Last active Mar 30, 2019
Download Chromecast backgrounds
View download.js
var https = require('https');
var fs = require('fs');
var url = 'https://raw.githubusercontent.com/dconnolly/chromecast-backgrounds/master/backgrounds.json';
Array.prototype.getLast = function() {
return this[this.length - 1];
};
function logFail(err){
console.log('Failed!');
@mohsen1
mohsen1 / keybindings.json.yaml
Last active Nov 4, 2018
Sublime Text key bindings for Visual Studio Code
View keybindings.json.yaml
[
{
"key": "shift+cmd+d",
"command": "editor.action.copyLinesDownAction"
},
{
"key": "cmd+l",
"command": "expandLineSelection"
},
@mohsen1
mohsen1 / HydratableStore.tsx
Created Jul 31, 2017
How to hydrate stores in the server with MobX
View HydratableStore.tsx
import * as React from 'react';
import { computed } from 'mobx';
import { inject, observer, Provider } from 'mobx-react';
import { fromPromise } from 'mobx-utils';
import {StaticRouter} from 'react-router-dom';
import { Request, Response } from 'express';
import * as ReactDOM from 'react-dom/server';
interface Item {
weight: number;
View call-site.js
function foo(a) {
console.log(a.b)
}
foo({})
View call-site.js
function power2(a) {
return a * a;
}
power2('string')
View overload.ts
/**
* Create an input element
*/
function createInput(type: 'text', value: string): HTMLInputElement;
function createInput(type: 'checkbox', value: boolean): HTMLInputElement;
function createInput(type, value) {
// code
}
View call-create-input.js
const input = createInput('checkbox', 'false')
View create-input.js
/**
* Create an input element
* @param {string} type
* @param {string|boolean} value
* @return {HTMLInputElement}
*/
function createInput(type, value) {
const el = document.createElement('input');
el.type = type;
if (type === 'checkbox') {
View loadable.ts
import * as React from 'react';
import { RouteComponentProps } from 'react-router-dom';
interface LoadableProps<T> {
loader: (props: RouteComponentProps<T>) => (() => Promise<React.ComponentType<T>> | React.ComponentType<T>);
loading: React.ComponentType<T>;
}
export function Loadable<T>(loadableProps: LoadableProps<T>) {
return class LoadableComponent extends React.Component<RouteComponentProps<T>, { ResultComponent: React.ComponentType<T> }> {
You can’t perform that action at this time.