@synstack/json
Advanced tools
@@ -38,3 +38,2 @@ "use strict"; | ||
| // src/json.lib.ts | ||
| var import_zod = require("zod"); | ||
| var serialize = (data, config = {}) => { | ||
@@ -41,0 +40,0 @@ const validatedData = config.schema ? config.schema.parse(data) : data; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/json.index.ts","../src/json.bundle.ts","../src/json.lib.ts"],"sourcesContent":["export * from \"./json.bundle.ts\";\nexport * as json from \"./json.bundle.ts\";\nexport { JsonParseException } from \"./json.lib.ts\";\n","export { deserialize, serialize } from \"./json.lib.ts\";\n","import { type ZodSchema } from \"zod\";\nimport { type Stringable } from \"../../shared/src/ts.utils.ts\";\n\n// Todo: check if passing \"zod\" as peer dependency breaks the build\n\n/**\n * Serializes data to JSON\n * @param data The data to serialize\n * @param config.pretty Whether to pretty print the JSON\n * @param config.schema Optional Zod schema to validate the data against before serializing\n * @returns The JSON as a string\n */\nexport const serialize = (\n data: any,\n config: { pretty?: boolean; schema?: ZodSchema<any> } = {},\n) => {\n const validatedData = config.schema ? config.schema.parse(data) : data;\n return JSON.stringify(validatedData, null, config.pretty ? 2 : undefined);\n};\n\n/**\n * Deserializes JSON to a TypeScript type\n * @param content The JSON content to deserialize\n * @param config.schema Optional Zod schema to validate the data against after deserializing\n * @returns The deserialized data as a js entity\n */\nexport const deserialize = <T = unknown>(\n content: Stringable,\n config: {\n schema?: ZodSchema<T>;\n } = {},\n): T => {\n try {\n const validatedData = JSON.parse(content.toString());\n if (config.schema) return config.schema.parse(validatedData);\n return validatedData as T;\n } catch (error) {\n throw new JsonParseException(content.toString(), error);\n }\n};\n\nexport class JsonParseException extends Error {\n constructor(value: string, cause?: any) {\n const message = `\nFailed to parse JSON\n\n[JSON String Value]:\n ${value}\n\n[Cause]:\n ${cause instanceof Error ? cause.message : String(cause)}\n `;\n\n super(message, { cause });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,iBAA+B;AAYxB,IAAM,YAAY,CACvB,MACA,SAAwD,CAAC,MACtD;AACH,QAAM,gBAAgB,OAAO,SAAS,OAAO,OAAO,MAAM,IAAI,IAAI;AAClE,SAAO,KAAK,UAAU,eAAe,MAAM,OAAO,SAAS,IAAI,MAAS;AAC1E;AAQO,IAAM,cAAc,CACzB,SACA,SAEI,CAAC,MACC;AACN,MAAI;AACF,UAAM,gBAAgB,KAAK,MAAM,QAAQ,SAAS,CAAC;AACnD,QAAI,OAAO,OAAQ,QAAO,OAAO,OAAO,MAAM,aAAa;AAC3D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,mBAAmB,QAAQ,SAAS,GAAG,KAAK;AAAA,EACxD;AACF;AAEO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC5C,YAAY,OAAe,OAAa;AACtC,UAAM,UAAU;AAAA;AAAA;AAAA;AAAA,IAIhB,KAAK;AAAA;AAAA;AAAA,IAGL,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA;AAGtD,UAAM,SAAS,EAAE,MAAM,CAAC;AAAA,EAC1B;AACF;","names":[]} | ||
| {"version":3,"sources":["../src/json.index.ts","../src/json.bundle.ts","../src/json.lib.ts"],"sourcesContent":["export * from \"./json.bundle.ts\";\nexport * as json from \"./json.bundle.ts\";\nexport { JsonParseException } from \"./json.lib.ts\";\n","export { deserialize, serialize } from \"./json.lib.ts\";\n","import type { ZodSchema } from \"zod\";\nimport type { Stringable } from \"../../shared/src/ts.utils.ts\";\n\n// Todo: check if passing \"zod\" as peer dependency breaks the build\n\n/**\n * Serializes data to JSON\n * @param data The data to serialize\n * @param config.pretty Whether to pretty print the JSON\n * @param config.schema Optional Zod schema to validate the data against before serializing\n * @returns The JSON as a string\n */\nexport const serialize = (\n data: any,\n config: { pretty?: boolean; schema?: ZodSchema<any> } = {},\n) => {\n const validatedData = config.schema ? config.schema.parse(data) : data;\n return JSON.stringify(validatedData, null, config.pretty ? 2 : undefined);\n};\n\n/**\n * Deserializes JSON to a TypeScript type\n * @param content The JSON content to deserialize\n * @param config.schema Optional Zod schema to validate the data against after deserializing\n * @returns The deserialized data as a js entity\n */\nexport const deserialize = <T = unknown>(\n content: Stringable,\n config: {\n schema?: ZodSchema<T>;\n } = {},\n): T => {\n try {\n const validatedData = JSON.parse(content.toString());\n if (config.schema) return config.schema.parse(validatedData);\n return validatedData as T;\n } catch (error) {\n throw new JsonParseException(content.toString(), error);\n }\n};\n\nexport class JsonParseException extends Error {\n constructor(value: string, cause?: any) {\n const message = `\nFailed to parse JSON\n\n[JSON String Value]:\n ${value}\n\n[Cause]:\n ${cause instanceof Error ? cause.message : String(cause)}\n `;\n\n super(message, { cause });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;ACYO,IAAM,YAAY,CACvB,MACA,SAAwD,CAAC,MACtD;AACH,QAAM,gBAAgB,OAAO,SAAS,OAAO,OAAO,MAAM,IAAI,IAAI;AAClE,SAAO,KAAK,UAAU,eAAe,MAAM,OAAO,SAAS,IAAI,MAAS;AAC1E;AAQO,IAAM,cAAc,CACzB,SACA,SAEI,CAAC,MACC;AACN,MAAI;AACF,UAAM,gBAAgB,KAAK,MAAM,QAAQ,SAAS,CAAC;AACnD,QAAI,OAAO,OAAQ,QAAO,OAAO,OAAO,MAAM,aAAa;AAC3D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,mBAAmB,QAAQ,SAAS,GAAG,KAAK;AAAA,EACxD;AACF;AAEO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC5C,YAAY,OAAe,OAAa;AACtC,UAAM,UAAU;AAAA;AAAA;AAAA;AAAA,IAIhB,KAAK;AAAA;AAAA;AAAA,IAGL,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA;AAGtD,UAAM,SAAS,EAAE,MAAM,CAAC;AAAA,EAC1B;AACF;","names":[]} |
@@ -15,3 +15,2 @@ var __defProp = Object.defineProperty; | ||
| // src/json.lib.ts | ||
| import "zod"; | ||
| var serialize = (data, config = {}) => { | ||
@@ -18,0 +17,0 @@ const validatedData = config.schema ? config.schema.parse(data) : data; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../src/json.bundle.ts","../src/json.lib.ts"],"sourcesContent":["export { deserialize, serialize } from \"./json.lib.ts\";\n","import { type ZodSchema } from \"zod\";\nimport { type Stringable } from \"../../shared/src/ts.utils.ts\";\n\n// Todo: check if passing \"zod\" as peer dependency breaks the build\n\n/**\n * Serializes data to JSON\n * @param data The data to serialize\n * @param config.pretty Whether to pretty print the JSON\n * @param config.schema Optional Zod schema to validate the data against before serializing\n * @returns The JSON as a string\n */\nexport const serialize = (\n data: any,\n config: { pretty?: boolean; schema?: ZodSchema<any> } = {},\n) => {\n const validatedData = config.schema ? config.schema.parse(data) : data;\n return JSON.stringify(validatedData, null, config.pretty ? 2 : undefined);\n};\n\n/**\n * Deserializes JSON to a TypeScript type\n * @param content The JSON content to deserialize\n * @param config.schema Optional Zod schema to validate the data against after deserializing\n * @returns The deserialized data as a js entity\n */\nexport const deserialize = <T = unknown>(\n content: Stringable,\n config: {\n schema?: ZodSchema<T>;\n } = {},\n): T => {\n try {\n const validatedData = JSON.parse(content.toString());\n if (config.schema) return config.schema.parse(validatedData);\n return validatedData as T;\n } catch (error) {\n throw new JsonParseException(content.toString(), error);\n }\n};\n\nexport class JsonParseException extends Error {\n constructor(value: string, cause?: any) {\n const message = `\nFailed to parse JSON\n\n[JSON String Value]:\n ${value}\n\n[Cause]:\n ${cause instanceof Error ? cause.message : String(cause)}\n `;\n\n super(message, { cause });\n }\n}\n"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,OAA+B;AAYxB,IAAM,YAAY,CACvB,MACA,SAAwD,CAAC,MACtD;AACH,QAAM,gBAAgB,OAAO,SAAS,OAAO,OAAO,MAAM,IAAI,IAAI;AAClE,SAAO,KAAK,UAAU,eAAe,MAAM,OAAO,SAAS,IAAI,MAAS;AAC1E;AAQO,IAAM,cAAc,CACzB,SACA,SAEI,CAAC,MACC;AACN,MAAI;AACF,UAAM,gBAAgB,KAAK,MAAM,QAAQ,SAAS,CAAC;AACnD,QAAI,OAAO,OAAQ,QAAO,OAAO,OAAO,MAAM,aAAa;AAC3D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,mBAAmB,QAAQ,SAAS,GAAG,KAAK;AAAA,EACxD;AACF;AAEO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC5C,YAAY,OAAe,OAAa;AACtC,UAAM,UAAU;AAAA;AAAA;AAAA;AAAA,IAIhB,KAAK;AAAA;AAAA;AAAA,IAGL,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA;AAGtD,UAAM,SAAS,EAAE,MAAM,CAAC;AAAA,EAC1B;AACF;","names":[]} | ||
| {"version":3,"sources":["../src/json.bundle.ts","../src/json.lib.ts"],"sourcesContent":["export { deserialize, serialize } from \"./json.lib.ts\";\n","import type { ZodSchema } from \"zod\";\nimport type { Stringable } from \"../../shared/src/ts.utils.ts\";\n\n// Todo: check if passing \"zod\" as peer dependency breaks the build\n\n/**\n * Serializes data to JSON\n * @param data The data to serialize\n * @param config.pretty Whether to pretty print the JSON\n * @param config.schema Optional Zod schema to validate the data against before serializing\n * @returns The JSON as a string\n */\nexport const serialize = (\n data: any,\n config: { pretty?: boolean; schema?: ZodSchema<any> } = {},\n) => {\n const validatedData = config.schema ? config.schema.parse(data) : data;\n return JSON.stringify(validatedData, null, config.pretty ? 2 : undefined);\n};\n\n/**\n * Deserializes JSON to a TypeScript type\n * @param content The JSON content to deserialize\n * @param config.schema Optional Zod schema to validate the data against after deserializing\n * @returns The deserialized data as a js entity\n */\nexport const deserialize = <T = unknown>(\n content: Stringable,\n config: {\n schema?: ZodSchema<T>;\n } = {},\n): T => {\n try {\n const validatedData = JSON.parse(content.toString());\n if (config.schema) return config.schema.parse(validatedData);\n return validatedData as T;\n } catch (error) {\n throw new JsonParseException(content.toString(), error);\n }\n};\n\nexport class JsonParseException extends Error {\n constructor(value: string, cause?: any) {\n const message = `\nFailed to parse JSON\n\n[JSON String Value]:\n ${value}\n\n[Cause]:\n ${cause instanceof Error ? cause.message : String(cause)}\n `;\n\n super(message, { cause });\n }\n}\n"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACYO,IAAM,YAAY,CACvB,MACA,SAAwD,CAAC,MACtD;AACH,QAAM,gBAAgB,OAAO,SAAS,OAAO,OAAO,MAAM,IAAI,IAAI;AAClE,SAAO,KAAK,UAAU,eAAe,MAAM,OAAO,SAAS,IAAI,MAAS;AAC1E;AAQO,IAAM,cAAc,CACzB,SACA,SAEI,CAAC,MACC;AACN,MAAI;AACF,UAAM,gBAAgB,KAAK,MAAM,QAAQ,SAAS,CAAC;AACnD,QAAI,OAAO,OAAQ,QAAO,OAAO,OAAO,MAAM,aAAa;AAC3D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,mBAAmB,QAAQ,SAAS,GAAG,KAAK;AAAA,EACxD;AACF;AAEO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC5C,YAAY,OAAe,OAAa;AACtC,UAAM,UAAU;AAAA;AAAA;AAAA;AAAA,IAIhB,KAAK;AAAA;AAAA;AAAA,IAGL,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA;AAGtD,UAAM,SAAS,EAAE,MAAM,CAAC;AAAA,EAC1B;AACF;","names":[]} |
+3
-3
@@ -7,3 +7,3 @@ { | ||
| }, | ||
| "version": "1.1.6", | ||
| "version": "1.1.7", | ||
| "description": "Schema-safe and type-safe JSON serialization and deserialization", | ||
@@ -53,3 +53,3 @@ "keywords": [ | ||
| "tsup": "^8.4.0", | ||
| "typescript": "^5.7.3", | ||
| "typescript": "^5.8.2", | ||
| "zod": "^3.24.2" | ||
@@ -65,3 +65,3 @@ }, | ||
| ], | ||
| "gitHead": "9351f651b39cf757bc37c3e2ab9c516c0e2ed127" | ||
| "gitHead": "4aae6e86f7664e5b928ecb3a492ec035307168d1" | ||
| } |
+0
-3
@@ -5,5 +5,2 @@ # @synstack/json | ||
| > [!WARNING] | ||
| > This package is included in the [@synstack/synscript](https://github.com/pAIrprogio/synscript) package. It is not recommended to install both packages at the same time. | ||
| > [!NOTE] | ||
@@ -10,0 +7,0 @@ > This package is accessible through [@synstack/fs](../fs/README.md) for convenience. |
+2
-2
@@ -1,3 +0,3 @@ | ||
| import { type ZodSchema } from "zod"; | ||
| import { type Stringable } from "../../shared/src/ts.utils.ts"; | ||
| import type { ZodSchema } from "zod"; | ||
| import type { Stringable } from "../../shared/src/ts.utils.ts"; | ||
@@ -4,0 +4,0 @@ // Todo: check if passing "zod" as peer dependency breaks the build |
17074
-1.48%198
-1%121
-2.42%