5.0.1 • Published 8 years ago
protosphere v5.0.1
protosphere
:clap: PROTOCOL :clap: BUFFERS :clap: MADE :clap: EASY :clap:

Art by Nick DePasquale
Changelog
- v4.x
- Uses schemas (see examples).
- Lodash-based object-key ordering for intelligent destructuring.
- Adaptive buffer structure for present & absent values.
- Added dist build:
protosphere.min.js
- v0.x to v3.x
- PoC testing, bad performance, barely functional
Usage
Installing
npm install protosphere --save
yarn add protosphereSample Usage
- Create an instance with a schema:
const Protosphere = require('protosphere');
const ps = new Protosphere({
name: Protosphere.String(),
details: Protosphere.Object({
verified: Protosphere.Boolean()
}),
age: Protosphere.Integer(),
bitcoins: Protosphere.Double(),
memberships: Protosphere.Array(
Protosphere.String()
)
});- Prepare your values:
let values = {
name: 'Xemasiv',
details: {
verified: true
},
age: Math.pow(2, 50),
bitcoins: 0.9999999999999991,
memberships: ['Amex', 'Mastercard']
};- Transform these values to get the buffer:
ps.transform(values)
.then((buffer) => console.log('buffer:', buffer));- Send this buffer to anywhere in the world
- Rehydrate it upon receipt:
ps.hydrate(response.data)
.then((values) => console.log('values:', values));Accepted Schema Values:
Protosphere.Boolean()- Accepts
true,false,null,undefined
- Accepts
let ps = new Protosphere({
isVerified: Protosphere.Boolean()
});Protosphere.String()- Accepts any strings,
null,undefined
- Accepts any strings,
let ps = new Protosphere({
name: Protosphere.String()
});Protosphere.Integer()- Accepts positive/negative integers,
null,undefined
- Accepts positive/negative integers,
let ps = new Protosphere({
age: Protosphere.Integer()
});Protosphere.Double()- Accepts floating points / doubles,
null,undefined
- Accepts floating points / doubles,
let ps = new Protosphere({
amount: Protosphere.Double()
});Protosphere.Object({mapped: schemas})- Accepts string keys and (schema) as values ,
null,undefined
- Accepts string keys and (schema) as values ,
let ps = new Protosphere({
configs: Protosphere.Object({
fullscreen: Protosphere.Boolean(),
brightness: Protosphere.Integer()
})
});Protosphere.Array(schemas)- Accepts one schema (even object schema) as value,
null,undefined
- Accepts one schema (even object schema) as value,
let ps = new Protosphere({
students: Protosphere.Array(
Protosphere.Object({
name: Protosphere.String(),
height: Protosphere.Double()
})
)
});Testing
- Provided example shows comparison between two requests:
- Req # 1:
axios+application/json - Req # 2:
axios+JSON.stringify+application/octet-stream - Req # 3:
axios+protosphere+application/octet-stream
npm run playground- A bare
test.jsis also provided.
npm testclass Protosphere
constructor (schema)
- Takes
object- the schema to be used.
function .transform(object)
- Takes
object- the object with values to be transformed
- Returns
- Promise.resolve(
buffer) - result buffer - Promise.reject(
error) - error from try catch
- Promise.resolve(
function .hydrate(buffer)
- Takes
buffer- the buffer to be hydrated
- Returns
- Promise.resolve(
object) - original object - Promise.reject(
error) - error from try catch
- Promise.resolve(
License
Attribution 4.0 International (CC BY 4.0)
- https://creativecommons.org/licenses/by/4.0/
- https://creativecommons.org/licenses/by/4.0/legalcode.txt
![]()
5.0.1
8 years ago
4.4.0
8 years ago
4.3.0
8 years ago
4.2.0
8 years ago
4.1.4
8 years ago
4.1.3
8 years ago
4.1.2
8 years ago
4.1.1
8 years ago
4.1.0
8 years ago
4.0.3
8 years ago
4.0.1
8 years ago
3.0.4
8 years ago
3.0.3
8 years ago
3.0.2
8 years ago
3.0.1
8 years ago
2.0.2
8 years ago
2.0.1
8 years ago
1.0.0
8 years ago
0.0.1-super-alpha
8 years ago