Skip to content

Instantly share code, notes, and snippets.

View k1r0s's full-sized avatar

Ciro Iván k1r0s

View GitHub Profile
{
"name": "hl2030",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "babel-node src"
},
"keywords": [],
"author": "",
const ministore = _ => (initial => param => param ? initial = param : initial = initial)();
const s = ministore()
s(1) // 1
s() // 1
s() // 1
s("hola") // "hola"
s() // "hola"
const { beforeMethod } = require("kaop-ts");
const Log = meta => {
console.log(meta.key)
console.log(meta.scope)
console.log(meta.args)
}
function applyToAll(advice) {
return function applyAll(target) {
const sayHello = () => console.log("hello")
function instanceFinisher(somethingToHappen) {
return function (target) {
const orig = target
target = (...args) => {
setTimeout(somethingToHappen)
orig.apply(this, args)
}
return target
@k1r0s
k1r0s / preact-bind-group.jsx
Created February 17, 2018 10:03
Basic overview of BindGroup component
import { h } from "preact";
import { BindGroup } from "preact-bind-group";
const changeCheck = change => console.log(change);
const payload = {
name: "Ciro",
country: "Spain",
dbird: "1990-09-22",
gender: "male",
@k1r0s
k1r0s / log-decorator.ts
Last active December 22, 2017 10:24
log decorator for JavaScript
import { afterMethod } from "kaop-ts";
export const Log = afterMethod(meta => {
const methodName = `${meta.target.constructor.name}::${meta.key}`;
console.info(`log-decorator: ${methodName} invoked!`);
console.info(`log-decorator: ${methodName} arguments -> `, meta.args);
console.info(`log-decorator: ${methodName} result -> `, meta.result);
});
@k1r0s
k1r0s / advice.spec.js
Created December 6, 2017 23:35
kaop-ts caching advice showcase `memoization`
import { beforeMethod, afterMethod } from "..";
const methodSpy = jest.fn();
const Delay = secs => meta => setTimeout(meta.commit, secs);
const Cache = (function() {
const CACHE_KEY = "#CACHE";
return {
read: meta => {
@k1r0s
k1r0s / advice-merge.spec.js
Created December 6, 2017 23:26
merge some async advices showcase
import { beforeMethod } from "..";
const Delay = secs => meta => setTimeout(meta.commit, secs);
const soMuchDelay = [Delay(1000), Delay(1000), Delay(1000)];
const someBehavior = beforeMethod(...soMuchDelay, Delay(5));
class Car {
@k1r0s
k1r0s / ArrayPollyfill.js
Last active December 5, 2017 11:11
Add some useful methods to native JavaScript Array
Object.assign(Array.prototype, {
has(val) {
return this.indexOf(val) > -1;
},
first() {
return this[0];
},
last() {
return this[this.length - 1];
}