import * as S from "effect/Schema"; import { defineAspect, type Aspect } from "../Aspect.ts"; export interface File< Name extends string = string, References extends any[] = any[], Props extends FileProps = FileProps, > extends Aspect {} export class FileProps extends S.Class("FileProps")({ language: S.String, }) {} export const File = defineAspect< ( name: Name, props: Props, ) => ( template: TemplateStringsArray, ...references: References ) => File >("file", FileProps);