@modern-js/plugin-state 1.2.0 → 1.2.3

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.
@@ -1,101 +1,100 @@
1
1
  import path from 'path';
2
2
  import { getEntryOptions, createRuntimeExportsUtils, PLUGIN_SCHEMAS } from '@modern-js/utils';
3
- import { createPlugin, useAppContext, useResolvedConfigContext } from '@modern-js/core';
4
3
  import "../types";
5
4
  var PLUGIN_IDENTIFIER = 'state';
6
- var index = createPlugin(function () {
7
- var stateConfigMap = new Map();
8
- var pluginsExportsUtils;
9
- var stateModulePath = path.resolve(__dirname, '../../../../');
5
+ export default (function () {
10
6
  return {
11
- config: function config() {
12
- // eslint-disable-next-line react-hooks/rules-of-hooks
13
- var appContext = useAppContext();
14
- pluginsExportsUtils = createRuntimeExportsUtils(appContext.internalDirectory, 'plugins');
7
+ name: '@modern-js/plugin-state',
8
+ required: ['@modern-js/runtime'],
9
+ setup: function setup(api) {
10
+ var stateConfigMap = new Map();
11
+ var pluginsExportsUtils;
12
+ var stateModulePath = path.resolve(__dirname, '../../../../');
15
13
  return {
16
- source: {
17
- alias: {
18
- '@modern-js/runtime/plugins': pluginsExportsUtils.getPath()
19
- }
20
- }
21
- };
22
- },
23
- modifyEntryImports: function modifyEntryImports(_ref) {
24
- var _getEntryOptions;
14
+ config: function config() {
15
+ var appContext = api.useAppContext();
16
+ pluginsExportsUtils = createRuntimeExportsUtils(appContext.internalDirectory, 'plugins');
17
+ return {
18
+ source: {
19
+ alias: {
20
+ '@modern-js/runtime/plugins': pluginsExportsUtils.getPath()
21
+ }
22
+ }
23
+ };
24
+ },
25
+ modifyEntryImports: function modifyEntryImports(_ref) {
26
+ var _getEntryOptions;
25
27
 
26
- var entrypoint = _ref.entrypoint,
27
- imports = _ref.imports;
28
- var entryName = entrypoint.entryName; // eslint-disable-next-line react-hooks/rules-of-hooks
28
+ var entrypoint = _ref.entrypoint,
29
+ imports = _ref.imports;
30
+ var entryName = entrypoint.entryName;
31
+ var userConfig = api.useResolvedConfigContext();
29
32
 
30
- var userConfig = useResolvedConfigContext(); // eslint-disable-next-line react-hooks/rules-of-hooks
33
+ var _api$useAppContext = api.useAppContext(),
34
+ packageName = _api$useAppContext.packageName;
31
35
 
32
- var _useAppContext = useAppContext(),
33
- packageName = _useAppContext.packageName;
36
+ var stateConfig = (_getEntryOptions = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName)) === null || _getEntryOptions === void 0 ? void 0 : _getEntryOptions.state;
37
+ stateConfigMap.set(entryName, stateConfig);
34
38
 
35
- var stateConfig = (_getEntryOptions = getEntryOptions(entryName, userConfig.runtime, userConfig.runtimeByEntries, packageName)) === null || _getEntryOptions === void 0 ? void 0 : _getEntryOptions.state;
36
- stateConfigMap.set(entryName, stateConfig);
39
+ var getEnabledPlugins = function getEnabledPlugins() {
40
+ var internalPlugins = ['immer', 'effects', 'autoActions', 'devtools'];
41
+ return internalPlugins.filter(function (name) {
42
+ return stateConfig[name] !== false;
43
+ });
44
+ };
37
45
 
38
- var getEnabledPlugins = function getEnabledPlugins() {
39
- var internalPlugins = ['immer', 'effects', 'autoActions', 'devtools'];
40
- return internalPlugins.filter(function (name) {
41
- return stateConfig[name] !== false;
42
- });
43
- };
46
+ if (stateConfig) {
47
+ imports.push({
48
+ value: '@modern-js/runtime/plugins',
49
+ specifiers: [{
50
+ imported: PLUGIN_IDENTIFIER
51
+ }]
52
+ });
53
+ imports.push({
54
+ value: '@modern-js/runtime/model',
55
+ specifiers: getEnabledPlugins().map(function (imported) {
56
+ return {
57
+ imported: imported
58
+ };
59
+ }),
60
+ initialize: "\n const createStatePlugins = (config) => {\n const plugins = [];\n\n ".concat(getEnabledPlugins().map(function (name) {
61
+ return "\n plugins.push(".concat(name, "(config['").concat(name, "']));\n ");
62
+ }).join('\n'), "\n\n return plugins;\n }\n ")
63
+ });
64
+ }
44
65
 
45
- if (stateConfig) {
46
- imports.push({
47
- value: '@modern-js/runtime/plugins',
48
- specifiers: [{
49
- imported: PLUGIN_IDENTIFIER
50
- }]
51
- });
52
- imports.push({
53
- value: '@modern-js/runtime/model',
54
- specifiers: getEnabledPlugins().map(function (imported) {
55
- return {
56
- imported: imported
57
- };
58
- }),
59
- initialize: "\n const createStatePlugins = (config) => {\n const plugins = [];\n\n ".concat(getEnabledPlugins().map(function (name) {
60
- return "\n plugins.push(".concat(name, "(config['").concat(name, "']));\n ");
61
- }).join('\n'), "\n\n return plugins;\n }\n ")
62
- });
63
- }
66
+ return {
67
+ entrypoint: entrypoint,
68
+ imports: imports
69
+ };
70
+ },
71
+ modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(_ref2) {
72
+ var entrypoint = _ref2.entrypoint,
73
+ plugins = _ref2.plugins;
74
+ var stateOptions = stateConfigMap.get(entrypoint.entryName);
64
75
 
65
- return {
66
- entrypoint: entrypoint,
67
- imports: imports
68
- };
69
- },
70
- modifyEntryRuntimePlugins: function modifyEntryRuntimePlugins(_ref2) {
71
- var entrypoint = _ref2.entrypoint,
72
- plugins = _ref2.plugins;
73
- var stateOptions = stateConfigMap.get(entrypoint.entryName);
74
-
75
- if (stateOptions) {
76
- var isBoolean = typeof stateOptions === 'boolean';
77
- var options = isBoolean ? '{}' : JSON.stringify(stateOptions);
78
- options = "".concat(options.substr(0, options.length - 1)).concat(isBoolean ? '' : ',', "plugins: createStatePlugins(").concat(JSON.stringify(stateConfigMap.get(entrypoint.entryName)), ")}");
79
- plugins.push({
80
- name: PLUGIN_IDENTIFIER,
81
- options: options
82
- });
83
- }
76
+ if (stateOptions) {
77
+ var isBoolean = typeof stateOptions === 'boolean';
78
+ var options = isBoolean ? '{}' : JSON.stringify(stateOptions);
79
+ options = "".concat(options.substr(0, options.length - 1)).concat(isBoolean ? '' : ',', "plugins: createStatePlugins(").concat(JSON.stringify(stateConfigMap.get(entrypoint.entryName)), ")}");
80
+ plugins.push({
81
+ name: PLUGIN_IDENTIFIER,
82
+ options: options
83
+ });
84
+ }
84
85
 
85
- return {
86
- entrypoint: entrypoint,
87
- plugins: plugins
86
+ return {
87
+ entrypoint: entrypoint,
88
+ plugins: plugins
89
+ };
90
+ },
91
+ validateSchema: function validateSchema() {
92
+ return PLUGIN_SCHEMAS['@modern-js/plugin-state'];
93
+ },
94
+ addRuntimeExports: function addRuntimeExports() {
95
+ pluginsExportsUtils.addExport("export { default as state } from '".concat(stateModulePath, "'"));
96
+ }
88
97
  };
89
- },
90
- validateSchema: function validateSchema() {
91
- return PLUGIN_SCHEMAS['@modern-js/plugin-state'];
92
- },
93
- addRuntimeExports: function addRuntimeExports() {
94
- pluginsExportsUtils.addExport("export { default as state } from '".concat(stateModulePath, "'"));
95
98
  }
96
99
  };
97
- }, {
98
- name: '@modern-js/plugin-state',
99
- required: ['@modern-js/runtime']
100
- });
101
- export default index;
100
+ });
@@ -4,63 +4,63 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
7
- // eslint-disable-next-line filenames/match-exported
8
7
  import { useContext } from 'react';
9
- import { createPlugin, RuntimeReactContext } from '@modern-js/runtime-core';
8
+ import { RuntimeReactContext } from '@modern-js/runtime-core';
10
9
  import { createStore } from '@modern-js-reduck/store';
11
10
  import { Provider } from '@modern-js-reduck/react';
12
11
  import hoistNonReactStatics from 'hoist-non-react-statics';
13
12
  import { jsx as _jsx } from "react/jsx-runtime";
14
13
 
15
14
  var state = function state(config) {
16
- return createPlugin(function () {
17
- return {
18
- hoc: function hoc(_ref, next) {
19
- var App = _ref.App;
15
+ return {
16
+ name: '@modern-js/plugin-state',
17
+ setup: function setup() {
18
+ return {
19
+ hoc: function hoc(_ref, next) {
20
+ var App = _ref.App;
20
21
 
21
- var getStateApp = function getStateApp(props) {
22
- // eslint-disable-next-line react-hooks/rules-of-hooks
23
- var context = useContext(RuntimeReactContext);
24
- return /*#__PURE__*/_jsx(Provider, {
25
- store: context.store,
26
- config: config,
27
- children: /*#__PURE__*/_jsx(App, _objectSpread({}, props))
22
+ var getStateApp = function getStateApp(props) {
23
+ // eslint-disable-next-line react-hooks/rules-of-hooks
24
+ var context = useContext(RuntimeReactContext);
25
+ return /*#__PURE__*/_jsx(Provider, {
26
+ store: context.store,
27
+ config: config,
28
+ children: /*#__PURE__*/_jsx(App, _objectSpread({}, props))
29
+ });
30
+ };
31
+
32
+ return next({
33
+ App: hoistNonReactStatics(getStateApp, App)
28
34
  });
29
- };
35
+ },
36
+ init: function init(_ref2, next) {
37
+ var context = _ref2.context;
38
+ var storeConfig = config || {};
30
39
 
31
- return next({
32
- App: hoistNonReactStatics(getStateApp, App)
33
- });
34
- },
35
- init: function init(_ref2, next) {
36
- var context = _ref2.context;
37
- var storeConfig = config || {};
40
+ if (typeof window !== 'undefined') {
41
+ var _window, _window$_SSR_DATA, _window$_SSR_DATA$dat;
38
42
 
39
- if (typeof window !== 'undefined') {
40
- var _window, _window$_SSR_DATA, _window$_SSR_DATA$dat;
43
+ storeConfig.initialState = storeConfig.initialState || ((_window = window) === null || _window === void 0 ? void 0 : (_window$_SSR_DATA = _window._SSR_DATA) === null || _window$_SSR_DATA === void 0 ? void 0 : (_window$_SSR_DATA$dat = _window$_SSR_DATA.data) === null || _window$_SSR_DATA$dat === void 0 ? void 0 : _window$_SSR_DATA$dat.storeState) || {};
44
+ }
41
45
 
42
- storeConfig.initialState = storeConfig.initialState || ((_window = window) === null || _window === void 0 ? void 0 : (_window$_SSR_DATA = _window._SSR_DATA) === null || _window$_SSR_DATA === void 0 ? void 0 : (_window$_SSR_DATA$dat = _window$_SSR_DATA.data) === null || _window$_SSR_DATA$dat === void 0 ? void 0 : _window$_SSR_DATA$dat.storeState) || {};
46
+ context.store = createStore(storeConfig);
47
+ next({
48
+ context: context
49
+ });
50
+ },
51
+ pickContext: function pickContext(_ref3, next) {
52
+ var context = _ref3.context,
53
+ pickedContext = _ref3.pickedContext;
54
+ return next({
55
+ context: context,
56
+ pickedContext: _objectSpread(_objectSpread({}, pickedContext), {}, {
57
+ store: context.store
58
+ })
59
+ });
43
60
  }
44
-
45
- context.store = createStore(storeConfig);
46
- next({
47
- context: context
48
- });
49
- },
50
- pickContext: function pickContext(_ref3, next) {
51
- var context = _ref3.context,
52
- pickedContext = _ref3.pickedContext;
53
- return next({
54
- context: context,
55
- pickedContext: _objectSpread(_objectSpread({}, pickedContext), {}, {
56
- store: context.store
57
- })
58
- });
59
- }
60
- };
61
- }, {
62
- name: '@modern-js/plugin-state'
63
- });
61
+ };
62
+ }
63
+ };
64
64
  };
65
65
 
66
66
  export default state;
@@ -1,17 +1,5 @@
1
- declare const index: import("@modern-js/core").AsyncPlugin<Partial<import("@modern-js/core").Progresses2Threads<{
2
- config: import("@modern-js/core").ParallelWorkflow<void, unknown>;
3
- resolvedConfig: import("@modern-js/core").AsyncWaterfall<{
4
- resolved: import("@modern-js/core").NormalizedConfig;
5
- }>;
6
- validateSchema: import("@modern-js/core").ParallelWorkflow<void, unknown>;
7
- prepare: import("@modern-js/core").AsyncWorkflow<void, void>;
8
- commands: import("@modern-js/core").AsyncWorkflow<{
9
- program: import("commander").Command;
10
- }, void>;
11
- watchFiles: import("@modern-js/core").ParallelWorkflow<void, unknown>;
12
- fileChange: import("@modern-js/core").AsyncWorkflow<{
13
- filename: string;
14
- }, void>;
15
- beforeExit: import("@modern-js/core").AsyncWorkflow<void, void>;
16
- } & import("@modern-js/core").ClearDraftProgress<import("@modern-js/core").Hooks>>>>;
17
- export default index;
1
+ import type { CliPlugin } from '@modern-js/core';
2
+
3
+ declare const _default: () => CliPlugin;
4
+
5
+ export default _default;
@@ -1,5 +1,5 @@
1
- /// <reference types="react" />
2
1
  import { createStore, Store } from '@modern-js-reduck/store';
2
+ import type { Plugin } from '@modern-js/runtime-core';
3
3
  declare module '@modern-js/runtime-core' {
4
4
  interface RuntimeContext {
5
5
  store: Store;
@@ -12,31 +12,6 @@ declare module '@modern-js/runtime-core' {
12
12
  }
13
13
  }
14
14
  declare type PluginProps = Parameters<typeof createStore>[0];
15
- declare const state: (config: PluginProps) => import("@modern-js/core").Plugin<Partial<import("@modern-js/runtime-core").Progresses2Threads<{
16
- hoc: import("@modern-js/runtime-core").Pipeline<{
17
- App: import("react").ComponentType<any>;
18
- }, import("react").ComponentType<any>>;
19
- provide: import("@modern-js/runtime-core").Pipeline<{
20
- element: JSX.Element;
21
- readonly props: import("@modern-js/runtime-core/src/plugin").AppProps;
22
- readonly context: import("@modern-js/runtime-core").RuntimeContext;
23
- }, JSX.Element>;
24
- client: import("@modern-js/runtime-core").AsyncPipeline<{
25
- App: import("react").ComponentType<any>;
26
- readonly context?: import("@modern-js/runtime-core").RuntimeContext | undefined;
27
- rootElement: HTMLElement;
28
- }, void>;
29
- server: import("@modern-js/runtime-core").AsyncPipeline<{
30
- App: import("react").ComponentType<any>;
31
- readonly context?: import("@modern-js/runtime-core").RuntimeContext | undefined;
32
- }, string>;
33
- init: import("@modern-js/runtime-core").AsyncPipeline<{
34
- context: import("@modern-js/runtime-core").RuntimeContext;
35
- }, unknown>;
36
- pickContext: import("@modern-js/runtime-core").Pipeline<{
37
- context: import("@modern-js/runtime-core").RuntimeContext;
38
- pickedContext: import("@modern-js/runtime-core").TRuntimeContext;
39
- }, import("@modern-js/runtime-core").TRuntimeContext>;
40
- } & import("@modern-js/runtime-core").ClearDraftProgress<{}>>>>;
15
+ declare const state: (config: PluginProps) => Plugin;
41
16
  export default state;
42
17
  export * from '../plugins';
package/jest.config.js CHANGED
@@ -2,7 +2,6 @@ const sharedConfig = require('@scripts/jest-config');
2
2
 
3
3
  /** @type {import('@jest/types').Config.InitialOptions} */
4
4
  module.exports = {
5
- // eslint-disable-next-line node/no-unsupported-features/es-syntax
6
5
  ...sharedConfig,
7
6
  rootDir: __dirname,
8
7
  };
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "1.2.0",
14
+ "version": "1.2.3",
15
15
  "jsnext:source": "./src/runtime/index.tsx",
16
16
  "types": "./dist/types/runtime/index.d.ts",
17
17
  "main": "./dist/js/node/runtime/index.js",
@@ -46,6 +46,12 @@
46
46
  ],
47
47
  "plugins": [
48
48
  "./dist/types/plugins.d.ts"
49
+ ],
50
+ "cli": [
51
+ "./dist/types/cli/index.d.ts"
52
+ ],
53
+ "runtime": [
54
+ "./dist/types/runtime/index.d.ts"
49
55
  ]
50
56
  }
51
57
  },
@@ -62,10 +68,10 @@
62
68
  "hoist-non-react-statics": "^3.3.2"
63
69
  },
64
70
  "devDependencies": {
65
- "@modern-js/core": "^1.3.0",
66
- "@modern-js/plugin": "^1.2.0",
67
- "@modern-js/runtime-core": "^1.2.0",
68
- "@modern-js/utils": "^1.2.0",
71
+ "@modern-js/core": "1.6.1",
72
+ "@modern-js/plugin": "^1.3.2",
73
+ "@modern-js/runtime-core": "1.4.0",
74
+ "@modern-js/utils": "^1.3.7",
69
75
  "@types/hoist-non-react-statics": "^3.3.1",
70
76
  "@types/jest": "^26",
71
77
  "@types/node": "^14",
@@ -79,15 +85,12 @@
79
85
  },
80
86
  "sideEffects": false,
81
87
  "peerDependencies": {
82
- "@modern-js/core": "^1.3.0",
83
- "@modern-js/runtime-core": "^1.2.0",
84
88
  "react": "^17.0.2"
85
89
  },
86
90
  "modernConfig": {},
87
91
  "publishConfig": {
88
92
  "registry": "https://registry.npmjs.org/",
89
- "access": "public",
90
- "types": "./dist/types/runtime/index.d.ts"
93
+ "access": "public"
91
94
  },
92
95
  "scripts": {
93
96
  "new": "modern new",
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "@modern-js/tsconfig/base",
3
+ "compilerOptions": {
4
+ "declaration": true,
5
+ "jsx": "preserve",
6
+ "baseUrl": "./",
7
+ "outDir": "./out",
8
+ "emitDeclarationOnly": true,
9
+ "isolatedModules": true,
10
+ "paths": {},
11
+ "types": ["node", "jest"]
12
+ }
13
+ }
@@ -1,3 +0,0 @@
1
- {
2
- "extends": ["@modern-js-app"]
3
- }
package/src/cli/index.ts DELETED
@@ -1,144 +0,0 @@
1
- import path from 'path';
2
- import {
3
- getEntryOptions,
4
- createRuntimeExportsUtils,
5
- PLUGIN_SCHEMAS,
6
- } from '@modern-js/utils';
7
- import {
8
- createPlugin,
9
- useAppContext,
10
- useResolvedConfigContext,
11
- } from '@modern-js/core';
12
- import {} from '../types';
13
-
14
- const PLUGIN_IDENTIFIER = 'state';
15
-
16
- const index = createPlugin(
17
- (() => {
18
- const stateConfigMap = new Map<string, any>();
19
-
20
- let pluginsExportsUtils: any;
21
- const stateModulePath = path.resolve(__dirname, '../../../../');
22
-
23
- return {
24
- config() {
25
- // eslint-disable-next-line react-hooks/rules-of-hooks
26
- const appContext = useAppContext();
27
-
28
- pluginsExportsUtils = createRuntimeExportsUtils(
29
- appContext.internalDirectory,
30
- 'plugins',
31
- );
32
-
33
- return {
34
- source: {
35
- alias: {
36
- '@modern-js/runtime/plugins': pluginsExportsUtils.getPath(),
37
- },
38
- },
39
- };
40
- },
41
- modifyEntryImports({ entrypoint, imports }: any) {
42
- const { entryName } = entrypoint;
43
- // eslint-disable-next-line react-hooks/rules-of-hooks
44
- const userConfig = useResolvedConfigContext();
45
- // eslint-disable-next-line react-hooks/rules-of-hooks
46
- const { packageName } = useAppContext();
47
-
48
- const stateConfig = getEntryOptions(
49
- entryName,
50
- userConfig.runtime,
51
- userConfig.runtimeByEntries,
52
- packageName,
53
- )?.state;
54
-
55
- stateConfigMap.set(entryName, stateConfig);
56
-
57
- const getEnabledPlugins = () => {
58
- const internalPlugins = [
59
- 'immer',
60
- 'effects',
61
- 'autoActions',
62
- 'devtools',
63
- ];
64
-
65
- return internalPlugins.filter(name => stateConfig[name] !== false);
66
- };
67
-
68
- if (stateConfig) {
69
- imports.push({
70
- value: '@modern-js/runtime/plugins',
71
- specifiers: [
72
- {
73
- imported: PLUGIN_IDENTIFIER,
74
- },
75
- ],
76
- });
77
- imports.push({
78
- value: '@modern-js/runtime/model',
79
- specifiers: getEnabledPlugins().map(imported => ({ imported })),
80
- initialize: `
81
- const createStatePlugins = (config) => {
82
- const plugins = [];
83
-
84
- ${getEnabledPlugins()
85
- .map(
86
- name => `
87
- plugins.push(${name}(config['${name}']));
88
- `,
89
- )
90
- .join('\n')}
91
-
92
- return plugins;
93
- }
94
- `,
95
- });
96
- }
97
-
98
- return {
99
- entrypoint,
100
- imports,
101
- };
102
- },
103
-
104
- modifyEntryRuntimePlugins({ entrypoint, plugins }: any) {
105
- const stateOptions = stateConfigMap.get(entrypoint.entryName);
106
-
107
- if (stateOptions) {
108
- const isBoolean = typeof stateOptions === 'boolean';
109
-
110
- let options = isBoolean ? '{}' : JSON.stringify(stateOptions);
111
-
112
- options = `${options.substr(0, options.length - 1)}${
113
- isBoolean ? '' : ','
114
- }plugins: createStatePlugins(${JSON.stringify(
115
- stateConfigMap.get(entrypoint.entryName),
116
- )})}`;
117
-
118
- plugins.push({
119
- name: PLUGIN_IDENTIFIER,
120
- options,
121
- });
122
- }
123
- return {
124
- entrypoint,
125
- plugins,
126
- };
127
- },
128
- validateSchema() {
129
- return PLUGIN_SCHEMAS['@modern-js/plugin-state'];
130
- },
131
- addRuntimeExports() {
132
- pluginsExportsUtils.addExport(
133
- `export { default as state } from '${stateModulePath}'`,
134
- );
135
- },
136
- };
137
- }) as any,
138
- {
139
- name: '@modern-js/plugin-state',
140
- required: ['@modern-js/runtime'],
141
- },
142
- );
143
-
144
- export default index;
package/src/plugins.ts DELETED
@@ -1,9 +0,0 @@
1
- import { plugin as effectsPlugin } from '@modern-js-reduck/plugin-effects';
2
- import autoActionsPlugin from '@modern-js-reduck/plugin-auto-actions';
3
- import immerPlugin from '@modern-js-reduck/plugin-immutable';
4
-
5
- export { default as devtools } from '@modern-js-reduck/plugin-devtools';
6
-
7
- export const effects = () => effectsPlugin;
8
- export const immer = () => immerPlugin;
9
- export const autoActions = () => autoActionsPlugin;
@@ -1,4 +0,0 @@
1
- export * from '@modern-js-reduck/react';
2
- export { model, createStore } from '@modern-js-reduck/store';
3
- export { default } from './plugin';
4
- export * from './plugin';
@@ -1,73 +0,0 @@
1
- // eslint-disable-next-line filenames/match-exported
2
- import { useContext } from 'react';
3
- import { createPlugin, RuntimeReactContext } from '@modern-js/runtime-core';
4
- import { createStore, Store } from '@modern-js-reduck/store';
5
- import { Provider } from '@modern-js-reduck/react';
6
- import hoistNonReactStatics from 'hoist-non-react-statics';
7
-
8
- declare module '@modern-js/runtime-core' {
9
- interface RuntimeContext {
10
- store: Store;
11
- }
12
-
13
- interface TRuntimeContext {
14
- store: Store;
15
- }
16
-
17
- interface SSRData {
18
- storeState: any;
19
- }
20
- }
21
-
22
- type PluginProps = Parameters<typeof createStore>[0];
23
-
24
- const state = (config: PluginProps) =>
25
- createPlugin(
26
- () => ({
27
- hoc({ App }, next) {
28
- const getStateApp = (props: any) => {
29
- // eslint-disable-next-line react-hooks/rules-of-hooks
30
- const context = useContext(RuntimeReactContext);
31
-
32
- return (
33
- <Provider store={context.store} config={config}>
34
- <App {...props} />
35
- </Provider>
36
- );
37
- };
38
- return next({
39
- App: hoistNonReactStatics(getStateApp, App),
40
- });
41
- },
42
- init({ context }, next) {
43
- const storeConfig = config || {};
44
-
45
- if (typeof window !== 'undefined') {
46
- storeConfig.initialState =
47
- storeConfig.initialState ||
48
- window?._SSR_DATA?.data?.storeState ||
49
- {};
50
- }
51
-
52
- context.store = createStore(storeConfig);
53
-
54
- next({ context });
55
- },
56
- pickContext({ context, pickedContext }, next) {
57
- return next({
58
- context,
59
- pickedContext: {
60
- ...pickedContext,
61
- store: context.store,
62
- },
63
- });
64
- },
65
- }),
66
- {
67
- name: '@modern-js/plugin-state',
68
- },
69
- );
70
-
71
- export default state;
72
-
73
- export * from '../plugins';