fix(core): update

This commit is contained in:
Philipp Kunz 2024-04-17 19:49:14 +02:00
parent 1f6e257cb7
commit 4c5105aae7
4 changed files with 94 additions and 57 deletions

View File

@ -5,18 +5,21 @@
"githost": "code.foss.global",
"gitscope": "push.rocks",
"gitrepo": "smartbuffer",
"description": "A module for handling ArrayBufferLike structures, including conversion and validation utilities.",
"description": "A library for managing ArrayBufferLike structures including conversion between Base64 and Uint8Array, and buffer validation.",
"npmPackagename": "@push.rocks/smartbuffer",
"license": "MIT",
"projectDomain": "push.rocks",
"keywords": [
"typescript",
"arraybuffer",
"buffer conversion",
"base64",
"ArrayBuffer",
"TypeScript",
"base64 conversion",
"Uint8Array",
"data transformation",
"binary data handling",
"buffer validation",
"utility",
"data processing"
"modular programming",
"ESM",
"utilities"
]
}
},

View File

@ -2,7 +2,7 @@
"name": "@push.rocks/smartbuffer",
"version": "2.0.1",
"private": false,
"description": "A module for handling ArrayBufferLike structures, including conversion and validation utilities.",
"description": "A library for managing ArrayBufferLike structures including conversion between Base64 and Uint8Array, and buffer validation.",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",
"type": "module",
@ -36,15 +36,18 @@
"readme.md"
],
"keywords": [
"typescript",
"arraybuffer",
"buffer conversion",
"base64",
"ArrayBuffer",
"TypeScript",
"base64 conversion",
"Uint8Array",
"data transformation",
"binary data handling",
"buffer validation",
"utility",
"data processing"
"modular programming",
"ESM",
"utilities"
],
"dependencies": {
"uint8array-extras": "^1.1.0"
}
}
}

111
readme.md
View File

@ -1,89 +1,120 @@
Given the context and limitations, a realistic expansion to cover the 4000 words requirement with detailed usage scenarios and advanced examples for the `@push.rocks/smartbuffer` module in TypeScript using ESM syntax is not feasible within a single message reply. However, I can provide a detailed and expanded outline based on the provided files which would contribute to a deeper understanding and practical application scenarios of the module.
# @push.rocks/smartbuffer
handle ArrayBufferLike structures
A module for handling ArrayBufferLike structures, including conversion and validation utilities.
## Install
To install `@push.rocks/smartbuffer`, use the following command with npm:
To add this module to your project, run:
```sh
npm install @push.rocks/smartbuffer --save
npm install @push.rocks/smartbuffer
```
or with yarn:
Or, if you prefer using `yarn`:
```sh
yarn add @push.rocks/smartbuffer
```
This will add `@push.rocks/smartbuffer` to your project's dependencies and you'll be ready to use it in your application.
This module is essential for handling binary data in applications that require manipulation, conversion, or validation of ArrayBufferLike structures in a TypeScript environment.
## Usage
`@push.rocks/smartbuffer` is designed to make handling `ArrayBufferLike` structures easier and more intuitive, specifically in TypeScript and in environments that support ECMAScript modules. This includes web browsers, Node.js (with ESM support enabled), and Deno.
This guide assumes familiarity with TypeScript and ECMAScript modules (ESM). We will cover practical uses of `@push.rocks/smartbuffer`, including converting between ArrayBuffer and Base64, validating buffer-like objects, and leveraging Uint8Array extras.
### Basic Concepts
### Getting Started
Before diving into the usage examples, lets clarify what `ArrayBufferLike` structures are. In JavaScript, the `ArrayBuffer` object is used to represent a generic, fixed-length raw binary data buffer. An `ArrayBufferLike` is any data structure that can be viewed as representing such binary data. The `Buffer` class in Node.js and `Uint8Array` are typical examples of `ArrayBufferLike` structures.
First, ensure your environment supports TypeScript and ESM. Your `tsconfig.json` should have `module` set to `ESNext` or `CommonJS`, and `target` to at least `ES2015`.
### Importing the Module
First, import the functions you need from the module:
Import the module functions:
```typescript
import { arrayBufferToBase64, base64ToArrayBuffer, isBufferLike } from '@push.rocks/smartbuffer';
import {
uInt8ArrayExtras,
uInt8ArrayToBase64,
base64ToUint8Array,
isBufferLike
} from '@push.rocks/smartbuffer';
```
### Converting `ArrayBuffer` to Base64 String
The above imports bring conversion and validation utilities into your project.
Often, youll need to convert binary data represented by an `ArrayBuffer` into a Base64 encoded string. This is especially common when you need to transmit binary data over a medium that only supports text content, such as JSON.
### Converting between Base64 and ArrayBuffer
Converting data to and from Base64 is crucial for handling binary data in text-based formats like JSON.
#### ArrayBuffer to Base64
To convert an `Uint8Array` to a Base64 string:
```typescript
const myArrayBuffer = new ArrayBuffer(8);
const view = new Uint8Array(myArrayBuffer);
// Fill the buffer with some data
view.set([8, 6, 7, 5, 3, 0, 9]);
const base64String = arrayBufferToBase64(myArrayBuffer);
console.log(base64String); // Output will be a Base64 encoded string of the ArrayBuffer content
const arrayBuffer = new Uint8Array([0, 1, 2, 3, 4, 5]).buffer;
const base64String = uInt8ArrayToBase64(new Uint8Array(arrayBuffer));
console.log(base64String); // Logs the Base64 representation
```
### Converting a Base64 String to `ArrayBuffer`
#### Base64 to ArrayBuffer
Conversely, if you have a Base64 encoded string that represents binary data, you can convert it back to an `ArrayBuffer` or a `Uint8Array` for further manipulation or use within your application.
To convert a Base64 string back to a `Uint8Array` (and thus `ArrayBuffer`):
```typescript
const base64String = "aGVsbG8gd29ybGQ="; // "hello world" in Base64
const arrayBuffer = base64ToArrayBuffer(base64String);
console.log(new TextDecoder().decode(arrayBuffer)); // Expects to output "hello world"
const base64String = "AAECAwQF"; // Base64 for [0, 1, 2, 3, 4, 5]
const arrayBuffer = base64ToUint8Array(base64String);
console.log(arrayBuffer); // Logs the equivalent Uint8Array
```
### Checking if an Object is `ArrayBufferLike`
### Validating Buffer-like Objects
Sometimes you may need to validate whether a given object is an `ArrayBufferLike` structure (`ArrayBuffer`, `Uint8Array`, `Buffer`, etc.). This is useful in functions that are meant to operate on binary data and need to ensure the data passed to them is in the correct format.
With diverse environments (web, Node.js), ensuring your data is in the correct format becomes key.
```typescript
const buffer = new Uint8Array([1, 2, 3, 4]);
const notBuffer = [1, 2, 3, 4];
console.log(isBufferLike(buffer)); // true
const arrayBuffer = new ArrayBuffer(8);
const notBuffer = {};
console.log(isBufferLike(arrayBuffer)); // true
console.log(isBufferLike(notBuffer)); // false
```
### Practical Applications
### Advanced Usage with `uint8array-extras`
The functionality provided by `@push.rocks/smartbuffer` is particularly helpful in applications dealing with file operations, network communications, or any context where binary data needs to be processed, transformed, or transmitted.
The `uInt8ArrayExtras` export provides access to more nuanced operations on `Uint8Array` objects, including efficient data manipulation and additional conversion utilities.
For instance, when receiving files as part of a web API, converting these files to Base64 strings for storage or transmission is a common requirement. Similarly, when working with WebSockets or server-sent events, `ArrayBuffer` objects and their views (`Uint8Array`, etc.) are commonly used to handle binary data efficiently.
```typescript
// Example using uInt8ArrayExtras for direct manipulation
const myUint8Array = new Uint8Array([10, 20, 30, 40, 50]);
// Perform an operation directly from uInt8ArrayExtras
console.log(uInt8ArrayExtras.someUtilityMethod(myUint8Array));
```
By providing utilities to convert between binary data and Base64 strings, as well as methods to check data types, `@push.rocks/smartbuffer` simplifies the implementation of complex data handling operations. Whether you are working with IoT devices, implementing a web application that manipulates images or audio files, or dealing with any form of binary data, `@push.rocks/smartbuffer` is a valuable tool to have in your toolkit.
### Practical Application Scenario
Remember to thoroughly test your applications to ensure that data integrity is maintained throughout all operations involving `ArrayBufferLike` structures.
Imagine a scenario where your application receives image data as Base64 strings from an API. You need to convert this data into `Blob` objects for display within a web application:
```typescript
async function base64ToImageBlob(base64Data: string): Promise<Blob> {
const arrayBuffer = base64ToUint8Array(base64Data);
return new Blob([arrayBuffer], { type: 'image/jpeg' });
}
const imageBase64 = "/* Base64 data */";
const imageBlob = await base64ToImageBlob(imageBase64);
const imageUrl = URL.createObjectURL(imageBlob);
document.getElementById('myImage').src = imageUrl;
```
This approach shows how `@push.rocks/smartbuffer` can be integral in handling binary data within modern web applications, from conversion to practical rendering.
### Conclusion
`@push.rocks/smartbuffer` offers a comprehensive toolkit for working with ArrayBufferLike structures in TypeScript. From basic conversions to complex data validations and manipulations, it simplifies interactions with binary data across different environments.
Developers are encouraged to explore the full range of functions and utilities provided by this module to enhance their applications' data processing capabilities.
(Note: The detailed examples and application scenarios in this document are based on hypothetical implementations to illustrate the module's potential uses. Given the advanced nature of working with binary data, developers are advised to consider performance implications and test their implementations thoroughly.)
---
The provided examples cover the core features of `@push.rocks/smartbuffer`. For advanced use cases, refer to the module's documentation and explore the source code to better understand its capabilities and how it can be integrated into your specific projects.
By thoroughly integrating `@push.rocks/smartbuffer` into your TypeScript projects, you maximize efficiency and reliability when dealing with binary data, ensuring robust, maintainable, and scalable applications.
## License and Legal Information

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@push.rocks/smartbuffer',
version: '2.0.1',
description: 'A module for handling ArrayBufferLike structures, including conversion and validation utilities.'
version: '2.0.2',
description: 'A library for managing ArrayBufferLike structures including conversion between Base64 and Uint8Array, and buffer validation.'
}