1.0.4 • Published 5 years ago

modelserializer v1.0.4

Weekly downloads
9
License
MIT
Repository
github
Last release
5 years ago

ModelSerializer

This projects contains a simple serializer for Javascript objects written in just a few lines of code and minimum dependencies. It's aim is to simply apply transformations on various Javascript objects (e.g. before you return them to user via REST API).

Installation

You can simply install the ModelSerializer by running

npm install modelserializer

Then you require the package as follows

const ModelSerializer = require('modelserializer');

Run tests

You can run tests for this package by running npm test.

Example usages

The following examples show on how to use this package.

Basic usage

Simple serialization consists of pure field picking from objects

const serializer = new ModelSerializer({
	attributes: [
		{ field: 'a' },
		{ field: 'b' }
	]
});

console.log(serializer.serialize({ a: 1, b: 2, c: 3 }));
// { a: 1, b: 2 }

You can also pick nested fields

const serializer = new ModelSerializer({
	attributes: [
		{ field: 'x.a' },
		{ field: 'b' }
	]
});

console.log(serializer.serialize({ a: 1, b: 2, x: { a: 1, b: 2, c: 3 } }));
// { x: { a: 1 }, b: 2 }

Or use field aliases

const serializer = new ModelSerializer({
	attributes: [
		{ field: 'a', alias: 'x' },
		{ field: 'b', alias: 'y.a' }
	]
});

console.log(serializer.serialize({ a: 1, b: 2, c: 3 }));
// { x: 1, y: { a: 2 } }

Advanced usage

Serializers can be nested as follows

const nestedSerializer = new ModelSerializer({
	attributes: [
		{ field: 'a' }
	]
});

const serializer = new ModelSerializer({
	attributes: [
		{ field: 'x', alias: 'y', serializer: nestedSerializer }
	]
});

console.log(serializer.serialize({ x: { a: 1, b: 2 } }));
// { y: { a: 1 } }

Or you can pass a function as a serializer for particular value

const serializer = new ModelSerializer({
	attributes: [
		{ field: 'a', serializer: (value) => value + 10 },
		// You can also access the original object (source.b === value)
		{ field: 'b', serializer: (value, source) => source.a + value }
	]
});

console.log(serializer.serialize({ a: 1, b: 2 }));
// { a: 11, b: 3 }

And that's it!

Contributions

Feel free to open an issue or send me a pull request in case you have any idea on how to improve this package.

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago