From b1ec86ee2d682fed294eebf86befaf91e280a7d3 Mon Sep 17 00:00:00 2001 From: Philipp Kunz Date: Mon, 1 Apr 2024 17:46:40 +0200 Subject: [PATCH] fix(core): update --- readme.md | 151 +++++++++++++++++++++++++++++---------- ts/00_commitinfo_data.ts | 2 +- 2 files changed, 115 insertions(+), 38 deletions(-) diff --git a/readme.md b/readme.md index 9205507..49833d4 100644 --- a/readme.md +++ b/readme.md @@ -1,49 +1,126 @@ -# @push.rocks/smartfile -smart ways to work with files in nodejs +# SmartFile +> SmartFile offers smart ways to work with files in nodejs. -## Availabililty and Links -* [npmjs.org (npm package)](https://www.npmjs.com/package/@push.rocks/smartfile) -* [gitlab.com (source)](https://gitlab.com/push.rocks/smartfile) -* [github.com (source mirror)](https://github.com/push.rocks/smartfile) -* [docs (typedoc)](https://push.rocks.gitlab.io/smartfile/) +## Install +To install SmartFile, use npm or Yarn as follows: -## Status for master - -Status Category | Status Badge --- | -- -GitLab Pipelines | [![pipeline status](https://gitlab.com/push.rocks/smartfile/badges/master/pipeline.svg)](https://lossless.cloud) -GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/push.rocks/smartfile/badges/master/coverage.svg)](https://lossless.cloud) -npm | [![npm downloads per month](https://badgen.net/npm/dy/@push.rocks/smartfile)](https://lossless.cloud) -Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/push.rocks/smartfile)](https://lossless.cloud) -TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud) -node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) -Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud) -PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@push.rocks/smartfile)](https://lossless.cloud) -PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@push.rocks/smartfile)](https://lossless.cloud) -BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@push.rocks/smartfile)](https://lossless.cloud) +``` +npm install @push.rocks/smartfile --save +``` +Or: +``` +yarn add @push.rocks/smartfile +``` ## Usage -smartfile is an approach of being one tool to handle files in diverse environments. +SmartFile is a comprehensive toolkit for file manipulation in Node.js. It provides functionalities for working with the filesystem, in-memory operations, streaming, and handling virtual directories. Below, you will find examples showcasing how to utilize these functionalities effectively. -### Smartfile Sections +### Basic File Operations -smartfile thinks in sections: +For reading and writing files, SmartFile provides synchronous and asynchronous methods. Here’s how you can use them: -| section | description | -| ----------- | ---------------------------------------------------------------------------- | -| fs | (object) gets data from fs to somewhere | -| memory | gets data from memory to somewhere | -| remote | gets data from remote locations to somewhere | -| interpreter | (object) handles yaml and json | -| smartfile | (class) a virtual representation of a file, alternative to vinyl file format | +#### Async Write to File -## Contribution +```typescript +import { memory } from '@push.rocks/smartfile'; -We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :) +const myData: string = 'Hello, SmartFile!'; -For further information read the linked docs at the top of this readme. +// Writing string data to a file asynchronously +memory.toFs(myData, './data/hello.txt'); +``` -## Legal -> MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc) -| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy) +#### Sync Write to File + +```typescript +import { memory } from '@push.rocks/smartfile'; + +const myData: string = 'Hello, World!'; + +// Writing string data to a file synchronously +memory.toFsSync(myData, './data/helloSync.txt'); +``` + +### Working with Streams + +Streaming files to and from the filesystem is made easy with SmartFile. Here’s an example: + +#### Creating Read and Write Streams + +```typescript +import { fsStream } from '@push.rocks/smartfile'; +import * as fs from 'fs'; + +// Creating a read stream +const readStream = fsStream.createReadStream('./data/readme.txt'); + +// Creating a write stream +const writeStream = fsStream.createWriteStream('./data/copy.txt'); + +// Piping the read stream to the write stream +readStream.pipe(writeStream); +``` + +### Dealing with Virtual Directories + +Virtual directories allow you to group and manipulate files as if they were in a filesystem structure without actually writing them to disk. + +```typescript +import { VirtualDirectory } from '@push.rocks/smartfile'; + +(async () => { + // Creating a virtual directory from the file system + const virtualDir = await VirtualDirectory.fromFsDirPath('./myDirectory'); + + // Adding files from another virtual directory + const anotherVirtualDir = await VirtualDirectory.fromFsDirPath('./anotherDirectory'); + await virtualDir.addVirtualDirectory(anotherVirtualDir, 'merged'); + + // Saving the virtual directory to disk + await virtualDir.saveToDisk('./outputDirectory'); +})(); +``` + +### Advanced File Manipulation + +SmartFile also allows for more advanced file manipulation techniques through the `SmartFile` class. + +```typescript +import { SmartFile } from '@push.rocks/smartfile'; + +(async () => { + // Create a SmartFile instance from a file path + const smartFile = await SmartFile.fromFilePath('./data/example.txt'); + + // Edit the file content + await smartFile.editContentAsString(async (currentContent: string) => { + return currentContent.toUpperCase(); + }); + + // Write the changes back to disk + await smartFile.write(); +})(); +``` + +### Conversion and Interpretation + +You can easily convert file contents to objects or interpret file types for further processing: + +```typescript +import { memory } from '@push.rocks/smartfile'; + +(async () => { + const fileString: string = await fs.promises.readFile('./data/example.json', 'utf8'); + const fileObject = memory.toObject(fileString, 'json'); + + console.log(fileObject); + // Proceed with the object... +})(); +``` + +SmartFile simplifies handling files in a Node.js environment, providing a concise, promise-based API for various file operations, stream handling, and in-memory file manipulation. Whether you're dealing with physical files on the disk, manipulating file streams, or managing virtual files and directories, SmartFile has got you covered. + +## Information on Licensing + +SmartFile is licensed under the MIT License. This permissive license is short and to the point. It lets people do anything they want with your code as long as they provide attribution back to you and don’t hold you liable. \ No newline at end of file diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index d7a4a4b..325167e 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartfile', - version: '11.0.4', + version: '11.0.5', description: 'offers smart ways to work with files in nodejs' }