@effect-app/vue 2.28.1 → 2.30.0
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/CHANGELOG.md +23 -0
- package/dist/errorReporter.d.ts +2 -2
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +8 -7
- package/dist/lib.d.ts +2 -2
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +18 -24
- package/package.json +11 -11
- package/src/errorReporter.ts +12 -6
- package/src/lib.ts +27 -32
- package/test/dist/form.test.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @effect-app/vue
|
|
2
2
|
|
|
3
|
+
## 2.30.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 8be2984: housekeeping: update packages
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [10a8adf]
|
|
12
|
+
- Updated dependencies [8be2984]
|
|
13
|
+
- effect-app@2.30.0
|
|
14
|
+
|
|
15
|
+
## 2.29.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- 7a4d393: report errors anyway to Sentry but with lower severity. add log namespace annotations.
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Updated dependencies [7a4d393]
|
|
24
|
+
- effect-app@2.29.0
|
|
25
|
+
|
|
3
26
|
## 2.28.1
|
|
4
27
|
|
|
5
28
|
### Patch Changes
|
package/dist/errorReporter.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Cause, Effect } from "effect-app";
|
|
1
|
+
import { Cause, Effect, LogLevel } from "effect-app";
|
|
2
2
|
import { CauseException } from "effect-app/client/errors";
|
|
3
3
|
export declare const tryCauseException: <E>(cause: Cause<E>, name: string) => CauseException<E>;
|
|
4
|
-
export declare function reportError(name: string): (cause: Cause.Cause<unknown>, extras?: Record<string, unknown
|
|
4
|
+
export declare function reportError(name: string): (cause: Cause.Cause<unknown>, extras?: Record<string, unknown>, level?: LogLevel.LogLevel) => Effect.Effect<unknown, never, never>;
|
|
5
5
|
export declare function logError<E>(name: string): (cause: Cause.Cause<E>, extras?: Record<string, unknown>) => Effect.Effect<void, never, never>;
|
|
6
6
|
export declare function captureException(error: unknown, extras?: Record<string, unknown>): void;
|
|
7
7
|
export declare function reportMessage(message: string, extras?: Record<string, unknown>): Effect.Effect<void, never, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorReporter.d.ts","sourceRoot":"","sources":["../src/errorReporter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"errorReporter.d.ts","sourceRoot":"","sources":["../src/errorReporter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,cAAc,EAAyC,MAAM,0BAA0B,CAAA;AAGhG,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,QAAQ,MAAM,KAAG,cAAc,CAAC,CAAC,CAMpF,CAAA;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,WAGH,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,WAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UACzB,QAAQ,CAAC,QAAQ,KACvB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAiCxC;AAiBD,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,MAAM,WAEG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,uCAwBhE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAKhF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,qCAQ9E"}
|
package/dist/errorReporter.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
3
3
|
import * as Sentry from "@sentry/browser";
|
|
4
|
-
import { Cause, Effect } from "effect-app";
|
|
4
|
+
import { Cause, Effect, LogLevel } from "effect-app";
|
|
5
5
|
import { CauseException, ErrorReported, tryToJson, tryToReport } from "effect-app/client/errors";
|
|
6
|
-
import { dropUndefined } from "effect-app/utils";
|
|
6
|
+
import { dropUndefined, LogLevelToSentry } from "effect-app/utils";
|
|
7
7
|
export const tryCauseException = (cause, name) => {
|
|
8
8
|
try {
|
|
9
9
|
return new CauseException(cause, name);
|
|
@@ -13,16 +13,16 @@ export const tryCauseException = (cause, name) => {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
export function reportError(name) {
|
|
16
|
-
return (cause, extras) => Effect
|
|
16
|
+
return (cause, extras, level = LogLevel.Error) => Effect
|
|
17
17
|
.gen(function* () {
|
|
18
18
|
if (Cause.isInterruptedOnly(cause)) {
|
|
19
19
|
yield* Effect.logDebug("Interrupted").pipe(Effect.annotateLogs("extras", JSON.stringify(extras ?? {})));
|
|
20
20
|
return Cause.squash(cause);
|
|
21
21
|
}
|
|
22
22
|
const error = tryCauseException(cause, name);
|
|
23
|
-
yield* reportSentry(error, extras);
|
|
23
|
+
yield* reportSentry(error, extras, LogLevelToSentry(level));
|
|
24
24
|
yield* Effect
|
|
25
|
-
.
|
|
25
|
+
.logWithLevel(level, "Reporting error", cause)
|
|
26
26
|
.pipe(Effect.annotateLogs(dropUndefined({
|
|
27
27
|
extras,
|
|
28
28
|
error: tryToReport(error),
|
|
@@ -34,9 +34,10 @@ export function reportError(name) {
|
|
|
34
34
|
})
|
|
35
35
|
.pipe(Effect.tapErrorCause((cause) => Effect.logError("Failed to report error", cause).pipe(Effect.tapErrorCause(() => Effect.logFatal("Failed to log error cause")))));
|
|
36
36
|
}
|
|
37
|
-
function reportSentry(error, extras) {
|
|
37
|
+
function reportSentry(error, extras, level = "error") {
|
|
38
38
|
return Effect.sync(() => {
|
|
39
39
|
const scope = new Sentry.Scope();
|
|
40
|
+
scope.setLevel(level);
|
|
40
41
|
if (extras)
|
|
41
42
|
scope.setContext("extras", extras);
|
|
42
43
|
scope.setContext("error", tryToReport(error));
|
|
@@ -77,4 +78,4 @@ export function reportMessage(message, extras) {
|
|
|
77
78
|
console.warn(message, extras);
|
|
78
79
|
});
|
|
79
80
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JSZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lcnJvclJlcG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCwwREFBMEQ7QUFDMUQsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ2hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVsRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFJLEtBQWUsRUFBRSxJQUFZLEVBQXFCLEVBQUU7SUFDdkYsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDMUYsQ0FBQztBQUNILENBQUMsQ0FBQTtBQUVELE1BQU0sVUFBVSxXQUFXLENBQ3pCLElBQVk7SUFFWixPQUFPLENBQ0wsS0FBMkIsRUFDM0IsTUFBZ0MsRUFDaEMsUUFBMkIsUUFBUSxDQUFDLEtBQUssRUFDSCxFQUFFLENBQ3hDLE1BQU07U0FDSCxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ1osSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FB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
|
package/dist/lib.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Pausable, type UseIntervalFnOptions } from "@vueuse/core";
|
|
2
|
-
import type { Runtime } from "effect-app";
|
|
3
|
-
import { Cause
|
|
2
|
+
import type { Effect, Runtime } from "effect-app";
|
|
3
|
+
import { Cause } from "effect-app";
|
|
4
4
|
import type { RequestHandler, RequestHandlerWithInput, TaggedRequestClassAny } from "effect-app/client/clientFor";
|
|
5
5
|
import type { MaybeRefOrGetter, ShallowRef } from "vue";
|
|
6
6
|
export * as Result from "@effect-rx/rx/Result";
|
package/dist/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAiB,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACtF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAiB,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACtF,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,KAAK,EAAkB,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACjH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAGvD,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AA0B9C,eAAO,MAAM,kBAAkB,UAAW,KAAK,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,yCAC/B,CAAA;AAI3D,eAAO,MAAM,YAAY,aAAc;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,0BAGxC,CAAA;AAEf,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,QAAQ,EACZ,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,oBAM5B;AAED,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,EACnC,OAAO,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;;EAU1D;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,WAAW,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,uBAGhF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE;IACvB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,SAAS,qBAAqB,EAC5D,IAAI,EAAE,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAClD,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GACxE,uBAAuB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,SAAS,qBAAqB,EACzD,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EACtC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GACpD,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;CAMtC,CAAA"}
|
package/dist/lib.js
CHANGED
|
@@ -1,35 +1,29 @@
|
|
|
1
1
|
import { isHttpClientError } from "@effect/platform/HttpClientError";
|
|
2
2
|
import { useIntervalFn } from "@vueuse/core";
|
|
3
|
-
import { Cause,
|
|
4
|
-
import { reportError
|
|
3
|
+
import { Cause, LogLevel, pipe } from "effect-app";
|
|
4
|
+
import { reportError } from "./errorReporter.js";
|
|
5
5
|
export * as Result from "@effect-rx/rx/Result";
|
|
6
6
|
const reportRuntimeError_ = reportError("Runtime");
|
|
7
|
-
|
|
7
|
+
const determineLevel = (cause) => {
|
|
8
8
|
const sq = Cause.squash(cause);
|
|
9
9
|
if (!isHttpClientError(sq)) {
|
|
10
10
|
// TODO: we should only skip this on Configurator/Magento...
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
return yield* reportRuntimeError_(cause, extras);
|
|
11
|
+
return String(sq).includes("@effect/rpc: handler must return an array of responses with the same length as the requests.")
|
|
12
|
+
? LogLevel.Warning
|
|
13
|
+
: undefined;
|
|
16
14
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
switch (sq._tag) {
|
|
16
|
+
case "RequestError":
|
|
17
|
+
return sq.reason === "Transport" ? LogLevel.Info : undefined;
|
|
18
|
+
case "ResponseError":
|
|
19
|
+
return sq.reason === "Decode"
|
|
20
|
+
// we get this incase of Magento Proxy error (e.g returning 500 with html)
|
|
21
|
+
// TODO: we should only skip this on Configurator/Magento...
|
|
22
|
+
? LogLevel.Warning
|
|
23
|
+
: undefined;
|
|
22
24
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
// we get this incase of Magento Proxy error :/
|
|
26
|
-
// TODO: we should only skip this on Configurator/Magento...
|
|
27
|
-
yield* reportMessage("Decode error", { ...extras, cause });
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return yield* reportRuntimeError_(cause, extras);
|
|
32
|
-
});
|
|
25
|
+
};
|
|
26
|
+
export const reportRuntimeError = (cause, extras) => reportRuntimeError_(cause, extras, determineLevel(cause));
|
|
33
27
|
// $Project/$Configuration.Index
|
|
34
28
|
// -> "$Project", "$Configuration", "Index"
|
|
35
29
|
export const makeQueryKey = ({ name }) => pipe(name.split("/"), (split) => split.map((_) => "$" + _))
|
|
@@ -62,4 +56,4 @@ export const mapHandler = (self, map) => ({
|
|
|
62
56
|
? (i) => map(self.handler)(i)
|
|
63
57
|
: map(self.handler)
|
|
64
58
|
});
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xpYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUNwRSxPQUFPLEVBQWlCLGFBQWEsRUFBNkIsTUFBTSxjQUFjLENBQUE7QUFFdEYsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBR2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVoRCxPQUFPLEtBQUssTUFBTSxNQUFNLHNCQUFzQixDQUFBO0FBRTlDLE1BQU0sbUJBQW1CLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBRWxELE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFO0lBQy9DLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDM0IsNERBQTREO1FBQzVELE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FDdEIsOEZBQThGLENBQy9GO1lBQ0QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPO1lBQ2xCLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDZixDQUFDO0lBQ0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEIsS0FBSyxjQUFjO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUM5RCxLQUFLLGVBQWU7WUFDbEIsT0FBTyxFQUFFLENBQUMsTUFBTSxLQUFLLFFBQVE7Z0JBQzNCLDBFQUEwRTtnQkFDMUUsNERBQTREO2dCQUM1RCxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU87Z0JBQ2xCLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDakIsQ0FBQztBQUNILENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBcUIsRUFBRSxNQUFnQyxFQUFFLEVBQUUsQ0FDNUYsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUUzRCxnQ0FBZ0M7QUFDaEMsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFvQixFQUFFLEVBQUUsQ0FDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN4RCxJQUFJLENBQUMsR0FBRyxDQUFDO0tBQ1QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBRWYsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxFQUFZLEVBQ1osR0FBMkI7SUFFM0IsT0FBTyxPQUFPO1NBQ1gsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDakIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQy9CLENBQUM7QUFFRCxNQUFNLFVBQVUsK0JBQStCLENBQzdDLEdBQTJCLEVBQzNCLFFBQW1DLEVBQ25DLE9BQXlEO0lBRXpELE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FDdEIsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUNuQyxRQUFRLEVBQ1IsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQzdELENBQUE7SUFDRCxPQUFPO1FBQ0wsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRO0tBQ3RCLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUksT0FBbUQsRUFBRSxFQUFFO0lBQ25GLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUM3RCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUE7QUFDdEIsQ0FBQyxDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQVNuQixDQUFDLElBQVMsRUFBRSxHQUFRLEVBQU8sRUFBRSxDQUFDLENBQUM7SUFDakMsR0FBRyxJQUFJO0lBQ1AsT0FBTyxFQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxVQUFVO1FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUE0QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztDQUN0QixDQUFDLENBQUEifQ==
|
package/package.json
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/vue",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.30.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/effect-ts-app/libs/tree/main/packages/vue",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@formatjs/intl": "^3.1.4",
|
|
9
|
-
"@tanstack/vue-query": "^5.66.
|
|
9
|
+
"@tanstack/vue-query": "^5.66.9",
|
|
10
10
|
"@vueuse/core": "^12.7.0",
|
|
11
11
|
"query-string": "^9.1.1",
|
|
12
|
-
"effect-app": "2.
|
|
12
|
+
"effect-app": "2.30.0"
|
|
13
13
|
},
|
|
14
14
|
"peerDependencies": {
|
|
15
|
-
"@effect/platform": "^0.77.
|
|
16
|
-
"@effect/platform-browser": "^0.56.
|
|
15
|
+
"@effect/platform": "^0.77.3",
|
|
16
|
+
"@effect/platform-browser": "^0.56.3",
|
|
17
17
|
"@effect-rx/rx": "^0.34.7",
|
|
18
18
|
"@effect-rx/rx-vue": "^0.11.7",
|
|
19
|
-
"@sentry/browser": "^9.
|
|
20
|
-
"effect": "^3.13.
|
|
19
|
+
"@sentry/browser": "^9.2.0",
|
|
20
|
+
"effect": "^3.13.3",
|
|
21
21
|
"vue": "^3.5.13"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
|
|
27
27
|
"@babel/plugin-syntax-import-attributes": "^7.26.0",
|
|
28
28
|
"@babel/plugin-transform-modules-commonjs": "^7.26.3",
|
|
29
|
-
"babel-plugin-replace-import-extension": "^1.1.
|
|
29
|
+
"babel-plugin-replace-import-extension": "^1.1.5",
|
|
30
30
|
"@rollup/pluginutils": "^5.1.4",
|
|
31
|
-
"@types/node": "~22.13.
|
|
31
|
+
"@types/node": "~22.13.5",
|
|
32
32
|
"intl-messageformat": "^10.7.15",
|
|
33
33
|
"json5": "^2.2.3",
|
|
34
34
|
"typescript": "^5.7.3",
|
|
35
|
-
"vite": "^6.
|
|
36
|
-
"vitest": "^3.0.
|
|
35
|
+
"vite": "^6.2.0",
|
|
36
|
+
"vitest": "^3.0.7"
|
|
37
37
|
},
|
|
38
38
|
"typesVersions": {
|
|
39
39
|
"*": {
|
package/src/errorReporter.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
3
3
|
import * as Sentry from "@sentry/browser"
|
|
4
|
-
import { Cause, Effect } from "effect-app"
|
|
4
|
+
import { Cause, Effect, LogLevel } from "effect-app"
|
|
5
5
|
import { CauseException, ErrorReported, tryToJson, tryToReport } from "effect-app/client/errors"
|
|
6
|
-
import { dropUndefined } from "effect-app/utils"
|
|
6
|
+
import { dropUndefined, LogLevelToSentry } from "effect-app/utils"
|
|
7
7
|
|
|
8
8
|
export const tryCauseException = <E>(cause: Cause<E>, name: string): CauseException<E> => {
|
|
9
9
|
try {
|
|
@@ -16,7 +16,11 @@ export const tryCauseException = <E>(cause: Cause<E>, name: string): CauseExcept
|
|
|
16
16
|
export function reportError(
|
|
17
17
|
name: string
|
|
18
18
|
) {
|
|
19
|
-
return (
|
|
19
|
+
return (
|
|
20
|
+
cause: Cause.Cause<unknown>,
|
|
21
|
+
extras?: Record<string, unknown>,
|
|
22
|
+
level: LogLevel.LogLevel = LogLevel.Error
|
|
23
|
+
): Effect.Effect<unknown, never, never> =>
|
|
20
24
|
Effect
|
|
21
25
|
.gen(function*() {
|
|
22
26
|
if (Cause.isInterruptedOnly(cause)) {
|
|
@@ -25,9 +29,9 @@ export function reportError(
|
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
const error = tryCauseException(cause, name)
|
|
28
|
-
yield* reportSentry(error, extras)
|
|
32
|
+
yield* reportSentry(error, extras, LogLevelToSentry(level))
|
|
29
33
|
yield* Effect
|
|
30
|
-
.
|
|
34
|
+
.logWithLevel(level, "Reporting error", cause)
|
|
31
35
|
.pipe(
|
|
32
36
|
Effect.annotateLogs(dropUndefined({
|
|
33
37
|
extras,
|
|
@@ -53,10 +57,12 @@ export function reportError(
|
|
|
53
57
|
|
|
54
58
|
function reportSentry(
|
|
55
59
|
error: CauseException<unknown>,
|
|
56
|
-
extras: Record<string, unknown> | undefined
|
|
60
|
+
extras: Record<string, unknown> | undefined,
|
|
61
|
+
level: Sentry.SeverityLevel = "error"
|
|
57
62
|
) {
|
|
58
63
|
return Effect.sync(() => {
|
|
59
64
|
const scope = new Sentry.Scope()
|
|
65
|
+
scope.setLevel(level)
|
|
60
66
|
if (extras) scope.setContext("extras", extras)
|
|
61
67
|
scope.setContext("error", tryToReport(error) as any)
|
|
62
68
|
scope.setContext("cause", tryToJson(error.originalCause) as any)
|
package/src/lib.ts
CHANGED
|
@@ -1,44 +1,39 @@
|
|
|
1
1
|
import { isHttpClientError } from "@effect/platform/HttpClientError"
|
|
2
2
|
import { type Pausable, useIntervalFn, type UseIntervalFnOptions } from "@vueuse/core"
|
|
3
|
-
import type { Runtime } from "effect-app"
|
|
4
|
-
import { Cause,
|
|
3
|
+
import type { Effect, Runtime } from "effect-app"
|
|
4
|
+
import { Cause, LogLevel, pipe } from "effect-app"
|
|
5
5
|
import type { RequestHandler, RequestHandlerWithInput, TaggedRequestClassAny } from "effect-app/client/clientFor"
|
|
6
6
|
import type { MaybeRefOrGetter, ShallowRef } from "vue"
|
|
7
|
-
import { reportError
|
|
7
|
+
import { reportError } from "./errorReporter.js"
|
|
8
8
|
|
|
9
9
|
export * as Result from "@effect-rx/rx/Result"
|
|
10
10
|
|
|
11
11
|
const reportRuntimeError_ = reportError("Runtime")
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
yield* reportMessage("Transport error", { ...extras, cause })
|
|
30
|
-
return
|
|
31
|
-
}
|
|
32
|
-
} else if (sq._tag === "ResponseError") {
|
|
33
|
-
if (sq.reason === "Decode") {
|
|
34
|
-
// we get this incase of Magento Proxy error :/
|
|
12
|
+
|
|
13
|
+
const determineLevel = (cause: Cause<unknown>) => {
|
|
14
|
+
const sq = Cause.squash(cause)
|
|
15
|
+
if (!isHttpClientError(sq)) {
|
|
16
|
+
// TODO: we should only skip this on Configurator/Magento...
|
|
17
|
+
return String(sq).includes(
|
|
18
|
+
"@effect/rpc: handler must return an array of responses with the same length as the requests."
|
|
19
|
+
)
|
|
20
|
+
? LogLevel.Warning
|
|
21
|
+
: undefined
|
|
22
|
+
}
|
|
23
|
+
switch (sq._tag) {
|
|
24
|
+
case "RequestError":
|
|
25
|
+
return sq.reason === "Transport" ? LogLevel.Info : undefined
|
|
26
|
+
case "ResponseError":
|
|
27
|
+
return sq.reason === "Decode"
|
|
28
|
+
// we get this incase of Magento Proxy error (e.g returning 500 with html)
|
|
35
29
|
// TODO: we should only skip this on Configurator/Magento...
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
30
|
+
? LogLevel.Warning
|
|
31
|
+
: undefined
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const reportRuntimeError = (cause: Cause<unknown>, extras?: Record<string, unknown>) =>
|
|
36
|
+
reportRuntimeError_(cause, extras, determineLevel(cause))
|
|
42
37
|
|
|
43
38
|
// $Project/$Configuration.Index
|
|
44
39
|
// -> "$Project", "$Configuration", "Index"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.test.d.ts","sourceRoot":"","sources":["../form.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA
|
|
1
|
+
{"version":3,"file":"form.test.d.ts","sourceRoot":"","sources":["../form.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAI9B,qBAAa,YAAa,SAAQ,iBAShC;CAAG;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAEvC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,WAAY,SAAQ,gBAK/B;CAAG;;;;;;;;;;;;;AAEL,cAAM,MAAO,SAAQ,WAEnB;CAAG;;;;;;;;;;;;;AAEL,cAAM,MAAO,SAAQ,WAEnB;CAAG;;;;;;;;;;;;;;;;;;AAEL,cAAM,QAAS,SAAQ,aAGrB;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBL,qBAAa,cAAe,SAAQ,mBAGlC;CAAG"}
|