npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ngx-simple-serializer

v1.0.0

Published

For the latest changes and the current version see the [Change log](./CHANGELOG.md).

Downloads

3

Readme

ngx-simple-serializer

For the latest changes and the current version see the Change log.

example

@Serializable('DemoClass')
class DemoClass {
  property1 = 'value1';
  property2 = 'value2';
  concatProperties() {
    return this.property1 + this.property2;
  }
}

const classInstance = new DemoClass();
classinstance.property2 = '23';

const serializedValue = serialize(classInstance);
// you can now store serializedValue in e.g. localstorage, so it can be retrieved after a page refresh

// to restore the value you just do
const restoredInstance = deserialize(serializedValue);
expect(restoredInstance.concatProperties()).toEqual('value123')

documentation

Simple serialization and deserialization support for Classes in Angular with a minimum of boilerplate code. Serializable classes need only be decoratied with the @Serializable() decorator.

Because of its simplicity it has a number of limitations:

  • It can only serialize and deserialize objects that succesfully JSON.stringify(), so no circular references are allowed.
  • To circumvent class name mangling/minimization problems you can add a serialization name to the decorator: @Serializable('ClassName')
  • Only works when class property names are not mangled/minimized in the build when you change code (should not be a problem with default settings).
  • It correctly serializes and deserializes the javascript Map, Set, Date and RegExp types
  • It needs a reserved property name to identify @Serializable classes in the serialized JSON. This reserved property name defaults to _class.

It contains the following elements:

  • @Serializable(name?: string) Decorator that marks a Class as serializable.
  • serialize(value: any): string Function that serializes a value into a JSON string.
  • deserialize<T = any>(value: string): T Function that deserializes a serialized value back to its original value.
  • isSerializable(value): boolean Function that determines if a value is a basic serializable value type or decorated as @Serializable().
  • setSerializedClassIdentifier(id: string) Change the default _class reserved property name that identifies a @Serializable class to a different name (e.g. because the _class property is used as a normal property inside a serializable object or class).

By default it serializes and deserializes the following javascript value types:

  • boolean
  • number
  • string
  • Array
  • Object
  • Map
  • Set
  • Date
  • RegExp
  • Any class decorated as @Serializable() that only contains serializable properties and does not contain circular references.