@adonisjs/sink
- Version 5.4.3
- Published
- 118 kB
- 10 dependencies
- MIT license
Install
npm i @adonisjs/sink
yarn add @adonisjs/sink
pnpm add @adonisjs/sink
Overview
AdonisJS sink is a swiss knife for managing project files by applying minimal changes, inferring formatting from EditorConfig file and comes with specialized tasks for different file formats and file types.
Index
Variables
variable sinkVersion
const sinkVersion: string;
Sharing the sink version, since sink is mainly passed as a reference by the cli
Functions
function getPrompt
getPrompt: () => PromptContract;
Returns a new instance of prompt. Also we lazy load the prompts
Namespaces
namespace files
module 'src/Files/index.d.ts' {}
class AdonisRcFile
class AdonisRcFile extends JsonFile {}
Exposes API to mutate the contents of
.adonisrc.json
file.
constructor
constructor(basePath: string);
method addAceProvider
addAceProvider: (provider: string) => void;
Add new providers to the ace providers array
method addCommand
addCommand: (commandPath: string) => void;
Add new commands to the commands array
method addMetaFile
addMetaFile: (filePath: string, reloadServer?: boolean) => void;
Add custom file to
metaFiles
array.
method addProvider
addProvider: (provider: string) => void;
Add new providers to the providers array
method addTestProvider
addTestProvider: (provider: string) => void;
Add new providers to the test providers array
method onset
onset: (lifecycle: string, body: any) => true | undefined;
Handle
preloads
in a custom way on rollback, since themrm-core
useslodash.unset
which replaces the array index value withnull
and we instead want to remove the index value completely.
method setAlias
setAlias: (namespace: string, autoloadPath: string) => this;
Set IoC container aliases
method setDirectory
setDirectory: (key: string, value: string) => this;
Set custom directory
method setExceptionHandler
setExceptionHandler: (namespace: string) => this;
Set the exception handler namespace.
method setPreload
setPreload: ( filePath: string, environment?: AppEnvironments[], optional?: boolean) => this;
Set the preload file to the
.adonisrc.json
file.
class EnvFile
class EnvFile {}
Exposes the API to run mutations on
.env
file. The same variables will be added to.env.example
with empty contents.
constructor
constructor(basePath: string);
method commit
commit: () => void;
Commit mutations
method exists
exists: () => boolean;
Returns a boolean telling if the file exists.
method get
get: () => { [key: string]: string };
Returns a key/value pair of the file contents.
method rollback
rollback: () => void;
Rollback mutations
method set
set: (key: string, value: any) => this;
Set key/value pair inside the
.env
file
method unset
unset: (key: string) => this;
Unset a key/value pair from the
.env
and.env.example
file
class File
abstract class File {}
Base file exposes the API to add action and
cd
in/out from the application base directory.
constructor
constructor(basePath: string);
property actions
protected abstract actions: { action: string; body?: any }[];
method addAction
protected addAction: (action: string, body?: any) => void;
Add a new action to the actions stack. The action workings are independent on the user adding the action
method cdIn
protected cdIn: () => void;
cd
to the application base path
method cdOut
protected cdOut: () => void;
cd
out from the application base path
method getCommitActions
protected getCommitActions: () => { action: string; body?: any }[];
Returns an array of actions to commit
method getRevertActions
protected getRevertActions: () => { action: string; body?: any }[];
Returns an array of actions for performing revert. Since reverts are done in reverse, this method will reverse the actions array.
class IniFile
class IniFile extends KeyValuePair {}
Ini file to work with files like
.editorconfig
.const ini = new Ini(__dirname, '.editorconfig')ini.set('_global', { root: true })ini.set('**.js', { insert_final_newline: true })ini.commit()
constructor
constructor(basePath: string, filename: string);
property filePointer
filePointer: any;
method merge
merge: (section: string, values: any) => this;
Merge to the section values of an ini file.
Example 1
ini.merge('root', { indent_style: space })
method onmerge
onmerge: (lifecycle: string, body: any) => true | undefined;
Handling the onmerge action. This method is called by the
commit
method.
class JsonFile
class JsonFile extends KeyValuePair {}
Exposes the API to work with JSON files.
const json = new JsonFile(__dirname, 'tsconfig.json')json.set('compilerOptions.lib', ['es2017'])json.commit()
constructor
constructor(basePath: string, filename: string);
property filePointer
filePointer: any;
class KeyValuePair
abstract class KeyValuePair extends File {}
Exposes the API to work with key/value pair files like
ini
,yaml
andjson
.
constructor
constructor(basePath: string);
property actions
protected actions: never[];
property filePointer
abstract filePointer: any;
Only these key-value pair files are supported
method commit
commit: () => void;
Commit mutations
method delete
delete: () => this;
Remove file
method exists
exists: () => boolean;
A boolean telling if the file already exists
method get
get: { (): any; (address: string | string[], defaultValue?: any): any };
Returns value for a given key from the file
method rollback
rollback: () => void;
Rollback mutations
method set
set: (key: string, value: any) => this;
Set key/value pair
method unset
unset: (key: string) => this;
Unset key/value pair
class MustacheFile
class MustacheFile extends File {}
Exposes the API to generate source files from template files.
constructor
constructor(basePath: string, filename: string, templatePath: string);
property actions
protected actions: never[];
property filePointer
filePointer: any;
property overwrite
overwrite: boolean;
property removeOnRollback
removeOnRollback: boolean;
method apply
apply: (contents?: any) => this;
Apply contents to the template to evaluate it's output
method commit
commit: () => void;
Commit changes
method exists
exists: () => boolean;
A boolean telling if the file already exists
method get
get: () => string;
Returns existing contents for a template file
method partials
partials: (partials: { [key: string]: string }) => this;
Define one or more partials by defining key-value pair of partial name and path to the file.
method rollback
rollback: () => void;
Rollback changes
class NewLineFile
class NewLineFile extends File {}
Base class to work with raw text new line files. For example
.env
file or.gitignore
constructor
constructor(basePath: string, filename: string);
property actions
protected actions: never[];
property filePointer
filePointer: any;
method add
add: (line: string | string[]) => this;
Add one or more new lines
method commit
commit: () => void;
Commit mutations
method delete
delete: () => this;
Delete file
method exists
exists: () => boolean;
A boolean telling if the file already exists
method get
get: () => string[];
Get contents for the file
method remove
remove: (line: string | string[]) => this;
Remove lines matching the give text
method rollback
rollback: () => void;
Rollback mutations
method update
update: (oldText: string, newText: string) => this;
Update existing text with new text
class PackageJsonFile
class PackageJsonFile extends File {}
Exposes the API to work with
package.json
file. The file is same as a standard JSON file, but with some special methods related to package file itself.
constructor
constructor(basePath: string, installerOutput?: StdioOptions);
property actions
protected actions: never[];
Collection of actions to be executed on package file
property filePointer
filePointer: any;
property packages
protected packages: { install: { dependency: string; version: string; dev: boolean }[]; uninstall: { dependency: string; dev: boolean }[];};
A copy of install instructions
method appendScript
appendScript: (name: string, script: string) => this;
Append to existing package.json script
method beforeInstall
beforeInstall: (callback: InstallerNotifier) => this;
Define a function to be called before installing dependencies
method beforeUninstall
beforeUninstall: (callback: InstallerNotifier) => this;
Define a function to be called before uninstalling dependencies
method commit
commit: () => SpawnSyncReturns<Buffer> | undefined;
Commit mutations
method commitAsync
commitAsync: () => Promise<SpawnSyncReturns<Buffer> | undefined>;
Commits async. The files are still written using synchronous API. However, the install and uninstall becomes async.
method delete
delete: () => this;
Remove file
method exists
exists: () => boolean;
A boolean telling if the file already exists
method get
get: { (): any; (address: string | string[], defaultValue?: any): any };
Returns value for a given key from the file
method getInstalls
getInstalls: (dev?: boolean) => Dependencies;
Returns a list of dependencies along with specific versions (if any)
method getUninstalls
getUninstalls: (dev: boolean) => Dependencies;
Returns uninstalls list for prod or development dependencies.
method install
install: (dependency: string, version?: string, dev?: boolean) => this;
Install dependencies
method prependScript
prependScript: (name: string, script: string) => this;
Prepend to existing package.json script
method removeScript
removeScript: (name: string, script?: string | RegExp) => this;
Remove existing script or remove a given action from an existing script
method rollback
rollback: () => SpawnSyncReturns<Buffer> | undefined;
Rollback mutations
method rollbackAsync
rollbackAsync: () => Promise<SpawnSyncReturns<Buffer> | undefined>;
Rollsback async. The files are still written using synchronous API. However, the uninstall becomes async.
method set
set: (key: string, value: any) => this;
Set key/value pair in the package.json file
method setScript
setScript: (name: string, script: string) => this;
Set package.json script
method uninstall
uninstall: (dependency: string, dev?: boolean) => this;
Uninstall dependencies
method unset
unset: (key: string) => this;
Unset key/value pair from the package.json file
method useClient
useClient: (client: SupportedPackageManager) => this;
Set a specific client to be used
method yarn
yarn: (_useYarn: boolean) => this;
Enable/disable use of yarn
Deprecated
The "yarn" method is deprecated. Please use "useClient('yarn')" instead.
class TemplateLiteralFile
class TemplateLiteralFile extends File {}
Exposes the API to generate source files from template files.
constructor
constructor(basePath: string, filename: string, templatePath: string);
property actions
protected actions: never[];
property filePointer
filePointer: any;
property overwrite
overwrite: boolean;
property removeOnRollback
removeOnRollback: boolean;
method apply
apply: (contents?: any) => this;
Apply contents to the template to evaluate it's output
method commit
commit: () => void;
Commit changes
method exists
exists: () => boolean;
A boolean telling if the file already exists
method get
get: () => string;
Returns existing contents for a template file
method rollback
rollback: () => void;
Rollback changes
class YamlFile
class YamlFile extends KeyValuePair {}
Exposes the API to work with Yaml files.
const yaml = new YamlFile(__dirname, '.travis.yml')yaml.set('language', 'node_js')yaml.set('language', [4, 6])yaml.commit()
constructor
constructor(basePath: string, filename: string);
property filePointer
filePointer: any;
namespace tasks
module 'src/Tasks/index.d.ts' {}
class Instructions
class Instructions {}
Exposes the API to execute the instructions of a package, defined inside the
package.json
file.
constructor
constructor( packageName: string, projectRoot: string, application: ApplicationContract, verbose?: boolean);
method execute
execute: () => Promise<boolean>;
Execute the instructions file
method setDisplay
setDisplay: (display: 'browser' | 'terminal') => this;
Preset markdown display for avoiding prompt
method useLogger
useLogger: (logger: any) => this;
Define a custom logger to use
class MarkdownRenderer
class MarkdownRenderer {}
Markdown renderer for opening the instructions md file inside the terminal or the browser.
constructor
constructor(mdFileAbsPath: string, packageName: string);
method renderInBrowser
renderInBrowser: () => Promise<void>;
Converts markdown to HTML and opens it up inside the browser
method renderInTerminal
renderInTerminal: () => Promise<void>;
Writes markdown in the terminal
class TemplatesManager
class TemplatesManager {}
Templates manager to copy one or more templates to the user project.
constructor
constructor( projectRoot: string, templatesSourceDir: string, application: ApplicationContract);
method copy
copy: (templates: { [key: string]: TemplateNode | TemplateNode[];}) => Promise<void>;
Copy multiple templates to the destination. It takes the input of templates defined inside the package.json file.
method useLogger
useLogger: (logger: any) => this;
Define a custom logger to use
namespace utils
module 'src/Utils/index.d.ts' {}
function copyFiles
copyFiles: ( sourceBaseDir: string, destinationBaseDir: string, files: string[], options?: { overwrite: boolean }) => { filePath: string; state: 'skipped' | 'copied' }[];
Utility method to copy files
function getPackageManager
getPackageManager: (appRoot: string) => 'yarn' | 'pnpm' | 'npm';
Returns the package manager in use by checking for the lock files on the disk or by inspecting the "npm_config_user_agent".
Defaults to npm when unable to detect the package manager.
function isEmptyDir
isEmptyDir: (location: string) => boolean;
Returns a boolean telling if a directory is empty or not.
Package Files (21)
- index.d.ts
- src/Files/Base/File.d.ts
- src/Files/Base/KeyValuePair.d.ts
- src/Files/Formats/Ini.d.ts
- src/Files/Formats/Json.d.ts
- src/Files/Formats/Mustache.d.ts
- src/Files/Formats/NewLine.d.ts
- src/Files/Formats/TemplateLiteral.d.ts
- src/Files/Formats/Yaml.d.ts
- src/Files/Special/AdonisRc.d.ts
- src/Files/Special/Env.d.ts
- src/Files/Special/PackageJson.d.ts
- src/Files/index.d.ts
- src/Tasks/Instructions/index.d.ts
- src/Tasks/MarkdownRenderer/index.d.ts
- src/Tasks/TemplatesManager/index.d.ts
- src/Tasks/index.d.ts
- src/Utils/copyFiles.d.ts
- src/Utils/getPackageManager.d.ts
- src/Utils/index.d.ts
- src/Utils/isEmptyDir.d.ts
Dependencies (10)
Dev Dependencies (29)
- @adonisjs/application
- @adonisjs/mrm-preset
- @adonisjs/require-ts
- @japa/assert
- @japa/run-failed-tests
- @japa/runner
- @japa/spec-reporter
- @poppinss/dev-utils
- @types/fs-extra
- @types/ini
- @types/marked
- @types/node
- @types/yaml
- commitizen
- cz-conventional-changelog
- del-cli
- endent
- eslint
- eslint-config-prettier
- eslint-plugin-adonis
- eslint-plugin-prettier
- github-label-sync
- husky
- ini
- mrm
- np
- prettier
- typescript
- yaml
Peer Dependencies (1)
Badge
To add a badge like this oneto your package's README, use the codes available below.
You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/@adonisjs/sink
.
- Markdown[![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/@adonisjs/sink)
- HTML<a href="https://www.jsdocs.io/package/@adonisjs/sink"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>
- Updated .
Package analyzed in 4318 ms. - Missing or incorrect documentation? Open an issue for this package.