@trayio/commons 5.33.0 → 5.35.0-unstable.fd7158a

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.
Files changed (146) hide show
  1. package/dist/base64/Base64.d.ts +5 -10
  2. package/dist/base64/Base64.d.ts.map +1 -1
  3. package/dist/base64/Base64.js +8 -40
  4. package/dist/base64/Base64.unit.test.js +4 -27
  5. package/dist/buffer/BufferExtensions.d.ts +4 -4
  6. package/dist/buffer/BufferExtensions.d.ts.map +1 -1
  7. package/dist/buffer/BufferExtensions.js +25 -38
  8. package/dist/buffer/BufferExtensions.unit.test.js +22 -45
  9. package/dist/callsite/CallSite.js +17 -7
  10. package/dist/codec/CamelCasePropertyNameCodec.d.ts +2 -2
  11. package/dist/codec/CamelCasePropertyNameCodec.d.ts.map +1 -1
  12. package/dist/codec/CamelCasePropertyNameCodec.js +2 -25
  13. package/dist/codec/Codec.abstract.test.d.ts +2 -2
  14. package/dist/codec/Codec.abstract.test.d.ts.map +1 -1
  15. package/dist/codec/Codec.abstract.test.js +5 -31
  16. package/dist/codec/Codec.d.ts +2 -2
  17. package/dist/codec/Codec.d.ts.map +1 -1
  18. package/dist/codec/CompositeCodec.d.ts +2 -2
  19. package/dist/codec/CompositeCodec.d.ts.map +1 -1
  20. package/dist/codec/CompositeCodec.js +2 -26
  21. package/dist/codec/PartialRedactionCodec.d.ts +2 -2
  22. package/dist/codec/PartialRedactionCodec.d.ts.map +1 -1
  23. package/dist/codec/PartialRedactionCodec.js +2 -25
  24. package/dist/codec/RemoveNullValuesCodec.d.ts +2 -2
  25. package/dist/codec/RemoveNullValuesCodec.d.ts.map +1 -1
  26. package/dist/codec/RemoveNullValuesCodec.js +2 -25
  27. package/dist/codec/RemoveTopLevelTagCodec.d.ts +2 -2
  28. package/dist/codec/RemoveTopLevelTagCodec.d.ts.map +1 -1
  29. package/dist/codec/RemoveTopLevelTagCodec.js +2 -25
  30. package/dist/codec/SensitiveRemoveTagAndRedactCodec.d.ts +2 -2
  31. package/dist/codec/SensitiveRemoveTagAndRedactCodec.d.ts.map +1 -1
  32. package/dist/codec/SensitiveRemoveTagAndRedactCodec.js +2 -25
  33. package/dist/codec/SensitiveRemoveTagAndRedactCodec.unit.test.js +15 -38
  34. package/dist/codec/SnakeCasePropertyNameCodec.d.ts +2 -2
  35. package/dist/codec/SnakeCasePropertyNameCodec.d.ts.map +1 -1
  36. package/dist/codec/SnakeCasePropertyNameCodec.js +2 -25
  37. package/dist/codec/TypeCodec.d.ts +24 -8
  38. package/dist/codec/TypeCodec.d.ts.map +1 -1
  39. package/dist/codec/TypeCodec.js +40 -48
  40. package/dist/codec/TypeCodec.unit.test.js +12 -38
  41. package/dist/dynamicschema/DynamicSchema.d.ts +6 -12
  42. package/dist/dynamicschema/DynamicSchema.d.ts.map +1 -1
  43. package/dist/dynamicschema/DynamicSchema.js +18 -41
  44. package/dist/dynamicschema/DynamicSchema.unit.test.js +51 -75
  45. package/dist/dynamictype/DynamicType.d.ts +17 -20
  46. package/dist/dynamictype/DynamicType.d.ts.map +1 -1
  47. package/dist/dynamictype/DynamicType.js +48 -35
  48. package/dist/effect/EffectExtensions.d.ts +29 -0
  49. package/dist/effect/EffectExtensions.d.ts.map +1 -0
  50. package/dist/effect/EffectExtensions.js +30 -0
  51. package/dist/effect/EffectExtensions.unit.test.d.ts +2 -0
  52. package/dist/effect/EffectExtensions.unit.test.d.ts.map +1 -0
  53. package/dist/effect/EffectExtensions.unit.test.js +59 -0
  54. package/dist/effect/Interop.d.ts +53 -0
  55. package/dist/effect/Interop.d.ts.map +1 -0
  56. package/dist/effect/Interop.js +56 -0
  57. package/dist/effect/Interop.unit.test.d.ts +2 -0
  58. package/dist/effect/Interop.unit.test.d.ts.map +1 -0
  59. package/dist/effect/Interop.unit.test.js +134 -0
  60. package/dist/effect/SchemaExtensions.d.ts +11 -0
  61. package/dist/effect/SchemaExtensions.d.ts.map +1 -0
  62. package/dist/effect/SchemaExtensions.js +7 -0
  63. package/dist/effect/SchemaExtensions.unit.test.d.ts +2 -0
  64. package/dist/effect/SchemaExtensions.unit.test.d.ts.map +1 -0
  65. package/dist/effect/SchemaExtensions.unit.test.js +29 -0
  66. package/dist/file/FakeFileStorage.d.ts +8 -8
  67. package/dist/file/FakeFileStorage.d.ts.map +1 -1
  68. package/dist/file/FakeFileStorage.js +16 -40
  69. package/dist/file/File.d.ts +10 -14
  70. package/dist/file/File.d.ts.map +1 -1
  71. package/dist/file/File.js +31 -24
  72. package/dist/file/FileStorage.abstract.test.d.ts.map +1 -1
  73. package/dist/file/FileStorage.abstract.test.js +18 -41
  74. package/dist/file/NodeFsFileStorage.d.ts +9 -11
  75. package/dist/file/NodeFsFileStorage.d.ts.map +1 -1
  76. package/dist/file/NodeFsFileStorage.integration.test.js +21 -45
  77. package/dist/file/NodeFsFileStorage.js +37 -29
  78. package/dist/http/Http.d.ts +11 -13
  79. package/dist/http/Http.d.ts.map +1 -1
  80. package/dist/http/Http.js +30 -22
  81. package/dist/http/Http.unit.test.js +3 -26
  82. package/dist/http/HttpClient.abstract.test.d.ts.map +1 -1
  83. package/dist/http/HttpClient.abstract.test.js +104 -108
  84. package/dist/http/HttpClient.d.ts +2 -2
  85. package/dist/http/HttpClient.d.ts.map +1 -1
  86. package/dist/http/HttpController.d.ts +2 -3
  87. package/dist/http/HttpController.d.ts.map +1 -1
  88. package/dist/http/HttpSchemas.d.ts +13 -0
  89. package/dist/http/HttpSchemas.d.ts.map +1 -0
  90. package/dist/http/HttpSchemas.js +23 -0
  91. package/dist/http/MultipartHttpRequestBody.integration.test.js +31 -20
  92. package/dist/http/MultipartHttpRequestBody.unit.test.js +70 -53
  93. package/dist/record/Record.d.ts +3 -3
  94. package/dist/record/Record.d.ts.map +1 -1
  95. package/dist/record/Record.js +9 -30
  96. package/dist/result/Result.d.ts +3 -3
  97. package/dist/result/Result.d.ts.map +1 -1
  98. package/dist/result/Result.js +9 -26
  99. package/dist/schema/DateFromUnixTime.d.ts +4 -0
  100. package/dist/schema/DateFromUnixTime.d.ts.map +1 -0
  101. package/dist/schema/DateFromUnixTime.js +10 -0
  102. package/dist/schema/DateFromUnixTime.unit.test.d.ts +2 -0
  103. package/dist/schema/DateFromUnixTime.unit.test.d.ts.map +1 -0
  104. package/dist/schema/DateFromUnixTime.unit.test.js +11 -0
  105. package/dist/schema/JsonSchemaIntrospector.js +17 -7
  106. package/dist/sensitive/Sensitive.d.ts +7 -3
  107. package/dist/sensitive/Sensitive.d.ts.map +1 -1
  108. package/dist/sensitive/Sensitive.js +23 -39
  109. package/dist/sensitive/Sensitive.unit.test.d.ts +4 -4
  110. package/dist/sensitive/Sensitive.unit.test.d.ts.map +1 -1
  111. package/dist/sensitive/Sensitive.unit.test.js +20 -46
  112. package/dist/serialization/FormUrlEncodedSerialization.d.ts +2 -2
  113. package/dist/serialization/FormUrlEncodedSerialization.d.ts.map +1 -1
  114. package/dist/serialization/FormUrlEncodedSerialization.js +5 -28
  115. package/dist/serialization/JsonSerialization.d.ts +2 -2
  116. package/dist/serialization/JsonSerialization.d.ts.map +1 -1
  117. package/dist/serialization/JsonSerialization.js +5 -28
  118. package/dist/serialization/Serialization.abstract.test.d.ts.map +1 -1
  119. package/dist/serialization/Serialization.abstract.test.js +6 -32
  120. package/dist/serialization/Serialization.d.ts +2 -2
  121. package/dist/serialization/Serialization.d.ts.map +1 -1
  122. package/dist/try/Try.d.ts +2 -2
  123. package/dist/try/Try.d.ts.map +1 -1
  124. package/dist/try/Try.js +2 -32
  125. package/dist/uuid/Uuid.d.ts +11 -10
  126. package/dist/uuid/Uuid.d.ts.map +1 -1
  127. package/dist/uuid/Uuid.js +13 -39
  128. package/dist/uuid/Uuid.unit.test.js +4 -27
  129. package/dist/zod/SchemaParser.abstract.test.d.ts.map +1 -1
  130. package/dist/zod/SchemaParser.abstract.test.js +6 -31
  131. package/dist/zod/SchemaParser.d.ts +2 -2
  132. package/dist/zod/SchemaParser.d.ts.map +1 -1
  133. package/dist/zod/ZodSchemaParser.d.ts +3 -4
  134. package/dist/zod/ZodSchemaParser.d.ts.map +1 -1
  135. package/dist/zod/ZodSchemaParser.js +4 -28
  136. package/dist/zod/ZodSchemaParser.unit.test.js +2 -25
  137. package/package.json +3 -8
  138. package/dist/http/HttpTypeDescriptors.d.ts +0 -11
  139. package/dist/http/HttpTypeDescriptors.d.ts.map +0 -1
  140. package/dist/http/HttpTypeDescriptors.js +0 -59
  141. package/dist/task/Task.d.ts +0 -19
  142. package/dist/task/Task.d.ts.map +0 -1
  143. package/dist/task/Task.js +0 -74
  144. package/dist/task/Task.unit.test.d.ts +0 -2
  145. package/dist/task/Task.unit.test.d.ts.map +0 -1
  146. package/dist/task/Task.unit.test.js +0 -46
@@ -1,18 +1,12 @@
1
- import * as E from 'fp-ts/Either';
2
- import * as O from 'fp-ts/Option';
3
- import * as t from 'io-ts';
1
+ import { Either, Option, Schema } from 'effect';
4
2
  import { DynamicObject } from '../dynamictype/DynamicType';
5
- declare const dynamicSchemaTypeDescriptor: t.BrandC<t.Type<DynamicObject, DynamicObject, unknown>, DynamicSchemaBrand>;
6
- export type DynamicSchema = t.TypeOf<typeof dynamicSchemaTypeDescriptor>;
7
- export interface DynamicSchemaBrand {
8
- readonly DynamicSchema: unique symbol;
9
- }
3
+ export declare const dynamicSchemaSchema: Schema.brand<Schema.filter<Schema.Schema<DynamicObject, DynamicObject, never>>, "DynamicSchema">;
4
+ export type DynamicSchema = typeof dynamicSchemaSchema.Type;
10
5
  export interface DynamicSchemaInterface {
11
- fromDynamicObject: (schema: DynamicObject, strict?: O.Option<boolean>) => E.Either<Error, DynamicSchema>;
12
- validate: (schema: DynamicSchema | DynamicObject, value: DynamicObject, strict?: O.Option<boolean>, coerce?: boolean) => E.Either<Error, DynamicObject>;
13
- fromValue: (value: DynamicObject, schemaUrl: O.Option<string>) => DynamicObject;
6
+ fromDynamicObject: (schema: DynamicObject, strict?: Option.Option<boolean>) => Either.Either<DynamicSchema, Error>;
7
+ validate: (schema: DynamicSchema | DynamicObject, value: DynamicObject, strict?: Option.Option<boolean>, coerce?: boolean) => Either.Either<DynamicObject, Error>;
8
+ fromValue: (value: DynamicObject, schemaUrl: Option.Option<string>) => DynamicObject;
14
9
  isValidJsonSchema: (schema: DynamicObject) => boolean;
15
10
  }
16
11
  export declare const DynamicSchema: DynamicSchemaInterface;
17
- export {};
18
12
  //# sourceMappingURL=DynamicSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicSchema.d.ts","sourceRoot":"","sources":["../../src/dynamicschema/DynamicSchema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAG3B,OAAO,EACN,aAAa,EAEb,MAAM,4BAA4B,CAAC;AA+BpC,QAAA,MAAM,2BAA2B,6EAKhC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAC;AA0FzE,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACtC,iBAAiB,EAAE,CAClB,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KACtB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACpC,QAAQ,EAAE,CACT,MAAM,EAAE,aAAa,GAAG,aAAa,EACrC,KAAK,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC1B,MAAM,CAAC,EAAE,OAAO,KACZ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACpC,SAAS,EAAE,CACV,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KACvB,aAAa,CAAC;IACnB,iBAAiB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC;CACtD;AAED,eAAO,MAAM,aAAa,EAAE,sBAgD3B,CAAC"}
1
+ {"version":3,"file":"DynamicSchema.d.ts","sourceRoot":"","sources":["../../src/dynamicschema/DynamicSchema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAQ,MAAM,QAAQ,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAuB,MAAM,4BAA4B,CAAC;AA+BhF,eAAO,MAAM,mBAAmB,kGAOc,CAAC;AAE/C,MAAM,MAAM,aAAa,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAC;AA8F5D,MAAM,WAAW,sBAAsB;IACtC,iBAAiB,EAAE,CAClB,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzC,QAAQ,EAAE,CACT,MAAM,EAAE,aAAa,GAAG,aAAa,EACrC,KAAK,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,OAAO,KACZ,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzC,SAAS,EAAE,CACV,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAC5B,aAAa,CAAC;IACnB,iBAAiB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC;CACtD;AAED,eAAO,MAAM,aAAa,EAAE,sBA6C3B,CAAC"}
@@ -1,38 +1,12 @@
1
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
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.DynamicSchema = void 0;
6
+ exports.DynamicSchema = exports.dynamicSchemaSchema = void 0;
30
7
  const ajv_draft_04_1 = __importDefault(require("ajv-draft-04"));
31
8
  const ajv_formats_1 = __importDefault(require("ajv-formats"));
32
- const E = __importStar(require("fp-ts/Either"));
33
- const O = __importStar(require("fp-ts/Option"));
34
- const t = __importStar(require("io-ts"));
35
- const function_1 = require("fp-ts/lib/function");
9
+ const effect_1 = require("effect");
36
10
  const deep_copy_ts_1 = require("deep-copy-ts");
37
11
  const DynamicType_1 = require("../dynamictype/DynamicType");
38
12
  const TypeCodec_1 = require("../codec/TypeCodec");
@@ -60,10 +34,14 @@ const isDynamicSchema = (o) => {
60
34
  return false;
61
35
  }
62
36
  };
63
- const dynamicSchemaTypeDescriptor = t.brand(DynamicType_1.dynamicObjectTypeDescriptor, (input) => isDynamicSchema(input), 'DynamicSchema');
64
- const dynamicSchemaTypeCodec = TypeCodec_1.TypeCodec.fromDescriptor(dynamicSchemaTypeDescriptor);
37
+ exports.dynamicSchemaSchema = DynamicType_1.dynamicObjectSchema
38
+ .pipe(effect_1.Schema.filter(isDynamicSchema, {
39
+ message: () => 'Not a valid JSON schema',
40
+ }), effect_1.Schema.brand('DynamicSchema'))
41
+ .annotations({ identifier: 'DynamicSchema' });
42
+ const dynamicSchemaTypeCodec = TypeCodec_1.TypeCodec.fromSchema(exports.dynamicSchemaSchema);
65
43
  const preprocessSchema = (schema, strict) => {
66
- const hasStrict = O.isSome(strict);
44
+ const hasStrict = effect_1.Option.isSome(strict);
67
45
  delete schema.$schema;
68
46
  if (schema.oneOf || schema.anyOf || schema.allOf) {
69
47
  const schemas = (schema.oneOf ||
@@ -127,18 +105,17 @@ const createSchema = (value) => {
127
105
  return {};
128
106
  };
129
107
  const createSchemaWithSchemaUrl = (schema, schemaUrl) => {
130
- const hasSchemaUrl = O.isSome(schemaUrl);
131
108
  const schemaObj = createSchema(schema);
132
- schemaObj[schemaProperty] = hasSchemaUrl ? schemaUrl.value : draft04SchemaUrl;
109
+ schemaObj[schemaProperty] = effect_1.Option.getOrElse(schemaUrl, () => draft04SchemaUrl);
133
110
  return schemaObj;
134
111
  };
135
112
  exports.DynamicSchema = {
136
- fromDynamicObject: (schema, strict = O.none) => {
113
+ fromDynamicObject: (schema, strict = effect_1.Option.none()) => {
137
114
  const copiedSchema = (0, deep_copy_ts_1.deepCopy)(schema);
138
115
  preprocessSchema(copiedSchema, strict);
139
- return (0, function_1.pipe)(dynamicSchemaTypeCodec.decode(copiedSchema), E.mapLeft((e) => new Error(`Failed to create DynamicSchema: ${e}`)));
116
+ return effect_1.Either.mapLeft(dynamicSchemaTypeCodec.decode(copiedSchema), (e) => new Error(`Failed to create DynamicSchema: ${e}`));
140
117
  },
141
- validate: (schema, value, strict = O.none, coerce = false) => {
118
+ validate: (schema, value, strict = effect_1.Option.none(), coerce = false) => {
142
119
  const copiedSchema = (0, deep_copy_ts_1.deepCopy)(schema);
143
120
  preprocessSchema(copiedSchema, strict);
144
121
  const copiedValue = (0, deep_copy_ts_1.deepCopy)(value);
@@ -148,16 +125,16 @@ exports.DynamicSchema = {
148
125
  }
149
126
  return ajv.compile(copiedSchema);
150
127
  });
151
- return (0, function_1.pipe)(validateE, E.chain((validate) => {
128
+ return effect_1.Either.flatMap(validateE, (validate) => {
152
129
  if (validate(copiedValue)) {
153
- return E.right(copiedValue);
130
+ return effect_1.Either.right(copiedValue);
154
131
  }
155
132
  const errorText = ajv
156
133
  .errorsText(validate.errors)
157
134
  .replace(/data\//g, '');
158
- return E.left(new Error(errorText));
159
- }));
135
+ return effect_1.Either.left(new Error(errorText));
136
+ });
160
137
  },
161
- fromValue: (value, schemaUrl = O.none) => createSchemaWithSchemaUrl(value, schemaUrl),
138
+ fromValue: (value, schemaUrl = effect_1.Option.none()) => createSchemaWithSchemaUrl(value, schemaUrl),
162
139
  isValidJsonSchema: (schema) => isDynamicSchema(schema),
163
140
  };
@@ -1,30 +1,6 @@
1
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- const E = __importStar(require("fp-ts/Either"));
27
- const O = __importStar(require("fp-ts/Option"));
3
+ const effect_1 = require("effect");
28
4
  const DynamicSchema_1 = require("./DynamicSchema");
29
5
  describe('DynamicSchema', () => {
30
6
  let validSchema;
@@ -166,15 +142,15 @@ describe('DynamicSchema', () => {
166
142
  describe('fromDynamicObject', () => {
167
143
  it('should return a Right DynamicSchema when given a valid schema object', () => {
168
144
  const result = DynamicSchema_1.DynamicSchema.fromDynamicObject(validSchema);
169
- expect(E.isRight(result)).toBe(true);
170
- if (E.isRight(result)) {
145
+ expect(effect_1.Either.isRight(result)).toBe(true);
146
+ if (effect_1.Either.isRight(result)) {
171
147
  expect(result.right).toEqual(validSchema);
172
148
  }
173
149
  });
174
150
  it('should return a Left Error when given an invalid schema object', () => {
175
151
  const result = DynamicSchema_1.DynamicSchema.fromDynamicObject(invalidSchema);
176
- expect(E.isLeft(result)).toBe(true);
177
- if (E.isLeft(result)) {
152
+ expect(effect_1.Either.isLeft(result)).toBe(true);
153
+ if (effect_1.Either.isLeft(result)) {
178
154
  expect(result.left).toBeInstanceOf(Error);
179
155
  expect(result.left.message).toContain('Failed to create DynamicSchema:');
180
156
  }
@@ -205,8 +181,8 @@ describe('DynamicSchema', () => {
205
181
  },
206
182
  advanced: [],
207
183
  };
208
- const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, O.none);
209
- expect(actualSchemaE).toEqual(E.right(expectedSchema));
184
+ const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, effect_1.Option.none());
185
+ expect(actualSchemaE).toEqual(effect_1.Either.right(expectedSchema));
210
186
  });
211
187
  it('should correctly remove empty required arrays and not add additionalProperties when strict is not set', () => {
212
188
  const schema = {
@@ -234,8 +210,8 @@ describe('DynamicSchema', () => {
234
210
  },
235
211
  advanced: [],
236
212
  };
237
- const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, O.none);
238
- expect(actualSchemaE).toEqual(E.right(expectedSchema));
213
+ const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, effect_1.Option.none());
214
+ expect(actualSchemaE).toEqual(effect_1.Either.right(expectedSchema));
239
215
  });
240
216
  it('should correctly keep populated required arrays and not add additionalProperties when strict is not set', () => {
241
217
  const schema = {
@@ -264,8 +240,8 @@ describe('DynamicSchema', () => {
264
240
  required: ['age', 'name'],
265
241
  advanced: [],
266
242
  };
267
- const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, O.none);
268
- expect(actualSchemaE).toEqual(E.right(expectedSchema));
243
+ const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, effect_1.Option.none());
244
+ expect(actualSchemaE).toEqual(effect_1.Either.right(expectedSchema));
269
245
  });
270
246
  it('should correctly remove empty required and add additionalProperties=true to object schema when strict is set', () => {
271
247
  const schema = {
@@ -294,8 +270,8 @@ describe('DynamicSchema', () => {
294
270
  advanced: [],
295
271
  additionalProperties: true,
296
272
  };
297
- const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, O.some(false));
298
- expect(actualSchemaE).toEqual(E.right(expectedSchema));
273
+ const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, effect_1.Option.some(false));
274
+ expect(actualSchemaE).toEqual(effect_1.Either.right(expectedSchema));
299
275
  });
300
276
  it('should correctly add additionalProperties=false to object schema', () => {
301
277
  const schema = validSchema;
@@ -335,8 +311,8 @@ describe('DynamicSchema', () => {
335
311
  advanced: [],
336
312
  additionalProperties: false,
337
313
  };
338
- const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, O.some(true));
339
- expect(actualSchemaE).toEqual(E.right(expectedSchema));
314
+ const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, effect_1.Option.some(true));
315
+ expect(actualSchemaE).toEqual(effect_1.Either.right(expectedSchema));
340
316
  });
341
317
  it('should correctly add additionalProperties=true to complex object schema', () => {
342
318
  const schema = {
@@ -402,15 +378,15 @@ describe('DynamicSchema', () => {
402
378
  },
403
379
  additionalProperties: true,
404
380
  };
405
- const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, O.some(false));
406
- expect(actualSchemaE).toEqual(E.right(expectedSchema));
381
+ const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, effect_1.Option.some(false));
382
+ expect(actualSchemaE).toEqual(effect_1.Either.right(expectedSchema));
407
383
  });
408
384
  it('should skip mutation if there is no object type schema', () => {
409
385
  const schema = {
410
386
  type: 'string',
411
387
  };
412
- const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, O.some(true));
413
- expect(actualSchemaE).toEqual(E.right(schema));
388
+ const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, effect_1.Option.some(true));
389
+ expect(actualSchemaE).toEqual(effect_1.Either.right(schema));
414
390
  });
415
391
  it('should correctly add additionalProperties=true to oneOf schemas', () => {
416
392
  const schema = {
@@ -457,8 +433,8 @@ describe('DynamicSchema', () => {
457
433
  },
458
434
  ],
459
435
  };
460
- const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, O.some(false));
461
- expect(actualSchemaE).toEqual(E.right(expectedSchema));
436
+ const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, effect_1.Option.some(false));
437
+ expect(actualSchemaE).toEqual(effect_1.Either.right(expectedSchema));
462
438
  });
463
439
  it('should correctly add additionalProperties=true to anyOf schemas', () => {
464
440
  const schema = {
@@ -505,8 +481,8 @@ describe('DynamicSchema', () => {
505
481
  },
506
482
  ],
507
483
  };
508
- const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, O.some(false));
509
- expect(actualSchemaE).toEqual(E.right(expectedSchema));
484
+ const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, effect_1.Option.some(false));
485
+ expect(actualSchemaE).toEqual(effect_1.Either.right(expectedSchema));
510
486
  });
511
487
  it('should correctly add additionalProperties=true to allOf schemas', () => {
512
488
  const schema = {
@@ -553,67 +529,67 @@ describe('DynamicSchema', () => {
553
529
  },
554
530
  ],
555
531
  };
556
- const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, O.some(false));
557
- expect(actualSchemaE).toEqual(E.right(expectedSchema));
532
+ const actualSchemaE = DynamicSchema_1.DynamicSchema.fromDynamicObject(schema, effect_1.Option.some(false));
533
+ expect(actualSchemaE).toEqual(effect_1.Either.right(expectedSchema));
558
534
  });
559
535
  });
560
536
  describe('validate', () => {
561
537
  it('should return a Right with the value when the value matches the schema', () => {
562
538
  const schema = DynamicSchema_1.DynamicSchema.fromDynamicObject(validSchema);
563
- if (E.isRight(schema)) {
564
- const result = DynamicSchema_1.DynamicSchema.validate(schema.right, value, O.none);
565
- expect(E.isRight(result)).toBe(true);
566
- if (E.isRight(result)) {
539
+ if (effect_1.Either.isRight(schema)) {
540
+ const result = DynamicSchema_1.DynamicSchema.validate(schema.right, value, effect_1.Option.none());
541
+ expect(effect_1.Either.isRight(result)).toBe(true);
542
+ if (effect_1.Either.isRight(result)) {
567
543
  expect(result.right).toEqual(value);
568
544
  }
569
545
  }
570
546
  });
571
547
  it('should return a Right with the value when strict is false and value matches the schema', () => {
572
548
  const schema = DynamicSchema_1.DynamicSchema.fromDynamicObject(validSchema);
573
- if (E.isRight(schema)) {
574
- const result = DynamicSchema_1.DynamicSchema.validate(schema.right, value, O.some(true));
575
- expect(E.isRight(result)).toBe(true);
576
- if (E.isRight(result)) {
549
+ if (effect_1.Either.isRight(schema)) {
550
+ const result = DynamicSchema_1.DynamicSchema.validate(schema.right, value, effect_1.Option.some(true));
551
+ expect(effect_1.Either.isRight(result)).toBe(true);
552
+ if (effect_1.Either.isRight(result)) {
577
553
  expect(result.right).toEqual(value);
578
554
  }
579
555
  }
580
556
  });
581
557
  it('should return a Right with non extra values when value matches the schema but has extra fields', () => {
582
558
  const schema = DynamicSchema_1.DynamicSchema.fromDynamicObject(validSchema);
583
- if (E.isRight(schema)) {
584
- const result = DynamicSchema_1.DynamicSchema.validate(schema.right, valueWithExtraFields, O.some(true));
585
- expect(E.isRight(result)).toBe(true);
586
- if (E.isRight(result)) {
559
+ if (effect_1.Either.isRight(schema)) {
560
+ const result = DynamicSchema_1.DynamicSchema.validate(schema.right, valueWithExtraFields, effect_1.Option.some(true));
561
+ expect(effect_1.Either.isRight(result)).toBe(true);
562
+ if (effect_1.Either.isRight(result)) {
587
563
  expect(result.right).toEqual(value);
588
564
  }
589
565
  }
590
566
  });
591
567
  it('should return a Right with extra values when value matches the schema but has extra fields and strict is false', () => {
592
568
  const schema = DynamicSchema_1.DynamicSchema.fromDynamicObject(validSchema);
593
- if (E.isRight(schema)) {
594
- const result = DynamicSchema_1.DynamicSchema.validate(schema.right, valueWithExtraFields, O.some(false));
595
- expect(E.isRight(result)).toBe(true);
596
- if (E.isRight(result)) {
569
+ if (effect_1.Either.isRight(schema)) {
570
+ const result = DynamicSchema_1.DynamicSchema.validate(schema.right, valueWithExtraFields, effect_1.Option.some(false));
571
+ expect(effect_1.Either.isRight(result)).toBe(true);
572
+ if (effect_1.Either.isRight(result)) {
597
573
  expect(result.right).toEqual(valueWithExtraFields);
598
574
  }
599
575
  }
600
576
  });
601
577
  it('should return a Right with when value matches the schema but has coerceable types', () => {
602
578
  const schema = DynamicSchema_1.DynamicSchema.fromDynamicObject(validSchema);
603
- if (E.isRight(schema)) {
604
- const result = DynamicSchema_1.DynamicSchema.validate(schema.right, valueWithCoerceableTypes, O.some(true), true);
605
- expect(E.isRight(result)).toBe(true);
606
- if (E.isRight(result)) {
579
+ if (effect_1.Either.isRight(schema)) {
580
+ const result = DynamicSchema_1.DynamicSchema.validate(schema.right, valueWithCoerceableTypes, effect_1.Option.some(true), true);
581
+ expect(effect_1.Either.isRight(result)).toBe(true);
582
+ if (effect_1.Either.isRight(result)) {
607
583
  expect(result.right).toEqual(value);
608
584
  }
609
585
  }
610
586
  });
611
587
  it('should return a Left Error when the value does not match the schema', () => {
612
588
  const schema = DynamicSchema_1.DynamicSchema.fromDynamicObject(validSchema);
613
- if (E.isRight(schema)) {
614
- const result = DynamicSchema_1.DynamicSchema.validate(schema.right, invalidValue, O.none);
615
- expect(E.isLeft(result)).toBe(true);
616
- if (E.isLeft(result)) {
589
+ if (effect_1.Either.isRight(schema)) {
590
+ const result = DynamicSchema_1.DynamicSchema.validate(schema.right, invalidValue, effect_1.Option.none());
591
+ expect(effect_1.Either.isLeft(result)).toBe(true);
592
+ if (effect_1.Either.isLeft(result)) {
617
593
  expect(result.left).toBeInstanceOf(Error);
618
594
  }
619
595
  }
@@ -621,12 +597,12 @@ describe('DynamicSchema', () => {
621
597
  });
622
598
  describe('fromValue', () => {
623
599
  it('should return a Right with the schema when given a valid value object', () => {
624
- const result = DynamicSchema_1.DynamicSchema.fromValue(value, O.none);
600
+ const result = DynamicSchema_1.DynamicSchema.fromValue(value, effect_1.Option.none());
625
601
  expect(result).toEqual(validSchemaWithoutExtraFields);
626
602
  });
627
603
  it('should return a Right with the schema when given a valid value object and a schema url', () => {
628
604
  const schemaUrl = 'http://json-schema.org/draft-04/schema#';
629
- const result = DynamicSchema_1.DynamicSchema.fromValue(value, O.some(schemaUrl));
605
+ const result = DynamicSchema_1.DynamicSchema.fromValue(value, effect_1.Option.some(schemaUrl));
630
606
  expect(result.$schema).toEqual(schemaUrl);
631
607
  });
632
608
  });
@@ -1,36 +1,33 @@
1
- import * as TE from 'fp-ts/TaskEither';
2
- import * as E from 'fp-ts/Either';
3
- import * as O from 'fp-ts/Option';
4
- import * as t from 'io-ts';
1
+ import { Effect, Either, Option, Schema } from 'effect';
5
2
  import { Codec } from '../codec/Codec';
6
3
  export type DynamicType = string | number | boolean | null | DynamicObject | DynamicArray;
7
4
  export type DynamicObject = {
8
5
  [x: string]: DynamicType;
9
6
  };
10
7
  export type DynamicArray = Array<DynamicType>;
8
+ export declare const dynamicTypeSchema: Schema.Schema<DynamicType>;
9
+ export declare const dynamicObjectSchema: Schema.Schema<DynamicObject>;
10
+ export declare const dynamicArraySchema: Schema.Schema<DynamicArray>;
11
11
  export interface DynamicObjectInterface {
12
- fromBase64String: (base64Str: string) => E.Either<Error, DynamicObject>;
12
+ fromBase64String: (base64Str: string) => Either.Either<DynamicObject, Error>;
13
13
  removeNullValues: (value: DynamicObject) => DynamicObject;
14
14
  isDynamicObject: (value: unknown) => value is DynamicObject;
15
- getTypedProperty: <T>(dynamicObject: DynamicObject, name: string, codec: Codec<T>) => O.Option<T>;
16
- getObjectProperty: (dynamicObject: DynamicObject, name: string) => O.Option<DynamicObject>;
17
- getStringProperty: (dynamicObject: DynamicObject, name: string) => O.Option<string>;
18
- getNumberProperty: (dynamicObject: DynamicObject, name: string) => O.Option<number>;
19
- getBooleanProperty: (dynamicObject: DynamicObject, name: string) => O.Option<boolean>;
15
+ getTypedProperty: <T>(dynamicObject: DynamicObject, name: string, codec: Codec<T>) => Option.Option<T>;
16
+ getObjectProperty: (dynamicObject: DynamicObject, name: string) => Option.Option<DynamicObject>;
17
+ getStringProperty: (dynamicObject: DynamicObject, name: string) => Option.Option<string>;
18
+ getNumberProperty: (dynamicObject: DynamicObject, name: string) => Option.Option<number>;
19
+ getBooleanProperty: (dynamicObject: DynamicObject, name: string) => Option.Option<boolean>;
20
20
  }
21
21
  export declare const DynamicObject: DynamicObjectInterface;
22
22
  export interface DynamicTypeInterface {
23
- readFromFile: (path: string) => E.Either<Error, DynamicType>;
24
- writeToFile: (path: string, value: DynamicType) => E.Either<Error, undefined>;
25
- writeToFileAsync: (path: string, value: DynamicType) => TE.TaskEither<Error, undefined>;
26
- safeCast: <T>(dynamicType: DynamicType, codec: Codec<T>) => E.Either<Error, T>;
27
- getStringProperty: (dynamicObject: DynamicObject, name: string) => O.Option<string>;
28
- getNumberProperty: (dynamicObject: DynamicObject, name: string) => O.Option<number>;
29
- getBooleanProperty: (dynamicObject: DynamicObject, name: string) => O.Option<boolean>;
23
+ readFromFile: (path: string) => Either.Either<DynamicType, Error>;
24
+ writeToFile: (path: string, value: DynamicType) => Either.Either<undefined, Error>;
25
+ writeToFileAsync: (path: string, value: DynamicType) => Effect.Effect<undefined, Error>;
26
+ safeCast: <T>(dynamicType: DynamicType, codec: Codec<T>) => Either.Either<T, Error>;
27
+ getStringProperty: (dynamicObject: DynamicObject, name: string) => Option.Option<string>;
28
+ getNumberProperty: (dynamicObject: DynamicObject, name: string) => Option.Option<number>;
29
+ getBooleanProperty: (dynamicObject: DynamicObject, name: string) => Option.Option<boolean>;
30
30
  }
31
31
  export declare const DynamicType: DynamicTypeInterface;
32
- export declare const dynamicTypeDescriptor: t.Type<DynamicType>;
33
- export declare const dynamicObjectTypeDescriptor: t.Type<DynamicObject>;
34
- export declare const dynamicArrayTypeDescriptor: t.Type<DynamicArray>;
35
32
  export declare const castUndefinedPropertyToNull: (obj: Record<string, any>) => DynamicType;
36
33
  //# sourceMappingURL=DynamicType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicType.d.ts","sourceRoot":"","sources":["../../src/dynamictype/DynamicType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DynamicType.d.ts","sourceRoot":"","sources":["../../src/dynamictype/DynamicType.ts"],"names":[],"mappings":"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"}
@@ -15,58 +15,71 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
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
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.castUndefinedPropertyToNull = exports.dynamicArrayTypeDescriptor = exports.dynamicObjectTypeDescriptor = exports.dynamicTypeDescriptor = exports.DynamicType = exports.DynamicObject = void 0;
27
- const TE = __importStar(require("fp-ts/TaskEither"));
36
+ exports.castUndefinedPropertyToNull = exports.DynamicType = exports.DynamicObject = exports.dynamicArraySchema = exports.dynamicObjectSchema = exports.dynamicTypeSchema = void 0;
28
37
  const fs = __importStar(require("fs"));
29
38
  const fse = __importStar(require("fs-extra"));
30
- const E = __importStar(require("fp-ts/Either"));
31
- const O = __importStar(require("fp-ts/Option"));
32
- const function_1 = require("fp-ts/function");
33
- const t = __importStar(require("io-ts"));
39
+ const effect_1 = require("effect");
34
40
  const Base64_1 = require("../base64/Base64");
35
41
  const JsonSerialization_1 = require("../serialization/JsonSerialization");
36
42
  const Try_1 = require("../try/Try");
37
43
  const RemoveNullValuesCodec_1 = require("../codec/RemoveNullValuesCodec");
38
44
  const TypeCodec_1 = require("../codec/TypeCodec");
45
+ const Error_1 = require("../error/Error");
46
+ exports.dynamicTypeSchema = effect_1.Schema.Union(effect_1.Schema.String, effect_1.Schema.Number, effect_1.Schema.Boolean, effect_1.Schema.Null, effect_1.Schema.suspend(() => exports.dynamicObjectSchema), effect_1.Schema.suspend(() => exports.dynamicArraySchema)).annotations({ identifier: 'DynamicType' });
47
+ exports.dynamicObjectSchema = effect_1.Schema.mutable(effect_1.Schema.Record({
48
+ key: effect_1.Schema.String,
49
+ value: effect_1.Schema.suspend(() => exports.dynamicTypeSchema),
50
+ })).annotations({ identifier: 'DynamicObject' });
51
+ exports.dynamicArraySchema = effect_1.Schema.mutable(effect_1.Schema.Array(effect_1.Schema.suspend(() => exports.dynamicTypeSchema))).annotations({ identifier: 'DynamicArray' });
39
52
  const serializer = new JsonSerialization_1.JsonSerialization();
40
53
  const testRemoveNullValuesCodec = RemoveNullValuesCodec_1.RemoveNullValuesCodec.instance;
54
+ const isDynamicObject = effect_1.Schema.is(exports.dynamicObjectSchema);
55
+ const propertyOfType = (typeName) => (dynamicObject, name) => {
56
+ const property = dynamicObject[name];
57
+ return typeof property === typeName
58
+ ? effect_1.Option.some(property)
59
+ : effect_1.Option.none();
60
+ };
41
61
  exports.DynamicObject = {
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)),
62
+ fromBase64String: (base64Str) => effect_1.Either.map(effect_1.Either.flatMap(effect_1.Either.map(Base64_1.Base64.fromBase64String(base64Str), (base64) => Base64_1.Base64.decodeBinary(base64)), (decoded) => serializer.deserialize(decoded)), (decoded) => decoded),
43
63
  removeNullValues: (value) => testRemoveNullValuesCodec.encode(value),
44
- isDynamicObject: (value) => exports.dynamicObjectTypeDescriptor.is(value),
45
- 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))))),
46
- getObjectProperty: (dynamicObject, name) => exports.DynamicObject.getTypedProperty(dynamicObject, name, TypeCodec_1.TypeCodec.fromDescriptor(exports.dynamicObjectTypeDescriptor)),
47
- getStringProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'string' ? O.some(property) : O.none)),
48
- getNumberProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'number' ? O.some(property) : O.none)),
49
- getBooleanProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'boolean' ? O.some(property) : O.none)),
64
+ isDynamicObject: (value) => isDynamicObject(value),
65
+ getTypedProperty: (dynamicObject, name, codec) => effect_1.Option.flatMap(effect_1.Option.fromNullable(dynamicObject[name]), (property) => effect_1.Option.getRight(exports.DynamicType.safeCast(property, codec))),
66
+ getObjectProperty: (dynamicObject, name) => exports.DynamicObject.getTypedProperty(dynamicObject, name, TypeCodec_1.TypeCodec.fromSchema(exports.dynamicObjectSchema)),
67
+ getStringProperty: propertyOfType('string'),
68
+ getNumberProperty: propertyOfType('number'),
69
+ getBooleanProperty: propertyOfType('boolean'),
50
70
  };
51
71
  exports.DynamicType = {
52
72
  readFromFile: (path) => (0, Try_1.tryToEither)(() => JSON.parse(fs.readFileSync(path, 'utf8'))),
53
- writeToFile: (path, value) => (0, function_1.pipe)((0, Try_1.tryToEither)(() => fs.writeFileSync(path, JSON.stringify(value))), E.map(() => undefined)),
54
- writeToFileAsync: (path, value) => (0, function_1.pipe)(TE.tryCatch(() => fse.writeFile(path, JSON.stringify(value)), (err) => new Error(err.message)), TE.map(() => undefined)),
73
+ writeToFile: (path, value) => effect_1.Either.map((0, Try_1.tryToEither)(() => fs.writeFileSync(path, JSON.stringify(value))), () => undefined),
74
+ writeToFileAsync: (path, value) => effect_1.Effect.map(effect_1.Effect.tryPromise({
75
+ try: () => fse.writeFile(path, JSON.stringify(value)),
76
+ catch: Error_1.castError,
77
+ }), () => undefined),
55
78
  safeCast: (dynamicType, codec) => codec.decode(dynamicType),
56
- getStringProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'string' ? O.some(property) : O.none)),
57
- getNumberProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'number' ? O.some(property) : O.none)),
58
- getBooleanProperty: (dynamicObject, name) => (0, function_1.pipe)(O.fromNullable(dynamicObject[name]), O.chain((property) => typeof property === 'boolean' ? O.some(property) : O.none)),
79
+ getStringProperty: propertyOfType('string'),
80
+ getNumberProperty: propertyOfType('number'),
81
+ getBooleanProperty: propertyOfType('boolean'),
59
82
  };
60
- exports.dynamicTypeDescriptor = t.recursion('DynamicType', () => t.union([
61
- t.string,
62
- t.number,
63
- t.boolean,
64
- t.null,
65
- exports.dynamicObjectTypeDescriptor,
66
- exports.dynamicArrayTypeDescriptor,
67
- ]));
68
- exports.dynamicObjectTypeDescriptor = t.recursion('DynamicObject', () => t.record(t.string, exports.dynamicTypeDescriptor));
69
- exports.dynamicArrayTypeDescriptor = t.recursion('DynamicArray', () => t.array(exports.dynamicTypeDescriptor));
70
83
  const castUndefinedPropertyToNull = (obj) => {
71
84
  if (obj === undefined) {
72
85
  return null;
@@ -0,0 +1,29 @@
1
+ import { Effect, Either } from 'effect';
2
+ /**
3
+ * Small helpers on top of Effect for the patterns the codebase used with fp-ts Task / TaskEither.
4
+ * Everything here is plain Effect; nothing requires a runtime layer.
5
+ */
6
+ export interface EffectExtensionsInterface {
7
+ /** Wraps a promise-returning block; any rejection becomes an `Error` (strings and objects are coerced). */
8
+ tryPromiseWithSimpleError: <T>(block: () => Promise<T>) => Effect.Effect<T, Error>;
9
+ /** Wraps a synchronous block; anything thrown becomes an `Error`. */
10
+ tryWithSimpleError: <T>(block: () => T) => Effect.Effect<T, Error>;
11
+ /**
12
+ * Runs the effect. A typed failure rejects with the failure value itself and a defect rejects with the
13
+ * thrown value, so callers see the same errors they would have seen from the equivalent promise code.
14
+ */
15
+ runToPromise: <T, E>(effect: Effect.Effect<T, E>) => Promise<T>;
16
+ /** Recovers from both typed failures and defects with a plain value. */
17
+ recover: <T, E>(effect: Effect.Effect<T, E>, onError: (error: Error) => T) => Effect.Effect<T>;
18
+ /**
19
+ * Runs `first`, then feeds each result to `next`: a Right continues the loop with the returned effect,
20
+ * a Left ends it with the final result.
21
+ *
22
+ * Left means "stop", not "error": the loop reuses `Either` as a two-way control-flow signal, the same
23
+ * convention as `Effect.loop`/`Effect.iterate`'s predecessors in fp-ts (`chainRec`). Failures travel in the
24
+ * effect's error channel as usual.
25
+ */
26
+ loop: <Interstitial, Final, E>(first: Effect.Effect<Interstitial, E>, next: (result: Interstitial) => Either.Either<Effect.Effect<Interstitial, E>, Final>) => Effect.Effect<Final, E>;
27
+ }
28
+ export declare const EffectExtensions: EffectExtensionsInterface;
29
+ //# sourceMappingURL=EffectExtensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EffectExtensions.d.ts","sourceRoot":"","sources":["../../src/effect/EffectExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,EAAQ,MAAM,QAAQ,CAAC;AAGrD;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACzC,2GAA2G;IAC3G,yBAAyB,EAAE,CAAC,CAAC,EAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KACnB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7B,qEAAqE;IACrE,kBAAkB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE;;;OAGG;IACH,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,wEAAwE;IACxE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,KACxB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB;;;;;;;OAOG;IACH,IAAI,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,EAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,EACrC,IAAI,EAAE,CACL,MAAM,EAAE,YAAY,KAChB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,KACrD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,EAAE,yBA4C9B,CAAC"}