@rikalabs/effect-react 0.0.1

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.
Files changed (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +179 -0
  3. package/dist/actions/http.d.ts +18 -0
  4. package/dist/actions/index.d.ts +4 -0
  5. package/dist/actions/react.d.ts +7 -0
  6. package/dist/actions/service.d.ts +18 -0
  7. package/dist/actions/types.d.ts +33 -0
  8. package/dist/boundary/codecs.d.ts +40 -0
  9. package/dist/boundary/errors.d.ts +22 -0
  10. package/dist/boundary/index.d.ts +2 -0
  11. package/dist/chunk-2GIUCKL2.js +16 -0
  12. package/dist/chunk-2GIUCKL2.js.map +1 -0
  13. package/dist/chunk-2TG7YEVD.js +11 -0
  14. package/dist/chunk-2TG7YEVD.js.map +1 -0
  15. package/dist/chunk-6FI4ROTW.js +152 -0
  16. package/dist/chunk-6FI4ROTW.js.map +1 -0
  17. package/dist/chunk-C5JI7D7W.js +213 -0
  18. package/dist/chunk-C5JI7D7W.js.map +1 -0
  19. package/dist/chunk-EEYASTXR.js +99 -0
  20. package/dist/chunk-EEYASTXR.js.map +1 -0
  21. package/dist/chunk-H7MOLKTU.js +301 -0
  22. package/dist/chunk-H7MOLKTU.js.map +1 -0
  23. package/dist/chunk-IVIYY6S5.js +77 -0
  24. package/dist/chunk-IVIYY6S5.js.map +1 -0
  25. package/dist/chunk-JKN75OYC.js +87 -0
  26. package/dist/chunk-JKN75OYC.js.map +1 -0
  27. package/dist/chunk-M2CJG6T7.js +24 -0
  28. package/dist/chunk-M2CJG6T7.js.map +1 -0
  29. package/dist/chunk-MDGEGQZB.js +206 -0
  30. package/dist/chunk-MDGEGQZB.js.map +1 -0
  31. package/dist/chunk-NI2GNZ7S.js +78 -0
  32. package/dist/chunk-NI2GNZ7S.js.map +1 -0
  33. package/dist/chunk-O7XTA7H3.js +423 -0
  34. package/dist/chunk-O7XTA7H3.js.map +1 -0
  35. package/dist/chunk-S67FHWAR.js +88 -0
  36. package/dist/chunk-S67FHWAR.js.map +1 -0
  37. package/dist/chunk-SKC3HMF3.js +17 -0
  38. package/dist/chunk-SKC3HMF3.js.map +1 -0
  39. package/dist/chunk-TUJZ6XJY.js +127 -0
  40. package/dist/chunk-TUJZ6XJY.js.map +1 -0
  41. package/dist/chunk-WPV3WFMS.js +38 -0
  42. package/dist/chunk-WPV3WFMS.js.map +1 -0
  43. package/dist/chunk-XIBEKS5A.js +301 -0
  44. package/dist/chunk-XIBEKS5A.js.map +1 -0
  45. package/dist/chunk-YG22YP5K.js +68 -0
  46. package/dist/chunk-YG22YP5K.js.map +1 -0
  47. package/dist/chunk-ZMZQBREU.js +262 -0
  48. package/dist/chunk-ZMZQBREU.js.map +1 -0
  49. package/dist/client/index.cjs +191 -0
  50. package/dist/client/index.cjs.map +1 -0
  51. package/dist/client/index.d.ts +8 -0
  52. package/dist/client/index.js +14 -0
  53. package/dist/client/index.js.map +1 -0
  54. package/dist/config/index.cjs +63 -0
  55. package/dist/config/index.cjs.map +1 -0
  56. package/dist/config/index.d.ts +32 -0
  57. package/dist/config/index.js +9 -0
  58. package/dist/config/index.js.map +1 -0
  59. package/dist/data/index.d.ts +3 -0
  60. package/dist/data/react.d.ts +10 -0
  61. package/dist/data/service.d.ts +20 -0
  62. package/dist/data/types.d.ts +31 -0
  63. package/dist/devtools/events.d.ts +37 -0
  64. package/dist/devtools/index.cjs +149 -0
  65. package/dist/devtools/index.cjs.map +1 -0
  66. package/dist/devtools/index.d.ts +2 -0
  67. package/dist/devtools/index.js +18 -0
  68. package/dist/devtools/index.js.map +1 -0
  69. package/dist/devtools/react.d.ts +8 -0
  70. package/dist/form/index.cjs +301 -0
  71. package/dist/form/index.cjs.map +1 -0
  72. package/dist/form/index.d.ts +3 -0
  73. package/dist/form/index.js +14 -0
  74. package/dist/form/index.js.map +1 -0
  75. package/dist/form/react.d.ts +9 -0
  76. package/dist/form/service.d.ts +3 -0
  77. package/dist/form/types.d.ts +41 -0
  78. package/dist/framework/app.d.ts +21 -0
  79. package/dist/framework/cache.d.ts +10 -0
  80. package/dist/framework/contracts.d.ts +32 -0
  81. package/dist/framework/index.cjs +1006 -0
  82. package/dist/framework/index.cjs.map +1 -0
  83. package/dist/framework/index.d.ts +4 -0
  84. package/dist/framework/index.js +35 -0
  85. package/dist/framework/index.js.map +1 -0
  86. package/dist/framework/manifest.d.ts +12 -0
  87. package/dist/framework/vite.d.ts +13 -0
  88. package/dist/framework-vite/index.cjs +163 -0
  89. package/dist/framework-vite/index.cjs.map +1 -0
  90. package/dist/framework-vite/index.d.ts +1 -0
  91. package/dist/framework-vite/index.js +125 -0
  92. package/dist/framework-vite/index.js.map +1 -0
  93. package/dist/grid/grid.d.ts +8 -0
  94. package/dist/grid/index.cjs +238 -0
  95. package/dist/grid/index.cjs.map +1 -0
  96. package/dist/grid/index.d.ts +2 -0
  97. package/dist/grid/index.js +19 -0
  98. package/dist/grid/index.js.map +1 -0
  99. package/dist/grid/types.d.ts +35 -0
  100. package/dist/index.cjs +2512 -0
  101. package/dist/index.cjs.map +1 -0
  102. package/dist/index.d.ts +13 -0
  103. package/dist/index.js +207 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/kernel/app.d.ts +26 -0
  106. package/dist/kernel/index.d.ts +3 -0
  107. package/dist/kernel/runtime.d.ts +5 -0
  108. package/dist/kernel/telemetry.d.ts +37 -0
  109. package/dist/navigation/index.d.ts +4 -0
  110. package/dist/navigation/matcher.d.ts +13 -0
  111. package/dist/navigation/react.d.ts +12 -0
  112. package/dist/navigation/service.d.ts +23 -0
  113. package/dist/navigation/types.d.ts +65 -0
  114. package/dist/query/index.cjs +361 -0
  115. package/dist/query/index.cjs.map +1 -0
  116. package/dist/query/index.d.ts +3 -0
  117. package/dist/query/index.js +30 -0
  118. package/dist/query/index.js.map +1 -0
  119. package/dist/query/react.d.ts +27 -0
  120. package/dist/query/service.d.ts +10 -0
  121. package/dist/query/types.d.ts +5 -0
  122. package/dist/react/index.d.ts +1 -0
  123. package/dist/react/provider.d.ts +10 -0
  124. package/dist/realtime/channel.d.ts +15 -0
  125. package/dist/realtime/index.cjs +117 -0
  126. package/dist/realtime/index.cjs.map +1 -0
  127. package/dist/realtime/index.d.ts +2 -0
  128. package/dist/realtime/index.js +15 -0
  129. package/dist/realtime/index.js.map +1 -0
  130. package/dist/realtime/presence.d.ts +22 -0
  131. package/dist/render/hydration.d.ts +24 -0
  132. package/dist/render/index.d.ts +2 -0
  133. package/dist/render/ssr.d.ts +13 -0
  134. package/dist/router/helpers.d.ts +26 -0
  135. package/dist/router/index.cjs +236 -0
  136. package/dist/router/index.cjs.map +1 -0
  137. package/dist/router/index.d.ts +4 -0
  138. package/dist/router/index.js +40 -0
  139. package/dist/router/index.js.map +1 -0
  140. package/dist/router/react.d.ts +5 -0
  141. package/dist/router/service.d.ts +5 -0
  142. package/dist/router/types.d.ts +1 -0
  143. package/dist/server/index.cjs +174 -0
  144. package/dist/server/index.cjs.map +1 -0
  145. package/dist/server/index.d.ts +16 -0
  146. package/dist/server/index.js +12 -0
  147. package/dist/server/index.js.map +1 -0
  148. package/dist/state/index.cjs +128 -0
  149. package/dist/state/index.cjs.map +1 -0
  150. package/dist/state/index.d.ts +2 -0
  151. package/dist/state/index.js +36 -0
  152. package/dist/state/index.js.map +1 -0
  153. package/dist/state/react.d.ts +3 -0
  154. package/dist/state/service.d.ts +28 -0
  155. package/dist/testing/index.cjs +970 -0
  156. package/dist/testing/index.cjs.map +1 -0
  157. package/dist/testing/index.d.ts +2 -0
  158. package/dist/testing/index.js +13 -0
  159. package/dist/testing/index.js.map +1 -0
  160. package/dist/virtual/index.cjs +160 -0
  161. package/dist/virtual/index.cjs.map +1 -0
  162. package/dist/virtual/index.d.ts +2 -0
  163. package/dist/virtual/index.js +21 -0
  164. package/dist/virtual/index.js.map +1 -0
  165. package/dist/virtual/types.d.ts +25 -0
  166. package/dist/virtual/virtual.d.ts +9 -0
  167. package/package.json +156 -0
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/config/index.ts
21
+ var config_exports = {};
22
+ __export(config_exports, {
23
+ defineConfig: () => defineConfig,
24
+ resolveConfig: () => resolveConfig
25
+ });
26
+ module.exports = __toCommonJS(config_exports);
27
+ var defaultConfig = {
28
+ appDir: "app",
29
+ adapters: ["node", "bun"],
30
+ ssr: {
31
+ streaming: true
32
+ },
33
+ cache: {
34
+ defaultPolicy: "no-store",
35
+ routeSegmentDefaults: "explicit"
36
+ },
37
+ strict: {
38
+ boundarySchemas: true,
39
+ typedErrors: true
40
+ }
41
+ };
42
+ var defineConfig = (config) => config;
43
+ var resolveConfig = (config = {}) => ({
44
+ appDir: config.appDir ?? defaultConfig.appDir,
45
+ adapters: config.adapters ?? defaultConfig.adapters,
46
+ ssr: {
47
+ streaming: config.ssr?.streaming ?? defaultConfig.ssr.streaming
48
+ },
49
+ cache: {
50
+ defaultPolicy: config.cache?.defaultPolicy ?? defaultConfig.cache.defaultPolicy,
51
+ routeSegmentDefaults: config.cache?.routeSegmentDefaults ?? defaultConfig.cache.routeSegmentDefaults
52
+ },
53
+ strict: {
54
+ boundarySchemas: config.strict?.boundarySchemas ?? defaultConfig.strict.boundarySchemas,
55
+ typedErrors: config.strict?.typedErrors ?? defaultConfig.strict.typedErrors
56
+ }
57
+ });
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ defineConfig,
61
+ resolveConfig
62
+ });
63
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/config/index.ts"],"sourcesContent":["export interface EffectReactConfig {\n readonly appDir?: string;\n readonly adapters?: readonly (\"node\" | \"bun\")[];\n readonly ssr?: {\n readonly streaming?: boolean;\n };\n readonly cache?: {\n readonly defaultPolicy?: \"no-store\" | \"force-cache\";\n readonly routeSegmentDefaults?: \"explicit\";\n };\n readonly strict?: {\n readonly boundarySchemas?: boolean;\n readonly typedErrors?: boolean;\n };\n}\n\nexport interface EffectReactResolvedConfig {\n readonly appDir: string;\n readonly adapters: readonly (\"node\" | \"bun\")[];\n readonly ssr: {\n readonly streaming: boolean;\n };\n readonly cache: {\n readonly defaultPolicy: \"no-store\" | \"force-cache\";\n readonly routeSegmentDefaults: \"explicit\";\n };\n readonly strict: {\n readonly boundarySchemas: boolean;\n readonly typedErrors: boolean;\n };\n}\n\nconst defaultConfig: EffectReactResolvedConfig = {\n appDir: \"app\",\n adapters: [\"node\", \"bun\"],\n ssr: {\n streaming: true,\n },\n cache: {\n defaultPolicy: \"no-store\",\n routeSegmentDefaults: \"explicit\",\n },\n strict: {\n boundarySchemas: true,\n typedErrors: true,\n },\n};\n\nexport const defineConfig = (config: EffectReactConfig): EffectReactConfig => config;\n\nexport const resolveConfig = (\n config: EffectReactConfig = {},\n): EffectReactResolvedConfig => ({\n appDir: config.appDir ?? defaultConfig.appDir,\n adapters: config.adapters ?? defaultConfig.adapters,\n ssr: {\n streaming: config.ssr?.streaming ?? defaultConfig.ssr.streaming,\n },\n cache: {\n defaultPolicy: config.cache?.defaultPolicy ?? defaultConfig.cache.defaultPolicy,\n routeSegmentDefaults:\n config.cache?.routeSegmentDefaults ?? defaultConfig.cache.routeSegmentDefaults,\n },\n strict: {\n boundarySchemas:\n config.strict?.boundarySchemas ?? defaultConfig.strict.boundarySchemas,\n typedErrors: config.strict?.typedErrors ?? defaultConfig.strict.typedErrors,\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgCA,IAAM,gBAA2C;AAAA,EAC/C,QAAQ;AAAA,EACR,UAAU,CAAC,QAAQ,KAAK;AAAA,EACxB,KAAK;AAAA,IACH,WAAW;AAAA,EACb;AAAA,EACA,OAAO;AAAA,IACL,eAAe;AAAA,IACf,sBAAsB;AAAA,EACxB;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AACF;AAEO,IAAM,eAAe,CAAC,WAAiD;AAEvE,IAAM,gBAAgB,CAC3B,SAA4B,CAAC,OACE;AAAA,EAC/B,QAAQ,OAAO,UAAU,cAAc;AAAA,EACvC,UAAU,OAAO,YAAY,cAAc;AAAA,EAC3C,KAAK;AAAA,IACH,WAAW,OAAO,KAAK,aAAa,cAAc,IAAI;AAAA,EACxD;AAAA,EACA,OAAO;AAAA,IACL,eAAe,OAAO,OAAO,iBAAiB,cAAc,MAAM;AAAA,IAClE,sBACE,OAAO,OAAO,wBAAwB,cAAc,MAAM;AAAA,EAC9D;AAAA,EACA,QAAQ;AAAA,IACN,iBACE,OAAO,QAAQ,mBAAmB,cAAc,OAAO;AAAA,IACzD,aAAa,OAAO,QAAQ,eAAe,cAAc,OAAO;AAAA,EAClE;AACF;","names":[]}
@@ -0,0 +1,32 @@
1
+ export interface EffectReactConfig {
2
+ readonly appDir?: string;
3
+ readonly adapters?: readonly ("node" | "bun")[];
4
+ readonly ssr?: {
5
+ readonly streaming?: boolean;
6
+ };
7
+ readonly cache?: {
8
+ readonly defaultPolicy?: "no-store" | "force-cache";
9
+ readonly routeSegmentDefaults?: "explicit";
10
+ };
11
+ readonly strict?: {
12
+ readonly boundarySchemas?: boolean;
13
+ readonly typedErrors?: boolean;
14
+ };
15
+ }
16
+ export interface EffectReactResolvedConfig {
17
+ readonly appDir: string;
18
+ readonly adapters: readonly ("node" | "bun")[];
19
+ readonly ssr: {
20
+ readonly streaming: boolean;
21
+ };
22
+ readonly cache: {
23
+ readonly defaultPolicy: "no-store" | "force-cache";
24
+ readonly routeSegmentDefaults: "explicit";
25
+ };
26
+ readonly strict: {
27
+ readonly boundarySchemas: boolean;
28
+ readonly typedErrors: boolean;
29
+ };
30
+ }
31
+ export declare const defineConfig: (config: EffectReactConfig) => EffectReactConfig;
32
+ export declare const resolveConfig: (config?: EffectReactConfig) => EffectReactResolvedConfig;
@@ -0,0 +1,9 @@
1
+ import {
2
+ defineConfig,
3
+ resolveConfig
4
+ } from "../chunk-WPV3WFMS.js";
5
+ export {
6
+ defineConfig,
7
+ resolveConfig
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export * from "./service";
3
+ export * from "./react";
@@ -0,0 +1,10 @@
1
+ import type { QueryDefinition, QueryRunOptions, QuerySnapshot } from "./types";
2
+ export interface UseQueryOptions {
3
+ readonly enabled?: boolean;
4
+ readonly run?: QueryRunOptions;
5
+ }
6
+ export declare const useQuery: <Name extends string, Input, Output, E>(definition: QueryDefinition<Name, Input, Output, E>, input: unknown, options?: UseQueryOptions) => QuerySnapshot<Output, E> & {
7
+ readonly refetch: () => Promise<Output>;
8
+ readonly invalidate: () => Promise<void>;
9
+ };
10
+ export declare const useSuspenseQuery: <Name extends string, Input, Output, E>(definition: QueryDefinition<Name, Input, Output, E>, input: unknown) => Output;
@@ -0,0 +1,20 @@
1
+ import { Context, Effect, Layer, type Stream } from "effect";
2
+ import { Boundary, type BoundaryDecodeError } from "../boundary";
3
+ import type { BoundaryProtocolError } from "../boundary/errors";
4
+ import { Telemetry } from "../kernel/telemetry";
5
+ import { type QueryDefinition, type QueryRunOptions, type QueryRuntimeOptions, type QuerySnapshot, QueryRuntimeError } from "./types";
6
+ export interface DataService {
7
+ readonly fetch: <Name extends string, Input, Output, E>(definition: QueryDefinition<Name, Input, Output, E>, input: unknown, options?: QueryRunOptions) => Effect.Effect<Output, E | BoundaryDecodeError | BoundaryProtocolError | QueryRuntimeError, never>;
8
+ readonly prefetch: <Name extends string, Input, Output, E>(definition: QueryDefinition<Name, Input, Output, E>, input: unknown) => Effect.Effect<void, E | BoundaryDecodeError | BoundaryProtocolError | QueryRuntimeError, never>;
9
+ readonly invalidate: <Name extends string, Input, Output, E>(definition: QueryDefinition<Name, Input, Output, E>, input: unknown) => Effect.Effect<void, QueryRuntimeError, never>;
10
+ readonly getSnapshot: <Name extends string, Input, Output, E>(definition: QueryDefinition<Name, Input, Output, E>, input: unknown) => Effect.Effect<QuerySnapshot<Output, E>, never, never>;
11
+ readonly getAllSnapshots: Effect.Effect<ReadonlyMap<string, QuerySnapshot<unknown, unknown>>, never, never>;
12
+ readonly hydrateSnapshots: (snapshots: ReadonlyMap<string, QuerySnapshot<unknown, unknown>>) => Effect.Effect<void, never, never>;
13
+ readonly snapshots: Stream.Stream<ReadonlyMap<string, QuerySnapshot<unknown, unknown>>>;
14
+ }
15
+ declare const Data_base: Context.TagClass<Data, "EffectReact/Data", DataService>;
16
+ export declare class Data extends Data_base {
17
+ }
18
+ export declare const makeDataLayer: (options?: QueryRuntimeOptions) => Layer.Layer<Data, never, Boundary | Telemetry>;
19
+ export declare const fetchQuery: <Name extends string, Input, Output, E>(definition: QueryDefinition<Name, Input, Output, E>, input: unknown, options?: QueryRunOptions) => Effect.Effect<Output, E | BoundaryDecodeError | BoundaryProtocolError | QueryRuntimeError, Data>;
20
+ export {};
@@ -0,0 +1,31 @@
1
+ import type { Duration, Effect, Schema } from "effect";
2
+ import type { BoundaryDecodeError } from "../boundary";
3
+ import type { BoundaryProtocolError } from "../boundary/errors";
4
+ export interface QueryDefinition<Name extends string, Input, Output, E, InputEncoded = Input, OutputEncoded = Output> {
5
+ readonly name: Name;
6
+ readonly input: Schema.Schema<Input, InputEncoded, never>;
7
+ readonly output: Schema.Schema<Output, OutputEncoded, never>;
8
+ readonly run: (input: Input) => Effect.Effect<Output, E, never>;
9
+ readonly key?: (input: Input) => unknown;
10
+ }
11
+ export declare const defineQuery: <Name extends string, Input, Output, E, InputEncoded = Input, OutputEncoded = Output>(definition: QueryDefinition<Name, Input, Output, E, InputEncoded, OutputEncoded>) => QueryDefinition<Name, Input, Output, E, InputEncoded, OutputEncoded>;
12
+ export type QueryPhase = "initial" | "loading" | "success" | "failure";
13
+ export interface QuerySnapshot<Output, E> {
14
+ readonly key: string;
15
+ readonly phase: QueryPhase;
16
+ readonly data: Output | undefined;
17
+ readonly error: E | BoundaryDecodeError | BoundaryProtocolError | QueryRuntimeError | undefined;
18
+ readonly updatedAt: number | null | undefined;
19
+ }
20
+ export interface QueryRunOptions {
21
+ readonly forceRefresh?: boolean;
22
+ }
23
+ export interface QueryRuntimeOptions {
24
+ readonly capacity?: number;
25
+ readonly timeToLive?: Duration.DurationInput;
26
+ }
27
+ export declare class QueryRuntimeError extends Error {
28
+ readonly messageText: string;
29
+ readonly _tag: "QueryRuntimeError";
30
+ constructor(messageText: string);
31
+ }
@@ -0,0 +1,37 @@
1
+ import { Effect, Stream } from "effect";
2
+ import { Telemetry, type TelemetryEvent } from "../kernel/telemetry";
3
+ export type RuntimeEvent = {
4
+ readonly phase: "runtime-created" | "runtime-disposed";
5
+ readonly timestamp: number;
6
+ readonly detail?: unknown;
7
+ } | {
8
+ readonly phase: "run-fork" | "run-sync" | "run-promise";
9
+ readonly timestamp: number;
10
+ readonly detail?: unknown;
11
+ };
12
+ export interface RuntimeEventSource {
13
+ readonly emit: (event: RuntimeEvent) => Effect.Effect<void>;
14
+ readonly stream: Stream.Stream<RuntimeEvent>;
15
+ }
16
+ export type DevtoolsEvent = {
17
+ readonly _tag: "telemetry";
18
+ readonly timestamp: number;
19
+ readonly event: TelemetryEvent;
20
+ } | {
21
+ readonly _tag: "runtime";
22
+ readonly timestamp: number;
23
+ readonly event: RuntimeEvent;
24
+ };
25
+ export interface DevtoolsEventStream {
26
+ readonly stream: Stream.Stream<DevtoolsEvent>;
27
+ }
28
+ export interface CreateDevtoolsEventStreamOptions {
29
+ readonly telemetry: Stream.Stream<TelemetryEvent>;
30
+ readonly runtime?: Stream.Stream<RuntimeEvent>;
31
+ }
32
+ export interface CreateDevtoolsEventStreamFromTelemetryOptions {
33
+ readonly runtime?: Stream.Stream<RuntimeEvent>;
34
+ }
35
+ export declare const createRuntimeEventSource: () => Effect.Effect<RuntimeEventSource>;
36
+ export declare const createDevtoolsEventStream: (options: CreateDevtoolsEventStreamOptions) => DevtoolsEventStream;
37
+ export declare const createDevtoolsEventStreamFromTelemetry: (options?: CreateDevtoolsEventStreamFromTelemetryOptions) => Effect.Effect<DevtoolsEventStream, never, Telemetry>;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/devtools/index.ts
21
+ var devtools_exports = {};
22
+ __export(devtools_exports, {
23
+ createDevtoolsEventStream: () => createDevtoolsEventStream,
24
+ createDevtoolsEventStreamFromTelemetry: () => createDevtoolsEventStreamFromTelemetry,
25
+ createRuntimeEventSource: () => createRuntimeEventSource,
26
+ useDevtoolsEvents: () => useDevtoolsEvents,
27
+ useEventStream: () => useEventStream
28
+ });
29
+ module.exports = __toCommonJS(devtools_exports);
30
+
31
+ // src/devtools/events.ts
32
+ var import_effect3 = require("effect");
33
+
34
+ // src/kernel/telemetry.ts
35
+ var import_effect = require("effect");
36
+ var Telemetry = class extends import_effect.Context.Tag("EffectReact/Telemetry")() {
37
+ };
38
+ var TelemetryLive = import_effect.Layer.effect(
39
+ Telemetry,
40
+ import_effect.Effect.map(import_effect.PubSub.unbounded(), (pubsub) => ({
41
+ emit: (event) => import_effect.PubSub.publish(pubsub, event).pipe(import_effect.Effect.asVoid),
42
+ stream: import_effect.Stream.fromPubSub(pubsub)
43
+ }))
44
+ );
45
+
46
+ // src/realtime/channel.ts
47
+ var import_effect2 = require("effect");
48
+ var createChannel = (options = {}) => import_effect2.Effect.map(import_effect2.PubSub.unbounded(options), (pubsub) => {
49
+ const subscribe2 = () => import_effect2.Stream.fromPubSub(pubsub);
50
+ return {
51
+ publish: (message) => import_effect2.PubSub.publish(pubsub, message).pipe(import_effect2.Effect.asVoid),
52
+ publishAll: (messages) => import_effect2.PubSub.publishAll(pubsub, messages).pipe(import_effect2.Effect.asVoid),
53
+ subscribe: subscribe2,
54
+ stream: subscribe2(),
55
+ shutdown: import_effect2.PubSub.shutdown(pubsub)
56
+ };
57
+ });
58
+ var publish = (channel, message) => channel.publish(message);
59
+ var subscribe = (channel) => channel.subscribe();
60
+
61
+ // src/devtools/events.ts
62
+ var emptyRuntimeStream = () => import_effect3.Stream.fromIterable([]);
63
+ var wrapTelemetryEvent = (event) => ({
64
+ _tag: "telemetry",
65
+ timestamp: event.timestamp,
66
+ event
67
+ });
68
+ var wrapRuntimeEvent = (event) => ({
69
+ _tag: "runtime",
70
+ timestamp: event.timestamp,
71
+ event
72
+ });
73
+ var createRuntimeEventSource = () => import_effect3.Effect.map(createChannel(), (channel) => ({
74
+ emit: (event) => publish(channel, event),
75
+ stream: subscribe(channel)
76
+ }));
77
+ var createDevtoolsEventStream = (options) => {
78
+ const telemetry = options.telemetry.pipe(import_effect3.Stream.map(wrapTelemetryEvent));
79
+ const runtime = (options.runtime ?? emptyRuntimeStream()).pipe(import_effect3.Stream.map(wrapRuntimeEvent));
80
+ return {
81
+ stream: import_effect3.Stream.merge(telemetry, runtime)
82
+ };
83
+ };
84
+ var createDevtoolsEventStreamFromTelemetry = (options = {}) => import_effect3.Effect.map(
85
+ Telemetry,
86
+ (telemetry) => createDevtoolsEventStream({
87
+ telemetry: telemetry.stream,
88
+ ...options.runtime !== void 0 ? { runtime: options.runtime } : {}
89
+ })
90
+ );
91
+
92
+ // src/devtools/react.tsx
93
+ var import_effect4 = require("effect");
94
+ var import_react2 = require("react");
95
+
96
+ // src/react/provider.tsx
97
+ var import_react = require("react");
98
+ var import_jsx_runtime = require("react/jsx-runtime");
99
+ var RuntimeContext = (0, import_react.createContext)(null);
100
+ var useEffectRuntime = () => {
101
+ const runtime = (0, import_react.useContext)(RuntimeContext);
102
+ if (runtime === null) {
103
+ throw new Error("Effect runtime is not available. Wrap your app with <EffectProvider>.");
104
+ }
105
+ return runtime;
106
+ };
107
+
108
+ // src/devtools/react.tsx
109
+ var appendEvent = (current, event, limit) => {
110
+ if (limit <= 0) {
111
+ return current;
112
+ }
113
+ if (current.length < limit) {
114
+ return [...current, event];
115
+ }
116
+ return [...current.slice(current.length - limit + 1), event];
117
+ };
118
+ var useEventStream = (stream, options = {}) => {
119
+ const runtime = useEffectRuntime();
120
+ const limit = options.limit ?? 128;
121
+ const [events, setEvents] = (0, import_react2.useState)([]);
122
+ (0, import_react2.useEffect)(() => {
123
+ if (options.enabled === false || limit <= 0) {
124
+ return;
125
+ }
126
+ const fiber = runtime.runFork(
127
+ import_effect4.Stream.runForEach(
128
+ stream,
129
+ (event) => import_effect4.Effect.sync(() => {
130
+ setEvents((current) => appendEvent(current, event, limit));
131
+ })
132
+ )
133
+ );
134
+ return () => {
135
+ runtime.runFork(import_effect4.Fiber.interrupt(fiber));
136
+ };
137
+ }, [runtime, stream, options.enabled, limit]);
138
+ return events;
139
+ };
140
+ var useDevtoolsEvents = (source, options = {}) => useEventStream(source.stream, options);
141
+ // Annotate the CommonJS export names for ESM import in node:
142
+ 0 && (module.exports = {
143
+ createDevtoolsEventStream,
144
+ createDevtoolsEventStreamFromTelemetry,
145
+ createRuntimeEventSource,
146
+ useDevtoolsEvents,
147
+ useEventStream
148
+ });
149
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/devtools/index.ts","../../src/devtools/events.ts","../../src/kernel/telemetry.ts","../../src/realtime/channel.ts","../../src/devtools/react.tsx","../../src/react/provider.tsx"],"sourcesContent":["export * from \"./events\";\nexport * from \"./react\";\n","import { Effect, Stream } from \"effect\";\nimport { Telemetry, type TelemetryEvent } from \"../kernel/telemetry\";\nimport { createChannel, publish, subscribe } from \"../realtime\";\n\nexport type RuntimeEvent =\n | {\n readonly phase: \"runtime-created\" | \"runtime-disposed\";\n readonly timestamp: number;\n readonly detail?: unknown;\n }\n | {\n readonly phase: \"run-fork\" | \"run-sync\" | \"run-promise\";\n readonly timestamp: number;\n readonly detail?: unknown;\n };\n\nexport interface RuntimeEventSource {\n readonly emit: (event: RuntimeEvent) => Effect.Effect<void>;\n readonly stream: Stream.Stream<RuntimeEvent>;\n}\n\nexport type DevtoolsEvent =\n | {\n readonly _tag: \"telemetry\";\n readonly timestamp: number;\n readonly event: TelemetryEvent;\n }\n | {\n readonly _tag: \"runtime\";\n readonly timestamp: number;\n readonly event: RuntimeEvent;\n };\n\nexport interface DevtoolsEventStream {\n readonly stream: Stream.Stream<DevtoolsEvent>;\n}\n\nexport interface CreateDevtoolsEventStreamOptions {\n readonly telemetry: Stream.Stream<TelemetryEvent>;\n readonly runtime?: Stream.Stream<RuntimeEvent>;\n}\n\nexport interface CreateDevtoolsEventStreamFromTelemetryOptions {\n readonly runtime?: Stream.Stream<RuntimeEvent>;\n}\n\nconst emptyRuntimeStream = (): Stream.Stream<RuntimeEvent> =>\n Stream.fromIterable<RuntimeEvent>([]);\n\nconst wrapTelemetryEvent = (event: TelemetryEvent): DevtoolsEvent => ({\n _tag: \"telemetry\",\n timestamp: event.timestamp,\n event,\n});\n\nconst wrapRuntimeEvent = (event: RuntimeEvent): DevtoolsEvent => ({\n _tag: \"runtime\",\n timestamp: event.timestamp,\n event,\n});\n\nexport const createRuntimeEventSource = (): Effect.Effect<RuntimeEventSource> =>\n Effect.map(createChannel<RuntimeEvent>(), (channel) => ({\n emit: (event) => publish(channel, event),\n stream: subscribe(channel),\n }));\n\nexport const createDevtoolsEventStream = (\n options: CreateDevtoolsEventStreamOptions,\n): DevtoolsEventStream => {\n const telemetry = options.telemetry.pipe(Stream.map(wrapTelemetryEvent));\n const runtime = (options.runtime ?? emptyRuntimeStream()).pipe(Stream.map(wrapRuntimeEvent));\n\n return {\n stream: Stream.merge(telemetry, runtime),\n };\n};\n\nexport const createDevtoolsEventStreamFromTelemetry = (\n options: CreateDevtoolsEventStreamFromTelemetryOptions = {},\n): Effect.Effect<DevtoolsEventStream, never, Telemetry> =>\n Effect.map(Telemetry, (telemetry) =>\n createDevtoolsEventStream({\n telemetry: telemetry.stream,\n ...(options.runtime !== undefined ? { runtime: options.runtime } : {}),\n }),\n );\n","import { Context, Effect, Layer, PubSub, Stream } from \"effect\";\n\nexport type TelemetryEvent =\n | {\n readonly _tag: \"query\";\n readonly phase: \"start\" | \"success\" | \"failure\" | \"invalidate\";\n readonly key: string;\n readonly timestamp: number;\n readonly detail?: unknown;\n }\n | {\n readonly _tag: \"navigation\";\n readonly phase: \"start\" | \"success\" | \"failure\" | \"cancel\";\n readonly pathname: string;\n readonly routeId?: string;\n readonly timestamp: number;\n readonly detail?: unknown;\n }\n | {\n readonly _tag: \"action\";\n readonly phase: \"start\" | \"success\" | \"failure\" | \"transport\";\n readonly name: string;\n readonly timestamp: number;\n readonly detail?: unknown;\n }\n | {\n readonly _tag: \"boundary\";\n readonly phase: \"decode-failure\" | \"protocol-failure\" | \"transport-failure\";\n readonly source: string;\n readonly timestamp: number;\n readonly detail?: unknown;\n };\n\nexport interface TelemetryService {\n readonly emit: (event: TelemetryEvent) => Effect.Effect<void>;\n readonly stream: Stream.Stream<TelemetryEvent>;\n}\n\nexport class Telemetry extends Context.Tag(\"EffectReact/Telemetry\")<\n Telemetry,\n TelemetryService\n>() {}\n\nexport const TelemetryLive = Layer.effect(\n Telemetry,\n Effect.map(PubSub.unbounded<TelemetryEvent>(), (pubsub) => ({\n emit: (event) => PubSub.publish(pubsub, event).pipe(Effect.asVoid),\n stream: Stream.fromPubSub(pubsub),\n })),\n);\n\nexport const emitTelemetry = (event: TelemetryEvent): Effect.Effect<void, never, Telemetry> =>\n Effect.flatMap(Telemetry, (service) => service.emit(event));\n","import { Effect, PubSub, Stream } from \"effect\";\n\nexport interface CreateChannelOptions {\n readonly replay?: number;\n}\n\nexport interface RealtimeChannel<Message> {\n readonly publish: (message: Message) => Effect.Effect<void>;\n readonly publishAll: (messages: Iterable<Message>) => Effect.Effect<void>;\n readonly subscribe: () => Stream.Stream<Message>;\n readonly stream: Stream.Stream<Message>;\n readonly shutdown: Effect.Effect<void>;\n}\n\nexport const createChannel = <Message>(\n options: CreateChannelOptions = {},\n): Effect.Effect<RealtimeChannel<Message>> =>\n Effect.map(PubSub.unbounded<Message>(options), (pubsub) => {\n const subscribe = (): Stream.Stream<Message> => Stream.fromPubSub(pubsub);\n\n return {\n publish: (message) => PubSub.publish(pubsub, message).pipe(Effect.asVoid),\n publishAll: (messages) => PubSub.publishAll(pubsub, messages).pipe(Effect.asVoid),\n subscribe,\n stream: subscribe(),\n shutdown: PubSub.shutdown(pubsub),\n };\n });\n\nexport const publish = <Message>(\n channel: RealtimeChannel<Message>,\n message: Message,\n): Effect.Effect<void> => channel.publish(message);\n\nexport const publishAll = <Message>(\n channel: RealtimeChannel<Message>,\n messages: Iterable<Message>,\n): Effect.Effect<void> => channel.publishAll(messages);\n\nexport const subscribe = <Message>(channel: RealtimeChannel<Message>): Stream.Stream<Message> =>\n channel.subscribe();\n","import { Effect, Fiber, Stream } from \"effect\";\nimport { useEffect, useState } from \"react\";\nimport { useEffectRuntime } from \"../react/provider\";\nimport type { DevtoolsEvent, DevtoolsEventStream } from \"./events\";\n\nexport interface UseEventStreamOptions {\n readonly enabled?: boolean;\n readonly limit?: number;\n}\n\nconst appendEvent = <Event,>(\n current: readonly Event[],\n event: Event,\n limit: number,\n): readonly Event[] => {\n if (limit <= 0) {\n return current;\n }\n if (current.length < limit) {\n return [...current, event];\n }\n return [...current.slice(current.length - limit + 1), event];\n};\n\nexport const useEventStream = <Event,>(\n stream: Stream.Stream<Event>,\n options: UseEventStreamOptions = {},\n): readonly Event[] => {\n const runtime = useEffectRuntime();\n const limit = options.limit ?? 128;\n const [events, setEvents] = useState<readonly Event[]>([]);\n\n useEffect(() => {\n if (options.enabled === false || limit <= 0) {\n return;\n }\n\n const fiber = runtime.runFork(\n Stream.runForEach(stream, (event) =>\n Effect.sync(() => {\n setEvents((current) => appendEvent(current, event, limit));\n }),\n ),\n );\n\n return () => {\n runtime.runFork(Fiber.interrupt(fiber));\n };\n }, [runtime, stream, options.enabled, limit]);\n\n return events;\n};\n\nexport const useDevtoolsEvents = (\n source: DevtoolsEventStream,\n options: UseEventStreamOptions = {},\n): readonly DevtoolsEvent[] => useEventStream(source.stream, options);\n","import type { ManagedRuntime } from \"effect\";\nimport { createContext, useContext, useEffect, type ReactNode } from \"react\";\nimport type { AppServices } from \"../kernel/app\";\n\nexport type EffectReactManagedRuntime<R = AppServices> = ManagedRuntime.ManagedRuntime<R, never>;\n\nconst RuntimeContext = createContext<EffectReactManagedRuntime | null>(null);\n\nexport interface EffectProviderProps {\n readonly runtime: EffectReactManagedRuntime;\n readonly children?: ReactNode;\n}\n\nexport const EffectProvider = ({ runtime, children }: EffectProviderProps) => {\n useEffect(\n () => () => {\n void runtime.dispose();\n },\n [runtime],\n );\n\n return <RuntimeContext.Provider value={runtime}>{children}</RuntimeContext.Provider>;\n};\n\nexport const useEffectRuntime = (): EffectReactManagedRuntime => {\n const runtime = useContext(RuntimeContext);\n if (runtime === null) {\n throw new Error(\"Effect runtime is not available. Wrap your app with <EffectProvider>.\");\n }\n return runtime;\n};\n"],"mappings":"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","names":["import_effect","import_effect","subscribe","import_effect","import_react"]}
@@ -0,0 +1,2 @@
1
+ export * from "./events";
2
+ export * from "./react";
@@ -0,0 +1,18 @@
1
+ import {
2
+ createDevtoolsEventStream,
3
+ createDevtoolsEventStreamFromTelemetry,
4
+ createRuntimeEventSource,
5
+ useDevtoolsEvents,
6
+ useEventStream
7
+ } from "../chunk-S67FHWAR.js";
8
+ import "../chunk-JKN75OYC.js";
9
+ import "../chunk-2GIUCKL2.js";
10
+ import "../chunk-SKC3HMF3.js";
11
+ export {
12
+ createDevtoolsEventStream,
13
+ createDevtoolsEventStreamFromTelemetry,
14
+ createRuntimeEventSource,
15
+ useDevtoolsEvents,
16
+ useEventStream
17
+ };
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,8 @@
1
+ import { Stream } from "effect";
2
+ import type { DevtoolsEvent, DevtoolsEventStream } from "./events";
3
+ export interface UseEventStreamOptions {
4
+ readonly enabled?: boolean;
5
+ readonly limit?: number;
6
+ }
7
+ export declare const useEventStream: <Event>(stream: Stream.Stream<Event>, options?: UseEventStreamOptions) => readonly Event[];
8
+ export declare const useDevtoolsEvents: (source: DevtoolsEventStream, options?: UseEventStreamOptions) => readonly DevtoolsEvent[];