Skip to content

Instantly share code, notes, and snippets.

const t = require('@babel/types')
// generates "(typeof __webpack_require__ === "function" ? __non_webpack_require__ : require)"
const dynamicRequireExpr = () => t.parenthesizedExpression(t.conditionalExpression(
t.binaryExpression(
'===',
// we should look at typeof __non_webpack_require__ but '__webpack_require__' is known at build time and optimized right away
t.unaryExpression('typeof', t.identifier('__webpack_require__'), false),
t.stringLiteral('function')
),
@jeremiegirault
jeremiegirault / jtd.schema.json
Created April 15, 2021 07:54
JTD JSON Schema Draft
{
"type": "object",
"$ref": "#/$defs/anyForm",
"properties": {
"definitions": {
"type": "object",
"additionalProperties": { "$ref": "#/$defs/anyForm" }
}
},
"$defs": {
@jeremiegirault
jeremiegirault / fb-removal-scripts.js
Created December 30, 2019 13:41
FB log items removal - Work with french version (translations may be easy to do), worked as 2019-12-30
// delete searches
(async () => {
const pause = (delay) => new Promise(resolve => setTimeout(resolve, delay))
const btns = document.querySelectorAll('a[aria-label=Modifier]')
console.log('btns>', btns)
for (const btn of btns) {
btn.click()
await pause(1000)
const delLink = document.querySelector(`[data-ownerid=${btn.id}] a[ajaxify^="/ajax/timeline/delete/confirm"]`)
console.log('delLink>', delLink)
@jeremiegirault
jeremiegirault / fb-removal-scripts.js
Created December 30, 2019 13:41
FB log items removal - Work in french version , worked as 2019-12-30
// delete searches
(async () => {
const pause = (delay) => new Promise(resolve => setTimeout(resolve, delay))
const btns = document.querySelectorAll('a[aria-label=Modifier]')
console.log('btns>', btns)
for (const btn of btns) {
btn.click()
await pause(1000)
const delLink = document.querySelector(`[data-ownerid=${btn.id}] a[ajaxify^="/ajax/timeline/delete/confirm"]`)
console.log('delLink>', delLink)
@jeremiegirault
jeremiegirault / README.md
Created December 13, 2017 11:53 — forked from boneskull/README.md
example of how to debug mocha v4 if hanging

Here's an example of how to debug Mocha v4 if it hangs.

Ensure you're using a Node.js 8 or newer (or any version with async_hooks support).

If you run your test, you'll notice it hangs:

$ mocha test.js
@jeremiegirault
jeremiegirault / main.js
Created November 24, 2017 18:39
Webpack hoisting issue
import m1 from './module1'
import m2 from './module2'
console.log('module1:', m1.id, ' - module2:', m2.id)
export default { id: module.id }
export default { id: module.id }
const webpack = require('webpack')
module.exports = {
entry: './main.js',
@jeremiegirault
jeremiegirault / 0-micro-style-loader.js
Last active November 20, 2017 18:10
Webpack css micro loader. Generates a smaller payload than traditional methods.
const { stringifyRequest } = require('loader-utils')
const postcss = require('postcss')
const cssModules = require('postcss-modules')
const cssNano = require('cssnano')
const cssNext = require('postcss-cssnext')
const _ = require('lodash')
// Why this loader ?
// This loaded is inteded to load css with a much smaller footprint than traditional css-loader / style-loader
// css-loader and styles-loader have an overhead of ~5kb of runtime when compiled and minified (growing with number of css imports)
alert('Hello !')
@jeremiegirault
jeremiegirault / README.md
Last active December 9, 2022 02:10
Use inline SVG in vue.js

Install svg-inline-loader for webpack :

npm install svg-inline-loader --save-dev

Add it to your loaders in module.loaders section of webpack.config.js:

{
  test: /\.svg$/,
 loader: 'svg-inline-loader'
@jeremiegirault
jeremiegirault / Dynamic.swift
Created June 21, 2017 17:27
Interesting way to use swift autoclosure for dynamic values
struct Dynamic<T> {
let get: () -> T
init(_ get: @autoclosure @escaping () -> T) {
self.get = get
}
var value: T { return get() }
}
var i: Int = 0