@interfere/next 0.1.0-alpha.10 → 0.1.0-alpha.2
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 +70 -305
- package/dist/_virtual/_rolldown/runtime.mjs +13 -0
- package/dist/config.d.mts +11 -0
- package/dist/config.d.mts.map +1 -0
- package/dist/config.mjs +116 -0
- package/dist/config.mjs.map +1 -0
- package/dist/instrument-client.d.mts +2 -0
- package/dist/instrument-client.mjs +2 -0
- package/dist/internal/build/configure-build.d.mts +22 -0
- package/dist/internal/build/configure-build.d.mts.map +1 -0
- package/dist/internal/build/configure-build.mjs +87 -0
- package/dist/internal/build/configure-build.mjs.map +1 -0
- package/dist/internal/build/injected.d.mts +12 -0
- package/dist/internal/build/injected.d.mts.map +1 -0
- package/dist/internal/build/injected.mjs +9 -0
- package/dist/internal/build/injected.mjs.map +1 -0
- package/dist/internal/build/logger.d.mts +8 -0
- package/dist/internal/build/logger.d.mts.map +1 -0
- package/dist/internal/build/logger.mjs +44 -0
- package/dist/internal/build/logger.mjs.map +1 -0
- package/dist/internal/build/release/destinations/vercel.d.mts +6 -0
- package/dist/internal/build/release/destinations/vercel.d.mts.map +1 -0
- package/dist/internal/build/release/destinations/vercel.mjs +25 -0
- package/dist/internal/build/release/destinations/vercel.mjs.map +1 -0
- package/dist/internal/build/release/git.d.mts +4 -0
- package/dist/internal/build/release/git.d.mts.map +1 -0
- package/dist/internal/build/release/git.mjs +21 -0
- package/dist/internal/build/release/git.mjs.map +1 -0
- package/dist/internal/build/release/index.d.mts +7 -0
- package/dist/internal/build/release/index.d.mts.map +1 -0
- package/dist/internal/build/release/index.mjs +26 -0
- package/dist/internal/build/release/index.mjs.map +1 -0
- package/dist/internal/build/release/sources/github.d.mts +6 -0
- package/dist/internal/build/release/sources/github.d.mts.map +1 -0
- package/dist/internal/build/release/sources/github.mjs +15 -0
- package/dist/internal/build/release/sources/github.mjs.map +1 -0
- package/dist/internal/build/release/types.d.mts +11 -0
- package/dist/internal/build/release/types.d.mts.map +1 -0
- package/dist/internal/build/release/types.mjs +1 -0
- package/dist/internal/build/source-maps/discover.d.mts +14 -0
- package/dist/internal/build/source-maps/discover.d.mts.map +1 -0
- package/dist/internal/build/source-maps/discover.mjs +61 -0
- package/dist/internal/build/source-maps/discover.mjs.map +1 -0
- package/dist/internal/build/source-maps/index.d.mts +23 -0
- package/dist/internal/build/source-maps/index.d.mts.map +1 -0
- package/dist/internal/build/source-maps/index.mjs +33 -0
- package/dist/internal/build/source-maps/index.mjs.map +1 -0
- package/dist/internal/build/value-injection-loader.d.mts +10 -0
- package/dist/internal/build/value-injection-loader.d.mts.map +1 -0
- package/dist/internal/build/value-injection-loader.mjs +24 -0
- package/dist/internal/build/value-injection-loader.mjs.map +1 -0
- package/dist/internal/env.d.mts +15 -0
- package/dist/internal/env.d.mts.map +1 -0
- package/dist/internal/env.mjs +18 -0
- package/dist/internal/env.mjs.map +1 -0
- package/dist/internal/route/cors.d.mts +4 -0
- package/dist/internal/route/cors.d.mts.map +1 -0
- package/dist/internal/route/cors.mjs +15 -0
- package/dist/internal/route/cors.mjs.map +1 -0
- package/dist/internal/route/handle-get.d.mts +4 -0
- package/dist/internal/route/handle-get.d.mts.map +1 -0
- package/dist/internal/route/handle-get.mjs +15 -0
- package/dist/internal/route/handle-get.mjs.map +1 -0
- package/dist/internal/route/handle-post.d.mts +4 -0
- package/dist/internal/route/handle-post.d.mts.map +1 -0
- package/dist/internal/route/handle-post.mjs +105 -0
- package/dist/internal/route/handle-post.mjs.map +1 -0
- package/dist/internal/route/sw-script.d.mts +4 -0
- package/dist/internal/route/sw-script.d.mts.map +1 -0
- package/dist/internal/route/sw-script.mjs +32 -0
- package/dist/internal/route/sw-script.mjs.map +1 -0
- package/dist/internal/server/capture.d.mts +9 -0
- package/dist/internal/server/capture.d.mts.map +1 -0
- package/dist/internal/server/capture.mjs +46 -0
- package/dist/internal/server/capture.mjs.map +1 -0
- package/dist/internal/server/dedupe.d.mts +5 -0
- package/dist/internal/server/dedupe.d.mts.map +1 -0
- package/dist/internal/server/dedupe.mjs +11 -0
- package/dist/internal/server/dedupe.mjs.map +1 -0
- package/dist/internal/server/envelope.d.mts +14 -0
- package/dist/internal/server/envelope.d.mts.map +1 -0
- package/dist/internal/server/envelope.mjs +41 -0
- package/dist/internal/server/envelope.mjs.map +1 -0
- package/dist/internal/server/mechanisms.d.mts +7 -0
- package/dist/internal/server/mechanisms.d.mts.map +1 -0
- package/dist/internal/server/mechanisms.mjs +12 -0
- package/dist/internal/server/mechanisms.mjs.map +1 -0
- package/dist/internal/server/normalize-request.d.mts +7 -0
- package/dist/internal/server/normalize-request.d.mts.map +1 -0
- package/dist/internal/server/normalize-request.mjs +50 -0
- package/dist/internal/server/normalize-request.mjs.map +1 -0
- package/dist/internal/server/runtime.d.mts +14 -0
- package/dist/internal/server/runtime.d.mts.map +1 -0
- package/dist/internal/server/runtime.mjs +18 -0
- package/dist/internal/server/runtime.mjs.map +1 -0
- package/dist/internal/server/session.d.mts +11 -0
- package/dist/internal/server/session.d.mts.map +1 -0
- package/dist/internal/server/session.mjs +15 -0
- package/dist/internal/server/session.mjs.map +1 -0
- package/dist/internal/server/transport.d.mts +12 -0
- package/dist/internal/server/transport.d.mts.map +1 -0
- package/dist/internal/server/transport.mjs +17 -0
- package/dist/internal/server/transport.mjs.map +1 -0
- package/dist/internal/server/types.d.mts +17 -0
- package/dist/internal/server/types.d.mts.map +1 -0
- package/dist/internal/server/types.mjs +1 -0
- package/dist/provider.d.mts +2 -0
- package/dist/provider.mjs +3 -0
- package/dist/route-handler.d.mts +7 -0
- package/dist/route-handler.d.mts.map +1 -0
- package/dist/route-handler.mjs +18 -0
- package/dist/route-handler.mjs.map +1 -0
- package/dist/server.d.mts +8 -0
- package/dist/server.d.mts.map +1 -0
- package/dist/server.mjs +6 -0
- package/dist/server.mjs.map +1 -0
- package/package.json +60 -88
- package/LICENSE +0 -21
- package/dist/_virtual/rolldown_runtime.mjs +0 -7
- package/dist/build/env-config.d.mts +0 -7
- package/dist/build/env-config.d.mts.map +0 -1
- package/dist/build/env-config.mjs +0 -17
- package/dist/build/env-config.mjs.map +0 -1
- package/dist/build/loaders/value-injection-loader.d.mts +0 -22
- package/dist/build/loaders/value-injection-loader.d.mts.map +0 -1
- package/dist/build/loaders/value-injection-loader.mjs +0 -35
- package/dist/build/loaders/value-injection-loader.mjs.map +0 -1
- package/dist/build/logger.d.mts +0 -11
- package/dist/build/logger.d.mts.map +0 -1
- package/dist/build/logger.mjs +0 -153
- package/dist/build/logger.mjs.map +0 -1
- package/dist/build/nextjs-version.d.mts +0 -40
- package/dist/build/nextjs-version.d.mts.map +0 -1
- package/dist/build/nextjs-version.mjs +0 -66
- package/dist/build/nextjs-version.mjs.map +0 -1
- package/dist/build/release-program.d.mts +0 -21
- package/dist/build/release-program.d.mts.map +0 -1
- package/dist/build/release-program.mjs +0 -93
- package/dist/build/release-program.mjs.map +0 -1
- package/dist/build/secret-key.d.mts +0 -10
- package/dist/build/secret-key.d.mts.map +0 -1
- package/dist/build/secret-key.mjs +0 -16
- package/dist/build/secret-key.mjs.map +0 -1
- package/dist/build/services/config.service.d.mts +0 -9
- package/dist/build/services/config.service.d.mts.map +0 -1
- package/dist/build/services/config.service.mjs +0 -8
- package/dist/build/services/config.service.mjs.map +0 -1
- package/dist/build/services/instrumentation-detection.service.d.mts +0 -19
- package/dist/build/services/instrumentation-detection.service.d.mts.map +0 -1
- package/dist/build/services/instrumentation-detection.service.mjs +0 -77
- package/dist/build/services/instrumentation-detection.service.mjs.map +0 -1
- package/dist/build/services/preflight.service.d.mts +0 -19
- package/dist/build/services/preflight.service.d.mts.map +0 -1
- package/dist/build/services/preflight.service.mjs +0 -76
- package/dist/build/services/preflight.service.mjs.map +0 -1
- package/dist/build/services/release-api.service.d.mts +0 -11
- package/dist/build/services/release-api.service.d.mts.map +0 -1
- package/dist/build/services/release-api.service.mjs +0 -9
- package/dist/build/services/release-api.service.mjs.map +0 -1
- package/dist/build/services/release-identity.service.d.mts +0 -22
- package/dist/build/services/release-identity.service.d.mts.map +0 -1
- package/dist/build/services/release-identity.service.mjs +0 -48
- package/dist/build/services/release-identity.service.mjs.map +0 -1
- package/dist/build/services/source-map-failure-cleanup.service.d.mts +0 -11
- package/dist/build/services/source-map-failure-cleanup.service.d.mts.map +0 -1
- package/dist/build/services/source-map-failure-cleanup.service.mjs +0 -9
- package/dist/build/services/source-map-failure-cleanup.service.mjs.map +0 -1
- package/dist/build/services/source-map.service.d.mts +0 -24
- package/dist/build/services/source-map.service.d.mts.map +0 -1
- package/dist/build/services/source-map.service.mjs +0 -56
- package/dist/build/services/source-map.service.mjs.map +0 -1
- package/dist/build/source-maps/api.d.mts +0 -35
- package/dist/build/source-maps/api.d.mts.map +0 -1
- package/dist/build/source-maps/api.mjs +0 -61
- package/dist/build/source-maps/api.mjs.map +0 -1
- package/dist/build/source-maps/client.d.mts +0 -81
- package/dist/build/source-maps/client.d.mts.map +0 -1
- package/dist/build/source-maps/client.mjs +0 -234
- package/dist/build/source-maps/client.mjs.map +0 -1
- package/dist/build/source-maps/errors.d.mts +0 -109
- package/dist/build/source-maps/errors.d.mts.map +0 -1
- package/dist/build/source-maps/errors.mjs +0 -22
- package/dist/build/source-maps/errors.mjs.map +0 -1
- package/dist/build/source-maps/files.d.mts +0 -35
- package/dist/build/source-maps/files.d.mts.map +0 -1
- package/dist/build/source-maps/files.mjs +0 -220
- package/dist/build/source-maps/files.mjs.map +0 -1
- package/dist/build/source-maps/providers/deployment/detector.d.mts +0 -26
- package/dist/build/source-maps/providers/deployment/detector.d.mts.map +0 -1
- package/dist/build/source-maps/providers/deployment/detector.mjs +0 -20
- package/dist/build/source-maps/providers/deployment/detector.mjs.map +0 -1
- package/dist/build/source-maps/providers/deployment/types.d.mts +0 -12
- package/dist/build/source-maps/providers/deployment/types.d.mts.map +0 -1
- package/dist/build/source-maps/providers/deployment/types.mjs +0 -3
- package/dist/build/source-maps/providers/deployment/vercel.d.mts +0 -6
- package/dist/build/source-maps/providers/deployment/vercel.d.mts.map +0 -1
- package/dist/build/source-maps/providers/deployment/vercel.mjs +0 -44
- package/dist/build/source-maps/providers/deployment/vercel.mjs.map +0 -1
- package/dist/build/source-maps/providers/source-control/detector.d.mts +0 -15
- package/dist/build/source-maps/providers/source-control/detector.d.mts.map +0 -1
- package/dist/build/source-maps/providers/source-control/detector.mjs +0 -20
- package/dist/build/source-maps/providers/source-control/detector.mjs.map +0 -1
- package/dist/build/source-maps/providers/source-control/git.d.mts +0 -6
- package/dist/build/source-maps/providers/source-control/git.d.mts.map +0 -1
- package/dist/build/source-maps/providers/source-control/git.mjs +0 -50
- package/dist/build/source-maps/providers/source-control/git.mjs.map +0 -1
- package/dist/build/source-maps/providers/source-control/types.d.mts +0 -12
- package/dist/build/source-maps/providers/source-control/types.d.mts.map +0 -1
- package/dist/build/source-maps/providers/source-control/types.mjs +0 -3
- package/dist/build/with-interfere.d.mts +0 -70
- package/dist/build/with-interfere.d.mts.map +0 -1
- package/dist/build/with-interfere.mjs +0 -161
- package/dist/build/with-interfere.mjs.map +0 -1
- package/dist/client/auto-init.d.mts +0 -91
- package/dist/client/auto-init.d.mts.map +0 -1
- package/dist/client/auto-init.mjs +0 -121
- package/dist/client/auto-init.mjs.map +0 -1
- package/dist/client/client.d.mts +0 -3
- package/dist/client/client.mjs +0 -5
- package/dist/client/provider.d.mts +0 -22
- package/dist/client/provider.d.mts.map +0 -1
- package/dist/client/provider.mjs +0 -50
- package/dist/client/provider.mjs.map +0 -1
- package/dist/lib/env.d.mts +0 -12
- package/dist/lib/env.d.mts.map +0 -1
- package/dist/lib/env.mjs +0 -17
- package/dist/lib/env.mjs.map +0 -1
- package/dist/lib/test-utils/make-next-request.d.mts +0 -6
- package/dist/lib/test-utils/make-next-request.d.mts.map +0 -1
- package/dist/lib/test-utils/make-next-request.mjs +0 -12
- package/dist/lib/test-utils/make-next-request.mjs.map +0 -1
- package/dist/lib/types.d.mts +0 -22
- package/dist/lib/types.d.mts.map +0 -1
- package/dist/lib/types.mjs +0 -7
- package/dist/lib/types.mjs.map +0 -1
- package/dist/server/auto-init.d.mts +0 -87
- package/dist/server/auto-init.d.mts.map +0 -1
- package/dist/server/auto-init.mjs +0 -101
- package/dist/server/auto-init.mjs.map +0 -1
- package/dist/server/middleware.d.mts +0 -11
- package/dist/server/middleware.d.mts.map +0 -1
- package/dist/server/middleware.mjs +0 -93
- package/dist/server/middleware.mjs.map +0 -1
- package/dist/server/on-request-error.d.mts +0 -27
- package/dist/server/on-request-error.d.mts.map +0 -1
- package/dist/server/on-request-error.mjs +0 -74
- package/dist/server/on-request-error.mjs.map +0 -1
- package/dist/server/proxy.d.mts +0 -6
- package/dist/server/proxy.d.mts.map +0 -1
- package/dist/server/proxy.mjs +0 -30
- package/dist/server/proxy.mjs.map +0 -1
- package/dist/server/route-handler.d.mts +0 -9
- package/dist/server/route-handler.d.mts.map +0 -1
- package/dist/server/route-handler.mjs +0 -166
- package/dist/server/route-handler.mjs.map +0 -1
- package/dist/server/sdk.d.mts +0 -96
- package/dist/server/sdk.d.mts.map +0 -1
- package/dist/server/sdk.mjs +0 -152
- package/dist/server/sdk.mjs.map +0 -1
- package/dist/server/services/config.service.d.mts +0 -21
- package/dist/server/services/config.service.d.mts.map +0 -1
- package/dist/server/services/config.service.mjs +0 -43
- package/dist/server/services/config.service.mjs.map +0 -1
- package/dist/server/services/error-tracking.service.d.mts +0 -19
- package/dist/server/services/error-tracking.service.d.mts.map +0 -1
- package/dist/server/services/error-tracking.service.mjs +0 -33
- package/dist/server/services/error-tracking.service.mjs.map +0 -1
- package/dist/server/session-context.d.mts +0 -60
- package/dist/server/session-context.d.mts.map +0 -1
- package/dist/server/session-context.mjs +0 -62
- package/dist/server/session-context.mjs.map +0 -1
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
-
|
|
3
|
-
//#region src/server/session-context.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Session context stored in AsyncLocalStorage.
|
|
6
|
-
*
|
|
7
|
-
* This allows session information to propagate through async call chains,
|
|
8
|
-
* enabling proper session correlation even in global error handlers
|
|
9
|
-
* that don't have direct access to the request object.
|
|
10
|
-
*/
|
|
11
|
-
interface SessionContext {
|
|
12
|
-
/**
|
|
13
|
-
* The browser session ID from the x-interfere-request header.
|
|
14
|
-
* May be null if the header wasn't provided.
|
|
15
|
-
*/
|
|
16
|
-
readonly sessionId: string | null;
|
|
17
|
-
/**
|
|
18
|
-
* The request ID from the x-interfere-request header.
|
|
19
|
-
* Used for correlating with the session cache.
|
|
20
|
-
*/
|
|
21
|
-
readonly requestId: string | null;
|
|
22
|
-
/**
|
|
23
|
-
* Timestamp when this context was created.
|
|
24
|
-
* Used for debugging and monitoring.
|
|
25
|
-
*/
|
|
26
|
-
readonly createdAt: number;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* AsyncLocalStorage instance for session context.
|
|
30
|
-
*
|
|
31
|
-
* This is a singleton that persists across the Node.js process.
|
|
32
|
-
* Each async execution context gets its own isolated store.
|
|
33
|
-
*/
|
|
34
|
-
declare const sessionContextStorage: AsyncLocalStorage<SessionContext>;
|
|
35
|
-
/**
|
|
36
|
-
* Run a function with session context.
|
|
37
|
-
*
|
|
38
|
-
* The context will be available to all sync and async code
|
|
39
|
-
* within the callback via `getSessionContext()`.
|
|
40
|
-
*/
|
|
41
|
-
declare function runWithSessionContext<T>(context: SessionContext, fn: () => T): T;
|
|
42
|
-
/**
|
|
43
|
-
* Get the current session context from AsyncLocalStorage.
|
|
44
|
-
*
|
|
45
|
-
* Returns undefined if called outside of a session context
|
|
46
|
-
* (i.e., not within a `runWithSessionContext` callback).
|
|
47
|
-
*/
|
|
48
|
-
declare function getSessionContext(): SessionContext | undefined;
|
|
49
|
-
/**
|
|
50
|
-
* Parse the x-interfere-request header and create a SessionContext.
|
|
51
|
-
*
|
|
52
|
-
* Format: {sessionId}/{requestId}
|
|
53
|
-
*/
|
|
54
|
-
declare function parseInterfereRequestHeader(headerValue: string | null | undefined): Pick<SessionContext, "sessionId" | "requestId">;
|
|
55
|
-
/**
|
|
56
|
-
* Create a SessionContext from a Request object.
|
|
57
|
-
*/
|
|
58
|
-
declare function createSessionContextFromRequest(request: Request): SessionContext;
|
|
59
|
-
//#endregion
|
|
60
|
-
export { SessionContext, createSessionContextFromRequest, getSessionContext, parseInterfereRequestHeader, runWithSessionContext, sessionContextStorage };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-context.d.mts","names":[],"sources":["../../src/server/session-context.ts"],"mappings":";;;;AASA;AA0BA;AAQA;;;;UAlCiB,cAAA;EAAA;AA0BjB;AAQA;;EAlCiB,SAAA,SAAA;EAAA;AA0BjB;AAQA;;EAlCiB,SAAA,SAAA;EAAA;AA0BjB;AAQA;;EAlCiB,SAAA,SAAA;AAAA;AAAA;AA0BjB;AAQA;;;;AAlCiB,cA0BJ,qBAAA,EAAqB,iBAAA,CAAA,cAAA;AAAA;AAQlC;;;;;AARkC,iBAQlB,qBAAA,GAAA,CAAA,OAAA,EACL,cAAA,EAAA,EAAA,QACC,CAAA,GACT,CAAA;AAAA;;AAUH;AASA;AAsBA;;AAzCG,iBAUa,iBAAA,CAAA,GAAqB,cAAA;AAAA;AASrC;AAsBA;;;AA/BqC,iBASrB,2BAAA,CAAA,WAAA,8BAEb,IAAA,CAAK,cAAA;AAAA;AAoBR;;AApBQ,iBAoBQ,+BAAA,CAAA,OAAA,EACL,OAAA,GACR,cAAA"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
-
|
|
3
|
-
//#region src/server/session-context.ts
|
|
4
|
-
/**
|
|
5
|
-
* AsyncLocalStorage instance for session context.
|
|
6
|
-
*
|
|
7
|
-
* This is a singleton that persists across the Node.js process.
|
|
8
|
-
* Each async execution context gets its own isolated store.
|
|
9
|
-
*/
|
|
10
|
-
const sessionContextStorage = new AsyncLocalStorage();
|
|
11
|
-
/**
|
|
12
|
-
* Run a function with session context.
|
|
13
|
-
*
|
|
14
|
-
* The context will be available to all sync and async code
|
|
15
|
-
* within the callback via `getSessionContext()`.
|
|
16
|
-
*/
|
|
17
|
-
function runWithSessionContext(context, fn) {
|
|
18
|
-
return sessionContextStorage.run(context, fn);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Get the current session context from AsyncLocalStorage.
|
|
22
|
-
*
|
|
23
|
-
* Returns undefined if called outside of a session context
|
|
24
|
-
* (i.e., not within a `runWithSessionContext` callback).
|
|
25
|
-
*/
|
|
26
|
-
function getSessionContext() {
|
|
27
|
-
return sessionContextStorage.getStore();
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Parse the x-interfere-request header and create a SessionContext.
|
|
31
|
-
*
|
|
32
|
-
* Format: {sessionId}/{requestId}
|
|
33
|
-
*/
|
|
34
|
-
function parseInterfereRequestHeader(headerValue) {
|
|
35
|
-
if (!headerValue) return {
|
|
36
|
-
sessionId: null,
|
|
37
|
-
requestId: null
|
|
38
|
-
};
|
|
39
|
-
const parts = headerValue.split("/");
|
|
40
|
-
if (parts.length !== 2) return {
|
|
41
|
-
sessionId: null,
|
|
42
|
-
requestId: null
|
|
43
|
-
};
|
|
44
|
-
return {
|
|
45
|
-
sessionId: parts[0] || null,
|
|
46
|
-
requestId: parts[1] || null
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Create a SessionContext from a Request object.
|
|
51
|
-
*/
|
|
52
|
-
function createSessionContextFromRequest(request) {
|
|
53
|
-
const { sessionId, requestId } = parseInterfereRequestHeader(request.headers.get("x-interfere-request"));
|
|
54
|
-
return {
|
|
55
|
-
sessionId,
|
|
56
|
-
requestId,
|
|
57
|
-
createdAt: Date.now()
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
//#endregion
|
|
62
|
-
export { createSessionContextFromRequest, getSessionContext, parseInterfereRequestHeader, runWithSessionContext, sessionContextStorage };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-context.mjs","names":[],"sources":["../../src/server/session-context.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\n\n/**\n * Session context stored in AsyncLocalStorage.\n *\n * This allows session information to propagate through async call chains,\n * enabling proper session correlation even in global error handlers\n * that don't have direct access to the request object.\n */\nexport interface SessionContext {\n /**\n * The browser session ID from the x-interfere-request header.\n * May be null if the header wasn't provided.\n */\n readonly sessionId: string | null;\n\n /**\n * The request ID from the x-interfere-request header.\n * Used for correlating with the session cache.\n */\n readonly requestId: string | null;\n\n /**\n * Timestamp when this context was created.\n * Used for debugging and monitoring.\n */\n readonly createdAt: number;\n}\n\n/**\n * AsyncLocalStorage instance for session context.\n *\n * This is a singleton that persists across the Node.js process.\n * Each async execution context gets its own isolated store.\n */\nexport const sessionContextStorage = new AsyncLocalStorage<SessionContext>();\n\n/**\n * Run a function with session context.\n *\n * The context will be available to all sync and async code\n * within the callback via `getSessionContext()`.\n */\nexport function runWithSessionContext<T>(\n context: SessionContext,\n fn: () => T\n): T {\n return sessionContextStorage.run(context, fn);\n}\n\n/**\n * Get the current session context from AsyncLocalStorage.\n *\n * Returns undefined if called outside of a session context\n * (i.e., not within a `runWithSessionContext` callback).\n */\nexport function getSessionContext(): SessionContext | undefined {\n return sessionContextStorage.getStore();\n}\n\n/**\n * Parse the x-interfere-request header and create a SessionContext.\n *\n * Format: {sessionId}/{requestId}\n */\nexport function parseInterfereRequestHeader(\n headerValue: string | null | undefined\n): Pick<SessionContext, \"sessionId\" | \"requestId\"> {\n if (!headerValue) {\n return { sessionId: null, requestId: null };\n }\n\n const parts = headerValue.split(\"/\");\n\n if (parts.length !== 2) {\n return { sessionId: null, requestId: null };\n }\n\n return {\n sessionId: parts[0] || null,\n requestId: parts[1] || null,\n };\n}\n\n/**\n * Create a SessionContext from a Request object.\n */\nexport function createSessionContextFromRequest(\n request: Request\n): SessionContext {\n const headerValue = request.headers.get(\"x-interfere-request\");\n const { sessionId, requestId } = parseInterfereRequestHeader(headerValue);\n\n return {\n sessionId,\n requestId,\n createdAt: Date.now(),\n };\n}\n"],"mappings":";;;;;;;;;AAmCA,MAAa,wBAAwB,IAAI,mBAAmC;;;;;;;AAQ5E,SAAgB,sBACd,SACA,IACG;AACH,QAAO,sBAAsB,IAAI,SAAS,GAAG;;;;;;;;AAS/C,SAAgB,oBAAgD;AAC9D,QAAO,sBAAsB,UAAU;;;;;;;AAQzC,SAAgB,4BACd,aACiD;AACjD,KAAI,CAAC,YACH,QAAO;EAAE,WAAW;EAAM,WAAW;EAAM;CAG7C,MAAM,QAAQ,YAAY,MAAM,IAAI;AAEpC,KAAI,MAAM,WAAW,EACnB,QAAO;EAAE,WAAW;EAAM,WAAW;EAAM;AAG7C,QAAO;EACL,WAAW,MAAM,MAAM;EACvB,WAAW,MAAM,MAAM;EACxB;;;;;AAMH,SAAgB,gCACd,SACgB;CAEhB,MAAM,EAAE,WAAW,cAAc,4BADb,QAAQ,QAAQ,IAAI,sBAAsB,CACW;AAEzE,QAAO;EACL;EACA;EACA,WAAW,KAAK,KAAK;EACtB"}
|