effx
API reference@effx/ir

ApplicationIR

API reference for @effx/ir/ApplicationIR

ApplicationIR.ts overview


Exports Grouped by Category


utils

ApplicationIR

Signature

declare const ApplicationIR: Schema.Struct<{
  readonly format: Schema.Literal<"effx-ir">
  readonly version: Schema.Literal<2>
  readonly nodes: Schema.$Array<
    Schema.TaggedUnion<{
      readonly Schema: Schema.TaggedStruct<
        "Schema",
        {
          readonly id: Schema.brand<Schema.String, "effx/StableId">
          readonly ref: Schema.Struct<{
            readonly module: Schema.String
            readonly export: Schema.String
            readonly symbolId: Schema.brand<Schema.String, "effx/StableId">
          }>
        }
      >
      readonly Model: Schema.TaggedStruct<
        "Model",
        {
          readonly id: Schema.brand<Schema.String, "effx/StableId">
          readonly name: Schema.String
          readonly schema: Schema.Struct<{
            readonly module: Schema.String
            readonly export: Schema.String
            readonly symbolId: Schema.brand<Schema.String, "effx/StableId">
          }>
          readonly table: Schema.optionalKey<Schema.String>
          readonly views: Schema.$Array<
            Schema.Struct<{
              readonly name: Schema.String
              readonly schema: Schema.Struct<{
                readonly module: Schema.String
                readonly export: Schema.String
                readonly symbolId: Schema.brand<Schema.String, "effx/StableId">
              }>
            }>
          >
        }
      >
      readonly Service: Schema.TaggedStruct<
        "Service",
        {
          readonly id: Schema.brand<Schema.String, "effx/StableId">
          readonly name: Schema.String
          readonly symbol: Schema.Struct<{
            readonly module: Schema.String
            readonly export: Schema.String
            readonly member: Schema.optionalKey<Schema.String>
          }>
        }
      >
      readonly Operation: Schema.TaggedStruct<
        "Operation",
        {
          readonly id: Schema.brand<Schema.String, "effx/StableId">
          readonly name: Schema.String
          readonly kind: Schema.Literals<readonly ["Query", "Command"]>
          readonly input: Schema.Struct<{
            readonly module: Schema.String
            readonly export: Schema.String
            readonly symbolId: Schema.brand<Schema.String, "effx/StableId">
          }>
          readonly success: Schema.Struct<{
            readonly module: Schema.String
            readonly export: Schema.String
            readonly symbolId: Schema.brand<Schema.String, "effx/StableId">
          }>
          readonly errors: Schema.Struct<{
            readonly values: Schema.$Array<
              Schema.Struct<{
                readonly module: Schema.String
                readonly export: Schema.String
                readonly symbolId: Schema.brand<Schema.String, "effx/StableId">
              }>
            >
            readonly inferred: Schema.Boolean
          }>
          readonly requirements: Schema.Struct<{
            readonly values: Schema.$Array<Schema.brand<Schema.String, "effx/StableId">>
            readonly inferred: Schema.Boolean
          }>
          readonly binding: Schema.optionalKey<Schema.Literal<"external">>
          readonly handler: Schema.optionalKey<
            Schema.Struct<{
              readonly module: Schema.String
              readonly export: Schema.String
              readonly member: Schema.optionalKey<Schema.String>
            }>
          >
        }
      >
      readonly HttpGroup: Schema.TaggedStruct<
        "HttpGroup",
        {
          readonly id: Schema.brand<Schema.String, "effx/StableId">
          readonly root: Schema.String
          readonly rootSymbol: Schema.optionalKey<
            Schema.Struct<{
              readonly module: Schema.String
              readonly export: Schema.String
              readonly member: Schema.optionalKey<Schema.String>
            }>
          >
          readonly group: Schema.String
          readonly title: Schema.optionalKey<Schema.String>
          readonly description: Schema.optionalKey<Schema.String>
          readonly displayName: Schema.optionalKey<Schema.String>
        }
      >
      readonly Capability: Schema.TaggedStruct<
        "Capability",
        {
          readonly id: Schema.brand<Schema.String, "effx/StableId">
          readonly name: Schema.String
          readonly resource: Schema.brand<Schema.String, "effx/StableId">
          readonly focus: Schema.optionalKey<Schema.brand<Schema.String, "effx/StableId">>
        }
      >
      readonly Focus: Schema.TaggedStruct<
        "Focus",
        {
          readonly id: Schema.brand<Schema.String, "effx/StableId">
          readonly root: Schema.brand<Schema.String, "effx/StableId">
          readonly path: Schema.$Array<Schema.String>
        }
      >
      readonly Exposure: Schema.TaggedStruct<
        "Exposure",
        {
          readonly id: Schema.brand<Schema.String, "effx/StableId">
          readonly operation: Schema.brand<Schema.String, "effx/StableId">
          readonly transport: Schema.Union<
            readonly [
              Schema.TaggedStruct<
                "http",
                {
                  readonly method: Schema.Literals<readonly ["GET", "POST", "PUT", "PATCH", "DELETE"]>
                  readonly path: Schema.String
                }
              >,
              Schema.TaggedStruct<"rpc", { readonly name: Schema.String }>,
              Schema.TaggedStruct<"cli", { readonly command: Schema.$Array<Schema.String> }>
            ]
          >
        }
      >
      readonly Extension: Schema.TaggedStruct<
        "Extension",
        {
          readonly id: Schema.brand<Schema.String, "effx/StableId">
          readonly extension: Schema.String
          readonly tag: Schema.String
          readonly data: Schema.Codec<Schema.Json, Schema.Json, never, never>
        }
      >
    }>
  >
  readonly edges: Schema.$Array<
    Schema.Struct<{
      readonly kind: Schema.Literals<
        readonly [
          "InputOf",
          "SuccessOf",
          "ErrorOf",
          "Requires",
          "AuthorizedBy",
          "Focuses",
          "ExposedAs",
          "PersistsAs",
          "ViewOf",
          "ExtensionOf"
        ]
      >
      readonly from: Schema.brand<Schema.String, "effx/StableId">
      readonly to: Schema.brand<Schema.String, "effx/StableId">
      readonly qualifier: Schema.optionalKey<Schema.String>
    }>
  >
}>

ApplicationIR (type alias)

Signature

type ApplicationIR = typeof ApplicationIR.Type

FORMAT

Signature

declare const FORMAT: "effx-ir"

VERSION

Signature

declare const VERSION: 2

empty

Signature

declare const empty: {
  readonly format: "effx-ir"
  readonly version: 2
  readonly nodes: ReadonlyArray<
    | {
        readonly _tag: "Schema"
        readonly id: string & Brand<"effx/StableId">
        readonly ref: {
          readonly module: string
          readonly export: string
          readonly symbolId: string & Brand<"effx/StableId">
        }
      }
    | {
        readonly views: ReadonlyArray<{
          readonly name: string
          readonly schema: {
            readonly module: string
            readonly export: string
            readonly symbolId: string & Brand<"effx/StableId">
          }
        }>
        readonly name: string
        readonly schema: {
          readonly module: string
          readonly export: string
          readonly symbolId: string & Brand<"effx/StableId">
        }
        readonly _tag: "Model"
        readonly id: string & Brand<"effx/StableId">
        readonly table?: string | undefined
      }
    | {
        readonly _tag: "Service"
        readonly id: string & Brand<"effx/StableId">
        readonly name: string
        readonly symbol: { readonly module: string; readonly export: string; readonly member?: string | undefined }
      }
    | {
        readonly name: string
        readonly errors: {
          readonly values: ReadonlyArray<{
            readonly module: string
            readonly export: string
            readonly symbolId: string & Brand<"effx/StableId">
          }>
          readonly inferred: boolean
        }
        readonly requirements: {
          readonly values: ReadonlyArray<string & Brand<"effx/StableId">>
          readonly inferred: boolean
        }
        readonly _tag: "Operation"
        readonly id: string & Brand<"effx/StableId">
        readonly kind: "Query" | "Command"
        readonly input: {
          readonly module: string
          readonly export: string
          readonly symbolId: string & Brand<"effx/StableId">
        }
        readonly success: {
          readonly module: string
          readonly export: string
          readonly symbolId: string & Brand<"effx/StableId">
        }
        readonly binding?: "external" | undefined
        readonly handler?:
          { readonly module: string; readonly export: string; readonly member?: string | undefined } | undefined
      }
    | {
        readonly _tag: "HttpGroup"
        readonly id: string & Brand<"effx/StableId">
        readonly root: string
        readonly group: string
        readonly rootSymbol?:
          { readonly module: string; readonly export: string; readonly member?: string | undefined } | undefined
        readonly title?: string | undefined
        readonly description?: string | undefined
        readonly displayName?: string | undefined
      }
    | {
        readonly name: string
        readonly _tag: "Capability"
        readonly id: string & Brand<"effx/StableId">
        readonly resource: string & Brand<"effx/StableId">
        readonly focus?: (string & Brand<"effx/StableId">) | undefined
      }
    | {
        readonly _tag: "Focus"
        readonly id: string & Brand<"effx/StableId">
        readonly root: string & Brand<"effx/StableId">
        readonly path: ReadonlyArray<string>
      }
    | {
        readonly _tag: "Exposure"
        readonly id: string & Brand<"effx/StableId">
        readonly operation: string & Brand<"effx/StableId">
        readonly transport:
          | {
              readonly _tag: "http"
              readonly method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"
              readonly path: string
            }
          | { readonly _tag: "rpc"; readonly name: string }
          | { readonly _tag: "cli"; readonly command: ReadonlyArray<string> }
      }
    | {
        readonly _tag: "Extension"
        readonly id: string & Brand<"effx/StableId">
        readonly extension: string
        readonly tag: string
        readonly data: Schema.Json
      }
  >
  readonly edges: ReadonlyArray<{
    readonly kind:
      | "InputOf"
      | "SuccessOf"
      | "ErrorOf"
      | "Requires"
      | "AuthorizedBy"
      | "Focuses"
      | "ExposedAs"
      | "PersistsAs"
      | "ViewOf"
      | "ExtensionOf"
    readonly from: string & Brand<"effx/StableId">
    readonly to: string & Brand<"effx/StableId">
    readonly qualifier?: string | undefined
  }>
}

make

Signature

declare const make: (nodes: ReadonlyArray<Node>, edges: ReadonlyArray<Edge>) => ApplicationIR

On this page