Skip to content

Instantly share code, notes, and snippets.

View edoardocavazza's full-sized avatar
🍔

Edoardo Cavazza edoardocavazza

🍔
View GitHub Profile
@edoardocavazza
edoardocavazza / object-setprototypeof-ie9.js
Last active April 12, 2024 14:24
An "Object.setPrototypeOf" polyfill for IE9
// https://gist.github.com/edoardocavazza/47246856759f2273e48b
(function () {
if (typeof Object.setPrototypeOf === 'undefined' && typeof Object.getOwnPropertyNames === 'function') {
var _exclude = ['length', 'name', 'arguments', 'caller', 'prototype'];
function bindFunction(ctx, fn) {
return function() {
return fn.apply(this, arguments);
}
}
@edoardocavazza
edoardocavazza / index.js
Created October 20, 2023 07:28
Saucelabs Safari 15 and above issues with WS
import fs from 'fs';
import { createServer as createHttpServer } from 'http';
import { createServer as createHttpsServer } from 'https';
import { WebSocketServer } from 'ws';
import sl from 'saucelabs';
import { remote } from 'webdriverio';
import ip from 'ip';
const protocol = 'http';
const localIp = ip.address();
@edoardocavazza
edoardocavazza / dragdrop1.js
Last active November 30, 2018 08:45
Move an element using touch events.
function draggable(element) {
let currentX = 0;
let currentY = 0;
element.addEventListener('touchstart', (startEvent) => {
const firstTouch = startEvent.touches[0];
let deltaX, deltaY;
const onMove = (moveEvent) => {
// prevent the scrolling
<script src="node_modules/unchained-js/dist/unchained.client.js"></script>
<script>
// register a Service Worker.
UnchainedClient.register('sw.js', { scope: '/' }).then(
// The Service Worker is ready, we can now import the main file.
UnchainedClient.import('index.js')
);
</script>
// import Unchained core and plugins.
importScripts(
'node_modules/unchained-js/lib/core.js',
'node_modules/unchained-js/lib/plugins/babel.js',
'node_modules/unchained-js/lib/plugins/resolve.js'
);
// intercept fetch events.
this.addEventListener('fetch', (event) => {
// verify if requested resource is an import.
<script type="module" src="path/to/es6/module.js"></script>
<!-- OR (only in Chrome 64) -->
<script>
const module = await import('path/to/es6/module.js');
</script>
import { h, render } from 'preact';
import TodoList from './todolist.component.js';
render(<TodoList />, document.body);
// intercept network requests
this.addEventListener('fetch', (event) => {
// check if `event.request` è un file js
if (event.request.url.match(/.js$/)) {
event.respondWith(
// -> handle del file js
);
}
});
@edoardocavazza
edoardocavazza / index.html
Last active December 14, 2017 17:58
Unchained index.html
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js');
}
</script>
const MAP = (typeof self.WeakMap !== 'undefined') ? new WeakMap() : false;
const PROP = '__private__';
function internal(object) {
if (MAP) {
if (!MAP.has(object)) {
MAP.set(object, {});
}
return MAP.get(object);
}