Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/orbitturner/orbit-encoder

A versatile library that efficiently encodes and compresses diverse data inputs into concise strings.
https://github.com/orbitturner/orbit-encoder

compression encoder-decoder

Last synced: 5 days ago
JSON representation

A versatile library that efficiently encodes and compresses diverse data inputs into concise strings.

Awesome Lists containing this project

README

        

# ๐ŸŸข ORBIT ENCODER โš™๏ธ๐Ÿ—œ๏ธ
[![Compatible Status](https://img.shields.io/badge/works%20with-PS1-blue)](https://github.com/orbitturner/ORBIT-ENCODER)
[![Code Size Status](https://img.shields.io/github/languages/code-size/orbitturner/ORBIT-ENCODER)](https://github.com/orbitturner/ORBIT-ENCODER)
[![Commit Status](https://img.shields.io/github/commit-activity/m/orbitturner/ORBIT-ENCODER?color=red)](https://github.com/orbitturner/ORBIT-ENCODER)
[![Issues Status](https://img.shields.io/github/issues/orbitturner/ORBIT-ENCODER)](https://github.com/orbitturner/ORBIT-ENCODER)
[![npm version](https://img.shields.io/npm/v/ORBIT-ENCODER.svg)](https://github.com/orbitturner/ORBIT-ENCODER) [![license](https://img.shields.io/npm/l/ORBIT-ENCODER.svg)](https://github.com/orbitturner/ORBIT-ENCODER)

**ORBIT-ENCODER** is an utility library for Data Compression and Encoding. It can take whatever object you give him as argument and returns a compressed encoded string. It provides a decoding method too. It uses a modified version of [*LZString*](https://www.npmjs.com/package/lz-string) for UTF16 Compression.


ORBIT-ENCODER COVER

INSTALLATION







___
## ๐Ÿ“š Table Of Contents ๐Ÿ“‘
- [๐ŸŸข ORBIT ENCODER โš™๏ธ๐Ÿ—œ๏ธ](#orbit-encoder)
* [๐Ÿ“š Table Of Contents ๐Ÿ“‘](#table-of-contents)
* [๐Ÿ’จ What is this Library for? ๐Ÿค”](#what-is-this-library-for)
* [โœจ Key Features ๐ŸŽฏ](#key-features---)
* [๐Ÿ“ฅ HOW TO RUN IT ? ๐Ÿ”ฐ](#how-to-run-it)
* [๐Ÿค” HOW IT WORKS ? ๐Ÿค”](#how-it-works)
+ [โžค Encode & Decode Given Data ๐ŸŸข](#encode---decode-given-data)
* [Configuration Options](#configuration-options)
* [Contributing โค](#contributing--)
* [Issue Reporting](#issue-reporting)
* [GREETINGS](#greetings)
* [Author](#author)
* [License](#license)

___

## ๐Ÿ’จ What is this Library for? ๐Ÿค”

**ORBIT-ENCODER** is a small library that is useful for Encoding Objects [`String, Arrays, JSON, Anything...`] to a `Compressed UTF16` String. You can also Decode that string back using The exposed **Decode** method.

> **Note:** This library can only be used with JS or TS but you already know that ๐Ÿคฆ๐Ÿฟโ€โ™‚๏ธ.

## โœจ Key Features ๐ŸŽฏ

* Use it **without `instantiation`** because all the methods are `Static`.
* **Fast and High Performance Compression** of big Complex Data.
* โœ… TOO EASY TO USE !! ๐Ÿฅณ๐Ÿฅณ

___

## ๐Ÿ“ฅ HOW TO RUN IT ? ๐Ÿ”ฐ

```bash
# installation with npm
npm install array-querier

# or you may prefer
npm i --save array-querier

# installation with yarn
yarn add array-querier
```

**This SCRIPT relies on NOTHING SO YOU DON'T NEED ADDITIONNAL PACKAGES.**

___
## ๐Ÿค” HOW IT WORKS ? ๐Ÿค”

You only need to Import the ***OrbitEncoder*** Class from the Package and start using it !

### โžค Encode & Decode Given Data ๐ŸŸข
If you have a User object as follows ->
```json
const User = {
"name": "Orbit",
"age": 21,
"planet": {
"id": 4,
"codename" : "Shadow-Coders",
"galaxyName" : "Turner"
}
}
```
๐Ÿ‘‡๐Ÿพ Let's Encode and Decode an Objects :

- **ECMAScript Modules and Typescript**
```typescript
import {OrbitEncoder} from 'orbit-encoder/lib/OrbitEncoder';

// Then Encode whatever you want
const encodedData = OrbitEncoder.encode(User);

console.log(encodedData);
/**
* ๐Ÿ‘‡๐Ÿพ Output: ๐Ÿ‘‡๐Ÿพ
*
* แ“ขใฐดไ…ผเง€็”คใ€ฆๆฉรŒ฿แ‹ แ”ฃแฃกไ‚ฆTษˆใ€ฆโไฐ แ˜กใขใ€ชๅƒ ใฒชโ ็ฅถfฤ‚เข•โ“ธวธอšเฃฃแž‚โต‰Mไ€ผไ€ปไป€ไ•ใ’˜ๆ”ˆแขธแฃทๅฐเงฃไนฉๅŽ–ไบฐรฆแฉไฉดยธๆคฎเ ขๆ˜คๆ€ชๆŒ‘ไƒ’ๅกๆฌ็‚โ‘˜ไคฃ&ใ‰€Pฦ˜ไ€ 
*
* /
```
```typescript
...
const decodedData = OrbitEncoder.decode(encodedData);

console.log(decodedData);
/**
* ๐Ÿ‘‡๐Ÿพ Output: ๐Ÿ‘‡๐Ÿพ
*
* {
name: 'Orbit',
age: 21,
planet: { id: 4, codename: 'Shadow-Coders', galaxyName: 'Turner' }
}
*
* /
```
**๐Ÿ›‘ ANGULAR & FRONTEND USERS โ˜ข๏ธ**
> **Note:** If you are using this in your frontend application you'll need to add the folowing line in your `index.html` ๐Ÿ‘‡๐Ÿพ:.
```html
if (global === undefined) { var global = window; }
```
> **FIX COMING:** We are working on Future updates that will try to fix this error [*Uncaught ReferenceError: global is not defined*].

- **CommonJs and Vanilla JS**
```javascript
const orbit = require("orbit-encoder").OrbitEncoder;

const data = orbit.encode('Bodio Bodio Yei !!');

console.log(data); // ๐Ÿš€ Output :แ…ขๆฑ‡วŒเข€็” ็€ผๆฉชๆขธๆ•<าฐแก โข เญ€

console.log(orbit.decode(data));
```
> **โš  Note: โš ** * You can do that : const orbit = require("orbit-encoder"); And use orbit.OrbitEncoder.encode() everywhere but for a more clean approach I did the code above.

### โžค Encode & Decode Data Passed on URI ๐ŸŸข
Sometimes you may want to pass some heavy and complex data or datastructure in a URL, so you can use the `encodeWithURIsafe` method. It produces ASCII strings representing the original string encoded in Base64 with a few tweaks to make these URI safe. Hence, you can send them to the server without thinking about URL encoding them.
This saves bandwidth and CPU.

- **ECMAScript Modules and Typescript**
```typescript
import {OrbitEncoder} from 'orbit-encoder/lib/OrbitEncoder';

const data = [['2021-03-02','2021-06-02'],['2022-05-05','2021-07-01']];

// Then Encode whatever you want
const encodedData = OrbitEncoder.encodeWithURIsafe(data);

console.log(dataForURI);

/**
* ๐Ÿ‘‡๐Ÿพ Output: ๐Ÿ‘‡๐Ÿพ
*
* OoRgzglgsgVgggTygZQAwHcoI1CBJMPGPTGAUQBcoARATSurwgA1kAPAIyJNjwYFUBEADIBhPEkZthAFTgBmWXDZ4ANiAAmQA
*
* /
```
```typescript
...
const decodedData = OrbitEncoder.decodeURIsafe(encodedData);

console.log(decodedData);
/**
* ๐Ÿ‘‡๐Ÿพ Output: ๐Ÿ‘‡๐Ÿพ
*
* [ [ '2021-03-02', '2021-06-02' ], [ '2022-05-05', '2021-07-01' ] ]
*
* /
```
- **CommonJs and Vanilla JS**
```javascript
const orbit = require("orbit-encoder").OrbitEncoder;

const dataForURI = orbit.encodeWithURIsafe([['2021-03-02','2021-06-02'],['2022-05-05','2021-07-01']]);

console.log(dataForURI) // ๐Ÿš€ Output : OoRgzglgsgVgggTygZQAwHcoI1CBJMPGPTGAUQBcoARATSurwgA1kAPAIyJNjwYFUBEADIBhPEkZthAFTgBmWXDZ4ANiAAmQA

console.log(orbit.decodeURIsafe(dataForURI))
```

___
## Configuration Options

*Coming Soon !*
___
## Contributing โค

๐Ÿ‘‹๐Ÿพ Pull requests are welcome!
___

## Issue Reporting

If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](mailto:[email protected]) details the procedure for disclosing security issues.
___

## GREETINGS


โคโค

โคโค

___
## Author

[Orbit Turner](https://orbitturner.com)

___
## License

This project is licensed under the MIT license. See the [LICENSE](LICENSE) file for more info.
______________________________________________________
**โค MADE WITH LOVE โค**

![Image of OT](https://raw.githubusercontent.com/orbitturner/orbitturner/master/LOGO-OT.png)