Skip to content

Instantly share code, notes, and snippets.

View pigoz's full-sized avatar
:octocat:

Stefano Pigozzi pigoz

:octocat:
View GitHub Profile
@pigoz
pigoz / TController.ts
Last active September 4, 2024 11:19
TypeScript Stimulus Controller
import { Context, Controller } from "@hotwired/stimulus";
interface PClass<T> {
prototype: T;
}
// Camelback
type Cbz<T extends string> = T extends `${infer A}_${infer B}`
? `${A}${Cbz<Capitalize<B>>}`
: T extends `${infer A}-${infer B}`
import { pipe } from '@fp-ts/core/Function';
import * as A from '@fp-ts/core/ReadonlyArray';
import * as HashMap from '@effect/data/HashMap';
import { dual } from '@fp-ts/core/Function';
const compare = {
number: (a: number, b: number) => a - b,
string: (a: string, b: string) =>
a.localeCompare(b, 'en', { sensitivity: 'base' }),
Date: (a: Date, b: Date) => a.getTime() - b.getTime(),
@pigoz
pigoz / Page.tsx
Last active January 10, 2023 10:12
impport * as Z from '@effect/io/Effect';
export { loader } from '~/runtime';
export const zloader: Z.Effect<..., ..., ...> = currentUserOrRedirect($path('/login'));
There was an error running the data loader for route routes/dashboard.posts
Error: Service not found
at /Users/pigoz/dev/superagent/node_modules/src/internal/Context.ts:130:13
at Object.successK (/Users/pigoz/dev/superagent/node_modules/@effect/io/src/internal/core.ts:915:60)
at Object.4 (/Users/pigoz/dev/superagent/node_modules/@effect/io/src/internal/fiberRuntime.ts:96:17)
at FiberRuntime.6 (/Users/pigoz/dev/superagent/node_modules/@effect/io/src/internal/fiberRuntime.ts:980:36)
at FiberRuntime.runLoop (/Users/pigoz/dev/superagent/node_modules/@effect/io/src/internal/fiberRuntime.ts:1173:47)
at FiberRuntime.evaluateEffect (/Users/pigoz/dev/superagent/node_modules/@effect/io/src/internal/fiberRuntime.ts:785:29)
at FiberRuntime.start (/Users/pigoz/dev/superagent/node_modules/@effect/io/src/internal/fiberRuntime.ts:840:14)
at RuntimeImpl.unsafeRunWith (/Users/pigoz/dev/superagent/node_modules/@effect/io/src/internal/runtime.ts:98:18)
export const pool = (name: string, self: DbTest) => {
return it(name, async () => {
return await zdb.serializable(pgpool, async conn => {
await self(conn);
await zdb.sql`ROLLBACK`.run(conn);
});
});
};
import * as E from '@fp-ts/data/Either';
import * as Z from '@effect/io/Effect';
import * as Context from '@fp-ts/data/Context';
import { pipe } from '@fp-ts/data/Function';
import {
DataFunctionArgs as DataFunctionArgs_,
// LoaderFunction,
// TypedResponse,
// AppLoadContext,
json,
@pigoz
pigoz / http.ts
Created November 27, 2022 10:53
playing around with Effect/io
import { pipe } from '@fp-ts/data/Function';
import * as E from '@fp-ts/data/Either';
import * as Effect from '@effect/io/Effect';
// import * as Layer from '@effect/io/Layer';
// import * as Context from '@fp-ts/data/Context';
import { z } from 'zod';
import debug_ from 'debug';
export function decode<T>(schema: z.ZodSchema<T>) {
return (input: unknown): E.Either<z.ZodError<T>, T> => {
@pigoz
pigoz / network.ts
Created January 31, 2020 14:52
useApi, react, fp-ts
import * as React from 'react';
import * as t from 'io-ts';
import { pipe } from 'fp-ts/lib/pipeable';
import * as E from 'fp-ts/lib/Either';
import * as TE from 'fp-ts/lib/TaskEither';
import * as RD from '@devexperts/remote-data-ts';
interface ApiOptions<T> {
token?: string;
method?: string;
@pigoz
pigoz / 000.txt
Last active January 4, 2020 16:14
rspec test.rb 1 ↵
.......*
Pending: (Failures listed here are expected and do not affect your suite's status)
1) test find cool test cases
# Temporarily skipped with xit
# ./test.rb:52
type FunctionComponent<A> = (a: A) => string
function contramap<A, B>(fc: FunctionComponent<A>, f: (b: B) => A): FunctionComponent<B> {
return b => fc(f(b))
}
// --- esempio ---
interface _Props {
a: string