{"version":3,"sources":["jsdelivr-header.js","/npm/regexp-parser-event@1.1.47/index.ts"],"names":[],"mappings":"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","file":"/npm/regexp-parser-event@1.1.47/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/regexp-parser-event@1.1.47/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { AST } from \"regexpp2\";\n//import * as regexpp from 'regexpp2';\nimport { EventEmitter } from 'events';\nimport { array_unique } from 'array-hyper-unique';\nimport { ITSPartialRecord, ITSOverwrite } from 'ts-type';\n\nimport Parser, {\n\tastToString,\n\tfakePatternToRegExpLiteral,\n\tparseFlags,\n\tparsePattern,\n\tINodePlus,\n\tIAstToStringOptions,\n} from 'regexp-parser-literal';\n\nimport { AppendableNode } from 'regexpp2/src/parser';\n\nexport const enum ParserEventEmitterEvent\n{\n\tdefault = 'default',\n\tclass = 'class',\n\n\tother = 'other',\n\n\tuniset = 'uniset',\n\n\tclass_default = 'class_default',\n\tclass_range = 'class_range',\n\tclass_other = 'class_other',\n\n\tclass_uniset = 'class_uniset',\n\n\tchange = 'change',\n}\n\n// @ts-ignore\nexport const ParserEventEmitterEventList = Object.freeze(array_unique(Object.values(ParserEventEmitterEvent))) as ParserEventEmitterEvent[];\n\nexport type INodeInput = AST.Element | AST.CharacterClassElement | AppendableNode | AST.CharacterSet;\n\nexport class ParserEventEmitter extends EventEmitter\n{\n\tastRegExpLiteral: AST.RegExpLiteral & INodePlus = null;\n\n\tconstructor(inputAst: AST.Pattern | AST.RegExpLiteral | string, flags: string | AST.Flags = '')\n\t{\n\t\tsuper();\n\n\t\tconst self = this;\n\n\t\tif (typeof inputAst == 'string' || inputAst.type == 'Pattern')\n\t\t{\n\t\t\tinputAst = fakePatternToRegExpLiteral(inputAst, flags);\n\t\t}\n\n\t\tthis.astRegExpLiteral = inputAst as AST.RegExpLiteral;\n\n\t\tthis.on(ParserEventEmitterEvent.change, function (ast)\n\t\t{\n\t\t\tself._change(ast, true);\n\t\t\tself.changed = true;\n\t\t});\n\n//\t\tconsole.dir(this.astRegExpLiteral.pattern.elements, {\n//\t\t\tcolors: true,\n//\t\t\tdepth: 3,\n//\t\t});\n\t}\n\n\tstatic create(inputAst: AST.Pattern | AST.RegExpLiteral | string, flags: string | AST.Flags = '')\n\t{\n\t\treturn new this(inputAst, flags);\n\t}\n\n\tresume()\n\t{\n\t\tconst self = this;\n\n\t\t/*\n\t\t0 && console.dir(this.astRegExpLiteral.pattern, {\n\t\t\tdepth: null,\n\t\t\tcolors: true,\n\t\t});\n\t\t*/\n\n\t\tlet pattern = this.astRegExpLiteral.pattern;\n\n\t\t// @ts-ignore\n\t\tlet elems = pattern.alternatives || pattern.elements;\n\n\t\telems.forEach(function (item)\n\t\t{\n\t\t\tself._lookup_sub(item, self);\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * same as this.emit(ParserEventEmitterEvent.change, ast)\n\t */\n\temitChange<T extends INodeInput>(inputAst: T & INodePlus, ...args)\n\t{\n\t\treturn this.emit(ParserEventEmitterEvent.change, inputAst, ...args)\n\t}\n\n\toverride emit<T extends INodeInput>(eventName: ParserEventEmitterEvent,\n\t\tinputAst: T & INodePlus,\n\t\t...args\n\t): boolean\n\t{\n\t\treturn (super.emit as IParserEventEmitterListenerSuper<T, ParserEventEmitterEvent>)(eventName, inputAst, eventName, this, ...args);\n\t}\n\n\toverride on<E extends ParserEventEmitterEvent.default>(eventName: E,\n\t\tlistener: IParserEventEmitterListener<AST.Character, E>,\n\t): this\n\toverride on<E extends ParserEventEmitterEvent.class>(eventName: E,\n\t\tlistener: IParserEventEmitterListener<AST.CharacterClass, E>,\n\t): this\n\toverride on<E extends ParserEventEmitterEvent.class_default>(eventName: E,\n\t\tlistener: IParserEventEmitterListener<AST.Character, E>,\n\t): this\n\toverride on<E extends ParserEventEmitterEvent.class_range>(eventName: E,\n\t\tlistener: IParserEventEmitterListener<AST.CharacterClassRange, E>,\n\t): this\n\toverride on<E extends ParserEventEmitterEvent.other>(eventName: E,\n\t\tlistener: IParserEventEmitterListener<AST.CharacterClassElement, E>,\n\t): this\n\toverride on<E extends ParserEventEmitterEvent.uniset>(eventName: E,\n\t\tlistener: IParserEventEmitterListener<AST.CharacterSet, E>,\n\t): this\n\toverride on<E extends ParserEventEmitterEvent>(eventName: ParserEventEmitterEvent,\n\t\tlistener: IParserEventEmitterListener<AST.Element, E>,\n\t): this\n\toverride on(eventName: ParserEventEmitterEvent, listener: IParserEventEmitterListener<any, ParserEventEmitterEvent>): this\n\t{\n\t\treturn super.on(eventName, listener);\n\t}\n\n\tprotected _change<T extends AST.Node>(ast: T & INodePlus, isFirst?: boolean)\n\t{\n\t\tconst self = this;\n\n\t\tast.changed = true;\n\n\t\tif (ast.parent)\n\t\t{\n\t\t\tthis._change(ast.parent)\n\t\t}\n\t}\n\n\tprotected _lookup_sub<T extends INodeInput>(inputAst: T & INodePlus,\n\t\tmyEmitter: ParserEventEmitter,\n\t\tparent?,\n\t\teventPrefix: string = '',\n\t)\n\t{\n\t\tconst self = this;\n\n\t\tlet do_elements: boolean;\n\t\tlet sub_elements: any[];\n\t\tlet sub_prefix: string = '';\n\t\tlet event: string | keyof typeof ParserEventEmitterEvent | ParserEventEmitterEvent;\n\n\t\tswitch (inputAst.type)\n\t\t{\n\t\t\tcase 'Character':\n\t\t\t\tevent = eventPrefix + ParserEventEmitterEvent.default;\n\n\t\t\t\tbreak;\n\t\t\tcase 'CharacterClass':\n\t\t\t\tevent = ParserEventEmitterEvent.class;\n\n\t\t\t\tdo_elements = true;\n\t\t\t\tsub_prefix = 'class_';\n\n\t\t\t\tbreak;\n\t\t\tcase 'CharacterClassRange':\n\t\t\t\tevent = ParserEventEmitterEvent.class_range;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'CharacterSet':\n\t\t\t\tevent = eventPrefix + ParserEventEmitterEvent.uniset;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Quantifier':\n\n\t\t\t\tdo_elements = true;\n\t\t\t\t// @ts-ignore\n\t\t\t\tsub_elements = [inputAst.element];\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'CapturingGroup':\n\t\t\tcase 'Group':\n\t\t\tcase 'Assertion':\n\t\t\t\tdo_elements = true;\n\t\t\t\tbreak;\n\n\t\t\t// @ts-ignore\n\t\t\tcase 'Alternative':\n\n\t\t\t\t// @ts-ignore\n\t\t\t\t(inputAst as AST.Alternative).elements\n\t\t\t\t\t.forEach(function (items)\n\t\t\t\t\t{\n\t\t\t\t\t\tself._lookup_sub(items, myEmitter, inputAst, sub_prefix);\n\t\t\t\t\t});\n\t\t\t\t;\n\n\t\t\t\tbreak;\n\n\t\t\t// @ts-ignore\n\t\t\tcase 'Disjunction':\n\n\t\t\t\t// @ts-ignore\n\t\t\t\t(inputAst as AST.Disjunction).alternatives\n\t\t\t\t\t.forEach(function (items)\n\t\t\t\t\t{\n\t\t\t\t\t\titems.forEach(function (item)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tself._lookup_sub(item, myEmitter, inputAst, sub_prefix);\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t;\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tif (eventPrefix === 'class_')\n\t\t\t\t{\n\t\t\t\t\tevent = ParserEventEmitterEvent.class_other;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tevent = eventPrefix + ParserEventEmitterEvent.other;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (event)\n\t\t{\n\t\t\t// @ts-ignore\n\t\t\tmyEmitter.emit(ParserEventEmitterEvent[event], inputAst);\n\t\t}\n\n\t\tif (do_elements && typeof sub_elements == 'undefined')\n\t\t{\n\t\t\t// @ts-ignore\n\t\t\tsub_elements = inputAst.elements;\n\n\t\t\tif (typeof sub_elements == 'undefined')\n\t\t\t{\n\t\t\t\t// @ts-ignore\n\t\t\t\tsub_elements = inputAst.alternatives;\n\t\t\t}\n\t\t}\n\n\t\tif (!inputAst.type)\n\t\t{\n\t\t\t//console.log(inputAst.type, sub_elements && sub_elements.length, inputAst);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t//console.log(inputAst.type, sub_elements && sub_elements.length);\n\t\t}\n\n\t\t// @ts-ignore\n\t\tif (do_elements && sub_elements)\n\t\t{\n\t\t\t// @ts-ignore\n\t\t\tsub_elements.forEach(function (item)\n\t\t\t{\n\t\t\t\tself._lookup_sub(item, myEmitter, inputAst, sub_prefix);\n\t\t\t});\n\t\t}\n\t}\n\n\tgetSource(overwrite?: boolean, options?: IAstToStringOptions): string\n\t{\n\t\treturn astToString(this.astRegExpLiteral.pattern, {\n\n\t\t\t...options,\n\n\t\t\t// @ts-ignore\n\t\t\tdebugChanged: overwrite ? 99 : this.astRegExpLiteral.pattern.changed,\n\t\t});\n\t}\n\n\tgetFlags(overwrite?: boolean, options?: IAstToStringOptions): string\n\t{\n\t\treturn astToString(this.astRegExpLiteral.flags, {\n\n\t\t\t...options,\n\n\t\t\t// @ts-ignore\n\t\t\tdebugChanged: overwrite ? 99 : this.astRegExpLiteral.flags.changed,\n\t\t});\n\t}\n\n\t// @ts-ignore\n\tget source(): string\n\t{\n\t\treturn this.getSource();\n\t}\n\n\t// @ts-ignore\n\tset source(pattern: AST.Pattern | string)\n\t{\n\t\tpattern = typeof pattern == 'string' ? parsePattern(pattern, this.astRegExpLiteral.flags.unicode) : pattern;\n\n\t\tpattern.parent = this.astRegExpLiteral;\n\n\t\tthis.astRegExpLiteral.pattern = pattern;\n\n\t\tthis.changed = false;\n\t}\n\n\t// @ts-ignore\n\tget flags(): string\n\t{\n\t\treturn this.getFlags();\n\t}\n\n\t// @ts-ignore\n\tset flags(flags: string | AST.Flags)\n\t{\n\t\tflags = typeof flags == 'string' ? parseFlags(flags) : flags;\n\n\t\tflags.parent = this.astRegExpLiteral;\n\n\t\tthis.astRegExpLiteral.flags = flags;\n\n\t\t// @ts-ignore\n\t\tthis.changed = this.astRegExpLiteral.pattern.changed || false;\n\t}\n\n\tget changed()\n\t{\n\t\treturn this.astRegExpLiteral.changed\n\t\t// @ts-ignore\n\t\t|| this.astRegExpLiteral.pattern.changed\n\t\t|| typeof this.astRegExpLiteral.changed == 'boolean' ? this.astRegExpLiteral.changed : null;\n\t}\n\n\tset changed(bool: boolean)\n\t{\n\t\t// @ts-ignore\n\t\tthis.astRegExpLiteral.pattern.changed = this.astRegExpLiteral.changed = bool;\n\t}\n\n\toverride toString(overwrite?: boolean, options?: IAstToStringOptions)\n\t{\n\t\treturn astToString(this.astRegExpLiteral, {\n\n\t\t\t...options,\n\n\t\t\tdebugChanged: overwrite ? 99 : this.changed,\n\t\t});\n\t}\n\n\ttoRegExp<T extends RegExp>(RegExpClass: typeof RegExp = RegExp)\n\t{\n\t\treturn new RegExpClass(this.source, this.flags);\n\t}\n\n\t/**\n\t * this will not update changes\n\t */\n\tget astSource()\n\t{\n\t\treturn this.astRegExpLiteral.pattern;\n\t}\n\n\t/**\n\t * this will not update changes\n\t */\n\tget astFlags()\n\t{\n\t\treturn this.astRegExpLiteral.flags;\n\t}\n\n}\n\nexport interface IParserEventEmitterListenerMap<T extends INodeInput = INodeInput> extends ITSOverwrite<ITSPartialRecord<ParserEventEmitterEvent, IParserEventEmitterListener<any, ParserEventEmitterEvent>>,\n{\n\t/**\n\t * 一般性 文字 節點\n\t */\n\t[ParserEventEmitterEvent.default]?: IParserEventEmitterListener<AST.Character, ParserEventEmitterEvent.default>;\n\n\t/**\n\t * /[xxx]/ 這類\n\t */\n\t[ParserEventEmitterEvent.class]?: IParserEventEmitterListener<AST.CharacterClass, ParserEventEmitterEvent.class>;\n\n\t/**\n\t * /[xxx]/ 之中的 xxx\n\t */\n\t[ParserEventEmitterEvent.class_default]?: IParserEventEmitterListener<AST.Character, ParserEventEmitterEvent.class_default>;\n\n\t/**\n\t * /[0-9]/ 之中的 0-9\n\t */\n\t[ParserEventEmitterEvent.class_range]?: IParserEventEmitterListener<AST.CharacterClassRange, ParserEventEmitterEvent.class_range>;\n\n\t/**\n\t * /[\\p{xxxx}]/ 之中的 \\p{xxxx}\n\t */\n\t[ParserEventEmitterEvent.class_uniset]?: IParserEventEmitterListener<AST.CharacterSet, ParserEventEmitterEvent.class_uniset>;\n\n\t[ParserEventEmitterEvent.other]?: IParserEventEmitterListener<AST.CharacterClassElement, ParserEventEmitterEvent.other>;\n\n\t/**\n\t * \\p{xxxx}\n\t */\n\t[ParserEventEmitterEvent.uniset]?: IParserEventEmitterListener<AST.CharacterSet, ParserEventEmitterEvent.uniset>;\n}>\n{\n\n}\n\nexport interface IParserEventEmitterListener<T extends INodeInput, E extends keyof typeof ParserEventEmitterEvent>\n{\n\t(inputAst: T & INodePlus, eventName: E, emitter: ParserEventEmitter, ...argv: unknown[])\n}\n\ninterface IParserEventEmitterListenerSuper<T extends INodeInput, E extends keyof typeof ParserEventEmitterEvent>\n{\n\t(event: E, inputAst: T & INodePlus, eventName: E, emitter: ParserEventEmitter, ...argv: unknown[]): boolean\n}\n\nexport default ParserEventEmitter;\n"]}