remote-reload-utils 0.0.1 → 0.0.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.
- package/dist/loadReactVersion.d.ts +4 -0
- package/dist/loadRemote.d.ts +5 -11
- package/dist/main.cjs +36 -31
- package/dist/main.js +36 -31
- package/dist/react-mf-adapter.d.ts +0 -0
- package/dist/types.d.ts +17 -0
- package/package.json +7 -6
package/dist/loadRemote.d.ts
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
name: string;
|
|
3
|
-
pkg: string;
|
|
4
|
-
version?: string;
|
|
5
|
-
retries?: number;
|
|
6
|
-
delay?: number;
|
|
7
|
-
localFallback?: string;
|
|
8
|
-
cacheTTL?: number;
|
|
9
|
-
revalidate?: boolean;
|
|
10
|
-
}
|
|
1
|
+
import { LoadRemoteOptions } from './types';
|
|
11
2
|
/**
|
|
12
3
|
* 多版本共存的 loadRemote
|
|
13
4
|
*/
|
|
14
|
-
export declare function loadRemoteMultiVersion(options: LoadRemoteOptions): Promise<
|
|
5
|
+
export declare function loadRemoteMultiVersion(options: LoadRemoteOptions): Promise<{
|
|
6
|
+
scopeName: string;
|
|
7
|
+
mf: import("@module-federation/enhanced/runtime").ModuleFederation;
|
|
8
|
+
}>;
|
package/dist/main.cjs
CHANGED
|
@@ -26,7 +26,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
loadRemoteMultiVersion: ()=>loadRemoteMultiVersion
|
|
28
28
|
});
|
|
29
|
-
const runtime_namespaceObject = require("@module-federation/runtime");
|
|
29
|
+
const runtime_namespaceObject = require("@module-federation/enhanced/runtime");
|
|
30
30
|
async function fetchLatestVersion(pkg) {
|
|
31
31
|
const res = await fetch(`https://registry.npmjs.org/${pkg}`);
|
|
32
32
|
if (!res.ok) throw new Error(`\u{65E0}\u{6CD5}\u{83B7}\u{53D6} ${pkg} \u{7684}\u{7248}\u{672C}\u{4FE1}\u{606F}`);
|
|
@@ -48,12 +48,6 @@ function setVersionCache(pkg, version) {
|
|
|
48
48
|
};
|
|
49
49
|
localStorage.setItem('mf-multi-version', JSON.stringify(cache));
|
|
50
50
|
}
|
|
51
|
-
function buildCdnUrls(pkg, version) {
|
|
52
|
-
return [
|
|
53
|
-
`https://cdn.jsdelivr.net/npm/${pkg}@${version}/dist/remoteEntry.js`,
|
|
54
|
-
`https://unpkg.com/${pkg}@${version}/dist/remoteEntry.js`
|
|
55
|
-
];
|
|
56
|
-
}
|
|
57
51
|
async function loadRemoteMultiVersion(options) {
|
|
58
52
|
let { name, pkg, version = 'latest', retries = 3, delay = 1000, localFallback, cacheTTL = 86400000, revalidate = true } = options;
|
|
59
53
|
let finalVersion = version;
|
|
@@ -62,42 +56,53 @@ async function loadRemoteMultiVersion(options) {
|
|
|
62
56
|
const versions = cache[pkg] || {};
|
|
63
57
|
const latestCached = Object.keys(versions).sort((a, b)=>versions[b].timestamp - versions[a].timestamp)[0];
|
|
64
58
|
if (latestCached && Date.now() - versions[latestCached].timestamp < cacheTTL) {
|
|
65
|
-
console.log(`[MF] \u{4F7F}\u{7528}\u{7F13}\u{5B58}\u{7248}\u{672C}: ${pkg}@${latestCached}`);
|
|
66
59
|
finalVersion = latestCached;
|
|
67
60
|
if (revalidate) fetchLatestVersion(pkg).then((latest)=>{
|
|
68
|
-
if (latest !== latestCached)
|
|
69
|
-
|
|
70
|
-
setVersionCache(pkg, latest);
|
|
71
|
-
}
|
|
72
|
-
}).catch((err)=>console.warn(`[MF] \u{68C0}\u{67E5}\u{66F4}\u{65B0}\u{5931}\u{8D25}: ${pkg}`, err));
|
|
61
|
+
if (latest !== latestCached) setVersionCache(pkg, latest);
|
|
62
|
+
}).catch(()=>{});
|
|
73
63
|
} else {
|
|
74
64
|
finalVersion = await fetchLatestVersion(pkg);
|
|
75
|
-
console.log(`[MF] \u{83B7}\u{53D6}\u{6700}\u{65B0}\u{7248}\u{672C}: ${pkg}@${finalVersion}`);
|
|
76
65
|
setVersionCache(pkg, finalVersion);
|
|
77
66
|
}
|
|
78
67
|
}
|
|
79
|
-
const scopeName = `${name}
|
|
80
|
-
const urls =
|
|
68
|
+
const scopeName = `${name}`;
|
|
69
|
+
const urls = [
|
|
70
|
+
`https://cdn.jsdelivr.net/npm/${pkg}@${finalVersion}/dist/remoteEntry.js`,
|
|
71
|
+
`https://unpkg.com/${pkg}@${finalVersion}/dist/remoteEntry.js`
|
|
72
|
+
];
|
|
81
73
|
if (localFallback) urls.push(localFallback);
|
|
82
|
-
for (let url of urls){
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
(0, runtime_namespaceObject.registerRemotes)([
|
|
74
|
+
for (let url of urls)for(let i = 0; i < retries; i++)try {
|
|
75
|
+
const mf = (0, runtime_namespaceObject.createInstance)({
|
|
76
|
+
name: 'host',
|
|
77
|
+
remotes: [
|
|
87
78
|
{
|
|
88
79
|
name: scopeName,
|
|
89
80
|
entry: url
|
|
90
81
|
}
|
|
91
|
-
]
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
82
|
+
],
|
|
83
|
+
shared: {
|
|
84
|
+
react: {
|
|
85
|
+
shareConfig: {
|
|
86
|
+
singleton: true,
|
|
87
|
+
eager: true,
|
|
88
|
+
requiredVersion: false
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
'react-dom': {
|
|
92
|
+
shareConfig: {
|
|
93
|
+
singleton: true,
|
|
94
|
+
eager: true,
|
|
95
|
+
requiredVersion: false
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
scopeName,
|
|
102
|
+
mf
|
|
103
|
+
};
|
|
104
|
+
} catch {
|
|
105
|
+
await new Promise((res)=>setTimeout(res, delay));
|
|
101
106
|
}
|
|
102
107
|
throw new Error(`[MF] \u{6240}\u{6709} CDN \u{52A0}\u{8F7D}\u{5931}\u{8D25}: ${urls.join(', ')}`);
|
|
103
108
|
}
|
package/dist/main.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createInstance } from "@module-federation/enhanced/runtime";
|
|
2
2
|
async function fetchLatestVersion(pkg) {
|
|
3
3
|
const res = await fetch(`https://registry.npmjs.org/${pkg}`);
|
|
4
4
|
if (!res.ok) throw new Error(`\u{65E0}\u{6CD5}\u{83B7}\u{53D6} ${pkg} \u{7684}\u{7248}\u{672C}\u{4FE1}\u{606F}`);
|
|
@@ -20,12 +20,6 @@ function setVersionCache(pkg, version) {
|
|
|
20
20
|
};
|
|
21
21
|
localStorage.setItem('mf-multi-version', JSON.stringify(cache));
|
|
22
22
|
}
|
|
23
|
-
function buildCdnUrls(pkg, version) {
|
|
24
|
-
return [
|
|
25
|
-
`https://cdn.jsdelivr.net/npm/${pkg}@${version}/dist/remoteEntry.js`,
|
|
26
|
-
`https://unpkg.com/${pkg}@${version}/dist/remoteEntry.js`
|
|
27
|
-
];
|
|
28
|
-
}
|
|
29
23
|
async function loadRemoteMultiVersion(options) {
|
|
30
24
|
let { name, pkg, version = 'latest', retries = 3, delay = 1000, localFallback, cacheTTL = 86400000, revalidate = true } = options;
|
|
31
25
|
let finalVersion = version;
|
|
@@ -34,42 +28,53 @@ async function loadRemoteMultiVersion(options) {
|
|
|
34
28
|
const versions = cache[pkg] || {};
|
|
35
29
|
const latestCached = Object.keys(versions).sort((a, b)=>versions[b].timestamp - versions[a].timestamp)[0];
|
|
36
30
|
if (latestCached && Date.now() - versions[latestCached].timestamp < cacheTTL) {
|
|
37
|
-
console.log(`[MF] \u{4F7F}\u{7528}\u{7F13}\u{5B58}\u{7248}\u{672C}: ${pkg}@${latestCached}`);
|
|
38
31
|
finalVersion = latestCached;
|
|
39
32
|
if (revalidate) fetchLatestVersion(pkg).then((latest)=>{
|
|
40
|
-
if (latest !== latestCached)
|
|
41
|
-
|
|
42
|
-
setVersionCache(pkg, latest);
|
|
43
|
-
}
|
|
44
|
-
}).catch((err)=>console.warn(`[MF] \u{68C0}\u{67E5}\u{66F4}\u{65B0}\u{5931}\u{8D25}: ${pkg}`, err));
|
|
33
|
+
if (latest !== latestCached) setVersionCache(pkg, latest);
|
|
34
|
+
}).catch(()=>{});
|
|
45
35
|
} else {
|
|
46
36
|
finalVersion = await fetchLatestVersion(pkg);
|
|
47
|
-
console.log(`[MF] \u{83B7}\u{53D6}\u{6700}\u{65B0}\u{7248}\u{672C}: ${pkg}@${finalVersion}`);
|
|
48
37
|
setVersionCache(pkg, finalVersion);
|
|
49
38
|
}
|
|
50
39
|
}
|
|
51
|
-
const scopeName = `${name}
|
|
52
|
-
const urls =
|
|
40
|
+
const scopeName = `${name}`;
|
|
41
|
+
const urls = [
|
|
42
|
+
`https://cdn.jsdelivr.net/npm/${pkg}@${finalVersion}/dist/remoteEntry.js`,
|
|
43
|
+
`https://unpkg.com/${pkg}@${finalVersion}/dist/remoteEntry.js`
|
|
44
|
+
];
|
|
53
45
|
if (localFallback) urls.push(localFallback);
|
|
54
|
-
for (let url of urls){
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
registerRemotes([
|
|
46
|
+
for (let url of urls)for(let i = 0; i < retries; i++)try {
|
|
47
|
+
const mf = createInstance({
|
|
48
|
+
name: 'host',
|
|
49
|
+
remotes: [
|
|
59
50
|
{
|
|
60
51
|
name: scopeName,
|
|
61
52
|
entry: url
|
|
62
53
|
}
|
|
63
|
-
]
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
54
|
+
],
|
|
55
|
+
shared: {
|
|
56
|
+
react: {
|
|
57
|
+
shareConfig: {
|
|
58
|
+
singleton: true,
|
|
59
|
+
eager: true,
|
|
60
|
+
requiredVersion: false
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
'react-dom': {
|
|
64
|
+
shareConfig: {
|
|
65
|
+
singleton: true,
|
|
66
|
+
eager: true,
|
|
67
|
+
requiredVersion: false
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
scopeName,
|
|
74
|
+
mf
|
|
75
|
+
};
|
|
76
|
+
} catch {
|
|
77
|
+
await new Promise((res)=>setTimeout(res, delay));
|
|
73
78
|
}
|
|
74
79
|
throw new Error(`[MF] \u{6240}\u{6709} CDN \u{52A0}\u{8F7D}\u{5931}\u{8D25}: ${urls.join(', ')}`);
|
|
75
80
|
}
|
|
File without changes
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface LoadRemoteOptions {
|
|
2
|
+
name: string;
|
|
3
|
+
pkg: string;
|
|
4
|
+
version?: string;
|
|
5
|
+
retries?: number;
|
|
6
|
+
delay?: number;
|
|
7
|
+
localFallback?: string;
|
|
8
|
+
cacheTTL?: number;
|
|
9
|
+
revalidate?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface VersionCache {
|
|
12
|
+
[pkg: string]: {
|
|
13
|
+
[version: string]: {
|
|
14
|
+
timestamp: number;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "remote-reload-utils",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
7
|
-
"types": "./dist/
|
|
8
|
-
"import": "./dist/
|
|
9
|
-
"require": "./dist/
|
|
7
|
+
"types": "./dist/loadRemote.d.ts",
|
|
8
|
+
"import": "./dist/main.js",
|
|
9
|
+
"require": "./dist/main.cjs"
|
|
10
10
|
}
|
|
11
11
|
},
|
|
12
12
|
"main": "./dist/index.cjs",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
],
|
|
17
17
|
"scripts": {
|
|
18
18
|
"build": "rslib build",
|
|
19
|
-
"dev": "rslib build --watch"
|
|
19
|
+
"dev": "rslib build --watch",
|
|
20
|
+
"prepublishOnly": "npm run build"
|
|
20
21
|
},
|
|
21
22
|
"devDependencies": {
|
|
22
23
|
"@rslib/core": "^0.12.2",
|
|
@@ -24,6 +25,6 @@
|
|
|
24
25
|
"typescript": "^5.9.2"
|
|
25
26
|
},
|
|
26
27
|
"dependencies": {
|
|
27
|
-
"@module-federation/
|
|
28
|
+
"@module-federation/enhanced": "0.18.3"
|
|
28
29
|
}
|
|
29
30
|
}
|