chayns-api 2.0.10 → 2.1.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.
- package/dist/cjs/components/withCompatMode.js +3 -7
- package/dist/cjs/host/module/utils/loadComponent.js +35 -6
- package/dist/cjs/util/initModuleFederationSharing.js +27 -13
- package/dist/esm/components/withCompatMode.js +3 -7
- package/dist/esm/host/module/utils/loadComponent.js +35 -6
- package/dist/esm/util/initModuleFederationSharing.js +27 -13
- package/dist/types/components/withCompatMode.d.ts +31 -2
- package/package.json +3 -3
|
@@ -68,18 +68,14 @@ const withCompatMode = Component => {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
return {
|
|
71
|
-
Component:
|
|
72
|
-
|
|
73
|
-
})))),
|
|
74
|
-
CompatComponent: /*#__PURE__*/_react.default.forwardRef((props, ref) => /*#__PURE__*/_react.default.createElement(CompatComponent, _extends({}, props, {
|
|
75
|
-
innerRef: ref
|
|
76
|
-
}))),
|
|
71
|
+
Component: props => /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(Component, props)),
|
|
72
|
+
CompatComponent,
|
|
77
73
|
// @ts-expect-error will be set by chayns-toolkit via DefinePlugin
|
|
78
74
|
requiredVersion: __REQUIRED_REACT_VERSION__,
|
|
79
75
|
environment: process.env.NODE_ENV,
|
|
80
76
|
buildEnv: process.env.BUILD_ENV || process.env.NODE_ENV,
|
|
81
77
|
appVersion: process.env.VERSION,
|
|
82
|
-
version: 2
|
|
78
|
+
version: 2.1
|
|
83
79
|
};
|
|
84
80
|
};
|
|
85
81
|
exports.withCompatMode = withCompatMode;
|
|
@@ -51,7 +51,8 @@ const loadComponent = (scope, module, url, skipCompatMode = false, preventSingle
|
|
|
51
51
|
console.warn('[chayns-api] skipCompatMode-option is deprecated and is set automatically now');
|
|
52
52
|
}
|
|
53
53
|
const {
|
|
54
|
-
loadShareSync
|
|
54
|
+
loadShareSync,
|
|
55
|
+
getInstance
|
|
55
56
|
} = globalThis.moduleFederationRuntime;
|
|
56
57
|
const {
|
|
57
58
|
componentMap
|
|
@@ -69,23 +70,51 @@ const loadComponent = (scope, module, url, skipCompatMode = false, preventSingle
|
|
|
69
70
|
requiredVersion,
|
|
70
71
|
environment
|
|
71
72
|
} = Module.default;
|
|
72
|
-
const shareScopes = await new Promise(resolve => {
|
|
73
|
+
const shareScopes = typeof getInstance === 'function' ? getInstance().shareScopeMap : await new Promise(resolve => {
|
|
73
74
|
loadShareSync('react', {
|
|
74
75
|
resolver: shareOptions => {
|
|
75
|
-
|
|
76
|
+
const optionsMap = shareOptions.reduce((p, e) => {
|
|
77
|
+
p[e.version] = e;
|
|
78
|
+
e.version;
|
|
79
|
+
return p;
|
|
80
|
+
}, {});
|
|
81
|
+
resolve({
|
|
82
|
+
'chayns-api': optionsMap
|
|
83
|
+
});
|
|
76
84
|
return shareOptions[0];
|
|
77
85
|
}
|
|
78
86
|
});
|
|
79
87
|
});
|
|
80
|
-
const matchReactVersion = requiredVersion && _semver.default.satisfies(hostVersion, requiredVersion) && !shareScopes.some(({
|
|
88
|
+
const matchReactVersion = requiredVersion && _semver.default.satisfies(hostVersion, requiredVersion) && !Object.values(shareScopes['chayns-api'].react).some(({
|
|
81
89
|
version,
|
|
82
90
|
from
|
|
83
91
|
}) => {
|
|
84
92
|
return _semver.default.gt(version, hostVersion) && _semver.default.satisfies(version, requiredVersion) || scope === from.split('-').join('_');
|
|
85
93
|
});
|
|
86
|
-
if (!matchReactVersion || environment !== 'production' || process.env.NODE_ENV === 'development' || Module.default.version
|
|
94
|
+
if (!matchReactVersion || environment !== 'production' || process.env.NODE_ENV === 'development' || (Module.default.version || 1) < 2) {
|
|
95
|
+
const OriginalCompatComponent = (Module.default.version || 1) < 2.1 ? Module.default.CompatComponent.render({}).type.prototype : Module.default.CompatComponent.prototype;
|
|
96
|
+
class CompatComponent extends _react.default.Component {
|
|
97
|
+
constructor(props) {
|
|
98
|
+
super(props);
|
|
99
|
+
this.ref = /*#__PURE__*/_react.default.createRef();
|
|
100
|
+
}
|
|
101
|
+
componentDidMount() {
|
|
102
|
+
OriginalCompatComponent.componentDidMount.apply(this);
|
|
103
|
+
}
|
|
104
|
+
componentDidUpdate(prevProps, prevState, snapshot) {
|
|
105
|
+
OriginalCompatComponent.componentDidUpdate.apply(this, prevProps, prevState, snapshot);
|
|
106
|
+
}
|
|
107
|
+
componentWillUnmount() {
|
|
108
|
+
OriginalCompatComponent.componentWillUnmount.apply(this);
|
|
109
|
+
}
|
|
110
|
+
render() {
|
|
111
|
+
return /*#__PURE__*/_react.default.createElement('div', {
|
|
112
|
+
ref: this.ref
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
87
116
|
return {
|
|
88
|
-
default:
|
|
117
|
+
default: CompatComponent
|
|
89
118
|
};
|
|
90
119
|
}
|
|
91
120
|
return {
|
|
@@ -7,6 +7,12 @@ exports.initModuleFederationSharing = void 0;
|
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
9
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
let ReactDOMClient;
|
|
11
|
+
try {
|
|
12
|
+
ReactDOMClient = require('react-dom/client');
|
|
13
|
+
} catch (e) {
|
|
14
|
+
// do nothing
|
|
15
|
+
}
|
|
10
16
|
const initModuleFederationSharing = ({
|
|
11
17
|
name
|
|
12
18
|
}) => {
|
|
@@ -23,22 +29,30 @@ const initModuleFederationSharing = ({
|
|
|
23
29
|
const {
|
|
24
30
|
init
|
|
25
31
|
} = globalThis.moduleFederationRuntime;
|
|
32
|
+
const shared = {
|
|
33
|
+
react: {
|
|
34
|
+
version: _react.default.version,
|
|
35
|
+
scope: 'chayns-api',
|
|
36
|
+
lib: () => _react.default
|
|
37
|
+
},
|
|
38
|
+
'react-dom': {
|
|
39
|
+
version: _react.default.version,
|
|
40
|
+
// intended, because react dom.version is not identical to package json react version (hash in version)
|
|
41
|
+
scope: 'chayns-api',
|
|
42
|
+
lib: () => _reactDom.default
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
if (ReactDOMClient) {
|
|
46
|
+
shared['react-dom/client'] = {
|
|
47
|
+
version: _react.default.version,
|
|
48
|
+
scope: 'chayns-api',
|
|
49
|
+
lib: () => ReactDOMClient
|
|
50
|
+
};
|
|
51
|
+
}
|
|
26
52
|
init({
|
|
27
53
|
name: name !== null && name !== void 0 ? name : '',
|
|
28
54
|
remotes: [],
|
|
29
|
-
shared
|
|
30
|
-
react: {
|
|
31
|
-
version: _react.default.version,
|
|
32
|
-
scope: 'chayns-api',
|
|
33
|
-
lib: () => _react.default
|
|
34
|
-
},
|
|
35
|
-
'react-dom': {
|
|
36
|
-
version: _react.default.version,
|
|
37
|
-
// intended, because react dom.version is not identical to package json react version (hash in version)
|
|
38
|
-
scope: 'chayns-api',
|
|
39
|
-
lib: () => _reactDom.default
|
|
40
|
-
}
|
|
41
|
-
}
|
|
55
|
+
shared
|
|
42
56
|
});
|
|
43
57
|
};
|
|
44
58
|
exports.initModuleFederationSharing = initModuleFederationSharing;
|
|
@@ -61,17 +61,13 @@ export const withCompatMode = Component => {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
return {
|
|
64
|
-
Component:
|
|
65
|
-
|
|
66
|
-
})))),
|
|
67
|
-
CompatComponent: /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(CompatComponent, _extends({}, props, {
|
|
68
|
-
innerRef: ref
|
|
69
|
-
}))),
|
|
64
|
+
Component: props => /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Component, props)),
|
|
65
|
+
CompatComponent,
|
|
70
66
|
// @ts-expect-error will be set by chayns-toolkit via DefinePlugin
|
|
71
67
|
requiredVersion: __REQUIRED_REACT_VERSION__,
|
|
72
68
|
environment: process.env.NODE_ENV,
|
|
73
69
|
buildEnv: process.env.BUILD_ENV || process.env.NODE_ENV,
|
|
74
70
|
appVersion: process.env.VERSION,
|
|
75
|
-
version: 2
|
|
71
|
+
version: 2.1
|
|
76
72
|
};
|
|
77
73
|
};
|
|
@@ -46,7 +46,8 @@ const loadComponent = function (scope, module, url) {
|
|
|
46
46
|
console.warn('[chayns-api] skipCompatMode-option is deprecated and is set automatically now');
|
|
47
47
|
}
|
|
48
48
|
const {
|
|
49
|
-
loadShareSync
|
|
49
|
+
loadShareSync,
|
|
50
|
+
getInstance
|
|
50
51
|
} = globalThis.moduleFederationRuntime;
|
|
51
52
|
const {
|
|
52
53
|
componentMap
|
|
@@ -64,24 +65,52 @@ const loadComponent = function (scope, module, url) {
|
|
|
64
65
|
requiredVersion,
|
|
65
66
|
environment
|
|
66
67
|
} = Module.default;
|
|
67
|
-
const shareScopes = await new Promise(resolve => {
|
|
68
|
+
const shareScopes = typeof getInstance === 'function' ? getInstance().shareScopeMap : await new Promise(resolve => {
|
|
68
69
|
loadShareSync('react', {
|
|
69
70
|
resolver: shareOptions => {
|
|
70
|
-
|
|
71
|
+
const optionsMap = shareOptions.reduce((p, e) => {
|
|
72
|
+
p[e.version] = e;
|
|
73
|
+
e.version;
|
|
74
|
+
return p;
|
|
75
|
+
}, {});
|
|
76
|
+
resolve({
|
|
77
|
+
'chayns-api': optionsMap
|
|
78
|
+
});
|
|
71
79
|
return shareOptions[0];
|
|
72
80
|
}
|
|
73
81
|
});
|
|
74
82
|
});
|
|
75
|
-
const matchReactVersion = requiredVersion && semver.satisfies(hostVersion, requiredVersion) && !shareScopes.some(_ref => {
|
|
83
|
+
const matchReactVersion = requiredVersion && semver.satisfies(hostVersion, requiredVersion) && !Object.values(shareScopes['chayns-api'].react).some(_ref => {
|
|
76
84
|
let {
|
|
77
85
|
version,
|
|
78
86
|
from
|
|
79
87
|
} = _ref;
|
|
80
88
|
return semver.gt(version, hostVersion) && semver.satisfies(version, requiredVersion) || scope === from.split('-').join('_');
|
|
81
89
|
});
|
|
82
|
-
if (!matchReactVersion || environment !== 'production' || process.env.NODE_ENV === 'development' || Module.default.version
|
|
90
|
+
if (!matchReactVersion || environment !== 'production' || process.env.NODE_ENV === 'development' || (Module.default.version || 1) < 2) {
|
|
91
|
+
const OriginalCompatComponent = (Module.default.version || 1) < 2.1 ? Module.default.CompatComponent.render({}).type.prototype : Module.default.CompatComponent.prototype;
|
|
92
|
+
class CompatComponent extends React.Component {
|
|
93
|
+
constructor(props) {
|
|
94
|
+
super(props);
|
|
95
|
+
this.ref = /*#__PURE__*/React.createRef();
|
|
96
|
+
}
|
|
97
|
+
componentDidMount() {
|
|
98
|
+
OriginalCompatComponent.componentDidMount.apply(this);
|
|
99
|
+
}
|
|
100
|
+
componentDidUpdate(prevProps, prevState, snapshot) {
|
|
101
|
+
OriginalCompatComponent.componentDidUpdate.apply(this, prevProps, prevState, snapshot);
|
|
102
|
+
}
|
|
103
|
+
componentWillUnmount() {
|
|
104
|
+
OriginalCompatComponent.componentWillUnmount.apply(this);
|
|
105
|
+
}
|
|
106
|
+
render() {
|
|
107
|
+
return /*#__PURE__*/React.createElement('div', {
|
|
108
|
+
ref: this.ref
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
83
112
|
return {
|
|
84
|
-
default:
|
|
113
|
+
default: CompatComponent
|
|
85
114
|
};
|
|
86
115
|
}
|
|
87
116
|
return {
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import ReactDOM from 'react-dom';
|
|
3
|
+
let ReactDOMClient;
|
|
4
|
+
try {
|
|
5
|
+
ReactDOMClient = require('react-dom/client');
|
|
6
|
+
} catch (e) {
|
|
7
|
+
// do nothing
|
|
8
|
+
}
|
|
3
9
|
export const initModuleFederationSharing = _ref => {
|
|
4
10
|
let {
|
|
5
11
|
name
|
|
@@ -17,21 +23,29 @@ export const initModuleFederationSharing = _ref => {
|
|
|
17
23
|
const {
|
|
18
24
|
init
|
|
19
25
|
} = globalThis.moduleFederationRuntime;
|
|
26
|
+
const shared = {
|
|
27
|
+
react: {
|
|
28
|
+
version: React.version,
|
|
29
|
+
scope: 'chayns-api',
|
|
30
|
+
lib: () => React
|
|
31
|
+
},
|
|
32
|
+
'react-dom': {
|
|
33
|
+
version: React.version,
|
|
34
|
+
// intended, because react dom.version is not identical to package json react version (hash in version)
|
|
35
|
+
scope: 'chayns-api',
|
|
36
|
+
lib: () => ReactDOM
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
if (ReactDOMClient) {
|
|
40
|
+
shared['react-dom/client'] = {
|
|
41
|
+
version: React.version,
|
|
42
|
+
scope: 'chayns-api',
|
|
43
|
+
lib: () => ReactDOMClient
|
|
44
|
+
};
|
|
45
|
+
}
|
|
20
46
|
init({
|
|
21
47
|
name: name !== null && name !== void 0 ? name : '',
|
|
22
48
|
remotes: [],
|
|
23
|
-
shared
|
|
24
|
-
react: {
|
|
25
|
-
version: React.version,
|
|
26
|
-
scope: 'chayns-api',
|
|
27
|
-
lib: () => React
|
|
28
|
-
},
|
|
29
|
-
'react-dom': {
|
|
30
|
-
version: React.version,
|
|
31
|
-
// intended, because react dom.version is not identical to package json react version (hash in version)
|
|
32
|
-
scope: 'chayns-api',
|
|
33
|
-
lib: () => ReactDOM
|
|
34
|
-
}
|
|
35
|
-
}
|
|
49
|
+
shared
|
|
36
50
|
});
|
|
37
51
|
};
|
|
@@ -1,10 +1,39 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import React, { RefObject } from 'react';
|
|
2
3
|
type Props = {
|
|
3
4
|
innerRef?: RefObject<unknown>;
|
|
4
5
|
} & object;
|
|
5
6
|
export declare const withCompatMode: <P extends Props>(Component: React.ComponentType<P>) => {
|
|
6
|
-
Component: React.
|
|
7
|
-
CompatComponent:
|
|
7
|
+
Component: (props: any) => React.JSX.Element;
|
|
8
|
+
CompatComponent: {
|
|
9
|
+
new (props: P): {
|
|
10
|
+
ref: RefObject<HTMLDivElement>;
|
|
11
|
+
root: any;
|
|
12
|
+
timeout?: NodeJS.Timeout | undefined;
|
|
13
|
+
componentDidMount(): void;
|
|
14
|
+
componentDidUpdate(): void;
|
|
15
|
+
componentWillUnmount(): void;
|
|
16
|
+
render(): React.JSX.Element;
|
|
17
|
+
context: unknown;
|
|
18
|
+
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<P>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
19
|
+
forceUpdate(callback?: (() => void) | undefined): void;
|
|
20
|
+
readonly props: Readonly<P>;
|
|
21
|
+
state: Readonly<{}>;
|
|
22
|
+
refs: {
|
|
23
|
+
[key: string]: React.ReactInstance;
|
|
24
|
+
};
|
|
25
|
+
shouldComponentUpdate?(nextProps: Readonly<P>, nextState: Readonly<{}>, nextContext: any): boolean;
|
|
26
|
+
componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
|
|
27
|
+
getSnapshotBeforeUpdate?(prevProps: Readonly<P>, prevState: Readonly<{}>): any;
|
|
28
|
+
componentWillMount?(): void;
|
|
29
|
+
UNSAFE_componentWillMount?(): void;
|
|
30
|
+
componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void;
|
|
31
|
+
UNSAFE_componentWillReceiveProps?(nextProps: Readonly<P>, nextContext: any): void;
|
|
32
|
+
componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<{}>, nextContext: any): void;
|
|
33
|
+
UNSAFE_componentWillUpdate?(nextProps: Readonly<P>, nextState: Readonly<{}>, nextContext: any): void;
|
|
34
|
+
};
|
|
35
|
+
contextType?: React.Context<any> | undefined;
|
|
36
|
+
};
|
|
8
37
|
requiredVersion: any;
|
|
9
38
|
environment: string | undefined;
|
|
10
39
|
buildEnv: string | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chayns-api",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "new chayns api",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"typescript": "^4.9.5"
|
|
83
83
|
},
|
|
84
84
|
"peerDependencies": {
|
|
85
|
-
"react": "^16.8 || ^17.0.1 || ^18.0.0",
|
|
86
|
-
"react-dom": "^16.8 || ^17.0.1 || ^18.0.0"
|
|
85
|
+
"react": "^16.8 || ^17.0.1 || ^18.0.0 || ^19.0.0",
|
|
86
|
+
"react-dom": "^16.8 || ^17.0.1 || ^18.0.0 || ^19.0.0"
|
|
87
87
|
}
|
|
88
88
|
}
|