Skip to content

Instantly share code, notes, and snippets.

View daliborgogic's full-sized avatar
:octocat:
In Git we trust!

Dalibor Gogic daliborgogic

:octocat:
In Git we trust!
View GitHub Profile
@daliborgogic
daliborgogic / router.js
Created July 14, 2023 10:32
Vue Router Back/forward cache
import { createRouter, createWebHistory } from 'vue-router'
const routes = []
const router = createRouter({
history: createWebHistory(),
routes
})
let dbPromise
@daliborgogic
daliborgogic / elementTiming.js
Last active August 18, 2023 17:09
Vue.js Element Timing API directive as plugin
export default {
install: (app, options) => {
let observer
const obj = {
created(el, binding) {
if (options?.observe) {
el.setAttribute('elementtiming', binding.arg)
observer = new PerformanceObserver(list => {
for (const entry of list.getEntries()) {
const { identifier, loadTime } = entry
@daliborgogic
daliborgogic / package.json
Last active October 14, 2022 16:58
Checks for a valid postcode
{
"scripts": {
"test": "vitest"
},
"devDependencies": {
"vitest": "^0.24.3"
}
}
@daliborgogic
daliborgogic / api.mjs
Last active September 12, 2022 06:51
Gateway as a Service (GaaS)
function createApi(baseUrl, defaults = {}) {
const callable = () => {}
callable.url = baseUrl
return new Proxy(callable, {
get({ url }, key) {
const method = key.toUpperCase()
if (['GET', 'POST', 'PUT', 'DELETE', 'PATCH'].includes(method)) {
return (data, overrides = {}) => {
const payload = { method, ...defaults, ...overrides }
switch (method) {
@daliborgogic
daliborgogic / worker.mjs
Last active August 22, 2022 19:45
Prepend/appen to stream
import { createApp } from './dist/app.mjs'
import { pipeToWebWritable } from 'vue/server-renderer'
const prepend = String.raw`<!doctype html>
<html lang="en">
<title>Title</title>
<div id="app">`
const append = String.raw`</div>
<script type="importmap">
import path from 'node:path'
import { loadEnv } from 'vite'
export default ({ mode }) => {
return {
env: Object.assign(process.env, loadEnv(mode, process.cwd()))
}
}
import { createServer } from 'node:http'
import { createHmac } from 'node:crypto'
import { Printer, InMemory, Drawer, Style, Align, Model } from 'escpos-buffer'
const {
PORT = 3000,
HOST = 0,
GITHUB_WEBHOOK_SECRET,
PRINTER_MODEL = 'TM-T20',
PRINTER_COLUMNS = 56
@daliborgogic
daliborgogic / i18n.js
Last active October 26, 2022 18:34
[POC] i18n in 142 bytes 💥
export default function (locale, path, ...args) {
return (path, ...args) => {
const keys = path.trim().split('.')
const fn = keys.reduce((prev, curr) => prev && prev[curr], locale)
return typeof fn === 'function' ? fn(...args) : fn
}
}
// export default function(t,e,...n){return(e,...n)=>{const r=e.trim().split(".").reduce((t,e)=>t&&t[e],t);return"function"==typeof r?r(...n):r}}
@daliborgogic
daliborgogic / functions.php
Last active May 6, 2021 15:46
Polylang REST API assign the translation
<?php
add_filter('rest_pre_echo_response', function($response, $object, $request) {
$post_id = $response['id'];
$type = get_post_type($post_id);
$from_post = $request->get_param('from_post');
if ($from_post && $type === 'hotels') {
pll_set_post_language($post_id, 'de');
pll_set_post_language($from_post, 'en');
pll_save_post_translations(array(
@daliborgogic
daliborgogic / vitals.js
Last active January 27, 2023 18:25
[POC] Sending Vite.js Core Web Vitals to Google Analytics
const transformer = options => ({
apply: 'post',
transform({ code, isBuild }) {
if (!isBuild) return code
return code.replace('</body>', `<script defer type="module">
const KEY = 'ga:user'
const UID = (localStorage[KEY] = localStorage[KEY] || Math.random() + '.' + Math.random())
const onError = err => console.error('[vite vitals] ', err)
const onDebug = (label, payload) => console.log(label, payload)