https://github.com/playform/pipe
Pipe 🧪
https://github.com/playform/pipe
file files javascript pipe playform processing typescript
Last synced: 10 months ago
JSON representation
Pipe 🧪
- Host: GitHub
- URL: https://github.com/playform/pipe
- Owner: PlayForm
- License: cc0-1.0
- Created: 2023-08-08T03:09:48.000Z (over 2 years ago)
- Default Branch: Current
- Last Pushed: 2025-07-10T01:09:55.000Z (10 months ago)
- Last Synced: 2025-07-10T04:24:31.489Z (10 months ago)
- Topics: file, files, javascript, pipe, playform, processing, typescript
- Language: TypeScript
- Homepage: https://NPMJS.Org/@playform/pipe
- Size: 2.94 MB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# 🧪 [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.