{"version":3,"file":"index.umd.production.min.cjs","sources":["../src/index.ts"],"sourcesContent":["/**\n * Created by user on 2018/9/25/025.\n */\n\n// @ts-ignore\nimport CallableInstance from 'callable-instance2';\nimport CrossSpawn from 'cross-spawn';\nimport Bluebird from 'bluebird';\nimport {\n\tChildProcess,\n\tSpawnSyncReturns as _NodeSpawnSyncReturns,\n} from 'child_process';\nimport stream from 'stream';\nimport _stripAnsi from 'strip-ansi';\n\nimport type {\n\tSpawnOptions,\n\tSpawnSyncOptions,\n\tSpawnSyncOptionsWithBufferEncoding,\n\tSpawnSyncOptionsWithStringEncoding,\n} from \"./type\";\n\nexport const SYM_CROSS_SPAWN = Symbol.for('cross-spawn');\nexport const SYM_BLUEBIRD = Symbol.for('bluebird');\n\nexport {\n\tSpawnOptions,\n\tSpawnSyncOptions,\n\tSpawnSyncOptionsWithBufferEncoding,\n\tSpawnSyncOptionsWithStringEncoding,\n}\n\nexport type SpawnSyncReturns<T = Buffer> = _NodeSpawnSyncReturns<T> & {\n\n\t/**\n\t * fake async api, this not same as async return\n\t */\n\tthen<R>(fn: (child: _NodeSpawnSyncReturns<T>) => R): Bluebird<R>,\n\n\terror: ISpawnASyncError,\n};\n\nexport type SpawnASyncReturns<T = Buffer> = _NodeSpawnSyncReturns<T> & ChildProcess & {\n\n\terror: ISpawnASyncError,\n\tstatus: number,\n\n\t/**\n\t * a buffer list by realy order of output (include stdout , stderr)\n\t */\n\t_output?: Buffer[],\n\n\t/**\n\t * source stderr stream\n\t */\n\tstderrStream?: stream.Readable,\n\t/**\n\t * source stdout stream\n\t */\n\tstdoutStream?: stream.Readable,\n};\n\nexport type SpawnASyncReturnsPromise<T = Buffer> = Bluebird<SpawnASyncReturns<T>> & {\n\n\t/**\n\t * can do anything as u want like source spawn do\n\t */\n\tchild?: SpawnASyncReturns<T>,\n\n};\n\n/**\n * Error Class\n */\nexport interface ISpawnASyncError<R = SpawnASyncReturns> extends Error\n{\n\tmessage: string,\n\tcode?: string,\n\terrno?: string,\n\tsyscall?: string,\n\tpath?: string,\n\tspawnargs?: string[],\n\n\tchild?: R,\n}\n\n// @ts-ignore\ninterface CallableInstance<R = SpawnASyncReturnsPromise>\n{\n\t(command: string, args?: string[], options?: SpawnOptions): SpawnASyncReturnsPromise\n\t<T = Buffer>(command: string, args?: string[], options?: SpawnOptions): SpawnASyncReturnsPromise<T>\n\t<T = Buffer>(command: string, args?: any[], options?: SpawnOptions): SpawnASyncReturnsPromise<T>\n\t<T = Buffer>(command: string, args?: any[]): SpawnASyncReturnsPromise<T>\n\t<T = Buffer>(command: string): SpawnASyncReturnsPromise<T>\n\n\t(command: string, args?: string[], options?: SpawnOptions): SpawnASyncReturnsPromise\n\t(command: string, args?: any[], options?: SpawnOptions): SpawnASyncReturnsPromise\n\t(command: string, args?: any[]): SpawnASyncReturnsPromise\n\t(command: string): SpawnASyncReturnsPromise\n\n\t<T = Buffer>(...argv: any[]): SpawnASyncReturnsPromise<T>\n\t(...argv: any[]): SpawnASyncReturnsPromise\n}\n\nexport class CrossSpawnExtra<R = SpawnASyncReturnsPromise> extends CallableInstance<R>\n{\n\tprotected readonly [SYM_CROSS_SPAWN]: typeof CrossSpawn;\n\tprotected readonly [SYM_BLUEBIRD]: typeof Bluebird;\n\n\t/**\n\t * sync version of child_process.spawnSync(command[, args][, options])\n\t */\n\tsync(command: string): SpawnSyncReturns<Buffer>;\n\tsync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;\n\tsync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;\n\tsync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;\n\tsync(command: string, args?: Array<string>, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;\n\tsync(command: string, args?: Array<string>, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;\n\tsync(command: string, args?: Array<string>, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;\n\tsync<T = Buffer>(...argv: any[]): SpawnSyncReturns<T>\n\tsync<T = Buffer>(...argv: any[]): SpawnSyncReturns<T>\n\t{\n\t\t// @ts-ignore\n\t\tlet child = this[SYM_CROSS_SPAWN].sync<T>(...argv);\n\t\t// @ts-ignore\n\t\tchild.then = Bluebird.method((fn) => {\n\t\t\t// @ts-ignore\n\t\t\tdelete child.then;\n\t\t\treturn fn(child)\n\t\t});\n\n\t\tlet options = argv[2] as SpawnSyncOptions;\n\n\t\tif (options?.stripAnsi)\n\t\t{\n\t\t\t// @ts-ignore\n\t\t\tchild.stderr = child.stderr && stripAnsi(child.stderr);\n\t\t\t// @ts-ignore\n\t\t\tchild.stdout = child.stdout && stripAnsi(child.stdout);\n\t\t}\n\n\t\t// @ts-ignore\n\t\treturn child;\n\t}\n\n\t/**\n\t * async version of child_process.spawn(command[, args][, options])\n\t */\n\tasync<T = Buffer>(command: string, args?: string[], options?: SpawnOptions): SpawnASyncReturnsPromise<T>\n\tasync<T = Buffer>(command: string, args?: any[], options?: SpawnOptions): SpawnASyncReturnsPromise<T>\n\tasync<T = Buffer>(...argv: any[]): SpawnASyncReturnsPromise<T>\n\tasync<T = Buffer>(...argv: any[]): SpawnASyncReturnsPromise<T>\n\t{\n\t\tlet self = this;\n\n\t\tlet cache = {\n\t\t\toutput: [] as Buffer[],\n\t\t\tstdout: [] as Buffer[],\n\t\t\tstderr: [] as Buffer[],\n\t\t};\n\n\t\tlet child: SpawnASyncReturns<T>;\n\t\tlet fn = self[SYM_CROSS_SPAWN] as typeof CrossSpawn;\n\n\t\tlet ret = Bluebird.resolve();\n\n\t\tlet options = argv[2] as SpawnSyncOptions;\n\n\t\t// @ts-ignore\n\t\tchild = fn(...argv);\n\t\t// @ts-ignore\n\t\tret.child = child;\n\n\t\tchild.stderrStream = child.stderr;\n\t\tchild.stdoutStream = child.stdout;\n\n\t\t// @ts-ignore\n\t\tret = ret.thenReturn(new Bluebird<SpawnASyncReturns<T>>(function (resolve, reject)\n\t\t{\n\t\t\t// @ts-ignore\n\t\t\tret.child = child;\n\n\t\t\t([\n\t\t\t\t'stderr',\n\t\t\t\t'stdout',\n\t\t\t] as const).forEach(function (std)\n\t\t\t{\n\t\t\t\tif (child[std])\n\t\t\t\t{\n\t\t\t\t\tchild[std].on('data', function (buf)\n\t\t\t\t\t{\n\t\t\t\t\t\tcache[std].push(buf);\n\t\t\t\t\t\tcache.output.push(buf);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tchild.on('close', function (...argv)\n\t\t\t{\n\t\t\t\tchild.status = argv[0];\n\n\t\t\t\tdone('close');\n\n\t\t\t\t//console.debug(child.pid, 'close', argv);\n\t\t\t});\n\n\t\t\tchild.on('exit', function (...argv)\n\t\t\t{\n\t\t\t\tchild.status = argv[0];\n\n\t\t\t\tdone('exit');\n\n\t\t\t\t//console.debug(child.pid, 'exit', argv);\n\t\t\t});\n\n\t\t\tchild.on('error', function (error)\n\t\t\t{\n\t\t\t\tchild.error = error;\n\t\t\t\t//done('error');\n\t\t\t});\n\n\t\t\tfunction done(event?: string)\n\t\t\t{\n\t\t\t\t//console.log(event, child.error);\n\n\t\t\t\tlet stderr = Buffer.concat(cache.stderr);\n\t\t\t\tlet stdout = Buffer.concat(cache.stdout);\n\n\t\t\t\tif (options?.stripAnsi)\n\t\t\t\t{\n\t\t\t\t\tstderr = stripAnsi(stderr);\n\t\t\t\t\tstdout = stripAnsi(stdout);\n\t\t\t\t}\n\n\t\t\t\t// @ts-ignore\n\t\t\t\tchild.stderr = stderr;\n\t\t\t\t// @ts-ignore\n\t\t\t\tchild.stdout = stdout;\n\t\t\t\t// @ts-ignore\n\t\t\t\tchild.output = [null, stdout, stderr];\n\n\t\t\t\t// @ts-ignore\n\t\t\t\tchild._output = cache.output;\n\n\t\t\t\tif (child.error)\n\t\t\t\t{\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tchild.error.child = child;\n\t\t\t\t}\n\n\t\t\t\tif (child.error)\n\t\t\t\t{\n\t\t\t\t\treject(child.error);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tresolve(child);\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t\t.tapCatch((e: ISpawnASyncError<SpawnASyncReturns<T>>) => {\n\t\t\t\tif (e)\n\t\t\t\t{\n\t\t\t\t\te.child = child;\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\t\t;\n\n\t\t// @ts-ignore\n\t\tret.child = child;\n\n\t\t// @ts-ignore\n\t\treturn ret;\n\t}\n\n\tspawnSync = this.sync;\n\tspawn = this.async;\n\n\t/**\n\t * create new CrossSpawnExtra with Custom CrossSpawn, Promise\n\t */\n\tconstructor(cs?: typeof CrossSpawn, p?: typeof Bluebird | typeof Promise)\n\t{\n\t\tsuper('async');\n\n\t\tthis[SYM_CROSS_SPAWN] = cs || CrossSpawn;\n\t\t// @ts-ignore\n\t\tthis[SYM_BLUEBIRD] = p || Bluebird;\n\n\t\t[\n\t\t\t'core',\n\t\t\t'async',\n\t\t\t'sync',\n\t\t].forEach(name => this[name] = this[name].bind(this));\n\n\t\tObject.defineProperty(this, \"__esModule\", { value: true });\n\t}\n\n\t/**\n\t * create new CrossSpawnExtra with Custom CrossSpawn, Promise\n\t */\n\tstatic use(cs?: typeof CrossSpawn, p?: typeof Bluebird | typeof Promise): CrossSpawnExtra\n\tstatic use<R = SpawnASyncReturnsPromise>(cs?: typeof CrossSpawn, p?: typeof Bluebird | typeof Promise): CrossSpawnExtra<R>\n\tstatic use(cs?, p?): CrossSpawnExtra\n\tstatic use<R = SpawnASyncReturnsPromise>(cs?, p?): CrossSpawnExtra<R>\n\tstatic use<R = SpawnASyncReturnsPromise>(cs?: typeof CrossSpawn, p?: typeof Bluebird | typeof Promise)\n\t{\n\t\treturn new this<R>(cs, p)\n\t}\n\n\t/**\n\t * create new CrossSpawnExtra with Custom CrossSpawn, Promise\n\t */\n\tuse(cs?: typeof CrossSpawn, p?: typeof Bluebird | typeof Promise): CrossSpawnExtra\n\tuse<R = SpawnASyncReturnsPromise>(cs?: typeof CrossSpawn, p?: typeof Bluebird | typeof Promise): CrossSpawnExtra<R>\n\tuse(cs?, p?): CrossSpawnExtra\n\tuse<R = SpawnASyncReturnsPromise>(cs?, p?): CrossSpawnExtra<R>\n\tuse<R = SpawnASyncReturnsPromise>(cs?: typeof CrossSpawn, p?: typeof Bluebird | typeof Promise)\n\t{\n\t\treturn new CrossSpawnExtra<R>(cs, p)\n\t}\n\n\tcore<T>(command: string, args?: string[], options?: SpawnOptions): ChildProcess\n\tcore<T>(...argv): ChildProcess\n\tcore<T>(...argv): ChildProcess\n\t{\n\t\t// @ts-ignore\n\t\treturn this[SYM_CROSS_SPAWN](...argv);\n\t}\n\n\tget coreSync()\n\t{\n\t\treturn this[SYM_CROSS_SPAWN].sync;\n\t}\n\n}\n\n/**\n * stripAnsi a Buffer or string\n */\nexport function stripAnsi(input: Buffer, toStr: true): string\nexport function stripAnsi(input: Buffer, toStr?: false): Buffer\nexport function stripAnsi(input: string, toStr?: boolean): string\nexport function stripAnsi<T>(input: T, toStr: true): string\nexport function stripAnsi<T>(input: T, toStr?: false): T\nexport function stripAnsi<T extends string | Buffer>(input: T, toStr?: boolean): T | string\nexport function stripAnsi(input: string | Buffer, toStr?: boolean)\n{\n\tif (!input)\n\t{\n\t\treturn input;\n\t}\n\n\tlet isBuffer = Buffer.isBuffer(input);\n\n\tinput = input.toString();\n\n\t// @ts-ignore\n\tinput = _stripAnsi(input) as string;\n\n\tif (isBuffer && !toStr)\n\t{\n\t\treturn Buffer.from(input);\n\t}\n\n\treturn input;\n}\n\nexport const crossSpawnExtra = new CrossSpawnExtra;\n\nconst async = crossSpawnExtra.async = crossSpawnExtra.async.bind(crossSpawnExtra);\nconst sync = crossSpawnExtra.sync = crossSpawnExtra.sync.bind(crossSpawnExtra);\n\nexport { async, sync };\n\nexport default crossSpawnExtra;\n\n// @ts-ignore\nif (process.env.TSDX_FORMAT !== 'esm')\n{\n\tObject.defineProperty(crossSpawnExtra, \"__esModule\", { value: true });\n\n\tObject.defineProperty(crossSpawnExtra, 'crossSpawnExtra', { value: crossSpawnExtra });\n\tObject.defineProperty(crossSpawnExtra, 'default', { value: crossSpawnExtra });\n\n\tObject.defineProperty(crossSpawnExtra, 'SYM_CROSS_SPAWN', { value: SYM_CROSS_SPAWN });\n\tObject.defineProperty(crossSpawnExtra, 'SYM_BLUEBIRD', { value: SYM_BLUEBIRD });\n\n\tObject.defineProperty(crossSpawnExtra, 'stripAnsi', { value: stripAnsi });\n\n}\n"],"names":["SYM_CROSS_SPAWN","Symbol","for","SYM_BLUEBIRD","CrossSpawnExtra","CallableInstance","sync","argv","child","this","then","Bluebird","method","fn","options","stripAnsi","stderr","stdout","async","cache","output","ret","resolve","stderrStream","stdoutStream","thenReturn","reject","done","event","Buffer","concat","_output","error","forEach","std","on","buf","push","status","tapCatch","e","spawnSync","spawn","constructor","cs","p","super","CrossSpawn","name","bind","Object","defineProperty","value","use","core","coreSync","input","toStr","isBuffer","toString","_stripAnsi","from","crossSpawnExtra"],"mappings":"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"}