@interfere/next 5.0.0 → 6.0.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/dist/internal/env.d.mts +2 -1
- package/dist/internal/env.d.mts.map +1 -1
- package/dist/internal/env.mjs +5 -1
- package/dist/internal/env.mjs.map +1 -1
- package/dist/internal/server/capture.d.mts.map +1 -1
- package/dist/internal/server/capture.mjs +2 -0
- package/dist/internal/server/capture.mjs.map +1 -1
- package/dist/internal/server/remote-config.d.mts.map +1 -1
- package/dist/internal/server/remote-config.mjs +2 -1
- package/dist/internal/server/remote-config.mjs.map +1 -1
- package/dist/package.mjs +1 -1
- package/dist/route-handler.d.mts.map +1 -1
- package/dist/route-handler.mjs +5 -0
- package/dist/route-handler.mjs.map +1 -1
- package/package.json +11 -11
package/dist/internal/env.d.mts
CHANGED
|
@@ -11,6 +11,7 @@ interface InterfereEnv {
|
|
|
11
11
|
readonly destinationId: string | null;
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
+
declare function isEnabledInEnvironment(): boolean;
|
|
14
15
|
declare function readInterfereEnv(): InterfereEnv;
|
|
15
16
|
//#endregion
|
|
16
|
-
export { InterfereEnv, readInterfereEnv };
|
|
17
|
+
export { InterfereEnv, isEnabledInEnvironment, readInterfereEnv };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.mts","names":[],"sources":["../../src/internal/env.ts"],"mappings":";;;UAKiB,YAAA;EAAA,SACN,MAAA;EAAA,SACA,MAAA;EAAA,SACA,WAAA;EAAA,SACA,eAAA,EAAiB,OAAA,CAAQ,GAAA;EAAA,SACzB,OAAA;IAAA,SACE,QAAA;IAAA,SACA,aAAA;EAAA;AAAA;AAAA,iBAIG,gBAAA,CAAA,GAAoB,YAAA"}
|
|
1
|
+
{"version":3,"file":"env.d.mts","names":[],"sources":["../../src/internal/env.ts"],"mappings":";;;UAKiB,YAAA;EAAA,SACN,MAAA;EAAA,SACA,MAAA;EAAA,SACA,WAAA;EAAA,SACA,eAAA,EAAiB,OAAA,CAAQ,GAAA;EAAA,SACzB,OAAA;IAAA,SACE,QAAA;IAAA,SACA,aAAA;EAAA;AAAA;AAAA,iBAIG,sBAAA,CAAA;AAAA,iBAOA,gBAAA,CAAA,GAAoB,YAAA"}
|
package/dist/internal/env.mjs
CHANGED
|
@@ -2,6 +2,10 @@ import { API_URL } from "@interfere/constants/api";
|
|
|
2
2
|
import { parseEnvValue } from "@interfere/types/sdk/env";
|
|
3
3
|
import { normalizeEnv } from "@interfere/types/sdk/runtime";
|
|
4
4
|
//#region src/internal/env.ts
|
|
5
|
+
function isEnabledInEnvironment() {
|
|
6
|
+
if (process.env.NODE_ENV === "production") return true;
|
|
7
|
+
return !!process.env.NEXT_PUBLIC_INTERFERE_FORCE_ENABLE;
|
|
8
|
+
}
|
|
5
9
|
function readInterfereEnv() {
|
|
6
10
|
const nodeEnvironment = normalizeEnv(process.env.NODE_ENV) ?? "production";
|
|
7
11
|
return {
|
|
@@ -16,4 +20,4 @@ function readInterfereEnv() {
|
|
|
16
20
|
};
|
|
17
21
|
}
|
|
18
22
|
//#endregion
|
|
19
|
-
export { readInterfereEnv };
|
|
23
|
+
export { isEnabledInEnvironment, readInterfereEnv };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.mjs","names":[],"sources":["../../src/internal/env.ts"],"sourcesContent":["import { API_URL } from \"@interfere/constants/api\";\nimport { parseEnvValue } from \"@interfere/types/sdk/env\";\nimport type { Env } from \"@interfere/types/sdk/runtime\";\nimport { normalizeEnv } from \"@interfere/types/sdk/runtime\";\n\nexport interface InterfereEnv {\n readonly apiKey: string | null;\n readonly apiUrl: string;\n readonly nextRuntime: string | null;\n readonly nodeEnvironment: Exclude<Env, null>;\n readonly release: {\n readonly sourceId: string | null;\n readonly destinationId: string | null;\n };\n}\n\nexport function readInterfereEnv(): InterfereEnv {\n const nodeEnvironment = normalizeEnv(process.env.NODE_ENV) ?? \"production\";\n\n return {\n apiKey: parseEnvValue(process.env.INTERFERE_API_KEY),\n apiUrl: parseEnvValue(process.env.INTERFERE_API_URL) ?? API_URL,\n nextRuntime: parseEnvValue(process.env.NEXT_RUNTIME),\n nodeEnvironment,\n release: {\n sourceId: parseEnvValue(process.env.NEXT_PUBLIC_INTERFERE_BUILD_ID),\n destinationId: parseEnvValue(\n process.env.NEXT_PUBLIC_INTERFERE_RELEASE_ID\n ),\n },\n };\n}\n"],"mappings":";;;;AAgBA,SAAgB,mBAAiC;CAC/C,MAAM,kBAAkB,aAAa,QAAQ,IAAI,SAAS,IAAI;AAE9D,QAAO;EACL,QAAQ,cAAc,QAAQ,IAAI,kBAAkB;EACpD,QAAQ,cAAc,QAAQ,IAAI,kBAAkB,IAAI;EACxD,aAAa,cAAc,QAAQ,IAAI,aAAa;EACpD;EACA,SAAS;GACP,UAAU,cAAc,QAAQ,IAAI,+BAA+B;GACnE,eAAe,cACb,QAAQ,IAAI,iCACb;GACF;EACF"}
|
|
1
|
+
{"version":3,"file":"env.mjs","names":[],"sources":["../../src/internal/env.ts"],"sourcesContent":["import { API_URL } from \"@interfere/constants/api\";\nimport { parseEnvValue } from \"@interfere/types/sdk/env\";\nimport type { Env } from \"@interfere/types/sdk/runtime\";\nimport { normalizeEnv } from \"@interfere/types/sdk/runtime\";\n\nexport interface InterfereEnv {\n readonly apiKey: string | null;\n readonly apiUrl: string;\n readonly nextRuntime: string | null;\n readonly nodeEnvironment: Exclude<Env, null>;\n readonly release: {\n readonly sourceId: string | null;\n readonly destinationId: string | null;\n };\n}\n\nexport function isEnabledInEnvironment(): boolean {\n if (process.env.NODE_ENV === \"production\") {\n return true;\n }\n return !!process.env.NEXT_PUBLIC_INTERFERE_FORCE_ENABLE;\n}\n\nexport function readInterfereEnv(): InterfereEnv {\n const nodeEnvironment = normalizeEnv(process.env.NODE_ENV) ?? \"production\";\n\n return {\n apiKey: parseEnvValue(process.env.INTERFERE_API_KEY),\n apiUrl: parseEnvValue(process.env.INTERFERE_API_URL) ?? API_URL,\n nextRuntime: parseEnvValue(process.env.NEXT_RUNTIME),\n nodeEnvironment,\n release: {\n sourceId: parseEnvValue(process.env.NEXT_PUBLIC_INTERFERE_BUILD_ID),\n destinationId: parseEnvValue(\n process.env.NEXT_PUBLIC_INTERFERE_RELEASE_ID\n ),\n },\n };\n}\n"],"mappings":";;;;AAgBA,SAAgB,yBAAkC;AAChD,KAAI,QAAQ,IAAI,aAAa,aAC3B,QAAO;AAET,QAAO,CAAC,CAAC,QAAQ,IAAI;;AAGvB,SAAgB,mBAAiC;CAC/C,MAAM,kBAAkB,aAAa,QAAQ,IAAI,SAAS,IAAI;AAE9D,QAAO;EACL,QAAQ,cAAc,QAAQ,IAAI,kBAAkB;EACpD,QAAQ,cAAc,QAAQ,IAAI,kBAAkB,IAAI;EACxD,aAAa,cAAc,QAAQ,IAAI,aAAa;EACpD;EACA,SAAS;GACP,UAAU,cAAc,QAAQ,IAAI,+BAA+B;GACnE,eAAe,cACb,QAAQ,IAAI,iCACb;GACF;EACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.d.mts","names":[],"sources":["../../../src/internal/server/capture.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"capture.d.mts","names":[],"sources":["../../../src/internal/server/capture.ts"],"mappings":";;;iBAuBsB,YAAA,CACpB,KAAA,WACA,OAAA,YACA,OAAA,GAAU,mBAAA,GACT,OAAA;AAAA,iBAoCmB,cAAA,CACpB,KAAA,EAAO,KAAA;EAAU,MAAA;AAAA,GACjB,OAAA,WACA,OAAA,EAAS,qBAAA,GACR,OAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isEnabledInEnvironment } from "../env.mjs";
|
|
1
2
|
import { isErrorCaptured, markErrorCaptured } from "./dedupe.mjs";
|
|
2
3
|
import { buildErrorEnvelope } from "./envelope.mjs";
|
|
3
4
|
import { normalizeRequest } from "./normalize-request.mjs";
|
|
@@ -16,6 +17,7 @@ const DEFAULT_REQUEST = {
|
|
|
16
17
|
headers: new Headers()
|
|
17
18
|
};
|
|
18
19
|
async function captureError(error, request, context) {
|
|
20
|
+
if (!isEnabledInEnvironment()) return;
|
|
19
21
|
if (!isPluginEnabled("errors")) return;
|
|
20
22
|
const runtime = resolveServerCaptureRuntime();
|
|
21
23
|
if (runtime.apiKey === null) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.mjs","names":[],"sources":["../../../src/internal/server/capture.ts"],"sourcesContent":["import type { ErrorMechanism } from \"@interfere/types/sdk/plugins/payload/errors\";\n\nimport { isErrorCaptured, markErrorCaptured } from \"./dedupe.js\";\nimport { buildErrorEnvelope } from \"./envelope.js\";\nimport { normalizeRequest, TRACEPARENT_HEADER } from \"./normalize-request.js\";\nimport { isPluginEnabled } from \"./remote-config.js\";\nimport { resolveServerCaptureRuntime } from \"./runtime.js\";\nimport { sendEnvelope } from \"./transport.js\";\nimport type { CaptureErrorContext, OnRequestErrorContext } from \"./types.js\";\n\nconst ON_REQUEST_ERROR_MECHANISM: ErrorMechanism = {\n type: \"onRequestError\",\n handled: false,\n synthetic: false,\n};\n\nconst DEFAULT_REQUEST = {\n method: \"GET\",\n path: \"/\",\n headers: new Headers(),\n};\n\nexport async function captureError(\n error: unknown,\n request?: unknown,\n context?: CaptureErrorContext\n): Promise<void> {\n if (!isPluginEnabled(\"errors\")) {\n return;\n }\n\n const runtime = resolveServerCaptureRuntime();\n if (runtime.apiKey === null) {\n return;\n }\n\n const normalizedRequest = normalizeRequest(request);\n const envelope = buildErrorEnvelope({\n error,\n request: normalizedRequest,\n context,\n runtime,\n });\n\n try {\n await sendEnvelope({\n envelope,\n runtime,\n traceparent:\n context?.traceparent ??\n normalizedRequest?.headers.get(TRACEPARENT_HEADER) ??\n undefined,\n });\n } catch {\n /* best-effort */\n }\n}\n\nexport async function onRequestError(\n error: Error & { digest?: string },\n request: unknown,\n context: OnRequestErrorContext\n): Promise<void> {\n if (isErrorCaptured(error)) {\n return;\n }\n markErrorCaptured(error);\n\n const normalizedRequest = normalizeRequest(request) ?? DEFAULT_REQUEST;\n\n await captureError(error, normalizedRequest, {\n mechanism: ON_REQUEST_ERROR_MECHANISM,\n nextjs: {\n ...context,\n requestMethod: normalizedRequest.method,\n requestPath: normalizedRequest.path,\n ...(error.digest ? { errorDigest: error.digest } : {}),\n },\n });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"capture.mjs","names":[],"sources":["../../../src/internal/server/capture.ts"],"sourcesContent":["import type { ErrorMechanism } from \"@interfere/types/sdk/plugins/payload/errors\";\n\nimport { isEnabledInEnvironment } from \"../env.js\";\nimport { isErrorCaptured, markErrorCaptured } from \"./dedupe.js\";\nimport { buildErrorEnvelope } from \"./envelope.js\";\nimport { normalizeRequest, TRACEPARENT_HEADER } from \"./normalize-request.js\";\nimport { isPluginEnabled } from \"./remote-config.js\";\nimport { resolveServerCaptureRuntime } from \"./runtime.js\";\nimport { sendEnvelope } from \"./transport.js\";\nimport type { CaptureErrorContext, OnRequestErrorContext } from \"./types.js\";\n\nconst ON_REQUEST_ERROR_MECHANISM: ErrorMechanism = {\n type: \"onRequestError\",\n handled: false,\n synthetic: false,\n};\n\nconst DEFAULT_REQUEST = {\n method: \"GET\",\n path: \"/\",\n headers: new Headers(),\n};\n\nexport async function captureError(\n error: unknown,\n request?: unknown,\n context?: CaptureErrorContext\n): Promise<void> {\n if (!isEnabledInEnvironment()) {\n return;\n }\n\n if (!isPluginEnabled(\"errors\")) {\n return;\n }\n\n const runtime = resolveServerCaptureRuntime();\n if (runtime.apiKey === null) {\n return;\n }\n\n const normalizedRequest = normalizeRequest(request);\n const envelope = buildErrorEnvelope({\n error,\n request: normalizedRequest,\n context,\n runtime,\n });\n\n try {\n await sendEnvelope({\n envelope,\n runtime,\n traceparent:\n context?.traceparent ??\n normalizedRequest?.headers.get(TRACEPARENT_HEADER) ??\n undefined,\n });\n } catch {\n /* best-effort */\n }\n}\n\nexport async function onRequestError(\n error: Error & { digest?: string },\n request: unknown,\n context: OnRequestErrorContext\n): Promise<void> {\n if (isErrorCaptured(error)) {\n return;\n }\n markErrorCaptured(error);\n\n const normalizedRequest = normalizeRequest(request) ?? DEFAULT_REQUEST;\n\n await captureError(error, normalizedRequest, {\n mechanism: ON_REQUEST_ERROR_MECHANISM,\n nextjs: {\n ...context,\n requestMethod: normalizedRequest.method,\n requestPath: normalizedRequest.path,\n ...(error.digest ? { errorDigest: error.digest } : {}),\n },\n });\n}\n"],"mappings":";;;;;;;;AAWA,MAAM,6BAA6C;CACjD,MAAM;CACN,SAAS;CACT,WAAW;CACZ;AAED,MAAM,kBAAkB;CACtB,QAAQ;CACR,MAAM;CACN,SAAS,IAAI,SAAS;CACvB;AAED,eAAsB,aACpB,OACA,SACA,SACe;AACf,KAAI,CAAC,wBAAwB,CAC3B;AAGF,KAAI,CAAC,gBAAgB,SAAS,CAC5B;CAGF,MAAM,UAAU,6BAA6B;AAC7C,KAAI,QAAQ,WAAW,KACrB;CAGF,MAAM,oBAAoB,iBAAiB,QAAQ;CACnD,MAAM,WAAW,mBAAmB;EAClC;EACA,SAAS;EACT;EACA;EACD,CAAC;AAEF,KAAI;AACF,QAAM,aAAa;GACjB;GACA;GACA,aACE,SAAS,eACT,mBAAmB,QAAQ,IAAA,cAAuB,IAClD,KAAA;GACH,CAAC;SACI;;AAKV,eAAsB,eACpB,OACA,SACA,SACe;AACf,KAAI,gBAAgB,MAAM,CACxB;AAEF,mBAAkB,MAAM;CAExB,MAAM,oBAAoB,iBAAiB,QAAQ,IAAI;AAEvD,OAAM,aAAa,OAAO,mBAAmB;EAC3C,WAAW;EACX,QAAQ;GACN,GAAG;GACH,eAAe,kBAAkB;GACjC,aAAa,kBAAkB;GAC/B,GAAI,MAAM,SAAS,EAAE,aAAa,MAAM,QAAQ,GAAG,EAAE;GACtD;EACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-config.d.mts","names":[],"sources":["../../../src/internal/server/remote-config.ts"],"mappings":";iBAUsB,yBAAA,CAAA,GAA6B,OAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"remote-config.d.mts","names":[],"sources":["../../../src/internal/server/remote-config.ts"],"mappings":";iBAUsB,yBAAA,CAAA,GAA6B,OAAA;AAAA,iBAkCnC,eAAA,CAAgB,MAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { readInterfereEnv } from "../env.mjs";
|
|
1
|
+
import { isEnabledInEnvironment, readInterfereEnv } from "../env.mjs";
|
|
2
2
|
import { API_PATHS } from "@interfere/constants/api";
|
|
3
3
|
//#region src/internal/server/remote-config.ts
|
|
4
4
|
let cachedConfig = null;
|
|
5
5
|
async function fetchAndCacheRemoteConfig() {
|
|
6
|
+
if (!isEnabledInEnvironment()) return;
|
|
6
7
|
const env = readInterfereEnv();
|
|
7
8
|
if (env.apiKey === null) return;
|
|
8
9
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-config.mjs","names":[],"sources":["../../../src/internal/server/remote-config.ts"],"sourcesContent":["import { API_PATHS } from \"@interfere/constants/api\";\nimport type {\n RemoteConfig,\n RemotePluginConfig,\n} from \"@interfere/types/sdk/remote-config\";\n\nimport { readInterfereEnv } from \"../env.js\";\n\nlet cachedConfig: RemotePluginConfig | null = null;\n\nexport async function fetchAndCacheRemoteConfig(): Promise<void> {\n const env = readInterfereEnv();\n if (env.apiKey === null) {\n return;\n }\n\n try {\n const url = `${env.apiUrl}${API_PATHS.CONFIG}`;\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n \"content-type\": \"application/json\",\n \"x-api-key\": env.apiKey,\n },\n signal: AbortSignal.timeout(10_000),\n });\n\n if (!response.ok) {\n return;\n }\n\n const config = (await response.json()) as RemoteConfig;\n if (config?.plugins) {\n cachedConfig = config.plugins;\n }\n } catch {\n // Fail silently — all plugins remain enabled\n }\n}\n\nexport function isPluginEnabled(plugin: string): boolean {\n if (!cachedConfig) {\n return true;\n }\n return cachedConfig[plugin as keyof RemotePluginConfig] !== false;\n}\n"],"mappings":";;;AAQA,IAAI,eAA0C;AAE9C,eAAsB,4BAA2C;
|
|
1
|
+
{"version":3,"file":"remote-config.mjs","names":[],"sources":["../../../src/internal/server/remote-config.ts"],"sourcesContent":["import { API_PATHS } from \"@interfere/constants/api\";\nimport type {\n RemoteConfig,\n RemotePluginConfig,\n} from \"@interfere/types/sdk/remote-config\";\n\nimport { isEnabledInEnvironment, readInterfereEnv } from \"../env.js\";\n\nlet cachedConfig: RemotePluginConfig | null = null;\n\nexport async function fetchAndCacheRemoteConfig(): Promise<void> {\n if (!isEnabledInEnvironment()) {\n return;\n }\n\n const env = readInterfereEnv();\n if (env.apiKey === null) {\n return;\n }\n\n try {\n const url = `${env.apiUrl}${API_PATHS.CONFIG}`;\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n \"content-type\": \"application/json\",\n \"x-api-key\": env.apiKey,\n },\n signal: AbortSignal.timeout(10_000),\n });\n\n if (!response.ok) {\n return;\n }\n\n const config = (await response.json()) as RemoteConfig;\n if (config?.plugins) {\n cachedConfig = config.plugins;\n }\n } catch {\n // Fail silently — all plugins remain enabled\n }\n}\n\nexport function isPluginEnabled(plugin: string): boolean {\n if (!cachedConfig) {\n return true;\n }\n return cachedConfig[plugin as keyof RemotePluginConfig] !== false;\n}\n"],"mappings":";;;AAQA,IAAI,eAA0C;AAE9C,eAAsB,4BAA2C;AAC/D,KAAI,CAAC,wBAAwB,CAC3B;CAGF,MAAM,MAAM,kBAAkB;AAC9B,KAAI,IAAI,WAAW,KACjB;AAGF,KAAI;EACF,MAAM,MAAM,GAAG,IAAI,SAAS,UAAU;EACtC,MAAM,WAAW,MAAM,MAAM,KAAK;GAChC,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,aAAa,IAAI;IAClB;GACD,QAAQ,YAAY,QAAQ,IAAO;GACpC,CAAC;AAEF,MAAI,CAAC,SAAS,GACZ;EAGF,MAAM,SAAU,MAAM,SAAS,MAAM;AACrC,MAAI,QAAQ,QACV,gBAAe,OAAO;SAElB;;AAKV,SAAgB,gBAAgB,QAAyB;AACvD,KAAI,CAAC,aACH,QAAO;AAET,QAAO,aAAa,YAAwC"}
|
package/dist/package.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-handler.d.mts","names":[],"sources":["../src/route-handler.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"route-handler.d.mts","names":[],"sources":["../src/route-handler.ts"],"mappings":";iBAMsB,GAAA,CAAI,OAAA,EAAS,OAAA,GAAU,OAAA,CAAQ,QAAA;AAAA,iBAOrC,IAAA,CAAK,OAAA,EAAS,OAAA,GAAU,OAAA,CAAQ,QAAA;AAAA,iBAOhC,GAAA,CAAI,OAAA,EAAS,OAAA,GAAU,OAAA,CAAQ,QAAA;AAAA,iBAc/B,OAAA,CAAA,GAAW,QAAA"}
|
package/dist/route-handler.mjs
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
|
+
import { isEnabledInEnvironment } from "./internal/env.mjs";
|
|
1
2
|
import { handleGet } from "./internal/route/handle-get.mjs";
|
|
2
3
|
import { handlePost } from "./internal/route/handle-post.mjs";
|
|
3
4
|
//#region src/route-handler.ts
|
|
5
|
+
const DISABLED = () => new Response(null, { status: 204 });
|
|
4
6
|
async function GET(request) {
|
|
7
|
+
if (!isEnabledInEnvironment()) return DISABLED();
|
|
5
8
|
return await handleGet(request);
|
|
6
9
|
}
|
|
7
10
|
function POST(request) {
|
|
11
|
+
if (!isEnabledInEnvironment()) return Promise.resolve(DISABLED());
|
|
8
12
|
return handlePost(request);
|
|
9
13
|
}
|
|
10
14
|
function PUT(request) {
|
|
15
|
+
if (!isEnabledInEnvironment()) return Promise.resolve(DISABLED());
|
|
11
16
|
return handlePost(request);
|
|
12
17
|
}
|
|
13
18
|
const CORS_HEADERS = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-handler.mjs","names":[],"sources":["../src/route-handler.ts"],"sourcesContent":["import { handleGet } from \"./internal/route/handle-get.js\";\nimport { handlePost } from \"./internal/route/handle-post.js\";\n\nexport async function GET(request: Request): Promise<Response> {\n return await handleGet(request);\n}\n\nexport function POST(request: Request): Promise<Response> {\n return handlePost(request);\n}\n\nexport function PUT(request: Request): Promise<Response> {\n return handlePost(request);\n}\n\nconst CORS_HEADERS = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type\",\n \"Access-Control-Max-Age\": \"86400\",\n};\n\nexport function OPTIONS(): Response {\n return new Response(null, { status: 200, headers: CORS_HEADERS });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"route-handler.mjs","names":[],"sources":["../src/route-handler.ts"],"sourcesContent":["import { isEnabledInEnvironment } from \"./internal/env.js\";\nimport { handleGet } from \"./internal/route/handle-get.js\";\nimport { handlePost } from \"./internal/route/handle-post.js\";\n\nconst DISABLED = () => new Response(null, { status: 204 });\n\nexport async function GET(request: Request): Promise<Response> {\n if (!isEnabledInEnvironment()) {\n return DISABLED();\n }\n return await handleGet(request);\n}\n\nexport function POST(request: Request): Promise<Response> {\n if (!isEnabledInEnvironment()) {\n return Promise.resolve(DISABLED());\n }\n return handlePost(request);\n}\n\nexport function PUT(request: Request): Promise<Response> {\n if (!isEnabledInEnvironment()) {\n return Promise.resolve(DISABLED());\n }\n return handlePost(request);\n}\n\nconst CORS_HEADERS = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type\",\n \"Access-Control-Max-Age\": \"86400\",\n};\n\nexport function OPTIONS(): Response {\n return new Response(null, { status: 200, headers: CORS_HEADERS });\n}\n"],"mappings":";;;;AAIA,MAAM,iBAAiB,IAAI,SAAS,MAAM,EAAE,QAAQ,KAAK,CAAC;AAE1D,eAAsB,IAAI,SAAqC;AAC7D,KAAI,CAAC,wBAAwB,CAC3B,QAAO,UAAU;AAEnB,QAAO,MAAM,UAAU,QAAQ;;AAGjC,SAAgB,KAAK,SAAqC;AACxD,KAAI,CAAC,wBAAwB,CAC3B,QAAO,QAAQ,QAAQ,UAAU,CAAC;AAEpC,QAAO,WAAW,QAAQ;;AAG5B,SAAgB,IAAI,SAAqC;AACvD,KAAI,CAAC,wBAAwB,CAC3B,QAAO,QAAQ,QAAQ,UAAU,CAAC;AAEpC,QAAO,WAAW,QAAQ;;AAG5B,MAAM,eAAe;CACnB,+BAA+B;CAC/B,gCAAgC;CAChC,gCAAgC;CAChC,0BAA0B;CAC3B;AAED,SAAgB,UAAoB;AAClC,QAAO,IAAI,SAAS,MAAM;EAAE,QAAQ;EAAK,SAAS;EAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interfere/next",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Build software that never breaks.",
|
|
6
6
|
"keywords": [
|
|
@@ -58,16 +58,16 @@
|
|
|
58
58
|
"scripts": {
|
|
59
59
|
"build": "tsdown",
|
|
60
60
|
"dev": "tsdown --watch",
|
|
61
|
-
"test:
|
|
61
|
+
"test:e2e": "vitest run --project browser",
|
|
62
62
|
"test:unit": "vitest run --project unit --coverage",
|
|
63
63
|
"typecheck": "tsc --noEmit --incremental",
|
|
64
|
-
"test": "bun run test:unit
|
|
64
|
+
"test": "bun run test:unit"
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@interfere/constants": "^
|
|
68
|
-
"@interfere/react": "^
|
|
69
|
-
"@interfere/sdk": "^
|
|
70
|
-
"@interfere/types": "^
|
|
67
|
+
"@interfere/constants": "^6.0.0",
|
|
68
|
+
"@interfere/react": "^6.0.0",
|
|
69
|
+
"@interfere/sdk": "^6.0.0",
|
|
70
|
+
"@interfere/types": "^6.0.0",
|
|
71
71
|
"chalk": "^5.6.2",
|
|
72
72
|
"uuid": "^13.0.0"
|
|
73
73
|
},
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"react-dom": ">=19"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@interfere/typescript-config": "^
|
|
82
|
-
"@interfere/vitest-config": "^
|
|
81
|
+
"@interfere/typescript-config": "^6.0.0",
|
|
82
|
+
"@interfere/vitest-config": "^6.0.0",
|
|
83
83
|
"@testing-library/react": "^16.3.2",
|
|
84
84
|
"@types/node": "^24.12.0",
|
|
85
85
|
"@types/react": "19.2.14",
|
|
@@ -89,11 +89,11 @@
|
|
|
89
89
|
"@vitest/browser-playwright": "4.1.0",
|
|
90
90
|
"@vitest/coverage-v8": "^4.0.18",
|
|
91
91
|
"jsdom": "^29.0.0",
|
|
92
|
-
"next": "^16.1.
|
|
92
|
+
"next": "^16.1.7",
|
|
93
93
|
"playwright": "^1.56.1",
|
|
94
94
|
"react": "^19.2.4",
|
|
95
95
|
"react-dom": "^19.2.4",
|
|
96
|
-
"tsdown": "^0.21.
|
|
96
|
+
"tsdown": "^0.21.4",
|
|
97
97
|
"typescript": "5.9.3",
|
|
98
98
|
"vitest": "^4.0.18",
|
|
99
99
|
"webpack": "^5.105.1"
|