### Table of Contents
- [syncGlob](#syncglob)
- [NotifyCallback](#notifycallback)
- [CloseFunc](#closefunc)
- [copyFile](#copyfile)
- [copyDir](#copydir)
- [remove](#remove)
- [TransformFunc](#transformfunc)
- [isGlob](#isglob)
- [resolveTarget](#resolvetarget)
- [ResolveTargetFunc](#resolvetargetfunc)
- [sourcesBases](#sourcesbases)
- [trimQuotes](#trimquotes)
## syncGlob
Synchronise files, directories and/or glob patterns, optionally watching for changes.
**Parameters**
- `sources` **([string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) \| [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>)** A list of files, directories and/or glob patterns.
- `target` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** The destination directory.
- `options` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)?** An optional configuration object.
- `options.watch` **bool?** Enable or disable watch mode. (optional, default `false`)
- `options.delete` **bool?** Whether to delete the `target`'s content initially. (optional, default `true`)
- `options.depth` **bool?** Chokidars `depth` (If set, limits how many levels of subdirectories will be traversed). (optional, default `Infinity`)
- `options.transform` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)?** A module path resolved by node's `require`. (optional, default `false`)
- `notify` **[NotifyCallback](#notifycallback)?** An optional notification callback.
Returns **[CloseFunc](#closefunc)** Returns a close function which cancels active promises and watch mode.
## NotifyCallback
This callback notifies you about various steps, like:
- **copy:** File or directory has been copied to `target`.
- **remove:** File or directory has been removed from `target`.
- **no-delete:** No initial deletion of `target`s contents.
- **mirror:** Initial copy of all `sources` to `target` done.
- **watch:** Watch mode has started.
- **error:** Any error which may occurred during program execution.
Type: [Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)
**Parameters**
- `type` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** The type of notification.
- `args` **...any** Event specific variadic arguments.
## CloseFunc
A cleanup function which cancels all active promises and closes watch mode if enabled.
Type: [function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)
## copyFile
Copy file from `source` to `target`.
**Parameters**
- `source` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** A file to be copied.
- `target` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** A destination path where to copy.
- `transform` **[TransformFunc](#transformfunc)?** Optional transformation function.
Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)**
## copyDir
Copy a directory from `source` to `target` (w/o contents).
**Parameters**
- `source` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** A directory to be copied.
- `target` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** A destination path where to copy.
Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)**
## remove
Remove a file or directory.
**Parameters**
- `fileordir` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** The file or directory to remove.
Returns **[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)**
## TransformFunc
A custom function which transforms a given `file` contents and/or `target`.
Type: [function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)
**Parameters**
- `file` **File** A file object obtained by `fs.readFile`.
- `target` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** The destination where to copy this `file`.
Returns **(File | {data: File, target: [string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)})** Returns the transformed `file` and/or renamed `target`.
## isGlob
Determines whether a provided string contains a glob pattern.
**Parameters**
- `str` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** The string to test for glob patterns.
Returns **[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)** Returns the index of the first glob pattern or `-1` if it is not a glob.
## resolveTarget
Determines the target structure by resolving a given `source` against a list of base paths.
**Parameters**
- `bases` **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>** An array of base paths.
Returns **[ResolveTargetFunc](#resolvetargetfunc)** Returns an `source` to `target` resolving function.
## ResolveTargetFunc
A function which resolves a given `source` to a given `target` based on list of base paths.
Type: [function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)
**Parameters**
- `source` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** A file or dir to be resolved against a list of base paths.
- `target` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** A destination folder where to append the diff of `source` and `bases`.
Returns **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Returns an expanded `target`.
## sourcesBases
Determine the base paths of `sources` like:
- **files:** `foo/bar.txt` -> `foo`
- **directories:** `foo/bar/` -> `foo/bar`
- **globs:** `foo/*` -> `foo`
**Parameters**
- `sources` **([string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) \| [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>)** One or more files, directors or glob patterns.
Returns **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>** Returns the base paths of `sources`.
## trimQuotes
Trim quotes of a given string.
**Parameters**
- `str` **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** A string.
Returns **[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)** Returns `str`, but trimmed from quotes like `'`, `"`.