Skip to content

Instantly share code, notes, and snippets.

View camille-hdl's full-sized avatar

Camille Hodoul camille-hdl

View GitHub Profile
@camille-hdl
camille-hdl / debounce.js
Last active August 29, 2015 14:01
A debounce implementation in JS, with a default wait time. Useful when listening to window resize event for instance.
/* debounce(func,context,ms) returns a function that will be called only ms millisecond after it's latest call.
context and ms are optionnal.
*/
var debounce = (function(window){
var defaultMs=300;
return function (func,context,ms){
var to;
return function(){
var args = Array.prototype.slice.call(arguments);
if(!!to) clearTimeout(to);
@camille-hdl
camille-hdl / throttle.js
Created May 16, 2014 14:06
Function throttle implementation in JS, with default parameters, using closures.
/* throttle(func,ms,context) returns a function that can't be called more than once every ms milliseconds.
context and ms parameters are optionnal.
*/
var throttle = (function(window){
var defaultMs=50;
return function (func,ms,context){
var to;
var wait=false;
return function(){
var args = Array.prototype.slice.call(arguments);
@camille-hdl
camille-hdl / find_parens_sub.js
Created July 16, 2014 18:57
Get the number of capturing parentheses of a regex pattern in Javascript
/*
It isn't a full implementation : you can't use it to search named groups or anything.
It just returns the number of capturing parentheses of the pattern passed as the 1st argument.
Usage :
find_parens_sub(/(my pattern)/i.source); // 1
Idea ? comment ? insult ? camille.hodoul [at] gmail.com or @Eartz_HC
I copied this function from http://www.opensource.apple.com/source/pcre/pcre-4.2/pcre/pcre_compile.c ,
(function() {
if(!!window.history) {
var curHash = "";
var nextIndex = 0;
var setHash = function(str, title) {
curHash = str;
window.history.replaceState({}, title, '#'+str);
};
var states = ["(>°.°)>","(^°o°)^","<(°.°<)","^(°o°^)"];
<!-- see it in action here : https://github.com/rollup/rollup-starter-code-splitting/blob/master/public/index.html -->
<!-- Browsers with dynamic import support -->
<script type="module">
window.esDynamicImport = true;
// this will throw if dynamic import is not supported
import("/js/es/entrypoint.js").then(function(m) {
// do something
});
</script>
[ignore]
.*/node_modules/.*
.*/public/.*
.*/__tests__/.*
.*/cypress/.*
[include]
[libs]
flow-typed
{
"public": "public",
"rewrites": [{ "source": "/**", "destination": "/index.html" }]
}
{
"scripts": {
"build": "rollup -c --prod --mini",
"watch": "rollup -c -w",
"serve": "serve"
}
}
importScripts("https://storage.googleapis.com/workbox-cdn/releases/3.6.3/workbox-sw.js");
workbox.precaching.suppressWarnings();
// the following line will be replaced by workbox-cli
workbox.precaching.precacheAndRoute([]);
// Cache unpkg (for systemjs)
workbox.routing.registerRoute(
/^https:\/\/unpkg\.com/,
workbox.strategies.cacheFirst({
module.exports = {
"globDirectory": "public",
"globPatterns": [
"**/*.html",
"js/esm/*.js",
],
"swDest": "public/js/esm/sw.js",
"swSrc": "./src/sw.js",
"modifyUrlPrefix": {
"js/": "/js/",