effect-errors 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -8
- package/config/pretty-print-enabled.js +1 -1
- package/package.json +17 -8
- package/tests/matchers/index.d.ts +1 -0
- package/tests/matchers/index.js +9 -0
- package/tests/matchers/to-chalk-match.d.ts +1 -0
- package/tests/matchers/to-chalk-match.js +67 -0
- package/tests/mocks/chalk.mock.d.ts +1 -0
- package/tests/mocks/chalk.mock.js +10 -0
- package/tests/mocks/console.mock.d.ts +9 -0
- package/tests/mocks/console.mock.js +66 -0
- package/tests/mocks/process.mock.d.ts +6 -0
- package/tests/mocks/process.mock.js +66 -0
- package/tests/regex/duration.regex.d.ts +1 -0
- package/tests/regex/duration.regex.js +4 -0
- package/tests/runners/effect-cause.d.ts +2 -0
- package/tests/runners/effect-cause.js +8 -0
package/README.md
CHANGED
|
@@ -19,13 +19,11 @@ So using it would look like this :
|
|
|
19
19
|
```typescript
|
|
20
20
|
import { runPromise } from 'effect-errors';
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
);
|
|
28
|
-
})();
|
|
22
|
+
await runPromise(
|
|
23
|
+
Effect.gen(function* (_) {
|
|
24
|
+
// ...
|
|
25
|
+
}),
|
|
26
|
+
);
|
|
29
27
|
```
|
|
30
28
|
|
|
31
29
|
The fancy logging behavior is enabled if your node env is `development` or if you set `EFFECT_PRETTY_PRINT` env var to `true`.
|
|
@@ -35,7 +33,19 @@ You can also directly import the `prettyPrint` function to do whatever with it i
|
|
|
35
33
|
```typescript
|
|
36
34
|
import { prettyPrint } from 'effect-errors';
|
|
37
35
|
|
|
38
|
-
|
|
36
|
+
await Effect.runPromise(
|
|
37
|
+
pipe(
|
|
38
|
+
Effect.gen(function* (_) {
|
|
39
|
+
// ...
|
|
40
|
+
}),
|
|
41
|
+
Effect.sandbox,
|
|
42
|
+
Effect.catchAll((e) => {
|
|
43
|
+
console.error(prettyPrint(e));
|
|
44
|
+
|
|
45
|
+
return Effect.fail('❌ runPromise failure') as never;
|
|
46
|
+
}),
|
|
47
|
+
),
|
|
48
|
+
);
|
|
39
49
|
```
|
|
40
50
|
|
|
41
51
|
Signature is the following:
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.prettyPrintEnabled = void 0;
|
|
4
4
|
var dotenv_flow_1 = require("dotenv-flow");
|
|
5
|
-
(0, dotenv_flow_1.config)();
|
|
5
|
+
(0, dotenv_flow_1.config)({ silent: true });
|
|
6
6
|
exports.prettyPrintEnabled = process.env.NODE_ENV === 'development' ||
|
|
7
7
|
process.env.EFFECT_PRETTY_PRINT === 'true';
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"repository": "https://github.com/jpb06/effect-errors.git",
|
|
3
3
|
"main": "dist/index.js",
|
|
4
4
|
"name": "effect-errors",
|
|
5
|
-
"version": "1.2.
|
|
5
|
+
"version": "1.2.3",
|
|
6
6
|
"author": "jpb06 <jp.bois.06@outlook.fr>",
|
|
7
7
|
"description": "A POC for errors reporting in Effect",
|
|
8
8
|
"keywords": [],
|
|
@@ -18,22 +18,28 @@
|
|
|
18
18
|
"postbuild": "bun run copy-package && bun run copy-readme",
|
|
19
19
|
"lint": "eslint ./src",
|
|
20
20
|
"type-check": "tsc --noEmit",
|
|
21
|
+
"test": "vitest",
|
|
22
|
+
"test-ci": "vitest --coverage --run",
|
|
23
|
+
"test-dev": "vitest --coverage",
|
|
24
|
+
"test-coverage": "vitest run --coverage",
|
|
21
25
|
"sync-icons": "bun generateReadmeIcons -h 50",
|
|
22
|
-
"run-
|
|
26
|
+
"run-example": "bun run ./src/examples/util/run",
|
|
27
|
+
"run-examples": "bun run ./src/examples/util/run-all"
|
|
23
28
|
},
|
|
24
29
|
"dependencies": {
|
|
25
|
-
"@effect/schema": "^0.
|
|
30
|
+
"@effect/schema": "^0.64.1",
|
|
26
31
|
"chalk": "^5.3.0",
|
|
27
32
|
"dotenv-flow": "^4.1.0",
|
|
28
|
-
"effect": "^2.4.
|
|
33
|
+
"effect": "^2.4.5"
|
|
29
34
|
},
|
|
30
35
|
"devDependencies": {
|
|
31
36
|
"@stylistic/eslint-plugin": "^1.6.3",
|
|
32
37
|
"@types/eslint": "^8.56.5",
|
|
33
38
|
"@types/fs-extra": "^11.0.4",
|
|
34
|
-
"@types/node": "^20.11.
|
|
35
|
-
"@typescript-eslint/eslint-plugin": "^7.
|
|
36
|
-
"@typescript-eslint/parser": "^7.
|
|
39
|
+
"@types/node": "^20.11.27",
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "^7.2.0",
|
|
41
|
+
"@typescript-eslint/parser": "^7.2.0",
|
|
42
|
+
"@vitest/coverage-v8": "^1.3.1",
|
|
37
43
|
"copyfiles": "^2.4.1",
|
|
38
44
|
"del-cli": "^5.1.0",
|
|
39
45
|
"eslint": "^8.57.0",
|
|
@@ -42,9 +48,12 @@
|
|
|
42
48
|
"eslint-plugin-import": "^2.29.1",
|
|
43
49
|
"eslint-plugin-markdown": "^3.0.1",
|
|
44
50
|
"eslint-plugin-prettier": "^5.1.3",
|
|
51
|
+
"eslint-plugin-vitest": "^0.3.26",
|
|
45
52
|
"fs-extra": "^11.2.0",
|
|
46
53
|
"prettier": "^3.2.5",
|
|
47
54
|
"readme-package-icons": "^1.1.14",
|
|
48
|
-
"typescript": "^5.4.2"
|
|
55
|
+
"typescript": "^5.4.2",
|
|
56
|
+
"vitest": "^1.3.1",
|
|
57
|
+
"vitest-mock-extended": "^1.3.1"
|
|
49
58
|
}
|
|
50
59
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const chalkMatcher: () => Promise<void>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.chalkMatcher = void 0;
|
|
40
|
+
var vitest_1 = require("vitest");
|
|
41
|
+
var chalkMatcher = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
42
|
+
return __generator(this, function (_a) {
|
|
43
|
+
vitest_1.expect.extend({
|
|
44
|
+
toChalkMatch: function (received, expected) {
|
|
45
|
+
var escaped;
|
|
46
|
+
if (expected instanceof RegExp) {
|
|
47
|
+
escaped = expected;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
escaped = RegExp(expected.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gm');
|
|
51
|
+
}
|
|
52
|
+
var match = escaped.test(received);
|
|
53
|
+
return {
|
|
54
|
+
pass: match === true,
|
|
55
|
+
message: function () {
|
|
56
|
+
return match
|
|
57
|
+
? "".concat(expected, " present in ").concat(received)
|
|
58
|
+
: "".concat(expected, " not present in: \r\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n").concat(received, "\r\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500");
|
|
59
|
+
},
|
|
60
|
+
expected: expected,
|
|
61
|
+
};
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
return [2 /*return*/];
|
|
65
|
+
});
|
|
66
|
+
}); };
|
|
67
|
+
exports.chalkMatcher = chalkMatcher;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const mockChalk: () => void;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mockChalk = void 0;
|
|
4
|
+
var vitest_1 = require("vitest");
|
|
5
|
+
var vitest_mock_extended_1 = require("vitest-mock-extended");
|
|
6
|
+
var mockChalk = function () {
|
|
7
|
+
var chalkMock = (0, vitest_mock_extended_1.mockDeep)();
|
|
8
|
+
vitest_1.vi.doMock('chalk', function () { return chalkMock; });
|
|
9
|
+
};
|
|
10
|
+
exports.mockChalk = mockChalk;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.mockConsole = void 0;
|
|
51
|
+
var vitest_1 = require("vitest");
|
|
52
|
+
var mockConsole = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
53
|
+
var _a, _b;
|
|
54
|
+
return __generator(this, function (_c) {
|
|
55
|
+
switch (_c.label) {
|
|
56
|
+
case 0:
|
|
57
|
+
_a = global;
|
|
58
|
+
_b = [{}];
|
|
59
|
+
return [4 /*yield*/, vitest_1.vi.importActual('node:console')];
|
|
60
|
+
case 1:
|
|
61
|
+
_a.console = __assign.apply(void 0, [__assign.apply(void 0, _b.concat([(_c.sent())])), args]);
|
|
62
|
+
return [2 /*return*/];
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}); };
|
|
66
|
+
exports.mockConsole = mockConsole;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.mockProcess = void 0;
|
|
51
|
+
var vitest_1 = require("vitest");
|
|
52
|
+
var mockProcess = function (args) { return __awaiter(void 0, void 0, void 0, function () {
|
|
53
|
+
var _a, _b;
|
|
54
|
+
return __generator(this, function (_c) {
|
|
55
|
+
switch (_c.label) {
|
|
56
|
+
case 0:
|
|
57
|
+
_a = global;
|
|
58
|
+
_b = [{}];
|
|
59
|
+
return [4 /*yield*/, vitest_1.vi.importActual('node:process')];
|
|
60
|
+
case 1:
|
|
61
|
+
_a.process = __assign.apply(void 0, [__assign.apply(void 0, _b.concat([(_c.sent())])), args]);
|
|
62
|
+
return [2 /*return*/];
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}); };
|
|
66
|
+
exports.mockProcess = mockProcess;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const durationRegex: RegExp;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.effectCause = void 0;
|
|
4
|
+
var effect_1 = require("effect");
|
|
5
|
+
var effectCause = function (effect) {
|
|
6
|
+
return effect_1.Effect.runPromise((0, effect_1.pipe)(effect, effect_1.Effect.catchAllCause(function (e) { return effect_1.Effect.fail(e); }), effect_1.Effect.flip));
|
|
7
|
+
};
|
|
8
|
+
exports.effectCause = effectCause;
|