@interfere/next 0.0.15-alpha.2 → 0.0.15-alpha.4
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 +17 -3
- package/dist/build/logger.d.mts.map +1 -1
- package/dist/build/release-program.d.mts +1 -1
- package/dist/build/release-program.d.mts.map +1 -1
- package/dist/build/source-maps/api.d.mts +2 -2
- package/dist/build/source-maps/api.d.mts.map +1 -1
- package/dist/build/source-maps/client.d.mts +1 -1
- package/dist/client/provider.d.mts +2 -2
- package/dist/client/provider.d.mts.map +1 -1
- package/dist/client/provider.mjs +6 -4
- package/dist/client/provider.mjs.map +1 -1
- package/dist/server/services/config.service.d.mts +3 -3
- package/dist/server/services/error-tracking.service.d.mts +3 -3
- package/dist/server/services/error-tracking.service.mjs +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -30,7 +30,21 @@ export const interfere = init({
|
|
|
30
30
|
});
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
### 2. Add
|
|
33
|
+
### 2. Add the Proxy Route
|
|
34
|
+
|
|
35
|
+
The SDK sends events through a server-side proxy route to keep your API credentials secure. Create `app/api/interfere/[[...path]]/route.ts`:
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
export { GET, OPTIONS, POST } from '@interfere/next/route-handler';
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
This route proxies client-side events to Interfere's ingest API using your `INTERFERE_SECRET_KEY` environment variable. Add the key to your `.env.local`:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
INTERFERE_SECRET_KEY=if_sk_xxx
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 3. Add Error Boundary (App Directory)
|
|
34
48
|
|
|
35
49
|
In your root layout (`app/layout.tsx`):
|
|
36
50
|
|
|
@@ -57,7 +71,7 @@ export default function RootLayout({
|
|
|
57
71
|
}
|
|
58
72
|
```
|
|
59
73
|
|
|
60
|
-
###
|
|
74
|
+
### 4. Add Error Handler (App Directory)
|
|
61
75
|
|
|
62
76
|
Create `app/error.tsx`:
|
|
63
77
|
|
|
@@ -89,7 +103,7 @@ export default function Error({
|
|
|
89
103
|
}
|
|
90
104
|
```
|
|
91
105
|
|
|
92
|
-
###
|
|
106
|
+
### 5. Add Global Error Handler
|
|
93
107
|
|
|
94
108
|
Create `app/global-error.tsx`:
|
|
95
109
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.mts","names":[],"sources":["../../src/build/logger.ts"],"sourcesContent":[],"mappings":";;;cA+CM,iBAAe,MAAA,CAAA;AAAf,iBA0HU,cAAA,CA1HK,KAAA,EA0HiB,QAAA,CAAS,OA1H1B,EAAA,KAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,CAAA,EA0HiE,MAAA,CAAA,MA1HjE,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA;AA0HL,iBAyCA,gBAAA,
|
|
1
|
+
{"version":3,"file":"logger.d.mts","names":[],"sources":["../../src/build/logger.ts"],"sourcesContent":[],"mappings":";;;cA+CM,iBAAe,MAAA,CAAA;AAAf,iBA0HU,cAAA,CA1HK,KAAA,EA0HiB,QAAA,CAAS,OA1H1B,EAAA,KAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,CAAA,EA0HiE,MAAA,CAAA,MA1HjE,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA;AA0HL,iBAyCA,gBAAA,CAzCsB,KAAS,EA0CtC,QAAA,CAAS,OA1CoE,EAAA,KAAA,EAAA,MAAA,CAAA,EA2CvE,MAAA,CAAA,MA3CuE,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA;AAyCtE,iBAUA,kBAAA,CATP,IAAS,EAAA,MACH,CAAA,EAQgC,MAAA,CAAA,MARhC,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA;AAQC,iBAWA,aAAA,CAAA,CAX+B,EAWlB,MAAA,CAAA,MAXkB,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA;AAW/B,iBAmBA,oBAAA,CAnBa,KAAA,EAoBpB,QAAA,CAAS,OApBW,EAAA,KAAA,EAAA,MAAA,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,GAuBF,UAvBE,CAAA,OAuBgB,kBAvBhB,CAAA,EAAA,GAwBtB,MAAA,CAAO,MAxBe,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAA,CAAA,EAwBkB,MAAA,CAAA,MAxBlB,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAA"}
|
|
@@ -14,6 +14,6 @@ declare const releaseProgram: Effect.Effect<unknown, unknown, unknown>;
|
|
|
14
14
|
/**
|
|
15
15
|
* Create the layer stack for the release program
|
|
16
16
|
*/
|
|
17
|
-
declare const createReleaseLayers: (config: PreflightConfig) => Layer.Layer<
|
|
17
|
+
declare const createReleaseLayers: (config: PreflightConfig) => Layer.Layer<ReleaseIdentityService | ConfigService | SourceMapService, never, never>;
|
|
18
18
|
//#endregion
|
|
19
19
|
export { createReleaseLayers, releaseProgram };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-program.d.mts","names":[],"sources":["../../src/build/release-program.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAuBA;AA6IA;AAA4C,cA7I/B,cA6I+B,EA7IjB,MAAA,CAAA,MA6IiB,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAA;;;;AAAe,cAA9C,mBAA8C,EAAA,CAAA,MAAA,EAAf,eAAe,EAAA,GAAA,KAAA,CAAA,KAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"release-program.d.mts","names":[],"sources":["../../src/build/release-program.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAuBA;AA6IA;AAA4C,cA7I/B,cA6I+B,EA7IjB,MAAA,CAAA,MA6IiB,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAA;;;;AAAe,cAA9C,mBAA8C,EAAA,CAAA,MAAA,EAAf,eAAe,EAAA,GAAA,KAAA,CAAA,KAAA,CAAA,sBAAA,GAAA,aAAA,GAAA,gBAAA,EAAA,KAAA,EAAA,KAAA,CAAA"}
|
|
@@ -22,7 +22,7 @@ declare function createRelease(config: PreflightConfig, releaseInfo: ReleaseInfo
|
|
|
22
22
|
environment: string;
|
|
23
23
|
releaseId: number;
|
|
24
24
|
releaseSlug: string;
|
|
25
|
-
},
|
|
25
|
+
}, InvalidSecretKeyError | UploadError | InvalidApiUrlError, never>;
|
|
26
26
|
/**
|
|
27
27
|
* Upload source maps using the new v2 client
|
|
28
28
|
* @param sourceMapToGenerated - Mapping from source map filename to generated JS file path
|
|
@@ -30,6 +30,6 @@ declare function createRelease(config: PreflightConfig, releaseInfo: ReleaseInfo
|
|
|
30
30
|
declare function uploadSourceMaps(sourceMaps: UploadedSourceMap[], sourceMapToGenerated: Record<string, string>, config: PreflightConfig, meta: UploadMeta): Effect.Effect<{
|
|
31
31
|
uploaded: number;
|
|
32
32
|
processed: any;
|
|
33
|
-
},
|
|
33
|
+
}, UploadError | TokenRequestError | NotificationError, never>;
|
|
34
34
|
//#endregion
|
|
35
35
|
export { createRelease, uploadSourceMaps };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.mts","names":[],"sources":["../../../src/build/source-maps/api.ts"],"sourcesContent":[],"mappings":";;;;;;;;KAyBK,WAAA;;EAAA,QAAA,EAAA,MAAW;EAGF,UAAA,EAAA,iBAAA;EACI,cAAA,EAAA,qBAAA;EACC,eAAA,EAAA,sBAAA;EACI,mBAAA,EAAA,0BAAA;CAA0B;AA4FjC,iBAAA,aAAA,CAAa,MAAA,EACnB,eADmB,EAAA,WAAA,EAEd,WAFc,CAAA,EAEH,MAAA,CAAA,MAFG,CAAA;EACnB,KAAA,EAAA,MAAA;EACK,SAAA,EAAA,MAAA;;;;EAAW,SAAA,EAAA,MAAA;EAAA,WAAA,EAAA,MAAA;AAmB1B,CAAA,
|
|
1
|
+
{"version":3,"file":"api.d.mts","names":[],"sources":["../../../src/build/source-maps/api.ts"],"sourcesContent":[],"mappings":";;;;;;;;KAyBK,WAAA;;EAAA,QAAA,EAAA,MAAW;EAGF,UAAA,EAAA,iBAAA;EACI,cAAA,EAAA,qBAAA;EACC,eAAA,EAAA,sBAAA;EACI,mBAAA,EAAA,0BAAA;CAA0B;AA4FjC,iBAAA,aAAA,CAAa,MAAA,EACnB,eADmB,EAAA,WAAA,EAEd,WAFc,CAAA,EAEH,MAAA,CAAA,MAFG,CAAA;EACnB,KAAA,EAAA,MAAA;EACK,SAAA,EAAA,MAAA;;;;EAAW,SAAA,EAAA,MAAA;EAAA,WAAA,EAAA,MAAA;AAmB1B,CAAA,uBAAgC,cAAA,qBAAA,EAAA,KAAA,CAAA;;;;;iBAAhB,gBAAA,aACF,2CACU,gCACd,uBACF,aAAU,MAAA,CAAA;;;CAAA,aAAA,wCAAA,EAAA,KAAA,CAAA"}
|
|
@@ -67,7 +67,7 @@ declare class SourceMapClient {
|
|
|
67
67
|
uploadSourceMaps(releaseSlug: string, sourceMapFiles: SourceMapFileWithContent[], sourceMapToGenerated: Record<string, string>): Effect.Effect<{
|
|
68
68
|
uploaded: number;
|
|
69
69
|
processed: any;
|
|
70
|
-
},
|
|
70
|
+
}, UploadError | TokenRequestError | NotificationError, never>;
|
|
71
71
|
}
|
|
72
72
|
//#endregion
|
|
73
73
|
export { SourceMapClient };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InterfereProviderProps } from "@interfere/react/provider";
|
|
2
2
|
import { ConfigInput } from "@interfere/types/sdk/config";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/client/provider.d.ts
|
|
6
6
|
interface NextConfigInput {
|
|
@@ -17,6 +17,6 @@ declare function InterfereProvider({
|
|
|
17
17
|
...rest
|
|
18
18
|
}: Omit<InterfereProviderProps, "config"> & {
|
|
19
19
|
config?: NextConfigInput;
|
|
20
|
-
}):
|
|
20
|
+
}): react_jsx_runtime0.JSX.Element;
|
|
21
21
|
//#endregion
|
|
22
22
|
export { InterfereProvider };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.mts","names":[],"sources":["../../src/client/provider.tsx"],"sourcesContent":[],"mappings":";;;;;UAyBU,eAAA;aACG;aACA;EAFH,KAAA,CAAA,EAGA,WAHe,CAAA,OAAA,CAAA;EACZ,QAAA,CAAA,EAAA,MAAA;EACA,SAAA,CAAA,EAAA,MAAA;EACH,YAAA,CAAA,EAAA,MAAA;;AAgCM,iBAAA,iBAAA,CAAiB;EAAA,QAAA;EAAA,MAAA;EAAA,GAAA;CAAA,EAI9B,IAJ8B,CAIzB,sBAJyB,EAAA,QAAA,CAAA,GAAA;EAC/B,MAAA,CAAA,EAGqD,eAHrD;CACA,CAAA,EAEsE,
|
|
1
|
+
{"version":3,"file":"provider.d.mts","names":[],"sources":["../../src/client/provider.tsx"],"sourcesContent":[],"mappings":";;;;;UAyBU,eAAA;aACG;aACA;EAFH,KAAA,CAAA,EAGA,WAHe,CAAA,OAAA,CAAA;EACZ,QAAA,CAAA,EAAA,MAAA;EACA,SAAA,CAAA,EAAA,MAAA;EACH,YAAA,CAAA,EAAA,MAAA;;AAgCM,iBAAA,iBAAA,CAAiB;EAAA,QAAA;EAAA,MAAA;EAAA,GAAA;CAAA,EAI9B,IAJ8B,CAIzB,sBAJyB,EAAA,QAAA,CAAA,GAAA;EAC/B,MAAA,CAAA,EAGqD,eAHrD;CACA,CAAA,EAEsE,kBAAA,CAAA,GAAA,CAAA,OAFtE"}
|
package/dist/client/provider.mjs
CHANGED
|
@@ -4,6 +4,7 @@ import { InterfereProvider as InterfereProvider$1 } from "@interfere/react/provi
|
|
|
4
4
|
import { getRuntime } from "@interfere/react/core/runtime/config";
|
|
5
5
|
import { configSchema } from "@interfere/types/sdk/config";
|
|
6
6
|
import { envSchema } from "@interfere/types/sdk/runtime";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
8
|
|
|
8
9
|
//#region src/client/provider.tsx
|
|
9
10
|
const defaults = {
|
|
@@ -25,10 +26,11 @@ function mergeConfig(config) {
|
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
function InterfereProvider({ children, config = {}, ...rest }) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
return /* @__PURE__ */ jsx(InterfereProvider$1, {
|
|
30
|
+
config: mergeConfig(config),
|
|
31
|
+
...rest,
|
|
32
|
+
children
|
|
33
|
+
});
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.mjs","names":["defaults: ConfigInput[\"metadata\"]","InterfereProviderReact"],"sources":["../../src/client/provider.tsx"],"sourcesContent":["\"use client\";\n\nimport { getRuntime } from \"@interfere/react/core/runtime/config\";\nimport {\n type InterfereProviderProps,\n InterfereProvider as InterfereProviderReact,\n} from \"@interfere/react/provider\";\nimport {\n type Config,\n type ConfigInput,\n configSchema,\n} from \"@interfere/types/sdk/config\";\nimport { envSchema } from \"@interfere/types/sdk/runtime\";\n\nconst defaults: ConfigInput[\"metadata\"] = {\n buildId: process.env.NEXT_PUBLIC_INTERFERE_BUILD_ID ?? null,\n releaseId: process.env.NEXT_PUBLIC_INTERFERE_RELEASE_ID ?? null,\n environment: process.env.NEXT_PUBLIC_INTERFERE_ENVIRONMENT\n ? envSchema.parse(process.env.NEXT_PUBLIC_INTERFERE_ENVIRONMENT)\n : \"production\",\n runtime: getRuntime(),\n};\n\n// Next.js-specific config type that allows omitting transport\n// because Next.js can provide its own proxy endpoint\ninterface NextConfigInput {\n features?: ConfigInput[\"features\"];\n metadata?: ConfigInput[\"metadata\"];\n batch?: ConfigInput[\"batch\"];\n proxyUrl?: string;\n ingestUrl?: string;\n surfaceToken?: string;\n}\n\nfunction mergeConfig(config: NextConfigInput): Config {\n const incomingMeta = config.metadata ?? {};\n\n // Determine transport config:\n // - If they explicitly set proxyUrl, use proxy mode\n // - If they set ingestUrl or surfaceToken, use direct mode (let schema validate)\n // - Otherwise, default to Next.js proxy\n const hasTransportConfig =\n typeof config.proxyUrl !== \"undefined\" ||\n typeof config.ingestUrl !== \"undefined\" ||\n typeof config.surfaceToken !== \"undefined\";\n\n const transportConfig = hasTransportConfig\n ? config\n : { proxyUrl: \"/api/interfere\" }; // Default Next.js proxy endpoint\n\n return configSchema.parse({\n ...transportConfig,\n ...config,\n metadata: {\n ...defaults,\n ...incomingMeta,\n },\n });\n}\n\nexport function InterfereProvider({\n children,\n config = {},\n ...rest\n}: Omit<InterfereProviderProps, \"config\"> & { config?: NextConfigInput }) {\n const mergedConfig = mergeConfig(config);\n\n return (\n <InterfereProviderReact config={mergedConfig} {...rest}>\n {children}\n </InterfereProviderReact>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.mjs","names":["defaults: ConfigInput[\"metadata\"]","InterfereProviderReact"],"sources":["../../src/client/provider.tsx"],"sourcesContent":["\"use client\";\n\nimport { getRuntime } from \"@interfere/react/core/runtime/config\";\nimport {\n type InterfereProviderProps,\n InterfereProvider as InterfereProviderReact,\n} from \"@interfere/react/provider\";\nimport {\n type Config,\n type ConfigInput,\n configSchema,\n} from \"@interfere/types/sdk/config\";\nimport { envSchema } from \"@interfere/types/sdk/runtime\";\n\nconst defaults: ConfigInput[\"metadata\"] = {\n buildId: process.env.NEXT_PUBLIC_INTERFERE_BUILD_ID ?? null,\n releaseId: process.env.NEXT_PUBLIC_INTERFERE_RELEASE_ID ?? null,\n environment: process.env.NEXT_PUBLIC_INTERFERE_ENVIRONMENT\n ? envSchema.parse(process.env.NEXT_PUBLIC_INTERFERE_ENVIRONMENT)\n : \"production\",\n runtime: getRuntime(),\n};\n\n// Next.js-specific config type that allows omitting transport\n// because Next.js can provide its own proxy endpoint\ninterface NextConfigInput {\n features?: ConfigInput[\"features\"];\n metadata?: ConfigInput[\"metadata\"];\n batch?: ConfigInput[\"batch\"];\n proxyUrl?: string;\n ingestUrl?: string;\n surfaceToken?: string;\n}\n\nfunction mergeConfig(config: NextConfigInput): Config {\n const incomingMeta = config.metadata ?? {};\n\n // Determine transport config:\n // - If they explicitly set proxyUrl, use proxy mode\n // - If they set ingestUrl or surfaceToken, use direct mode (let schema validate)\n // - Otherwise, default to Next.js proxy\n const hasTransportConfig =\n typeof config.proxyUrl !== \"undefined\" ||\n typeof config.ingestUrl !== \"undefined\" ||\n typeof config.surfaceToken !== \"undefined\";\n\n const transportConfig = hasTransportConfig\n ? config\n : { proxyUrl: \"/api/interfere\" }; // Default Next.js proxy endpoint\n\n return configSchema.parse({\n ...transportConfig,\n ...config,\n metadata: {\n ...defaults,\n ...incomingMeta,\n },\n });\n}\n\nexport function InterfereProvider({\n children,\n config = {},\n ...rest\n}: Omit<InterfereProviderProps, \"config\"> & { config?: NextConfigInput }) {\n const mergedConfig = mergeConfig(config);\n\n return (\n <InterfereProviderReact config={mergedConfig} {...rest}>\n {children}\n </InterfereProviderReact>\n );\n}\n"],"mappings":";;;;;;;;;AAcA,MAAMA,WAAoC;CACxC,SAAS,QAAQ,IAAI,kCAAkC;CACvD,WAAW,QAAQ,IAAI,oCAAoC;CAC3D,aAAa,QAAQ,IAAI,oCACrB,UAAU,MAAM,QAAQ,IAAI,kCAAkC,GAC9D;CACJ,SAAS,YAAY;CACtB;AAaD,SAAS,YAAY,QAAiC;CACpD,MAAM,eAAe,OAAO,YAAY,EAAE;CAW1C,MAAM,kBAJJ,OAAO,OAAO,aAAa,eAC3B,OAAO,OAAO,cAAc,eAC5B,OAAO,OAAO,iBAAiB,cAG7B,SACA,EAAE,UAAU,kBAAkB;AAElC,QAAO,aAAa,MAAM;EACxB,GAAG;EACH,GAAG;EACH,UAAU;GACR,GAAG;GACH,GAAG;GACJ;EACF,CAAC;;AAGJ,SAAgB,kBAAkB,EAChC,UACA,SAAS,EAAE,EACX,GAAG,QACqE;AAGxE,QACE,oBAACC;EAAuB,QAHL,YAAY,OAAO;EAGQ,GAAI;EAC/C;GACsB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { NonEmptyString } from "../../lib/types.mjs";
|
|
2
2
|
import { Context, Effect, Layer } from "effect";
|
|
3
|
-
import * as
|
|
4
|
-
import * as
|
|
3
|
+
import * as effect_Types16 from "effect/Types";
|
|
4
|
+
import * as effect_Cause16 from "effect/Cause";
|
|
5
5
|
|
|
6
6
|
//#region src/server/services/config.service.d.ts
|
|
7
|
-
declare const ConfigError_base: new <A extends Record<string, any> = {}>(args:
|
|
7
|
+
declare const ConfigError_base: new <A extends Record<string, any> = {}>(args: effect_Types16.Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }) => effect_Cause16.YieldableError & {
|
|
8
8
|
readonly _tag: "ConfigError";
|
|
9
9
|
} & Readonly<A>;
|
|
10
10
|
declare class ConfigError extends ConfigError_base<{
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ConfigService } from "./config.service.mjs";
|
|
2
2
|
import { Context, Effect, Layer } from "effect";
|
|
3
|
-
import * as
|
|
4
|
-
import * as
|
|
3
|
+
import * as effect_Types0 from "effect/Types";
|
|
4
|
+
import * as effect_Cause0 from "effect/Cause";
|
|
5
5
|
|
|
6
6
|
//#region src/server/services/error-tracking.service.d.ts
|
|
7
|
-
declare const ErrorTrackingError_base: new <A extends Record<string, any> = {}>(args:
|
|
7
|
+
declare const ErrorTrackingError_base: new <A extends Record<string, any> = {}>(args: effect_Types0.Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }) => effect_Cause0.YieldableError & {
|
|
8
8
|
readonly _tag: "ErrorTrackingError";
|
|
9
9
|
} & Readonly<A>;
|
|
10
10
|
declare class ErrorTrackingError extends ErrorTrackingError_base<{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ConfigService } from "./config.service.mjs";
|
|
2
|
+
import { getRuntime } from "@interfere/react/core/runtime/config";
|
|
2
3
|
import { API_PATHS } from "@interfere/constants/api";
|
|
3
4
|
import { Context, Data, Effect, Layer } from "effect";
|
|
4
|
-
import { getRuntime } from "@interfere/react/core/runtime/config";
|
|
5
5
|
import { buildServerErrorEnvelope, sendEnvelopesToIngest } from "@interfere/react/server/capture";
|
|
6
6
|
|
|
7
7
|
//#region src/server/services/error-tracking.service.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interfere/next",
|
|
3
|
-
"version": "0.0.15-alpha.
|
|
3
|
+
"version": "0.0.15-alpha.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Build apps that never break.",
|
|
6
6
|
"keywords": [
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"zod": "^4.2.1",
|
|
75
75
|
"@interfere/constants": "0.0.2-alpha.0",
|
|
76
76
|
"@interfere/effect-utils": "0.0.2-alpha.0",
|
|
77
|
-
"@interfere/react": "0.0.2-alpha.
|
|
77
|
+
"@interfere/react": "0.0.2-alpha.1",
|
|
78
78
|
"@interfere/types": "0.0.2-alpha.0"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"@types/react": "19.2.7",
|
|
89
89
|
"@types/react-dom": "19.2.3",
|
|
90
90
|
"@vitest/coverage-v8": "^4.0.16",
|
|
91
|
-
"jsdom": "^27.
|
|
92
|
-
"msw": "^2.12.
|
|
91
|
+
"jsdom": "^27.4.0",
|
|
92
|
+
"msw": "^2.12.7",
|
|
93
93
|
"next": "^16.1.1",
|
|
94
94
|
"react": "^19.2.3",
|
|
95
95
|
"react-dom": "^19.2.3",
|
|
@@ -98,8 +98,8 @@
|
|
|
98
98
|
"vitest": "^4.0.16",
|
|
99
99
|
"webpack": "^5.104.1",
|
|
100
100
|
"@interfere/test-utils": "0.0.0",
|
|
101
|
-
"@interfere/
|
|
102
|
-
"@interfere/
|
|
101
|
+
"@interfere/vitest-config": "1.0.1-alpha.0",
|
|
102
|
+
"@interfere/typescript-config": "1.0.3-alpha.0"
|
|
103
103
|
},
|
|
104
104
|
"scripts": {
|
|
105
105
|
"build": "tsdown",
|