Skip to content

Instantly share code, notes, and snippets.

View schickling's full-sized avatar
Making the web better

Johannes Schickling schickling

Making the web better
View GitHub Profile
import * as Context from '@effect/data/Context'
import * as Duration from '@effect/data/Duration'
import type * as Either from '@effect/data/Either'
import { pipe } from '@effect/data/Function'
import * as Deferred from '@effect/io/Deferred'
import * as FiberRefs from '@effect/io/FiberRefs'
import * as Queue from '@effect/io/Queue'
import * as Effect from './Effect.js'
import * as Otel from './Otel/index.js'
import * as Data from '@effect/data/Data'
import { pipe } from '@effect/data/Function'
import * as Effect from '@effect/io/Effect'
import * as msgpack from 'msgpackr'
import * as Otel from './Otel/index.js'
export const fetchHead = (
url: string | URL,
headers?: HeadersInit,
@schickling
schickling / flake.nix
Last active August 7, 2023 14:20
Random Node Effect image utils
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/master";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
import * as Data from '@effect/data/Data'
import { pipe } from '@effect/data/Function'
import * as Effect from '@effect/io/Effect'
import * as msgpack from 'msgpackr'
import * as Otel from './Otel/index.js'
export const fetchHead = (
url: string | URL,
headers?: HeadersInit,
/* eslint-disable prefer-arrow/prefer-arrow-functions */
export * from '@effect/io/Scheduler'
import * as Scheduler from '@effect/io/Scheduler'
// Based on https://github.com/Effect-TS/io/blob/main/src/Scheduler.ts#L63
export class ReactAwareScheduler implements Scheduler.Scheduler {
private running = false
private tasks = new Array<Scheduler.Task>()
/* eslint-disable prefer-arrow/prefer-arrow-functions */
/**
* fork of https://github.com/astoilkov/main-thread-scheduling
*
* node compatibility
* removal of visible priority
* reversal of task order
*/
import * as Effect from '@effect/io/Effect'
import React from 'react'
const PR = Math.round(window.devicePixelRatio || 1)
const FRAME_BAR_WIDTH = 2
export type FPSMeterProps = {
width?: number
height?: number
systemFps?: number
import { pipe } from '@effect/data/Function'
import * as Option from '@effect/data/Option'
import * as Cause from '@effect/io/Cause'
import * as Effect from '@effect/io/Effect'
import * as Exit from '@effect/io/Exit'
import * as Fiber from '@effect/io/Fiber'
import * as Queue from '@effect/io/Queue'
import * as Stream from '@effect/stream/Stream'
export const chainSwitch =
const makeEtaState = () => {
type TimestampInSeconds = number
const countBucketsForLast10Seconds: Map<TimestampInSeconds, number> = new Map()
const countRun = (numberOfItems: number) => {
const timestampInSeconds = Math.floor(Date.now() / 1000)
const count = countBucketsForLast10Seconds.get(timestampInSeconds) ?? 0
countBucketsForLast10Seconds.set(timestampInSeconds, count + numberOfItems)
}
{ lib, rev, pkgs ? import <nixpkgs> { } }:
let
inherit (pkgs) fetchzip lib stdenv;
inherit (pkgs.stdenv) mkDerivation;
inherit (pkgs.stdenv.hostPlatform) system;
selectSystem = attrs:
attrs.${system} or (throw "Unsupported system: ${system}");