@deffector/agent 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,7 +11,7 @@ npm install @deffector/agent
11
11
  ## Requirements
12
12
 
13
13
  - **effector** 22.6+ (tested with 23.4.4 and 22.8.6)
14
- - **React** 16.8+ with effector-react 22+, **Vue** 3.3+ with effector-vue 23+, **Solid** 1.8+ with effector-solid 0.23+ — only for the framework you use
14
+ - **React** 16.8+ with effector-react 22+, **Vue** 3.0+ with effector-vue 22+, **Solid** 1.3+ with effector-solid 0.22+ — only for the framework you use
15
15
  - **Next.js** 13.4+ (App Router, `@effector/next`), tested with 15.5
16
16
  - **Browser** with the extension: Chrome or Edge 116+, Firefox 140+
17
17
  - **Node** 18+ for the standalone app; 22+ for the agent in a Node process (older: pass `WebSocket` from `ws`)
@@ -43,7 +43,7 @@ import { withDeffector } from '@deffector/agent/vue';
43
43
  createApp(withDeffector(App, { scope, name: 'client' })).mount('#app');
44
44
 
45
45
  // Solid (compiled by vite-plugin-solid or babel-preset-solid)
46
- import { DeffectorProvider } from '@deffector/agent/solid';
46
+ import { DeffectorProvider } from '@deffector/agent/solid'; // primitives from effector-solid/scope: '@deffector/agent/solid-scope'
47
47
  <DeffectorProvider value={scope} name="client">
48
48
  <App />
49
49
  </DeffectorProvider>;
@@ -3490,7 +3490,7 @@ var HealthMonitor = class {
3490
3490
  };
3491
3491
 
3492
3492
  // src/agent/options.ts
3493
- var AGENT_VERSION = "0.1.3";
3493
+ var AGENT_VERSION = "0.1.4";
3494
3494
  var DEFAULT_MAX_TRANSACTIONS = 1e3;
3495
3495
  var DEFAULT_GRACE_MS = 1e4;
3496
3496
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  registerScope
3
- } from "./chunk-GAQI7G4H.js";
3
+ } from "./chunk-4P62K6PD.js";
4
4
 
5
5
  // src/adapters/reactProvider.ts
6
6
  import { createElement, useEffect, useState } from "react";
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  getAgent,
6
6
  registerModel,
7
7
  registerScope
8
- } from "./chunk-GAQI7G4H.js";
8
+ } from "./chunk-4P62K6PD.js";
9
9
  import "./chunk-PKBMQBKP.js";
10
10
  export {
11
11
  Agent,
package/dist/node.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  getAgent,
5
5
  registerModel,
6
6
  registerScope
7
- } from "./chunk-GAQI7G4H.js";
7
+ } from "./chunk-4P62K6PD.js";
8
8
  import "./chunk-PKBMQBKP.js";
9
9
 
10
10
  // src/node.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createDeffectorProvider
3
- } from "./chunk-N4XUKHSM.js";
4
- import "./chunk-GAQI7G4H.js";
3
+ } from "./chunk-MZ57MOIK.js";
4
+ import "./chunk-4P62K6PD.js";
5
5
  import "./chunk-PKBMQBKP.js";
6
6
 
7
7
  // src/adapters/react-scope.ts
package/dist/react.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createDeffectorProvider
3
- } from "./chunk-N4XUKHSM.js";
4
- import "./chunk-GAQI7G4H.js";
3
+ } from "./chunk-MZ57MOIK.js";
4
+ import "./chunk-4P62K6PD.js";
5
5
  import "./chunk-PKBMQBKP.js";
6
6
 
7
7
  // src/adapters/react.tsx
@@ -1,14 +1,8 @@
1
- import { JSX } from 'solid-js';
2
- import { Scope } from 'effector';
1
+ import * as solid_js from 'solid-js';
2
+ import { D as DeffectorProviderProps } from './solidTypes-Ctp4O6TB.js';
3
+ import 'effector';
3
4
 
4
- /** @jsxImportSource solid-js */
5
+ /** Production build: plain effector-solid Provider. */
6
+ declare const DeffectorProvider: (props: DeffectorProviderProps) => solid_js.JSX.Element;
5
7
 
6
- interface DeffectorProviderProps {
7
- value: Scope;
8
- /** accepted for the same API as the development build */
9
- name?: string;
10
- children?: JSX.Element;
11
- }
12
- declare function DeffectorProvider(props: DeffectorProviderProps): JSX.Element;
13
-
14
- export { DeffectorProvider, DeffectorProvider as default };
8
+ export { DeffectorProvider, DeffectorProviderProps, DeffectorProvider as default };
@@ -0,0 +1,8 @@
1
+ import * as solid_js from 'solid-js';
2
+ import { D as DeffectorProviderProps } from './solidTypes-Ctp4O6TB.js';
3
+ import 'effector';
4
+
5
+ /** Production build: plain `effector-solid/scope` Provider. */
6
+ declare const DeffectorProvider: (props: DeffectorProviderProps) => solid_js.JSX.Element;
7
+
8
+ export { DeffectorProvider, DeffectorProviderProps, DeffectorProvider as default };
@@ -0,0 +1,7 @@
1
+ import * as solid_js from 'solid-js';
2
+ import { D as DeffectorProviderProps } from './solidTypes-Ctp4O6TB.js';
3
+ import 'effector';
4
+
5
+ declare const DeffectorProvider: (props: DeffectorProviderProps) => solid_js.JSX.Element;
6
+
7
+ export { DeffectorProvider, DeffectorProviderProps, DeffectorProvider as default };
package/dist/solid.d.ts CHANGED
@@ -1,18 +1,8 @@
1
- import { JSX } from 'solid-js';
2
- import { Scope } from 'effector';
1
+ import * as solid_js from 'solid-js';
2
+ import { D as DeffectorProviderProps } from './solidTypes-Ctp4O6TB.js';
3
+ import 'effector';
3
4
 
4
- /** @jsxImportSource solid-js */
5
+ /** Drop-in replacement for effector-solid's Provider (see solidProvider.tsx). */
6
+ declare const DeffectorProvider: (props: DeffectorProviderProps) => solid_js.JSX.Element;
5
7
 
6
- interface DeffectorProviderProps {
7
- value: Scope;
8
- name?: string;
9
- children?: JSX.Element;
10
- }
11
- /**
12
- * Drop-in replacement for effector-solid's Provider. deffector swaps the scope
13
- * for time travel and replay; the subtree is re-created because effector-solid
14
- * primitives read the scope once, when a component is created.
15
- */
16
- declare function DeffectorProvider(props: DeffectorProviderProps): JSX.Element;
17
-
18
- export { DeffectorProvider, DeffectorProvider as default };
8
+ export { DeffectorProvider, DeffectorProviderProps, DeffectorProvider as default };
@@ -0,0 +1,11 @@
1
+ import { JSX } from 'solid-js';
2
+ import { Scope } from 'effector';
3
+
4
+ interface DeffectorProviderProps {
5
+ value: Scope;
6
+ /** shown in the panel's scope selector */
7
+ name?: string;
8
+ children?: JSX.Element;
9
+ }
10
+
11
+ export type { DeffectorProviderProps as D };
package/dist/vue.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  registerScope
3
- } from "./chunk-GAQI7G4H.js";
3
+ } from "./chunk-4P62K6PD.js";
4
4
  import "./chunk-PKBMQBKP.js";
5
5
 
6
6
  // src/adapters/vue.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deffector/agent",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "DevTools for effector: every user action as one transaction, time travel, state injection, effect overrides and replayable traces. The agent that runs in your app.",
5
5
  "keywords": [
6
6
  "effector",
@@ -60,6 +60,12 @@
60
60
  "solid": "./src/adapters/solid.tsx",
61
61
  "default": "./src/adapters/solid.tsx"
62
62
  },
63
+ "./solid-scope": {
64
+ "types": "./dist/solid-scope.d.ts",
65
+ "production": "./src/adapters/solid-scope-noop.tsx",
66
+ "solid": "./src/adapters/solid-scope.tsx",
67
+ "default": "./src/adapters/solid-scope.tsx"
68
+ },
63
69
  "./node": {
64
70
  "types": "./dist/node.d.ts",
65
71
  "production": "./dist/node-noop.js",
@@ -71,7 +77,12 @@
71
77
  "files": [
72
78
  "dist",
73
79
  "src/adapters/solid.tsx",
74
- "src/adapters/solid-noop.tsx"
80
+ "src/adapters/solid-noop.tsx",
81
+ "src/adapters/solid-scope.tsx",
82
+ "src/adapters/solid-scope-noop.tsx",
83
+ "src/adapters/solidProvider.tsx",
84
+ "src/adapters/solidNoopProvider.tsx",
85
+ "src/adapters/solidTypes.ts"
75
86
  ],
76
87
  "scripts": {
77
88
  "build": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsup",
@@ -81,11 +92,11 @@
81
92
  "peerDependencies": {
82
93
  "effector": ">=22.6.0",
83
94
  "effector-react": ">=22",
84
- "effector-solid": ">=0.23",
85
- "effector-vue": ">=23",
95
+ "effector-solid": ">=0.22",
96
+ "effector-vue": ">=22",
86
97
  "react": ">=16.8",
87
- "solid-js": ">=1.8",
88
- "vue": ">=3.3"
98
+ "solid-js": ">=1.3",
99
+ "vue": ">=3.0"
89
100
  },
90
101
  "peerDependenciesMeta": {
91
102
  "effector-react": {
@@ -1,19 +1,9 @@
1
- /** @jsxImportSource solid-js */
2
- import type { JSX } from 'solid-js';
3
1
  import { Provider } from 'effector-solid';
4
- import type { Scope } from 'effector';
2
+ import { createNoopProvider } from './solidNoopProvider';
5
3
 
6
- interface DeffectorProviderProps {
7
- value: Scope;
8
- /** accepted for the same API as the development build */
9
- // eslint-disable-next-line react/no-unused-prop-types -- only the development build names the scope
10
- name?: string;
11
- children?: JSX.Element;
12
- }
4
+ export type { DeffectorProviderProps } from './solidTypes';
13
5
 
14
- export function DeffectorProvider(props: DeffectorProviderProps) {
15
- // Solid props are getters: pass them through without reading them early
16
- return <Provider value={props.value}>{props.children}</Provider>;
17
- }
6
+ /** Production build: plain effector-solid Provider. */
7
+ export const DeffectorProvider = createNoopProvider(Provider);
18
8
 
19
9
  export default DeffectorProvider;
@@ -0,0 +1,9 @@
1
+ import { Provider } from 'effector-solid/scope';
2
+ import { createNoopProvider } from './solidNoopProvider';
3
+
4
+ export type { DeffectorProviderProps } from './solidTypes';
5
+
6
+ /** Production build: plain `effector-solid/scope` Provider. */
7
+ export const DeffectorProvider = createNoopProvider(Provider);
8
+
9
+ export default DeffectorProvider;
@@ -0,0 +1,10 @@
1
+ // For apps whose primitives come from `effector-solid/scope`: that entry has its own context, so
2
+ // the Provider has to come from there too.
3
+ import { Provider } from 'effector-solid/scope';
4
+ import { createDeffectorProvider } from './solidProvider';
5
+
6
+ export type { DeffectorProviderProps } from './solidTypes';
7
+
8
+ export const DeffectorProvider = createDeffectorProvider(Provider);
9
+
10
+ export default DeffectorProvider;
@@ -1,38 +1,9 @@
1
- /** @jsxImportSource solid-js */
2
- import { createSignal, onCleanup, Show, type JSX } from 'solid-js';
3
1
  import { Provider } from 'effector-solid';
4
- import type { Scope } from 'effector';
5
- // the package's own entry: the same agent instance the app imported
6
- import { registerScope } from '@deffector/agent';
2
+ import { createDeffectorProvider } from './solidProvider';
7
3
 
8
- interface DeffectorProviderProps {
9
- value: Scope;
10
- name?: string;
11
- children?: JSX.Element;
12
- }
4
+ export type { DeffectorProviderProps } from './solidTypes';
13
5
 
14
- /**
15
- * Drop-in replacement for effector-solid's Provider. deffector swaps the scope
16
- * for time travel and replay; the subtree is re-created because effector-solid
17
- * primitives read the scope once, when a component is created.
18
- */
19
- export function DeffectorProvider(props: DeffectorProviderProps) {
20
- // read once, like effector-solid's Provider does
21
- const { value, name } = props;
22
- const [scope, setScope] = createSignal<Scope>(value);
23
- const unregister = registerScope(value, {
24
- name,
25
- switcher: (switched) => setScope(() => switched),
26
- });
27
- onCleanup(unregister);
28
- return (
29
- <Show when={scope()} keyed>
30
- {(shown) => (
31
- // Solid props are getters: reading children here re-creates the subtree for every shown scope
32
- <Provider value={shown}>{props.children}</Provider>
33
- )}
34
- </Show>
35
- );
36
- }
6
+ /** Drop-in replacement for effector-solid's Provider (see solidProvider.tsx). */
7
+ export const DeffectorProvider = createDeffectorProvider(Provider);
37
8
 
38
9
  export default DeffectorProvider;
@@ -0,0 +1,11 @@
1
+ /** @jsxImportSource solid-js */
2
+ // Kept apart from solidProvider.tsx: production builds must not import the agent.
3
+ import type { DeffectorProviderProps, EffectorSolidProvider } from './solidTypes';
4
+
5
+ /** Production build: the Provider itself, `name` is accepted and ignored. */
6
+ export function createNoopProvider(Provider: EffectorSolidProvider) {
7
+ return function DeffectorProvider(props: DeffectorProviderProps) {
8
+ // Solid props are getters: pass them through without reading them early
9
+ return <Provider value={props.value}>{props.children}</Provider>;
10
+ };
11
+ }
@@ -0,0 +1,32 @@
1
+ /** @jsxImportSource solid-js */
2
+ import { createSignal, onCleanup, Show } from 'solid-js';
3
+ import type { Scope } from 'effector';
4
+ // the package's own entry: the same agent instance the app imported
5
+ import { registerScope } from '@deffector/agent';
6
+ import type { DeffectorProviderProps, EffectorSolidProvider } from './solidTypes';
7
+
8
+ /**
9
+ * A drop-in replacement for the given effector-solid Provider. deffector swaps the scope for time
10
+ * travel and replay; the subtree is re-created because effector-solid primitives read the scope
11
+ * once, when a component is created.
12
+ */
13
+ export function createDeffectorProvider(Provider: EffectorSolidProvider) {
14
+ return function DeffectorProvider(props: DeffectorProviderProps) {
15
+ // read once, like effector-solid's Provider does
16
+ const { value, name } = props;
17
+ const [scope, setScope] = createSignal<Scope>(value);
18
+ const unregister = registerScope(value, {
19
+ name,
20
+ switcher: (switched) => setScope(() => switched),
21
+ });
22
+ onCleanup(unregister);
23
+ return (
24
+ <Show when={scope()} keyed>
25
+ {(shown) => (
26
+ // Solid props are getters: reading children here re-creates the subtree for every shown scope
27
+ <Provider value={shown}>{props.children}</Provider>
28
+ )}
29
+ </Show>
30
+ );
31
+ };
32
+ }
@@ -0,0 +1,12 @@
1
+ import type { JSX } from 'solid-js';
2
+ import type { Scope } from 'effector';
3
+
4
+ export interface DeffectorProviderProps {
5
+ value: Scope;
6
+ /** shown in the panel's scope selector */
7
+ name?: string;
8
+ children?: JSX.Element;
9
+ }
10
+
11
+ /** effector-solid's Provider: from `effector-solid` or from the legacy `effector-solid/scope` */
12
+ export type EffectorSolidProvider = (props: { value: Scope; children: JSX.Element }) => JSX.Element;