@trayio/commons 4.71.0 → 4.73.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.
@@ -10,6 +10,7 @@ export interface Base64Interface {
10
10
  typeDescriptor: t.BrandC<t.StringC, Base64Brand>;
11
11
  typeCodec: Codec<Base64>;
12
12
  fromBase64String: (value: string) => E.Either<Error, Base64>;
13
+ fromStringToBase64String: (value: string) => string;
13
14
  encodeBinary: (value: ArrayBuffer) => Base64;
14
15
  decodeBinary: (value: Base64) => ArrayBuffer;
15
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Base64.d.ts","sourceRoot":"","sources":["../../src/base64/Base64.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAUvC,QAAA,MAAM,oBAAoB,kCAIzB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAK3D,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACjD,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7D,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC;IAC7C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,WAAW,CAAC;CAC7C;AAED,eAAO,MAAM,MAAM,EAAE,eAqBpB,CAAC"}
1
+ {"version":3,"file":"Base64.d.ts","sourceRoot":"","sources":["../../src/base64/Base64.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAUvC,QAAA,MAAM,oBAAoB,kCAIzB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAK3D,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACjD,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7D,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACpD,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC;IAC7C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,WAAW,CAAC;CAC7C;AAED,eAAO,MAAM,MAAM,EAAE,eAuBpB,CAAC"}
@@ -38,6 +38,7 @@ exports.Base64 = {
38
38
  typeDescriptor: base64TypeDescriptor,
39
39
  typeCodec: base64TypeCodec,
40
40
  fromBase64String: (value) => base64TypeCodec.decode(value),
41
+ fromStringToBase64String: (value) => Buffer.from(value).toString('base64'),
41
42
  encodeBinary: (value) => {
42
43
  const base64data = Buffer.from(value).toString('base64');
43
44
  return E.getOrElse(() => {
@@ -35,6 +35,11 @@ describe('Base64', () => {
35
35
  })(base64Result);
36
36
  expect(base64.toString()).toStrictEqual(testValue);
37
37
  });
38
+ test('it should encode a string to base64', () => {
39
+ const testValue = 'this is a test string.';
40
+ const base64 = Base64_1.Base64.fromStringToBase64String(testValue);
41
+ expect(base64).toStrictEqual('dGhpcyBpcyBhIHRlc3Qgc3RyaW5nLg==');
42
+ });
38
43
  test('should encode and decode an ArrayBuffer', () => {
39
44
  const testValue = { test: 'value' };
40
45
  const arrayBuffer = new JsonSerialization_1.JsonSerialization().serialize(testValue);
@@ -1,9 +1,11 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { Readable } from 'stream';
3
4
  import * as TE from 'fp-ts/TaskEither';
4
5
  export interface BufferExtensionsInterface {
5
6
  readableToArrayBuffer: (stream: Readable, size?: number) => TE.TaskEither<Error, ArrayBuffer>;
6
7
  arrayBufferToReadable: (arrayBuffer: ArrayBuffer) => Readable;
8
+ bufferToArrayBuffer: (buffer: Buffer) => ArrayBuffer;
7
9
  }
8
10
  export declare const BufferExtensions: BufferExtensionsInterface;
9
11
  //# sourceMappingURL=BufferExtensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BufferExtensions.d.ts","sourceRoot":"","sources":["../../src/buffer/BufferExtensions.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,MAAM,WAAW,yBAAyB;IACzC,qBAAqB,EAAE,CACtB,MAAM,EAAE,QAAQ,EAChB,IAAI,CAAC,EAAE,MAAM,KACT,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACvC,qBAAqB,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,QAAQ,CAAC;CAC9D;AAED,eAAO,MAAM,gBAAgB,EAAE,yBAsB9B,CAAC"}
1
+ {"version":3,"file":"BufferExtensions.d.ts","sourceRoot":"","sources":["../../src/buffer/BufferExtensions.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,MAAM,WAAW,yBAAyB;IACzC,qBAAqB,EAAE,CACtB,MAAM,EAAE,QAAQ,EAChB,IAAI,CAAC,EAAE,MAAM,KACT,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACvC,qBAAqB,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,QAAQ,CAAC;IAC9D,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC;CACrD;AAED,eAAO,MAAM,gBAAgB,EAAE,yBA2B9B,CAAC"}
@@ -41,4 +41,5 @@ exports.BufferExtensions = {
41
41
  return Uint8Array.from(buffer).buffer;
42
42
  }, (error) => error),
43
43
  arrayBufferToReadable: (arrayBuffer) => stream_1.Readable.from(Buffer.from(arrayBuffer)),
44
+ bufferToArrayBuffer: (buffer) => buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength),
44
45
  };
@@ -59,4 +59,9 @@ describe('Buffer Tests', () => {
59
59
  })(bufferResult);
60
60
  expect(buffer).toEqual(new util_1.TextEncoder().encode('').buffer);
61
61
  });
62
+ it('should encode a buffer to an array buffer', () => {
63
+ const buffer = Buffer.from('test');
64
+ const arrayBuffer = BufferExtensions_1.BufferExtensions.bufferToArrayBuffer(buffer);
65
+ expect(arrayBuffer).toEqual(new util_1.TextEncoder().encode('test').buffer);
66
+ });
62
67
  });
@@ -0,0 +1,13 @@
1
+ import * as E from 'fp-ts/lib/Either';
2
+ import { Codec } from './Codec';
3
+ export declare class PartialRedactionCodec implements Codec<unknown> {
4
+ static instance: Codec<unknown>;
5
+ encode(value: unknown): unknown;
6
+ decode(value: unknown): E.Either<Error, unknown>;
7
+ private isObject;
8
+ private removeNullValuesIfPresent;
9
+ private removeNullFromArrayIfPresent;
10
+ private removeNullFromObjectIfPresent;
11
+ private partiallyRedactPrimitive;
12
+ }
13
+ //# sourceMappingURL=PartialRedactionCodec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PartialRedactionCodec.d.ts","sourceRoot":"","sources":["../../src/codec/PartialRedactionCodec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,qBAAsB,YAAW,KAAK,CAAC,OAAO,CAAC;IAC3D,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAA+B;IAE9D,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAI/B,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC;IAIhD,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,6BAA6B;IAcrC,OAAO,CAAC,wBAAwB,CAM9B;CACF"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.PartialRedactionCodec = void 0;
27
+ const E = __importStar(require("fp-ts/lib/Either"));
28
+ const lodash_1 = require("lodash");
29
+ class PartialRedactionCodec {
30
+ static instance = new PartialRedactionCodec();
31
+ encode(value) {
32
+ return this.removeNullValuesIfPresent(value);
33
+ }
34
+ decode(value) {
35
+ return E.right(value);
36
+ }
37
+ isObject(value) {
38
+ return (0, lodash_1.isPlainObject)(value);
39
+ }
40
+ removeNullValuesIfPresent(value) {
41
+ if (value === null) {
42
+ return value;
43
+ }
44
+ if (this.isObject(value)) {
45
+ return this.removeNullFromObjectIfPresent(value);
46
+ }
47
+ if (Array.isArray(value)) {
48
+ return this.removeNullFromArrayIfPresent(value);
49
+ }
50
+ return value;
51
+ }
52
+ removeNullFromArrayIfPresent(value) {
53
+ return value.reduce((acc, propertyValue) => [
54
+ ...acc,
55
+ this.removeNullValuesIfPresent(propertyValue),
56
+ ], []);
57
+ }
58
+ removeNullFromObjectIfPresent(value) {
59
+ return Object.entries(value).reduce((acc, [key, propertyValue]) => {
60
+ if (this.isObject(propertyValue)) {
61
+ const nestedObject = this.removeNullFromObjectIfPresent(propertyValue);
62
+ return { ...acc, [key]: nestedObject };
63
+ }
64
+ if (Array.isArray(propertyValue)) {
65
+ const nestedArray = this.removeNullFromArrayIfPresent(propertyValue);
66
+ return { ...acc, [key]: nestedArray };
67
+ }
68
+ return { ...acc, [key]: this.partiallyRedactPrimitive(propertyValue) };
69
+ }, {});
70
+ }
71
+ partiallyRedactPrimitive = (value) => {
72
+ if (typeof value === 'string') {
73
+ return value.length > 4 ? `${value.substring(0, 4)}.....` : value;
74
+ }
75
+ const type = typeof value;
76
+ return `REDACTED <${type}>`;
77
+ };
78
+ }
79
+ exports.PartialRedactionCodec = PartialRedactionCodec;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PartialRedactionCodec.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PartialRedactionCodec.test.d.ts","sourceRoot":"","sources":["../../src/codec/PartialRedactionCodec.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const PartialRedactionCodec_1 = require("./PartialRedactionCodec");
4
+ describe('PartialRedactionCodec', () => {
5
+ it('should redact primitive typed data', () => {
6
+ const value = {
7
+ password: 'password',
8
+ username: 'username',
9
+ address: {
10
+ city: 'city',
11
+ street: 'street',
12
+ number: 123,
13
+ },
14
+ };
15
+ const actualValue = PartialRedactionCodec_1.PartialRedactionCodec.instance.encode(value);
16
+ const expectedValue = {
17
+ password: 'pass.....',
18
+ username: 'user.....',
19
+ address: {
20
+ city: 'city',
21
+ street: 'stre.....',
22
+ number: 'REDACTED <number>',
23
+ },
24
+ };
25
+ expect(actualValue).toStrictEqual(expectedValue);
26
+ });
27
+ it('should redact sensitive typed data in nested arrays', () => {
28
+ const value = {
29
+ users: [{ password: 'password', username: 'username' }],
30
+ };
31
+ const actualValue = PartialRedactionCodec_1.PartialRedactionCodec.instance.encode(value);
32
+ const expectedValue = {
33
+ users: [{ password: 'pass.....', username: 'user.....' }],
34
+ };
35
+ expect(actualValue).toStrictEqual(expectedValue);
36
+ });
37
+ it('should redact sensitive typed data in nested objects', () => {
38
+ const value = {
39
+ user: { password: 'password', username: 'username' },
40
+ };
41
+ const actualValue = PartialRedactionCodec_1.PartialRedactionCodec.instance.encode(value);
42
+ const expectedValue = {
43
+ user: { password: 'pass.....', username: 'user.....' },
44
+ };
45
+ expect(actualValue).toStrictEqual(expectedValue);
46
+ });
47
+ it('should handle redacting data when complex types are parsed', () => {
48
+ const dob = new Date();
49
+ const creationDate = new Date();
50
+ const value = {
51
+ user: {
52
+ password: 'testing',
53
+ username: 'username',
54
+ dob,
55
+ creationDate,
56
+ },
57
+ };
58
+ const actualValue = PartialRedactionCodec_1.PartialRedactionCodec.instance.encode(value);
59
+ const expectedValue = {
60
+ user: {
61
+ password: 'test.....',
62
+ username: 'user.....',
63
+ dob: 'REDACTED <object>',
64
+ creationDate: 'REDACTED <object>',
65
+ },
66
+ };
67
+ expect(actualValue).toStrictEqual(expectedValue);
68
+ });
69
+ });
@@ -1,5 +1,6 @@
1
1
  import * as TE from 'fp-ts/TaskEither';
2
2
  import * as E from 'fp-ts/Either';
3
+ import * as O from 'fp-ts/Option';
3
4
  import * as t from 'io-ts';
4
5
  import { Codec } from '../codec/Codec';
5
6
  export type DynamicType = string | number | boolean | null | DynamicObject | DynamicArray;
@@ -10,6 +11,11 @@ export type DynamicArray = Array<DynamicType>;
10
11
  export interface DynamicObjectInterface {
11
12
  fromBase64String: (base64Str: string) => E.Either<Error, DynamicObject>;
12
13
  removeNullValues: (value: DynamicObject) => DynamicObject;
14
+ getTypedProperty: <T>(dynamicObject: DynamicObject, name: string, codec: Codec<T>) => O.Option<T>;
15
+ getObjectProperty: (dynamicObject: DynamicObject, name: string) => O.Option<DynamicObject>;
16
+ getStringProperty: (dynamicObject: DynamicObject, name: string) => O.Option<string>;
17
+ getNumberProperty: (dynamicObject: DynamicObject, name: string) => O.Option<number>;
18
+ getBooleanProperty: (dynamicObject: DynamicObject, name: string) => O.Option<boolean>;
13
19
  }
14
20
  export declare const DynamicObject: DynamicObjectInterface;
15
21
  export interface DynamicTypeInterface {
@@ -17,6 +23,9 @@ export interface DynamicTypeInterface {
17
23
  writeToFile: (path: string, value: DynamicType) => E.Either<Error, undefined>;
18
24
  writeToFileAsync: (path: string, value: DynamicType) => TE.TaskEither<Error, undefined>;
19
25
  safeCast: <T>(dynamicType: DynamicType, codec: Codec<T>) => E.Either<Error, T>;
26
+ getStringProperty: (dynamicObject: DynamicObject, name: string) => O.Option<string>;
27
+ getNumberProperty: (dynamicObject: DynamicObject, name: string) => O.Option<number>;
28
+ getBooleanProperty: (dynamicObject: DynamicObject, name: string) => O.Option<boolean>;
20
29
  }
21
30
  export declare const DynamicType: DynamicTypeInterface;
22
31
  export declare const dynamicTypeDescriptor: t.Type<DynamicType>;
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicType.d.ts","sourceRoot":"","sources":["../../src/dynamictype/DynamicType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGvC,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAI3B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC,MAAM,MAAM,WAAW,GACpB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,aAAa,GACb,YAAY,CAAC;AAEhB,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAM9C,MAAM,WAAW,sBAAsB;IACtC,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACxE,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,aAAa,CAAC;CAC1D;AAED,eAAO,MAAM,aAAa,EAAE,sBAU3B,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC7D,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9E,gBAAgB,EAAE,CACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,KACd,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,EACX,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KACX,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,oBAuBzB,CAAC;AACF,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAWrD,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAG7D,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAG3D,CAAC;AAEF,eAAO,MAAM,2BAA2B,QAClC,OAAO,MAAM,EAAE,GAAG,CAAC,KACtB,WAUF,CAAC"}
1
+ {"version":3,"file":"DynamicType.d.ts","sourceRoot":"","sources":["../../src/dynamictype/DynamicType.ts"],"names":[],"mappings":"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"}
@@ -28,23 +28,33 @@ const TE = __importStar(require("fp-ts/TaskEither"));
28
28
  const fs = __importStar(require("fs"));
29
29
  const fse = __importStar(require("fs-extra"));
30
30
  const E = __importStar(require("fp-ts/Either"));
31
+ const O = __importStar(require("fp-ts/Option"));
31
32
  const function_1 = require("fp-ts/function");
32
33
  const t = __importStar(require("io-ts"));
33
34
  const Base64_1 = require("../base64/Base64");
34
35
  const JsonSerialization_1 = require("../serialization/JsonSerialization");
35
36
  const Try_1 = require("../try/Try");
36
37
  const RemoveNullValuesCodec_1 = require("../codec/RemoveNullValuesCodec");
38
+ const TypeCodec_1 = require("../codec/TypeCodec");
37
39
  const serializer = new JsonSerialization_1.JsonSerialization();
38
40
  const testRemoveNullValuesCodec = RemoveNullValuesCodec_1.RemoveNullValuesCodec.instance;
39
41
  exports.DynamicObject = {
40
42
  fromBase64String: (base64Str) => (0, function_1.pipe)(Base64_1.Base64.fromBase64String(base64Str), E.map((base64) => Base64_1.Base64.decodeBinary(base64)), E.chain((decoded) => serializer.deserialize(decoded)), E.map((decoded) => decoded)),
41
43
  removeNullValues: (value) => testRemoveNullValuesCodec.encode(value),
44
+ getTypedProperty: (dynamicObject, name, codec) => (0, function_1.pipe)((0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => O.fromEither(exports.DynamicType.safeCast(property, codec))))),
45
+ getObjectProperty: (dynamicObject, name) => exports.DynamicObject.getTypedProperty(dynamicObject, name, TypeCodec_1.TypeCodec.fromDescriptor(exports.dynamicObjectTypeDescriptor)),
46
+ getStringProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'string' ? O.some(property) : O.none)),
47
+ getNumberProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'number' ? O.some(property) : O.none)),
48
+ getBooleanProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'boolean' ? O.some(property) : O.none)),
42
49
  };
43
50
  exports.DynamicType = {
44
51
  readFromFile: (path) => (0, Try_1.tryToEither)(() => JSON.parse(fs.readFileSync(path, 'utf8'))),
45
52
  writeToFile: (path, value) => (0, function_1.pipe)((0, Try_1.tryToEither)(() => fs.writeFileSync(path, JSON.stringify(value))), E.map(() => undefined)),
46
53
  writeToFileAsync: (path, value) => (0, function_1.pipe)(TE.tryCatch(() => fse.writeFile(path, JSON.stringify(value)), (err) => new Error(err.message)), TE.map(() => undefined)),
47
54
  safeCast: (dynamicType, codec) => codec.decode(dynamicType),
55
+ getStringProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'string' ? O.some(property) : O.none)),
56
+ getNumberProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'number' ? O.some(property) : O.none)),
57
+ getBooleanProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'boolean' ? O.some(property) : O.none)),
48
58
  };
49
59
  exports.dynamicTypeDescriptor = t.recursion('DynamicType', () => t.union([
50
60
  t.string,
@@ -0,0 +1,11 @@
1
+ import * as t from 'io-ts';
2
+ import { HttpAgent, HttpCertificate, HttpContentType, HttpHeaders, HttpMethod, HttpQueryString, HttpQueryStringSingleValue, HttpQueryStringValue } from './Http';
3
+ export declare const httpMethodTypeDescriptor: t.Type<HttpMethod, unknown>;
4
+ export declare const httpContentTypeTypeDescriptor: t.Type<HttpContentType, unknown>;
5
+ export declare const httpQueryStringSingleValueTypeDescriptor: t.Type<HttpQueryStringSingleValue, unknown>;
6
+ export declare const httpQueryStringValueTypeDescriptor: t.Type<HttpQueryStringValue, unknown>;
7
+ export declare const httpQueryStringTypeDescriptor: t.Type<HttpQueryString, unknown>;
8
+ export declare const httpHeadersTypeDescriptor: t.Type<HttpHeaders, unknown>;
9
+ export declare const httpCertificateTypeDescriptor: t.Type<HttpCertificate, unknown>;
10
+ export declare const httpAgentTypeDescriptor: t.Type<HttpAgent, unknown>;
11
+ //# sourceMappingURL=HttpTypeDescriptors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpTypeDescriptors.d.ts","sourceRoot":"","sources":["../../src/http/HttpTypeDescriptors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EACN,SAAS,EACT,eAAe,EACf,eAAe,EACf,WAAW,EACX,UAAU,EACV,eAAe,EACf,0BAA0B,EAC1B,oBAAoB,EACpB,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,wBAAwB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAWhE,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAUzE,CAAC;AAEH,eAAO,MAAM,wCAAwC,EAAE,CAAC,CAAC,IAAI,CAC5D,0BAA0B,EAC1B,OAAO,CACkE,CAAC;AAE3E,eAAO,MAAM,kCAAkC,EAAE,CAAC,CAAC,IAAI,CACtD,oBAAoB,EACpB,OAAO,CAOP,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CACD,CAAC;AAE3E,eAAO,MAAM,yBAAyB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAIlE,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAOzE,CAAC;AAEH,eAAO,MAAM,uBAAuB,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAK9D,CAAC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.httpAgentTypeDescriptor = exports.httpCertificateTypeDescriptor = exports.httpHeadersTypeDescriptor = exports.httpQueryStringTypeDescriptor = exports.httpQueryStringValueTypeDescriptor = exports.httpQueryStringSingleValueTypeDescriptor = exports.httpContentTypeTypeDescriptor = exports.httpMethodTypeDescriptor = void 0;
27
+ const io_ts_types_1 = require("io-ts-types");
28
+ const t = __importStar(require("io-ts"));
29
+ const Http_1 = require("./Http");
30
+ exports.httpMethodTypeDescriptor = t.union([
31
+ t.literal(Http_1.HttpMethod.Delete),
32
+ t.literal(Http_1.HttpMethod.Get),
33
+ t.literal(Http_1.HttpMethod.Head),
34
+ t.literal(Http_1.HttpMethod.Options),
35
+ t.literal(Http_1.HttpMethod.Patch),
36
+ t.literal(Http_1.HttpMethod.Post),
37
+ t.literal(Http_1.HttpMethod.Put),
38
+ ], 'HttpMethod');
39
+ exports.httpContentTypeTypeDescriptor = t.union([
40
+ t.literal(Http_1.HttpContentType.FormUrlEncoded),
41
+ t.literal(Http_1.HttpContentType.Json),
42
+ t.literal(Http_1.HttpContentType.MultipartRequestBody),
43
+ t.literal(Http_1.HttpContentType.OctetStream),
44
+ t.literal(Http_1.HttpContentType.Text),
45
+ ], 'HttpContentType');
46
+ exports.httpQueryStringSingleValueTypeDescriptor = t.union([t.string, t.number, t.boolean], 'HttpQueryStringSingleValue');
47
+ exports.httpQueryStringValueTypeDescriptor = t.union([
48
+ exports.httpQueryStringSingleValueTypeDescriptor,
49
+ t.array(exports.httpQueryStringSingleValueTypeDescriptor),
50
+ ], 'HttpQueryStringValue');
51
+ exports.httpQueryStringTypeDescriptor = t.record(t.string, exports.httpQueryStringValueTypeDescriptor, 'HttpQueryString');
52
+ exports.httpHeadersTypeDescriptor = t.record(t.string, t.union([t.string, t.array(t.string)]), 'HttpHeaders');
53
+ exports.httpCertificateTypeDescriptor = t.type({
54
+ cert: t.string,
55
+ key: t.string,
56
+ }, 'HttpCertificate');
57
+ exports.httpAgentTypeDescriptor = t.type({
58
+ certificate: (0, io_ts_types_1.optionFromNullable)(exports.httpCertificateTypeDescriptor),
59
+ }, 'HttpAgent');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trayio/commons",
3
- "version": "4.71.0",
3
+ "version": "4.73.0",
4
4
  "description": "Extensions to the standard/core libraries and basic features",
5
5
  "exports": {
6
6
  "./*": "./dist/*.js"