Skip to content

Instantly share code, notes, and snippets.

View pablohpsilva's full-sized avatar
🏠
Working from home

PHPS pablohpsilva

🏠
Working from home
View GitHub Profile
@pablohpsilva
pablohpsilva / toolbar.js
Last active October 8, 2017 19:03
InfernoJS + dynamic classes added WRONG
<div
className={{
'toolbar': true,
'toolbar-fixed': fixed
}}>
{ children }
</div>
@pablohpsilva
pablohpsilva / flattenObj.js
Created October 8, 2017 18:57
FlattenObj will flatten an object, just like it was an array
const flattenObj = (obj) => {
if (!obj) {
return {}
}
return Object.keys(obj).reduce((acc, curr) => {
const objValue = obj[curr]
const ret = (objValue && objValue instanceof Object)
? flattenObj(objValue)
: { [curr]: objValue }
return Object.assign(acc, ret)
@pablohpsilva
pablohpsilva / dynamicClasses.js
Created October 8, 2017 18:58
dynamicClasses is a function that reads an object and return truthy keys as string
import { flattenObj } from '#JS/flatten'
const dynamicClasses = (obj) => {
if (obj && obj instanceof Object) {
const flatten = flattenObj(obj)
return Object.keys(flatten)
.filter(el => flatten[el])
.join(' ')
}
return ''
@pablohpsilva
pablohpsilva / toolbar.js
Created October 8, 2017 19:01
InfernoJS toolbar component example using dynamicClasses
import getDynamicClasses from '#JS/dynamic-classes'
export default ({ children, fixed }) => {
return (
<div
className={getDynamicClasses({
'toolbar': true,
'toolbar-fixed': fixed
})}>
{ children }
@pablohpsilva
pablohpsilva / measure2-webpack.prod.config.js
Created October 28, 2017 16:56
measure2-webpack.prod.config.js
module.exports = merge(baseWebpackConfig, {
// ...
plugins: [
new webpack.optimize.UglifyJsPlugin({
sourceMap: config.build.productionSourceMap,
minimize: true,
compress: {
warnings: false, // warn about potentially dangerous optimizations/code
sequences: true, // join consecutive statemets with the “comma operator”
properties: true, // optimize property access: a["foo"] → a.foo
@pablohpsilva
pablohpsilva / measure3-webpack.prod.conf.js
Created October 28, 2017 17:15
measure3-webpack.prod.conf.js
module.exports = merge(baseWebpackConfig, {
// ...
plugins: [
// ...
// Build my bundle app.js from node_modules with NO quasar code
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
async: true,
minChunks: function (module, count) {
// any required modules inside node_modules are extracted to vendor
@pablohpsilva
pablohpsilva / measure4-webpack.prod.conf.js
Created October 28, 2017 17:32
measure4-webpack.prod.conf.js
var
// ...
PreloadWebpackPlugin = require('preload-webpack-plugin'),
// ...
module.exports = merge(baseWebpackConfig, {
// ...
plugins: [
// ...
new PreloadWebpackPlugin({
@pablohpsilva
pablohpsilva / load-minified.js
Created October 28, 2017 17:45
load-minified.js
var fs = require('fs')
var UglifyJS = require('uglify-es')
module.exports = function(filePath) {
var code = fs.readFileSync(filePath, 'utf-8')
var result = UglifyJS.minify(code)
if (result.error) return ''
return result.code
}
@pablohpsilva
pablohpsilva / service-worker-prod.js
Created October 28, 2017 17:47
service-worker-prod.js
(function() {
'use strict';
// Check to make sure service workers are supported in the current browser,
// and that the current page is accessed from a secure origin. Using a
// service worker from an insecure origin will trigger JS console errors.
const isLocalhost = Boolean(window.location.hostname === 'localhost' ||
// [::1] is the IPv6 localhost address.
window.location.hostname === '[::1]' ||
// 127.0.0.1/8 is considered localhost for IPv4.
@pablohpsilva
pablohpsilva / measure5-webpack.prod.conf.js
Created October 28, 2017 17:50
measure5-webpack.prod.conf.js
var
// ...
SWPrecacheWebpackPlugin = require('sw-precache-webpack-plugin'),
loadMinified = require('./load-minified'),
// ...
module.exports = merge(baseWebpackConfig, {
// ...
plugins: [
// ...