Skip to content

Instantly share code, notes, and snippets.

View ManUtopiK's full-sized avatar
:octocat:
Ready to code.

Emmanuel Salomon ManUtopiK

:octocat:
Ready to code.
View GitHub Profile
@ManUtopiK
ManUtopiK / urql.ts
Created March 9, 2023 00:45 — forked from productdevbook/urql.ts
Nuxt 3 urql graphql
import { Client, createClient, dedupExchange, errorExchange, fetchExchange, ssrExchange } from '@urql/core'
import { ref } from 'vue'
import { devtoolsExchange } from '@urql/devtools'
import * as Session from 'supertokens-web-js/recipe/session'
import { authExchange } from '@urql/exchange-auth'
import { defineNuxtPlugin } from '#app'
const ssrKey = '__URQL_DATA__'
export default defineNuxtPlugin((nuxtApp) => {
@ManUtopiK
ManUtopiK / masonry-grid-polyfill.ts
Created January 9, 2023 19:55
masonry-grid-polyfill.ts
export interface GridInstance {
el: HTMLElement
items: HTMLElement[]
gap: number
columns: number
count: number
}
export function masonryGridPolyfill(selectors = '.masonry-grid') {
const elements = [...document.querySelectorAll<HTMLElement>(selectors)]
@ManUtopiK
ManUtopiK / tld
Created October 23, 2022 02:21
All tld
000abv
0db
0mb
0we
0wf
0z
1
11v
18ani
18plus
@ManUtopiK
ManUtopiK / location.ts
Created July 6, 2022 19:45
uselocation.ts
import type { Ref } from 'vue';
export const useLang: () => Ref<string> = () => {
if (process.client) {
return ref(navigator.language);
}
const parseLangString: (languages: string) => string = (languages) => {
return languages.split(',')[0];
};
@ManUtopiK
ManUtopiK / useEmitter.js
Created June 27, 2022 02:57
Events emitter/listener in Nuxt 3
// Working code with Vue3
// Create Folder plugin > Create file useEmitter.js
import { defineNuxtPlugin } from '#app'
import mitt from 'mitt'
const emitter = mitt()
export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.provide('bus', {
@ManUtopiK
ManUtopiK / dice.js
Created January 20, 2022 12:14
Play the dice
// Unicode 0x2680-0x2685 are the sides of a dice (⚀⚁⚂⚃⚄⚅)
console.log('%c'+String.fromCodePoint(0x267f + Math.floor(Math.random() * 6) + 1), 'font-size: 4rem;')
@ManUtopiK
ManUtopiK / gist:e07229cbb66380d3cf397a486c64bbce
Created December 11, 2021 21:28
git hook pre-commit search TODO+FIXME
#! /bin/bash
# Si vous rencontrez une erreur du type `declare: -A: invalid option`
# c’est qu’il vous faut mettre à jour votre version bash à v4.
# Pour Mac OS, regardez ici : http://clubmate.fi/upgrade-to-bash-4-in-mac-os-x/
# Hash utilisant la clé comme expression de recherche (Regex) et la valeur
# associée comme message d’erreur
declare -A PATTERNS;
PATTERNS['^[<>|=]{4,}']="Vous avez des marqueurs de conflits qui traînent";
PATTERNS['TODO|FIXME']="Vous avez des tâches non terminées (FIXME/TODO)";
@ManUtopiK
ManUtopiK / gist:70c1aeff5de45980c86209e759cafbd0
Created October 8, 2021 22:06
fastify read video and return stream
fastify.get('/api/watch', async function (req, res) {
const mp4Url = "https://download1319.mediafire.com/ky961ln87icg/cl1lndr4pyy4cv4/aAbnw92_460svav1+%281%29.mp4";
const response = await axios.get(mp4Url, {
responseType: "stream",
headers: {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
},
});
@ManUtopiK
ManUtopiK / slugify.js
Created September 2, 2021 16:42
slugify
String.prototype.slugify = function (separator = '-') {
return this.toString()
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.toLowerCase()
.trim()
.replace(/[^a-z0-9 ]/g, '')
.replace(/\s+/g, separator)
}
@ManUtopiK
ManUtopiK / countries.js
Created December 15, 2020 22:00
World countries
const countries = [
"Afghanistan",
"Albania",
"Algeria",
"Andorra",
"Angola",
"Antigua and Barbuda",
"Argentina",
"Armenia",
"Australia",