Skip to content

Instantly share code, notes, and snippets.

View jmfrancois's full-sized avatar

Jean-Michel FRANCOIS jmfrancois

  • Talend by Qlik
  • France
View GitHub Profile
#!/usr/bin/env node
const fs = require('fs');
const sass = require('sass');
const path = require('path');
const pathToFileURL = require('url').pathToFileURL;
const CWD = process.cwd();
const nodeModulesPath = path.join(CWD, 'node_modules');
const SRC_PATH = process.argv[2]; // /home/user/project/src
@jmfrancois
jmfrancois / merge-coverage.ts
Created March 14, 2024 08:25
ts-node utilities for frontend
#!/usr/bin/env ts-node
import * as fs from 'fs'
import * as path from 'path'
import * as glob from 'glob'
const CWD = process.cwd()
// describe coverage-final.json file
type Statement = {
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const CWD = process.cwd();
const EXTENSIONS = /\.(scss)$/;
const SASS_DATA = "@use '~@talend/bootstrap-theme/src/theme/guidelines' as *;\n";
function transform(filename) {
@jmfrancois
jmfrancois / screenshots.js
Created April 15, 2021 08:20
ui regression tester between two surge.sh websites
const program = require('commander');
const fs = require('fs');
const tmp = require('tmp-promise');
const PNG = require('pngjs').PNG;
const pixelmatch = require('pixelmatch');
const puppeteer = require('puppeteer');
program
.option('-p, --pullrequest [pr]', 'Pull request')
.option('-c, --config [config]', 'JSON config file')
@jmfrancois
jmfrancois / versions.js
Last active December 12, 2024 09:53
This gist is to help you to maintain your backstage app clean against a release
const os = require('os');
const fs = require('fs');
const versions = require('./versions.json');
function updatePart(dependencies) {
Object.keys(dependencies).forEach(dep => {
if (versions[dep]) {
dependencies[dep] = versions[dep];
}
})
@jmfrancois
jmfrancois / Webcomponent.jsx
Created April 6, 2020 20:37
how to render webcomponent in react
import React from 'react';
export default function WebComponent({ component, ...props }) {
const [myEl, setState] = React.useState(document.createElement(component));
const el = React.useRef(null);
React.useEffect(() => {
if (myEl.tagName.toLowerCase() !== component.toLowerCase() ) {
setState(document.createElement(component));
} else {
Object.keys(props).forEach(key => {
@jmfrancois
jmfrancois / pathShadowForReact.js
Last active March 24, 2020 08:56
This gist let you use React into shadowDOM
/**
* IMPORTANT NOTE.
* Because react use synthetic event we have to patch the shadowDOM
* The following patch has to be applied just after the attachShadow
* and you must ban the use document.createElement. Use shadowRoot.createElement instead.
* Source: https://github.com/facebook/react/issues/9242
*/
function changeOwnerDocumentToShadowRoot(element, shadowRoot) {
Object.defineProperty(element, 'ownerDocument', {value: shadowRoot});
}
@jmfrancois
jmfrancois / lazyroutes.js
Last active January 9, 2020 08:09
CMF Scripts to generate lazy react component from router configuration
#!/usr/bin/env node
// parse webapp using cmf.json to extract all components
// generate for each component the lazy one
// To use it just download it in your cmf webapp folder and execute it
const mkdirp = require('mkdirp');
const fs = require('fs');
const CONFIG_PATH = './lazyroutes.json';
@jmfrancois
jmfrancois / split-settings.js
Last active September 18, 2019 08:29
To split CMF settings.json files into multiple ones.
#!/usr/bin/env node
const fs = require('fs');
const settings = require(process.argv[2]);
if (!settings.props) {
console.log('no props in this file');
process.exit();
}
const extra = Object.keys(settings).filter(key => key !== 'props');