UNPKG

@playform/pipe

Version:
134 lines (93 loc) โ€ข 3.02 kB
# ๐Ÿงช [Pipe] `Pipe` allows you to process files in a pipeline, making it easy to perform various operations on them. ### Installationโ€๐Ÿš€ To get started with `Pipe`, follow these steps: Install the `Pipe` package using `npm`: ```sh npm install -D -E @playform/pipe ``` Create a new `Pipe` instance: **`Main.ts`** ```ts await new (await import("@playform/pipe")).default().In("./Input"); ``` ### Getting started With `Pipe`, you can use the `Pipe` method to perform operations on files within the pipe. Here's an example of how to do it with some file writes: **`Main.ts`** ```ts await( await( await new (await import("@playform/pipe")).default().In("./Input"), ).By("**/*.md"), ).Pipe({ // Append some content to all of the text files Wrote: (On) => (On.Buffer += "LICENSE [MIT]"), }); ``` ### Default Callbacks `Pipe` provides default callbacks for file processing. These callbacks can be customized to suit your specific needs. Here are the default callbacks: ```ts await new (await import("@playform/pipe")).default().Pipe({ // Read the file into a buffer Read: async ({ Input }) => await fs.promises.readFile(Input, "utf-8"), // Wrote the buffer into a file Wrote: async ({ Buffer }) => Buffer, // Passed the file through a check Passed: async (On) => On && true, // Failed processing the file Failed: async ({ Input }) => `Error: Cannot process file ${Input}!`, // Accomplished processing the file Accomplished: async ({ Input, Output }) => `Processed ${Input} in ${Output}.`, // Fulfilled the whole plan Fulfilled: async ({ File }) => `Successfully processed a total of ${File} ${ File === 1 ? "file" : "files" }.`, // Changed the plan Changed: async (Plan) => Plan, }); ``` ### Add Multiple Paths You can add multiple paths to your pipe by specifying an array as the `Path` variable: **`Main.ts`** ```ts await new (await import("@playform/pipe")).default().In([ "./Input", "./Input2", ]); ``` ### Input-Output Mapping `Pipe` will allow you to provide a map of paths for different input and output directories, making it easy to control where files are read from and written to: **`Main.ts`** ```ts await new (await import("@playform/pipe")).default().In( new Map([["./Input", "./Output"]]), ); ``` ### File Filtering You can filter files to exclude specific ones from your `Pipe`. Filters can be an array of regular expressions or a single match. You can also use functions to match on file names: **`Main.ts`** ```ts await new (await import("@playform/pipe")).default().Not([ "File.txt", (File: string) => File === "./Input/File.txt", ]); ``` ### Controlling Logging You can control the logging level by setting the `Logger` parameter. The default value is `2`, but you can set it to `0` if you don't want to see debug messages: **`Main.ts`** ```ts new (await import("@playform/pipe")).default(0); ``` [Pipe]: HTTPS://NPMJS.Org/@playform/pipe ## Changelog See [`CHANGELOG.md`](CHANGELOG.md) for a history of changes to this component.