Skip to content

Instantly share code, notes, and snippets.

Avatar
🎸
Rocking the world with few lines of code

Gianluca Guarini GianlucaGuarini

🎸
Rocking the world with few lines of code
View GitHub Profile
View ci.yml
name: Main
on:
schedule:
- cron: 30 12 * * *
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Setup node
@GianlucaGuarini
GianlucaGuarini / login.js
Created Jan 8, 2020
programming like a modern artist
View login.js
;(async function() {
// puppeteer boilerplate code
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox'],
// notice the small device size
defaultViewport: {
width: 375,
height: 812
}
@GianlucaGuarini
GianlucaGuarini / riot+compiler.js
Created Jun 29, 2019
Riot.js 4 + compiler polyfilled for IE11 - This code is only for demo purpose!!!
View riot+compiler.js
This file has been truncated, but you can view the full file.
View _colors.scss
:root {
@import '@design-system/colors.json';
--root-colors--primary: #{$primary};
--root-colors--secondary: #{$secondary};
}
@GianlucaGuarini
GianlucaGuarini / wait.js
Last active Jan 19, 2018
Functional advanced async (cancellable/abortable) `setTimeout` helper
View wait.js
/**
* Advanced async (cancellable/abortable) `setTimeout` helper
*/
function wait(delay) {
return (val) => {
let timer
let abort
const p = new Promise(function(resolve, reject) {
abort = reject
@GianlucaGuarini
GianlucaGuarini / curry.js
Last active Nov 18, 2017
Function to curry any javascript method
View curry.js
/**
* Function to curry any javascript method
* @param {Function} fn - the target function we want to curry
* @param {...[args]} acc - initial arguments
* @returns {Function|*} it will return a function until the target function
* will receive all its arguments
*/
function curry(fn, ...acc) {
return (...args) => {
args = [...acc, ...args]
@GianlucaGuarini
GianlucaGuarini / accessible-overlays.js
Last active Nov 1, 2017
Simple function to make your overlays element accessible
View accessible-overlays.js
// forked by a script of https://github.com/nilssolanki
import { add } from 'bianco.events'
/**
* A list of all the open overlays, tooltips, sidebars etc.
* @type {Map}
*/
const openOverlays = new Map()
/**
@GianlucaGuarini
GianlucaGuarini / real-device-px-ratio.js
Created Oct 9, 2017
Because devicePixelRatio is not relyable enough
View real-device-px-ratio.js
const resolutions = [
'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=',
'data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=',
'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAACklEQVQYV2P4DwABAQEAWk1v8QAAAABJRU5ErkJggg==',
];
const img = document.createElement('img');
img.src = resolutions[0];
img.srcset = resolutions.map((itm, i) => `${itm} ${i + 1}x`).join(',');
View package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"riot": "^3.4.2"
},
"devDependencies": {
"coffee-script": "^1.12.5",
View promise-sequence.js
function sequence(promises) {
return new Promise((resolve, reject) => {
const rets = []
const gen = (function*() {
// loop as long as we have promises in the queue
while (promises.length) {
// take always the first promise
const promise = promises.shift()
// wait until it's resolved to step to the next iteration
promise