1.0.2 • Published 7 months ago

@cljimenez/json-serializer-base-serializers v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

A set of serializers used by the npm package @cljimenez/json-serializer-core.

🏠 Homepage

See @cljimenez/json-serializer-base-serializers in npm

Index

Install

npm install @cljimenez/json-serializer-base-serializers

Prerequisites

If you want to use @cljimenez/json-serializer-base-serializers with @cljimenez/json-serializer-core, you must install both packages.

npm install @cljimenez/json-serializer-core @cljimenez/json-serializer-base-serializers

What is a Serializer?

A Serializer is an object that contains three methods:

  • getSerializerType(void)=>string
  • serialize(unserializedData: any)=>object
  • parse(serializedData: object)=>any

The @cljimenez/json-serializer-base-serializers includes five serializers:

  • BigIntSerializer: Serializes and unserializes big integer.
  • DateSerializer: Serializes and unserializes dates.
  • FunctionSerializer: Serializes and unserializes functions.
  • MapSerializer: Serializes and unserializes maps.
  • SetSerializer: Serializes and unserializes sets.

About methods

getSerializerType(void)=>string: Returns a string that represents the type of Serializer.

Example for commonjs:

const baseSerializers = require('@cljimenez/json-serializer-base-serializers')

const BigIntSerializer = baseSerializers.BigIntSerializer
const DateSerializer = baseSerializers.DateSerializer
const FunctionSerializer = baseSerializers.FunctionSerializer
const MapSerializer = baseSerializers.MapSerializer
const SetSerializer = baseSerializers.SetSerializer

const bigIntSerializer = new BigIntSerializer()
const dateSerializer = new DateSerializer()
const functionSerializer = new FunctionSerializer()
const mapSerializer = new MapSerializer()
const setSerializer = new SetSerializer()

// returns 'bigint'
bigIntSerializer.getSerializerType()

// returns 'Date'
dateSerializer.getSerializerType()

// returns 'function'
functionSerializer.getSerializerType()

// returns 'Map'
mapSerializer.getSerializerType()

// returns 'Set'
setSerializer.getSerializerType()

Example for ES Modules:

import {
  BigIntSerializer,
  DateSerializer,
  FunctionSerializer,
  MapSerializer,
  SetSerializer,
} from '@cljimenez/json-serializer-base-serializers'

const bigIntSerializer = new BigIntSerializer()
const dateSerializer = new DateSerializer()
const functionSerializer = new FunctionSerializer()
const mapSerializer = new MapSerializer()
const setSerializer = new SetSerializer()

// returns 'bigint'
bigIntSerializer.getSerializerType()

// returns 'Date'
dateSerializer.getSerializerType()

// returns 'function'
functionSerializer.getSerializerType()

// returns 'Map'
mapSerializer.getSerializerType()

// returns 'Set'
setSerializer.getSerializerType()

serialize(unserializedData: any)=>object. Serializes data, returns an object using the format {value: serializedData}.

Example for commonjs:

const baseSerializers = require('@cljimenez/json-serializer-base-serializers')

const FunctionSerializer = baseSerializers.FunctionSerializer

const functionSerializer = new FunctionSerializer()

// returns: { value: '(() => {\n        "string"\n      })' }
const serializedData = functionSerializer.serialize(() => {
  'string'
})

Example for ES Modules:

import { FunctionSerializer } from '@cljimenez/json-serializer-base-serializers'

const functionSerializer = new FunctionSerializer()

// returns: { value: '(() => {\n        "string"\n      })' }
const serializedData = functionSerializer.serialize(() => {
  'string'
})

parse(serializedData: object)=>any. Unserializes data, returns the value formated by serialize method.

Example for commonjs:

const baseSerializers = require('@cljimenez/json-serializer-base-serializers')

const FunctionSerializer = baseSerializers.FunctionSerializer

const functionSerializer = new FunctionSerializer()

const serializedData = functionSerializer.serialize(
  (arg1, arg2) => `${arg1} and ${arg2}`,
)

// { value: '((arg1, arg2) => `${arg1} and ${arg2}`)' }
console.log(serializedData)

const unserializedData = functionSerializer.parse(serializedData)

// string1 and string2
console.log(unserializedData('string1', 'string2'))

Example for ES Modules:

import { FunctionSerializer } from '@cljimenez/json-serializer-base-serializers'

const functionSerializer = new FunctionSerializer()

const serializedData = functionSerializer.serialize(
  (arg1, arg2) => `${arg1} and ${arg2}`,
)

// { value: '((arg1, arg2) => `${arg1} and ${arg2}`)' }
console.log(serializedData)

const unserializedData = functionSerializer.parse(serializedData)

// string1 and string2
console.log(unserializedData('string1', 'string2'))

How to use?

1. Install base serializers using the installer object (baseSerializerInstaller):

Note: The FunctionSerializer is not included by default in the installer, if you want include it, you must use the installOptions parameter in the jsonSerializer.installSerializersAndRefreshJsonSerializer method.

const installOptions = { includeFunctionSerializer: true }
jsonSerializer.installSerializersAndRefreshJsonSerializer(
  baseSerializers,
  installOptions,
)

Complete example for commonjs:

// Import the packages.
const core = require('@cljimenez/json-serializer-core')
const baseSerializers = require('@cljimenez/json-serializer-base-serializers')

// Obtain the installer object.
const installer = baseSerializers.baseSerializersInstaller

// Obtain the JsonSerializer object.
const jsonSerializer = core.JsonSerializerFactory.createJsonSerializer()

// Install the serializers without FunctionSerializer.
jsonSerializer.installSerializersAndRefreshJsonSerializer(installer)

// If you want install the FunctionSerializer, you can use:
jsonSerializer.installSerializersAndRefreshJsonSerializer(installer, {
  includeFunctionSerializer: true,
})

jsonSerializer.serialize(/*Replace by the unserialized data supports to the installed Serializers*/)

jsonSerializer.parse(/*Replace by the serialized data serializes by jsonSerializer.serialize method*/)

Complete example for ES Modules:

// Import the JsonSerializerFactory class.
import { JsonSerializerFactory } from '@cljimenez/json-serializer-core'
// Import the baseSerializerInstaller object.
import { baseSerializersInstaller } from '@cljimenez/json-serializer-base-serializers'

// Obtain the JsonSerializer object.
const jsonSerializer = JsonSerializerFactory.createJsonSerializer()

// Install the serializers without FunctionSerializer.
jsonSerializer.installSerializersAndRefreshJsonSerializer(
  baseSerializersInstaller,
)

// If you want install the FunctionSerializer, you can use:
jsonSerializer.installSerializersAndRefreshJsonSerializer(
  baseSerializersInstaller,
  { includeFunctionSerializer: true },
)

jsonSerializer.serialize(/*Replace by the unserialized data supports to the installed Serializers*/)

jsonSerializer.parse(/*Replace by the serialized data serializes by jsonSerializer.serialize method*/)

2. Add Serializers separately

Complete example for commonjs:

// Import the packages.
const core = require('@cljimenez/json-serializer-core')
const baseSerializers = require('@cljimenez/json-serializer-base-serializers')

// Obtain the JsonSerializer object.
const jsonSerializer = core.JsonSerializerFactory.createJsonSerializer()

// Import Serializers to add.
const BigIntSerializer = baseSerializers.BigIntSerializer
const FunctionSerializer = baseSerializers.FunctionSerializer
const MapSerializer = baseSerializers.MapSerializer

// Create the instances.
const bigIntSerializer = new BigIntSerializer()
const functionSerializer = new FunctionSerializer()
const mapSerializer = new MapSerializer()

// Add Serializers.
jsonSerializer.addSerializerAndRefreshJsonSerializer(bigIntSerializer)
jsonSerializer.addSerializerAndRefreshJsonSerializer(functionSerializer)
jsonSerializer.addSerializerAndRefreshJsonSerializer(mapSerializer)

jsonSerializer.serialize(/*Insert unserialized data supports to the installed Serializers*/)

jsonSerializer.parse(/*Insert serialized data serializes by jsonSerializer.serialize method*/)

Complete example for ES Modules:

// Import the JsonSerializerFactory class.
import { JsonSerializerFactory } from '@cljimenez/json-serializer-core'
// Import Serializers to add.
import {
  BigIntSerializer,
  FunctionSerializer,
  MapSerializer,
} from '@cljimenez/json-serializer-base-serializers'

// Obtain the JsonSerializer object.
const jsonSerializer = JsonSerializerFactory.createJsonSerializer()

// Create the instances.
const bigIntSerializer = new BigIntSerializer()
const functionSerializer = new FunctionSerializer()
const mapSerializer = new MapSerializer()

// Add Serializers.
jsonSerializer.addSerializerAndRefreshJsonSerializer(bigIntSerializer)
jsonSerializer.addSerializerAndRefreshJsonSerializer(functionSerializer)
jsonSerializer.addSerializerAndRefreshJsonSerializer(mapSerializer)

jsonSerializer.serialize(/*Insert unserialized data supports to the installed Serializers*/)

jsonSerializer.parse(/*Insert serialized data serializes by jsonSerializer.serialize method*/)

Author

👤 Cristopher Jiménez

🤝 Contributing

Contributions, issues and feature requests are welcome!Feel free to check issues page.

📝 License

Copyright © 2023 Cristopher Jiménez. This project is MIT licensed.


This README was generated with ❤️ by readme-md-generator