@ls-stack/utils 1.4.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-HYFUWQ2E.js → chunk-ENNWIHHG.js} +1 -1
- package/dist/{chunk-HYFUWQ2E.js.map → chunk-ENNWIHHG.js.map} +1 -1
- package/dist/parallelAsyncResultCalls.js +1 -1
- package/dist/rsResult.d.ts +1 -1
- package/dist/rsResult.js +1 -1
- package/dist/runShellCmd.d.ts +1 -1
- package/dist/runShellCmd.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rsResult.ts"],"sourcesContent":["import { isObject } from './assertions';\nimport { joinStrings } from './stringUtils';\n\ntype Ok<T> = {\n ok: true;\n error: false;\n value: T;\n};\n\ntype NormalizedErrorResultProps = {\n id: string;\n message: string;\n code?: number;\n metadata?: ValidErrorMetadata;\n};\n\ntype IsExactlyAny<T> =\n boolean extends (T extends never ? true : false) ? true : false;\n\ntype Err<E extends ResultValidErrors> = {\n ok: false;\n error: E;\n errorResult: () => Result<any, E>;\n normalizedErrorResult: (\n normalizedErr: E extends NormalizedError ?\n { withMetadata: ValidErrorMetadata } | NormalizedErrorResultProps\n : NormalizedErrorResultProps,\n ) => Result<any, NormalizedError>;\n};\n\ntype Unwrap<E, T> =\n IsExactlyAny<E> extends true ? any\n : E extends Error ? () => T\n : unknown;\n\ntype ResultMethods<T, E> = {\n /** Returns the value if the result is Ok, otherwise returns null */\n unwrapOrNull: () => T | null;\n /** Returns the value if the result is Ok, otherwise returns the provided default value */\n unwrapOr: <R extends T>(defaultValue: R) => T | R;\n unwrap: Unwrap<E, T>;\n};\n\n/**\n * Util for implementing something similar to Result<T, E> in Rust, for better error handling.\n *\n * Usage:\n *\n * @example\n * function doSomething(): Result<string, Error> {\n * if (something) {\n * return ok('success');\n * }\n *\n * return err(new Error('something went wrong'));\n * }\n *\n * const result = doSomething();\n *\n * if (result.ok) {\n * // result.value is a string\n * } else {\n * // result.error is an Error\n * }\n */\nexport type Result<T, E extends ResultValidErrors = NormalizedError> =\n | OkResult<T, E, T>\n | ErrResult<E, T>;\n\nfunction okUnwrapOr<T>(this: Ok<T>) {\n return this.value;\n}\n\ntype OkResult<T, E extends ResultValidErrors, M = any> = Ok<T> &\n ResultMethods<M, E>;\n\ntype ResultValidErrors = Error | Record<string, unknown> | [string];\n\nfunction ok(): OkResult<void, any>;\nfunction ok<T>(value: T): OkResult<T, any>;\nfunction ok(value: any = undefined): OkResult<any, any> {\n return {\n ok: true,\n error: false,\n value,\n unwrapOrNull: okUnwrapOr,\n unwrapOr: okUnwrapOr,\n unwrap: okUnwrapOr,\n };\n}\n\ntype ErrResult<E extends ResultValidErrors, T = any> = Err<E> &\n ResultMethods<T, E>;\n\nfunction err<E extends ResultValidErrors>(error: E): ErrResult<E> {\n return {\n ok: false,\n error,\n unwrapOrNull: () => null,\n unwrapOr: (defaultValue) => defaultValue,\n errorResult() {\n return err(error);\n },\n normalizedErrorResult(normalizedErr) {\n return err(\n 'withMetadata' in normalizedErr && error instanceof NormalizedError ?\n new NormalizedErrorWithMetadata({\n error,\n metadata: {\n ...error.metadata,\n ...normalizedErr.withMetadata,\n },\n })\n : new NormalizedError({\n id: (normalizedErr as NormalizedErrorResultProps).id,\n message: (normalizedErr as NormalizedErrorResultProps).message,\n code: (normalizedErr as NormalizedErrorResultProps).code,\n cause: error instanceof Error ? error : undefined,\n }),\n );\n },\n unwrap: (() => {\n throw error;\n }) as any,\n };\n}\n\nfunction normalizedUnknownErr(error: unknown) {\n return err(normalizeError(error));\n}\n\nfunction normalizedErr(message: string): ErrResult<NormalizedError>;\nfunction normalizedErr<T extends string>(\n id: T,\n message: string,\n): ErrResult<NormalizedError<T>>;\nfunction normalizedErr<T extends string>(errorProps: {\n id: T;\n message: string;\n code?: number;\n cause?: Error;\n metadata?: ValidErrorMetadata;\n}): ErrResult<NormalizedError<T>>;\nfunction normalizedErr(\n idOrMessageOrErr:\n | string\n | {\n id: string;\n message: string;\n code?: number;\n metadata?: ValidErrorMetadata;\n cause?: Error;\n },\n message?: string,\n): ErrResult<NormalizedError> {\n if (typeof idOrMessageOrErr === 'object') {\n return err(\n new NormalizedError({\n id: idOrMessageOrErr.id,\n message: idOrMessageOrErr.message,\n code: idOrMessageOrErr.code,\n cause: idOrMessageOrErr.cause,\n metadata: idOrMessageOrErr.metadata,\n }),\n );\n }\n\n if (message !== undefined) {\n return err(\n new NormalizedError({\n id: idOrMessageOrErr,\n message,\n }),\n );\n }\n\n return err(\n new NormalizedError({\n id: 'unknown',\n message: idOrMessageOrErr,\n }),\n );\n}\n\n/** Unwraps a promise result */\nasync function unwrap<T>(result: Promise<Result<T, Error>>): Promise<T> {\n const unwrapped = await result;\n\n if (unwrapped.ok) {\n return unwrapped.value;\n }\n\n throw unwrapped.error;\n}\n\nexport const Result = {\n ok,\n err,\n normalizedErr,\n normalizedUnknownErr,\n unwrap,\n};\n\n/** transfor a function in a result function */\nexport function resultify<T, E extends ResultValidErrors = NormalizedError>(\n fn: () => T,\n errorNormalizer?: (err: unknown) => E,\n): Result<T, E> {\n try {\n return ok(fn());\n } catch (error) {\n return err(\n errorNormalizer ?\n errorNormalizer(error)\n : (normalizeError(error) as unknown as E),\n );\n }\n}\n\n/** transform a async function in a result function */\nexport async function asyncResultify<T, E extends Error = NormalizedError>(\n fn: () => Promise<T>,\n errorNormalizer?: (err: unknown) => E,\n): Promise<Result<Awaited<T>, E>> {\n try {\n return ok(await fn());\n } catch (error) {\n return err(\n errorNormalizer ?\n errorNormalizer(error)\n : (normalizeError(error) as unknown as E),\n );\n }\n}\n\nexport type ValidErrorMetadata = Record<string, unknown> | undefined;\n\nlet normalizedErrorSideEffects:\n | ((normalizedError: NormalizedError) => void)\n | undefined = undefined;\n\nexport function setNormalizedErrorSideEffects(\n callback: (normalizedError: NormalizedError) => void,\n) {\n normalizedErrorSideEffects = callback;\n}\n\nexport class NormalizedError<T = string> extends Error {\n id: T;\n metadata?: ValidErrorMetadata;\n cause?: Error;\n code: number;\n\n constructor({\n id,\n message,\n metadata,\n cause,\n code = 0,\n }: {\n id: T;\n message: string;\n metadata?: ValidErrorMetadata;\n cause?: Error;\n code?: number;\n }) {\n super(message);\n this.id = id;\n this.name = 'NormalizedError';\n this.metadata = metadata;\n this.cause = cause;\n this.code = code;\n\n setTimeout(() => {\n if (normalizedErrorSideEffects) {\n normalizedErrorSideEffects(this as NormalizedError);\n }\n }, 1);\n }\n\n toString() {\n return joinStrings(\n !!this.code && `${this.code}#`,\n String(this.id),\n `: ${this.message}`,\n !!this.cause && `\\n Caused by: ${this.cause}`,\n !!this.metadata && `\\n Metadata: ${JSON.stringify(this.metadata)}`,\n );\n }\n\n toJSON() {\n return {\n id: this.id,\n message: this.message,\n metadata: this.metadata,\n code: this.code,\n cause:\n this.cause ?\n 'toJSON' in this.cause ?\n this.cause\n : String(this.cause)\n : undefined,\n };\n }\n}\n\nexport class NormalizedErrorWithMetadata<\n M extends ValidErrorMetadata,\n T = string,\n> extends NormalizedError<T> {\n metadata: M;\n\n constructor(\n props:\n | {\n id: T;\n message: string;\n metadata: M;\n cause?: Error;\n }\n | {\n error: NormalizedError<T>;\n metadata: M;\n },\n ) {\n if ('error' in props) {\n super({\n id: props.error.id,\n message: props.error.message,\n cause: props.error.cause,\n });\n this.metadata = props.metadata;\n this.stack = props.error.stack;\n } else {\n super(props);\n this.metadata = props.metadata;\n }\n }\n}\n\nexport function normalizeError(error: unknown): NormalizedError {\n if (error instanceof NormalizedError) return error;\n\n if (typeof error === 'string') {\n return new NormalizedError({\n id: 'unknown',\n message: error,\n });\n }\n\n if (error instanceof Error) {\n return new NormalizedError({\n id: error.name,\n message: error.message,\n cause: error,\n });\n }\n\n if (isObject(error)) {\n return new NormalizedError({\n id: 'id' in error ? String(error.id) : 'unknown',\n message:\n 'message' in error ? String(error.message) : JSON.stringify(error),\n metadata: error,\n });\n }\n\n return new NormalizedError({\n message: JSON.stringify(error),\n id: 'unknown',\n });\n}\n"],"mappings":"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","names":["normalizedErr"]}
|
|
1
|
+
{"version":3,"sources":["../src/rsResult.ts"],"sourcesContent":["import { isObject } from './assertions';\nimport { joinStrings } from './stringUtils';\n\ntype Ok<T> = {\n ok: true;\n error: false;\n value: T;\n};\n\ntype NormalizedErrorResultProps = {\n id: string;\n message: string;\n code?: number;\n metadata?: ValidErrorMetadata;\n};\n\ntype IsExactlyAny<T> =\n boolean extends (T extends never ? true : false) ? true : false;\n\ntype Err<E extends ResultValidErrors> = {\n ok: false;\n error: E;\n errorResult: () => Result<any, E>;\n normalizedErrorResult: (\n normalizedErr: E extends NormalizedError ?\n { withMetadata: ValidErrorMetadata } | NormalizedErrorResultProps\n : NormalizedErrorResultProps,\n ) => Result<any, NormalizedError>;\n};\n\ntype Unwrap<E, T> =\n IsExactlyAny<E> extends true ? any\n : E extends Error ? () => T\n : unknown;\n\ntype ResultMethods<T, E> = {\n /** Returns the value if the result is Ok, otherwise returns null */\n unwrapOrNull: () => T | null;\n /** Returns the value if the result is Ok, otherwise returns the provided default value */\n unwrapOr: <R extends T>(defaultValue: R) => T | R;\n unwrap: Unwrap<E, T>;\n};\n\n/**\n * Util for implementing something similar to Result<T, E> in Rust, for better error handling.\n *\n * Usage:\n *\n * @example\n * function doSomething(): Result<string, Error> {\n * if (something) {\n * return ok('success');\n * }\n *\n * return err(new Error('something went wrong'));\n * }\n *\n * const result = doSomething();\n *\n * if (result.ok) {\n * // result.value is a string\n * } else {\n * // result.error is an Error\n * }\n */\nexport type Result<T, E extends ResultValidErrors = NormalizedError> =\n | OkResult<T, E, T>\n | ErrResult<E, T>;\n\nfunction okUnwrapOr<T>(this: Ok<T>) {\n return this.value;\n}\n\ntype OkResult<T, E extends ResultValidErrors, M = any> = Ok<T> &\n ResultMethods<M, E>;\n\ntype ResultValidErrors = Error | Record<string, unknown> | string[];\n\nfunction ok(): OkResult<void, any>;\nfunction ok<T>(value: T): OkResult<T, any>;\nfunction ok(value: any = undefined): OkResult<any, any> {\n return {\n ok: true,\n error: false,\n value,\n unwrapOrNull: okUnwrapOr,\n unwrapOr: okUnwrapOr,\n unwrap: okUnwrapOr,\n };\n}\n\ntype ErrResult<E extends ResultValidErrors, T = any> = Err<E> &\n ResultMethods<T, E>;\n\nfunction err<E extends ResultValidErrors>(error: E): ErrResult<E> {\n return {\n ok: false,\n error,\n unwrapOrNull: () => null,\n unwrapOr: (defaultValue) => defaultValue,\n errorResult() {\n return err(error);\n },\n normalizedErrorResult(normalizedErr) {\n return err(\n 'withMetadata' in normalizedErr && error instanceof NormalizedError ?\n new NormalizedErrorWithMetadata({\n error,\n metadata: {\n ...error.metadata,\n ...normalizedErr.withMetadata,\n },\n })\n : new NormalizedError({\n id: (normalizedErr as NormalizedErrorResultProps).id,\n message: (normalizedErr as NormalizedErrorResultProps).message,\n code: (normalizedErr as NormalizedErrorResultProps).code,\n cause: error instanceof Error ? error : undefined,\n }),\n );\n },\n unwrap: (() => {\n throw error;\n }) as any,\n };\n}\n\nfunction normalizedUnknownErr(error: unknown) {\n return err(normalizeError(error));\n}\n\nfunction normalizedErr(message: string): ErrResult<NormalizedError>;\nfunction normalizedErr<T extends string>(\n id: T,\n message: string,\n): ErrResult<NormalizedError<T>>;\nfunction normalizedErr<T extends string>(errorProps: {\n id: T;\n message: string;\n code?: number;\n cause?: Error;\n metadata?: ValidErrorMetadata;\n}): ErrResult<NormalizedError<T>>;\nfunction normalizedErr(\n idOrMessageOrErr:\n | string\n | {\n id: string;\n message: string;\n code?: number;\n metadata?: ValidErrorMetadata;\n cause?: Error;\n },\n message?: string,\n): ErrResult<NormalizedError> {\n if (typeof idOrMessageOrErr === 'object') {\n return err(\n new NormalizedError({\n id: idOrMessageOrErr.id,\n message: idOrMessageOrErr.message,\n code: idOrMessageOrErr.code,\n cause: idOrMessageOrErr.cause,\n metadata: idOrMessageOrErr.metadata,\n }),\n );\n }\n\n if (message !== undefined) {\n return err(\n new NormalizedError({\n id: idOrMessageOrErr,\n message,\n }),\n );\n }\n\n return err(\n new NormalizedError({\n id: 'unknown',\n message: idOrMessageOrErr,\n }),\n );\n}\n\n/** Unwraps a promise result */\nasync function unwrap<T>(result: Promise<Result<T, Error>>): Promise<T> {\n const unwrapped = await result;\n\n if (unwrapped.ok) {\n return unwrapped.value;\n }\n\n throw unwrapped.error;\n}\n\nexport const Result = {\n ok,\n err,\n normalizedErr,\n normalizedUnknownErr,\n unwrap,\n};\n\n/** transfor a function in a result function */\nexport function resultify<T, E extends ResultValidErrors = NormalizedError>(\n fn: () => T,\n errorNormalizer?: (err: unknown) => E,\n): Result<T, E> {\n try {\n return ok(fn());\n } catch (error) {\n return err(\n errorNormalizer ?\n errorNormalizer(error)\n : (normalizeError(error) as unknown as E),\n );\n }\n}\n\n/** transform a async function in a result function */\nexport async function asyncResultify<T, E extends Error = NormalizedError>(\n fn: () => Promise<T>,\n errorNormalizer?: (err: unknown) => E,\n): Promise<Result<Awaited<T>, E>> {\n try {\n return ok(await fn());\n } catch (error) {\n return err(\n errorNormalizer ?\n errorNormalizer(error)\n : (normalizeError(error) as unknown as E),\n );\n }\n}\n\nexport type ValidErrorMetadata = Record<string, unknown> | undefined;\n\nlet normalizedErrorSideEffects:\n | ((normalizedError: NormalizedError) => void)\n | undefined = undefined;\n\nexport function setNormalizedErrorSideEffects(\n callback: (normalizedError: NormalizedError) => void,\n) {\n normalizedErrorSideEffects = callback;\n}\n\nexport class NormalizedError<T = string> extends Error {\n id: T;\n metadata?: ValidErrorMetadata;\n cause?: Error;\n code: number;\n\n constructor({\n id,\n message,\n metadata,\n cause,\n code = 0,\n }: {\n id: T;\n message: string;\n metadata?: ValidErrorMetadata;\n cause?: Error;\n code?: number;\n }) {\n super(message);\n this.id = id;\n this.name = 'NormalizedError';\n this.metadata = metadata;\n this.cause = cause;\n this.code = code;\n\n setTimeout(() => {\n if (normalizedErrorSideEffects) {\n normalizedErrorSideEffects(this as NormalizedError);\n }\n }, 1);\n }\n\n toString() {\n return joinStrings(\n !!this.code && `${this.code}#`,\n String(this.id),\n `: ${this.message}`,\n !!this.cause && `\\n Caused by: ${this.cause}`,\n !!this.metadata && `\\n Metadata: ${JSON.stringify(this.metadata)}`,\n );\n }\n\n toJSON() {\n return {\n id: this.id,\n message: this.message,\n metadata: this.metadata,\n code: this.code,\n cause:\n this.cause ?\n 'toJSON' in this.cause ?\n this.cause\n : String(this.cause)\n : undefined,\n };\n }\n}\n\nexport class NormalizedErrorWithMetadata<\n M extends ValidErrorMetadata,\n T = string,\n> extends NormalizedError<T> {\n metadata: M;\n\n constructor(\n props:\n | {\n id: T;\n message: string;\n metadata: M;\n cause?: Error;\n }\n | {\n error: NormalizedError<T>;\n metadata: M;\n },\n ) {\n if ('error' in props) {\n super({\n id: props.error.id,\n message: props.error.message,\n cause: props.error.cause,\n });\n this.metadata = props.metadata;\n this.stack = props.error.stack;\n } else {\n super(props);\n this.metadata = props.metadata;\n }\n }\n}\n\nexport function normalizeError(error: unknown): NormalizedError {\n if (error instanceof NormalizedError) return error;\n\n if (typeof error === 'string') {\n return new NormalizedError({\n id: 'unknown',\n message: error,\n });\n }\n\n if (error instanceof Error) {\n return new NormalizedError({\n id: error.name,\n message: error.message,\n cause: error,\n });\n }\n\n if (isObject(error)) {\n return new NormalizedError({\n id: 'id' in error ? String(error.id) : 'unknown',\n message:\n 'message' in error ? String(error.message) : JSON.stringify(error),\n metadata: error,\n });\n }\n\n return new NormalizedError({\n message: JSON.stringify(error),\n id: 'unknown',\n });\n}\n"],"mappings":"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","names":["normalizedErr"]}
|
package/dist/rsResult.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ type ResultMethods<T, E> = {
|
|
|
27
27
|
unwrap: Unwrap<E, T>;
|
|
28
28
|
};
|
|
29
29
|
type OkResult<T, E extends ResultValidErrors, M = any> = Ok<T> & ResultMethods<M, E>;
|
|
30
|
-
type ResultValidErrors = Error | Record<string, unknown> | [
|
|
30
|
+
type ResultValidErrors = Error | Record<string, unknown> | string[];
|
|
31
31
|
declare function ok(): OkResult<void, any>;
|
|
32
32
|
declare function ok<T>(value: T): OkResult<T, any>;
|
|
33
33
|
type ErrResult<E extends ResultValidErrors, T = any> = Err<E> & ResultMethods<T, E>;
|
package/dist/rsResult.js
CHANGED
package/dist/runShellCmd.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ type RunCmdOptions = {
|
|
|
12
12
|
throwOnError?: boolean;
|
|
13
13
|
};
|
|
14
14
|
declare function runCmd(label: string | null, command: string | string[], { mock, silent, throwOnError, cwd }?: RunCmdOptions): Promise<CmdResult>;
|
|
15
|
-
declare function concurrentCmd(label: string, cmd: string, onResult: (result: CmdResult) => void): Promise<() => void>;
|
|
15
|
+
declare function concurrentCmd(label: string, cmd: string | string[], onResult: (result: CmdResult) => void): Promise<() => void>;
|
|
16
16
|
declare function runCmdUnwrap(label: string | null, command: string | string[], { silent, }?: {
|
|
17
17
|
silent?: boolean | 'timeOnly';
|
|
18
18
|
}): Promise<string>;
|
package/dist/runShellCmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/runShellCmd.ts"],"sourcesContent":["/* eslint-disable no-console -- we need console here to print errors */\n\ntype CmdResult = {\n label: string | null;\n out: string;\n error: boolean;\n stdout: string;\n stderr: string;\n};\n\nimport { spawn } from 'child_process';\n\n(process.env as any).FORCE_COLOR = true;\n\ntype RunCmdOptions = {\n mock?: CmdResult;\n silent?: boolean | 'timeOnly';\n cwd?: string;\n throwOnError?: boolean;\n};\n\nexport function runCmd(\n label: string | null,\n command: string | string[],\n { mock, silent, throwOnError, cwd = process.cwd() }: RunCmdOptions = {},\n): Promise<CmdResult> {\n if (mock) return Promise.resolve(mock);\n\n if (label && (!silent || silent === 'timeOnly')) {\n console.log(`----${label}----`);\n console.time('✅');\n }\n\n return new Promise((resolve) => {\n const [cmd = '', ...args] =\n Array.isArray(command) ?\n command.flatMap((item) =>\n item.startsWith('$') ? item.replace('$', '').split(' ') : item,\n )\n : command.split(' ');\n const child = spawn(cmd, args, {\n cwd,\n });\n\n let stdout = '';\n let stderr = '';\n let out = '';\n\n child.stdout.on('data', (data) => {\n stdout += String(data);\n out += String(data);\n\n if (!silent) {\n console.log(String(data));\n }\n });\n\n child.stderr.on('data', (data) => {\n stderr += String(data);\n out += String(data);\n\n if (!silent) {\n console.log(String(data));\n }\n });\n\n child.on('close', (code) => {\n const hasError = code !== 0;\n\n if (!silent || silent === 'timeOnly') {\n if (!hasError) {\n console.timeEnd('✅');\n }\n\n console.log('\\n');\n }\n\n if (throwOnError && hasError) {\n if (silent) {\n if (label) {\n console.log(`----${label}----`);\n } else {\n console.trace();\n }\n console.error(stderr);\n }\n\n process.exit(1);\n }\n\n resolve({ label, out, stderr, stdout, error: hasError });\n });\n });\n}\n\nexport async function concurrentCmd(\n label: string,\n cmd: string,\n onResult: (result: CmdResult) => void,\n) {\n const start = Date.now();\n\n const result = await runCmd(label, cmd, { silent: true });\n\n onResult(result);\n\n const elapsedSeconds = (Date.now() - start) / 1000;\n\n console.log(\n `${result.error ? '🔴' : '✅'} ${result.label} (${elapsedSeconds.toFixed(\n 1,\n )}s)`,\n );\n\n return () => {\n if (result.error) {\n console.log(`❌ ${result.label} errors:`);\n console.log(result.out);\n console.log('\\n');\n }\n };\n}\n\nexport async function runCmdUnwrap(\n label: string | null,\n command: string | string[],\n {\n silent,\n }: {\n silent?: boolean | 'timeOnly';\n } = {},\n) {\n return (await runCmd(label, command, { silent, throwOnError: true })).stdout;\n}\n\nexport function runCmdSilent(command: string | string[]) {\n return runCmd(null, command, { silent: true });\n}\n\nexport function runCmdSilentUnwrap(command: string | string[]) {\n return runCmdUnwrap(null, command, { silent: true });\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/runShellCmd.ts"],"sourcesContent":["/* eslint-disable no-console -- we need console here to print errors */\n\ntype CmdResult = {\n label: string | null;\n out: string;\n error: boolean;\n stdout: string;\n stderr: string;\n};\n\nimport { spawn } from 'child_process';\n\n(process.env as any).FORCE_COLOR = true;\n\ntype RunCmdOptions = {\n mock?: CmdResult;\n silent?: boolean | 'timeOnly';\n cwd?: string;\n throwOnError?: boolean;\n};\n\nexport function runCmd(\n label: string | null,\n command: string | string[],\n { mock, silent, throwOnError, cwd = process.cwd() }: RunCmdOptions = {},\n): Promise<CmdResult> {\n if (mock) return Promise.resolve(mock);\n\n if (label && (!silent || silent === 'timeOnly')) {\n console.log(`----${label}----`);\n console.time('✅');\n }\n\n return new Promise((resolve) => {\n const [cmd = '', ...args] =\n Array.isArray(command) ?\n command.flatMap((item) =>\n item.startsWith('$') ? item.replace('$', '').split(' ') : item,\n )\n : command.split(' ');\n const child = spawn(cmd, args, {\n cwd,\n });\n\n let stdout = '';\n let stderr = '';\n let out = '';\n\n child.stdout.on('data', (data) => {\n stdout += String(data);\n out += String(data);\n\n if (!silent) {\n console.log(String(data));\n }\n });\n\n child.stderr.on('data', (data) => {\n stderr += String(data);\n out += String(data);\n\n if (!silent) {\n console.log(String(data));\n }\n });\n\n child.on('close', (code) => {\n const hasError = code !== 0;\n\n if (!silent || silent === 'timeOnly') {\n if (!hasError) {\n console.timeEnd('✅');\n }\n\n console.log('\\n');\n }\n\n if (throwOnError && hasError) {\n if (silent) {\n if (label) {\n console.log(`----${label}----`);\n } else {\n console.trace();\n }\n console.error(stderr);\n }\n\n process.exit(1);\n }\n\n resolve({ label, out, stderr, stdout, error: hasError });\n });\n });\n}\n\nexport async function concurrentCmd(\n label: string,\n cmd: string | string[],\n onResult: (result: CmdResult) => void,\n) {\n const start = Date.now();\n\n const result = await runCmd(label, cmd, { silent: true });\n\n onResult(result);\n\n const elapsedSeconds = (Date.now() - start) / 1000;\n\n console.log(\n `${result.error ? '🔴' : '✅'} ${result.label} (${elapsedSeconds.toFixed(\n 1,\n )}s)`,\n );\n\n return () => {\n if (result.error) {\n console.log(`❌ ${result.label} errors:`);\n console.log(result.out);\n console.log('\\n');\n }\n };\n}\n\nexport async function runCmdUnwrap(\n label: string | null,\n command: string | string[],\n {\n silent,\n }: {\n silent?: boolean | 'timeOnly';\n } = {},\n) {\n return (await runCmd(label, command, { silent, throwOnError: true })).stdout;\n}\n\nexport function runCmdSilent(command: string | string[]) {\n return runCmd(null, command, { silent: true });\n}\n\nexport function runCmdSilentUnwrap(command: string | string[]) {\n return runCmdUnwrap(null, command, { silent: true });\n}\n"],"mappings":"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","names":[]}
|