{"version":3,"sources":["utils/visitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,qBAAa,OAAO,CAAC,CAAC,EAAE,UAAU;IAC9B,OAAO,CAAC,MAAM,CAAwC;IAErD,EAAE;IAQH,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,gBAAgB,EAAE,UAAU,GAAG,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO;IA0B7H,KAAK;IAKL,IAAI,MAAM,WAET;CACJ;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,UAAU;IAC1C,IAAI,EAAE,CAAC,CAAC;IACR,gBAAgB,EAAE,UAAU,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC","file":"visitor.d.ts","sourcesContent":["/** Queue visitor */\n\nimport ts from 'typescript';\n\n/** Visitor pattern using generators */\nexport class Visitor<T, TModelNode> {\n\tprivate _queue: VisitorEntities<T, TModelNode>[] = [];\n\t/** Get next element */\n\t*it() {\n\t\tvar i = 0;\n\t\tvar q = this._queue;\n\t\twhile (i < q.length) {\n\t\t\tyield q[i++];\n\t\t}\n\t}\n\t/** Push items */\n\tpush(\n\t\tnodes: T | readonly T[] | undefined,\n\t\tparentDescriptor: TModelNode | undefined,\n\t\tsrcFile: ts.SourceFile,\n\t\tisInput?: boolean\n\t) {\n\t\tvar queue = this._queue;\n\t\tif (Array.isArray(nodes)) {\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = nodes.length; i < len; ++i) {\n\t\t\t\tqueue.push({\n\t\t\t\t\tnode: nodes[i],\n\t\t\t\t\tparentDescriptor,\n\t\t\t\t\tsrcFile,\n\t\t\t\t\tisInput,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (nodes != null) {\n\t\t\tqueue.push({\n\t\t\t\tnode: nodes as T,\n\t\t\t\tparentDescriptor,\n\t\t\t\tsrcFile,\n\t\t\t\tisInput,\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t * Clear visitor\n\t */\n\tclear() {\n\t\tthis._queue.length = 0;\n\t\treturn this;\n\t}\n\n\t/** Length */\n\tget length() {\n\t\treturn this._queue.length;\n\t}\n}\n\n/** Interface */\nexport interface VisitorEntities<T, TModelNode> {\n\tnode: T;\n\tparentDescriptor: TModelNode | undefined;\n\tsrcFile: ts.SourceFile;\n\tisInput: boolean | undefined;\n}\n"]}