opencode / packages /schema /src /reference.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
89a2873 verified
Raw
History Blame Contribute Delete
1.41 kB
export * as Reference from "./reference"
import { Schema } from "effect"
import { optional } from "./schema"
import { define, inventory } from "./event"
import { AbsolutePath } from "./schema"
const Updated = define({ type: "reference.updated", schema: {} })
export const Event = { Updated, Definitions: inventory(Updated) }
export interface LocalSource extends Schema.Schema.Type<typeof LocalSource> {}
export const LocalSource = Schema.Struct({
type: Schema.Literal("local"),
path: AbsolutePath,
description: Schema.String.pipe(optional),
hidden: Schema.Boolean.pipe(optional),
}).annotate({ identifier: "Reference.LocalSource" })
export interface GitSource extends Schema.Schema.Type<typeof GitSource> {}
export const GitSource = Schema.Struct({
type: Schema.Literal("git"),
repository: Schema.String,
branch: Schema.String.pipe(optional),
description: Schema.String.pipe(optional),
hidden: Schema.Boolean.pipe(optional),
}).annotate({ identifier: "Reference.GitSource" })
export const Source = Schema.Union([LocalSource, GitSource])
.pipe(Schema.toTaggedUnion("type"))
.annotate({ identifier: "Reference.Source" })
export type Source = typeof Source.Type
export class Info extends Schema.Class<Info>("Reference.Info")({
name: Schema.String,
path: AbsolutePath,
description: Schema.String.pipe(optional),
hidden: Schema.Boolean.pipe(optional),
source: Source,
}) {}