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 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
- (async () => {
23
- await runPromise(
24
- Effect.gen(function* (_) {
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.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-examples": "for i in ./src/examples/*.ts; do bun run $i; done"
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.63.2",
30
+ "@effect/schema": "^0.64.1",
26
31
  "chalk": "^5.3.0",
27
32
  "dotenv-flow": "^4.1.0",
28
- "effect": "^2.4.1"
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.25",
35
- "@typescript-eslint/eslint-plugin": "^7.1.1",
36
- "@typescript-eslint/parser": "^7.1.1",
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,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var to_chalk_match_1 = require("./to-chalk-match");
4
+ var matchers = function () {
5
+ Promise.all([(0, to_chalk_match_1.chalkMatcher)()]);
6
+ };
7
+ (function () {
8
+ matchers();
9
+ })();
@@ -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,9 @@
1
+ import { Mock } from 'vitest';
2
+ interface ConsoleMockingArgs {
3
+ error?: Mock;
4
+ info?: Mock;
5
+ log?: Mock;
6
+ warn?: Mock;
7
+ }
8
+ export declare const mockConsole: (args: ConsoleMockingArgs) => Promise<void>;
9
+ export {};
@@ -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,6 @@
1
+ import { Mock } from 'vitest';
2
+ interface ProcessMockingArgs {
3
+ cwd?: Mock;
4
+ }
5
+ export declare const mockProcess: (args: ProcessMockingArgs) => Promise<void>;
6
+ export {};
@@ -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,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.durationRegex = void 0;
4
+ exports.durationRegex = /~ \d+ms/;
@@ -0,0 +1,2 @@
1
+ import { Effect } from 'effect';
2
+ export declare const effectCause: <A, E>(effect: Effect.Effect<A, E>) => Promise<import("effect/Cause").Cause<E>>;
@@ -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;