@trayio/commons 5.34.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.
- package/dist/base64/Base64.d.ts +5 -10
- package/dist/base64/Base64.d.ts.map +1 -1
- package/dist/base64/Base64.js +8 -40
- package/dist/base64/Base64.unit.test.js +4 -27
- package/dist/buffer/BufferExtensions.d.ts +4 -4
- package/dist/buffer/BufferExtensions.d.ts.map +1 -1
- package/dist/buffer/BufferExtensions.js +25 -38
- package/dist/buffer/BufferExtensions.unit.test.js +22 -45
- package/dist/callsite/CallSite.js +17 -7
- package/dist/codec/CamelCasePropertyNameCodec.d.ts +2 -2
- package/dist/codec/CamelCasePropertyNameCodec.d.ts.map +1 -1
- package/dist/codec/CamelCasePropertyNameCodec.js +2 -25
- package/dist/codec/Codec.abstract.test.d.ts +2 -2
- package/dist/codec/Codec.abstract.test.d.ts.map +1 -1
- package/dist/codec/Codec.abstract.test.js +5 -31
- package/dist/codec/Codec.d.ts +2 -2
- package/dist/codec/Codec.d.ts.map +1 -1
- package/dist/codec/CompositeCodec.d.ts +2 -2
- package/dist/codec/CompositeCodec.d.ts.map +1 -1
- package/dist/codec/CompositeCodec.js +2 -26
- package/dist/codec/PartialRedactionCodec.d.ts +2 -2
- package/dist/codec/PartialRedactionCodec.d.ts.map +1 -1
- package/dist/codec/PartialRedactionCodec.js +2 -25
- package/dist/codec/RemoveNullValuesCodec.d.ts +2 -2
- package/dist/codec/RemoveNullValuesCodec.d.ts.map +1 -1
- package/dist/codec/RemoveNullValuesCodec.js +2 -25
- package/dist/codec/RemoveTopLevelTagCodec.d.ts +2 -2
- package/dist/codec/RemoveTopLevelTagCodec.d.ts.map +1 -1
- package/dist/codec/RemoveTopLevelTagCodec.js +2 -25
- package/dist/codec/SensitiveRemoveTagAndRedactCodec.d.ts +2 -2
- package/dist/codec/SensitiveRemoveTagAndRedactCodec.d.ts.map +1 -1
- package/dist/codec/SensitiveRemoveTagAndRedactCodec.js +2 -25
- package/dist/codec/SensitiveRemoveTagAndRedactCodec.unit.test.js +15 -38
- package/dist/codec/SnakeCasePropertyNameCodec.d.ts +2 -2
- package/dist/codec/SnakeCasePropertyNameCodec.d.ts.map +1 -1
- package/dist/codec/SnakeCasePropertyNameCodec.js +2 -25
- package/dist/codec/TypeCodec.d.ts +24 -8
- package/dist/codec/TypeCodec.d.ts.map +1 -1
- package/dist/codec/TypeCodec.js +40 -48
- package/dist/codec/TypeCodec.unit.test.js +12 -38
- package/dist/dynamicschema/DynamicSchema.d.ts +6 -12
- package/dist/dynamicschema/DynamicSchema.d.ts.map +1 -1
- package/dist/dynamicschema/DynamicSchema.js +18 -41
- package/dist/dynamicschema/DynamicSchema.unit.test.js +51 -75
- package/dist/dynamictype/DynamicType.d.ts +17 -20
- package/dist/dynamictype/DynamicType.d.ts.map +1 -1
- package/dist/dynamictype/DynamicType.js +48 -35
- package/dist/effect/EffectExtensions.d.ts +29 -0
- package/dist/effect/EffectExtensions.d.ts.map +1 -0
- package/dist/effect/EffectExtensions.js +30 -0
- package/dist/effect/EffectExtensions.unit.test.d.ts +2 -0
- package/dist/effect/EffectExtensions.unit.test.d.ts.map +1 -0
- package/dist/effect/EffectExtensions.unit.test.js +59 -0
- package/dist/effect/Interop.d.ts +53 -0
- package/dist/effect/Interop.d.ts.map +1 -0
- package/dist/effect/Interop.js +56 -0
- package/dist/effect/Interop.unit.test.d.ts +2 -0
- package/dist/effect/Interop.unit.test.d.ts.map +1 -0
- package/dist/effect/Interop.unit.test.js +134 -0
- package/dist/effect/SchemaExtensions.d.ts +11 -0
- package/dist/effect/SchemaExtensions.d.ts.map +1 -0
- package/dist/effect/SchemaExtensions.js +7 -0
- package/dist/effect/SchemaExtensions.unit.test.d.ts +2 -0
- package/dist/effect/SchemaExtensions.unit.test.d.ts.map +1 -0
- package/dist/effect/SchemaExtensions.unit.test.js +29 -0
- package/dist/file/FakeFileStorage.d.ts +8 -8
- package/dist/file/FakeFileStorage.d.ts.map +1 -1
- package/dist/file/FakeFileStorage.js +16 -40
- package/dist/file/File.d.ts +10 -14
- package/dist/file/File.d.ts.map +1 -1
- package/dist/file/File.js +31 -24
- package/dist/file/FileStorage.abstract.test.d.ts.map +1 -1
- package/dist/file/FileStorage.abstract.test.js +18 -41
- package/dist/file/NodeFsFileStorage.d.ts +9 -11
- package/dist/file/NodeFsFileStorage.d.ts.map +1 -1
- package/dist/file/NodeFsFileStorage.integration.test.js +21 -45
- package/dist/file/NodeFsFileStorage.js +37 -29
- package/dist/http/Http.d.ts +11 -13
- package/dist/http/Http.d.ts.map +1 -1
- package/dist/http/Http.js +30 -22
- package/dist/http/Http.unit.test.js +3 -26
- package/dist/http/HttpClient.abstract.test.d.ts.map +1 -1
- package/dist/http/HttpClient.abstract.test.js +104 -108
- package/dist/http/HttpClient.d.ts +2 -2
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpController.d.ts +2 -3
- package/dist/http/HttpController.d.ts.map +1 -1
- package/dist/http/HttpSchemas.d.ts +13 -0
- package/dist/http/HttpSchemas.d.ts.map +1 -0
- package/dist/http/HttpSchemas.js +23 -0
- package/dist/http/MultipartHttpRequestBody.integration.test.js +31 -20
- package/dist/http/MultipartHttpRequestBody.unit.test.js +70 -53
- package/dist/record/Record.d.ts +3 -3
- package/dist/record/Record.d.ts.map +1 -1
- package/dist/record/Record.js +9 -30
- package/dist/result/Result.d.ts +3 -3
- package/dist/result/Result.d.ts.map +1 -1
- package/dist/result/Result.js +9 -26
- package/dist/schema/DateFromUnixTime.d.ts +4 -0
- package/dist/schema/DateFromUnixTime.d.ts.map +1 -0
- package/dist/schema/DateFromUnixTime.js +10 -0
- package/dist/schema/DateFromUnixTime.unit.test.d.ts +2 -0
- package/dist/schema/DateFromUnixTime.unit.test.d.ts.map +1 -0
- package/dist/schema/DateFromUnixTime.unit.test.js +11 -0
- package/dist/schema/JsonSchemaIntrospector.js +17 -7
- package/dist/sensitive/Sensitive.d.ts +7 -3
- package/dist/sensitive/Sensitive.d.ts.map +1 -1
- package/dist/sensitive/Sensitive.js +23 -39
- package/dist/sensitive/Sensitive.unit.test.d.ts +4 -4
- package/dist/sensitive/Sensitive.unit.test.d.ts.map +1 -1
- package/dist/sensitive/Sensitive.unit.test.js +20 -46
- package/dist/serialization/FormUrlEncodedSerialization.d.ts +2 -2
- package/dist/serialization/FormUrlEncodedSerialization.d.ts.map +1 -1
- package/dist/serialization/FormUrlEncodedSerialization.js +5 -28
- package/dist/serialization/JsonSerialization.d.ts +2 -2
- package/dist/serialization/JsonSerialization.d.ts.map +1 -1
- package/dist/serialization/JsonSerialization.js +5 -28
- package/dist/serialization/Serialization.abstract.test.d.ts.map +1 -1
- package/dist/serialization/Serialization.abstract.test.js +6 -32
- package/dist/serialization/Serialization.d.ts +2 -2
- package/dist/serialization/Serialization.d.ts.map +1 -1
- package/dist/try/Try.d.ts +2 -2
- package/dist/try/Try.d.ts.map +1 -1
- package/dist/try/Try.js +2 -32
- package/dist/uuid/Uuid.d.ts +11 -10
- package/dist/uuid/Uuid.d.ts.map +1 -1
- package/dist/uuid/Uuid.js +13 -39
- package/dist/uuid/Uuid.unit.test.js +4 -27
- package/dist/zod/SchemaParser.abstract.test.d.ts.map +1 -1
- package/dist/zod/SchemaParser.abstract.test.js +6 -31
- package/dist/zod/SchemaParser.d.ts +2 -2
- package/dist/zod/SchemaParser.d.ts.map +1 -1
- package/dist/zod/ZodSchemaParser.d.ts +3 -4
- package/dist/zod/ZodSchemaParser.d.ts.map +1 -1
- package/dist/zod/ZodSchemaParser.js +4 -28
- package/dist/zod/ZodSchemaParser.unit.test.js +2 -25
- package/package.json +3 -8
- package/dist/http/HttpTypeDescriptors.d.ts +0 -11
- package/dist/http/HttpTypeDescriptors.d.ts.map +0 -1
- package/dist/http/HttpTypeDescriptors.js +0 -59
- package/dist/task/Task.d.ts +0 -19
- package/dist/task/Task.d.ts.map +0 -1
- package/dist/task/Task.js +0 -74
- package/dist/task/Task.unit.test.d.ts +0 -2
- package/dist/task/Task.unit.test.d.ts.map +0 -1
- package/dist/task/Task.unit.test.js +0 -46
|
@@ -15,17 +15,28 @@ 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 (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
28
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const effect_1 = require("effect");
|
|
29
40
|
const stream_1 = require("stream");
|
|
30
41
|
const http_1 = require("http");
|
|
31
42
|
const formidable_1 = __importDefault(require("formidable"));
|
|
@@ -148,10 +159,10 @@ describe('MultipartHttpRequestBody - E2E', () => {
|
|
|
148
159
|
},
|
|
149
160
|
};
|
|
150
161
|
// Write file to client storage
|
|
151
|
-
const writeResult = await clientStorage.write({
|
|
162
|
+
const writeResult = await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({
|
|
152
163
|
reference: fileDescriptor,
|
|
153
164
|
content: stream_1.Readable.from(originalContent),
|
|
154
|
-
}, undefined)
|
|
165
|
+
}, undefined)));
|
|
155
166
|
expect(writeResult._tag).toBe('Right');
|
|
156
167
|
// 2. Create multipart body with NESTED FileDescriptor
|
|
157
168
|
const bodyWithNestedFile = {
|
|
@@ -161,7 +172,7 @@ describe('MultipartHttpRequestBody - E2E', () => {
|
|
|
161
172
|
reference: fileDescriptor, // NESTED structure
|
|
162
173
|
},
|
|
163
174
|
};
|
|
164
|
-
const multipartResult = await Http_1.MultipartHttpRequestBody.create(bodyWithNestedFile, clientStorage)
|
|
175
|
+
const multipartResult = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create(bodyWithNestedFile, clientStorage)));
|
|
165
176
|
expect(multipartResult._tag).toBe('Right');
|
|
166
177
|
if (multipartResult._tag === 'Left') {
|
|
167
178
|
throw new Error(`Failed to create multipart body: ${multipartResult.left.message}`);
|
|
@@ -258,11 +269,11 @@ describe('MultipartHttpRequestBody - E2E', () => {
|
|
|
258
269
|
},
|
|
259
270
|
};
|
|
260
271
|
// Write files to client storage
|
|
261
|
-
await clientStorage.write({ reference: fileDescriptor1, content: stream_1.Readable.from(content1) }, undefined)
|
|
262
|
-
await clientStorage.write({ reference: fileDescriptor2, content: stream_1.Readable.from(content2) }, undefined)
|
|
272
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: fileDescriptor1, content: stream_1.Readable.from(content1) }, undefined)));
|
|
273
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: fileDescriptor2, content: stream_1.Readable.from(content2) }, undefined)));
|
|
263
274
|
// Create body with multiple nested FileDescriptors
|
|
264
275
|
const bodyWithMultipleFiles = {
|
|
265
|
-
rootFile: fileDescriptor1,
|
|
276
|
+
rootFile: fileDescriptor1, // Root level
|
|
266
277
|
nested: {
|
|
267
278
|
deepFile: {
|
|
268
279
|
reference: fileDescriptor2, // Nested level
|
|
@@ -270,7 +281,7 @@ describe('MultipartHttpRequestBody - E2E', () => {
|
|
|
270
281
|
},
|
|
271
282
|
description: 'Multiple files test',
|
|
272
283
|
};
|
|
273
|
-
const multipartResult = await Http_1.MultipartHttpRequestBody.create(bodyWithMultipleFiles, clientStorage)
|
|
284
|
+
const multipartResult = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create(bodyWithMultipleFiles, clientStorage)));
|
|
274
285
|
expect(multipartResult._tag).toBe('Right');
|
|
275
286
|
if (multipartResult._tag === 'Left') {
|
|
276
287
|
throw new Error(`Failed to create multipart body: ${multipartResult.left.message}`);
|
|
@@ -343,10 +354,10 @@ describe('MultipartHttpRequestBody - E2E', () => {
|
|
|
343
354
|
key: 'test-doc',
|
|
344
355
|
metadata: { name: 'doc.txt', size: 100, contentType: 'text/plain' },
|
|
345
356
|
};
|
|
346
|
-
await clientStorage.write({
|
|
357
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({
|
|
347
358
|
reference: fileDescriptor,
|
|
348
359
|
content: stream_1.Readable.from('document content'),
|
|
349
|
-
}, undefined)
|
|
360
|
+
}, undefined)));
|
|
350
361
|
// Create request body with nested structures AND a file
|
|
351
362
|
const bodyWithNestedStructure = {
|
|
352
363
|
title: 'Test Document',
|
|
@@ -361,7 +372,7 @@ describe('MultipartHttpRequestBody - E2E', () => {
|
|
|
361
372
|
},
|
|
362
373
|
document: fileDescriptor,
|
|
363
374
|
};
|
|
364
|
-
const multipartResult = await Http_1.MultipartHttpRequestBody.create(bodyWithNestedStructure, clientStorage)
|
|
375
|
+
const multipartResult = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create(bodyWithNestedStructure, clientStorage)));
|
|
365
376
|
expect(multipartResult._tag).toBe('Right');
|
|
366
377
|
if (multipartResult._tag === 'Left') {
|
|
367
378
|
throw new Error(`Failed: ${multipartResult.left.message}`);
|
|
@@ -434,10 +445,10 @@ describe('MultipartHttpRequestBody - E2E', () => {
|
|
|
434
445
|
key: 'asset-123',
|
|
435
446
|
metadata: { name: 'logo.png', size: 2048, contentType: 'image/png' },
|
|
436
447
|
};
|
|
437
|
-
await clientStorage.write({
|
|
448
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({
|
|
438
449
|
reference: fileDescriptor,
|
|
439
450
|
content: stream_1.Readable.from('image data'),
|
|
440
|
-
}, undefined)
|
|
451
|
+
}, undefined)));
|
|
441
452
|
const bodyLikeLibraryService = {
|
|
442
453
|
fileName: 'logo.png',
|
|
443
454
|
overrideIfPresent: true,
|
|
@@ -451,7 +462,7 @@ describe('MultipartHttpRequestBody - E2E', () => {
|
|
|
451
462
|
},
|
|
452
463
|
imageContent: fileDescriptor,
|
|
453
464
|
};
|
|
454
|
-
const multipartResult = await Http_1.MultipartHttpRequestBody.create(bodyLikeLibraryService, clientStorage)
|
|
465
|
+
const multipartResult = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create(bodyLikeLibraryService, clientStorage)));
|
|
455
466
|
expect(multipartResult._tag).toBe('Right');
|
|
456
467
|
if (multipartResult._tag === 'Left') {
|
|
457
468
|
throw new Error(`Failed: ${multipartResult.left.message}`);
|
|
@@ -15,14 +15,25 @@ 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 (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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 });
|
|
36
|
+
const effect_1 = require("effect");
|
|
26
37
|
const stream_1 = require("stream");
|
|
27
38
|
const NodeFsFileStorage_1 = require("../file/NodeFsFileStorage");
|
|
28
39
|
const Http_1 = require("./Http");
|
|
@@ -55,8 +66,8 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
55
66
|
key: 'root-file',
|
|
56
67
|
metadata: { name: 'file.txt', size: 100, contentType: 'text/plain' },
|
|
57
68
|
};
|
|
58
|
-
await clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('content') }, undefined)
|
|
59
|
-
const result = await Http_1.MultipartHttpRequestBody.create({ file: fileDescriptor }, clientStorage)
|
|
69
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('content') }, undefined)));
|
|
70
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({ file: fileDescriptor }, clientStorage)));
|
|
60
71
|
expect(result._tag).toBe('Right');
|
|
61
72
|
if (result._tag === 'Right') {
|
|
62
73
|
// Files are now keyed by object path, not storage key
|
|
@@ -69,12 +80,12 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
69
80
|
key: 'nested-file',
|
|
70
81
|
metadata: { name: 'file.txt', size: 100, contentType: 'text/plain' },
|
|
71
82
|
};
|
|
72
|
-
await clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('content') }, undefined)
|
|
73
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
83
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('content') }, undefined)));
|
|
84
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
74
85
|
data: {
|
|
75
86
|
file: fileDescriptor,
|
|
76
87
|
},
|
|
77
|
-
}, clientStorage)
|
|
88
|
+
}, clientStorage)));
|
|
78
89
|
expect(result._tag).toBe('Right');
|
|
79
90
|
if (result._tag === 'Right') {
|
|
80
91
|
// Files are now keyed by object path, not storage key
|
|
@@ -87,8 +98,8 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
87
98
|
key: 'deep-file',
|
|
88
99
|
metadata: { name: 'file.txt', size: 100, contentType: 'text/plain' },
|
|
89
100
|
};
|
|
90
|
-
await clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('content') }, undefined)
|
|
91
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
101
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('content') }, undefined)));
|
|
102
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
92
103
|
level1: {
|
|
93
104
|
level2: {
|
|
94
105
|
level3: {
|
|
@@ -96,7 +107,7 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
96
107
|
},
|
|
97
108
|
},
|
|
98
109
|
},
|
|
99
|
-
}, clientStorage)
|
|
110
|
+
}, clientStorage)));
|
|
100
111
|
expect(result._tag).toBe('Right');
|
|
101
112
|
if (result._tag === 'Right') {
|
|
102
113
|
// Files are now keyed by object path, not storage key
|
|
@@ -114,14 +125,14 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
114
125
|
key: 'file-2',
|
|
115
126
|
metadata: { name: 'file2.txt', size: 100, contentType: 'text/plain' },
|
|
116
127
|
};
|
|
117
|
-
await clientStorage.write({ reference: file1, content: stream_1.Readable.from('content1') }, undefined)
|
|
118
|
-
await clientStorage.write({ reference: file2, content: stream_1.Readable.from('content2') }, undefined)
|
|
119
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
128
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: file1, content: stream_1.Readable.from('content1') }, undefined)));
|
|
129
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: file2, content: stream_1.Readable.from('content2') }, undefined)));
|
|
130
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
120
131
|
rootFile: file1,
|
|
121
132
|
nested: {
|
|
122
133
|
deepFile: file2,
|
|
123
134
|
},
|
|
124
|
-
}, clientStorage)
|
|
135
|
+
}, clientStorage)));
|
|
125
136
|
expect(result._tag).toBe('Right');
|
|
126
137
|
if (result._tag === 'Right') {
|
|
127
138
|
expect(Object.keys(result.right.files)).toHaveLength(2);
|
|
@@ -133,13 +144,13 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
133
144
|
});
|
|
134
145
|
describe('Field Flattening', () => {
|
|
135
146
|
it('should flatten nested fields with dot notation', async () => {
|
|
136
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
147
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
137
148
|
title: 'Test',
|
|
138
149
|
metadata: {
|
|
139
150
|
author: 'John',
|
|
140
151
|
version: '1.0',
|
|
141
152
|
},
|
|
142
|
-
}, clientStorage)
|
|
153
|
+
}, clientStorage)));
|
|
143
154
|
expect(result._tag).toBe('Right');
|
|
144
155
|
if (result._tag === 'Right') {
|
|
145
156
|
expect(result.right.fields.title).toBe('Test');
|
|
@@ -148,7 +159,7 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
148
159
|
}
|
|
149
160
|
});
|
|
150
161
|
it('should flatten deeply nested fields', async () => {
|
|
151
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
162
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
152
163
|
level1: {
|
|
153
164
|
level2: {
|
|
154
165
|
level3: {
|
|
@@ -156,19 +167,19 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
156
167
|
},
|
|
157
168
|
},
|
|
158
169
|
},
|
|
159
|
-
}, clientStorage)
|
|
170
|
+
}, clientStorage)));
|
|
160
171
|
expect(result._tag).toBe('Right');
|
|
161
172
|
if (result._tag === 'Right') {
|
|
162
173
|
expect(result.right.fields['level1.level2.level3.value']).toBe('deep');
|
|
163
174
|
}
|
|
164
175
|
});
|
|
165
176
|
it('should handle primitive values at root level', async () => {
|
|
166
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
177
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
167
178
|
string: 'text',
|
|
168
179
|
number: 123,
|
|
169
180
|
boolean: true,
|
|
170
181
|
null: null,
|
|
171
|
-
}, clientStorage)
|
|
182
|
+
}, clientStorage)));
|
|
172
183
|
expect(result._tag).toBe('Right');
|
|
173
184
|
if (result._tag === 'Right') {
|
|
174
185
|
expect(result.right.fields.string).toBe('text');
|
|
@@ -180,13 +191,13 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
180
191
|
});
|
|
181
192
|
describe('Array Support', () => {
|
|
182
193
|
it('should serialize arrays as comma-separated strings', async () => {
|
|
183
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
194
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
184
195
|
title: 'Test',
|
|
185
196
|
tags: ['tag1', 'tag2', 'tag3'],
|
|
186
197
|
nested: {
|
|
187
198
|
items: ['a', 'b', 'c'],
|
|
188
199
|
},
|
|
189
|
-
}, clientStorage)
|
|
200
|
+
}, clientStorage)));
|
|
190
201
|
expect(result._tag).toBe('Right');
|
|
191
202
|
if (result._tag === 'Right') {
|
|
192
203
|
expect(result.right.fields.title).toBe('Test');
|
|
@@ -195,10 +206,10 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
195
206
|
}
|
|
196
207
|
});
|
|
197
208
|
it('should handle empty arrays', async () => {
|
|
198
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
209
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
199
210
|
title: 'Test',
|
|
200
211
|
tags: [],
|
|
201
|
-
}, clientStorage)
|
|
212
|
+
}, clientStorage)));
|
|
202
213
|
expect(result._tag).toBe('Right');
|
|
203
214
|
if (result._tag === 'Right') {
|
|
204
215
|
expect(result.right.fields.title).toBe('Test');
|
|
@@ -206,9 +217,9 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
206
217
|
}
|
|
207
218
|
});
|
|
208
219
|
it('should handle arrays with mixed types', async () => {
|
|
209
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
220
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
210
221
|
values: [1, 'text', true, null],
|
|
211
|
-
}, clientStorage)
|
|
222
|
+
}, clientStorage)));
|
|
212
223
|
expect(result._tag).toBe('Right');
|
|
213
224
|
if (result._tag === 'Right') {
|
|
214
225
|
// All values converted to strings and joined
|
|
@@ -227,8 +238,8 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
227
238
|
contentType: 'image/png',
|
|
228
239
|
},
|
|
229
240
|
};
|
|
230
|
-
await clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('data') }, undefined)
|
|
231
|
-
const result = await Http_1.MultipartHttpRequestBody.create({ file: fileDescriptor }, clientStorage)
|
|
241
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('data') }, undefined)));
|
|
242
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({ file: fileDescriptor }, clientStorage)));
|
|
232
243
|
expect(result._tag).toBe('Right');
|
|
233
244
|
if (result._tag === 'Right') {
|
|
234
245
|
// Files are now keyed by object path, not storage key
|
|
@@ -249,8 +260,8 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
249
260
|
contentType: 'application/pdf',
|
|
250
261
|
},
|
|
251
262
|
};
|
|
252
|
-
await clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('pdf data') }, undefined)
|
|
253
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
263
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('pdf data') }, undefined)));
|
|
264
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
254
265
|
title: 'Document',
|
|
255
266
|
category: 'report',
|
|
256
267
|
metadata: {
|
|
@@ -258,7 +269,7 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
258
269
|
tags: ['important', 'confidential'],
|
|
259
270
|
},
|
|
260
271
|
document: fileDescriptor,
|
|
261
|
-
}, clientStorage)
|
|
272
|
+
}, clientStorage)));
|
|
262
273
|
expect(result._tag).toBe('Right');
|
|
263
274
|
if (result._tag === 'Right') {
|
|
264
275
|
// Check fields
|
|
@@ -283,10 +294,13 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
283
294
|
contentType: 'application/pdf',
|
|
284
295
|
},
|
|
285
296
|
};
|
|
286
|
-
await
|
|
287
|
-
|
|
297
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({
|
|
298
|
+
reference: fileDescriptor,
|
|
299
|
+
content: stream_1.Readable.from('file content'),
|
|
300
|
+
}, undefined)));
|
|
301
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
288
302
|
file: fileDescriptor,
|
|
289
|
-
}, clientStorage)
|
|
303
|
+
}, clientStorage)));
|
|
290
304
|
expect(result._tag).toBe('Right');
|
|
291
305
|
if (result._tag === 'Right') {
|
|
292
306
|
// The file should be keyed by the object path 'file', not the storage key
|
|
@@ -304,12 +318,12 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
304
318
|
contentType: 'image/png',
|
|
305
319
|
},
|
|
306
320
|
};
|
|
307
|
-
await clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('image data') }, undefined)
|
|
308
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
321
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('image data') }, undefined)));
|
|
322
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
309
323
|
data: {
|
|
310
324
|
attachment: fileDescriptor,
|
|
311
325
|
},
|
|
312
|
-
}, clientStorage)
|
|
326
|
+
}, clientStorage)));
|
|
313
327
|
expect(result._tag).toBe('Right');
|
|
314
328
|
if (result._tag === 'Right') {
|
|
315
329
|
// The file should be keyed by 'data.attachment', not the storage key
|
|
@@ -327,8 +341,11 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
327
341
|
contentType: 'application/pdf',
|
|
328
342
|
},
|
|
329
343
|
};
|
|
330
|
-
await
|
|
331
|
-
|
|
344
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({
|
|
345
|
+
reference: fileDescriptor,
|
|
346
|
+
content: stream_1.Readable.from('report content'),
|
|
347
|
+
}, undefined)));
|
|
348
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
332
349
|
project: {
|
|
333
350
|
documents: {
|
|
334
351
|
reports: {
|
|
@@ -336,7 +353,7 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
336
353
|
},
|
|
337
354
|
},
|
|
338
355
|
},
|
|
339
|
-
}, clientStorage)
|
|
356
|
+
}, clientStorage)));
|
|
340
357
|
expect(result._tag).toBe('Right');
|
|
341
358
|
if (result._tag === 'Right') {
|
|
342
359
|
// The file should be keyed by the full object path
|
|
@@ -372,10 +389,10 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
372
389
|
contentType: 'text/plain',
|
|
373
390
|
},
|
|
374
391
|
};
|
|
375
|
-
await clientStorage.write({ reference: file1, content: stream_1.Readable.from('content1') }, undefined)
|
|
376
|
-
await clientStorage.write({ reference: file2, content: stream_1.Readable.from('content2') }, undefined)
|
|
377
|
-
await clientStorage.write({ reference: file3, content: stream_1.Readable.from('content3') }, undefined)
|
|
378
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
392
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: file1, content: stream_1.Readable.from('content1') }, undefined)));
|
|
393
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: file2, content: stream_1.Readable.from('content2') }, undefined)));
|
|
394
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: file3, content: stream_1.Readable.from('content3') }, undefined)));
|
|
395
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
379
396
|
avatar: file1,
|
|
380
397
|
data: {
|
|
381
398
|
document: file2,
|
|
@@ -383,7 +400,7 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
383
400
|
attachment: file3,
|
|
384
401
|
},
|
|
385
402
|
},
|
|
386
|
-
}, clientStorage)
|
|
403
|
+
}, clientStorage)));
|
|
387
404
|
expect(result._tag).toBe('Right');
|
|
388
405
|
if (result._tag === 'Right') {
|
|
389
406
|
// Each file should be keyed by its object path, not its storage key
|
|
@@ -407,12 +424,12 @@ describe('MultipartHttpRequestBody.create', () => {
|
|
|
407
424
|
contentType: 'application/pdf',
|
|
408
425
|
},
|
|
409
426
|
};
|
|
410
|
-
await clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('pdf data') }, undefined)
|
|
411
|
-
const result = await Http_1.MultipartHttpRequestBody.create({
|
|
427
|
+
await effect_1.Effect.runPromise(effect_1.Effect.either(clientStorage.write({ reference: fileDescriptor, content: stream_1.Readable.from('pdf data') }, undefined)));
|
|
428
|
+
const result = await effect_1.Effect.runPromise(effect_1.Effect.either(Http_1.MultipartHttpRequestBody.create({
|
|
412
429
|
nested: {
|
|
413
430
|
file: fileDescriptor,
|
|
414
431
|
},
|
|
415
|
-
}, clientStorage)
|
|
432
|
+
}, clientStorage)));
|
|
416
433
|
expect(result._tag).toBe('Right');
|
|
417
434
|
if (result._tag === 'Right') {
|
|
418
435
|
const file = result.right.files['nested.file'];
|
package/dist/record/Record.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
export declare const addValueToRecordIfPresent: <K extends
|
|
3
|
-
export declare const addValuesToRecordIfPresent: <K extends
|
|
1
|
+
import { Option } from 'effect';
|
|
2
|
+
export declare const addValueToRecordIfPresent: <K extends keyof any, V>(record: Record<K, V>, key: K, valueOpt: Option.Option<V>) => Record<K, V>;
|
|
3
|
+
export declare const addValuesToRecordIfPresent: <K extends keyof any, V>(record: Record<K, V>, valuesToAdd: Record<K, Option.Option<V>>) => Record<K, V>;
|
|
4
4
|
//# sourceMappingURL=Record.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Record.d.ts","sourceRoot":"","sources":["../../src/record/Record.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Record.d.ts","sourceRoot":"","sources":["../../src/record/Record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,eAAO,MAAM,yBAAyB,GAAI,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,EAC/D,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,KAAK,CAAC,EACN,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KACxB,MAAM,CAAC,CAAC,EAAE,CAAC,CAOX,CAAC;AAEJ,eAAO,MAAM,0BAA0B,GAAI,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,EAChE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,aAAa,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KACtC,MAAM,CAAC,CAAC,EAAE,CAAC,CAIZ,CAAC"}
|
package/dist/record/Record.js
CHANGED
|
@@ -1,35 +1,14 @@
|
|
|
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
3
|
exports.addValuesToRecordIfPresent = exports.addValueToRecordIfPresent = void 0;
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const addValueToRecordIfPresent = (record, key, valueOpt) => effect_1.Option.match(valueOpt, {
|
|
6
|
+
onNone: () => record,
|
|
7
|
+
onSome: (value) => {
|
|
8
|
+
record[key] = value;
|
|
9
|
+
return record;
|
|
10
|
+
},
|
|
11
|
+
});
|
|
33
12
|
exports.addValueToRecordIfPresent = addValueToRecordIfPresent;
|
|
34
|
-
const addValuesToRecordIfPresent = (record, valuesToAdd) =>
|
|
13
|
+
const addValuesToRecordIfPresent = (record, valuesToAdd) => Object.keys(valuesToAdd).reduce((acc, key) => (0, exports.addValueToRecordIfPresent)(acc, key, valuesToAdd[key]), record);
|
|
35
14
|
exports.addValuesToRecordIfPresent = addValuesToRecordIfPresent;
|
package/dist/result/Result.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Either } from 'effect';
|
|
2
2
|
export type Failure<E> = {
|
|
3
3
|
readonly _tag: 'Failure';
|
|
4
4
|
readonly isSuccess: false;
|
|
@@ -24,8 +24,8 @@ export interface ResultInterface {
|
|
|
24
24
|
}
|
|
25
25
|
export declare const Result: ResultInterface;
|
|
26
26
|
export interface ResultInternalInterface {
|
|
27
|
-
fromEitherWithSimpleError: <T>(either:
|
|
28
|
-
fromEitherWithSimpleErrorAndUnknown: <T>(either:
|
|
27
|
+
fromEitherWithSimpleError: <T>(either: Either.Either<T, Error>) => Result<Error, T>;
|
|
28
|
+
fromEitherWithSimpleErrorAndUnknown: <T>(either: Either.Either<unknown, Error>) => Result<Error, T>;
|
|
29
29
|
}
|
|
30
30
|
export declare const ResultInternal: ResultInternalInterface;
|
|
31
31
|
//# sourceMappingURL=Result.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../src/result/Result.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Result.d.ts","sourceRoot":"","sources":["../../src/result/Result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEnD,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,KAAK;IAC5B,YAAY,EAAE,CAAC;gBAAf,YAAY,EAAE,CAAC;CAOlC;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,wBAAwB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5D,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACZ,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KACpB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClB;AAED,eAAO,MAAM,MAAM,EAAE,eAgCpB,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACvC,yBAAyB,EAAE,CAAC,CAAC,EAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,KAC3B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtB,mCAAmC,EAAE,CAAC,CAAC,EACtC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,KACjC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,EAAE,uBAgB5B,CAAC"}
|
package/dist/result/Result.js
CHANGED
|
@@ -1,30 +1,7 @@
|
|
|
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
3
|
exports.ResultInternal = exports.Result = exports.ResultFailureError = void 0;
|
|
27
|
-
const
|
|
4
|
+
const effect_1 = require("effect");
|
|
28
5
|
class ResultFailureError extends Error {
|
|
29
6
|
failureCause;
|
|
30
7
|
constructor(failureCause) {
|
|
@@ -64,6 +41,12 @@ exports.Result = {
|
|
|
64
41
|
},
|
|
65
42
|
};
|
|
66
43
|
exports.ResultInternal = {
|
|
67
|
-
fromEitherWithSimpleError: (either) =>
|
|
68
|
-
|
|
44
|
+
fromEitherWithSimpleError: (either) => effect_1.Either.match(either, {
|
|
45
|
+
onLeft: (error) => exports.Result.failure(error),
|
|
46
|
+
onRight: (value) => exports.Result.success(value),
|
|
47
|
+
}),
|
|
48
|
+
fromEitherWithSimpleErrorAndUnknown: (either) => effect_1.Either.match(either, {
|
|
49
|
+
onLeft: (error) => exports.Result.failure(error),
|
|
50
|
+
onRight: (value) => exports.Result.success(value),
|
|
51
|
+
}),
|
|
69
52
|
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
|
+
/** Seconds since the Unix epoch on the wire, a Date in memory. Replaces io-ts-types' `DateFromUnixTime`. */
|
|
3
|
+
export declare const DateFromUnixTime: Schema.transform<typeof Schema.Number, typeof Schema.DateFromSelf>;
|
|
4
|
+
//# sourceMappingURL=DateFromUnixTime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateFromUnixTime.d.ts","sourceRoot":"","sources":["../../src/schema/DateFromUnixTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,4GAA4G;AAC5G,eAAO,MAAM,gBAAgB,oEAQoB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DateFromUnixTime = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
/** Seconds since the Unix epoch on the wire, a Date in memory. Replaces io-ts-types' `DateFromUnixTime`. */
|
|
6
|
+
exports.DateFromUnixTime = effect_1.Schema.transform(effect_1.Schema.Number, effect_1.Schema.DateFromSelf, {
|
|
7
|
+
strict: true,
|
|
8
|
+
decode: (seconds) => new Date(seconds * 1000),
|
|
9
|
+
encode: (date) => Math.floor(date.getTime() / 1000),
|
|
10
|
+
}).annotations({ identifier: 'DateFromUnixTime' });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateFromUnixTime.unit.test.d.ts","sourceRoot":"","sources":["../../src/schema/DateFromUnixTime.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const effect_1 = require("effect");
|
|
4
|
+
const DateFromUnixTime_1 = require("./DateFromUnixTime");
|
|
5
|
+
describe('DateFromUnixTime', () => {
|
|
6
|
+
it('decodes seconds to a Date and encodes back to whole seconds', () => {
|
|
7
|
+
const decoded = effect_1.Schema.decodeUnknownSync(DateFromUnixTime_1.DateFromUnixTime)(1700000000);
|
|
8
|
+
expect(decoded.toISOString()).toBe('2023-11-14T22:13:20.000Z');
|
|
9
|
+
expect(effect_1.Schema.encodeSync(DateFromUnixTime_1.DateFromUnixTime)(new Date(1700000000500))).toBe(1700000000);
|
|
10
|
+
});
|
|
11
|
+
});
|