import { ReloadableURI } from "@effect/core/io/Reloadable/definition" export class ReloadableInternal implements Reloadable { readonly [ReloadableURI] = { _Service: (_: never) => _ } constructor( readonly scopedRef: ScopedRef, readonly reload: Effect ) {} get get(): Effect { return this.scopedRef.get } get reloadFork(): Effect { return this.reload.ignoreLogged.forkDaemon.unit } } const tagMap: IterableWeakMap, Tag> = IterableWeakMap([]) /** * @tsplus getter Tag reloadable */ export function reloadableTag(tag: Tag): Tag> { const already = tagMap.getMaybe(tag) if (already.isSome()) { return already.value } const newTag = Tag>() tagMap.set(tag, newTag) return newTag }