@sentry/effect 10.44.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.
Files changed (70) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -0
  3. package/build/cjs/client/index.js +44 -0
  4. package/build/cjs/client/index.js.map +1 -0
  5. package/build/cjs/client/sdk.js +23 -0
  6. package/build/cjs/client/sdk.js.map +1 -0
  7. package/build/cjs/index.client.js +27 -0
  8. package/build/cjs/index.client.js.map +1 -0
  9. package/build/cjs/index.server.js +27 -0
  10. package/build/cjs/index.server.js.map +1 -0
  11. package/build/cjs/logger.js +43 -0
  12. package/build/cjs/logger.js.map +1 -0
  13. package/build/cjs/metrics.js +120 -0
  14. package/build/cjs/metrics.js.map +1 -0
  15. package/build/cjs/server/index.js +44 -0
  16. package/build/cjs/server/index.js.map +1 -0
  17. package/build/cjs/server/sdk.js +23 -0
  18. package/build/cjs/server/sdk.js.map +1 -0
  19. package/build/cjs/tracer.js +145 -0
  20. package/build/cjs/tracer.js.map +1 -0
  21. package/build/esm/client/index.js +41 -0
  22. package/build/esm/client/index.js.map +1 -0
  23. package/build/esm/client/sdk.js +21 -0
  24. package/build/esm/client/sdk.js.map +1 -0
  25. package/build/esm/index.client.js +7 -0
  26. package/build/esm/index.client.js.map +1 -0
  27. package/build/esm/index.server.js +7 -0
  28. package/build/esm/index.server.js.map +1 -0
  29. package/build/esm/logger.js +41 -0
  30. package/build/esm/logger.js.map +1 -0
  31. package/build/esm/metrics.js +118 -0
  32. package/build/esm/metrics.js.map +1 -0
  33. package/build/esm/package.json +1 -0
  34. package/build/esm/server/index.js +41 -0
  35. package/build/esm/server/index.js.map +1 -0
  36. package/build/esm/server/sdk.js +21 -0
  37. package/build/esm/server/sdk.js.map +1 -0
  38. package/build/esm/tracer.js +143 -0
  39. package/build/esm/tracer.js.map +1 -0
  40. package/build/types/client/index.d.ts +33 -0
  41. package/build/types/client/index.d.ts.map +1 -0
  42. package/build/types/client/sdk.d.ts +10 -0
  43. package/build/types/client/sdk.d.ts.map +1 -0
  44. package/build/types/index.client.d.ts +7 -0
  45. package/build/types/index.client.d.ts.map +1 -0
  46. package/build/types/index.server.d.ts +7 -0
  47. package/build/types/index.server.d.ts.map +1 -0
  48. package/build/types/index.types.d.ts +16 -0
  49. package/build/types/index.types.d.ts.map +1 -0
  50. package/build/types/logger.d.ts +6 -0
  51. package/build/types/logger.d.ts.map +1 -0
  52. package/build/types/metrics.d.ts +17 -0
  53. package/build/types/metrics.d.ts.map +1 -0
  54. package/build/types/server/index.d.ts +34 -0
  55. package/build/types/server/index.d.ts.map +1 -0
  56. package/build/types/server/sdk.d.ts +10 -0
  57. package/build/types/server/sdk.d.ts.map +1 -0
  58. package/build/types/tracer.d.ts +6 -0
  59. package/build/types/tracer.d.ts.map +1 -0
  60. package/build/types-ts3.8/client/index.d.ts +33 -0
  61. package/build/types-ts3.8/client/sdk.d.ts +10 -0
  62. package/build/types-ts3.8/index.client.d.ts +7 -0
  63. package/build/types-ts3.8/index.server.d.ts +7 -0
  64. package/build/types-ts3.8/index.types.d.ts +16 -0
  65. package/build/types-ts3.8/logger.d.ts +6 -0
  66. package/build/types-ts3.8/metrics.d.ts +17 -0
  67. package/build/types-ts3.8/server/index.d.ts +34 -0
  68. package/build/types-ts3.8/server/sdk.d.ts +10 -0
  69. package/build/types-ts3.8/tracer.d.ts +6 -0
  70. package/package.json +99 -0
@@ -0,0 +1,17 @@
1
+ import type * as Layer from 'effect/Layer';
2
+ /**
3
+ * Creates a metrics flusher with its own isolated state for delta tracking.
4
+ * Useful for testing scenarios where you need to control the lifecycle.
5
+ * @internal
6
+ */
7
+ export declare function createMetricsFlusher(): {
8
+ flush: () => void;
9
+ clear: () => void;
10
+ };
11
+ /**
12
+ * Effect Layer that periodically flushes metrics to Sentry.
13
+ * The layer manages its own state for delta counter calculations,
14
+ * which is automatically cleaned up when the layer is finalized.
15
+ */
16
+ export declare const SentryEffectMetricsLayer: Layer.Layer<never, never, never>;
17
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AA0F3C;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI;IACtC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAMA;AAWD;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAYrE,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { NodeOptions } from '@sentry/node-core/light';
2
+ import type * as EffectLayer from 'effect/Layer';
3
+ export { init } from './sdk';
4
+ /**
5
+ * Options for the Sentry Effect server layer.
6
+ */
7
+ export type EffectServerLayerOptions = NodeOptions;
8
+ /**
9
+ * Creates an Effect Layer that initializes Sentry for Node.js servers.
10
+ *
11
+ * To enable Effect tracing, logs, or metrics, compose with the respective layers:
12
+ * - `Layer.setTracer(Sentry.SentryEffectTracer)` for tracing
13
+ * - `Logger.replace(Logger.defaultLogger, Sentry.SentryEffectLogger)` for logs
14
+ * - `Sentry.SentryEffectMetricsLayer` for metrics
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import * as Sentry from '@sentry/effect/server';
19
+ * import { NodeRuntime } from '@effect/platform-node';
20
+ * import { Layer, Logger } from 'effect';
21
+ * import { HttpLive } from './Http.js';
22
+ *
23
+ * const SentryLive = Layer.mergeAll(
24
+ * Sentry.effectLayer({ dsn: '__DSN__' }),
25
+ * Layer.setTracer(Sentry.SentryEffectTracer),
26
+ * Logger.replace(Logger.defaultLogger, Sentry.SentryEffectLogger),
27
+ * );
28
+ *
29
+ * const MainLive = HttpLive.pipe(Layer.provide(SentryLive));
30
+ * MainLive.pipe(Layer.launch, NodeRuntime.runMain);
31
+ * ```
32
+ */
33
+ export declare function effectLayer(options: EffectServerLayerOptions): EffectLayer.Layer<never, never, never>;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,KAAK,WAAW,MAAM,cAAc,CAAC;AAIjD,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAKrG"}
@@ -0,0 +1,10 @@
1
+ import type { Client } from '@sentry/core';
2
+ import type { NodeOptions } from '@sentry/node-core/light';
3
+ /**
4
+ * Initializes the Sentry Effect SDK for Node.js servers.
5
+ *
6
+ * @param options - Configuration options for the SDK
7
+ * @returns The initialized Sentry client, or undefined if initialization failed
8
+ */
9
+ export declare function init(options: NodeOptions): Client | undefined;
10
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/server/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAQ7D"}
@@ -0,0 +1,6 @@
1
+ import * as EffectTracer from 'effect/Tracer';
2
+ /**
3
+ * Effect Layer that sets up the Sentry tracer for Effect spans.
4
+ */
5
+ export declare const SentryEffectTracer: EffectTracer.Tracer;
6
+ //# sourceMappingURL=tracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/tracer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAsJ9C;;GAEG;AACH,eAAO,MAAM,kBAAkB,qBAAqB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { BrowserOptions } from '@sentry/browser';
2
+ import * as EffectLayer from 'effect/Layer';
3
+ export { init } from './sdk';
4
+ /**
5
+ * Options for the Sentry Effect client layer.
6
+ */
7
+ export type EffectClientLayerOptions = BrowserOptions;
8
+ /**
9
+ * Creates an Effect Layer that initializes Sentry for browser clients.
10
+ *
11
+ * To enable Effect tracing, logs, or metrics, compose with the respective layers:
12
+ * - `Layer.setTracer(Sentry.SentryEffectTracer)` for tracing
13
+ * - `Logger.replace(Logger.defaultLogger, Sentry.SentryEffectLogger)` for logs
14
+ * - `Sentry.SentryEffectMetricsLayer` for metrics
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import * as Sentry from '@sentry/effect/client';
19
+ * import { Layer, Logger, LogLevel } from 'effect';
20
+ *
21
+ * const SentryLive = Layer.mergeAll(
22
+ * Sentry.effectLayer({
23
+ * dsn: '__DSN__',
24
+ * integrations: [Sentry.browserTracingIntegration()],
25
+ * tracesSampleRate: 1.0,
26
+ * }),
27
+ * Layer.setTracer(Sentry.SentryEffectTracer),
28
+ * Logger.replace(Logger.defaultLogger, Sentry.SentryEffectLogger),
29
+ * );
30
+ * ```
31
+ */
32
+ export declare function effectLayer(options: EffectClientLayerOptions): EffectLayer.Layer<never, never, never>;
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,10 @@
1
+ import { BrowserOptions } from '@sentry/browser';
2
+ import { Client } from '@sentry/core';
3
+ /**
4
+ * Initializes the Sentry Effect SDK for browser clients.
5
+ *
6
+ * @param options - Configuration options for the SDK
7
+ * @returns The initialized Sentry client, or undefined if initialization failed
8
+ */
9
+ export declare function init(options: BrowserOptions): Client | undefined;
10
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1,7 @@
1
+ export * from '@sentry/browser';
2
+ export { effectLayer, init } from './client/index';
3
+ export { EffectClientLayerOptions } from './client/index';
4
+ export { SentryEffectTracer } from './tracer';
5
+ export { SentryEffectLogger } from './logger';
6
+ export { SentryEffectMetricsLayer } from './metrics';
7
+ //# sourceMappingURL=index.client.d.ts.map
@@ -0,0 +1,7 @@
1
+ export * from '@sentry/node-core/light';
2
+ export { effectLayer, init } from './server/index';
3
+ export { EffectServerLayerOptions } from './server/index';
4
+ export { SentryEffectTracer } from './tracer';
5
+ export { SentryEffectLogger } from './logger';
6
+ export { SentryEffectMetricsLayer } from './metrics';
7
+ //# sourceMappingURL=index.server.d.ts.map
@@ -0,0 +1,16 @@
1
+ import { Client, Integration, Options, StackParser } from '@sentry/core';
2
+ import * as EffectLayer from 'effect/Layer';
3
+ import * as clientSdk from './index.client';
4
+ import * as serverSdk from './index.server';
5
+ export * from './index.client';
6
+ export * from './index.server';
7
+ export { EffectClientLayerOptions } from './index.client';
8
+ export { EffectServerLayerOptions } from './index.server';
9
+ export declare function effectLayer(options: clientSdk.EffectClientLayerOptions | serverSdk.EffectServerLayerOptions): EffectLayer.Layer<never, never, never>;
10
+ export declare function init(options: Options | clientSdk.BrowserOptions | serverSdk.NodeOptions): Client | undefined;
11
+ export declare const linkedErrorsIntegration: typeof clientSdk.linkedErrorsIntegration;
12
+ export declare const contextLinesIntegration: typeof clientSdk.contextLinesIntegration;
13
+ export declare const getDefaultIntegrations: (options: Options) => Integration[];
14
+ export declare const defaultStackParser: StackParser;
15
+ export declare const logger: typeof clientSdk.logger | typeof serverSdk.logger;
16
+ //# sourceMappingURL=index.types.d.ts.map
@@ -0,0 +1,6 @@
1
+ import * as Logger from 'effect/Logger';
2
+ /**
3
+ * Effect Logger that sends logs to Sentry.
4
+ */
5
+ export declare const SentryEffectLogger: Logger.Logger<unknown, void>;
6
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1,17 @@
1
+ import * as Layer from 'effect/Layer';
2
+ /**
3
+ * Creates a metrics flusher with its own isolated state for delta tracking.
4
+ * Useful for testing scenarios where you need to control the lifecycle.
5
+ * @internal
6
+ */
7
+ export declare function createMetricsFlusher(): {
8
+ flush: () => void;
9
+ clear: () => void;
10
+ };
11
+ /**
12
+ * Effect Layer that periodically flushes metrics to Sentry.
13
+ * The layer manages its own state for delta counter calculations,
14
+ * which is automatically cleaned up when the layer is finalized.
15
+ */
16
+ export declare const SentryEffectMetricsLayer: Layer.Layer<never, never, never>;
17
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1,34 @@
1
+ import { NodeOptions } from '@sentry/node-core/light';
2
+ import * as EffectLayer from 'effect/Layer';
3
+ export { init } from './sdk';
4
+ /**
5
+ * Options for the Sentry Effect server layer.
6
+ */
7
+ export type EffectServerLayerOptions = NodeOptions;
8
+ /**
9
+ * Creates an Effect Layer that initializes Sentry for Node.js servers.
10
+ *
11
+ * To enable Effect tracing, logs, or metrics, compose with the respective layers:
12
+ * - `Layer.setTracer(Sentry.SentryEffectTracer)` for tracing
13
+ * - `Logger.replace(Logger.defaultLogger, Sentry.SentryEffectLogger)` for logs
14
+ * - `Sentry.SentryEffectMetricsLayer` for metrics
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import * as Sentry from '@sentry/effect/server';
19
+ * import { NodeRuntime } from '@effect/platform-node';
20
+ * import { Layer, Logger } from 'effect';
21
+ * import { HttpLive } from './Http.js';
22
+ *
23
+ * const SentryLive = Layer.mergeAll(
24
+ * Sentry.effectLayer({ dsn: '__DSN__' }),
25
+ * Layer.setTracer(Sentry.SentryEffectTracer),
26
+ * Logger.replace(Logger.defaultLogger, Sentry.SentryEffectLogger),
27
+ * );
28
+ *
29
+ * const MainLive = HttpLive.pipe(Layer.provide(SentryLive));
30
+ * MainLive.pipe(Layer.launch, NodeRuntime.runMain);
31
+ * ```
32
+ */
33
+ export declare function effectLayer(options: EffectServerLayerOptions): EffectLayer.Layer<never, never, never>;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,10 @@
1
+ import { Client } from '@sentry/core';
2
+ import { NodeOptions } from '@sentry/node-core/light';
3
+ /**
4
+ * Initializes the Sentry Effect SDK for Node.js servers.
5
+ *
6
+ * @param options - Configuration options for the SDK
7
+ * @returns The initialized Sentry client, or undefined if initialization failed
8
+ */
9
+ export declare function init(options: NodeOptions): Client | undefined;
10
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1,6 @@
1
+ import * as EffectTracer from 'effect/Tracer';
2
+ /**
3
+ * Effect Layer that sets up the Sentry tracer for Effect spans.
4
+ */
5
+ export declare const SentryEffectTracer: EffectTracer.Tracer;
6
+ //# sourceMappingURL=tracer.d.ts.map
package/package.json ADDED
@@ -0,0 +1,99 @@
1
+ {
2
+ "name": "@sentry/effect",
3
+ "version": "10.44.0",
4
+ "description": "Official Sentry SDK for Effect",
5
+ "repository": "git://github.com/getsentry/sentry-javascript.git",
6
+ "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/effect",
7
+ "author": "Sentry",
8
+ "license": "MIT",
9
+ "engines": {
10
+ "node": ">=18"
11
+ },
12
+ "files": [
13
+ "/build"
14
+ ],
15
+ "main": "build/cjs/index.server.js",
16
+ "module": "build/esm/index.server.js",
17
+ "browser": "build/esm/index.client.js",
18
+ "types": "build/types/index.types.d.ts",
19
+ "exports": {
20
+ "./package.json": "./package.json",
21
+ ".": {
22
+ "types": "./build/types/index.types.d.ts",
23
+ "browser": {
24
+ "import": "./build/esm/index.client.js",
25
+ "require": "./build/cjs/index.client.js"
26
+ },
27
+ "node": {
28
+ "import": "./build/esm/index.server.js",
29
+ "require": "./build/cjs/index.server.js"
30
+ }
31
+ },
32
+ "./server": {
33
+ "types": "./build/types/index.server.d.ts",
34
+ "import": "./build/esm/index.server.js",
35
+ "require": "./build/cjs/index.server.js"
36
+ },
37
+ "./client": {
38
+ "types": "./build/types/index.client.d.ts",
39
+ "import": "./build/esm/index.client.js",
40
+ "require": "./build/cjs/index.client.js"
41
+ }
42
+ },
43
+ "typesVersions": {
44
+ "<5.0": {
45
+ "build/types/index.types.d.ts": [
46
+ "build/types-ts3.8/index.types.d.ts"
47
+ ],
48
+ "build/types/index.server.d.ts": [
49
+ "build/types-ts3.8/index.server.d.ts"
50
+ ],
51
+ "build/types/index.client.d.ts": [
52
+ "build/types-ts3.8/index.client.d.ts"
53
+ ]
54
+ }
55
+ },
56
+ "publishConfig": {
57
+ "access": "public"
58
+ },
59
+ "dependencies": {
60
+ "@sentry/browser": "10.44.0",
61
+ "@sentry/core": "10.44.0",
62
+ "@sentry/node-core": "10.44.0"
63
+ },
64
+ "peerDependencies": {
65
+ "effect": "^3.0.0"
66
+ },
67
+ "peerDependenciesMeta": {
68
+ "effect": {
69
+ "optional": false
70
+ }
71
+ },
72
+ "devDependencies": {
73
+ "@effect/vitest": "^0.23.9",
74
+ "effect": "^3.19.19"
75
+ },
76
+ "scripts": {
77
+ "build": "run-p build:transpile build:types",
78
+ "build:dev": "yarn build",
79
+ "build:transpile": "rollup -c rollup.npm.config.mjs",
80
+ "build:types": "run-s build:types:core build:types:downlevel",
81
+ "build:types:core": "tsc -p tsconfig.types.json",
82
+ "build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8",
83
+ "build:watch": "run-p build:transpile:watch",
84
+ "build:dev:watch": "yarn build:watch",
85
+ "build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
86
+ "build:tarball": "npm pack",
87
+ "circularDepCheck": "madge --circular src/index.client.ts && madge --circular src/index.server.ts && madge --circular src/index.types.ts",
88
+ "clean": "rimraf build coverage sentry-effect-*.tgz",
89
+ "fix": "eslint . --format stylish --fix",
90
+ "lint": "eslint . --format stylish",
91
+ "test": "vitest run",
92
+ "test:watch": "vitest --watch",
93
+ "yalc:publish": "yalc publish --push --sig"
94
+ },
95
+ "volta": {
96
+ "extends": "../../package.json"
97
+ },
98
+ "sideEffects": false
99
+ }