effect-errors 1.5.7 → 1.6.1

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
@@ -42,7 +42,7 @@ await runPromise(
42
42
  );
43
43
  ```
44
44
 
45
- You can also directly import the `prettyPrint` function to do whatever with it if you want 🤷
45
+ You can also directly import the `prettyPrint` function to do whatever you want with it 🤷
46
46
 
47
47
  ```typescript
48
48
  import { prettyPrint } from 'effect-errors';
@@ -56,7 +56,7 @@ await Effect.runPromise(
56
56
  Effect.catchAll((e) => {
57
57
  console.error(prettyPrint(e));
58
58
 
59
- return Effect.fail('❌ runPromise failure') as never;
59
+ return Effect.fail('❌ runPromise failure');
60
60
  }),
61
61
  ),
62
62
  );
@@ -65,7 +65,7 @@ await Effect.runPromise(
65
65
  Signature is the following:
66
66
 
67
67
  ```typescript
68
- const prettyPrint: <E>(cause: Cause<E>, options?: PrettyPrintOptions) => string;
68
+ const prettyPrint: <E>(cause: Cause<E>, options?: PrettyPrintOptions) => string
69
69
  ```
70
70
 
71
71
  `PrettyPrintOptions` allows you to tweak the following:
@@ -96,7 +96,7 @@ import { Schema } from '@effect/schema';
96
96
  export class FileNotFoundError extends Schema.TaggedError<SchemaError>()(
97
97
  'FileNotFound',
98
98
  {
99
- cause: Schema.CauseDefectUnknown,
99
+ cause: Schema.Defect,
100
100
  },
101
101
  ) {}
102
102
  ```
@@ -148,33 +148,33 @@ You might want to apply your own logic to reported errors data; for example if y
148
148
  ```typescript
149
149
  interface ErrorSpan {
150
150
  name: string;
151
- attributes: ReadonlyMap<string, unknown>;
152
- status: SpanStatus;
151
+ attributes: Record<string, unknown>;
152
+ durationInMilliseconds: number | undefined;
153
153
  }
154
154
 
155
- interface ErrorData {
155
+ export interface ErrorData {
156
156
  errorType: unknown;
157
157
  message: unknown;
158
- stack?: string[];
159
- sources?: string[];
160
- spans?: ErrorSpan[];
158
+ stack: string[] | undefined;
159
+ sources: ErrorRelatedSources[] | undefined;
160
+ spans: ErrorSpan[] | undefined;
161
161
  isPlainString: boolean;
162
162
  }
163
163
 
164
- interface CapturedErrors {
164
+ export interface CapturedErrors {
165
165
  interrupted: boolean;
166
166
  errors: ErrorData[];
167
167
  }
168
168
 
169
- interface CaptureErrorsOptions {
169
+ export interface CaptureErrorsOptions {
170
170
  reverseSpans?: boolean;
171
171
  stripCwd?: boolean;
172
172
  }
173
173
 
174
174
  const captureErrors: <E>(
175
- cause: Cause<E>,
176
- { reverseSpans, stripCwd }?: CaptureErrorsOptions,
177
- ) => CapturedErrors;
175
+ cause: Cause<E>,
176
+ options?: CaptureErrorsOptions
177
+ ) => Effect.Effect<CapturedErrors, FsError>
178
178
  ```
179
179
 
180
180
  You can use `captureErrors` like so:
@@ -185,15 +185,131 @@ import { captureErrors } from 'effect-errors';
185
185
  await Effect.runPromise(
186
186
  pipe(
187
187
  effect,
188
- Effect.catchAll((e) => {
189
- const data = captureErrors(e);
188
+ Effect.catchAll((e) =>
189
+ Effect.gen(function* () {
190
+ const errors = yield* captureErrors(e);
190
191
 
191
- // ...
192
- }),
192
+ // ...
193
+ }),
194
+ ),
193
195
  ),
194
196
  );
195
197
  ```
196
198
 
199
+ Capturing errors from the [`from-promise` bundle](./src/tests/bundle/from-promise.js) would return something like this, for example:
200
+
201
+ ```json
202
+ {
203
+ "interrupted": false,
204
+ "errors": [
205
+ {
206
+ "errorType": "FetchError",
207
+ "message": {
208
+ "code": "ConnectionRefused",
209
+ "path": "https://yolo-bro-oh-no.org/users/123",
210
+ "errno": 0
211
+ },
212
+ "stack": [
213
+ "at new e (:1:28)",
214
+ "at new <anonymous> (./src/tests/bundle/from-promise.js:31:85157)",
215
+ "at new t (:1:28)",
216
+ "at new za (:1:28)",
217
+ "at catch (./src/tests/bundle/from-promise.js:36:352)",
218
+ "at <anonymous> (./src/tests/bundle/from-promise.js:24:27585)",
219
+ "at processTicksAndRejections (:12:39)"
220
+ ],
221
+ "sources": [
222
+ {
223
+ "runPath": "/Users/jpb06/repos/perso/effect-errors/src/tests/bundle/from-promise.js:36:213",
224
+ "sourcesPath": "/Users/jpb06/repos/perso/effect-errors/src/examples/from-promise.ts:25:10",
225
+ "source": [
226
+ {
227
+ "line": 22,
228
+ "code": ");"
229
+ },
230
+ {
231
+ "line": 23,
232
+ "code": ""
233
+ },
234
+ {
235
+ "line": 24,
236
+ "code": "const fetchTask = (userId: string) =>"
237
+ },
238
+ {
239
+ "line": 25,
240
+ "code": " Effect.withSpan('fetchUser', { attributes: { userId } })(",
241
+ "column": 10
242
+ },
243
+ {
244
+ "line": 26,
245
+ "code": " Effect.tryPromise({"
246
+ },
247
+ {
248
+ "line": 27,
249
+ "code": " try: async () =>"
250
+ },
251
+ {
252
+ "line": 28,
253
+ "code": " await fetch(`https://yolo-bro-oh-no.org/users/${userId}`),"
254
+ }
255
+ ]
256
+ },
257
+ {
258
+ "runPath": "/Users/jpb06/repos/perso/effect-errors/src/tests/bundle/from-promise.js:36:490",
259
+ "sourcesPath": "/Users/jpb06/repos/perso/effect-errors/src/examples/from-promise.ts:44:39",
260
+ "source": [
261
+ {
262
+ "line": 41,
263
+ "code": " }),"
264
+ },
265
+ {
266
+ "line": 42,
267
+ "code": " );"
268
+ },
269
+ {
270
+ "line": 43,
271
+ "code": ""
272
+ },
273
+ {
274
+ "line": 44,
275
+ "code": "export const fromPromiseTask = Effect.withSpan('fromPromiseTask')(",
276
+ "column": 39
277
+ },
278
+ {
279
+ "line": 45,
280
+ "code": " Effect.gen(function* () {"
281
+ },
282
+ {
283
+ "line": 46,
284
+ "code": " yield* filename(fileName);"
285
+ },
286
+ {
287
+ "line": 47,
288
+ "code": ""
289
+ }
290
+ ]
291
+ }
292
+ ],
293
+ "spans": [
294
+ {
295
+ "name": "fromPromiseTask",
296
+ "attributes": {},
297
+ "durationInMilliseconds": 20
298
+ },
299
+ {
300
+ "name": "fetchUser",
301
+ "attributes": {
302
+ "userId": "123"
303
+ },
304
+ "durationInMilliseconds": 13
305
+ }
306
+ ],
307
+ "isPlainString": false
308
+ }
309
+ ]
310
+ }
311
+ ```
312
+
197
313
  ## ⚡ examples
198
314
 
199
315
  ### 🔶 error logging - `runPromise` / `runSync`
@@ -1 +1 @@
1
- {"version":3,"file":"capture-errors.js","names":["_effect","require","_Cause","_captureErrorsFromCause","_transformRawError","captureErrors","cause","options","reverseSpans","stripCwd","Effect","gen","isInterruptedOnly","interrupted","errors","rawErrors","captureErrorsFrom","forEach","transformRawError","exports"],"sources":["../../src/capture-errors.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AACA,IAAAC,MAAA,gBAAAD,OAAA;AAIA,IAAAE,uBAAA,gBAAAF,OAAA;AAEA,IAAAG,kBAAA,gBAAAH,OAAA;AA2BO,MAAMI,aAAa,GAAGA,CAC3BC,KAAe,EACfC,OAAA,GAAgC;EAC9BC,YAAY,EAAE,IAAI;EAClBC,QAAQ,EAAE;CACX,KAEDT,OAAA,CAAAU,MAAM,CAACC,GAAG,CAAC,aAAS;EAClB,IAAI,IAAAT,MAAA,CAAAU,iBAAiB,EAACN,KAAK,CAAC,EAAE;IAC5B,OAAO;MACLO,WAAW,EAAE,IAAI;MACjBC,MAAM,EAAE;KACT;EACH;EAEA,MAAMC,SAAS,GAAG,IAAAZ,uBAAA,CAAAa,iBAAiB,EAAIV,KAAK,CAAC;EAC7C,MAAMQ,MAAM,GAAG,OAAOd,OAAA,CAAAU,MAAM,CAACO,OAAO,CAACF,SAAS,EAAE,IAAAX,kBAAA,CAAAc,iBAAiB,EAACX,OAAO,CAAC,CAAC;EAE3E,OAAO;IACLM,WAAW,EAAE,KAAK;IAClBC;GACD;AACH,CAAC,CAAC;AAACK,OAAA,CAAAd,aAAA,GAAAA,aAAA","ignoreList":[]}
1
+ {"version":3,"file":"capture-errors.js","names":["_effect","require","_Cause","_captureErrorsFromCause","_transformRawError","captureErrors","cause","options","reverseSpans","stripCwd","Effect","gen","isInterruptedOnly","interrupted","errors","rawErrors","captureErrorsFrom","forEach","transformRawError","exports"],"sources":["../../src/capture-errors.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AACA,IAAAC,MAAA,gBAAAD,OAAA;AAGA,IAAAE,uBAAA,gBAAAF,OAAA;AAEA,IAAAG,kBAAA,gBAAAH,OAAA;AA2BO,MAAMI,aAAa,GAAGA,CAC3BC,KAAe,EACfC,OAAA,GAAgC;EAC9BC,YAAY,EAAE,IAAI;EAClBC,QAAQ,EAAE;CACX,KAEDT,OAAA,CAAAU,MAAM,CAACC,GAAG,CAAC,aAAS;EAClB,IAAI,IAAAT,MAAA,CAAAU,iBAAiB,EAACN,KAAK,CAAC,EAAE;IAC5B,OAAO;MACLO,WAAW,EAAE,IAAI;MACjBC,MAAM,EAAE;KACT;EACH;EAEA,MAAMC,SAAS,GAAG,IAAAZ,uBAAA,CAAAa,iBAAiB,EAAIV,KAAK,CAAC;EAC7C,MAAMQ,MAAM,GAAG,OAAOd,OAAA,CAAAU,MAAM,CAACO,OAAO,CAACF,SAAS,EAAE,IAAAX,kBAAA,CAAAc,iBAAiB,EAACX,OAAO,CAAC,CAAC;EAE3E,OAAO;IACLM,WAAW,EAAE,KAAK;IAClBC;GACD;AACH,CAAC,CAAC;AAACK,OAAA,CAAAd,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -34,11 +34,12 @@ const transformRawError = ({
34
34
  stacktrace
35
35
  } = (0, _splitSpansAttributesByType.splitSpansAttributesByTypes)(allAttributes);
36
36
  const errorSources = yield* (0, _maybeMapSourcemaps.maybeMapSourcemaps)(stacktrace);
37
+ const duration = status._tag === 'Ended' ? +`${(status.endTime - status.startTime) / BigInt(1000000)}` : undefined;
37
38
  sources.push(...errorSources);
38
39
  spans.push({
39
40
  name,
40
- attributes,
41
- status
41
+ attributes: Object.fromEntries(attributes),
42
+ durationInMilliseconds: duration
42
43
  });
43
44
  current = _effect.Option.getOrUndefined(current.parent);
44
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transform-raw-error.js","names":["_effect","require","_splitSpansAttributesByType","_stackRegex","_stripCwdPath","_maybeMapSourcemaps","transformRawError","reverseSpans","stripCwd","message","stack","maybeStack","span","errorType","isPlainString","Effect","gen","sources","spans","undefined","current","_tag","name","attributes","allAttributes","status","stacktrace","splitSpansAttributesByTypes","errorSources","maybeMapSourcemaps","push","Option","getOrUndefined","parent","stripCwdPath","replaceAll","stackAtRegex","split","length","toReversed","exports"],"sources":["../../../src/source-maps/transform-raw-error.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AAIA,IAAAC,2BAAA,gBAAAD,OAAA;AACA,IAAAE,WAAA,gBAAAF,OAAA;AACA,IAAAG,aAAA,gBAAAH,OAAA;AAIA,IAAAI,mBAAA,gBAAAJ,OAAA;AAEO,MAAMK,iBAAiB,GAC5BA,CAAC;EAAEC,YAAY;EAAEC;AAAQ,CAAwB,KACjD,CAAC;EACCC,OAAO;EACPC,KAAK,EAAEC,UAAU;EACjBC,IAAI;EACJC,SAAS;EACTC;AAAa,CACD,KACZd,OAAA,CAAAe,MAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMC,OAAO,GAA0B,EAAE;EACzC,MAAMC,KAAK,GAAG,EAAE;EAEhB,IAAIN,IAAI,KAAKO,SAAS,EAAE;IACtB,IAAIC,OAAO,GAA+BR,IAAI;IAE9C,OAAOQ,OAAO,KAAKD,SAAS,IAAIC,OAAO,CAACC,IAAI,KAAK,MAAM,EAAE;MACvD,MAAM;QAAEC,IAAI;QAAEC,UAAU,EAAEC,aAAa;QAAEC;MAAM,CAAE,GAAGL,OAAO;MAE3D,MAAM;QAAEG,UAAU;QAAEG;MAAU,CAAE,GAC9B,IAAAxB,2BAAA,CAAAyB,2BAA2B,EAACH,aAAa,CAAC;MAE5C,MAAMI,YAAY,GAAG,OAAO,IAAAvB,mBAAA,CAAAwB,kBAAkB,EAACH,UAAU,CAAC;MAE1DT,OAAO,CAACa,IAAI,CAAC,GAAGF,YAAY,CAAC;MAC7BV,KAAK,CAACY,IAAI,CAAC;QACTR,IAAI;QACJC,UAAU;QACVE;OACD,CAAC;MACFL,OAAO,GAAGpB,OAAA,CAAA+B,MAAM,CAACC,cAAc,CAACZ,OAAO,CAACa,MAAM,CAAC;IACjD;EACF;EAEA,IAAIvB,KAAK;EACT,IAAIC,UAAU,KAAKQ,SAAS,EAAE;IAC5BT,KAAK,GAAGF,QAAQ,KAAK,IAAI,GAAG,IAAAJ,aAAA,CAAA8B,YAAY,EAACvB,UAAU,CAAC,GAAGA,UAAU;EACnE;EAEA,OAAO;IACLE,SAAS;IACTJ,OAAO;IACPC,KAAK,EAAEA,KAAK,EAAEyB,UAAU,CAAChC,WAAA,CAAAiC,YAAY,EAAE,KAAK,CAAC,CAACC,KAAK,CAAC,MAAM,CAAC;IAC3DpB,OAAO,EAAEA,OAAO,CAACqB,MAAM,GAAG,CAAC,GAAGrB,OAAO,GAAGE,SAAS;IACjDD,KAAK,EAAEX,YAAY,KAAK,IAAI,GAAGW,KAAK,CAACqB,UAAU,EAAE,GAAGrB,KAAK;IACzDJ;GACD;AACH,CAAC,CAAC;AAAC0B,OAAA,CAAAlC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"file":"transform-raw-error.js","names":["_effect","require","_splitSpansAttributesByType","_stackRegex","_stripCwdPath","_maybeMapSourcemaps","transformRawError","reverseSpans","stripCwd","message","stack","maybeStack","span","errorType","isPlainString","Effect","gen","sources","spans","undefined","current","_tag","name","attributes","allAttributes","status","stacktrace","splitSpansAttributesByTypes","errorSources","maybeMapSourcemaps","duration","endTime","startTime","BigInt","push","Object","fromEntries","durationInMilliseconds","Option","getOrUndefined","parent","stripCwdPath","replaceAll","stackAtRegex","split","length","toReversed","exports"],"sources":["../../../src/source-maps/transform-raw-error.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AAIA,IAAAC,2BAAA,gBAAAD,OAAA;AACA,IAAAE,WAAA,gBAAAF,OAAA;AACA,IAAAG,aAAA,gBAAAH,OAAA;AAIA,IAAAI,mBAAA,gBAAAJ,OAAA;AAEO,MAAMK,iBAAiB,GAC5BA,CAAC;EAAEC,YAAY;EAAEC;AAAQ,CAAwB,KACjD,CAAC;EACCC,OAAO;EACPC,KAAK,EAAEC,UAAU;EACjBC,IAAI;EACJC,SAAS;EACTC;AAAa,CACD,KACZd,OAAA,CAAAe,MAAM,CAACC,GAAG,CAAC,aAAS;EAClB,MAAMC,OAAO,GAA0B,EAAE;EACzC,MAAMC,KAAK,GAAG,EAAE;EAEhB,IAAIN,IAAI,KAAKO,SAAS,EAAE;IACtB,IAAIC,OAAO,GAA+BR,IAAI;IAE9C,OAAOQ,OAAO,KAAKD,SAAS,IAAIC,OAAO,CAACC,IAAI,KAAK,MAAM,EAAE;MACvD,MAAM;QAAEC,IAAI;QAAEC,UAAU,EAAEC,aAAa;QAAEC;MAAM,CAAE,GAAGL,OAAO;MAE3D,MAAM;QAAEG,UAAU;QAAEG;MAAU,CAAE,GAC9B,IAAAxB,2BAAA,CAAAyB,2BAA2B,EAACH,aAAa,CAAC;MAE5C,MAAMI,YAAY,GAAG,OAAO,IAAAvB,mBAAA,CAAAwB,kBAAkB,EAACH,UAAU,CAAC;MAE1D,MAAMI,QAAQ,GACZL,MAAM,CAACJ,IAAI,KAAK,OAAO,GACnB,CAAC,GAAG,CAACI,MAAM,CAACM,OAAO,GAAGN,MAAM,CAACO,SAAS,IAAIC,MAAM,CAAC,OAAO,CAAC,EAAE,GAC3Dd,SAAS;MAEfF,OAAO,CAACiB,IAAI,CAAC,GAAGN,YAAY,CAAC;MAC7BV,KAAK,CAACgB,IAAI,CAAC;QACTZ,IAAI;QACJC,UAAU,EAAEY,MAAM,CAACC,WAAW,CAACb,UAAU,CAAC;QAC1Cc,sBAAsB,EAAEP;OACzB,CAAC;MACFV,OAAO,GAAGpB,OAAA,CAAAsC,MAAM,CAACC,cAAc,CAACnB,OAAO,CAACoB,MAAM,CAAC;IACjD;EACF;EAEA,IAAI9B,KAAK;EACT,IAAIC,UAAU,KAAKQ,SAAS,EAAE;IAC5BT,KAAK,GAAGF,QAAQ,KAAK,IAAI,GAAG,IAAAJ,aAAA,CAAAqC,YAAY,EAAC9B,UAAU,CAAC,GAAGA,UAAU;EACnE;EAEA,OAAO;IACLE,SAAS;IACTJ,OAAO;IACPC,KAAK,EAAEA,KAAK,EAAEgC,UAAU,CAACvC,WAAA,CAAAwC,YAAY,EAAE,KAAK,CAAC,CAACC,KAAK,CAAC,MAAM,CAAC;IAC3D3B,OAAO,EAAEA,OAAO,CAAC4B,MAAM,GAAG,CAAC,GAAG5B,OAAO,GAAGE,SAAS;IACjDD,KAAK,EAAEX,YAAY,KAAK,IAAI,GAAGW,KAAK,CAAC4B,UAAU,EAAE,GAAG5B,KAAK;IACzDJ;GACD;AACH,CAAC,CAAC;AAACiC,OAAA,CAAAzC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -1,12 +1,11 @@
1
1
  import { Effect } from 'effect';
2
2
  import { type Cause } from 'effect/Cause';
3
- import { type SpanStatus } from 'effect/Tracer';
4
3
  import { type FsError } from './logic/effects/fs/fs-error.js';
5
4
  import { type ErrorRelatedSources } from './source-maps/get-sources-from-map-file.js';
6
5
  export interface ErrorSpan {
7
6
  name: string;
8
- attributes: ReadonlyMap<string, unknown>;
9
- status: SpanStatus;
7
+ attributes: Record<string, unknown>;
8
+ durationInMilliseconds: number | undefined;
10
9
  }
11
10
  export interface ErrorData {
12
11
  errorType: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"capture-errors.d.ts","sourceRoot":"","sources":["../../src/capture-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,KAAK,KAAK,EAAqB,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAGtF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC3C,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,CAAC,SACtB,KAAK,CAAC,CAAC,CAAC,YACN,oBAAoB,KAI5B,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAgBpC,CAAC"}
1
+ {"version":3,"file":"capture-errors.d.ts","sourceRoot":"","sources":["../../src/capture-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,KAAK,KAAK,EAAqB,MAAM,cAAc,CAAC;AAE7D,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAE9D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAGtF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC3C,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,CAAC,SACtB,KAAK,CAAC,CAAC,CAAC,YACN,oBAAoB,KAI5B,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAgBpC,CAAC"}
package/dts/index.d.ts CHANGED
@@ -5,4 +5,5 @@ export * from './types/pretty-print-options.type.js';
5
5
  export * from './capture-errors.js';
6
6
  export * from './logic/util/big-int-replacer.js';
7
7
  export type { ErrorRelatedSources } from './source-maps/get-sources-from-map-file.js';
8
+ export type { SourceCode } from './source-maps/get-source-code.ts';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,qBAAqB,CAAC;AACpC,cAAc,kCAAkC,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,qBAAqB,CAAC;AACpC,cAAc,kCAAkC,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACtF,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC"}
@@ -9,8 +9,10 @@ export declare const transformRawError: ({ reverseSpans, stripCwd }: CaptureErro
9
9
  sources: ErrorRelatedSources[] | undefined;
10
10
  spans: {
11
11
  name: string;
12
- attributes: ReadonlyMap<string, unknown>;
13
- status: import("effect/Tracer").SpanStatus;
12
+ attributes: {
13
+ [k: string]: unknown;
14
+ };
15
+ durationInMilliseconds: number | undefined;
14
16
  }[];
15
17
  isPlainString: boolean;
16
18
  }, import("../logic/effects/fs/fs-error.js").FsError, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"transform-raw-error.d.ts","sourceRoot":"","sources":["../../../src/source-maps/transform-raw-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AAGxC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E,eAAO,MAAM,iBAAiB,+BACC,oBAAoB,uEAO9C,WAAW;;;;;;;;;;;4DAuCV,CAAC"}
1
+ {"version":3,"file":"transform-raw-error.d.ts","sourceRoot":"","sources":["../../../src/source-maps/transform-raw-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AAGxC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIjE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E,eAAO,MAAM,iBAAiB,+BACC,oBAAoB,uEAO9C,WAAW;;;;;;;;;;;;;4DA4CV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"capture-errors.js","names":["Effect","isInterruptedOnly","captureErrorsFrom","transformRawError","captureErrors","cause","options","reverseSpans","stripCwd","gen","interrupted","errors","rawErrors","forEach"],"sources":["../../src/capture-errors.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAM,QAAQ,QAAQ;AAC/B,SAAqBC,iBAAiB,QAAQ,cAAc;AAI5D,SAASC,iBAAiB,QAAQ,6CAA6C;AAE/E,SAASC,iBAAiB,QAAQ,sCAAsC;AA2BxE,OAAO,MAAMC,aAAa,GAAGA,CAC3BC,KAAe,EACfC,OAAA,GAAgC;EAC9BC,YAAY,EAAE,IAAI;EAClBC,QAAQ,EAAE;CACX,KAEDR,MAAM,CAACS,GAAG,CAAC,aAAS;EAClB,IAAIR,iBAAiB,CAACI,KAAK,CAAC,EAAE;IAC5B,OAAO;MACLK,WAAW,EAAE,IAAI;MACjBC,MAAM,EAAE;KACT;EACH;EAEA,MAAMC,SAAS,GAAGV,iBAAiB,CAAIG,KAAK,CAAC;EAC7C,MAAMM,MAAM,GAAG,OAAOX,MAAM,CAACa,OAAO,CAACD,SAAS,EAAET,iBAAiB,CAACG,OAAO,CAAC,CAAC;EAE3E,OAAO;IACLI,WAAW,EAAE,KAAK;IAClBC;GACD;AACH,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"capture-errors.js","names":["Effect","isInterruptedOnly","captureErrorsFrom","transformRawError","captureErrors","cause","options","reverseSpans","stripCwd","gen","interrupted","errors","rawErrors","forEach"],"sources":["../../src/capture-errors.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAM,QAAQ,QAAQ;AAC/B,SAAqBC,iBAAiB,QAAQ,cAAc;AAG5D,SAASC,iBAAiB,QAAQ,6CAA6C;AAE/E,SAASC,iBAAiB,QAAQ,sCAAsC;AA2BxE,OAAO,MAAMC,aAAa,GAAGA,CAC3BC,KAAe,EACfC,OAAA,GAAgC;EAC9BC,YAAY,EAAE,IAAI;EAClBC,QAAQ,EAAE;CACX,KAEDR,MAAM,CAACS,GAAG,CAAC,aAAS;EAClB,IAAIR,iBAAiB,CAACI,KAAK,CAAC,EAAE;IAC5B,OAAO;MACLK,WAAW,EAAE,IAAI;MACjBC,MAAM,EAAE;KACT;EACH;EAEA,MAAMC,SAAS,GAAGV,iBAAiB,CAAIG,KAAK,CAAC;EAC7C,MAAMM,MAAM,GAAG,OAAOX,MAAM,CAACa,OAAO,CAACD,SAAS,EAAET,iBAAiB,CAACG,OAAO,CAAC,CAAC;EAE3E,OAAO;IACLI,WAAW,EAAE,KAAK;IAClBC;GACD;AACH,CAAC,CAAC","ignoreList":[]}
@@ -28,11 +28,12 @@ export const transformRawError = ({
28
28
  stacktrace
29
29
  } = splitSpansAttributesByTypes(allAttributes);
30
30
  const errorSources = yield* maybeMapSourcemaps(stacktrace);
31
+ const duration = status._tag === 'Ended' ? +`${(status.endTime - status.startTime) / BigInt(1000000)}` : undefined;
31
32
  sources.push(...errorSources);
32
33
  spans.push({
33
34
  name,
34
- attributes,
35
- status
35
+ attributes: Object.fromEntries(attributes),
36
+ durationInMilliseconds: duration
36
37
  });
37
38
  current = Option.getOrUndefined(current.parent);
38
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transform-raw-error.js","names":["Effect","Option","splitSpansAttributesByTypes","stackAtRegex","stripCwdPath","maybeMapSourcemaps","transformRawError","reverseSpans","stripCwd","message","stack","maybeStack","span","errorType","isPlainString","gen","sources","spans","undefined","current","_tag","name","attributes","allAttributes","status","stacktrace","errorSources","push","getOrUndefined","parent","replaceAll","split","length","toReversed"],"sources":["../../../src/source-maps/transform-raw-error.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAM,EAAEC,MAAM,QAAQ,QAAQ;AAIvC,SAASC,2BAA2B,QAAQ,kDAAkD;AAC9F,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,YAAY,QAAQ,4BAA4B;AAIzD,SAASC,kBAAkB,QAAQ,2BAA2B;AAE9D,OAAO,MAAMC,iBAAiB,GAC5BA,CAAC;EAAEC,YAAY;EAAEC;AAAQ,CAAwB,KACjD,CAAC;EACCC,OAAO;EACPC,KAAK,EAAEC,UAAU;EACjBC,IAAI;EACJC,SAAS;EACTC;AAAa,CACD,KACZd,MAAM,CAACe,GAAG,CAAC,aAAS;EAClB,MAAMC,OAAO,GAA0B,EAAE;EACzC,MAAMC,KAAK,GAAG,EAAE;EAEhB,IAAIL,IAAI,KAAKM,SAAS,EAAE;IACtB,IAAIC,OAAO,GAA+BP,IAAI;IAE9C,OAAOO,OAAO,KAAKD,SAAS,IAAIC,OAAO,CAACC,IAAI,KAAK,MAAM,EAAE;MACvD,MAAM;QAAEC,IAAI;QAAEC,UAAU,EAAEC,aAAa;QAAEC;MAAM,CAAE,GAAGL,OAAO;MAE3D,MAAM;QAAEG,UAAU;QAAEG;MAAU,CAAE,GAC9BvB,2BAA2B,CAACqB,aAAa,CAAC;MAE5C,MAAMG,YAAY,GAAG,OAAOrB,kBAAkB,CAACoB,UAAU,CAAC;MAE1DT,OAAO,CAACW,IAAI,CAAC,GAAGD,YAAY,CAAC;MAC7BT,KAAK,CAACU,IAAI,CAAC;QACTN,IAAI;QACJC,UAAU;QACVE;OACD,CAAC;MACFL,OAAO,GAAGlB,MAAM,CAAC2B,cAAc,CAACT,OAAO,CAACU,MAAM,CAAC;IACjD;EACF;EAEA,IAAInB,KAAK;EACT,IAAIC,UAAU,KAAKO,SAAS,EAAE;IAC5BR,KAAK,GAAGF,QAAQ,KAAK,IAAI,GAAGJ,YAAY,CAACO,UAAU,CAAC,GAAGA,UAAU;EACnE;EAEA,OAAO;IACLE,SAAS;IACTJ,OAAO;IACPC,KAAK,EAAEA,KAAK,EAAEoB,UAAU,CAAC3B,YAAY,EAAE,KAAK,CAAC,CAAC4B,KAAK,CAAC,MAAM,CAAC;IAC3Df,OAAO,EAAEA,OAAO,CAACgB,MAAM,GAAG,CAAC,GAAGhB,OAAO,GAAGE,SAAS;IACjDD,KAAK,EAAEV,YAAY,KAAK,IAAI,GAAGU,KAAK,CAACgB,UAAU,EAAE,GAAGhB,KAAK;IACzDH;GACD;AACH,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"transform-raw-error.js","names":["Effect","Option","splitSpansAttributesByTypes","stackAtRegex","stripCwdPath","maybeMapSourcemaps","transformRawError","reverseSpans","stripCwd","message","stack","maybeStack","span","errorType","isPlainString","gen","sources","spans","undefined","current","_tag","name","attributes","allAttributes","status","stacktrace","errorSources","duration","endTime","startTime","BigInt","push","Object","fromEntries","durationInMilliseconds","getOrUndefined","parent","replaceAll","split","length","toReversed"],"sources":["../../../src/source-maps/transform-raw-error.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAM,EAAEC,MAAM,QAAQ,QAAQ;AAIvC,SAASC,2BAA2B,QAAQ,kDAAkD;AAC9F,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,YAAY,QAAQ,4BAA4B;AAIzD,SAASC,kBAAkB,QAAQ,2BAA2B;AAE9D,OAAO,MAAMC,iBAAiB,GAC5BA,CAAC;EAAEC,YAAY;EAAEC;AAAQ,CAAwB,KACjD,CAAC;EACCC,OAAO;EACPC,KAAK,EAAEC,UAAU;EACjBC,IAAI;EACJC,SAAS;EACTC;AAAa,CACD,KACZd,MAAM,CAACe,GAAG,CAAC,aAAS;EAClB,MAAMC,OAAO,GAA0B,EAAE;EACzC,MAAMC,KAAK,GAAG,EAAE;EAEhB,IAAIL,IAAI,KAAKM,SAAS,EAAE;IACtB,IAAIC,OAAO,GAA+BP,IAAI;IAE9C,OAAOO,OAAO,KAAKD,SAAS,IAAIC,OAAO,CAACC,IAAI,KAAK,MAAM,EAAE;MACvD,MAAM;QAAEC,IAAI;QAAEC,UAAU,EAAEC,aAAa;QAAEC;MAAM,CAAE,GAAGL,OAAO;MAE3D,MAAM;QAAEG,UAAU;QAAEG;MAAU,CAAE,GAC9BvB,2BAA2B,CAACqB,aAAa,CAAC;MAE5C,MAAMG,YAAY,GAAG,OAAOrB,kBAAkB,CAACoB,UAAU,CAAC;MAE1D,MAAME,QAAQ,GACZH,MAAM,CAACJ,IAAI,KAAK,OAAO,GACnB,CAAC,GAAG,CAACI,MAAM,CAACI,OAAO,GAAGJ,MAAM,CAACK,SAAS,IAAIC,MAAM,CAAC,OAAO,CAAC,EAAE,GAC3DZ,SAAS;MAEfF,OAAO,CAACe,IAAI,CAAC,GAAGL,YAAY,CAAC;MAC7BT,KAAK,CAACc,IAAI,CAAC;QACTV,IAAI;QACJC,UAAU,EAAEU,MAAM,CAACC,WAAW,CAACX,UAAU,CAAC;QAC1CY,sBAAsB,EAAEP;OACzB,CAAC;MACFR,OAAO,GAAGlB,MAAM,CAACkC,cAAc,CAAChB,OAAO,CAACiB,MAAM,CAAC;IACjD;EACF;EAEA,IAAI1B,KAAK;EACT,IAAIC,UAAU,KAAKO,SAAS,EAAE;IAC5BR,KAAK,GAAGF,QAAQ,KAAK,IAAI,GAAGJ,YAAY,CAACO,UAAU,CAAC,GAAGA,UAAU;EACnE;EAEA,OAAO;IACLE,SAAS;IACTJ,OAAO;IACPC,KAAK,EAAEA,KAAK,EAAE2B,UAAU,CAAClC,YAAY,EAAE,KAAK,CAAC,CAACmC,KAAK,CAAC,MAAM,CAAC;IAC3DtB,OAAO,EAAEA,OAAO,CAACuB,MAAM,GAAG,CAAC,GAAGvB,OAAO,GAAGE,SAAS;IACjDD,KAAK,EAAEV,YAAY,KAAK,IAAI,GAAGU,KAAK,CAACuB,UAAU,EAAE,GAAGvB,KAAK;IACzDH;GACD;AACH,CAAC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  }
18
18
  },
19
19
  "name": "effect-errors",
20
- "version": "1.5.7",
20
+ "version": "1.6.1",
21
21
  "author": "jpb06 <jp.bois.06@outlook.fr>",
22
22
  "description": "A POC for errors reporting in Effect",
23
23
  "keywords": [