| export * as Pty from "./pty" |
|
|
| import { Schema } from "effect" |
| import { optional } from "./schema" |
| import { define, inventory } from "./event" |
| import { ascending } from "./identifier" |
| import { NonNegativeInt, PositiveInt, statics } from "./schema" |
|
|
| const IDSchema = Schema.String.check(Schema.isStartsWith("pty")).pipe(Schema.brand("PtyID")) |
|
|
| export const ID = IDSchema.pipe( |
| statics((schema: typeof IDSchema) => { |
| const create = () => schema.make("pty_" + ascending()) |
| return { |
| create, |
| ascending: (id?: string) => (id === undefined ? create() : schema.make(id)), |
| } |
| }), |
| ) |
| export type ID = typeof ID.Type |
|
|
| export const Info = Schema.Struct({ |
| id: ID, |
| title: Schema.String, |
| command: Schema.String, |
| args: Schema.Array(Schema.String), |
| cwd: Schema.String, |
| status: Schema.Literals(["running", "exited"]), |
| pid: NonNegativeInt, |
| exitCode: optional(NonNegativeInt), |
| }).annotate({ identifier: "Pty" }) |
| export interface Info extends Schema.Schema.Type<typeof Info> {} |
|
|
| const Created = define({ type: "pty.created", schema: { info: Info } }) |
| const Updated = define({ type: "pty.updated", schema: { info: Info } }) |
| const Exited = define({ type: "pty.exited", schema: { id: ID, exitCode: NonNegativeInt } }) |
| const Deleted = define({ type: "pty.deleted", schema: { id: ID } }) |
| export const Event = { Created, Updated, Exited, Deleted, Definitions: inventory(Created, Updated, Exited, Deleted) } |
|
|
| export const CreateInput = Schema.Struct({ |
| command: optional(Schema.String), |
| args: optional(Schema.Array(Schema.String)), |
| cwd: optional(Schema.String), |
| title: optional(Schema.String), |
| env: optional(Schema.Record(Schema.String, Schema.String)), |
| }) |
| export interface CreateInput extends Schema.Schema.Type<typeof CreateInput> {} |
|
|
| export const UpdateInput = Schema.Struct({ |
| title: optional(Schema.String), |
| size: optional( |
| Schema.Struct({ |
| rows: PositiveInt, |
| cols: PositiveInt, |
| }), |
| ), |
| }) |
| export interface UpdateInput extends Schema.Schema.Type<typeof UpdateInput> {} |
|
|