effx
API reference@effx/compiler

surface

API reference for @effx/compiler/surface

surface.ts overview


Exports Grouped by Category


utils

LOCAL_WIRING

The one local-wiring export (generate/http.ts AppRoutes): it mounts every local root, group and /rpc.

Signature

declare const LOCAL_WIRING: "AppRoutes"

Surface

Signature

declare const Surface: Schema.Struct<{
  readonly format: Schema.Literal<"effx-surface">
  readonly version: Schema.Literal<1>
  readonly semanticHash: Schema.String
  readonly operations: Schema.$Array<
    Schema.Struct<{
      readonly name: Schema.String
      readonly kind: Schema.Literals<readonly ["Query", "Command"]>
      readonly binding: Schema.Literals<readonly ["local", "external"]>
    }>
  >
  readonly http: Schema.$Array<
    Schema.Struct<{
      readonly root: Schema.String
      readonly group: Schema.String
      readonly title: Schema.optionalKey<Schema.String>
      readonly binding: Schema.Literals<readonly ["local", "external"]>
      readonly wiring: Schema.String
      readonly endpoints: Schema.$Array<
        Schema.Struct<{
          readonly operation: Schema.String
          readonly endpoint: Schema.String
          readonly operationId: Schema.String
          readonly method: Schema.Literals<readonly ["GET", "POST", "PUT", "PATCH", "DELETE"]>
          readonly path: Schema.String
          readonly status: Schema.optionalKey<Schema.Int>
          readonly conditional: Schema.Boolean
          readonly middleware: Schema.$Array<Schema.String>
          readonly security: Schema.$Array<Schema.String>
          readonly access: Schema.optionalKey<
            Schema.Struct<{
              readonly exposure: Schema.Literals<readonly ["External", "Internal"]>
              readonly acceptedCredentials: Schema.UniqueArray<Schema.NonEmptyString>
              readonly principalKinds: Schema.UniqueArray<
                Schema.Literals<readonly ["Anonymous", "Person", "ServicePrincipal", "CapabilityHolder"]>
              >
              readonly decisionTime: Schema.Literals<readonly ["SnapshotRead", "Transaction"]>
              readonly capabilities: Schema.TaggedUnion<{
                readonly Any: Schema.TaggedStruct<
                  "Any",
                  { readonly capabilities: Schema.UniqueArray<Schema.NonEmptyString> }
                >
                readonly None: Schema.TaggedStruct<"None", {}>
                readonly One: Schema.TaggedStruct<"One", { readonly capability: Schema.NonEmptyString }>
                readonly All: Schema.TaggedStruct<
                  "All",
                  { readonly capabilities: Schema.UniqueArray<Schema.NonEmptyString> }
                >
              }>
              readonly concealment: Schema.TaggedUnion<{
                readonly Reveal: Schema.TaggedStruct<"Reveal", {}>
                readonly NotFound: Schema.TaggedStruct<
                  "NotFound",
                  { readonly stages: Schema.UniqueArray<Schema.NonEmptyString> }
                >
              }>
            }>
          >
        }>
      >
    }>
  >
  readonly rpc: Schema.$Array<
    Schema.Struct<{ readonly name: Schema.String; readonly operation: Schema.String; readonly wiring: Schema.String }>
  >
  readonly cli: Schema.$Array<
    Schema.Struct<{ readonly command: Schema.$Array<Schema.String>; readonly operation: Schema.String }>
  >
  readonly foldkit: Schema.$Array<Schema.Struct<{ readonly operation: Schema.String }>>
}>

Surface (type alias)

Signature

type Surface = typeof Surface.Type

SurfaceJson

The wire shape is the Schema's Type (as for the IR), so encoding to canonical JSON is the identity.

Signature

declare const SurfaceJson: Schema.fromJsonString<
  Schema.Struct<{
    readonly format: Schema.Literal<"effx-surface">
    readonly version: Schema.Literal<1>
    readonly semanticHash: Schema.String
    readonly operations: Schema.$Array<
      Schema.Struct<{
        readonly name: Schema.String
        readonly kind: Schema.Literals<readonly ["Query", "Command"]>
        readonly binding: Schema.Literals<readonly ["local", "external"]>
      }>
    >
    readonly http: Schema.$Array<
      Schema.Struct<{
        readonly root: Schema.String
        readonly group: Schema.String
        readonly title: Schema.optionalKey<Schema.String>
        readonly binding: Schema.Literals<readonly ["local", "external"]>
        readonly wiring: Schema.String
        readonly endpoints: Schema.$Array<
          Schema.Struct<{
            readonly operation: Schema.String
            readonly endpoint: Schema.String
            readonly operationId: Schema.String
            readonly method: Schema.Literals<readonly ["GET", "POST", "PUT", "PATCH", "DELETE"]>
            readonly path: Schema.String
            readonly status: Schema.optionalKey<Schema.Int>
            readonly conditional: Schema.Boolean
            readonly middleware: Schema.$Array<Schema.String>
            readonly security: Schema.$Array<Schema.String>
            readonly access: Schema.optionalKey<
              Schema.Struct<{
                readonly exposure: Schema.Literals<readonly ["External", "Internal"]>
                readonly acceptedCredentials: Schema.UniqueArray<Schema.NonEmptyString>
                readonly principalKinds: Schema.UniqueArray<
                  Schema.Literals<readonly ["Anonymous", "Person", "ServicePrincipal", "CapabilityHolder"]>
                >
                readonly decisionTime: Schema.Literals<readonly ["SnapshotRead", "Transaction"]>
                readonly capabilities: Schema.TaggedUnion<{
                  readonly Any: Schema.TaggedStruct<
                    "Any",
                    { readonly capabilities: Schema.UniqueArray<Schema.NonEmptyString> }
                  >
                  readonly None: Schema.TaggedStruct<"None", {}>
                  readonly One: Schema.TaggedStruct<"One", { readonly capability: Schema.NonEmptyString }>
                  readonly All: Schema.TaggedStruct<
                    "All",
                    { readonly capabilities: Schema.UniqueArray<Schema.NonEmptyString> }
                  >
                }>
                readonly concealment: Schema.TaggedUnion<{
                  readonly Reveal: Schema.TaggedStruct<"Reveal", {}>
                  readonly NotFound: Schema.TaggedStruct<
                    "NotFound",
                    { readonly stages: Schema.UniqueArray<Schema.NonEmptyString> }
                  >
                }>
              }>
            >
          }>
        >
      }>
    >
    readonly rpc: Schema.$Array<
      Schema.Struct<{ readonly name: Schema.String; readonly operation: Schema.String; readonly wiring: Schema.String }>
    >
    readonly cli: Schema.$Array<
      Schema.Struct<{ readonly command: Schema.$Array<Schema.String>; readonly operation: Schema.String }>
    >
    readonly foldkit: Schema.$Array<Schema.Struct<{ readonly operation: Schema.String }>>
  }>
>

decodeSurfaceUnknown

Signature

declare const decodeSurfaceUnknown: (
  input: unknown,
  options?: ParseOptions
) => Effect.Effect<
  {
    readonly format: "effx-surface"
    readonly version: 1
    readonly semanticHash: string
    readonly operations: ReadonlyArray<{
      readonly name: string
      readonly kind: "Query" | "Command"
      readonly binding: "local" | "external"
    }>
    readonly http: ReadonlyArray<{
      readonly binding: "local" | "external"
      readonly endpoints: ReadonlyArray<{
        readonly method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"
        readonly middleware: ReadonlyArray<string>
        readonly security: ReadonlyArray<string>
        readonly operation: string
        readonly endpoint: string
        readonly operationId: string
        readonly path: string
        readonly conditional: boolean
        readonly status?: number | undefined
        readonly access?:
          | {
              readonly exposure: "External" | "Internal"
              readonly acceptedCredentials: ReadonlyArray<string>
              readonly principalKinds: ReadonlyArray<"Anonymous" | "Person" | "ServicePrincipal" | "CapabilityHolder">
              readonly decisionTime: "SnapshotRead" | "Transaction"
              readonly capabilities:
                | { readonly _tag: "Any"; readonly capabilities: ReadonlyArray<string> }
                | { readonly _tag: "None" }
                | { readonly _tag: "One"; readonly capability: string }
                | { readonly _tag: "All"; readonly capabilities: ReadonlyArray<string> }
              readonly concealment:
                { readonly _tag: "Reveal" } | { readonly _tag: "NotFound"; readonly stages: ReadonlyArray<string> }
            }
          | undefined
      }>
      readonly root: string
      readonly group: string
      readonly wiring: string
      readonly title?: string | undefined
    }>
    readonly rpc: ReadonlyArray<{ readonly name: string; readonly operation: string; readonly wiring: string }>
    readonly cli: ReadonlyArray<{ readonly command: ReadonlyArray<string>; readonly operation: string }>
    readonly foldkit: ReadonlyArray<{ readonly operation: string }>
  },
  Schema.SchemaError,
  never
>

surfaceOf

Signature

declare const surfaceOf: (
  ir: ApplicationIR,
  index: GraphIndex,
  semanticHash: string
) => Effect.Effect<Surface, CompilerFault>

surfaceText

Canonical JSON text (RFC 8785) plus a trailing newline, like ir.json.

Signature

declare const surfaceText: (surface: Surface) => string

On this page