// import * as MO from "../_schema.js" // export const empty = Chunk.empty() // export function tree(value: A, forest: MO.Forest = empty): MO.Tree { // return { // value, // forest, // } // } export function makeUtils(self: Schema): Utils { const p = EParserFor(self) return { parse: p, unsafe: MO.unsafe(p) } } export type Utils = { parse: EParserFor unsafe: UnsafeEParserFor } export function extendWithUtils(self: Schema) { return Object.assign(self, makeUtils(self)) } export function extendWithUtilsAnd( self: Schema, additional: (self: Schema & Utils) => Additional ) { const extended = Object.assign(self, makeUtils(self)) return Object.assign(extended, additional(extended)) } export type EParserFor = MO.Parser.Parser< MO.EncodedOf, MO.ParserErrorOf, MO.ParsedShapeOf > export type UnsafeEParserFor = ( e: MO.EncodedOf ) => MO.ParsedShapeOf export function EParserFor( schema: MO.Schema ): MO.Parser.Parser { return MO.Parser.for(schema) } export type EncSchemaForModel = MO.Schema< MO.ParserInputOf, // unknown lock to ParsedShape, MO.ConstructorInputOf, MEnc, MO.ApiOf & MO.ApiSelfType >