Skip to content

Instantly share code, notes, and snippets.

View Igloczek's full-sized avatar

Bartek Igielski Igloczek

  • Bielsko-Biała, Poland
  • 06:47 (UTC +01:00)
  • X @igloczek
View GitHub Profile
@Igloczek
Igloczek / unfucked-chrome-storage-api.js
Created August 30, 2024 19:48
A way to unfuck the Chrome Storage API
export const storage = {
async get(key) {
return new Promise((resolve, reject) => {
chrome.storage.local.get(key, (result) => {
if (chrome.runtime.lastError) {
return reject(chrome.runtime.lastError)
}
resolve(result[key])
})
})
@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);