{"version":3,"file":"ASTAnnotation.mjs","names":[],"sources":["../esm/ASTAnnotation.js"],"sourcesContent":["import * as tsplus_module_1 from \"@fncts/base/data/Hashable/definition\";\nimport * as tsplus_module_2 from \"@fncts/base/data/Hashable/hash\";\nimport * as tsplus_module_3 from \"@fncts/base/data/Equatable/definition\";\nimport * as tsplus_module_4 from \"@fncts/base/data/Equatable/api\";\nimport * as tsplus_module_5 from \"@fncts/base/util/predicates\";\nimport * as tsplus_module_6 from \"@fncts/base/data/Tag/constructors\";\nimport * as tsplus_module_7 from \"@fncts/base/collection/immutable/Vector/api\";\nexport const ASTAnnotationVariance = Symbol.for(\"fncts.schema.ASTAnnotation.Variance\");\nexport const ASTAnnotationTypeId = Symbol.for(\"fncts.schema.ASTAnnotation\");\n/**\n * @tsplus type fncts.schema.ASTAnnotation\n * @tsplus companion fncts.schema.ASTAnnotationOps\n */\nexport class ASTAnnotation {\n    tag;\n    identifier;\n    combine;\n    [ASTAnnotationTypeId] = ASTAnnotationTypeId;\n    constructor(tag, identifier, combine) {\n        this.tag = tag;\n        this.identifier = identifier;\n        this.combine = combine;\n    }\n    get [tsplus_module_1.hashSymbol]() {\n        return tsplus_module_2.combineHash(tsplus_module_2.hashString(this.identifier), tsplus_module_2.hashUnknown(this.tag));\n    }\n    [tsplus_module_3.equalsSymbol](that) {\n        return isASTAnnotation(that) && tsplus_module_4.strictEquals(this.tag, that.tag) && this.identifier === that.identifier;\n    }\n}\nexport function isASTAnnotation(u) {\n    return tsplus_module_5.isObject(u) && ASTAnnotationTypeId in u;\n}\nexport const TitleTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps Title\n */\nexport const Title = new ASTAnnotation(TitleTag, \"Title\", (_, a) => a);\nexport const IdentifierTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps Identifier\n */\nexport const Identifier = new ASTAnnotation(IdentifierTag, \"Identifier\", (_, a) => a);\nexport const DescriptionTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps Description\n */\nexport const Description = new ASTAnnotation(DescriptionTag, \"Description\", (_, a) => a);\nexport const MessageTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps Message\n */\nexport const Message = new ASTAnnotation(MessageTag, \"Message\", (_, a) => a);\nexport const BrandTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps Brand\n */\nexport const Brand = new ASTAnnotation(BrandTag, \"Brand\", (a, b) => tsplus_module_7.concat(b)(a));\nexport const OptionalTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps Optional\n */\nexport const Optional = new ASTAnnotation(OptionalTag, \"Optional\", (_, b) => b);\nexport const ParseOptionalTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps ParseOptional\n */\nexport const ParseOptional = new ASTAnnotation(ParseOptionalTag, \"ParseOptional\", (_, b) => b);\nexport const SurrogateTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps Surrogate\n */\nexport const Surrogate = new ASTAnnotation(SurrogateTag, \"Surrogate\", (_, b) => b);\nexport function hook(handler) {\n    return handler;\n}\nexport const ParserHookTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps ParserHook\n */\nexport const ParserHook = new ASTAnnotation(ParserHookTag, \"ParserHook\", (_, b) => b);\nexport const GenHookTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps GenHook\n */\nexport const GenHook = new ASTAnnotation(GenHookTag, \"GenHook\", (_, b) => b);\nexport const EqHookTag = tsplus_module_6.makeTag();\n/**\n * @tsplus static fncts.schema.ASTAnnotationOps EqHook\n */\nexport const EqHook = new ASTAnnotation(EqHookTag, \"EqHook\", (_, b) => b);\n//# sourceMappingURL=ASTAnnotation.js.map"],"mappings":";;;;;;;;AAOA,MAAa,wBAAwB,OAAO,IAAI,sCAAsC;AACtF,MAAa,sBAAsB,OAAO,IAAI,6BAA6B;;;;;AAK3E,IAAa,gBAAb,MAA2B;CACvB;CACA;CACA;CACA,CAAC,uBAAuB;CACxB,YAAY,KAAK,YAAY,SAAS;AAClC,OAAK,MAAM;AACX,OAAK,aAAa;AAClB,OAAK,UAAU;;CAEnB,KAAK,gBAAgB,cAAc;AAC/B,SAAO,gBAAgB,YAAY,gBAAgB,WAAW,KAAK,WAAW,EAAE,gBAAgB,YAAY,KAAK,IAAI,CAAC;;CAE1H,CAAC,gBAAgB,cAAc,MAAM;AACjC,SAAO,gBAAgB,KAAK,IAAI,gBAAgB,aAAa,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,eAAe,KAAK;;;AAGrH,SAAgB,gBAAgB,GAAG;AAC/B,QAAO,gBAAgB,SAAS,EAAE,IAAI,uBAAuB;;AAEjE,MAAa,WAAW,gBAAgB,SAAS;;;;AAIjD,MAAa,QAAQ,IAAI,cAAc,UAAU,UAAU,GAAG,MAAM,EAAE;AACtE,MAAa,gBAAgB,gBAAgB,SAAS;;;;AAItD,MAAa,aAAa,IAAI,cAAc,eAAe,eAAe,GAAG,MAAM,EAAE;AACrF,MAAa,iBAAiB,gBAAgB,SAAS;;;;AAIvD,MAAa,cAAc,IAAI,cAAc,gBAAgB,gBAAgB,GAAG,MAAM,EAAE;AACxF,MAAa,aAAa,gBAAgB,SAAS;;;;AAInD,MAAa,UAAU,IAAI,cAAc,YAAY,YAAY,GAAG,MAAM,EAAE;AAC5E,MAAa,WAAW,gBAAgB,SAAS;;;;AAIjD,MAAa,QAAQ,IAAI,cAAc,UAAU,UAAU,GAAG,MAAM,gBAAgB,OAAO,EAAE,CAAC,EAAE,CAAC;AACjG,MAAa,cAAc,gBAAgB,SAAS;;;;AAIpD,MAAa,WAAW,IAAI,cAAc,aAAa,aAAa,GAAG,MAAM,EAAE;AAC/E,MAAa,mBAAmB,gBAAgB,SAAS;;;;AAIzD,MAAa,gBAAgB,IAAI,cAAc,kBAAkB,kBAAkB,GAAG,MAAM,EAAE;AAC9F,MAAa,eAAe,gBAAgB,SAAS;;;;AAIrD,MAAa,YAAY,IAAI,cAAc,cAAc,cAAc,GAAG,MAAM,EAAE;AAClF,SAAgB,KAAK,SAAS;AAC1B,QAAO;;AAEX,MAAa,gBAAgB,gBAAgB,SAAS;;;;AAItD,MAAa,aAAa,IAAI,cAAc,eAAe,eAAe,GAAG,MAAM,EAAE;AACrF,MAAa,aAAa,gBAAgB,SAAS;;;;AAInD,MAAa,UAAU,IAAI,cAAc,YAAY,YAAY,GAAG,MAAM,EAAE;AAC5E,MAAa,YAAY,gBAAgB,SAAS;;;;AAIlD,MAAa,SAAS,IAAI,cAAc,WAAW,WAAW,GAAG,MAAM,EAAE"}