@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 CHANGED
@@ -30,7 +30,21 @@ export const interfere = init({
30
30
  });
31
31
  ```
32
32
 
33
- ### 2. Add Error Boundary (App Directory)
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
- ### 3. Add Error Handler (App Directory)
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
- ### 4. Add Global Error Handler
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,CAzC+B,KAAA,EA0CtC,QAAA,CAAS,OA1CoE,EAAA,KAAA,EAAA,MAAA,CAAA,EA2CvE,MAAA,CAAA,MA3CuE,CAAA,IAAA,EAAA,KAAA,EAAA,KAAA,CAAA;AAyCtE,iBAUA,kBAAA,CATE,IAAA,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"}
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<ConfigService | SourceMapService | ReleaseIdentityService, never, never>;
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,aAAA,GAAA,gBAAA,GAAA,sBAAA,EAAA,KAAA,EAAA,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
- }, UploadError | InvalidApiUrlError | InvalidSecretKeyError, never>;
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
- }, TokenRequestError | UploadError | NotificationError, never>;
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,aAAgB,qBAAgB,wBAAA,EAAA,KAAA,CAAA;;;;;AAId,iBAJF,gBAAA,CAIE,UAAA,EAHJ,iBAGI,EAAA,EAAA,oBAAA,EAFM,MAEN,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,MAAA,EADR,eACQ,EAAA,IAAA,EAAV,UAAU,CAAA,EAAA,MAAA,CAAA,MAAA,CAAA;;;CAAA,EAAA,iBAAA,cAAA,oBAAA,EAAA,KAAA,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
- }, TokenRequestError | UploadError | NotificationError, never>;
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 react0 from "react";
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
- }): react0.JSX.Element;
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,MAAA,CAAA,GAAA,CAAA,OAFtE"}
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"}
@@ -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
- const mergedConfig = mergeConfig(config);
29
- return <InterfereProvider$1 config={mergedConfig} {...rest}>
30
- {children}
31
- </InterfereProvider$1>;
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":";;;;;;;;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;CACxE,MAAM,eAAe,YAAY,OAAO;AAExC,QACE,CAACC,oBAAuB,QAAQ,kBAAkB,MAAM;OACrD,SAAS;IACZ,EAAEA"}
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 effect_Types0 from "effect/Types";
4
- import * as effect_Cause0 from "effect/Cause";
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: effect_Types0.Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }) => effect_Cause0.YieldableError & {
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 effect_Types16 from "effect/Types";
4
- import * as effect_Cause16 from "effect/Cause";
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: effect_Types16.Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }) => effect_Cause16.YieldableError & {
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.2",
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.0",
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.3.0",
92
- "msw": "^2.12.4",
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/typescript-config": "1.0.3-alpha.0",
102
- "@interfere/vitest-config": "1.0.1-alpha.0"
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",