@ttt-productions/monitoring-core 0.2.15 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AASxD,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,EAC9B,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CAsDf"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AASxD,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,EAC9B,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CAkEf"}
package/dist/init.js CHANGED
@@ -18,7 +18,17 @@ export async function initMonitoring(options, force = false) {
18
18
  }
19
19
  currentOptions = options;
20
20
  const enabled = options.enabled ?? true;
21
- if (!enabled || options.provider === "noop") {
21
+ // Local-dev gate: force noop adapter when any Firebase emulator signal is
22
+ // present, or when the explicit kill switch is set. This keeps Sentry
23
+ // completely inert during local dev (npm run dev:local + emulators),
24
+ // including not importing the SDK. Hosted dev and hosted prod are
25
+ // unaffected — they never have these env vars set.
26
+ const isLocalDev = (typeof process !== "undefined" &&
27
+ (process.env?.NEXT_PUBLIC_USE_EMULATORS === "true" ||
28
+ process.env?.FUNCTIONS_EMULATOR === "true" ||
29
+ !!process.env?.FIREBASE_EMULATOR_HUB ||
30
+ process.env?.NEXT_PUBLIC_SENTRY_ENABLED === "false"));
31
+ if (!enabled || options.provider === "noop" || isLocalDev) {
22
32
  adapter = NoopAdapter;
23
33
  initialized = true;
24
34
  return;
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,IAAI,OAAO,GAAsB,WAAW,CAAC;AAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,cAAc,GAAiC,IAAI,CAAC;AAExD,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAEhD,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B,EAC9B,KAAK,GAAG,KAAK;IAEb,8BAA8B;IAC9B,IACE,WAAW;QACX,CAAC,KAAK;QACN,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAC1D,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC/E,CAAC;IAED,cAAc,GAAG,OAAO,CAAC;IAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IAExC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC5C,OAAO,GAAG,WAAW,CAAC;QACtB,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO;IACT,CAAC;IAED,kDAAkD;IAClD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,OAAO,GAAG,aAAa,CAAC;QACxB,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO;IACT,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QACvC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CACV,oEAAoE,CACrE,CAAC;YACF,OAAO,GAAG,WAAW,CAAC;YACtB,WAAW,GAAG,IAAI,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACxE,OAAO,GAAG,iBAAiB,CAAC;QAC5B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO;IACT,CAAC;IAED,WAAW;IACX,OAAO,GAAG,WAAW,CAAC;IACtB,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,IAAI,OAAO,GAAsB,WAAW,CAAC;AAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,cAAc,GAAiC,IAAI,CAAC;AAExD,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAEhD,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B,EAC9B,KAAK,GAAG,KAAK;IAEb,8BAA8B;IAC9B,IACE,WAAW;QACX,CAAC,KAAK;QACN,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAC1D,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC/E,CAAC;IAED,cAAc,GAAG,OAAO,CAAC;IAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IAExC,0EAA0E;IAC1E,sEAAsE;IACtE,qEAAqE;IACrE,kEAAkE;IAClE,mDAAmD;IACnD,MAAM,UAAU,GACd,CAAC,OAAO,OAAO,KAAK,WAAW;QAC7B,CAAC,OAAO,CAAC,GAAG,EAAE,yBAAyB,KAAK,MAAM;YAChD,OAAO,CAAC,GAAG,EAAE,kBAAkB,KAAK,MAAM;YAC1C,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,qBAAqB;YACpC,OAAO,CAAC,GAAG,EAAE,0BAA0B,KAAK,OAAO,CAAC,CAAC,CAAC;IAE5D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,IAAI,UAAU,EAAE,CAAC;QAC1D,OAAO,GAAG,WAAW,CAAC;QACtB,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO;IACT,CAAC;IAED,kDAAkD;IAClD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,OAAO,GAAG,aAAa,CAAC;QACxB,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO;IACT,CAAC;IAED,2DAA2D;IAC3D,IAAI,OAAO,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QACvC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CACV,oEAAoE,CACrE,CAAC;YACF,OAAO,GAAG,WAAW,CAAC;YACtB,WAAW,GAAG,IAAI,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACxE,OAAO,GAAG,iBAAiB,CAAC;QAC5B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO;IACT,CAAC;IAED,WAAW;IACX,OAAO,GAAG,WAAW,CAAC;IACtB,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { Component, type ErrorInfo, type ReactNode } from "react";
2
+ export interface ErrorBoundaryProps {
3
+ children: ReactNode;
4
+ /** Rendered when an error has been caught. */
5
+ fallback: ReactNode;
6
+ /** Identifier sent to monitoring (e.g. "checkout-page"). */
7
+ context: string;
8
+ /** Optional callback invoked alongside captureException. */
9
+ onError?: (error: Error, info: ErrorInfo) => void;
10
+ }
11
+ interface ErrorBoundaryState {
12
+ hasError: boolean;
13
+ }
14
+ /**
15
+ * Generic React Error Boundary that reports to the configured monitoring
16
+ * provider via `captureException`. The fallback UI is fully consumer-owned.
17
+ */
18
+ export declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
19
+ state: ErrorBoundaryState;
20
+ static getDerivedStateFromError(): ErrorBoundaryState;
21
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
22
+ render(): ReactNode;
23
+ }
24
+ export {};
25
+ //# sourceMappingURL=error-boundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-boundary.d.ts","sourceRoot":"","sources":["../../src/react/error-boundary.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGlE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,EAAE,SAAS,CAAC;IACpB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CACnD;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAClF,KAAK,EAAE,kBAAkB,CAAuB;IAEhD,MAAM,CAAC,wBAAwB,IAAI,kBAAkB;IAIrD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IAQpD,MAAM;CAIP"}
@@ -0,0 +1,26 @@
1
+ "use client";
2
+ import { Component } from "react";
3
+ import { captureException } from "../api.js";
4
+ /**
5
+ * Generic React Error Boundary that reports to the configured monitoring
6
+ * provider via `captureException`. The fallback UI is fully consumer-owned.
7
+ */
8
+ export class ErrorBoundary extends Component {
9
+ state = { hasError: false };
10
+ static getDerivedStateFromError() {
11
+ return { hasError: true };
12
+ }
13
+ componentDidCatch(error, errorInfo) {
14
+ captureException(error, {
15
+ componentStack: errorInfo.componentStack,
16
+ context: this.props.context,
17
+ });
18
+ this.props.onError?.(error, errorInfo);
19
+ }
20
+ render() {
21
+ if (this.state.hasError)
22
+ return this.props.fallback;
23
+ return this.props.children;
24
+ }
25
+ }
26
+ //# sourceMappingURL=error-boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-boundary.js","sourceRoot":"","sources":["../../src/react/error-boundary.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAkC,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAgB7C;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,SAAiD;IAClF,KAAK,GAAuB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAEhD,MAAM,CAAC,wBAAwB;QAC7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,KAAY,EAAE,SAAoB;QAClD,gBAAgB,CAAC,KAAK,EAAE;YACtB,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export { ErrorBoundary } from "./error-boundary.js";
2
+ export type { ErrorBoundaryProps } from "./error-boundary.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ export { ErrorBoundary } from "./error-boundary.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ttt-productions/monitoring-core",
3
- "version": "0.2.15",
3
+ "version": "0.3.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/ttt-productions/ttt-packages.git",
@@ -21,6 +21,10 @@
21
21
  ".": {
22
22
  "types": "./dist/index.d.ts",
23
23
  "default": "./dist/index.js"
24
+ },
25
+ "./react": {
26
+ "types": "./dist/react/index.d.ts",
27
+ "default": "./dist/react/index.js"
24
28
  }
25
29
  },
26
30
  "scripts": {
@@ -31,7 +35,9 @@
31
35
  },
32
36
  "peerDependencies": {
33
37
  "@sentry/nextjs": "^10.32.1",
34
- "@sentry/node": "^10.32.1"
38
+ "@sentry/node": "^10.32.1",
39
+ "react": ">=18.0.0",
40
+ "react-dom": ">=18.0.0"
35
41
  },
36
42
  "peerDependenciesMeta": {
37
43
  "@sentry/nextjs": {
@@ -39,12 +45,22 @@
39
45
  },
40
46
  "@sentry/node": {
41
47
  "optional": true
48
+ },
49
+ "react": {
50
+ "optional": true
51
+ },
52
+ "react-dom": {
53
+ "optional": true
42
54
  }
43
55
  },
44
56
  "devDependencies": {
45
57
  "typescript": "^5.8.3",
46
58
  "@sentry/nextjs": "^10.32.1",
47
- "@sentry/node": "^10.32.1"
59
+ "@sentry/node": "^10.32.1",
60
+ "react": "^19.2.0",
61
+ "react-dom": "^19.2.0",
62
+ "@types/react": "^19.0.0",
63
+ "@types/react-dom": "^19.0.0"
48
64
  },
49
65
  "author": "DJ (TTT Productions)",
50
66
  "license": "MIT"