Skip to content

Instantly share code, notes, and snippets.

View Igloczek's full-sized avatar

Bartek Igielski Igloczek

  • Bielsko-Biała, Poland
  • 02:29 (UTC +02:00)
  • X @igloczek
View GitHub Profile
@Igloczek
Igloczek / inline.ts
Last active June 17, 2024 17:45
Astro middleware for inlining critical JS to reduce requests chains
// Not sure whether it's genius or stupid, but it definitely works.
// The goal is to reduce chaining critical requests.
// By default in most cases Astro do this: html -> small chunk -> big chunk(s), which is kinda like Require.js, where you need to download file, to know what file you want to download.
// Code below takes this small chunk and inlines it into html, so we have at least one client-side request to make less: html -> big chunk(s).
// Additionally we can add "modulepreload" to start fetching those files faster (not sure where in this particular case it makes any sense, but was easy to add, so I did it).
// For sure this code isn't optimal, I just quickly hacked it just to have PoC, but I belive it won't hurt server-side performance that much.
// If you know some better way to do it, that doesn't require digging through HTML and replacing strings, please let me know.
import fs from "node:fs"
import path from "node:path"
@Igloczek
Igloczek / verify-email.js
Last active May 8, 2024 11:57
Simple way to filter out most of the disposable / temporary emails
import TTLCache from "@isaacs/ttlcache"
import axios from "axios"
const domainsCache = new TTLCache({
ttl: 1000 * 60 * 60 * 24, // cache for 24h
})
const lists = [
"https://raw.githubusercontent.com/wesbos/burner-email-providers/master/emails.txt", // submiting my findings here
"https://raw.githubusercontent.com/Igloczek/burner-email-providers/master/emails.txt", // adding my fork, as sometime PRs are stuck unmerged
@Igloczek
Igloczek / derecrutify-your-linkedin.js
Last active July 5, 2022 18:18
Scripts that removes recruiters from your LinkedIn contacts
// How to use this script?
// 1. Set LinkedIn language to engligh (I just didn't test it on others)
// 2. Go to https://www.linkedin.com/mynetwork/invite-connect/connections/
// 3. Paste this script to the console and watch :)
[...document.querySelectorAll('.mn-connection-card')]
// Comment out line below, if you want to remove not only people joined your network in the last year
.filter(el => el.querySelector('.time-badge').innerText.search(/year/igm) === -1)
.filter(el => el.querySelector('.mn-connection-card__occupation').innerText.search(/recruit|rekru|hr|talent|headhunter|people|resource|hiring|build|job|researcher/gmi) !== -1)
.forEach((el, index) => {
@Igloczek
Igloczek / inline-styles.mjs
Created February 19, 2022 11:36
Astro JS - Inline CSS
import path from 'node:path'
import fs from 'node:fs/promises'
import { globby } from 'globby'
const files = await globby('./dist/**/index.html')
await Promise.all(
files.map(async htmlPath => {
const pageStyles = []
const stylesPaths = []
@Igloczek
Igloczek / imports.js
Last active June 4, 2019 13:14
Tool for moving components imports from JS to Vue SFC
const fs = require('fs-extra')
const path = require('path')
const glob = require('glob')
const prettier = require('prettier')
const components = glob
.sync('src/*/*/*.js', { ignore: '**/*.{stories,stories_,spec}.js' })
.map(file => ({
src: file,
name: path.basename(file)
@Igloczek
Igloczek / build.js
Created June 4, 2018 18:51
Magento 2 bundling setup
{
// Enable js minification with Uglify. Uncomment this out during development tomake builds faster
optimize: 'none',
inlineText: true,
baseUrl: '/Users/igloczek/Sites/magento2-bundling/pub/static/frontend/Magento/luma/source',
dir: '/Users/igloczek/Sites/magento2-bundling/pub/static/frontend/Magento/luma/en_US',
// Shim configuration for non-AMD modules. Copied from requirejs-config
shim: {
'jquery/jquery-migrate': ['jquery'],
'jquery/jquery.hashchange': ['jquery', 'jquery/jquery-migrate'],
@Igloczek
Igloczek / replace.js
Created May 21, 2018 14:25
Vue mixin object from component
const glob = require('glob')
const fs = require('fs')
glob('core/components/**/*.js', (temp, files) => {
files.forEach(path => {
// const file = require('./' + path)
console.log(path)
let file = fs.readFileSync('./' + path, 'utf8')
file = file.replace(/import Vue from 'vue'\n/gm, '')
@Igloczek
Igloczek / README.md
Created May 19, 2018 11:46
Quick way to capitalize bunch of file names

Remeber to use git config core.ignorecase false while you are on case insensitive partition

@Igloczek
Igloczek / domready.js
Created April 5, 2017 21:12
DOM Ready event
window.domReady = function(callback) {
var ready = false;
var detach = function() {
if(document.addEventListener) {
document.removeEventListener("DOMContentLoaded", completed);
window.removeEventListener("load", completed);
}
else {
document.detachEvent("onreadystatechange", completed);
@Igloczek
Igloczek / index.js
Created March 5, 2017 12:20
Extremely simple CSS specificity analyzer
const css = require('css'),
fs = require('fs'),
specificity = require('specificity');
function getSelectorsWithHighSpecificity(cssFilePath, maxSpecificity) {
const cssFile = fs.readFileSync(cssFilePath, 'utf8'),
output = [];
css.parse(cssFile).stylesheet.rules.forEach(rule => {
if (rule.type === 'rule') {