Skip to content

Instantly share code, notes, and snippets.

@jpb06
jpb06 / npm-oidc-publish.md
Created January 18, 2026 15:29
Migrate to OIDC npm publishing

Switch from legacy tokens to OIDC for npm package publishing

github repo config

Remove obsolete NPM_TOKEN from secrets in Secrets and variables tab.

npm config

npm config

@jpb06
jpb06 / delay-effect.ts
Last active March 1, 2025 14:24
Effect testing - Delay an effect
import {
Duration,
Effect,
Fiber,
TestClock,
TestContext,
pipe,
} from 'effect';
const delayEffect = <R, E>(
@jpb06
jpb06 / extract-effect-channels-types.ts
Created February 1, 2025 11:44
Effects channels types extraction
import { Effect, Layer, pipe } from 'effect';
import { TaggedError } from 'effect/Data';
type EffectResultRequirement<
T extends (...args: any) => Effect.Effect<unknown, unknown, unknown>,
> = Effect.Effect.Context<ReturnType<T>>;
type EffectResultSuccess<
T extends (...args: any) => Effect.Effect<unknown, unknown, unknown>,
> = Effect.Effect.Success<ReturnType<T>>;
const delay = async (ms: number) =>
new Promise((resolve) => {
setTimeout(resolve, ms);
});
const enforceMinimumDuration = async <TResult>(
promise: Promise<TResult>,
minDuration: number,
) => {
const [result] = await Promise.all([promise, delay(minDuration)]);
@jpb06
jpb06 / big-int-replacer.ts
Created December 14, 2024 16:49
Stringify an object containing bigints
const bigIntReplacer = (_key: string, value: unknown) => {
if (typeof value === 'bigint') {
return {
type: 'bigint',
value: value.toString(),
};
}
return value;
};
@jpb06
jpb06 / effect-layer.ts
Last active December 14, 2024 14:11
Effect - Define layers, consume them and test code depending on them
import { Context, Effect, Layer, pipe } from 'effect';
// ----------------------------------------------
// define layer
class Logger extends Context.Tag('Logger')<
Logger,
{
readonly info: (message: string) => Effect.Effect<void>;
readonly error: (message: string) => Effect.Effect<void>;
}
@jpb06
jpb06 / ga-dump-github-context-workflow.yml
Created December 14, 2024 13:44
Github actions - Dump github context
jobs:
my-task:
name: My task
runs-on: ubuntu-latest
- name: ℹ️ Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: |
echo "$GITHUB_CONTEXT"