Skip to content

Instantly share code, notes, and snippets.

View laruiss's full-sized avatar
🏠
Working from home

Stanislas Ormières laruiss

🏠
Working from home
View GitHub Profile
@laruiss
laruiss / linearize-output.ts
Created November 21, 2024 09:24
Safe assignment operator, do we need it?
function linearizeOutput<T, U, V>(fn: (this: V, ...args: T[]) => U, anyway?: () => Promise<void>) {
return async function (this: V, ...args: T[]): Promise<[Error, null] | [null, U]> {
try {
const result = await fn.call(this, ...args);
return [null, result];
}
catch (err) {
const error = err instanceof Error ? err : new Error(err as string);
return [error, null];
} finally {
@laruiss
laruiss / pinia.code-snippets
Created September 14, 2024 18:23
Snippet for
{
"Pinia Setup Store Boilerplate": {
"scope": "javascript,typescript",
"prefix": "pinia-setup",
"body": [
"import { defineStore, acceptHMRUpdate } from 'pinia'",
"",
"export const use${TM_FILENAME_BASE/^(.*)$/${1:/pascalcase}/}Store = defineStore('$TM_FILENAME_BASE', () => {",
" $0",
" return {}",
@laruiss
laruiss / settings.json
Created July 6, 2024 14:27
macOS VSCode settings
{
"[html]": {
"editor.defaultFormatter": "vscode.html-language-features"
},
"[javascript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
// "editor.defaultFormatter": "vscode.typescript-language-features"
},
"[json]": {
"editor.defaultFormatter": "vscode.json-language-features"
@laruiss
laruiss / run.js
Created May 31, 2024 09:31
Run shell command programmatically from node
import { exec } from 'node:child_process'
async function run (cmd) {
const child = exec(cmd, (err) => {
if (err) console.error(err)
})
child.stderr.pipe(process.stderr)
child.stdout.pipe(process.stdout)
await new Promise((resolve) => child.on('close', resolve))
}
@laruiss
laruiss / vite.config.ts
Last active May 29, 2024 14:52
vite.config.ts w/ autoimport & components
/// <reference types="vitest" />
import { URL, fileURLToPath } from 'node:url'
import process from 'node:process'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import svgLoader from 'vite-svg-loader'
import UnoCSS from 'unocss/vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
@laruiss
laruiss / AppHeader.vue
Created January 3, 2024 17:43
DsfrHeader avec extra slots
<script lang="ts" setup>
import { computed, onMounted, onUnmounted, ref, useSlots } from 'vue'
import { DsfrLogo, DsfrSearchBar, DsfrHeaderMenuLinks, type DsfrHeaderProps } from '@gouvminint/vue-dsfr'
const props = withDefaults(defineProps<DsfrHeaderProps>(), {
serviceTitle: undefined,
serviceDescription: undefined,
homeTo: '/',
logoText: () => 'Gouvernement',
@laruiss
laruiss / .zshrc
Created November 30, 2023 10:58
ZSH ssh-agent
# Check for a currently running instance of the agent
RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
echo "RUNNING_AGENT: $RUNNING_AGENT"
if [ "$RUNNING_AGENT" = "0" ]; then
# Launch a new instance of the agent
ssh-agent -s &> ~/.ssh/ssh-agent
fi
eval `cat ~/.ssh/ssh-agent`
@laruiss
laruiss / .zshrc
Last active November 30, 2023 10:57
ZSH Completion
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH="${HOME}/.oh-my-zsh"
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if test -n "${USE_P10K-}"; then
@laruiss
laruiss / nginx.conf.erb
Created October 14, 2022 17:54
Scalingo Nginx config
# Static files directory
root <%= ENV['STATIC_DIR'] || '/usr/share/nginx/html' %>;
index index.html;
location / {
try_files $uri $uri/ /index.html =404;
}
location /api {
rewrite "^(.*)$" $1 break;
@laruiss
laruiss / 3-file-combo.conf
Created October 14, 2022 17:53
config nginx total
# nginx.conf
user nginx;
worker_processes auto;
error_log /dev/stdout info;
pid /var/run/nginx.pid;
events {