Skip to content

Instantly share code, notes, and snippets.

View ghoullier's full-sized avatar
🧙‍♂️
TypeScript everything

Grégory Houllier ghoullier

🧙‍♂️
TypeScript everything
View GitHub Profile
@ghoullier
ghoullier / dependabot-bun-support-gitub-action.yml
Last active May 30, 2023 20:59
Add lockfile maintenance to dependabot pull request.
on:
push:
branches:
- main
pull_request:
types: [ opened, synchronize ]
name: Dependabot Bun Support
permissions:
@ghoullier
ghoullier / Dockerfile
Created March 16, 2023 16:26 — forked from Firnael/Dockerfile
Distroless NodeJS + Typescript
## Kodo multi-stage docker image ##
# build project with typescript
FROM node:16.15.1-stretch as ts-compiler
WORKDIR /app
COPY package*.json ./
COPY tsconfig*.json ./
RUN npm install
COPY . ./
RUN npm run build
@ghoullier
ghoullier / get_indexdb_sizes.js
Created November 8, 2019 09:36 — forked from tralves/get_indexdb_sizes.js
Calculate sizes of all IndexDB database and tables
var getTableSize = function(db, dbName){
return new Promise((resolve,reject) => {
if (db == null) {
return reject();
}
var size = 0;
db = event.target.result;
var transaction = db.transaction([dbName])
.objectStore(dbName)
.openCursor();
const createLogger = (backgroundColor, color, enabled = true) => (
message,
...args
) => {
if (!enabled) {
return;
}
console.groupCollapsed(
`%c${message}`,
`background-color: ${backgroundColor}; color: ${color}; padding: 2px 4px;`,
@ghoullier
ghoullier / index.html
Last active October 18, 2016 14:06
Orange Test Days Demo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Demo</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.7/css/materialize.min.css">
<style>nav { background-color: #26a69a; } main { height: calc(100vh - 64px); overflow-y: auto; } .center-cropped { height: 250px; object-fit: cover; object-position: center; } [data-tag]::before { content: attr(data-tag) }</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
@ghoullier
ghoullier / dom.js
Created April 8, 2016 09:54
DOM - createElement Helper
export const dom = (tag, attributes = {}, ...children) => {
const element = document.createElement(tag)
for (const attribute in attributes) {
if (attributes.hasOwnProperty(attribute)) {
element.setAttribute(attribute, attributes[attribute])
}
}
const fragment = document.createDocumentFragment()
children.forEach((child) => {
if (typeof child === 'string') {
@ghoullier
ghoullier / konami.js
Last active August 29, 2015 14:12
Konami code detection
;(function main(exports) {
var KONAMI_KEYS = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65]
var KONAMI_KEYS_LENGTH = KONAMI_KEYS.length
var callbacks = []
var index = 0
document
.documentElement
.addEventListener('keydown', detect, true)
@ghoullier
ghoullier / SassMeister-input.scss
Created December 23, 2014 14:28
Generated by SassMeister.com.
// ----
// Sass (v3.4.9)
// Compass (v1.0.1)
// ----
.logos-twitter {
display: block;
}
.logos-facebook {
display: block;
@ghoullier
ghoullier / load-image.js
Created July 13, 2014 14:53
Load Image using promise
;(function(root, doc) {
var log = console.log.bind(console)
, error = console.error.bind(console)
function trace(args) {
log(args.callee.name, args)
}
function load(url) {
return new Promise(function(resolve, reject) {
@ghoullier
ghoullier / dom.js
Created June 12, 2014 14:16
DOM Utilities
;(function(root, name, factory) {
var exports = factory(root);
// AMD
if (typeof define == 'function' && define.amd) {
return define(exports);
}
// CommonJS
if (typeof module !== 'undefined' && module.exports) {
module.exports = exports;
}