Mixins / foldkit-mixins

MetadataToken

namespace · packages/mixins/src/metadataToken.ts:6

export * as MetadataToken from './metadataToken.js'

Members

MetadataToken.Any

type · packages/mixins/src/metadataToken.ts:17

type Any = MetadataToken<string, string>

MetadataToken.is

function · packages/mixins/src/metadataToken.ts:43

function is(value: unknown): value is Any

MetadataToken.KindOf

type · packages/mixins/src/metadataToken.ts:22

type KindOf<T> = T extends MetadataToken<infer Kind, any> ? Kind : never

MetadataToken.make

function · packages/mixins/src/metadataToken.ts:26

function make<const Kind extends string, const Name extends string>(
  kind: Kind,
  name: Name,
): MetadataToken<Kind, Name>

MetadataToken.MetadataToken

interface · packages/mixins/src/metadataToken.ts:8

interface MetadataToken<Kind extends string, Name extends string> {
  readonly [MetadataTokenTypeId]: {
    readonly Kind: Kind
    readonly Name: Name
  }
  readonly kind: Kind
  readonly name: Name
}

MetadataToken.MetadataTokenTypeId

const · packages/mixins/src/metadataToken.ts:6

const MetadataTokenTypeId: unique symbol

Ported from effect-atom-jsx/src/MetadataToken.ts. Kinded name tokens so Event, Attr, Requirement, and Capability share one witness instead of four ad-hoc brands.

MetadataToken.NameOf

type · packages/mixins/src/metadataToken.ts:19

type NameOf<T> =
  T extends MetadataToken<any, infer Name> ? Name : T extends string ? T : never

MetadataToken.nameOf

function · packages/mixins/src/metadataToken.ts:46

function nameOf(value: string | Any): string

MetadataToken.NamesOf

type · packages/mixins/src/metadataToken.ts:24

type NamesOf<T extends readonly unknown[]> = NameOf<T[number]>