<T extends PipeableTag>(tag: T): TStamp a discoverable empty Node set (D3) — .pipe(Hyperlink.distributed) ≡
nodes([]). peersLayer then reads Lookup Directory.nodesServing.
For a fixed fleet list, use nodes([A, B]) (not this pipe). Identity-shaped
like identity so class extends Tag()(…).pipe(Hyperlink.distributed) type-checks.
export const const distributed: <
T extends PipeableTag
>(
tag: T
) => T
Stamp a discoverable empty Node set (D3) — .pipe(Hyperlink.distributed) ≡
nodes
([]).
peersLayer
then reads Lookup Directory.nodesServing.
For a fixed fleet list, use
nodes
([A, B]) (not this pipe). Identity-shaped
like
identity
so class extends Tag()(…).pipe(Hyperlink.distributed) type-checks.
distributed = <function (type parameter) T in <T extends PipeableTag>(tag: T): TT extends type PipeableTag = {
readonly [specSym]: FlatSpec
}
PipeableTag>(tag: T extends PipeableTagtag: function (type parameter) T in <T extends PipeableTag>(tag: T): TT): function (type parameter) T in <T extends PipeableTag>(tag: T): TT =>
const nodes: {
<HSelf>(
nodeSet: readonly [AddressedNode<HSelf>]
): <T extends PipeableTag>(
tag: T
) => SoleNodeBind<T, AddressedNode<HSelf>>
<HSelf>(nodeSet: readonly [NodeKey<HSelf>]): <
T extends PipeableTag
>(
tag: T
) => SoleNodeBind<T, NodeKey<HSelf>>
<T extends PipeableTag>(
nodeSet: ReadonlyArray<AnyNode>
): (tag: T) => T
<Self, S extends Spec, HSelf>(
tag:
| HyperlinkTag<Self, S>
| NodeBoundTag<Self, S, HSelf>,
nodeSet: readonly [AddressedNode<HSelf>]
): SoleNodeBind<
NodeBoundTag<Self, S, HSelf>,
AddressedNode<HSelf>
>
<Self, S extends Spec, HSelf>(
tag:
| HyperlinkTag<Self, S>
| NodeBoundTag<Self, S, HSelf>,
nodeSet: readonly [NodeKey<HSelf>]
): SoleNodeBind<
NodeBoundTag<Self, S, HSelf>,
NodeKey<HSelf>
>
<Self, S extends Spec, HSelf>(
tag: NodeBoundTag<Self, S, HSelf>,
nodeSet: ReadonlyArray<AnyNode>
): NodeBoundTag<Self, S, HSelf>
<Self, S extends Spec>(
tag: HyperlinkTag<Self, S>,
nodeSet: ReadonlyArray<AnyNode>
): HyperlinkTag<Self, S>
}
nodes(tag: T extends PipeableTagtag as unknown as interface HyperlinkTag<Self, S extends Spec, Svc = Simplify<{ readonly [K in keyof S]: S[K] extends FromLocalMethod<infer M> ? InjectLocal<M, Self> : S[K] extends LocalMethod<infer T> ? LocalEffect<...> : S[K] extends { ...; } ? SuccessOf<...> : S[K] extends { ...; } ? Subscribable<...> : S[K] extends { ...; } ? ClientMethod<...> : S[K] extends Spec ? Simplify<...> : never; }>>The type of a resource tag carrying spec S — what
Hyperlink.Tag
/ a
Hyperlink.tagFor
factory produce (and what you extend). Lets a consumer write
<S extends Spec>(tag: HyperlinkTag<Self, S>) and read the spec through named types
(
specOf
/
groupOf
) instead of a Parameters<typeof specOf> workaround.
HyperlinkTag<any, any, any>, []) as unknown as function (type parameter) T in <T extends PipeableTag>(tag: T): TT;