1.1.7 • Published 8 months ago

@eljs/utils v1.1.7

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

@eljs/utils

Collection of nodejs utility.

Installation

$ pnpm add @eljs/utils
// or
$ yarn add @eljs/utils
// or
$ npm i @eljs/utils -S

Usage

import utils from '@eljs/utils'

API

File

readFile(file: string, encoding?: BufferEncoding): Promise<string>

Read a single file content asynchronously.

readFileSync(file: string, encoding?: BufferEncoding): string

Read a single file content synchronously.

readJson<T extends object>(file: string): Promise<T>

Read a single json file asynchronously.

readJsonSync<T extends object>(file: string): T

Read a single json file synchronously.

writeFile(file: string, content: string, encoding?: BufferEncoding): Promise<void>

Write content to a single file asynchronously.

writeFileSync(file: string, content: string, encoding?: BufferEncoding): void

Write content to a single file synchronously.

safeWriteFile(file: string, content: string, encoding?: BufferEncoding): Promise<void>

Safe write content to a single file asynchronously.

safeWriteFileSync(file: string, content: string, encoding?: BufferEncoding): void

Safe write content to a single file synchronously.

writeJsonFile(file: string, content: string): Promise<void>

Write json to a single file asynchronously.

writeJsonFileSync(file: string, content: string): void

Write json to a single file synchronously.

safeWriteJson(file: string, content: string): Promise<void>

Safe write json to a single file asynchronously.

safeWriteJsonSync(file: string, content: string): void

Safe write json to a single file synchronously.

copyFile(from: string, to: string, options?: CopyFileOptions): Promise<void>

Copy a file asynchronously.

copyFileSync(from: string, to: string, options?: CopyFileOptions): void

Copy a file synchronously.

copyTpl(from: string, to: string, data: Record<string, any>, options?: CopyFileOptions): Promise<void>

Copy a template asynchronously.

copyTplSync(from: string, to: string, data: Record<string, any>, options?: CopyFileOptions): void

Copy a template synchronously.

copyDirectory(from: string, to: string, data: Record<string, any>, options: CopyFileOptions): Promise<void>

Copy a directory asynchronously.

copyDirectorySync(from: string, to: string, data: Record<string, any>, options: CopyFileOptions): void

Copy a directory synchronously.

move(from: string, to: string, overwrite?: boolean): Promise<void>

Move a directory or file asynchronously.

moveSync(from: string, to: string, overwrite?: boolean): void

Move a directory or file synchronously.

remove(path: string): Promise<boolean>

Remove directory or file asynchronously.

removeSync(path: string): boolean

Remove directory or file synchronously.

mkdir(path: string, mode?: number | string): Promise<string | void | undefined>

Create a directory asynchronously.

mkdirSync(path: string, mode?: number | string): string | void | undefined

Create a directory synchronously.

tmpdir(random?: boolean): Promise<string>

tmpdir(dirname: string, random?: boolean): Promise<string>

Create a temporary directory asynchronously.

tmpdirSync(random?: boolean): string

tmpdirSync(dirname: string, random?: boolean): string

Create a temporary directory synchronously.

isFile(file: string): Promise<Boolean>

Whether the path is file asynchronously.

isFileSync(file: string): Boolean

Whether the path is file synchronously.

isDirectory(path: string): Promise<Boolean>

Whether the path is directory asynchronously.

isDirectorySync(path: string): Boolean

Whether the path is directory synchronously.

isSymlink(link: string): Promise<Boolean>

Whether the file is symlink asynchronously.

isSymlinkSync(link: string): Boolean

Whether the file is symlink synchronously.

isPathExists(file: string): Promise<Boolean>

Whether the path is exist asynchronously.

isPathExistsSync(file: string): Boolean

Whether the path is exist synchronously.

loadJs<T>(path: string): Promise<T>

Load js file asynchronously.

loadJsSync<T>(path: string): T

Load js file synchronously.

loadTs<T>(path: string): Promise<T>

Load ts file asynchronously.

loadTsSync<T>(path: string): T

Load ts file synchronously.

loadYaml<T>(path: string): Promise<T>

Load yaml file asynchronously.

loadYamlSync<T>(path: string): T

Load yaml file synchronously.

renderTemplate(template: string, data: Record<string, unknown>, options?: RenderTemplateOptions): string

Render template file.

Logger

logger.log(message: string, tag?: string): void

logger.event(message: string): void

logger.info(message: string): void

logger.warn(message: string): void

logger.error(message: string): void

logger.fatal(message: string): void

logger.wait(message: string): void

logger.ready(message: string): void

logger.printErrorAndExit(message: string): void

logger.step(name: string): (message: string) => void

logger.step(name: string, message: string): void

Logger in different level。

logger.clear(message: string): void

Clear the stdout.

ChildProcess

parseCommand(command: string): string[]

Parse string command to arguments.

run(command: string, options?: RunCommandOptions): ExecaChildProcess

run(command: string, args: string[], options?: RunCommandOptions): ExecaChildProcess

runCommand(command: string, options?: RunCommandOptions): ExecaChildProcess

Run shell command.

getExecutableCommand(target: string, dirs?: string[]): Promise<string | null>

Find executable command.

normalizeArgs(args?: string | string[]): string[]

Normalize the command arguments.

getPid(command: string): Promise<number | null>

Get the process id.

sudo(options?: SudoOptions): Promise<void>

sudo(args: string[], options?: SudoOptions): Promise<void>

Execute commands in sudo mode.

Git

downloadGitRepository(url: string, options?: DownloadGitRepositoryOptions): Promise<string>

Download the git repository.

hasGit(): Promise<boolean>

Whether the git exist globally.

hasProjectGit(cwd: string): Promise<boolean>

Whether the git exist project.

isGitClean(options?: RunCommandOptions): Promise<boolean>

Whether the git working tree is clean.

isGitBehindRemote(options?: RunCommandOptions): Promise<boolean>

Whether the git is behind remote.

isGitAheadRemote(options?: RunCommandOptions): Promise<boolean>

Whether the git is ahead remote.

getGitUrl(cwd: string, exact?: boolean): Promise<string>

Get the git url asynchronously.

getGitUrlSync(cwd: string, exact?: boolean): string

Get the git url synchronously.

getGitBranch(options?: RunCommandOptions): Promise<string>

Get the git branch.

getGitUpstreamBranch(options?: RunCommandOptions): Promise<string | null>

Get the git upstream branch.

getGitCommitSha(options?: RunCommandOptions): Promise<string>

getGitCommitSha(short: boolean, options?: RunCommandOptions): Promise<string>

Get the git commit sha.

getGitLatestTag(options?: RunCommandOptions): Promise<string>

getGitLatestTag(match: string, options?: RunCommandOptions): Promise<string>

getGitLatestTag(match: string, args: string[], options?: RunCommandOptions): Promise<string>

Get the git latest tag.

gitUrlAnalysis(url: string): GitRemoteRepository | null

Analysis the git url to git remote repository.

getGitRepository(dir: string, exact?: boolean): Promise<GitRepository | null>

Get the git repository asynchronously.

getGitRepositorySync(dir: string, exact?: boolean): GitRepository | null

Get the git repository synchronously.

getGitUser(): Promise<GitUser>

Get the git user asynchronously.

getGitUserSync(): GitUser

Get the git user synchronously.

getProjectGitDir(dir: string): Promise<string | undefined>

Get the project git dir asynchronously.

getProjectGitDirSync(dir: string): string | undefined

Get the project git dir synchronously.

gitCommit(message: string, options?: RunCommandOptions): Promise<void>

gitCommit(message: string, args: string[], options?: RunCommandOptions): Promise<void>

Git commit message.

gitPush(options?: RunCommandOptions): Promise<void>

gitPush(args: string[], options?: RunCommandOptions): Promise<void>

Git push to remote.

gitTag(tagName: string, options?: RunCommandOptions): Promise<void>

gitTag(tagName: string, args: string[], options?: RunCommandOptions): Promise<void>

Git tag.

Npm

downloadNpmTarball(url: string, options?: DownloadOptions): Promise<string>

downloadNpmTarball(url: string, dest: string, options?: DownloadOptions): Promise<string>

Download the npm tarball.

installDeps(options?: InstallDepsOptions): Promise<void>

installDeps(packageManager: PackageManager, options?: InstallDepsOptions): Promise<void>

Install dependencies.

getNpmRegistry(options?: RunCommandOptions): Promise<string>

Get the npm registry.

getNpmUser(options?: RunCommandOptions): Promise<string>

Get the npm user.

getNpmPackage(name: string, options?: { cwd?: string registry?: string timeout?: number }): Promise<Omit<NpmPackage, 'version'> | null>

getNpmPackage(name: string, options?: { version: string, cwd?: string registry?: string timeout?: number }): Promise<Omit<NpmPackage, 'version'> | null>

Get the npm package.

getNpmPrefix(): Promise<string>

Get the npm prefix.

pkgNameAnalysis(name: string): ResolvedPkgName

Analysis the package name.

getPackageManager(cwd?: string): Promise<PackageManager>

Get the package manager.

Object

deepMerge<T1, T2>(a: Partial<T1>, b: Partial<T2>): T1 & T2

deepMerge<T1, T2, T3>(a: Partial<T1>, b: Partial<T2>, b: Partial<T3>): T1 & T2 & T3

deepMerge<T1, T2, T3, T4>(a: Partial<T1>, b: Partial<T2>, c: Partial<T3>, d: Partial<T4>): T1 & T2 & T3 & T4

deepMerge<T1, T2, T3, T4, T5>(a: Partial<T1>, b: Partial<T2>, c: Partial<T3>, d: Partial<T4>, e: Partial<T5>): T1 & T2 & T3 & T4 & T5

deepMerge<T1, T2, T3, T4, T5, T6>(a: Partial<T1>, b: Partial<T2>, c: Partial<T3>, d: Partial<T4>, e: Partial<T5>, f: Partial<T6>): T1 & T2 & T3 & T4 & T5 & T6

Deep merge objects.

Path

winPath(path: string): string

Resolve windows path.

getWorkspaceRoot(cwd: string): Promise<string>

Get the workspace root.

getWorkspaces(cwd: string, relative = false): Promise<string[]>

Get the project workspaces.

getPnpmWorkspaceRoot(cwd: string): Promise<string>

Get the workspace root of pnpm.

getYarnWorkspaceRoot(cwd: string): Promise<string>

Get the workspace root of yarn.

getLernaWorkspaceRoot(cwd: string): Promise<string>

Get the workspace root of lerna.

getNpmWorkspaceRoot(cwd: string): Promise<string>

Get the workspace root of npm.

getBunWorkspaceRoot(cwd: string): Promise<string>

Get the workspace root of bun.

tryPaths(paths: string[]): Promise<string | undefined>

Get the existing path asynchronously.

tryPathsSync(paths: string[]): Promise<string | undefined>

Get the existing path synchronously.

extractCallDir(stack?: number): string

Extract the directory where the code is executed.

Promise

new Deferred<T>(): Deferred

Create a deferred.

deferred.promise: Promise

Waiting promise.

deferred.resolve: (value: T | PromiseLike<T>) => void

Resolve the promise.

deferred.reject: (err: unknown) => void

Reject the promise.

retry<T>(fn: () => Promise<T>, retries?: number, delay?: number): Promise<T>

Retrying a task.

retryWithValue<T>(fn: () => MaybePromiseFunction<T>, retries?: number, delay?: number): Promise<T>

Retrying a task until value is not null.

sleep(ms: number): Promise<void>

Sleep for specified milliseconds.

timeout<T>(promise: Promise<T>, ms: number, message?: string): Promise<T>

Throw error when timeout.

String

camelCase(str: string): string

Convert to camelCase.

pascalCase(str: string): string

Convert to pascalCase.

kebabCase(str: string): string

Convert to kebabCase.

stripBlankLines(str: string): string

Strip the blank lines.

Type

isPromise(target: unknown): boolean

Whether the target is promise.

isGenerator(target: unknown): boolean

Whether the target is generator function.

isAsyncFunction(target: unknown): boolean

Whether the target is async function.

isESModule(target: unknown): boolean

Whether the target is es module.

0.32.0

1 year ago

1.1.1

10 months ago

1.1.0

11 months ago

1.1.7

8 months ago

1.1.6

8 months ago

1.1.5

9 months ago

1.1.4

9 months ago

1.1.3

10 months ago

1.1.2

10 months ago

0.33.3

11 months ago

0.33.2

11 months ago

0.33.1

11 months ago

0.33.0

11 months ago

1.0.0

11 months ago

1.0.0-next.11

11 months ago

1.0.0-next.10

11 months ago

1.0.0-next.0

11 months ago

1.0.0-next.1

11 months ago

1.0.0-next.2

11 months ago

0.30.0

1 year ago

1.0.0-beta.10

11 months ago

1.0.0-next.3

11 months ago

1.0.0-next.4

11 months ago

1.0.0-next.5

11 months ago

1.0.0-next.6

11 months ago

1.0.0-next.7

11 months ago

1.0.0-next.8

11 months ago

1.0.0-next.9

11 months ago

1.0.0-beta.2

11 months ago

1.0.0-beta.3

11 months ago

0.31.0

1 year ago

1.0.0-beta.4

11 months ago

1.0.0-beta.5

11 months ago

1.0.0-beta.0

11 months ago

1.0.0-beta.1

11 months ago

1.0.0-beta.6

11 months ago

1.0.0-beta.7

11 months ago

1.0.0-beta.8

11 months ago

1.0.0-beta.9

11 months ago

0.29.0

1 year ago

0.29.1

1 year ago

0.28.0

1 year ago

0.20.0

2 years ago

0.19.0

2 years ago

0.27.0

1 year ago

0.25.2

1 year ago

0.25.1

1 year ago

0.23.1

2 years ago

0.23.0

2 years ago

0.21.1

2 years ago

0.21.0

2 years ago

0.26.3

1 year ago

0.26.2

1 year ago

0.26.1

1 year ago

0.26.0

1 year ago

0.24.0

2 years ago

0.22.0

2 years ago

0.15.0

3 years ago

0.15.1

3 years ago

0.17.0

2 years ago

0.15.2-beta.0

3 years ago

0.14.0

3 years ago

0.14.1

3 years ago

0.16.0

3 years ago

0.16.1

3 years ago

0.18.0

2 years ago

0.12.0-beta.3

3 years ago

0.12.0-beta.2

3 years ago

0.11.4-beta.0

3 years ago

0.12.0

3 years ago

0.13.0

3 years ago

0.11.3

3 years ago

0.12.0-beta.1

3 years ago

0.12.0-beta.0

3 years ago

0.9.3-beta.0

3 years ago

0.9.3

3 years ago

0.11.0

3 years ago

0.11.1

3 years ago

0.11.2

3 years ago

0.10.0-beta.0

3 years ago

0.10.0-beta.1

3 years ago

0.10.0

3 years ago

0.9.3-beta.1

3 years ago

0.9.3-beta.2

3 years ago

0.9.2

3 years ago

0.9.2-beta.5

3 years ago

0.9.2-beta.4

3 years ago

0.9.2-beta.3

3 years ago

0.9.2-beta.2

3 years ago

0.9.2-beta.1

3 years ago

0.9.2-beta.0

3 years ago

0.9.1

3 years ago

0.9.0

3 years ago

0.8.0

3 years ago

0.8.0-beta.7

3 years ago

0.8.0-beta.6

3 years ago

0.8.0-beta.5

3 years ago

0.8.0-beta.4

3 years ago

0.8.0-beta.3

3 years ago

0.8.0-beta.2

3 years ago

0.8.0-beta.1

3 years ago

0.8.0-beta.0

3 years ago

0.7.5

3 years ago

0.7.4

3 years ago