@interfere/react 0.1.0-alpha.6 → 0.2.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 +90 -0
- package/dist/error-boundary.d.mts +27 -0
- package/dist/error-boundary.d.mts.map +1 -0
- package/dist/error-boundary.mjs +42 -0
- package/dist/error-boundary.mjs.map +1 -0
- package/dist/internal/client.d.mts +13 -0
- package/dist/internal/client.d.mts.map +1 -0
- package/dist/internal/client.mjs +80 -0
- package/dist/internal/client.mjs.map +1 -0
- package/dist/internal/config.d.mts +9 -0
- package/dist/internal/config.d.mts.map +1 -0
- package/dist/internal/config.mjs +27 -0
- package/dist/internal/config.mjs.map +1 -0
- package/dist/internal/context.d.mts +6 -0
- package/dist/internal/context.d.mts.map +1 -0
- package/dist/internal/context.mjs +32 -0
- package/dist/internal/context.mjs.map +1 -0
- package/dist/internal/envelope.d.mts +14 -0
- package/dist/internal/envelope.d.mts.map +1 -0
- package/dist/internal/envelope.mjs +20 -0
- package/dist/internal/envelope.mjs.map +1 -0
- package/dist/internal/errors.d.mts +4 -0
- package/dist/internal/errors.d.mts.map +1 -0
- package/dist/internal/errors.mjs +4 -0
- package/dist/internal/errors.mjs.map +1 -0
- package/dist/internal/sw.d.mts +4 -0
- package/dist/internal/sw.d.mts.map +1 -0
- package/dist/internal/sw.mjs +10 -0
- package/dist/internal/sw.mjs.map +1 -0
- package/dist/plugins/errors.d.mts +6 -0
- package/dist/plugins/errors.d.mts.map +1 -0
- package/dist/plugins/errors.mjs +59 -0
- package/dist/plugins/errors.mjs.map +1 -0
- package/dist/plugins/lib/loader.d.mts +9 -0
- package/dist/plugins/lib/loader.d.mts.map +1 -0
- package/dist/plugins/lib/loader.mjs +47 -0
- package/dist/plugins/lib/loader.mjs.map +1 -0
- package/dist/plugins/lib/types.d.mts +14 -0
- package/dist/plugins/lib/types.d.mts.map +1 -0
- package/dist/plugins/lib/types.mjs +1 -0
- package/dist/plugins/pages.d.mts +6 -0
- package/dist/plugins/pages.d.mts.map +1 -0
- package/dist/plugins/pages.mjs +102 -0
- package/dist/plugins/pages.mjs.map +1 -0
- package/dist/plugins/rage-clicks.d.mts +6 -0
- package/dist/plugins/rage-clicks.d.mts.map +1 -0
- package/dist/plugins/rage-clicks.mjs +53 -0
- package/dist/plugins/rage-clicks.mjs.map +1 -0
- package/dist/plugins/replay.d.mts +6 -0
- package/dist/plugins/replay.d.mts.map +1 -0
- package/dist/plugins/replay.mjs +62 -0
- package/dist/plugins/replay.mjs.map +1 -0
- package/dist/provider.d.mts +17 -11
- package/dist/provider.d.mts.map +1 -1
- package/dist/provider.mjs +18 -17
- package/dist/provider.mjs.map +1 -1
- package/dist/tracking/api.d.mts +22 -0
- package/dist/tracking/api.d.mts.map +1 -0
- package/dist/tracking/api.mjs +88 -0
- package/dist/tracking/api.mjs.map +1 -0
- package/dist/tracking/session.d.mts +19 -0
- package/dist/tracking/session.d.mts.map +1 -0
- package/dist/tracking/session.mjs +92 -0
- package/dist/tracking/session.mjs.map +1 -0
- package/dist/tracking/visitor.d.mts +6 -0
- package/dist/tracking/visitor.d.mts.map +1 -0
- package/dist/tracking/visitor.mjs +35 -0
- package/dist/tracking/visitor.mjs.map +1 -0
- package/dist/transport/http.d.mts +15 -0
- package/dist/transport/http.d.mts.map +1 -0
- package/dist/transport/http.mjs +56 -0
- package/dist/transport/http.mjs.map +1 -0
- package/dist/transport/queue.d.mts +25 -0
- package/dist/transport/queue.d.mts.map +1 -0
- package/dist/transport/queue.mjs +60 -0
- package/dist/transport/queue.mjs.map +1 -0
- package/dist/util/log.d.mts +13 -0
- package/dist/util/log.d.mts.map +1 -0
- package/dist/util/log.mjs +37 -0
- package/dist/util/log.mjs.map +1 -0
- package/package.json +38 -64
- package/dist/client.d.mts +0 -8
- package/dist/client.d.mts.map +0 -1
- package/dist/client.mjs +0 -14
- package/dist/client.mjs.map +0 -1
- package/dist/core/events/define-event.d.mts +0 -12
- package/dist/core/events/define-event.d.mts.map +0 -1
- package/dist/core/events/define-event.mjs +0 -39
- package/dist/core/events/define-event.mjs.map +0 -1
- package/dist/core/events/event-registry.d.mts +0 -23
- package/dist/core/events/event-registry.d.mts.map +0 -1
- package/dist/core/events/event-registry.mjs +0 -32
- package/dist/core/events/event-registry.mjs.map +0 -1
- package/dist/core/events/plugin-event-types.d.mts +0 -130
- package/dist/core/events/plugin-event-types.d.mts.map +0 -1
- package/dist/core/events/plugin-event-types.mjs +0 -25
- package/dist/core/events/plugin-event-types.mjs.map +0 -1
- package/dist/core/plugins/define-plugin.d.mts +0 -43
- package/dist/core/plugins/define-plugin.d.mts.map +0 -1
- package/dist/core/plugins/define-plugin.mjs +0 -23
- package/dist/core/plugins/define-plugin.mjs.map +0 -1
- package/dist/core/plugins/dom-utils.d.mts +0 -9
- package/dist/core/plugins/dom-utils.d.mts.map +0 -1
- package/dist/core/plugins/dom-utils.mjs +0 -25
- package/dist/core/plugins/dom-utils.mjs.map +0 -1
- package/dist/core/plugins/impl/ai-summary/ai-summary-plugin-api.d.mts +0 -18
- package/dist/core/plugins/impl/ai-summary/ai-summary-plugin-api.d.mts.map +0 -1
- package/dist/core/plugins/impl/ai-summary/ai-summary-plugin-api.mjs +0 -17
- package/dist/core/plugins/impl/ai-summary/ai-summary-plugin-api.mjs.map +0 -1
- package/dist/core/plugins/impl/ai-summary/plugin.d.mts +0 -6
- package/dist/core/plugins/impl/ai-summary/plugin.d.mts.map +0 -1
- package/dist/core/plugins/impl/ai-summary/plugin.mjs +0 -151
- package/dist/core/plugins/impl/ai-summary/plugin.mjs.map +0 -1
- package/dist/core/plugins/impl/errors/errors-plugin-api.d.mts +0 -17
- package/dist/core/plugins/impl/errors/errors-plugin-api.d.mts.map +0 -1
- package/dist/core/plugins/impl/errors/errors-plugin-api.mjs +0 -58
- package/dist/core/plugins/impl/errors/errors-plugin-api.mjs.map +0 -1
- package/dist/core/plugins/impl/errors/logic.d.mts +0 -15
- package/dist/core/plugins/impl/errors/logic.d.mts.map +0 -1
- package/dist/core/plugins/impl/errors/logic.mjs +0 -48
- package/dist/core/plugins/impl/errors/logic.mjs.map +0 -1
- package/dist/core/plugins/impl/errors/patches.d.mts +0 -13
- package/dist/core/plugins/impl/errors/patches.d.mts.map +0 -1
- package/dist/core/plugins/impl/errors/patches.mjs +0 -43
- package/dist/core/plugins/impl/errors/patches.mjs.map +0 -1
- package/dist/core/plugins/impl/errors/plugin.d.mts +0 -9
- package/dist/core/plugins/impl/errors/plugin.d.mts.map +0 -1
- package/dist/core/plugins/impl/errors/plugin.mjs +0 -91
- package/dist/core/plugins/impl/errors/plugin.mjs.map +0 -1
- package/dist/core/plugins/impl/page-events/page-events-plugin-api.d.mts +0 -19
- package/dist/core/plugins/impl/page-events/page-events-plugin-api.d.mts.map +0 -1
- package/dist/core/plugins/impl/page-events/page-events-plugin-api.mjs +0 -38
- package/dist/core/plugins/impl/page-events/page-events-plugin-api.mjs.map +0 -1
- package/dist/core/plugins/impl/page-events/plugin.d.mts +0 -6
- package/dist/core/plugins/impl/page-events/plugin.d.mts.map +0 -1
- package/dist/core/plugins/impl/page-events/plugin.mjs +0 -95
- package/dist/core/plugins/impl/page-events/plugin.mjs.map +0 -1
- package/dist/core/plugins/impl/rage-click/plugin.d.mts +0 -6
- package/dist/core/plugins/impl/rage-click/plugin.d.mts.map +0 -1
- package/dist/core/plugins/impl/rage-click/plugin.mjs +0 -38
- package/dist/core/plugins/impl/rage-click/plugin.mjs.map +0 -1
- package/dist/core/plugins/impl/rage-click/rage-click.layer.d.mts +0 -9
- package/dist/core/plugins/impl/rage-click/rage-click.layer.d.mts.map +0 -1
- package/dist/core/plugins/impl/rage-click/rage-click.layer.mjs +0 -35
- package/dist/core/plugins/impl/rage-click/rage-click.layer.mjs.map +0 -1
- package/dist/core/plugins/impl/rage-click/rage-click.service.d.mts +0 -16
- package/dist/core/plugins/impl/rage-click/rage-click.service.d.mts.map +0 -1
- package/dist/core/plugins/impl/rage-click/rage-click.service.mjs +0 -7
- package/dist/core/plugins/impl/rage-click/rage-click.service.mjs.map +0 -1
- package/dist/core/plugins/impl/rage-click/rage-click.test-layer.d.mts +0 -16
- package/dist/core/plugins/impl/rage-click/rage-click.test-layer.d.mts.map +0 -1
- package/dist/core/plugins/impl/rage-click/rage-click.test-layer.mjs +0 -18
- package/dist/core/plugins/impl/rage-click/rage-click.test-layer.mjs.map +0 -1
- package/dist/core/plugins/impl/replay/plugin.d.mts +0 -9
- package/dist/core/plugins/impl/replay/plugin.d.mts.map +0 -1
- package/dist/core/plugins/impl/replay/plugin.mjs +0 -83
- package/dist/core/plugins/impl/replay/plugin.mjs.map +0 -1
- package/dist/core/plugins/impl/replay/replay-plugin-api.d.mts +0 -18
- package/dist/core/plugins/impl/replay/replay-plugin-api.d.mts.map +0 -1
- package/dist/core/plugins/impl/replay/replay-plugin-api.mjs +0 -50
- package/dist/core/plugins/impl/replay/replay-plugin-api.mjs.map +0 -1
- package/dist/core/plugins/impl/server-tracing/plugin.d.mts +0 -13
- package/dist/core/plugins/impl/server-tracing/plugin.d.mts.map +0 -1
- package/dist/core/plugins/impl/server-tracing/plugin.mjs +0 -75
- package/dist/core/plugins/impl/server-tracing/plugin.mjs.map +0 -1
- package/dist/core/plugins/impl/server-tracing/server-tracing-plugin-api.d.mts +0 -16
- package/dist/core/plugins/impl/server-tracing/server-tracing-plugin-api.d.mts.map +0 -1
- package/dist/core/plugins/impl/server-tracing/server-tracing-plugin-api.mjs +0 -17
- package/dist/core/plugins/impl/server-tracing/server-tracing-plugin-api.mjs.map +0 -1
- package/dist/core/plugins/impl/server-tracing/tracing-logic.d.mts +0 -29
- package/dist/core/plugins/impl/server-tracing/tracing-logic.d.mts.map +0 -1
- package/dist/core/plugins/impl/server-tracing/tracing-logic.mjs +0 -55
- package/dist/core/plugins/impl/server-tracing/tracing-logic.mjs.map +0 -1
- package/dist/core/plugins/plugin-loader.d.mts +0 -75
- package/dist/core/plugins/plugin-loader.d.mts.map +0 -1
- package/dist/core/plugins/plugin-loader.mjs +0 -79
- package/dist/core/plugins/plugin-loader.mjs.map +0 -1
- package/dist/core/plugins/services/event-capture.d.mts +0 -12
- package/dist/core/plugins/services/event-capture.d.mts.map +0 -1
- package/dist/core/plugins/services/event-capture.layer.d.mts +0 -11
- package/dist/core/plugins/services/event-capture.layer.d.mts.map +0 -1
- package/dist/core/plugins/services/event-capture.layer.mjs +0 -79
- package/dist/core/plugins/services/event-capture.layer.mjs.map +0 -1
- package/dist/core/plugins/services/event-capture.mjs +0 -7
- package/dist/core/plugins/services/event-capture.mjs.map +0 -1
- package/dist/core/plugins/services/event-capture.test-layer.d.mts +0 -17
- package/dist/core/plugins/services/event-capture.test-layer.d.mts.map +0 -1
- package/dist/core/plugins/services/event-capture.test-layer.mjs +0 -21
- package/dist/core/plugins/services/event-capture.test-layer.mjs.map +0 -1
- package/dist/core/plugins/services/plugin-config.d.mts +0 -11
- package/dist/core/plugins/services/plugin-config.d.mts.map +0 -1
- package/dist/core/plugins/services/plugin-config.mjs +0 -7
- package/dist/core/plugins/services/plugin-config.mjs.map +0 -1
- package/dist/core/plugins/services/plugin-config.test-layer.d.mts +0 -60
- package/dist/core/plugins/services/plugin-config.test-layer.d.mts.map +0 -1
- package/dist/core/plugins/services/plugin-config.test-layer.mjs +0 -8
- package/dist/core/plugins/services/plugin-config.test-layer.mjs.map +0 -1
- package/dist/core/plugins/services/plugin-logger.d.mts +0 -14
- package/dist/core/plugins/services/plugin-logger.d.mts.map +0 -1
- package/dist/core/plugins/services/plugin-logger.mjs +0 -7
- package/dist/core/plugins/services/plugin-logger.mjs.map +0 -1
- package/dist/core/plugins/services/plugin-logger.test-layer.d.mts +0 -18
- package/dist/core/plugins/services/plugin-logger.test-layer.d.mts.map +0 -1
- package/dist/core/plugins/services/plugin-logger.test-layer.mjs +0 -28
- package/dist/core/plugins/services/plugin-logger.test-layer.mjs.map +0 -1
- package/dist/core/plugins/services/plugin-runtime.d.mts +0 -10
- package/dist/core/plugins/services/plugin-runtime.d.mts.map +0 -1
- package/dist/core/plugins/services/plugin-runtime.mjs +0 -7
- package/dist/core/plugins/services/plugin-runtime.mjs.map +0 -1
- package/dist/core/plugins/services/plugin-runtime.test-layer.d.mts +0 -16
- package/dist/core/plugins/services/plugin-runtime.test-layer.d.mts.map +0 -1
- package/dist/core/plugins/services/plugin-runtime.test-layer.mjs +0 -21
- package/dist/core/plugins/services/plugin-runtime.test-layer.mjs.map +0 -1
- package/dist/core/plugins/services/session-info.d.mts +0 -11
- package/dist/core/plugins/services/session-info.d.mts.map +0 -1
- package/dist/core/plugins/services/session-info.mjs +0 -7
- package/dist/core/plugins/services/session-info.mjs.map +0 -1
- package/dist/core/plugins/services/session-info.test-layer.d.mts +0 -18
- package/dist/core/plugins/services/session-info.test-layer.d.mts.map +0 -1
- package/dist/core/plugins/services/session-info.test-layer.mjs +0 -20
- package/dist/core/plugins/services/session-info.test-layer.mjs.map +0 -1
- package/dist/core/runtime/config.d.mts +0 -14
- package/dist/core/runtime/config.d.mts.map +0 -1
- package/dist/core/runtime/config.mjs +0 -33
- package/dist/core/runtime/config.mjs.map +0 -1
- package/dist/core/runtime/context.d.mts +0 -50
- package/dist/core/runtime/context.d.mts.map +0 -1
- package/dist/core/runtime/context.mjs +0 -46
- package/dist/core/runtime/context.mjs.map +0 -1
- package/dist/core/runtime/ingest-target.d.mts +0 -10
- package/dist/core/runtime/ingest-target.d.mts.map +0 -1
- package/dist/core/runtime/ingest-target.mjs +0 -15
- package/dist/core/runtime/ingest-target.mjs.map +0 -1
- package/dist/core/runtime/native-fetch.d.mts +0 -32
- package/dist/core/runtime/native-fetch.d.mts.map +0 -1
- package/dist/core/runtime/native-fetch.mjs +0 -49
- package/dist/core/runtime/native-fetch.mjs.map +0 -1
- package/dist/core/schemas.d.mts +0 -26
- package/dist/core/schemas.d.mts.map +0 -1
- package/dist/core/schemas.mjs +0 -1
- package/dist/effect/errors.d.mts +0 -22
- package/dist/effect/errors.d.mts.map +0 -1
- package/dist/effect/errors.mjs +0 -17
- package/dist/effect/errors.mjs.map +0 -1
- package/dist/effect/layers/circuit-breaker.layer.d.mts +0 -9
- package/dist/effect/layers/circuit-breaker.layer.d.mts.map +0 -1
- package/dist/effect/layers/circuit-breaker.layer.mjs +0 -9
- package/dist/effect/layers/circuit-breaker.layer.mjs.map +0 -1
- package/dist/effect/layers/circuit-breaker.layer.test-layer.d.mts +0 -18
- package/dist/effect/layers/circuit-breaker.layer.test-layer.d.mts.map +0 -1
- package/dist/effect/layers/circuit-breaker.layer.test-layer.mjs +0 -43
- package/dist/effect/layers/circuit-breaker.layer.test-layer.mjs.map +0 -1
- package/dist/effect/layers/config.layer.d.mts +0 -13
- package/dist/effect/layers/config.layer.d.mts.map +0 -1
- package/dist/effect/layers/config.layer.mjs +0 -21
- package/dist/effect/layers/config.layer.mjs.map +0 -1
- package/dist/effect/layers/context.layer.d.mts +0 -12
- package/dist/effect/layers/context.layer.d.mts.map +0 -1
- package/dist/effect/layers/context.layer.mjs +0 -14
- package/dist/effect/layers/context.layer.mjs.map +0 -1
- package/dist/effect/layers/http.layer.d.mts +0 -21
- package/dist/effect/layers/http.layer.d.mts.map +0 -1
- package/dist/effect/layers/http.layer.mjs +0 -118
- package/dist/effect/layers/http.layer.mjs.map +0 -1
- package/dist/effect/layers/queue.layer.d.mts +0 -31
- package/dist/effect/layers/queue.layer.d.mts.map +0 -1
- package/dist/effect/layers/queue.layer.mjs +0 -257
- package/dist/effect/layers/queue.layer.mjs.map +0 -1
- package/dist/effect/layers/queue.layer.test-layer.d.mts +0 -19
- package/dist/effect/layers/queue.layer.test-layer.d.mts.map +0 -1
- package/dist/effect/layers/queue.layer.test-layer.mjs +0 -44
- package/dist/effect/layers/queue.layer.test-layer.mjs.map +0 -1
- package/dist/effect/layers/session.layer.d.mts +0 -34
- package/dist/effect/layers/session.layer.d.mts.map +0 -1
- package/dist/effect/layers/session.layer.mjs +0 -127
- package/dist/effect/layers/session.layer.mjs.map +0 -1
- package/dist/effect/layers/storage.layer.d.mts +0 -50
- package/dist/effect/layers/storage.layer.d.mts.map +0 -1
- package/dist/effect/layers/storage.layer.mjs +0 -180
- package/dist/effect/layers/storage.layer.mjs.map +0 -1
- package/dist/effect/layers/test-utils.d.mts +0 -19
- package/dist/effect/layers/test-utils.d.mts.map +0 -1
- package/dist/effect/layers/test-utils.mjs +0 -32
- package/dist/effect/layers/test-utils.mjs.map +0 -1
- package/dist/effect/runtime-services.d.mts +0 -23
- package/dist/effect/runtime-services.d.mts.map +0 -1
- package/dist/effect/runtime-services.mjs +0 -79
- package/dist/effect/runtime-services.mjs.map +0 -1
- package/dist/effect/tags.d.mts +0 -58
- package/dist/effect/tags.d.mts.map +0 -1
- package/dist/effect/tags.mjs +0 -7
- package/dist/effect/tags.mjs.map +0 -1
- package/dist/hooks/use-runtime-and-plugins.d.mts +0 -7
- package/dist/hooks/use-runtime-and-plugins.d.mts.map +0 -1
- package/dist/hooks/use-runtime-and-plugins.mjs +0 -121
- package/dist/hooks/use-runtime-and-plugins.mjs.map +0 -1
- package/dist/hooks/use-session.d.mts +0 -40
- package/dist/hooks/use-session.d.mts.map +0 -1
- package/dist/hooks/use-session.mjs +0 -96
- package/dist/hooks/use-session.mjs.map +0 -1
- package/dist/package.mjs +0 -103
- package/dist/package.mjs.map +0 -1
- package/dist/server/auth.d.mts +0 -15
- package/dist/server/auth.d.mts.map +0 -1
- package/dist/server/auth.mjs +0 -45
- package/dist/server/auth.mjs.map +0 -1
- package/dist/server/capture.d.mts +0 -34
- package/dist/server/capture.d.mts.map +0 -1
- package/dist/server/capture.mjs +0 -172
- package/dist/server/capture.mjs.map +0 -1
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { dynamicRegistry } from "../events/event-registry.mjs";
|
|
2
|
-
import { EventCaptureLive } from "./services/event-capture.layer.mjs";
|
|
3
|
-
import { forkWithSDK } from "../../effect/runtime-services.mjs";
|
|
4
|
-
import { PluginConfig } from "./services/plugin-config.mjs";
|
|
5
|
-
import { PluginLogger } from "./services/plugin-logger.mjs";
|
|
6
|
-
import { PluginRuntime } from "./services/plugin-runtime.mjs";
|
|
7
|
-
import { SessionInfo } from "./services/session-info.mjs";
|
|
8
|
-
import { Effect, Layer } from "effect";
|
|
9
|
-
import { PLUGIN_MANIFEST } from "@interfere/types/sdk/plugins/manifest";
|
|
10
|
-
|
|
11
|
-
//#region src/core/plugins/plugin-loader.ts
|
|
12
|
-
const SESSION_ID_STORAGE_KEY = "__interfere_session_id__";
|
|
13
|
-
const getSessionIdSync = () => {
|
|
14
|
-
if (typeof window === "undefined") return null;
|
|
15
|
-
try {
|
|
16
|
-
return window.localStorage?.getItem(SESSION_ID_STORAGE_KEY) ?? null;
|
|
17
|
-
} catch {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
const baseServicesLayerFor = (config) => Layer.mergeAll(Layer.succeed(PluginRuntime, PluginRuntime.of({ fork: (eff) => {
|
|
22
|
-
forkWithSDK(eff);
|
|
23
|
-
} })), Layer.succeed(SessionInfo, SessionInfo.of({
|
|
24
|
-
getSessionId: Effect.sync(getSessionIdSync),
|
|
25
|
-
getSessionIdSync
|
|
26
|
-
})), Layer.succeed(PluginConfig, PluginConfig.of({ config })), Layer.succeed(PluginLogger, PluginLogger.of({
|
|
27
|
-
trace: (message) => Effect.logTrace(message),
|
|
28
|
-
debug: (message) => Effect.logDebug(message),
|
|
29
|
-
info: (message) => Effect.logInfo(message),
|
|
30
|
-
warn: (message) => Effect.logWarning(message),
|
|
31
|
-
error: (message) => Effect.logError(message)
|
|
32
|
-
})), EventCaptureLive);
|
|
33
|
-
const builtinPluginImports = {
|
|
34
|
-
errors: () => import("./impl/errors/plugin.mjs"),
|
|
35
|
-
replay: () => import("./impl/replay/plugin.mjs"),
|
|
36
|
-
rageClick: () => import("./impl/rage-click/plugin.mjs"),
|
|
37
|
-
aiSummary: () => import("./impl/ai-summary/plugin.mjs"),
|
|
38
|
-
pageEvents: () => import("./impl/page-events/plugin.mjs"),
|
|
39
|
-
serverTracing: () => import("./impl/server-tracing/plugin.mjs")
|
|
40
|
-
};
|
|
41
|
-
const isPluginKey = (key) => PLUGIN_MANIFEST.some(({ name }) => name === key);
|
|
42
|
-
const loadAndSetupPluginsEffect = Effect.fn("loadAndSetupPluginsEffect")(function* (config, userPlugins) {
|
|
43
|
-
const baseLayer = baseServicesLayerFor(config);
|
|
44
|
-
const cleanups = [];
|
|
45
|
-
const apis = {};
|
|
46
|
-
const keys = /* @__PURE__ */ new Set();
|
|
47
|
-
const registerEvents = (name, events) => Effect.gen(function* () {
|
|
48
|
-
if (!(events && events.length > 0)) return;
|
|
49
|
-
yield* Effect.logTrace(`Registering ${events.length} events for plugin '${name}'`).pipe(Effect.annotateLogs({
|
|
50
|
-
plugin: name,
|
|
51
|
-
eventCount: events.length
|
|
52
|
-
}));
|
|
53
|
-
for (const eventDef of events) dynamicRegistry.registerDefinition(eventDef);
|
|
54
|
-
});
|
|
55
|
-
const setupPlugin = Effect.fn("setupPlugin")(function* (plugin) {
|
|
56
|
-
yield* registerEvents(plugin.name, plugin.events);
|
|
57
|
-
const result = yield* plugin.load(baseLayer);
|
|
58
|
-
if (result.cleanup) cleanups.push(result.cleanup);
|
|
59
|
-
if (result.api) apis[plugin.key] = result.api;
|
|
60
|
-
if (isPluginKey(plugin.key)) keys.add(plugin.key);
|
|
61
|
-
});
|
|
62
|
-
const enabledBuiltinKeys = Object.entries(config.features).filter(([_, enabled]) => enabled).map(([key]) => key).filter(isPluginKey);
|
|
63
|
-
const loadBuiltin = Effect.fn("loadBuiltin")(function* (key) {
|
|
64
|
-
yield* setupPlugin((yield* Effect.promise(() => builtinPluginImports[key]())).default);
|
|
65
|
-
});
|
|
66
|
-
const loadUser = Effect.fn("loadUser")(function* () {
|
|
67
|
-
if (!userPlugins) return;
|
|
68
|
-
yield* Effect.all(userPlugins.map((p) => setupPlugin(p)), { concurrency: "unbounded" });
|
|
69
|
-
});
|
|
70
|
-
yield* Effect.all([Effect.all(enabledBuiltinKeys.map((k) => loadBuiltin(k)), { concurrency: "unbounded" }), loadUser()], { concurrency: "unbounded" });
|
|
71
|
-
return {
|
|
72
|
-
cleanups: Object.freeze([...cleanups]),
|
|
73
|
-
apis: Object.freeze({ ...apis }),
|
|
74
|
-
keys
|
|
75
|
-
};
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
//#endregion
|
|
79
|
-
export { loadAndSetupPluginsEffect };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-loader.mjs","names":[],"sources":["../../../src/core/plugins/plugin-loader.ts"],"sourcesContent":["import type { Config } from \"@interfere/types/sdk/config\";\nimport type { PluginKey } from \"@interfere/types/sdk/plugins/lib/types\";\nimport { PLUGIN_MANIFEST } from \"@interfere/types/sdk/plugins/manifest\";\n\nimport { Effect, Layer } from \"effect\";\n\nimport { forkWithSDK } from \"../../effect/runtime-services.js\";\nimport { dynamicRegistry } from \"../events/event-registry.js\";\nimport type { AnyEventDefinition } from \"../events/plugin-event-types.js\";\nimport type { PluginDef } from \"./define-plugin.js\";\nimport { EventCaptureLive } from \"./services/event-capture.layer.js\";\nimport { PluginConfig } from \"./services/plugin-config.js\";\nimport { PluginLogger } from \"./services/plugin-logger.js\";\nimport { PluginRuntime } from \"./services/plugin-runtime.js\";\nimport { SessionInfo } from \"./services/session-info.js\";\n\nexport type PluginCleanup = () => void;\n\nexport interface LoadedPlugins {\n readonly apis: Readonly<Record<string, unknown>>;\n readonly cleanups: readonly PluginCleanup[];\n readonly keys: ReadonlySet<PluginKey>;\n}\n\nconst SESSION_ID_STORAGE_KEY = \"__interfere_session_id__\";\n\nconst getSessionIdSync = (): string | null => {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n try {\n return window.localStorage?.getItem(SESSION_ID_STORAGE_KEY) ?? null;\n } catch {\n return null;\n }\n};\n\nconst baseServicesLayerFor = (config: Config) =>\n Layer.mergeAll(\n Layer.succeed(\n PluginRuntime,\n PluginRuntime.of({\n fork: (eff) => {\n forkWithSDK(eff);\n },\n })\n ),\n Layer.succeed(\n SessionInfo,\n SessionInfo.of({\n getSessionId: Effect.sync(getSessionIdSync),\n getSessionIdSync,\n })\n ),\n Layer.succeed(PluginConfig, PluginConfig.of({ config })),\n Layer.succeed(\n PluginLogger,\n PluginLogger.of({\n trace: (message) => Effect.logTrace(message),\n debug: (message) => Effect.logDebug(message),\n info: (message) => Effect.logInfo(message),\n warn: (message) => Effect.logWarning(message),\n error: (message) => Effect.logError(message),\n })\n ),\n EventCaptureLive\n );\n\nconst builtinPluginImports: Record<\n PluginKey,\n () => Promise<{ default: PluginDef<PluginKey> }>\n> = {\n errors: () => import(\"./impl/errors/plugin.js\"),\n replay: () => import(\"./impl/replay/plugin.js\"),\n rageClick: () => import(\"./impl/rage-click/plugin.js\"),\n aiSummary: () => import(\"./impl/ai-summary/plugin.js\"),\n pageEvents: () => import(\"./impl/page-events/plugin.js\"),\n serverTracing: () => import(\"./impl/server-tracing/plugin.js\"),\n};\n\nconst isPluginKey = (key: string): key is PluginKey =>\n PLUGIN_MANIFEST.some(({ name }) => name === key);\n\nexport const loadAndSetupPluginsEffect = Effect.fn(\"loadAndSetupPluginsEffect\")(\n function* (config: Config, userPlugins?: readonly PluginDef[]) {\n const baseLayer = baseServicesLayerFor(config);\n\n const cleanups: PluginCleanup[] = [];\n const apis: Record<string, unknown> = {};\n const keys = new Set<PluginKey>();\n\n const registerEvents = (\n name: string,\n events?: readonly AnyEventDefinition[]\n ) =>\n Effect.gen(function* () {\n if (!(events && events.length > 0)) {\n return;\n }\n\n yield* Effect.logTrace(\n `Registering ${events.length} events for plugin '${name}'`\n ).pipe(\n Effect.annotateLogs({ plugin: name, eventCount: events.length })\n );\n\n for (const eventDef of events) {\n dynamicRegistry.registerDefinition(eventDef);\n }\n });\n\n const setupPlugin = Effect.fn(\"setupPlugin\")(function* (plugin: PluginDef) {\n yield* registerEvents(plugin.name, plugin.events);\n\n const result = yield* plugin.load(baseLayer);\n\n if (result.cleanup) {\n cleanups.push(result.cleanup);\n }\n\n if (result.api) {\n apis[plugin.key] = result.api;\n }\n\n if (isPluginKey(plugin.key)) {\n keys.add(plugin.key);\n }\n });\n\n const enabledBuiltinKeys = Object.entries(config.features)\n .filter(([_, enabled]) => enabled)\n .map(([key]) => key)\n .filter(isPluginKey);\n\n const loadBuiltin = Effect.fn(\"loadBuiltin\")(function* (key: PluginKey) {\n const mod = yield* Effect.promise(() => builtinPluginImports[key]());\n yield* setupPlugin(mod.default);\n });\n\n const loadUser = Effect.fn(\"loadUser\")(function* () {\n if (!userPlugins) {\n return;\n }\n\n yield* Effect.all(\n userPlugins.map((p) => setupPlugin(p)),\n {\n concurrency: \"unbounded\",\n }\n );\n });\n\n yield* Effect.all(\n [\n Effect.all(\n enabledBuiltinKeys.map((k) => loadBuiltin(k)),\n {\n concurrency: \"unbounded\",\n }\n ),\n loadUser(),\n ],\n { concurrency: \"unbounded\" }\n );\n\n return {\n cleanups: Object.freeze([...cleanups]),\n apis: Object.freeze({ ...apis }),\n keys,\n };\n }\n);\n"],"mappings":";;;;;;;;;;;AAwBA,MAAM,yBAAyB;AAE/B,MAAM,yBAAwC;AAC5C,KAAI,OAAO,WAAW,YACpB,QAAO;AAGT,KAAI;AACF,SAAO,OAAO,cAAc,QAAQ,uBAAuB,IAAI;SACzD;AACN,SAAO;;;AAIX,MAAM,wBAAwB,WAC5B,MAAM,SACJ,MAAM,QACJ,eACA,cAAc,GAAG,EACf,OAAO,QAAQ;AACb,aAAY,IAAI;GAEnB,CAAC,CACH,EACD,MAAM,QACJ,aACA,YAAY,GAAG;CACb,cAAc,OAAO,KAAK,iBAAiB;CAC3C;CACD,CAAC,CACH,EACD,MAAM,QAAQ,cAAc,aAAa,GAAG,EAAE,QAAQ,CAAC,CAAC,EACxD,MAAM,QACJ,cACA,aAAa,GAAG;CACd,QAAQ,YAAY,OAAO,SAAS,QAAQ;CAC5C,QAAQ,YAAY,OAAO,SAAS,QAAQ;CAC5C,OAAO,YAAY,OAAO,QAAQ,QAAQ;CAC1C,OAAO,YAAY,OAAO,WAAW,QAAQ;CAC7C,QAAQ,YAAY,OAAO,SAAS,QAAQ;CAC7C,CAAC,CACH,EACD,iBACD;AAEH,MAAM,uBAGF;CACF,cAAc,OAAO;CACrB,cAAc,OAAO;CACrB,iBAAiB,OAAO;CACxB,iBAAiB,OAAO;CACxB,kBAAkB,OAAO;CACzB,qBAAqB,OAAO;CAC7B;AAED,MAAM,eAAe,QACnB,gBAAgB,MAAM,EAAE,WAAW,SAAS,IAAI;AAElD,MAAa,4BAA4B,OAAO,GAAG,4BAA4B,CAC7E,WAAW,QAAgB,aAAoC;CAC7D,MAAM,YAAY,qBAAqB,OAAO;CAE9C,MAAM,WAA4B,EAAE;CACpC,MAAM,OAAgC,EAAE;CACxC,MAAM,uBAAO,IAAI,KAAgB;CAEjC,MAAM,kBACJ,MACA,WAEA,OAAO,IAAI,aAAa;AACtB,MAAI,EAAE,UAAU,OAAO,SAAS,GAC9B;AAGF,SAAO,OAAO,SACZ,eAAe,OAAO,OAAO,sBAAsB,KAAK,GACzD,CAAC,KACA,OAAO,aAAa;GAAE,QAAQ;GAAM,YAAY,OAAO;GAAQ,CAAC,CACjE;AAED,OAAK,MAAM,YAAY,OACrB,iBAAgB,mBAAmB,SAAS;GAE9C;CAEJ,MAAM,cAAc,OAAO,GAAG,cAAc,CAAC,WAAW,QAAmB;AACzE,SAAO,eAAe,OAAO,MAAM,OAAO,OAAO;EAEjD,MAAM,SAAS,OAAO,OAAO,KAAK,UAAU;AAE5C,MAAI,OAAO,QACT,UAAS,KAAK,OAAO,QAAQ;AAG/B,MAAI,OAAO,IACT,MAAK,OAAO,OAAO,OAAO;AAG5B,MAAI,YAAY,OAAO,IAAI,CACzB,MAAK,IAAI,OAAO,IAAI;GAEtB;CAEF,MAAM,qBAAqB,OAAO,QAAQ,OAAO,SAAS,CACvD,QAAQ,CAAC,GAAG,aAAa,QAAQ,CACjC,KAAK,CAAC,SAAS,IAAI,CACnB,OAAO,YAAY;CAEtB,MAAM,cAAc,OAAO,GAAG,cAAc,CAAC,WAAW,KAAgB;AAEtE,SAAO,aADK,OAAO,OAAO,cAAc,qBAAqB,MAAM,CAAC,EAC7C,QAAQ;GAC/B;CAEF,MAAM,WAAW,OAAO,GAAG,WAAW,CAAC,aAAa;AAClD,MAAI,CAAC,YACH;AAGF,SAAO,OAAO,IACZ,YAAY,KAAK,MAAM,YAAY,EAAE,CAAC,EACtC,EACE,aAAa,aACd,CACF;GACD;AAEF,QAAO,OAAO,IACZ,CACE,OAAO,IACL,mBAAmB,KAAK,MAAM,YAAY,EAAE,CAAC,EAC7C,EACE,aAAa,aACd,CACF,EACD,UAAU,CACX,EACD,EAAE,aAAa,aAAa,CAC7B;AAED,QAAO;EACL,UAAU,OAAO,OAAO,CAAC,GAAG,SAAS,CAAC;EACtC,MAAM,OAAO,OAAO,EAAE,GAAG,MAAM,CAAC;EAChC;EACD;EAEJ"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { EventPayload } from "../../events/event-registry.mjs";
|
|
2
|
-
import { Context, Effect } from "effect";
|
|
3
|
-
import { EventType } from "@interfere/types/sdk/plugins/lib/types";
|
|
4
|
-
|
|
5
|
-
//#region src/core/plugins/services/event-capture.d.ts
|
|
6
|
-
interface EventCaptureService {
|
|
7
|
-
readonly capture: <T extends EventType>(type: T, payload: EventPayload<T>) => Effect.Effect<void>;
|
|
8
|
-
}
|
|
9
|
-
declare const EventCapture_base: Context.TagClass<EventCapture, "@interfere/plugins/EventCapture", EventCaptureService>;
|
|
10
|
-
declare class EventCapture extends EventCapture_base {}
|
|
11
|
-
//#endregion
|
|
12
|
-
export { EventCapture };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-capture.d.mts","names":[],"sources":["../../../../src/core/plugins/services/event-capture.ts"],"mappings":";;;;;UAMU,mBAAA;EAAA,SACC,OAAA,aAAoB,SAAA,EAC3B,IAAA,EAAM,CAAA,EACN,OAAA,EAAS,YAAA,CAAa,CAAA,MACnB,MAAA,CAAO,MAAA;AAAA;AAAA,cAAM,iBAAA;cAGP,YAAA,SAAqB,iBAAA"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { EventCapture } from "./event-capture.mjs";
|
|
2
|
-
import { ConfigTag } from "../../../effect/tags.mjs";
|
|
3
|
-
import { QueueServiceTag } from "../../../effect/layers/queue.layer.mjs";
|
|
4
|
-
import { ContextServiceTag } from "../../../effect/layers/context.layer.mjs";
|
|
5
|
-
import { SessionServiceTag } from "../../../effect/layers/session.layer.mjs";
|
|
6
|
-
import { Layer } from "effect";
|
|
7
|
-
|
|
8
|
-
//#region src/core/plugins/services/event-capture.layer.d.ts
|
|
9
|
-
declare const EventCaptureLive: Layer.Layer<EventCapture, never, QueueServiceTag | ConfigTag | ContextServiceTag | SessionServiceTag>;
|
|
10
|
-
//#endregion
|
|
11
|
-
export { EventCaptureLive };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-capture.layer.d.mts","names":[],"sources":["../../../../src/core/plugins/services/event-capture.layer.ts"],"mappings":";;;;;;;;cAmCa,gBAAA,EAAgB,KAAA,CAAA,KAAA,CAAA,YAAA,SAAA,eAAA,GAAA,SAAA,GAAA,iBAAA,GAAA,iBAAA"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { EventCapture } from "./event-capture.mjs";
|
|
2
|
-
import { ValidationError } from "../../../effect/errors.mjs";
|
|
3
|
-
import { ContextServiceTag } from "../../../effect/layers/context.layer.mjs";
|
|
4
|
-
import { ConfigTag } from "../../../effect/tags.mjs";
|
|
5
|
-
import { QueueServiceTag } from "../../../effect/layers/queue.layer.mjs";
|
|
6
|
-
import { SessionServiceTag } from "../../../effect/layers/session.layer.mjs";
|
|
7
|
-
import { dynamicRegistry } from "../../events/event-registry.mjs";
|
|
8
|
-
import { Effect, Layer } from "effect";
|
|
9
|
-
import { v7 } from "uuid";
|
|
10
|
-
|
|
11
|
-
//#region src/core/plugins/services/event-capture.layer.ts
|
|
12
|
-
function enrichPayload(basePayload, properties) {
|
|
13
|
-
if (typeof basePayload === "object" && basePayload !== null) {
|
|
14
|
-
const merged = {
|
|
15
|
-
...basePayload.properties ?? {},
|
|
16
|
-
...properties
|
|
17
|
-
};
|
|
18
|
-
return {
|
|
19
|
-
...basePayload,
|
|
20
|
-
properties: merged
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
return { properties };
|
|
24
|
-
}
|
|
25
|
-
const EventCaptureLive = Layer.effect(EventCapture, Effect.gen(function* () {
|
|
26
|
-
const queue = yield* QueueServiceTag;
|
|
27
|
-
const context = yield* ContextServiceTag;
|
|
28
|
-
const config = yield* ConfigTag;
|
|
29
|
-
const session = yield* SessionServiceTag;
|
|
30
|
-
const buildEnvelope = (type, payload) => Effect.gen(function* () {
|
|
31
|
-
yield* session.ensureWindowId();
|
|
32
|
-
yield* session.updateActivity();
|
|
33
|
-
const sessionIdOpt = yield* session.getSessionId();
|
|
34
|
-
const sessionId = sessionIdOpt._tag === "Some" ? sessionIdOpt.value : null;
|
|
35
|
-
return {
|
|
36
|
-
v: 0,
|
|
37
|
-
...config.metadata,
|
|
38
|
-
clientTs: Date.now(),
|
|
39
|
-
sessionId,
|
|
40
|
-
uuid: v7(),
|
|
41
|
-
type,
|
|
42
|
-
payload
|
|
43
|
-
};
|
|
44
|
-
});
|
|
45
|
-
const capture = (type, payload) => Effect.gen(function* () {
|
|
46
|
-
const handler = dynamicRegistry.get(type);
|
|
47
|
-
if (!handler) {
|
|
48
|
-
const env = yield* buildEnvelope(type, payload);
|
|
49
|
-
yield* queue.add(env);
|
|
50
|
-
yield* Effect.logTrace("Captured event with no handler", {
|
|
51
|
-
type,
|
|
52
|
-
envelopeId: env.uuid,
|
|
53
|
-
path: "fast"
|
|
54
|
-
});
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
const validated = yield* Effect.sync(() => handler.schema.safeParse(payload)).pipe(Effect.flatMap((result) => result.success === true ? Effect.succeed(result.data) : Effect.fail(new ValidationError({
|
|
58
|
-
message: "Invalid payload",
|
|
59
|
-
payload,
|
|
60
|
-
issues: result.error?.issues
|
|
61
|
-
}))), Effect.withSpan("capture.validate", { attributes: { type } }));
|
|
62
|
-
const transformed = "transform" in handler && typeof handler.transform === "function" ? handler.transform(validated) : validated;
|
|
63
|
-
const env = yield* buildEnvelope(type, handler.enrich === true ? yield* context.getOnce().pipe(Effect.map((properties) => enrichPayload(transformed, properties)), Effect.withSpan("capture.enrich", { attributes: { type } })) : transformed);
|
|
64
|
-
yield* queue.add(env);
|
|
65
|
-
yield* Effect.logTrace("Captured event with handler", {
|
|
66
|
-
type,
|
|
67
|
-
envelopeId: env.uuid,
|
|
68
|
-
path: "full"
|
|
69
|
-
});
|
|
70
|
-
}).pipe(Effect.withSpan("capture.full", { attributes: { type } }), Effect.catchTag("ValidationError", (err) => Effect.logError("Invalid event payload", {
|
|
71
|
-
type,
|
|
72
|
-
payload,
|
|
73
|
-
issues: err.issues
|
|
74
|
-
}).pipe(Effect.asVoid)), Effect.catchAllCause((cause) => Effect.logError("Event capture failed", cause).pipe(Effect.asVoid)));
|
|
75
|
-
return EventCapture.of({ capture });
|
|
76
|
-
}));
|
|
77
|
-
|
|
78
|
-
//#endregion
|
|
79
|
-
export { EventCaptureLive };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-capture.layer.mjs","names":["uuidv7"],"sources":["../../../../src/core/plugins/services/event-capture.layer.ts"],"sourcesContent":["import type { Envelope } from \"@interfere/types/sdk/envelope\";\nimport type { EventType } from \"@interfere/types/sdk/plugins/lib/types\";\n\nimport { Effect, Layer } from \"effect\";\nimport { v7 as uuidv7 } from \"uuid\";\n\nimport { ValidationError } from \"../../../effect/errors.js\";\nimport { ContextServiceTag } from \"../../../effect/layers/context.layer.js\";\nimport { QueueServiceTag } from \"../../../effect/layers/queue.layer.js\";\nimport { SessionServiceTag } from \"../../../effect/layers/session.layer.js\";\nimport { ConfigTag } from \"../../../effect/tags.js\";\nimport {\n dynamicRegistry,\n type EventPayload,\n} from \"../../events/event-registry.js\";\nimport { EventCapture } from \"./event-capture.js\";\n\ntype EnrichedPayload<T> =\n T extends Record<string, unknown>\n ? T & { properties?: Record<string, unknown> }\n : { properties: Record<string, unknown> };\n\nfunction enrichPayload<T>(\n basePayload: T,\n properties: Record<string, unknown>\n): EnrichedPayload<T> {\n if (typeof basePayload === \"object\" && basePayload !== null) {\n const existing = (basePayload as EnrichedPayload<T>).properties;\n const merged = { ...(existing ?? {}), ...properties };\n return { ...basePayload, properties: merged } as EnrichedPayload<T>;\n }\n\n return { properties } as EnrichedPayload<T>;\n}\n\nexport const EventCaptureLive = Layer.effect(\n EventCapture,\n Effect.gen(function* () {\n const queue = yield* QueueServiceTag;\n const context = yield* ContextServiceTag;\n const config = yield* ConfigTag;\n const session = yield* SessionServiceTag;\n\n const buildEnvelope = <T extends EventType>(\n type: T,\n payload: EventPayload<T>\n ): Effect.Effect<Envelope> =>\n Effect.gen(function* () {\n yield* session.ensureWindowId();\n yield* session.updateActivity();\n\n const sessionIdOpt = yield* session.getSessionId();\n const sessionId =\n sessionIdOpt._tag === \"Some\" ? sessionIdOpt.value : null;\n\n return {\n v: 0 as const,\n ...config.metadata,\n clientTs: Date.now(),\n sessionId,\n uuid: uuidv7(),\n type,\n payload,\n } as Envelope;\n });\n\n const capture = <T extends EventType>(type: T, payload: EventPayload<T>) =>\n Effect.gen(function* () {\n const handler = dynamicRegistry.get(type);\n\n if (!handler) {\n const env = yield* buildEnvelope(type, payload);\n yield* queue.add(env);\n yield* Effect.logTrace(\"Captured event with no handler\", {\n type,\n envelopeId: env.uuid,\n path: \"fast\",\n });\n return;\n }\n\n const validated = yield* Effect.sync(() =>\n handler.schema.safeParse(payload)\n ).pipe(\n Effect.flatMap((result) =>\n result.success === true\n ? Effect.succeed((result as { data: unknown }).data)\n : Effect.fail(\n new ValidationError({\n message: \"Invalid payload\",\n payload,\n issues: (result as { error?: { issues?: unknown } }).error\n ?.issues,\n })\n )\n ),\n Effect.withSpan(\"capture.validate\", { attributes: { type } })\n );\n\n const transformed =\n \"transform\" in handler && typeof handler.transform === \"function\"\n ? (handler.transform as (input: unknown) => unknown)(validated)\n : validated;\n\n const finalPayload =\n handler.enrich === true\n ? yield* context.getOnce().pipe(\n Effect.map((properties) =>\n enrichPayload(transformed, properties)\n ),\n Effect.withSpan(\"capture.enrich\", { attributes: { type } })\n )\n : transformed;\n\n const env = yield* buildEnvelope(type, finalPayload as EventPayload<T>);\n yield* queue.add(env);\n\n yield* Effect.logTrace(\"Captured event with handler\", {\n type,\n envelopeId: env.uuid,\n path: \"full\",\n });\n }).pipe(\n Effect.withSpan(\"capture.full\", { attributes: { type } }),\n Effect.catchTag(\"ValidationError\", (err) =>\n Effect.logError(\"Invalid event payload\", {\n type,\n payload,\n issues: err.issues,\n }).pipe(Effect.asVoid)\n ),\n Effect.catchAllCause((cause) =>\n Effect.logError(\"Event capture failed\", cause).pipe(Effect.asVoid)\n )\n );\n\n return EventCapture.of({ capture });\n })\n);\n"],"mappings":";;;;;;;;;;;AAsBA,SAAS,cACP,aACA,YACoB;AACpB,KAAI,OAAO,gBAAgB,YAAY,gBAAgB,MAAM;EAE3D,MAAM,SAAS;GAAE,GADC,YAAmC,cACpB,EAAE;GAAG,GAAG;GAAY;AACrD,SAAO;GAAE,GAAG;GAAa,YAAY;GAAQ;;AAG/C,QAAO,EAAE,YAAY;;AAGvB,MAAa,mBAAmB,MAAM,OACpC,cACA,OAAO,IAAI,aAAa;CACtB,MAAM,QAAQ,OAAO;CACrB,MAAM,UAAU,OAAO;CACvB,MAAM,SAAS,OAAO;CACtB,MAAM,UAAU,OAAO;CAEvB,MAAM,iBACJ,MACA,YAEA,OAAO,IAAI,aAAa;AACtB,SAAO,QAAQ,gBAAgB;AAC/B,SAAO,QAAQ,gBAAgB;EAE/B,MAAM,eAAe,OAAO,QAAQ,cAAc;EAClD,MAAM,YACJ,aAAa,SAAS,SAAS,aAAa,QAAQ;AAEtD,SAAO;GACL,GAAG;GACH,GAAG,OAAO;GACV,UAAU,KAAK,KAAK;GACpB;GACA,MAAMA,IAAQ;GACd;GACA;GACD;GACD;CAEJ,MAAM,WAAgC,MAAS,YAC7C,OAAO,IAAI,aAAa;EACtB,MAAM,UAAU,gBAAgB,IAAI,KAAK;AAEzC,MAAI,CAAC,SAAS;GACZ,MAAM,MAAM,OAAO,cAAc,MAAM,QAAQ;AAC/C,UAAO,MAAM,IAAI,IAAI;AACrB,UAAO,OAAO,SAAS,kCAAkC;IACvD;IACA,YAAY,IAAI;IAChB,MAAM;IACP,CAAC;AACF;;EAGF,MAAM,YAAY,OAAO,OAAO,WAC9B,QAAQ,OAAO,UAAU,QAAQ,CAClC,CAAC,KACA,OAAO,SAAS,WACd,OAAO,YAAY,OACf,OAAO,QAAS,OAA6B,KAAK,GAClD,OAAO,KACL,IAAI,gBAAgB;GAClB,SAAS;GACT;GACA,QAAS,OAA4C,OACjD;GACL,CAAC,CACH,CACN,EACD,OAAO,SAAS,oBAAoB,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAC9D;EAED,MAAM,cACJ,eAAe,WAAW,OAAO,QAAQ,cAAc,aAClD,QAAQ,UAA0C,UAAU,GAC7D;EAYN,MAAM,MAAM,OAAO,cAAc,MAT/B,QAAQ,WAAW,OACf,OAAO,QAAQ,SAAS,CAAC,KACvB,OAAO,KAAK,eACV,cAAc,aAAa,WAAW,CACvC,EACD,OAAO,SAAS,kBAAkB,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAC5D,GACD,YAEiE;AACvE,SAAO,MAAM,IAAI,IAAI;AAErB,SAAO,OAAO,SAAS,+BAA+B;GACpD;GACA,YAAY,IAAI;GAChB,MAAM;GACP,CAAC;GACF,CAAC,KACD,OAAO,SAAS,gBAAgB,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EACzD,OAAO,SAAS,oBAAoB,QAClC,OAAO,SAAS,yBAAyB;EACvC;EACA;EACA,QAAQ,IAAI;EACb,CAAC,CAAC,KAAK,OAAO,OAAO,CACvB,EACD,OAAO,eAAe,UACpB,OAAO,SAAS,wBAAwB,MAAM,CAAC,KAAK,OAAO,OAAO,CACnE,CACF;AAEH,QAAO,aAAa,GAAG,EAAE,SAAS,CAAC;EACnC,CACH"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-capture.mjs","names":[],"sources":["../../../../src/core/plugins/services/event-capture.ts"],"sourcesContent":["import type { EventType } from \"@interfere/types/sdk/plugins/lib/types\";\n\nimport { Context, type Effect } from \"effect\";\n\nimport type { EventPayload } from \"../../events/event-registry.js\";\n\ninterface EventCaptureService {\n readonly capture: <T extends EventType>(\n type: T,\n payload: EventPayload<T>\n ) => Effect.Effect<void>;\n}\n\nexport class EventCapture extends Context.Tag(\n \"@interfere/plugins/EventCapture\"\n)<EventCapture, EventCaptureService>() {}\n"],"mappings":";;;AAaA,IAAa,eAAb,cAAkC,QAAQ,IACxC,kCACD,EAAqC,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { EventCapture } from "./event-capture.mjs";
|
|
2
|
-
import { Effect, Layer, Ref } from "effect";
|
|
3
|
-
|
|
4
|
-
//#region src/core/plugins/services/event-capture.test-layer.d.ts
|
|
5
|
-
interface EventCaptureCaptured {
|
|
6
|
-
readonly payload: unknown;
|
|
7
|
-
readonly type: string;
|
|
8
|
-
}
|
|
9
|
-
interface EventCaptureTestState {
|
|
10
|
-
readonly captured: readonly EventCaptureCaptured[];
|
|
11
|
-
}
|
|
12
|
-
declare const makeEventCaptureTestLayer: () => Effect.Effect<{
|
|
13
|
-
stateRef: Ref.Ref<EventCaptureTestState>;
|
|
14
|
-
layer: Layer.Layer<EventCapture, never, never>;
|
|
15
|
-
}, never, never>;
|
|
16
|
-
//#endregion
|
|
17
|
-
export { EventCaptureCaptured, EventCaptureTestState, makeEventCaptureTestLayer };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-capture.test-layer.d.mts","names":[],"sources":["../../../../src/core/plugins/services/event-capture.test-layer.ts"],"mappings":";;;;UAIiB,oBAAA;EAAA,SACN,OAAA;EAAA,SACA,IAAA;AAAA;AAAA,UAGM,qBAAA;EAAA,SACN,QAAA,WAAmB,oBAAA;AAAA;AAAA,cAOjB,yBAAA,QAAyB,MAAA,CAAA,MAAA"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { EventCapture } from "./event-capture.mjs";
|
|
2
|
-
import { Effect, Layer, Ref } from "effect";
|
|
3
|
-
|
|
4
|
-
//#region src/core/plugins/services/event-capture.test-layer.ts
|
|
5
|
-
const TestState = { make: () => Ref.make({ captured: [] }) };
|
|
6
|
-
const makeEventCaptureTestLayer = Effect.fn("makeEventCaptureTestLayer")(function* () {
|
|
7
|
-
const stateRef = yield* TestState.make();
|
|
8
|
-
return {
|
|
9
|
-
stateRef,
|
|
10
|
-
layer: Layer.succeed(EventCapture, EventCapture.of({ capture: (type, payload) => Ref.update(stateRef, (s) => ({
|
|
11
|
-
...s,
|
|
12
|
-
captured: [...s.captured, {
|
|
13
|
-
type,
|
|
14
|
-
payload
|
|
15
|
-
}]
|
|
16
|
-
})) }))
|
|
17
|
-
};
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
//#endregion
|
|
21
|
-
export { makeEventCaptureTestLayer };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-capture.test-layer.mjs","names":[],"sources":["../../../../src/core/plugins/services/event-capture.test-layer.ts"],"sourcesContent":["import { Effect, Layer, Ref } from \"effect\";\n\nimport { EventCapture } from \"./event-capture.js\";\n\nexport interface EventCaptureCaptured {\n readonly payload: unknown;\n readonly type: string;\n}\n\nexport interface EventCaptureTestState {\n readonly captured: readonly EventCaptureCaptured[];\n}\n\nconst TestState = {\n make: () => Ref.make<EventCaptureTestState>({ captured: [] }),\n} as const;\n\nexport const makeEventCaptureTestLayer = Effect.fn(\"makeEventCaptureTestLayer\")(\n function* () {\n const stateRef = yield* TestState.make();\n\n const layer = Layer.succeed(\n EventCapture,\n EventCapture.of({\n capture: (type, payload) =>\n Ref.update(stateRef, (s) => ({\n ...s,\n captured: [...s.captured, { type, payload }],\n })),\n })\n );\n\n return { stateRef, layer };\n }\n);\n"],"mappings":";;;;AAaA,MAAM,YAAY,EAChB,YAAY,IAAI,KAA4B,EAAE,UAAU,EAAE,EAAE,CAAC,EAC9D;AAED,MAAa,4BAA4B,OAAO,GAAG,4BAA4B,CAC7E,aAAa;CACX,MAAM,WAAW,OAAO,UAAU,MAAM;AAaxC,QAAO;EAAE;EAAU,OAXL,MAAM,QAClB,cACA,aAAa,GAAG,EACd,UAAU,MAAM,YACd,IAAI,OAAO,WAAW,OAAO;GAC3B,GAAG;GACH,UAAU,CAAC,GAAG,EAAE,UAAU;IAAE;IAAM;IAAS,CAAC;GAC7C,EAAE,EACN,CAAC,CACH;EAEyB;EAE7B"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Context } from "effect";
|
|
2
|
-
import { Config } from "@interfere/types/sdk/config";
|
|
3
|
-
|
|
4
|
-
//#region src/core/plugins/services/plugin-config.d.ts
|
|
5
|
-
interface PluginConfigService {
|
|
6
|
-
readonly config: Config;
|
|
7
|
-
}
|
|
8
|
-
declare const PluginConfig_base: Context.TagClass<PluginConfig, "@interfere/plugins/PluginConfig", PluginConfigService>;
|
|
9
|
-
declare class PluginConfig extends PluginConfig_base {}
|
|
10
|
-
//#endregion
|
|
11
|
-
export { PluginConfig };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-config.d.mts","names":[],"sources":["../../../../src/core/plugins/services/plugin-config.ts"],"mappings":";;;;UAIU,mBAAA;EAAA,SACC,MAAA,EAAQ,MAAA;AAAA;AAAA,cAAM,iBAAA;cAGZ,YAAA,SAAqB,iBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-config.mjs","names":[],"sources":["../../../../src/core/plugins/services/plugin-config.ts"],"sourcesContent":["import type { Config } from \"@interfere/types/sdk/config\";\n\nimport { Context } from \"effect\";\n\ninterface PluginConfigService {\n readonly config: Config;\n}\n\nexport class PluginConfig extends Context.Tag(\n \"@interfere/plugins/PluginConfig\"\n)<PluginConfig, PluginConfigService>() {}\n"],"mappings":";;;AAQA,IAAa,eAAb,cAAkC,QAAQ,IACxC,kCACD,EAAqC,CAAC"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { PluginConfig } from "./plugin-config.mjs";
|
|
2
|
-
import { Effect, Layer } from "effect";
|
|
3
|
-
|
|
4
|
-
//#region src/core/plugins/services/plugin-config.test-layer.d.ts
|
|
5
|
-
declare const makePluginConfigTestLayer: (config: ({
|
|
6
|
-
features: {
|
|
7
|
-
errors?: boolean | undefined;
|
|
8
|
-
replay?: boolean | undefined;
|
|
9
|
-
rageClick?: boolean | undefined;
|
|
10
|
-
aiSummary?: boolean | undefined;
|
|
11
|
-
pageEvents?: boolean | undefined;
|
|
12
|
-
serverTracing?: boolean | undefined;
|
|
13
|
-
};
|
|
14
|
-
metadata: {
|
|
15
|
-
buildId: string | null;
|
|
16
|
-
releaseId: string | null;
|
|
17
|
-
environment: "development" | "preview" | "production" | null;
|
|
18
|
-
runtime: "edge" | "browser" | "node" | null;
|
|
19
|
-
};
|
|
20
|
-
batch: {
|
|
21
|
-
size: number;
|
|
22
|
-
ms: number;
|
|
23
|
-
};
|
|
24
|
-
offline: {
|
|
25
|
-
enabled: boolean;
|
|
26
|
-
maxQueueSize: number;
|
|
27
|
-
};
|
|
28
|
-
} & {
|
|
29
|
-
proxyUrl: string;
|
|
30
|
-
}) | ({
|
|
31
|
-
features: {
|
|
32
|
-
errors?: boolean | undefined;
|
|
33
|
-
replay?: boolean | undefined;
|
|
34
|
-
rageClick?: boolean | undefined;
|
|
35
|
-
aiSummary?: boolean | undefined;
|
|
36
|
-
pageEvents?: boolean | undefined;
|
|
37
|
-
serverTracing?: boolean | undefined;
|
|
38
|
-
};
|
|
39
|
-
metadata: {
|
|
40
|
-
buildId: string | null;
|
|
41
|
-
releaseId: string | null;
|
|
42
|
-
environment: "development" | "preview" | "production" | null;
|
|
43
|
-
runtime: "edge" | "browser" | "node" | null;
|
|
44
|
-
};
|
|
45
|
-
batch: {
|
|
46
|
-
size: number;
|
|
47
|
-
ms: number;
|
|
48
|
-
};
|
|
49
|
-
offline: {
|
|
50
|
-
enabled: boolean;
|
|
51
|
-
maxQueueSize: number;
|
|
52
|
-
};
|
|
53
|
-
} & {
|
|
54
|
-
ingestUrl: string;
|
|
55
|
-
surfaceToken: string;
|
|
56
|
-
})) => Effect.Effect<{
|
|
57
|
-
layer: Layer.Layer<PluginConfig, never, never>;
|
|
58
|
-
}, never, never>;
|
|
59
|
-
//#endregion
|
|
60
|
-
export { makePluginConfigTestLayer };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-config.test-layer.d.mts","names":[],"sources":["../../../../src/core/plugins/services/plugin-config.test-layer.ts"],"mappings":";;;;cAMa,yBAAA,GAAyB,MAAA"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { PluginConfig } from "./plugin-config.mjs";
|
|
2
|
-
import { Effect, Layer } from "effect";
|
|
3
|
-
|
|
4
|
-
//#region src/core/plugins/services/plugin-config.test-layer.ts
|
|
5
|
-
const makePluginConfigTestLayer = Effect.fn("makePluginConfigTestLayer")((config) => Effect.succeed({ layer: Layer.succeed(PluginConfig, PluginConfig.of({ config })) }));
|
|
6
|
-
|
|
7
|
-
//#endregion
|
|
8
|
-
export { makePluginConfigTestLayer };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-config.test-layer.mjs","names":[],"sources":["../../../../src/core/plugins/services/plugin-config.test-layer.ts"],"sourcesContent":["import type { Config } from \"@interfere/types/sdk/config\";\n\nimport { Effect, Layer } from \"effect\";\n\nimport { PluginConfig } from \"./plugin-config.js\";\n\nexport const makePluginConfigTestLayer = Effect.fn(\"makePluginConfigTestLayer\")(\n (config: Config) =>\n Effect.succeed({\n layer: Layer.succeed(PluginConfig, PluginConfig.of({ config })),\n })\n);\n"],"mappings":";;;;AAMA,MAAa,4BAA4B,OAAO,GAAG,4BAA4B,EAC5E,WACC,OAAO,QAAQ,EACb,OAAO,MAAM,QAAQ,cAAc,aAAa,GAAG,EAAE,QAAQ,CAAC,CAAC,EAChE,CAAC,CACL"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Context, Effect } from "effect";
|
|
2
|
-
|
|
3
|
-
//#region src/core/plugins/services/plugin-logger.d.ts
|
|
4
|
-
interface PluginLoggerService {
|
|
5
|
-
readonly debug: (message: string) => Effect.Effect<void>;
|
|
6
|
-
readonly error: (message: string) => Effect.Effect<void>;
|
|
7
|
-
readonly info: (message: string) => Effect.Effect<void>;
|
|
8
|
-
readonly trace: (message: string) => Effect.Effect<void>;
|
|
9
|
-
readonly warn: (message: string) => Effect.Effect<void>;
|
|
10
|
-
}
|
|
11
|
-
declare const PluginLogger_base: Context.TagClass<PluginLogger, "@interfere/plugins/PluginLogger", PluginLoggerService>;
|
|
12
|
-
declare class PluginLogger extends PluginLogger_base {}
|
|
13
|
-
//#endregion
|
|
14
|
-
export { PluginLogger };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-logger.d.mts","names":[],"sources":["../../../../src/core/plugins/services/plugin-logger.ts"],"mappings":";;;UAEU,mBAAA;EAAA,SACC,KAAA,GAAQ,OAAA,aAAoB,MAAA,CAAO,MAAA;EAAA,SACnC,KAAA,GAAQ,OAAA,aAAoB,MAAA,CAAO,MAAA;EAAA,SACnC,IAAA,GAAO,OAAA,aAAoB,MAAA,CAAO,MAAA;EAAA,SAClC,KAAA,GAAQ,OAAA,aAAoB,MAAA,CAAO,MAAA;EAAA,SACnC,IAAA,GAAO,OAAA,aAAoB,MAAA,CAAO,MAAA;AAAA;AAAA,cAAM,iBAAA;cAGtC,YAAA,SAAqB,iBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-logger.mjs","names":[],"sources":["../../../../src/core/plugins/services/plugin-logger.ts"],"sourcesContent":["import { Context, type Effect } from \"effect\";\n\ninterface PluginLoggerService {\n readonly debug: (message: string) => Effect.Effect<void>;\n readonly error: (message: string) => Effect.Effect<void>;\n readonly info: (message: string) => Effect.Effect<void>;\n readonly trace: (message: string) => Effect.Effect<void>;\n readonly warn: (message: string) => Effect.Effect<void>;\n}\n\nexport class PluginLogger extends Context.Tag(\n \"@interfere/plugins/PluginLogger\"\n)<PluginLogger, PluginLoggerService>() {}\n"],"mappings":";;;AAUA,IAAa,eAAb,cAAkC,QAAQ,IACxC,kCACD,EAAqC,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { PluginLogger } from "./plugin-logger.mjs";
|
|
2
|
-
import { Effect, Layer, Ref } from "effect";
|
|
3
|
-
|
|
4
|
-
//#region src/core/plugins/services/plugin-logger.test-layer.d.ts
|
|
5
|
-
type Level = "trace" | "debug" | "info" | "warn" | "error";
|
|
6
|
-
interface PluginLoggerLogEntry {
|
|
7
|
-
readonly level: Level;
|
|
8
|
-
readonly message: string;
|
|
9
|
-
}
|
|
10
|
-
interface PluginLoggerTestState {
|
|
11
|
-
readonly logs: readonly PluginLoggerLogEntry[];
|
|
12
|
-
}
|
|
13
|
-
declare const makePluginLoggerTestLayer: () => Effect.Effect<{
|
|
14
|
-
stateRef: Ref.Ref<PluginLoggerTestState>;
|
|
15
|
-
layer: Layer.Layer<PluginLogger, never, never>;
|
|
16
|
-
}, never, never>;
|
|
17
|
-
//#endregion
|
|
18
|
-
export { PluginLoggerLogEntry, PluginLoggerTestState, makePluginLoggerTestLayer };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-logger.test-layer.d.mts","names":[],"sources":["../../../../src/core/plugins/services/plugin-logger.test-layer.ts"],"mappings":";;;;KAIK,KAAA;AAAA,UAEY,oBAAA;EAAA,SACN,KAAA,EAAO,KAAA;EAAA,SACP,OAAA;AAAA;AAAA,UAGM,qBAAA;EAAA,SACN,IAAA,WAAe,oBAAA;AAAA;AAAA,cAOb,yBAAA,QAAyB,MAAA,CAAA,MAAA"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { PluginLogger } from "./plugin-logger.mjs";
|
|
2
|
-
import { Effect, Layer, Ref } from "effect";
|
|
3
|
-
|
|
4
|
-
//#region src/core/plugins/services/plugin-logger.test-layer.ts
|
|
5
|
-
const TestState = { make: () => Ref.make({ logs: [] }) };
|
|
6
|
-
const makePluginLoggerTestLayer = Effect.fn("makePluginLoggerTestLayer")(function* () {
|
|
7
|
-
const stateRef = yield* TestState.make();
|
|
8
|
-
const push = (level) => (message) => Ref.update(stateRef, (s) => ({
|
|
9
|
-
...s,
|
|
10
|
-
logs: [...s.logs, {
|
|
11
|
-
level,
|
|
12
|
-
message
|
|
13
|
-
}]
|
|
14
|
-
}));
|
|
15
|
-
return {
|
|
16
|
-
stateRef,
|
|
17
|
-
layer: Layer.succeed(PluginLogger, PluginLogger.of({
|
|
18
|
-
trace: (message) => push("trace")(message),
|
|
19
|
-
debug: (message) => push("debug")(message),
|
|
20
|
-
info: (message) => push("info")(message),
|
|
21
|
-
warn: (message) => push("warn")(message),
|
|
22
|
-
error: (message) => push("error")(message)
|
|
23
|
-
}))
|
|
24
|
-
};
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
//#endregion
|
|
28
|
-
export { makePluginLoggerTestLayer };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-logger.test-layer.mjs","names":[],"sources":["../../../../src/core/plugins/services/plugin-logger.test-layer.ts"],"sourcesContent":["import { Effect, Layer, Ref } from \"effect\";\n\nimport { PluginLogger } from \"./plugin-logger.js\";\n\ntype Level = \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport interface PluginLoggerLogEntry {\n readonly level: Level;\n readonly message: string;\n}\n\nexport interface PluginLoggerTestState {\n readonly logs: readonly PluginLoggerLogEntry[];\n}\n\nconst TestState = {\n make: () => Ref.make<PluginLoggerTestState>({ logs: [] }),\n} as const;\n\nexport const makePluginLoggerTestLayer = Effect.fn(\"makePluginLoggerTestLayer\")(\n function* () {\n const stateRef = yield* TestState.make();\n\n const push = (level: Level) => (message: string) =>\n Ref.update(stateRef, (s) => ({\n ...s,\n logs: [...s.logs, { level, message }],\n }));\n\n const layer = Layer.succeed(\n PluginLogger,\n PluginLogger.of({\n trace: (message) => push(\"trace\")(message),\n debug: (message) => push(\"debug\")(message),\n info: (message) => push(\"info\")(message),\n warn: (message) => push(\"warn\")(message),\n error: (message) => push(\"error\")(message),\n })\n );\n\n return { stateRef, layer };\n }\n);\n"],"mappings":";;;;AAeA,MAAM,YAAY,EAChB,YAAY,IAAI,KAA4B,EAAE,MAAM,EAAE,EAAE,CAAC,EAC1D;AAED,MAAa,4BAA4B,OAAO,GAAG,4BAA4B,CAC7E,aAAa;CACX,MAAM,WAAW,OAAO,UAAU,MAAM;CAExC,MAAM,QAAQ,WAAkB,YAC9B,IAAI,OAAO,WAAW,OAAO;EAC3B,GAAG;EACH,MAAM,CAAC,GAAG,EAAE,MAAM;GAAE;GAAO;GAAS,CAAC;EACtC,EAAE;AAaL,QAAO;EAAE;EAAU,OAXL,MAAM,QAClB,cACA,aAAa,GAAG;GACd,QAAQ,YAAY,KAAK,QAAQ,CAAC,QAAQ;GAC1C,QAAQ,YAAY,KAAK,QAAQ,CAAC,QAAQ;GAC1C,OAAO,YAAY,KAAK,OAAO,CAAC,QAAQ;GACxC,OAAO,YAAY,KAAK,OAAO,CAAC,QAAQ;GACxC,QAAQ,YAAY,KAAK,QAAQ,CAAC,QAAQ;GAC3C,CAAC,CACH;EAEyB;EAE7B"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Context, Effect } from "effect";
|
|
2
|
-
|
|
3
|
-
//#region src/core/plugins/services/plugin-runtime.d.ts
|
|
4
|
-
interface PluginRuntimeService {
|
|
5
|
-
readonly fork: <A, E, R>(eff: Effect.Effect<A, E, R>) => void;
|
|
6
|
-
}
|
|
7
|
-
declare const PluginRuntime_base: Context.TagClass<PluginRuntime, "@interfere/plugins/PluginRuntime", PluginRuntimeService>;
|
|
8
|
-
declare class PluginRuntime extends PluginRuntime_base {}
|
|
9
|
-
//#endregion
|
|
10
|
-
export { PluginRuntime };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-runtime.d.mts","names":[],"sources":["../../../../src/core/plugins/services/plugin-runtime.ts"],"mappings":";;;UAEU,oBAAA;EAAA,SACC,IAAA,YAAgB,GAAA,EAAK,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,CAAA;AAAA;AAAA,cAAE,kBAAA;cAGzC,aAAA,SAAsB,kBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-runtime.mjs","names":[],"sources":["../../../../src/core/plugins/services/plugin-runtime.ts"],"sourcesContent":["import { Context, type Effect } from \"effect\";\n\ninterface PluginRuntimeService {\n readonly fork: <A, E, R>(eff: Effect.Effect<A, E, R>) => void;\n}\n\nexport class PluginRuntime extends Context.Tag(\n \"@interfere/plugins/PluginRuntime\"\n)<PluginRuntime, PluginRuntimeService>() {}\n"],"mappings":";;;AAMA,IAAa,gBAAb,cAAmC,QAAQ,IACzC,mCACD,EAAuC,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { PluginRuntime } from "./plugin-runtime.mjs";
|
|
2
|
-
import { Effect, Layer, Ref } from "effect";
|
|
3
|
-
|
|
4
|
-
//#region src/core/plugins/services/plugin-runtime.test-layer.d.ts
|
|
5
|
-
interface TestState {
|
|
6
|
-
readonly forked: number;
|
|
7
|
-
}
|
|
8
|
-
declare const TestState: {
|
|
9
|
-
readonly make: () => Effect.Effect<Ref.Ref<TestState>, never, never>;
|
|
10
|
-
};
|
|
11
|
-
declare const makePluginRuntimeTestLayer: () => Effect.Effect<{
|
|
12
|
-
stateRef: Ref.Ref<TestState>;
|
|
13
|
-
layer: Layer.Layer<PluginRuntime, never, never>;
|
|
14
|
-
}, never, never>;
|
|
15
|
-
//#endregion
|
|
16
|
-
export { makePluginRuntimeTestLayer };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-runtime.test-layer.d.mts","names":[],"sources":["../../../../src/core/plugins/services/plugin-runtime.test-layer.ts"],"mappings":";;;;UAIU,SAAA;EAAA,SACC,MAAA;AAAA;AAAA,cAGL,SAAA;EAAA;;cAIO,0BAAA,QAA0B,MAAA,CAAA,MAAA"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { PluginRuntime } from "./plugin-runtime.mjs";
|
|
2
|
-
import { Effect, Layer, Ref, Runtime } from "effect";
|
|
3
|
-
|
|
4
|
-
//#region src/core/plugins/services/plugin-runtime.test-layer.ts
|
|
5
|
-
const TestState = { make: () => Ref.make({ forked: 0 }) };
|
|
6
|
-
const makePluginRuntimeTestLayer = Effect.fn("makePluginRuntimeTestLayer")(function* () {
|
|
7
|
-
const runtime = yield* Effect.runtime();
|
|
8
|
-
const stateRef = yield* TestState.make();
|
|
9
|
-
return {
|
|
10
|
-
stateRef,
|
|
11
|
-
layer: Layer.succeed(PluginRuntime, PluginRuntime.of({ fork: (_eff) => {
|
|
12
|
-
Runtime.runSync(runtime)(Ref.update(stateRef, (s) => ({
|
|
13
|
-
...s,
|
|
14
|
-
forked: s.forked + 1
|
|
15
|
-
})));
|
|
16
|
-
} }))
|
|
17
|
-
};
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
//#endregion
|
|
21
|
-
export { makePluginRuntimeTestLayer };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-runtime.test-layer.mjs","names":[],"sources":["../../../../src/core/plugins/services/plugin-runtime.test-layer.ts"],"sourcesContent":["import { Effect, Layer, Ref, Runtime } from \"effect\";\n\nimport { PluginRuntime } from \"./plugin-runtime.js\";\n\ninterface TestState {\n readonly forked: number;\n}\n\nconst TestState = {\n make: () => Ref.make<TestState>({ forked: 0 }),\n} as const;\n\nexport const makePluginRuntimeTestLayer = Effect.fn(\n \"makePluginRuntimeTestLayer\"\n)(function* () {\n const runtime = yield* Effect.runtime();\n const stateRef = yield* TestState.make();\n\n const layer = Layer.succeed(\n PluginRuntime,\n PluginRuntime.of({\n fork: (_eff) => {\n Runtime.runSync(runtime)(\n Ref.update(stateRef, (s) => ({ ...s, forked: s.forked + 1 }))\n );\n },\n })\n );\n\n return { stateRef, layer };\n});\n"],"mappings":";;;;AAQA,MAAM,YAAY,EAChB,YAAY,IAAI,KAAgB,EAAE,QAAQ,GAAG,CAAC,EAC/C;AAED,MAAa,6BAA6B,OAAO,GAC/C,6BACD,CAAC,aAAa;CACb,MAAM,UAAU,OAAO,OAAO,SAAS;CACvC,MAAM,WAAW,OAAO,UAAU,MAAM;AAaxC,QAAO;EAAE;EAAU,OAXL,MAAM,QAClB,eACA,cAAc,GAAG,EACf,OAAO,SAAS;AACd,WAAQ,QAAQ,QAAQ,CACtB,IAAI,OAAO,WAAW,OAAO;IAAE,GAAG;IAAG,QAAQ,EAAE,SAAS;IAAG,EAAE,CAC9D;KAEJ,CAAC,CACH;EAEyB;EAC1B"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Context, Effect } from "effect";
|
|
2
|
-
|
|
3
|
-
//#region src/core/plugins/services/session-info.d.ts
|
|
4
|
-
interface SessionInfoService {
|
|
5
|
-
readonly getSessionId: Effect.Effect<string | null>;
|
|
6
|
-
readonly getSessionIdSync: () => string | null;
|
|
7
|
-
}
|
|
8
|
-
declare const SessionInfo_base: Context.TagClass<SessionInfo, "@interfere/plugins/SessionInfo", SessionInfoService>;
|
|
9
|
-
declare class SessionInfo extends SessionInfo_base {}
|
|
10
|
-
//#endregion
|
|
11
|
-
export { SessionInfo };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-info.d.mts","names":[],"sources":["../../../../src/core/plugins/services/session-info.ts"],"mappings":";;;UAEU,kBAAA;EAAA,SACC,YAAA,EAAc,MAAA,CAAO,MAAA;EAAA,SACrB,gBAAA;AAAA;AAAA,cAAgB,gBAAA;cAGd,WAAA,SAAoB,gBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-info.mjs","names":[],"sources":["../../../../src/core/plugins/services/session-info.ts"],"sourcesContent":["import { Context, type Effect } from \"effect\";\n\ninterface SessionInfoService {\n readonly getSessionId: Effect.Effect<string | null>;\n readonly getSessionIdSync: () => string | null;\n}\n\nexport class SessionInfo extends Context.Tag(\"@interfere/plugins/SessionInfo\")<\n SessionInfo,\n SessionInfoService\n>() {}\n"],"mappings":";;;AAOA,IAAa,cAAb,cAAiC,QAAQ,IAAI,iCAAiC,EAG3E,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { SessionInfo } from "./session-info.mjs";
|
|
2
|
-
import { Effect, Layer, Ref } from "effect";
|
|
3
|
-
|
|
4
|
-
//#region src/core/plugins/services/session-info.test-layer.d.ts
|
|
5
|
-
interface TestState {
|
|
6
|
-
readonly sessionId: string | null;
|
|
7
|
-
}
|
|
8
|
-
declare const TestState: {
|
|
9
|
-
readonly make: () => Effect.Effect<Ref.Ref<TestState>, never, never>;
|
|
10
|
-
};
|
|
11
|
-
declare const makeSessionInfoTestLayer: (initial?: {
|
|
12
|
-
readonly sessionId?: string | null;
|
|
13
|
-
} | undefined) => Effect.Effect<{
|
|
14
|
-
stateRef: Ref.Ref<TestState>;
|
|
15
|
-
layer: Layer.Layer<SessionInfo, never, never>;
|
|
16
|
-
}, never, never>;
|
|
17
|
-
//#endregion
|
|
18
|
-
export { makeSessionInfoTestLayer };
|