Bundle / foldkit-bundle-surface

BundleSurface

namespace · packages/bundle-surface/src/index.ts:123

const BundleSurface = { link, contract, module, parent }

Members

function · packages/bundle-surface/src/index.ts:42

link<Root, Value, const Tag extends string, ChildMessage>(
  ref: FieldRef<Root, Value>,
  wrapper: Wrapper<Tag, ChildMessage>,
  options?: {
    readonly when?: (parent: Root) => boolean
  },
): Link<Root, Wrapped<Tag, ChildMessage>, Value, ChildMessage, string>

A Link from a Surface field ref: App.model.search. The contract of a placement through it names the ref's application, so placing a child through another application's ref is a foreign-contract finding.

BundleSurface.contract

function · packages/bundle-surface/src/index.ts:62

contract<
  Root,
  F extends Schema.Struct.Fields,
  Cases extends Record<string, Schema.Struct.Fields>,
>(
  app: AppScope<Root, F, Cases>,
  placement: AnyPlacement,
): Contract

The contract of one placement or collection: it owns its Model path and names the parent Message tags its Messages travel under.

BundleSurface.module

function · packages/bundle-surface/src/index.ts:81

module<
  Root,
  F extends Schema.Struct.Fields,
  Cases extends Record<string, Schema.Struct.Fields>,
>(
  app: AppScope<Root, F, Cases>,
  assembly: AssemblyItems,
  items?: readonly ModuleItem<Root>[],
): Module<Root, F, Cases>

A Module of an assembly's placements and wiring, plus any other contracts of the application.

BundleSurface.parent

function · packages/bundle-surface/src/index.ts:101

parent<Root, F extends Schema.Struct.Fields, Cases extends Record<string, Schema.Struct.Fields>>(app: AppScope<Root, F, Cases>): { module: (assembly: AssemblyItems, items?: readonly ModuleItem<Root>[]) => Module<Root, F, Cases>; Model: Schema.Codec<Root, unknown, never, never>; Message: Schema.Codec<Schema.Schema.Type<MessageUnion<Cases>> & AnyMessage, unknown, never, never>; withServices: <S>() => Bundle.Parent<Root, Schema.Schema.Type<MessageUnion<Cases>> & AnyMessage, S>; at: <B extends Bundle.AnyBundle, const Field extends FieldsHolding<Root, Bundle.BundleParts<B>["Model"]>, OutStepMessage = never, R2 = never>(declared: Bundle.Declared<B, Field>, ...config: Bundle.PlaceConfigParam<Bundle.BundleParts<B>["Args"], Root, Wrapped<`Got${Capitalize<Field>}Message`, Bundle.BundleParts<B>["Message"]>, Bundle.BundleParts<B>["Message"], Bundle.BundleParts<B>["OutMessage"], OutStepMessage, R2, Omit<Root, Field>> & VariantCheck<Wrapped<`Got${Capitalize<Field>}Message`, Bundle.BundleParts<B>["Message"]>, Schema.Schema.Type<MessageUnion<Cases>> & AnyMessage>) => PlacedBy<B, Root, Wrapped<`Got${Capitalize<Field>}Message`, Bundle.BundleParts<B>["Message"]>, OutStepMessage, R2, Field>; place: <B extends Bundle.AnyBundle, const Field extends FieldsHolding<Root, Bundle.BundleParts<B>["Model"]>, OutStepMessage = never, R2 = never>(bundle: B, field: Field, ...config: Bundle.PlaceConfigParam<Bundle.BundleParts<B>["Args"], Root, Wrapped<`Got${Capitalize<Field>}Message`, Bundle.BundleParts<B>["Message"]>, Bundle.BundleParts<B>["Message"], Bundle.BundleParts<B>["OutMessage"], OutStepMessage, R2, Omit<Root, Field>> & Variant …;

The parent scope of foldkit-bundle, built from a Surface application, with module bound to it: const Page = BundleSurface.parent(App).