@denostack/superserial@0.3.5
latest
This package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers




JSR Score
58%
Published
a year ago (0.3.5)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081import { assertEquals, assertInstanceOf } from "jsr:@std/assert@^0.222.1"; import { Serializer, toDeserialize, toSerialize } from "./mod.ts"; Deno.test("serializer, toSerialize, toDeserialize", () => { class TestUser { #_age = 0; constructor(public name: string) { this.#_age = 0; } setAge(age: number) { this.#_age = age; } getAge() { return this.#_age; } [toSerialize]() { return { name: this.name, age: this.#_age, }; } [toDeserialize]( value: { name: string; age: number; }, ) { this.name = value.name; this.#_age = value.age; } } const serializer = new Serializer({ classes: { TestUser } }); { const user = new TestUser("wan2land"); user.setAge(20); assertEquals( serializer.serialize(user), 'TestUser{"name":"wan2land","age":20}', ); } { const user = serializer.deserialize<TestUser>( 'TestUser{"name":"wan2land","age":20}', ); assertInstanceOf(user, TestUser); assertEquals(user.name, "wan2land"); assertEquals(user.getAge(), 20); } }); Deno.test("serializer, alias class names", () => { class TestUser { constructor(public name: string) { } } const serializer = new Serializer({ classes: { AliasedTestUser: TestUser } }); { const user = new TestUser("wan2land"); assertEquals( serializer.serialize(user), 'AliasedTestUser{"name":"wan2land"}', ); } { const user = serializer.deserialize<TestUser>( 'AliasedTestUser{"name":"wan2land"}', ); assertInstanceOf(user, TestUser); assertEquals(user.name, "wan2land"); } });