@tsed/json-mapper 8.0.1 → 8.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -7
- package/readme.md +1 -1
- package/src/components/DateMapper.spec.ts +43 -0
- package/src/components/DateMapper.ts +29 -0
- package/src/components/PrimitiveMapper.spec.ts +179 -0
- package/src/components/PrimitiveMapper.ts +64 -0
- package/src/components/SymbolMapper.spec.ts +23 -0
- package/src/components/SymbolMapper.ts +19 -0
- package/src/decorators/afterDeserialize.ts +39 -0
- package/src/decorators/beforeDeserialize.ts +39 -0
- package/src/decorators/jsonMapper.ts +16 -0
- package/src/decorators/onDeserialize.ts +29 -0
- package/src/decorators/onSerialize.ts +29 -0
- package/src/domain/JsonDeserializer.spec.ts +1437 -0
- package/src/domain/JsonDeserializer.ts +402 -0
- package/src/domain/JsonDeserializerOptions.ts +31 -0
- package/src/domain/JsonMapperCompiler.ts +247 -0
- package/src/domain/JsonMapperGlobalOptions.ts +14 -0
- package/src/domain/JsonMapperSettings.ts +7 -0
- package/src/domain/JsonMapperTypesContainer.ts +20 -0
- package/src/domain/JsonSerializer.spec.ts +1505 -0
- package/src/domain/JsonSerializer.ts +371 -0
- package/src/domain/JsonSerializerOptions.ts +17 -0
- package/src/domain/Writer.spec.ts +11 -0
- package/src/domain/Writer.ts +181 -0
- package/src/domain/__snapshots__/Writer.spec.ts.snap +10 -0
- package/src/hooks/alterAfterDeserialize.ts +5 -0
- package/src/hooks/alterBeforeDeserialize.ts +5 -0
- package/src/hooks/alterOnDeserialize.ts +5 -0
- package/src/hooks/alterOnSerialize.ts +5 -0
- package/src/index.ts +28 -0
- package/src/interfaces/JsonMapperMethods.ts +32 -0
- package/src/utils/deserialize.spec.ts +33 -0
- package/src/utils/deserialize.ts +12 -0
- package/src/utils/getObjectProperties.ts +5 -0
- package/src/utils/serialize.spec.ts +37 -0
- package/src/utils/serialize.ts +12 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {deserialize} from "./deserialize.js";
|
|
2
|
+
|
|
3
|
+
describe("deserialize()", () => {
|
|
4
|
+
describe("Primitive", () => {
|
|
5
|
+
it("should convert value", () => {
|
|
6
|
+
expect(deserialize(null)).toEqual(null);
|
|
7
|
+
expect(deserialize(null, {type: String})).toEqual(null);
|
|
8
|
+
expect(deserialize(undefined)).toBeUndefined();
|
|
9
|
+
expect(deserialize(false)).toEqual(false);
|
|
10
|
+
expect(deserialize(true)).toEqual(true);
|
|
11
|
+
expect(deserialize(0)).toEqual(0);
|
|
12
|
+
expect(deserialize(1)).toEqual(1);
|
|
13
|
+
expect(deserialize("")).toEqual("");
|
|
14
|
+
expect(deserialize("1")).toEqual("1");
|
|
15
|
+
|
|
16
|
+
expect(deserialize(null, {type: Boolean})).toEqual(null);
|
|
17
|
+
expect(deserialize(undefined, {type: Boolean})).toBeUndefined();
|
|
18
|
+
expect(deserialize(null, {type: Boolean})).toEqual(null);
|
|
19
|
+
expect(deserialize(undefined, {type: Boolean})).toBeUndefined();
|
|
20
|
+
expect(deserialize(false, {type: Boolean})).toEqual(false);
|
|
21
|
+
expect(deserialize(true, {type: Boolean})).toEqual(true);
|
|
22
|
+
expect(deserialize(0, {type: Number})).toEqual(0);
|
|
23
|
+
expect(deserialize(1, {type: Number})).toEqual(1);
|
|
24
|
+
expect(deserialize("", {type: Number})).toEqual(0);
|
|
25
|
+
expect(deserialize("0", {type: Number})).toEqual(0);
|
|
26
|
+
expect(deserialize("1", {type: Number})).toEqual(1);
|
|
27
|
+
expect(deserialize("", {type: String})).toEqual("");
|
|
28
|
+
expect(deserialize("0", {type: String})).toEqual("0");
|
|
29
|
+
expect(deserialize("1", {type: String})).toEqual("1");
|
|
30
|
+
expect(deserialize(["1"], {type: String})).toEqual(["1"]);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import "../components/DateMapper.js";
|
|
2
|
+
import "../components/PrimitiveMapper.js";
|
|
3
|
+
import "../components/SymbolMapper.js";
|
|
4
|
+
|
|
5
|
+
import {JsonDeserializer} from "../domain/JsonDeserializer.js";
|
|
6
|
+
import {JsonDeserializerOptions} from "../domain/JsonDeserializerOptions.js";
|
|
7
|
+
|
|
8
|
+
const deserializer = new JsonDeserializer();
|
|
9
|
+
|
|
10
|
+
export function deserialize<Model = any>(input: any, options?: JsonDeserializerOptions): Model {
|
|
11
|
+
return deserializer.map<Model>(input, options);
|
|
12
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import "../components/PrimitiveMapper.js";
|
|
2
|
+
|
|
3
|
+
import {Property} from "@tsed/schema";
|
|
4
|
+
|
|
5
|
+
import {serialize} from "./serialize.js";
|
|
6
|
+
|
|
7
|
+
describe("serialize()", () => {
|
|
8
|
+
it("should serialize values", () => {
|
|
9
|
+
expect(serialize(undefined)).toBeUndefined();
|
|
10
|
+
expect(serialize(null)).toEqual(null);
|
|
11
|
+
expect(serialize("null")).toEqual("null");
|
|
12
|
+
expect(serialize(Symbol.for("TEST"))).toEqual("TEST");
|
|
13
|
+
expect(serialize(false)).toEqual(false);
|
|
14
|
+
expect(serialize(true)).toEqual(true);
|
|
15
|
+
expect(serialize("")).toEqual("");
|
|
16
|
+
expect(serialize("1")).toEqual("1");
|
|
17
|
+
expect(serialize(0)).toEqual(0);
|
|
18
|
+
expect(serialize(1)).toEqual(1);
|
|
19
|
+
expect(serialize(BigInt(1n))).toEqual(BigInt(1));
|
|
20
|
+
|
|
21
|
+
class Entity {
|
|
22
|
+
@Property()
|
|
23
|
+
num: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
expect(
|
|
27
|
+
serialize(
|
|
28
|
+
{
|
|
29
|
+
num: "1"
|
|
30
|
+
},
|
|
31
|
+
{type: Entity}
|
|
32
|
+
)
|
|
33
|
+
).toEqual({
|
|
34
|
+
num: 1
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import "../components/DateMapper.js";
|
|
2
|
+
import "../components/PrimitiveMapper.js";
|
|
3
|
+
import "../components/SymbolMapper.js";
|
|
4
|
+
|
|
5
|
+
import {JsonSerializer} from "../domain/JsonSerializer.js";
|
|
6
|
+
import {JsonSerializerOptions} from "../domain/JsonSerializerOptions.js";
|
|
7
|
+
|
|
8
|
+
const serializer = new JsonSerializer();
|
|
9
|
+
|
|
10
|
+
export function serialize(input: any, options?: JsonSerializerOptions) {
|
|
11
|
+
return serializer.map(input, options);
|
|
12
|
+
}
|