@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 +2 -2
- package/dist/{chunk-GAQI7G4H.js → chunk-4P62K6PD.js} +1 -1
- package/dist/{chunk-N4XUKHSM.js → chunk-MZ57MOIK.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/node.js +1 -1
- package/dist/react-scope.js +2 -2
- package/dist/react.js +2 -2
- package/dist/solid-noop.d.ts +6 -12
- package/dist/solid-scope-noop.d.ts +8 -0
- package/dist/solid-scope.d.ts +7 -0
- package/dist/solid.d.ts +6 -16
- package/dist/solidTypes-Ctp4O6TB.d.ts +11 -0
- package/dist/vue.js +1 -1
- package/package.json +17 -6
- package/src/adapters/solid-noop.tsx +4 -14
- package/src/adapters/solid-scope-noop.tsx +9 -0
- package/src/adapters/solid-scope.tsx +10 -0
- package/src/adapters/solid.tsx +4 -33
- package/src/adapters/solidNoopProvider.tsx +11 -0
- package/src/adapters/solidProvider.tsx +32 -0
- package/src/adapters/solidTypes.ts +12 -0
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.
|
|
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>;
|
package/dist/index.js
CHANGED
package/dist/node.js
CHANGED
package/dist/react-scope.js
CHANGED
package/dist/react.js
CHANGED
package/dist/solid-noop.d.ts
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import * as solid_js from 'solid-js';
|
|
2
|
+
import { D as DeffectorProviderProps } from './solidTypes-Ctp4O6TB.js';
|
|
3
|
+
import 'effector';
|
|
3
4
|
|
|
4
|
-
/**
|
|
5
|
+
/** Production build: plain effector-solid Provider. */
|
|
6
|
+
declare const DeffectorProvider: (props: DeffectorProviderProps) => solid_js.JSX.Element;
|
|
5
7
|
|
|
6
|
-
|
|
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
|
|
2
|
-
import {
|
|
1
|
+
import * as solid_js from 'solid-js';
|
|
2
|
+
import { D as DeffectorProviderProps } from './solidTypes-Ctp4O6TB.js';
|
|
3
|
+
import 'effector';
|
|
3
4
|
|
|
4
|
-
/**
|
|
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
|
-
|
|
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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deffector/agent",
|
|
3
|
-
"version": "0.1.
|
|
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.
|
|
85
|
-
"effector-vue": ">=
|
|
95
|
+
"effector-solid": ">=0.22",
|
|
96
|
+
"effector-vue": ">=22",
|
|
86
97
|
"react": ">=16.8",
|
|
87
|
-
"solid-js": ">=1.
|
|
88
|
-
"vue": ">=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
|
|
2
|
+
import { createNoopProvider } from './solidNoopProvider';
|
|
5
3
|
|
|
6
|
-
|
|
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
|
-
|
|
15
|
-
|
|
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;
|
package/src/adapters/solid.tsx
CHANGED
|
@@ -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
|
|
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
|
-
|
|
9
|
-
value: Scope;
|
|
10
|
-
name?: string;
|
|
11
|
-
children?: JSX.Element;
|
|
12
|
-
}
|
|
4
|
+
export type { DeffectorProviderProps } from './solidTypes';
|
|
13
5
|
|
|
14
|
-
/**
|
|
15
|
-
|
|
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;
|