@infra-blocks/zod-utils 0.25.0 → 0.26.0

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/README.md CHANGED
@@ -92,6 +92,25 @@ The `zu.codec.stringSplit(separator)` utility is a factory returning a codec whe
92
92
  `z.string()`, the second schema is `z.array(z.string())`, and the transformations back and forth
93
93
  are accomplished using `String.split` and `Array.join` respectively, using the provided separator.
94
94
 
95
+ #### stringToBuffer
96
+
97
+ The `zu.codec.stringToBuffer(encoding)` utility is a factory returning a codec where the first
98
+ schema is `z.string()`, the secon schema is `z.instanceof(Buffer)`, and the transformations
99
+ back and forth are accomplished using `Buffer.from` and `buffer.toString` with the provided
100
+ encoding.
101
+
102
+ ```typescript
103
+ import { zu } from "@infra-blocks/zod-utils";
104
+
105
+ // Defaults to utf-8, because Buffer functions default to utf-8.
106
+ const utf8Codec = zu.codec.stringToBuffer();
107
+ // A specific encoding can be provided.
108
+ const base64Codec = zu.codec.stringToBuffer("base64");
109
+
110
+ utf8Codec.parse("1234"); // Returns Buffer.from("1234");
111
+ base64codec.parse("1234"); // Returns Buffer.from("1234", "base64");
112
+ ```
113
+
95
114
  #### stringToInteger
96
115
 
97
116
  The `zu.codec.stringToInteger()` codec is taken almost verbatim
@@ -4,7 +4,8 @@ declare const codec: {
4
4
  ms: (options?: {
5
5
  long: boolean;
6
6
  }) => import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodNumber>;
7
- stringtoInteger: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodString, "IntegerString">, import("zod/v4/core").$ZodBranded<import("zod").ZodInt, "Integer">>;
7
+ stringToBuffer: (encoding?: BufferEncoding) => import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>>;
8
+ stringToInteger: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodString, "IntegerString">, import("zod/v4/core").$ZodBranded<import("zod").ZodInt, "Integer">>;
8
9
  stringToJson: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodString, "JsonString">, import("zod").ZodType<import("../json/json.js").Json, unknown, import("zod/v4/core").$ZodTypeInternals<import("../json/json.js").Json, unknown>>>;
9
10
  stringToUrl: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodURL, "UrlString">, import("zod").ZodCustom<import("url").URL, import("url").URL>>;
10
11
  };
@@ -4,6 +4,7 @@ exports.codec = void 0;
4
4
  const csv_js_1 = require("./csv.js");
5
5
  const json_parse_js_1 = require("./json-parse.js");
6
6
  const ms_js_1 = require("./ms.js");
7
+ const string_to_buffer_js_1 = require("./string-to-buffer.js");
7
8
  const string_to_integer_js_1 = require("./string-to-integer.js");
8
9
  const string_to_json_js_1 = require("./string-to-json.js");
9
10
  const string_to_url_js_1 = require("./string-to-url.js");
@@ -11,7 +12,8 @@ const codec = {
11
12
  csv: csv_js_1.csv,
12
13
  jsonParse: json_parse_js_1.jsonParse,
13
14
  ms: ms_js_1.ms,
14
- stringtoInteger: string_to_integer_js_1.stringToInteger,
15
+ stringToBuffer: string_to_buffer_js_1.stringToBuffer,
16
+ stringToInteger: string_to_integer_js_1.stringToInteger,
15
17
  stringToJson: string_to_json_js_1.stringToJson,
16
18
  stringToUrl: string_to_url_js_1.stringToUrl,
17
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codec/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+B;AAC/B,mDAA4C;AAC5C,mCAA6B;AAC7B,iEAAyD;AACzD,2DAAmD;AACnD,yDAAiD;AAEjD,MAAM,KAAK,GAAG;IACZ,GAAG,EAAH,YAAG;IACH,SAAS,EAAT,yBAAS;IACT,EAAE,EAAF,UAAE;IACF,eAAe,EAAE,sCAAe;IAChC,YAAY,EAAZ,gCAAY;IACZ,WAAW,EAAX,8BAAW;CACZ,CAAC;AAEO,sBAAK"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codec/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+B;AAC/B,mDAA4C;AAC5C,mCAA6B;AAC7B,+DAAuD;AACvD,iEAAyD;AACzD,2DAAmD;AACnD,yDAAiD;AAEjD,MAAM,KAAK,GAAG;IACZ,GAAG,EAAH,YAAG;IACH,SAAS,EAAT,yBAAS;IACT,EAAE,EAAF,UAAE;IACF,cAAc,EAAd,oCAAc;IACd,eAAe,EAAf,sCAAe;IACf,YAAY,EAAZ,gCAAY;IACZ,WAAW,EAAX,8BAAW;CACZ,CAAC;AAEO,sBAAK"}
@@ -0,0 +1,2 @@
1
+ import { z } from "zod";
2
+ export declare const stringToBuffer: (encoding?: BufferEncoding) => z.ZodCodec<z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>>;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringToBuffer = void 0;
4
+ const zod_1 = require("zod");
5
+ const stringToBuffer = (encoding) => {
6
+ return zod_1.z.codec(zod_1.z.string(), zod_1.z.instanceof(Buffer), {
7
+ decode: (str) => Buffer.from(str, encoding),
8
+ encode: (buf) => buf.toString(encoding),
9
+ });
10
+ };
11
+ exports.stringToBuffer = stringToBuffer;
12
+ //# sourceMappingURL=string-to-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-to-buffer.js","sourceRoot":"","sources":["../../../src/codec/string-to-buffer.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEjB,MAAM,cAAc,GAAG,CAAC,QAAyB,EAAE,EAAE;IAC1D,OAAO,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAC/C,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC3C,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACxC,CAAC,CAAC;AACL,CAAC,CAAC;AALW,QAAA,cAAc,kBAKzB"}
@@ -4,7 +4,8 @@ declare const codec: {
4
4
  ms: (options?: {
5
5
  long: boolean;
6
6
  }) => import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodNumber>;
7
- stringtoInteger: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodString, "IntegerString">, import("zod/v4/core").$ZodBranded<import("zod").ZodInt, "Integer">>;
7
+ stringToBuffer: (encoding?: BufferEncoding) => import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>>;
8
+ stringToInteger: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodString, "IntegerString">, import("zod/v4/core").$ZodBranded<import("zod").ZodInt, "Integer">>;
8
9
  stringToJson: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodString, "JsonString">, import("zod").ZodType<import("../json/json.js").Json, unknown, import("zod/v4/core").$ZodTypeInternals<import("../json/json.js").Json, unknown>>>;
9
10
  stringToUrl: () => import("zod").ZodCodec<import("zod/v4/core").$ZodBranded<import("zod").ZodURL, "UrlString">, import("zod").ZodCustom<import("url").URL, import("url").URL>>;
10
11
  };
@@ -1,6 +1,7 @@
1
1
  import { csv } from "./csv.js";
2
2
  import { jsonParse } from "./json-parse.js";
3
3
  import { ms } from "./ms.js";
4
+ import { stringToBuffer } from "./string-to-buffer.js";
4
5
  import { stringToInteger } from "./string-to-integer.js";
5
6
  import { stringToJson } from "./string-to-json.js";
6
7
  import { stringToUrl } from "./string-to-url.js";
@@ -8,7 +9,8 @@ const codec = {
8
9
  csv,
9
10
  jsonParse,
10
11
  ms,
11
- stringtoInteger: stringToInteger,
12
+ stringToBuffer,
13
+ stringToInteger,
12
14
  stringToJson,
13
15
  stringToUrl,
14
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codec/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,KAAK,GAAG;IACZ,GAAG;IACH,SAAS;IACT,EAAE;IACF,eAAe,EAAE,eAAe;IAChC,YAAY;IACZ,WAAW;CACZ,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codec/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,KAAK,GAAG;IACZ,GAAG;IACH,SAAS;IACT,EAAE;IACF,cAAc;IACd,eAAe;IACf,YAAY;IACZ,WAAW;CACZ,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { z } from "zod";
2
+ export declare const stringToBuffer: (encoding?: BufferEncoding) => z.ZodCodec<z.ZodString, z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>>;
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ export const stringToBuffer = (encoding) => {
3
+ return z.codec(z.string(), z.instanceof(Buffer), {
4
+ decode: (str) => Buffer.from(str, encoding),
5
+ encode: (buf) => buf.toString(encoding),
6
+ });
7
+ };
8
+ //# sourceMappingURL=string-to-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-to-buffer.js","sourceRoot":"","sources":["../../../src/codec/string-to-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAyB,EAAE,EAAE;IAC1D,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAC/C,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC3C,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACxC,CAAC,CAAC;AACL,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infra-blocks/zod-utils",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "Extensions to the zod package.",
5
5
  "keywords": [
6
6
  "zod",