Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 5x 5x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { isUndefined, formatError, } from './util.js'; import type { CopyOptions, PathLike, RmOptions } from 'node:fs'; import type { SpawnSyncReturns, SpawnSyncOptionsWithStringEncoding, SpawnSyncOptionsWithBufferEncoding, SpawnSyncOptions } from 'node:child_process'; import type { DistinctQuestion } from 'inquirer'; type ValueOf<T> = T[keyof T]; export interface IOPath { resolve: (...paths: string[]) => string; } export interface IOFs { cp: (source: string | URL, destination: string | URL, opts?: CopyOptions) => Promise<void>; rename: (oldPath: PathLike, newPath: PathLike) => Promise<void>; rm: (path: PathLike, options?: RmOptions) => Promise<void>; } type SpawnSyncFunctionString = ( command: string, args?: readonly string[], options?: SpawnSyncOptions | SpawnSyncOptionsWithStringEncoding, ) => SpawnSyncReturns<string>; type SpawnSyncFunctionBuffer = ( command: string, args?: readonly string[], options?: SpawnSyncOptions | SpawnSyncOptionsWithBufferEncoding, ) => SpawnSyncReturns<Buffer>; export interface IOChildProcess { spawnSync: SpawnSyncFunctionString | SpawnSyncFunctionBuffer; } export interface IOInquirer { prompt: <T>( question: DistinctQuestion ) => Promise<T>; } export interface IOMap { path: IOPath; fs: IOFs; child_process: IOChildProcess; inquirer: IOInquirer; } const io = new Map<keyof IOMap, ValueOf<IOMap>>(); const getIO = <T extends ValueOf<IOMap>>( k: keyof IOMap ): T => { const val = io.get(k) as (T | undefined); if (isUndefined(val)) { // Module load error formatError(new Error( `IO Error: ${k} module not loaded` )); process.exit(1); } return val; } const setIO = ( cfg: Record<keyof IOMap, ValueOf<IOMap>> ): void => { const keys = Object.keys(cfg) as (keyof IOMap)[]; keys.forEach(k => io.set(k, cfg[k])); }; export { getIO, setIO }; |