UNPKG

@cloudflare/vitest-pool-workers

Version:

Workers Vitest integration for writing Vitest unit and integration tests that run inside the Workers runtime

1 lines 5.94 kB
{"version":3,"file":"console.mjs","names":["#stdout","#stderr","#inspectOptions"],"sources":["../../../src/worker/node/console.ts"],"sourcesContent":["import { Writable } from \"node:stream\";\nimport { formatWithOptions } from \"node:util\";\nimport type { InspectOptions } from \"node:util\";\n\nconst originalConsole = console;\n\ninterface ConsoleOptions {\n\tstdout?: Writable;\n\tstderr?: Writable;\n\tignoreErrors?: boolean; // ignored\n\tcolorMode?: boolean | string;\n\tinspectOptions?: InspectOptions;\n\tgroupIndentation?: number; // ignored\n}\n\nexport class Console {\n\treadonly #stdout?: Writable;\n\treadonly #stderr?: Writable;\n\treadonly #inspectOptions: InspectOptions;\n\n\tconstructor(stdout: Writable, stderr?: Writable, ignoreErrors?: boolean);\n\tconstructor(opts: ConsoleOptions);\n\tconstructor(\n\t\topts: Writable | ConsoleOptions,\n\t\tstderr?: Writable,\n\t\tignoreErrors?: boolean\n\t) {\n\t\tif (opts instanceof Writable) {\n\t\t\topts = { stdout: opts, stderr, ignoreErrors };\n\t\t}\n\t\tthis.#stdout = opts.stdout;\n\t\tthis.#stderr = opts.stderr ?? this.#stdout;\n\t\tconst colors =\n\t\t\ttypeof opts.colorMode === \"string\" ? false : (opts.colorMode ?? false);\n\t\tthis.#inspectOptions = opts.inspectOptions ?? { colors };\n\n\t\t// Ensure methods are bound to the instance\n\t\treturn new Proxy(this, {\n\t\t\tget(target, prop) {\n\t\t\t\tconst value = target[prop as keyof Console];\n\t\t\t\tif (typeof value === \"function\") {\n\t\t\t\t\treturn value.bind(target);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t},\n\t\t});\n\t}\n\n\t// Vitest expects this function to be called `value`:\n\t// https://github.com/vitest-dev/vitest/blob/v4.0.18/packages/vitest/src/runtime/console.ts#L19\n\tvalue(stream: Writable, data: unknown[]): void {\n\t\tstream.write(formatWithOptions(this.#inspectOptions, ...data) + \"\\n\");\n\t}\n\n\tassert(condition?: boolean, ...data: unknown[]): void {\n\t\toriginalConsole.assert(condition, ...data);\n\t}\n\tclear(): void {\n\t\toriginalConsole.clear();\n\t}\n\tcount(label?: string): void {\n\t\toriginalConsole.count(label);\n\t}\n\tcountReset(label?: string): void {\n\t\toriginalConsole.countReset(label);\n\t}\n\tdebug(...data: unknown[]): void {\n\t\tif (this.#stdout === undefined) {\n\t\t\toriginalConsole.debug(...data);\n\t\t} else {\n\t\t\tthis.value(this.#stdout, data);\n\t\t}\n\t}\n\tdir(item?: unknown, options?: unknown): void {\n\t\toriginalConsole.dir(item, options);\n\t}\n\tdirxml(...data: unknown[]): void {\n\t\toriginalConsole.dirxml(...data);\n\t}\n\terror(...data: unknown[]): void {\n\t\tif (this.#stderr === undefined) {\n\t\t\toriginalConsole.error(...data);\n\t\t} else {\n\t\t\tthis.value(this.#stderr, data);\n\t\t}\n\t}\n\tgroup(...data: unknown[]): void {\n\t\toriginalConsole.group(...data);\n\t}\n\tgroupCollapsed(...data: unknown[]): void {\n\t\toriginalConsole.groupCollapsed(...data);\n\t}\n\tgroupEnd(): void {\n\t\toriginalConsole.groupEnd();\n\t}\n\tinfo(...data: unknown[]): void {\n\t\tif (this.#stdout === undefined) {\n\t\t\toriginalConsole.info(...data);\n\t\t} else {\n\t\t\tthis.value(this.#stdout, data);\n\t\t}\n\t}\n\tlog(...data: unknown[]): void {\n\t\tif (this.#stdout === undefined) {\n\t\t\toriginalConsole.log(...data);\n\t\t} else {\n\t\t\tthis.value(this.#stdout, data);\n\t\t}\n\t}\n\ttable(tabularData?: unknown, properties?: string[]): void {\n\t\toriginalConsole.table(tabularData, properties);\n\t}\n\ttime(label?: string): void {\n\t\toriginalConsole.time(label);\n\t}\n\ttimeEnd(label?: string): void {\n\t\toriginalConsole.timeEnd(label);\n\t}\n\ttimeLog(label?: string, ...data: unknown[]): void {\n\t\toriginalConsole.timeLog(label, ...data);\n\t}\n\ttimeStamp(label?: string): void {\n\t\toriginalConsole.timeStamp(label);\n\t}\n\ttrace(...data: unknown[]): void {\n\t\tif (this.#stdout === undefined) {\n\t\t\toriginalConsole.trace(...data);\n\t\t} else {\n\t\t\tthis.value(this.#stdout, data);\n\t\t}\n\t}\n\twarn(...data: unknown[]): void {\n\t\tif (this.#stderr === undefined) {\n\t\t\toriginalConsole.warn(...data);\n\t\t} else {\n\t\t\tthis.value(this.#stderr, data);\n\t\t}\n\t}\n}\n"],"mappings":";;;;AAIA,MAAM,kBAAkB;AAWxB,IAAa,UAAb,MAAqB;CACpB,CAASA;CACT,CAASC;CACT,CAASC;CAIT,YACC,MACA,QACA,cACC;AACD,MAAI,gBAAgB,SACnB,QAAO;GAAE,QAAQ;GAAM;GAAQ;GAAc;AAE9C,QAAKF,SAAU,KAAK;AACpB,QAAKC,SAAU,KAAK,UAAU,MAAKD;EACnC,MAAM,SACL,OAAO,KAAK,cAAc,WAAW,QAAS,KAAK,aAAa;AACjE,QAAKE,iBAAkB,KAAK,kBAAkB,EAAE,QAAQ;AAGxD,SAAO,IAAI,MAAM,MAAM,EACtB,IAAI,QAAQ,MAAM;GACjB,MAAM,QAAQ,OAAO;AACrB,OAAI,OAAO,UAAU,WACpB,QAAO,MAAM,KAAK,OAAO;AAE1B,UAAO;KAER,CAAC;;CAKH,MAAM,QAAkB,MAAuB;AAC9C,SAAO,MAAM,kBAAkB,MAAKA,gBAAiB,GAAG,KAAK,GAAG,KAAK;;CAGtE,OAAO,WAAqB,GAAG,MAAuB;AACrD,kBAAgB,OAAO,WAAW,GAAG,KAAK;;CAE3C,QAAc;AACb,kBAAgB,OAAO;;CAExB,MAAM,OAAsB;AAC3B,kBAAgB,MAAM,MAAM;;CAE7B,WAAW,OAAsB;AAChC,kBAAgB,WAAW,MAAM;;CAElC,MAAM,GAAG,MAAuB;AAC/B,MAAI,MAAKF,WAAY,OACpB,iBAAgB,MAAM,GAAG,KAAK;MAE9B,MAAK,MAAM,MAAKA,QAAS,KAAK;;CAGhC,IAAI,MAAgB,SAAyB;AAC5C,kBAAgB,IAAI,MAAM,QAAQ;;CAEnC,OAAO,GAAG,MAAuB;AAChC,kBAAgB,OAAO,GAAG,KAAK;;CAEhC,MAAM,GAAG,MAAuB;AAC/B,MAAI,MAAKC,WAAY,OACpB,iBAAgB,MAAM,GAAG,KAAK;MAE9B,MAAK,MAAM,MAAKA,QAAS,KAAK;;CAGhC,MAAM,GAAG,MAAuB;AAC/B,kBAAgB,MAAM,GAAG,KAAK;;CAE/B,eAAe,GAAG,MAAuB;AACxC,kBAAgB,eAAe,GAAG,KAAK;;CAExC,WAAiB;AAChB,kBAAgB,UAAU;;CAE3B,KAAK,GAAG,MAAuB;AAC9B,MAAI,MAAKD,WAAY,OACpB,iBAAgB,KAAK,GAAG,KAAK;MAE7B,MAAK,MAAM,MAAKA,QAAS,KAAK;;CAGhC,IAAI,GAAG,MAAuB;AAC7B,MAAI,MAAKA,WAAY,OACpB,iBAAgB,IAAI,GAAG,KAAK;MAE5B,MAAK,MAAM,MAAKA,QAAS,KAAK;;CAGhC,MAAM,aAAuB,YAA6B;AACzD,kBAAgB,MAAM,aAAa,WAAW;;CAE/C,KAAK,OAAsB;AAC1B,kBAAgB,KAAK,MAAM;;CAE5B,QAAQ,OAAsB;AAC7B,kBAAgB,QAAQ,MAAM;;CAE/B,QAAQ,OAAgB,GAAG,MAAuB;AACjD,kBAAgB,QAAQ,OAAO,GAAG,KAAK;;CAExC,UAAU,OAAsB;AAC/B,kBAAgB,UAAU,MAAM;;CAEjC,MAAM,GAAG,MAAuB;AAC/B,MAAI,MAAKA,WAAY,OACpB,iBAAgB,MAAM,GAAG,KAAK;MAE9B,MAAK,MAAM,MAAKA,QAAS,KAAK;;CAGhC,KAAK,GAAG,MAAuB;AAC9B,MAAI,MAAKC,WAAY,OACpB,iBAAgB,KAAK,GAAG,KAAK;MAE7B,MAAK,MAAM,MAAKA,QAAS,KAAK"}