{"version":3,"file":"Show.cjs","names":["tsplus_module_2","tsplus_module_1","tsplus_module_3","tsplus_module_4","tsplus_module_5"],"sources":["../esm/Show.js"],"sourcesContent":["import * as tsplus_module_1 from \"@fncts/schema/AST\";\nimport * as tsplus_module_2 from \"@fncts/base/data/Maybe/api\";\nimport * as tsplus_module_3 from \"@fncts/base/collection/immutable/Vector/api\";\nimport * as tsplus_module_4 from \"@fncts/base/data/Maybe/constructors\";\nimport * as tsplus_module_5 from \"@fncts/base/data/Maybe/destructors\";\nimport { globalValue } from \"@fncts/base/data/Global\";\nimport { formatUnknown } from \"@fncts/schema/utils\";\nconst showMemoMap = globalValue(Symbol.for(\"fncts.schema.Guard.showMemoMap\"), () => new WeakMap());\nconst showMemoMapVerbose = globalValue(Symbol.for(\"fncts.schema.Guard.showMemoMapVerbose\"), () => new WeakMap());\nfunction goMemo(ast, verbose) {\n    const memoMap = verbose ? showMemoMapVerbose : showMemoMap;\n    const memo = memoMap.get(ast);\n    if (memo) {\n        return memo;\n    }\n    const s = go(ast, verbose);\n    memoMap.set(ast, s);\n    return s;\n}\n/**\n * @tsplus pipeable fncts.schema.Schema show\n */\nexport function show(verbose = false) {\n    return (self) => goMemo(self.ast, verbose);\n}\n/**\n * @tsplus pipeable fncts.schema.AST show\n */\nexport function showAST(verbose = false) {\n    return (self) => goMemo(self, verbose);\n}\nfunction go(ast, verbose) {\n    void 0;\n    switch (ast._tag) {\n        case 0 /* ASTTag.Declaration */: {\n            return tsplus_module_2.getOrElse(() => \"<declaration schema>\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        }\n        case 1 /* ASTTag.Literal */:\n            return tsplus_module_2.getOrElse(() => formatUnknown(ast.literal))(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 2 /* ASTTag.UniqueSymbol */:\n            return tsplus_module_2.getOrElse(() => formatUnknown(ast.symbol))(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 3 /* ASTTag.UndefinedKeyword */:\n            return tsplus_module_2.getOrElse(() => \"undefined\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 4 /* ASTTag.VoidKeyword */:\n            return tsplus_module_2.getOrElse(() => \"void\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 5 /* ASTTag.NeverKeyword */:\n            return tsplus_module_2.getOrElse(() => \"never\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 6 /* ASTTag.UnknownKeyword */:\n            return tsplus_module_2.getOrElse(() => \"unknown\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 7 /* ASTTag.AnyKeyword */:\n            return tsplus_module_2.getOrElse(() => \"any\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 8 /* ASTTag.StringKeyword */:\n            return tsplus_module_2.getOrElse(() => \"string\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 9 /* ASTTag.NumberKeyword */:\n            return tsplus_module_2.getOrElse(() => \"number\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 10 /* ASTTag.BooleanKeyword */:\n            return tsplus_module_2.getOrElse(() => \"boolean\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 11 /* ASTTag.BigIntKeyword */:\n            return tsplus_module_2.getOrElse(() => \"bigint\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 12 /* ASTTag.SymbolKeyword */:\n            return tsplus_module_2.getOrElse(() => \"symbol\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 13 /* ASTTag.ObjectKeyword */:\n            return tsplus_module_2.getOrElse(() => \"object\")(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 15 /* ASTTag.TemplateLiteral */:\n            return tsplus_module_2.getOrElse(() => formatTemplateLiteral(ast))(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        case 16 /* ASTTag.Tuple */: {\n            return tsplus_module_2.getOrElse(() => formatTuple(ast, verbose))(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        }\n        case 17 /* ASTTag.TypeLiteral */: {\n            return tsplus_module_2.getOrElse(() => formatTypeLiteral(ast, verbose))(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        }\n        case 18 /* ASTTag.Union */: {\n            return tsplus_module_2.getOrElse(() => tsplus_module_3.join(\" | \")(tsplus_module_3.map((ast) => goMemo(ast, verbose))(ast.types)))(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        }\n        case 19 /* ASTTag.Lazy */: {\n            return tsplus_module_2.getOrElse(() => \"<lazy schema>\")(tsplus_module_2.orElse(() => tsplus_module_2.flatMap((ast) => tsplus_module_1.getFormattedExpected(verbose)(ast))(tsplus_module_4.tryCatch(ast.getAST)))(tsplus_module_1.getFormattedExpected(verbose)(ast)));\n        }\n        case 14 /* ASTTag.Enum */: {\n            return tsplus_module_2.getOrElse(() => `<enum ${ast.enums.length} values(s): ${tsplus_module_3.join(\" | \")(tsplus_module_3.map(([_, value]) => JSON.stringify(value))(ast.enums))}`)(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        }\n        case 20 /* ASTTag.Refinement */: {\n            return tsplus_module_2.getOrElse(() => `{ ${goMemo(ast.from, verbose)} | filter }`)(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        }\n        case 21 /* ASTTag.Transform */: {\n            return tsplus_module_2.getOrElse(() => `(${goMemo(ast.from, verbose)} <-> ${goMemo(ast.to, verbose)})`)(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        }\n        case 22 /* ASTTag.Validation */: {\n            return tsplus_module_2.getOrElse(() => `${goMemo(ast.from, verbose)} (${tsplus_module_3.join(\" & \")(tsplus_module_3.map((v) => v.name)(ast.validation))})`)(tsplus_module_1.getFormattedExpected(verbose)(ast));\n        }\n    }\n}\nfunction formatTemplateLiteralSpan(span) {\n    switch (span.type._tag) {\n        case 8 /* ASTTag.StringKeyword */:\n            return \"${string}\";\n        case 9 /* ASTTag.NumberKeyword */:\n            return \"${number}\";\n    }\n}\nfunction formatTemplateLiteral(ast) {\n    return \"`\" + ast.head + tsplus_module_3.join(\"\")(tsplus_module_3.map((span) => formatTemplateLiteralSpan(span) + span.literal)(ast.spans)) + \"`\";\n}\nfunction formatElement(ast, verbose) {\n    return goMemo(ast.type, verbose) + (ast.isOptional ? \"?\" : \"\");\n}\nfunction getParameterBase(self) {\n    switch (self._tag) {\n        case 9 /* ASTTag.NumberKeyword */:\n        case 8 /* ASTTag.StringKeyword */:\n        case 12 /* ASTTag.SymbolKeyword */:\n        case 15 /* ASTTag.TemplateLiteral */:\n            return self;\n        case 20 /* ASTTag.Refinement */:\n            return getParameterBase(self);\n    }\n}\nfunction formatTuple(ast, verbose) {\n    const formattedElements = tsplus_module_3.join(\", \")(tsplus_module_3.map((element) => formatElement(element, verbose))(ast.elements));\n    return tsplus_module_5.match(() => `${ast.isReadonly ? \"readonly \" : \"\"}[${formattedElements}]`, (rest) => {\n        const head = tsplus_module_3.unsafeHead(rest);\n        const tail = tsplus_module_3.tail(rest);\n        const formattedHead = goMemo(head, verbose);\n        const wrappedHead = formattedHead.includes(\" | \") ? `(${formattedHead})` : formattedHead;\n        if (tail.length > 0) {\n            const formattedTail = tsplus_module_3.join(\", \")(tsplus_module_3.map((ast) => goMemo(ast, verbose))(tail));\n            if (ast.elements.length > 0) {\n                return `${ast.isReadonly ? \"readonly \" : \" \"}[${formattedElements}, ...${wrappedHead}[], ${formattedTail}]`;\n            }\n            else {\n                return `${ast.isReadonly ? \"readonly \" : \" \"}[...${wrappedHead}[], ${formattedTail}]`;\n            }\n        }\n        else {\n            if (ast.elements.length > 0) {\n                return `${ast.isReadonly ? \"readonly \" : \" \"}[${formattedElements}, ...${wrappedHead}[]]`;\n            }\n            else {\n                return `${ast.isReadonly ? \"Readonly\" : \"\"}Array<${formattedHead}>`;\n            }\n        }\n    })(tsplus_module_2.filter((rest) => tsplus_module_3.isNonEmpty(rest))(ast.rest));\n}\nfunction formatTypeLiteral(ast, verbose) {\n    const formattedPropertySignatures = tsplus_module_3.join(\"; \")(tsplus_module_3.map((ps) => (ps.isReadonly ? \"readonly \" : \"\") +\n        String(ps.name) +\n        (ps.isOptional ? \"?\" : \"\") +\n        \": \" +\n        goMemo(ps.type, verbose))(ast.propertySignatures));\n    if (ast.indexSignatures.length > 0) {\n        const formattedIndexSignatures = tsplus_module_3.join(\"; \")(tsplus_module_3.map((is) => (is.isReadonly ? \"readonly \" : \"\") +\n            `[x: ${goMemo(getParameterBase(is.parameter), verbose)}]: ${goMemo(is.type, verbose)}`)(ast.indexSignatures));\n        if (ast.propertySignatures.length > 0) {\n            return `{ ${formattedPropertySignatures}; ${formattedIndexSignatures} }`;\n        }\n        else {\n            return `{ ${formattedIndexSignatures} }`;\n        }\n    }\n    else {\n        if (ast.propertySignatures.length > 0) {\n            return `{ ${formattedPropertySignatures} }`;\n        }\n        else {\n            return \"{}\";\n        }\n    }\n}\n//# sourceMappingURL=Show.js.map"],"mappings":"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"}