{"version":3,"file":"ASTAnnotation.cjs","names":["tsplus_module_1","tsplus_module_2","tsplus_module_3","tsplus_module_4","tsplus_module_5","tsplus_module_6","tsplus_module_7"],"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,KAAKA,qCAAgB,cAAc;AAC/B,SAAOC,+BAAgB,YAAYA,+BAAgB,WAAW,KAAK,WAAW,EAAEA,+BAAgB,YAAY,KAAK,IAAI,CAAC;;CAE1H,CAACC,sCAAgB,cAAc,MAAM;AACjC,SAAO,gBAAgB,KAAK,IAAIC,+BAAgB,aAAa,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,eAAe,KAAK;;;AAGrH,SAAgB,gBAAgB,GAAG;AAC/B,QAAOC,4BAAgB,SAAS,EAAE,IAAI,uBAAuB;;AAEjE,MAAa,WAAWC,kCAAgB,SAAS;;;;AAIjD,MAAa,QAAQ,IAAI,cAAc,UAAU,UAAU,GAAG,MAAM,EAAE;AACtE,MAAa,gBAAgBA,kCAAgB,SAAS;;;;AAItD,MAAa,aAAa,IAAI,cAAc,eAAe,eAAe,GAAG,MAAM,EAAE;AACrF,MAAa,iBAAiBA,kCAAgB,SAAS;;;;AAIvD,MAAa,cAAc,IAAI,cAAc,gBAAgB,gBAAgB,GAAG,MAAM,EAAE;AACxF,MAAa,aAAaA,kCAAgB,SAAS;;;;AAInD,MAAa,UAAU,IAAI,cAAc,YAAY,YAAY,GAAG,MAAM,EAAE;AAC5E,MAAa,WAAWA,kCAAgB,SAAS;;;;AAIjD,MAAa,QAAQ,IAAI,cAAc,UAAU,UAAU,GAAG,MAAMC,4CAAgB,OAAO,EAAE,CAAC,EAAE,CAAC;AACjG,MAAa,cAAcD,kCAAgB,SAAS;;;;AAIpD,MAAa,WAAW,IAAI,cAAc,aAAa,aAAa,GAAG,MAAM,EAAE;AAC/E,MAAa,mBAAmBA,kCAAgB,SAAS;;;;AAIzD,MAAa,gBAAgB,IAAI,cAAc,kBAAkB,kBAAkB,GAAG,MAAM,EAAE;AAC9F,MAAa,eAAeA,kCAAgB,SAAS;;;;AAIrD,MAAa,YAAY,IAAI,cAAc,cAAc,cAAc,GAAG,MAAM,EAAE;AAClF,SAAgB,KAAK,SAAS;AAC1B,QAAO;;AAEX,MAAa,gBAAgBA,kCAAgB,SAAS;;;;AAItD,MAAa,aAAa,IAAI,cAAc,eAAe,eAAe,GAAG,MAAM,EAAE;AACrF,MAAa,aAAaA,kCAAgB,SAAS;;;;AAInD,MAAa,UAAU,IAAI,cAAc,YAAY,YAAY,GAAG,MAAM,EAAE;AAC5E,MAAa,YAAYA,kCAAgB,SAAS;;;;AAIlD,MAAa,SAAS,IAAI,cAAc,WAAW,WAAW,GAAG,MAAM,EAAE"}