export * as Reference from "./reference" import { Schema } from "effect" import { AbsolutePath } from "./schema" export interface LocalSource extends Schema.Schema.Type {} export const LocalSource = Schema.Struct({ type: Schema.Literal("local"), path: AbsolutePath, description: Schema.String.pipe(Schema.optional), hidden: Schema.Boolean.pipe(Schema.optional), }).annotate({ identifier: "Reference.LocalSource" }) export interface GitSource extends Schema.Schema.Type {} export const GitSource = Schema.Struct({ type: Schema.Literal("git"), repository: Schema.String, branch: Schema.String.pipe(Schema.optional), description: Schema.String.pipe(Schema.optional), hidden: Schema.Boolean.pipe(Schema.optional), }).annotate({ identifier: "Reference.GitSource" }) export const Source = Schema.Union([LocalSource, GitSource]).pipe(Schema.toTaggedUnion("type")) export type Source = typeof Source.Type