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 / 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 / ratelimit.js
Last active July 3, 2022 09:16
rate limiting javascript generator
async function* rateLimit(limit, time) {
let count = 0;
while(true) {
if(count++ >= limit) {
await delay(time);
count = 0;
}
yield; // Let's execute next code
}
}
@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",
@ManUtopiK
ManUtopiK / Editor.vue
Created November 26, 2020 00:48 — forked from Julien1138/Editor.vue
Tiptap collaboration server handles multiple document using namespaces and rooms
<template>
<div class="editor">
<template v-if="editor && !loading">
<div class="count">
{{ count }} {{ count === 1 ? 'user' : 'users' }} connected to {{ projectPath }}/{{ docName }}
</div>
<editor-content class="editor__content" :editor="editor" />
</template>
<em v-else>
Connecting to socket server …
# config.js
const config = {
...,
features: {
...
}.
...
}
function feature (name) {
return config.features[name]