test-hel-tpl-remote-lib-111 0.0.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/README.md ADDED
@@ -0,0 +1,118 @@
1
+ ## remote-lib-tpl
2
+ 基于[hel-micro](https://github.com/tnfe/hel)搭建的远程仓库模板库
3
+
4
+ ## 如何参与
5
+ - 改subApp
6
+ `src/configs/subApp.ts`改为你的hel模块名
7
+ ```ts
8
+ export const APP_GROUP_NAME = 'hlib-xxx'; /// 名字随意,和 package.json name 一样即可
9
+ ```
10
+
11
+ - 改package.json
12
+ 将`hame`和`appGroupName`改为hel模块名(名字随意,保持一样即可)
13
+ ```
14
+ "name": "hlib-xxx",
15
+ "appGroupName": "hlib-xxx",
16
+ ```
17
+
18
+ - 改源代码
19
+ `src/utils/myMod.ts`
20
+ ```ts
21
+ export function sayHelloToHel(from: string) {
22
+ const yourRtxName = ''; // 可改写为你的名字
23
+ return `hello hel, I am ${yourName}, I come from ${from}`;
24
+ }
25
+ ```
26
+
27
+ - 改单测文件
28
+ `src/utils/__tests__/myMod.ts`
29
+ ```ts
30
+ describe('test myMod', () => {
31
+ test('sayHelloToHel', () => {
32
+ const yourRtxName = ''; // 此处改写为你的rtx名字
33
+ const ret = `hello hel, I am ${yourRtxName}, I come from bj`;
34
+ expect(sayHelloToHel('bj') === ret).toBeTruthy();
35
+ });
36
+ });
37
+ ```
38
+
39
+ - 执行单测
40
+ ```
41
+ npm run test
42
+ ```
43
+
44
+ - 发布源码和类型
45
+ ```
46
+ npm run build
47
+ npm publish
48
+ ```
49
+
50
+ ## FAQ
51
+ ### 为何入口文件采取动态模块导入写法
52
+ 如果采用静态导入写法
53
+
54
+ ```ts
55
+ import { libReady } from 'hel-lib-proxy';
56
+ import { LIB_NAME } from './configs/subApp';
57
+
58
+ async function main() {
59
+ const libProperties = await import('./entrance/libProperties');
60
+ libReady(LIB_NAME, libProperties.default);
61
+ };
62
+
63
+ main().catch(console.error);
64
+ export default 'REMOTE MOD';
65
+ ```
66
+
67
+ 需要将 `config/webpack.config.js`里的 `maxChunks`的值 1 改为 4
68
+ ```js
69
+ new webpack.optimize.LimitChunkCountPlugin({
70
+ maxChunks: 4,
71
+ }),
72
+ ```
73
+ 如果不改动,构建会报错
74
+
75
+ ```bash
76
+ Creating an optimized production build...
77
+ Browserslist: caniuse-lite is outdated. Please run:
78
+ npx browserslist@latest --update-db
79
+ Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
80
+ Failed to compile.
81
+
82
+ chunk runtime-main [entry]
83
+ Cannot convert undefined or null to object
84
+ ```
85
+
86
+ 改动后构建产物如下
87
+
88
+ ```bash
89
+ 6.57 KB hel_dist/static/js/2.506e8c97.chunk.js
90
+ 1.14 KB hel_dist/static/js/runtime-main.65c05a8a.js
91
+ 499 B hel_dist/static/js/3.21d3206a.chunk.js
92
+ 390 B hel_dist/static/js/main.15c0c746.chunk.js
93
+ ```
94
+
95
+ 改为动态导入写法后
96
+
97
+ ```ts
98
+ async function main() {
99
+ const { libReady } = await import('hel-lib-proxy');
100
+ const { LIB_NAME } = await import('./configs/subApp');
101
+
102
+ const libProperties = await import('./entrance/libProperties');
103
+ libReady(LIB_NAME, libProperties.default);
104
+ };
105
+
106
+ main().catch(console.error);
107
+ export default 'HEL REMOTE MOD';
108
+ ```
109
+
110
+ 则支持 `config/webpack.config.js`里的 `maxChunks`的值设置为 1,此时构建产物如下
111
+
112
+ ```bash
113
+ 4.72 KB hel_dist/static/js/0.a104ee67.chunk.js
114
+ 2.74 KB (+2.36 KB) hel_dist/static/js/main.070cd75c.chunk.js
115
+ 1.14 KB (-2 B) hel_dist/static/js/runtime-main.a8e25f5a.js
116
+ ```
117
+
118
+ 相比比原来少一个 `chunk`,为了构建产物尽可能的少 `chunk`,选择了入口文件采取动态模块导入写法
@@ -0,0 +1,16 @@
1
+ {
2
+ "files": {
3
+ "static/js/0.5c853936.chunk.js": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/0.5c853936.chunk.js",
4
+ "main.js": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/main.c27f8348.chunk.js",
5
+ "runtime-main.js": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/runtime-main.e18d2cf7.js",
6
+ "index.html": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/index.html",
7
+ "precache-manifest.d376e39cbf960d26b36e995ad8603c00.js": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/precache-manifest.d376e39cbf960d26b36e995ad8603c00.js",
8
+ "service-worker.js": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/service-worker.js",
9
+ "static/js/0.5c853936.chunk.js.LICENSE.txt": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/0.5c853936.chunk.js.LICENSE.txt",
10
+ "static/js/main.c27f8348.chunk.js.LICENSE.txt": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/main.c27f8348.chunk.js.LICENSE.txt"
11
+ },
12
+ "entrypoints": [
13
+ "static/js/runtime-main.e18d2cf7.js",
14
+ "static/js/main.c27f8348.chunk.js"
15
+ ]
16
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "app": {
3
+ "name": "test-hel-tpl-remote-lib-111",
4
+ "app_group_name": "test-hel-tpl-remote-lib-111",
5
+ "git_repo_url": "",
6
+ "extract_mode": "build",
7
+ "online_version": "0.0.1",
8
+ "build_version": "0.0.1"
9
+ },
10
+ "version": {
11
+ "plugin_ver": "3.1.0",
12
+ "sub_app_name": "test-hel-tpl-remote-lib-111",
13
+ "sub_app_version": "0.0.1",
14
+ "src_map": {
15
+ "webDirPath": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist",
16
+ "htmlIndexSrc": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/index.html",
17
+ "iframeSrc": "",
18
+ "chunkCssSrcList": [],
19
+ "chunkJsSrcList": [
20
+ "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/hel_userChunk_1.js",
21
+ "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/main.c27f8348.chunk.js"
22
+ ],
23
+ "privCssSrcList": [],
24
+ "headAssetList": [],
25
+ "bodyAssetList": [
26
+ {
27
+ "tag": "script",
28
+ "attrs": {
29
+ "src": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/hel_userChunk_1.js"
30
+ }
31
+ },
32
+ {
33
+ "tag": "script",
34
+ "attrs": {
35
+ "src": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/main.c27f8348.chunk.js"
36
+ }
37
+ }
38
+ ]
39
+ },
40
+ "html_content": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><title>remote-lib-tpl</title><meta name=\"description\" content=\"hel remote lib template\"/></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id=\"root\"></div><script>!function(e){function t(t){for(var n,i,l=t[0],a=t[1],c=t[2],f=0,p=[];f<l.length;f++)i=l[f],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(s&&s(t);p.length;)p.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,l=1;l<r.length;l++){var a=r[l];0!==o[a]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={2:0},u=[];function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,l=document.createElement(\"script\");l.charset=\"utf-8\",l.timeout=120,i.nc&&l.setAttribute(\"nonce\",i.nc),l.src=function(e){return i.p+\"static/js/\"+({}[e]||e)+\".\"+{0:\"5c853936\"}[e]+\".chunk.js\"}(e);var a=new Error;u=function(t){l.onerror=l.onload=null,clearTimeout(c);var r=o[e];if(0!==r){if(r){var n=t&&(\"load\"===t.type?\"missing\":t.type),u=t&&t.target&&t.target.src;a.message=\"Loading chunk \"+e+\" failed.\\n(\"+n+\": \"+u+\")\",a.name=\"ChunkLoadError\",a.type=n,a.request=u,r[1](a)}o[e]=void 0}};var c=setTimeout((function(){u({type:\"timeout\",target:l})}),12e4);l.onerror=l.onload=u,document.head.appendChild(l)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/\",i.oe=function(e){throw console.error(e),e};var l=this[\"helJsonp_test-hel-tpl-remote-lib-111_1679058373255\"]=this[\"helJsonp_test-hel-tpl-remote-lib-111_1679058373255\"]||[],a=l.push.bind(l);l.push=t,l=l.slice();for(var c=0;c<l.length;c++)t(l[c]);var s=a;r()}([])</script><script src=\"https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/main.c27f8348.chunk.js\"></script></body></html>"
41
+ }
42
+ }
@@ -0,0 +1 @@
1
+ !function(e){function t(t){for(var n,i,l=t[0],a=t[1],c=t[2],f=0,p=[];f<l.length;f++)i=l[f],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(s&&s(t);p.length;)p.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,l=1;l<r.length;l++){var a=r[l];0!==o[a]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={2:0},u=[];function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,l=document.createElement("script");l.charset="utf-8",l.timeout=120,i.nc&&l.setAttribute("nonce",i.nc),l.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{0:"5c853936"}[e]+".chunk.js"}(e);var a=new Error;u=function(t){l.onerror=l.onload=null,clearTimeout(c);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;a.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",a.name="ChunkLoadError",a.type=n,a.request=u,r[1](a)}o[e]=void 0}};var c=setTimeout((function(){u({type:"timeout",target:l})}),12e4);l.onerror=l.onload=u,document.head.appendChild(l)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/",i.oe=function(e){throw console.error(e),e};var l=this["helJsonp_test-hel-tpl-remote-lib-111_1679058373255"]=this["helJsonp_test-hel-tpl-remote-lib-111_1679058373255"]||[],a=l.push.bind(l);l.push=t,l=l.slice();for(var c=0;c<l.length;c++)t(l[c]);var s=a;r()}([])
@@ -0,0 +1 @@
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><title>remote-lib-tpl</title><meta name="description" content="hel remote lib template"/></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,i,l=t[0],a=t[1],c=t[2],f=0,p=[];f<l.length;f++)i=l[f],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(s&&s(t);p.length;)p.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,l=1;l<r.length;l++){var a=r[l];0!==o[a]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={2:0},u=[];function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,l=document.createElement("script");l.charset="utf-8",l.timeout=120,i.nc&&l.setAttribute("nonce",i.nc),l.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{0:"5c853936"}[e]+".chunk.js"}(e);var a=new Error;u=function(t){l.onerror=l.onload=null,clearTimeout(c);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;a.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",a.name="ChunkLoadError",a.type=n,a.request=u,r[1](a)}o[e]=void 0}};var c=setTimeout((function(){u({type:"timeout",target:l})}),12e4);l.onerror=l.onload=u,document.head.appendChild(l)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/",i.oe=function(e){throw console.error(e),e};var l=this["helJsonp_test-hel-tpl-remote-lib-111_1679058373255"]=this["helJsonp_test-hel-tpl-remote-lib-111_1679058373255"]||[],a=l.push.bind(l);l.push=t,l=l.slice();for(var c=0;c<l.length;c++)t(l[c]);var s=a;r()}([])</script><script src="https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/main.c27f8348.chunk.js"></script></body></html>
@@ -0,0 +1,10 @@
1
+ {
2
+ "short_name": "React App",
3
+ "name": "Create React App Sample",
4
+ "icons": [
5
+ ],
6
+ "start_url": ".",
7
+ "display": "standalone",
8
+ "theme_color": "#000000",
9
+ "background_color": "#ffffff"
10
+ }
@@ -0,0 +1,26 @@
1
+ self.__precacheManifest = (self.__precacheManifest || []).concat([
2
+ {
3
+ "revision": "991621516ed57553e4914d2e86f00601",
4
+ "url": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/index.html"
5
+ },
6
+ {
7
+ "revision": "59b9431318f2c4d3431b",
8
+ "url": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/0.5c853936.chunk.js"
9
+ },
10
+ {
11
+ "revision": "114fa89da3636722bc04f5ae14df1de3",
12
+ "url": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/0.5c853936.chunk.js.LICENSE.txt"
13
+ },
14
+ {
15
+ "revision": "9a378155806506cdb26e",
16
+ "url": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/main.c27f8348.chunk.js"
17
+ },
18
+ {
19
+ "revision": "4e0e34f265fae8f33b01b27ae29d9d6f",
20
+ "url": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/main.c27f8348.chunk.js.LICENSE.txt"
21
+ },
22
+ {
23
+ "revision": "af9954ccc47eeab258b4",
24
+ "url": "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/static/js/runtime-main.e18d2cf7.js"
25
+ }
26
+ ]);
@@ -0,0 +1,3 @@
1
+ # https://www.robotstxt.org/robotstxt.html
2
+ User-agent: *
3
+ Disallow:
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Welcome to your Workbox-powered service worker!
3
+ *
4
+ * You'll need to register this file in your web app and you should
5
+ * disable HTTP caching for this file too.
6
+ * See https://goo.gl/nhQhGp
7
+ *
8
+ * The rest of the code is auto-generated. Please don't update this file
9
+ * directly; instead, make changes to your Workbox build configuration
10
+ * and re-run your build process.
11
+ * See https://goo.gl/2aRDsh
12
+ */
13
+
14
+ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
15
+
16
+ importScripts(
17
+ "https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/precache-manifest.d376e39cbf960d26b36e995ad8603c00.js"
18
+ );
19
+
20
+ self.addEventListener('message', (event) => {
21
+ if (event.data && event.data.type === 'SKIP_WAITING') {
22
+ self.skipWaiting();
23
+ }
24
+ });
25
+
26
+ workbox.core.clientsClaim();
27
+
28
+ /**
29
+ * The workboxSW.precacheAndRoute() method efficiently caches and responds to
30
+ * requests for URLs in the manifest.
31
+ * See https://goo.gl/S9QRab
32
+ */
33
+ self.__precacheManifest = [].concat(self.__precacheManifest || []);
34
+ workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
35
+
36
+ workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL("https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/index.html"), {
37
+
38
+ blacklist: [/^\/_/,/\/[^/?]+\.[^/]+$/],
39
+ });
@@ -0,0 +1,2 @@
1
+ /*! For license information please see 0.5c853936.chunk.js.LICENSE.txt */
2
+ (this["helJsonp_test-hel-tpl-remote-lib-111_1679058373255"]=this["helJsonp_test-hel-tpl-remote-lib-111_1679058373255"]||[]).push([[0],[,,function(e,t,r){"use strict";r.r(t);var n={get num1to9(){return/^[1-9]+[0-9]*$/},get en(){return/^[A-Za-z]+$/},get enSnake(){return/^[a-z][_0-9a-z]*[a-z0-9]+$/},get enOrNumOrUnderline(){return/^[A-Za-z0-9_]+$/},get enOrNum(){return/^[A-Za-z0-9]+$/}};t.default=n},function(e,t,r){"use strict";r.r(t),r.d(t,"canBeNum",(function(){return o})),r.d(t,"random",(function(){return a}));var n=r(2);function o(e){var t=typeof e;if("string"===t){if(e.includes(".")){var r=e.replace(/\./g,"");if(!n.default.num1to9.test(r))return!1;var o=parseFloat(e);return!Number.isNaN(o)}return n.default.num1to9.test(e)}return"number"===t}function a(e){return Math.floor(e*Math.random())}},function(e,t,r){"use strict";r.r(t),function(e){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a,i,u=[],p=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;p=!1}else for(;!(p=(n=a.call(r)).done)&&(u.push(n.value),u.length!==t);p=!0);}catch(c){l=!0,o=c}finally{try{if(!p&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return u}}(e,t)||u(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e){return function(e){if(Array.isArray(e))return p(e)}(e)||function(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){if(e){if("string"===typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}r.d(t,"DEFAULT_ONLINE_VER",(function(){return J})),r.d(t,"allowLog",(function(){return Z})),r.d(t,"appReady",(function(){return ie})),r.d(t,"default",(function(){return Ie})),r.d(t,"getAppMeta",(function(){return de})),r.d(t,"getAppPlatform",(function(){return Ne})),r.d(t,"getAppStyleStr",(function(){return Me})),r.d(t,"getGlobalThis",(function(){return Q})),r.d(t,"getHelDebug",(function(){return Y})),r.d(t,"getHelEventBus",(function(){return ee})),r.d(t,"getPlatform",(function(){return $})),r.d(t,"getPlatformConfig",(function(){return ce})),r.d(t,"getPlatformHost",(function(){return ue})),r.d(t,"getSharedCache",(function(){return re})),r.d(t,"getUserEventBus",(function(){return te})),r.d(t,"getVerApp",(function(){return fe})),r.d(t,"getVerExtraCssList",(function(){return ye})),r.d(t,"getVerLib",(function(){return ge})),r.d(t,"getVerLoadStatus",(function(){return Ae})),r.d(t,"getVerStyleStrStatus",(function(){return _e})),r.d(t,"getVersion",(function(){return Ee})),r.d(t,"helEvents",(function(){return q})),r.d(t,"helLoadStatus",(function(){return K})),r.d(t,"initPlatformConfig",(function(){return le})),r.d(t,"isSubApp",(function(){return z})),r.d(t,"libReady",(function(){return ae})),r.d(t,"log",(function(){return W})),r.d(t,"resetGlobalThis",(function(){return B})),r.d(t,"setAppMeta",(function(){return me})),r.d(t,"setAppPlatform",(function(){return Se})),r.d(t,"setAppStyleStr",(function(){return we})),r.d(t,"setEmitApp",(function(){return se})),r.d(t,"setEmitLib",(function(){return ve})),r.d(t,"setGlobalThis",(function(){return X})),r.d(t,"setVerExtraCssList",(function(){return he})),r.d(t,"setVerLoadStatus",(function(){return be})),r.d(t,"setVerStyleStrStatus",(function(){return Le})),r.d(t,"setVersion",(function(){return Ve})),r.d(t,"tryGetAppName",(function(){return oe})),r.d(t,"tryGetVersion",(function(){return ne})),r.d(t,"trySetMasterAppLoadedSignal",(function(){return U}));var l={NOT_LOAD:0,LOADING:1,LOADED:2},c=["ht","tps",":/","/foo","tpri","nt.q","q.c","om/"].join("");function s(e){return"unpkg"===e?"https://unpkg.com":function(e){return"".concat(c).concat(e)}()}var f=null;function d(){if(f)return f;try{if("undefined"!==typeof window)return window;if("undefined"!==typeof self)return self;if("undefined"!==typeof e)return e;throw new Error("opps")}catch(t){throw new Error("unable to locate global object")}}function m(){return d()}var v=m().__HEL_MICRO_DEBUG__;function g(){return v}function h(e,t){return t.includes(",")?t.split(",").some((function(t){return e.includes(t)})):e.includes(t)}function y(){return 0!==A()}function b(e){var t=parseInt(e,10);[1,2].includes(t)&&(g().logMode=t)}function A(){return g().logMode}function L(e){g().logFilter=e}function _(){return g().logFilter}v?void 0===v.logMode&&(v.logMode=0,v.logFilter=""):(v={logMode:0,logFilter:"",isInit:!1},m().__HEL_MICRO_DEBUG__=v),function(){if(g().isInit)return;g().isInit=!0;var e=function(){var e=function(){try{var e,t;return(null===(e=d().top)||void 0===e||null===(t=e.location)||void 0===t?void 0:t.search)||""}catch(o){var r,n;return(null===(r=d())||void 0===r||null===(n=r.location)||void 0===n?void 0:n.search)||""}}(),t={};if(null!==e&&void 0!==e&&e.startsWith("?")){e.substring(1).split("&").forEach((function(e){var r=a(e.split("="),2),n=r[0],o=r[1];t[n]=o}))}return t}(),t=e.hellog,r=e.hellogf,n=d().localStorage;b(t||(null===n||void 0===n?void 0:n.getItem("HelConfig.logMode"))||0),L(r||(null===n||void 0===n?void 0:n.getItem("HelConfig.logFilter"))||"")}();var S=" %c--\x3e HEL LOG:",N="color:#ad4e00;font-weight:600";function E(){if(y()){for(var e=1===A()?console.log:console.trace||console.log,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];var o=r[0],a=r.slice(1);if("string"!==typeof o)return e.apply(void 0,[S,N].concat(r));var u=_(),p=["".concat(S," ").concat(o),N].concat(i(a));u?h(o,u)&&e.apply(void 0,i(p)):e.apply(void 0,i(p))}}function V(){var e="";try{throw new Error("getJsRunLocation")}catch(r){var t=r.stack.split("\n");e=t[t.length-1]||""}return e}function M(e,t,r,n){w(e,t)[r]=n}function w(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=e[t];return n||(n=r,e[t]=n),n}function I(e){return{isConfigOverwrite:!1,platform:e,initPack:"out",appName2Comp:{},appName2Lib:{},appName2isLibAssigned:{},appName2EmitApp:{},appName2verLoadStatus:{},appName2verEmitLib:{},appName2verEmitApp:{},appName2verStyleStr:{},appName2verStyleFetched:{},appName2verExtraCssList:{},appName2verAppVersion:{},appName2app:{},appName2appVersion:{},appName2styleStr:{},appGroupName2firstVer:{},isInnerHooksInit:!1,strictMatchVer:!0,apiMode:"jsonp",apiPrefix:"",apiSuffix:"",apiPathOfApp:"/openapi/v1/app/info",apiPathOfAppVersion:"",getUserName:null,prepareRequestInfo:null,getSubAppAndItsVersionFn:null,onFetchMetaFailed:null,userLsKey:""}}function O(){var e={};return{on:function(t,r){var n=e[t];if(!n){var o=[];e[t]=o,n=o}n.push(r)},emit:function(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),o=1;o<r;o++)n[o-1]=arguments[o];var a=e[t];if(a){var i=a.slice();i.forEach((function(e){return e.apply(void 0,n)}))}},off:function(t,r){var n=e[t];if(n)for(var o=0,a=n.length;o<a;o++){if(n[o]===r){n.splice(o,1);break}}}}}function P(){var e=x();if(e){var t=e.cacheRoot;w(t,"appGroupName2platform");var r=t.caches;return Object.keys(r).forEach((function(e){var t=r[e];w(t,"appGroupName2firstVer"),w(t,"appName2verExtraCssList")})),void(e.userEventBus||(e.userEventBus=O()))}e=function(){var e,t=I("hel"),r=I("unpkg"),n={platform:"unpkg",appName2platform:{},appGroupName2platform:{},caches:(e={},o(e,"hel",t),o(e,"unpkg",r),e)},a=O(),i=O();return{createFeature:V(),eventBus:a,userEventBus:i,cacheRoot:n,unpkgCache:r,helCache:t,dev:{setLogMode:b,setLogFilter:L}}}(),m().__HEL_MICRO_SHARED__=e}function x(){return m().__HEL_MICRO_SHARED__}function C(){return x().cacheRoot.platform||"unpkg"}function D(e){var t=e||C(),r=k(),n=r.caches[t];if(!n){var o=I(e);r.caches[t]=o,n=o}return n}function k(){return x().cacheRoot}var j=!1,F=!1;function G(e){if(e&&(j=!1,F=!1),!0!==F){F=!0;var t=d();void 0===t.__MASTER_APP_LOADED__&&(t.__MASTER_APP_LOADED__=!0,j=!0)}}function B(e){e&&X(e),G(!!e),P()}E("hel-micro-core ver ".concat("3.13.5")),B();var R=function(e,t,r,n){var o=n||{},a=o.versionId;M(re(o.platform)[r],e,a||J,t)},H=function(e,t,r){var n,o=r||{},a=o.versionId,i=re(o.platform)[t],u=a||J;return(null===(n=i[e])||void 0===n?void 0:n[u])||l.NOT_LOAD},T=function(e,t,r){if(!e[J]){var n=de(t,r),o=e[null===n||void 0===n?void 0:n.online_version];o&&(e[J]=o)}},U=G,z=function(){return!j},$=C,q={SUB_APP_LOADED:"subAppLoaded",SUB_LIB_LOADED:"SubLibLoaded",STYLE_STR_FETCHED:"StyleStrFetched"},K=l,J="__default_online_ver__",Z=y,W=E,Y=g,Q=d,X=function(e){f=e};function ee(){return x().eventBus}function te(){return x().userEventBus}function re(e){return D(e)}function ne(e,t){var r=V();E("[[ core:tryGetVersion ]] may include source > ".concat(r));var n=re(t).appGroupName2firstVer[e]||"";if(r.includes("https://")||r.includes("http://")){var o=a(r.split("//"),2)[1].split("/");if(n){if("unpkg"===t&&o.some((function(e){return e.includes(n)})))return n;if(o.includes(n))return n;if("static"===o[1]&&"js"===o[2]||"js"===o[1])return n}return"unpkg"===t?o[1].split("@")[1]||n:o[2]||n}return n}function oe(e,t){return e===J?t||"":e.includes("_")?e.substring(0,e.length-15):t||""}function ae(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=r.platform||Ne(e),o=r.versionId||ne(e,n),a=r.appName||oe(o,e),i=de(a,n);null!==i&&void 0!==i&&i.__fromCust&&(o=i.online_version,a=i.name);var u={platform:n,appName:a,appGroupName:e,versionId:o,appProperties:t,Comp:function(){},lifecycle:{}};ve(a,u,{appGroupName:e,platform:n}),be(a,K.LOADED,{versionId:o,platform:n});var p=ee();p.emit(q.SUB_LIB_LOADED,u)}function ie(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=r.lifecycle,o=r.platform||Ne(e),a=r.versionId||ne(e,o),i=r.appName||oe(a,e),u={Comp:t,appName:i,appGroupName:e,lifecycle:n,platform:o,versionId:a,isLib:!1};se(i,u),be(i,K.LOADED,{versionId:a,platform:o});var p=ee();p.emit(q.SUB_APP_LOADED,u)}function ue(e){var t=e||$(),r=re(t).apiPrefix;return r||s(t)}function pe(e){return{apiMode:e.apiMode,apiPrefix:e.apiPrefix,apiSuffix:e.apiSuffix,apiPathOfApp:e.apiPathOfApp,apiPathOfAppVersion:e.apiPathOfAppVersion,getSubAppAndItsVersionFn:e.getSubAppAndItsVersionFn,onFetchMetaFailed:e.onFetchMetaFailed,strictMatchVer:e.strictMatchVer,getUserName:e.getUserName,userLsKey:e.userLsKey,platform:e.platform,shouldUseGray:e.shouldUseGray}}function le(e,t){var r,n,o=D(t),a=pe(e);o.isConfigOverwrite||(o.isConfigOverwrite=!0,r=o,n=a,Object.keys(n).forEach((function(e){var t=n[e];[null,void 0,""].includes(t)||(r[e]=t)})))}function ce(e){return pe(D(e))}function se(e,t){W("[[ core:setEmitApp ]] appName,emitApp:",e,t);var r=t.versionId,n=re(t.platform),o=n.appName2verEmitApp,a=n.appName2Comp,i=n.appName2EmitApp;w(o,e)[J]||(a[e]=t.Comp,i[e]=t,M(o,e,J,t)),r&&M(o,e,r,t)}function fe(e,t){var r,n=t||{},o=n.versionId,a=n.platform,i=re(a),u=i.appName2verEmitApp,p=i.appName2Comp,l=i.strictMatchVer,c=i.appName2EmitApp,s=null!==(r=n.strictMatchVer)&&void 0!==r?r:l,f=w(u,e);T(f,e,a);var d=f[o||J],m=p[e],v=m?{Comp:m}:null,g=s?null:c[e]||v,h=d||g||null;return W("[[ core:getVerApp ]] appName,options,result:",e,n,h),h}function de(e,t){return re(t).appName2app[e]}function me(e,t){re(t).appName2app[e.name]=e}function ve(e,t,r){var o=(r||{}).appGroupName,a=t.versionId,i=t.appProperties,u=t.platform||r.platform,p=re(u),l=p.appName2verEmitLib,c=p.appName2Lib,s=p.appName2isLibAssigned,f=de(e,u),d=function(e){var t=c[e];t?"object"===n(t)&&0===Object.keys(t).length&&Object.assign(t,i):c[e]=i,s[e]=!0};d(e),o?d(o):f&&d(f.app_group_name),W("[[ core:setEmitLib ]] appMeta:",f),w(l,e)[J]||M(l,e,J,i),a&&M(l,e,a,i)}function ge(e,t){var r,n=t||{},o=n.versionId,a=re(n.platform),i=a.appName2verEmitLib,u=a.appName2Lib,p=a.strictMatchVer,l=a.appName2isLibAssigned,c=null!==(r=n.strictMatchVer)&&void 0!==r?r:p,s=w(i,e);T(s,e);var f=s[o||J],d=l[e]?u[e]:null,m=f||(c?null:d)||null;return W("[[ core:getVerLib ]] appName,options,result:",e,n,m),m}function he(e,t,r){var n=r||{},o=n.versionId,a=re(n.platform).appName2verExtraCssList;W("[[ core:setVerExtraCssList ]] cssList:",t),w(a,e)[J]||M(a,e,J,t),o&&M(a,e,o,t)}function ye(e,t){var r=t||{},n=r.versionId,o=w(re(r.platform).appName2verExtraCssList,e),a=o[n]||o[J]||[];return W("[[ core:getVerExtraCssList ]] options,cssList:",r,a),a}function be(e,t,r){R(e,t,"appName2verLoadStatus",r)}function Ae(e,t){return H(e,"appName2verLoadStatus",t)}function Le(e,t,r){R(e,t,"appName2verStyleFetched",r)}function _e(e,t){return H(e,"appName2verStyleFetched",t)}function Se(e,t){return k().appGroupName2platform[e]=t,Ne(e)}function Ne(e){return k().appGroupName2platform[e]||C()}function Ee(e,t){var r,n=t||{},o=n.platform,a=n.versionId,i=re(o),u=i.appName2verAppVersion,p=i.appName2appVersion[e]||null;return a&&(null===(r=u[e])||void 0===r?void 0:r[a])||p}function Ve(e,t,r){var n=(r||{}).platform,o=re(n),a=o.appName2verAppVersion,i=o.appGroupName2firstVer,u=o.appName2appVersion,p=t.sub_app_version;if(p){var l=de(e,n);w(a,e)[J]||(M(a,e,J,t),u[e]=t),M(a,e,p,t),i[l.app_group_name]=p}}function Me(e,t){var r,n=t||{},o=n.platform,a=n.versionId,i=re(o),u=i.appName2verStyleStr,p=i.appName2styleStr[e]||"";return a?(null===(r=u[e])||void 0===r?void 0:r[a])||p||"":p}function we(e,t,r){var n=r||{},o=n.platform,a=n.versionId,i=re(o),u=i.appName2verStyleStr,p=i.appName2verStyleFetched,l=i.appName2styleStr;a?(M(u,e,a,t),M(p,e,a,K.LOADED)):l[e]=t}var Ie={DEFAULT_ONLINE_VER:J,helLoadStatus:l,helEvents:q,isSubApp:z,trySetMasterAppLoadedSignal:G,getHelEventBus:ee,getUserEventBus:te,getHelDebug:g,getSharedCache:re,getPlatform:C,getPlatformHost:ue,getPlatformConfig:ce,getAppPlatform:Ne,setAppPlatform:Se,getVerApp:fe,setEmitApp:se,getVerLib:ge,setEmitLib:ve,getAppMeta:de,setAppMeta:me,getVersion:Ee,setVersion:Ve,getAppStyleStr:Me,setAppStyleStr:we,getVerLoadStatus:Ae,setVerLoadStatus:be,getVerStyleStrStatus:_e,setVerStyleStrStatus:Le,getVerExtraCssList:ye,setVerExtraCssList:he,tryGetVersion:ne,tryGetAppName:oe,initPlatformConfig:le,libReady:ae,appReady:ie,log:E,allowLog:y,getGlobalThis:d,setGlobalThis:X,resetGlobalThis:B}}.call(this,r(5))},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(n){"object"===typeof window&&(r=window)}e.exports=r},function(e,t,r){"use strict";r.r(t),r.d(t,"LIB_NAME",(function(){return n}));var n="test-hel-tpl-remote-lib-111"},function(e,t,r){!function(e,t){"use strict";var r=function(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}(t),n=function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function o(e){return e||"unpkg"}function a(e,r){var n=r||(null===t.getAppPlatform||void 0===t.getAppPlatform?void 0:t.getAppPlatform(e)),o=t.getSharedCache(n).appName2Lib;return o[e]||(o[e]={}),o[e]}r.default.log("hel-lib-proxy ver 3.13.2");var i=(0,r.default.getUserEventBus)();function u(e,t){var a=n({},t||{});return a.platform=o(),r.default.getVerLib(e,a)}function p(e,n){var i,u=!0,p="";n&&("string"==typeof n?p=n:(p=n.platform||"",u=null===(i=n.asProxy)||void 0===i||i));var l=a(e,p=p||o());return"function"==typeof Proxy&&u&&(l=function(e,r,n){return new Proxy(r,{get:function(r,o){var i=String(o);return t.log("[[getLibProxy]] call lib ["+e+"] method ["+i+"]"),Object.keys(r).length?r[i]:a(e,n)[i]}})}(e,l,p)),r.default.log("[[ exposeLib ]] libName, libObj",e,l),l}function l(e,t,a){var i=function(e){var t={allowDup:!1,platform:o()};return n(n({},t),e||{})}(a);r.default.libReady(e,t,i)}function c(e,t,n){r.default.appReady(e,t,n)}function s(e,t){return r.default.getVerApp(e,t)}function f(){return!r.default.isSubApp()}var d=r.default.isSubApp,m={libReady:l,exposeLib:p,getLib:u,isSubApp:d,isMasterApp:f,eventBus:i,appReady:c,exposeApp:s};e.appReady=c,e.default=m,e.eventBus=i,e.exposeApp=s,e.exposeLib=p,e.getLib=u,e.isMasterApp=f,e.isSubApp=d,e.libReady=l,Object.defineProperty(e,"__esModule",{value:!0})}(t,r(4))},function(e,t,r){"use strict";r.r(t);var n=r(6),o=r(3);window.__callMethod__=function(){var e=Object(o.random)(100);i("".concat(e,"_").concat(Date.now()))};var a='\n <span style="color:#c62d31">---\x3e lazy load mode</span>\n <pre style="background-color:lightgray;padding-top:12px">\n import helMicro from \'hel-micro\';\n\n export async function callRemoteMethod(){\n const remoteLib = await helMicro.preFetchLib(\''.concat(n.LIB_NAME,"');\n // now you can call the remote lib by 'remoteLib' reference\n }\n </pre>\n <span style=\"color:#c62d31\">---\x3e preload mode</span>\n <pre style=\"background-color:lightgray;padding-top:12px\">\n // call preFetchLib at entry js file\n (async function(){\n const helMicro = await import('hel-micro');\n await helMicro.preFetchLib('").concat(n.LIB_NAME,"');\n import('./loadApp'); // move your app original entry file content to this file and load it\n })();\n\n /** --------------------------------------------------------------------------- */\n import remoteLib from '").concat(n.LIB_NAME,"';\n remoteLib.num.random(19); // now you can call the remote safely just like local module\n </pre>\n");function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=document.querySelector("#container");t||((t=document.createElement("div")).id="container",document.body.append(t)),t.innerHTML='\n <div style="padding:60px;">\n <h1>Cool, as you see this is your hel remote module\n <a style="color:blue" href="https://github.com/hel-eco/test-hel-tpl-remote-lib-111" target="_blank" rel="noopener noreferrer">'.concat(n.LIB_NAME,'</a>\n </h1>\n <span style="color:red;">you can delete or edit this file, It will only run at master-app mode</span>,\n see the <a href="https://www.bilibili.com/video/BV1Dd4y1y7Wj/?vd_source=51bc50bf5f860e0d778c49b00d192cee" target="_blank" rel="noopener noreferrer">video</a>\n if you want to use local debug feature.\n <br />\n <h2>\n <button onclick="__callMethod__()" style="font-size:20px;background-color:#ff9800;color:white;border:none;padding:6px;">click me</button>\n to see changed result : ').concat(e,"\n </h2>\n <fieldset>\n <legend>usage snippet</legend>\n ").concat(a,'\n </fieldset>\n <p style="font-size:20px">\n <img width="30px" style="vertical-align:middle" src="https://tnfe.gtimg.com/image/1k4xi9izbk_1651642720099.png"></img>\n <a href="https://github.com/tnfe/hel" target="_blank" rel="noopener noreferrer">hel-micro</a>,\n a module federation SDK which is unrelated to tool\uff0cmore details see\n <a href="https://tnfe.github.io/hel/" target="_blank" rel="noopener noreferrer">doc</a>.\n </p>\n </div>\n ')}i()},function(e,t,r){"use strict";r.r(t);var n={};r.r(n),r.d(n,"sayHelloToHel",(function(){return i}));var o={};r.r(o),r.d(o,"regs",(function(){return a})),r.d(o,"num",(function(){return u})),r.d(o,"myMod",(function(){return n}));var a=r(2);function i(e){return"hello hel, I am ".concat("",", I come from ").concat(e)}var u=r(3);t.default=o}]]);
@@ -0,0 +1,14 @@
1
+ /*! *****************************************************************************
2
+ Copyright (c) Microsoft Corporation.
3
+
4
+ Permission to use, copy, modify, and/or distribute this software for any
5
+ purpose with or without fee is hereby granted.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
8
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
9
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
10
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
11
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
13
+ PERFORMANCE OF THIS SOFTWARE.
14
+ ***************************************************************************** */
@@ -0,0 +1,2 @@
1
+ /*! For license information please see main.c27f8348.chunk.js.LICENSE.txt */
2
+ (this["helJsonp_test-hel-tpl-remote-lib-111_1679058373255"]=this["helJsonp_test-hel-tpl-remote-lib-111_1679058373255"]||[]).push([[1],[function(t,r,e){t.exports=e(1)},function(t,r,e){"use strict";function n(t,r,e,n,o,i,a){try{var c=t[i](a),u=c.value}catch(h){return void e(h)}c.done?r(u):Promise.resolve(u).then(n,o)}function o(t){return function(){var r=this,e=arguments;return new Promise((function(o,i){var a=t.apply(r,e);function c(t){n(a,o,i,c,u,"next",t)}function u(t){n(a,o,i,c,u,"throw",t)}c(void 0)}))}}function i(){i=function(){return t};var t={},r=Object.prototype,e=r.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",a=n.asyncIterator||"@@asyncIterator",c=n.toStringTag||"@@toStringTag";function u(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{u({},"")}catch(k){u=function(t,r,e){return t[r]=e}}function h(t,r,e,n){var o=r&&r.prototype instanceof f?r:f,i=Object.create(o.prototype),a=new _(n||[]);return i._invoke=function(t,r,e){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return j()}for(e.method=o,e.arg=i;;){var a=e.delegate;if(a){var c=L(a,e);if(c){if(c===l)continue;return c}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===n)throw n="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);n="executing";var u=s(t,r,e);if("normal"===u.type){if(n=e.done?"completed":"suspendedYield",u.arg===l)continue;return{value:u.arg,done:e.done}}"throw"===u.type&&(n="completed",e.method="throw",e.arg=u.arg)}}}(t,e,a),i}function s(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(k){return{type:"throw",arg:k}}}t.wrap=h;var l={};function f(){}function p(){}function v(){}var d={};u(d,o,(function(){return this}));var y=Object.getPrototypeOf,g=y&&y(y(O([])));g&&g!==r&&e.call(g,o)&&(d=g);var m=v.prototype=f.prototype=Object.create(d);function w(t){["next","throw","return"].forEach((function(r){u(t,r,(function(t){return this._invoke(r,t)}))}))}function x(t,r){var n;this._invoke=function(o,i){function a(){return new r((function(n,a){!function n(o,i,a,c){var u=s(t[o],t,i);if("throw"!==u.type){var h=u.arg,l=h.value;return l&&"object"==typeof l&&e.call(l,"__await")?r.resolve(l.__await).then((function(t){n("next",t,a,c)}),(function(t){n("throw",t,a,c)})):r.resolve(l).then((function(t){h.value=t,a(h)}),(function(t){return n("throw",t,a,c)}))}c(u.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function L(t,r){var e=t.iterator[r.method];if(void 0===e){if(r.delegate=null,"throw"===r.method){if(t.iterator.return&&(r.method="return",r.arg=void 0,L(t,r),"throw"===r.method))return l;r.method="throw",r.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var n=s(e,t.iterator,r.arg);if("throw"===n.type)return r.method="throw",r.arg=n.arg,r.delegate=null,l;var o=n.arg;return o?o.done?(r[t.resultName]=o.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=void 0),r.delegate=null,l):o:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,l)}function b(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function E(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(b,this),this.reset(!0)}function O(t){if(t){var r=t[o];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function r(){for(;++n<t.length;)if(e.call(t,n))return r.value=t[n],r.done=!1,r;return r.value=void 0,r.done=!0,r};return i.next=i}}return{next:j}}function j(){return{value:void 0,done:!0}}return p.prototype=v,u(m,"constructor",v),u(v,"constructor",p),p.displayName=u(v,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===p||"GeneratorFunction"===(r.displayName||r.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,u(t,c,"GeneratorFunction")),t.prototype=Object.create(m),t},t.awrap=function(t){return{__await:t}},w(x.prototype),u(x.prototype,a,(function(){return this})),t.AsyncIterator=x,t.async=function(r,e,n,o,i){void 0===i&&(i=Promise);var a=new x(h(r,e,n,o),i);return t.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},w(m),u(m,c,"Generator"),u(m,o,(function(){return this})),u(m,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var r=[];for(var e in t)r.push(e);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=O,_.prototype={constructor:_,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(E),!t)for(var r in this)"t"===r.charAt(0)&&e.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function n(e,n){return a.type="throw",a.arg=t,r.next=e,n&&(r.method="next",r.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=e.call(i,"catchLoc"),u=e.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,r){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&e.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=r&&r<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=r,i?(this.method="next",this.next=i.finallyLoc,l):this.complete(a)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),l},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),E(e),l}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;E(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,e){return this.delegate={iterator:O(t),resultName:r,nextLoc:e},"next"===this.method&&(this.arg=void 0),l}},t}function a(){return(a=o(i().mark((function t(){var r,n,o,a,c,u;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.e(0).then(e.t.bind(null,7,7));case 2:return r=t.sent,n=r.libReady,o=r.isMasterApp,t.next=7,e.e(0).then(e.bind(null,6));case 7:return a=t.sent,c=a.LIB_NAME,t.next=11,e.e(0).then(e.bind(null,9));case 11:if(u=t.sent,n(c,u.default),!o()){t.next=16;break}return t.next=16,e.e(0).then(e.bind(null,8));case 16:case"end":return t.stop()}}),t)})))).apply(this,arguments)}e.r(r),function(){return a.apply(this,arguments)}().catch(console.error);r.default="HEL REMOTE MOD"}],[[0,2]]]);
@@ -0,0 +1 @@
1
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
@@ -0,0 +1 @@
1
+ !function(e){function t(t){for(var n,i,l=t[0],a=t[1],c=t[2],f=0,p=[];f<l.length;f++)i=l[f],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(s&&s(t);p.length;)p.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,l=1;l<r.length;l++){var a=r[l];0!==o[a]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={2:0},u=[];function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,l=document.createElement("script");l.charset="utf-8",l.timeout=120,i.nc&&l.setAttribute("nonce",i.nc),l.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{0:"5c853936"}[e]+".chunk.js"}(e);var a=new Error;u=function(t){l.onerror=l.onload=null,clearTimeout(c);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;a.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",a.name="ChunkLoadError",a.type=n,a.request=u,r[1](a)}o[e]=void 0}};var c=setTimeout((function(){u({type:"timeout",target:l})}),12e4);l.onerror=l.onload=u,document.head.appendChild(l)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="https://unpkg.com/test-hel-tpl-remote-lib-111@0.0.1/hel_dist/",i.oe=function(e){throw console.error(e),e};var l=this["helJsonp_test-hel-tpl-remote-lib-111_1679058373255"]=this["helJsonp_test-hel-tpl-remote-lib-111_1679058373255"]||[],a=l.push.bind(l);l.push=t,l=l.slice();for(var c=0;c<l.length;c++)t(l[c]);var s=a;r()}([]);
@@ -0,0 +1,20 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('hel-lib-proxy')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'hel-lib-proxy'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["test-hel-tpl-remote-lib-111"] = {}, global.helLibProxy));
5
+ })(this, (function (exports, helLibProxy) { 'use strict';
6
+
7
+ // import { appGroupName } from '../../package.json'
8
+ // 如果从 package.json 直接导出 appGroupName
9
+ // rollup 打包需要配置 @rollup/plugin-json
10
+ // webpack 打包会把整个 package 对象打到运行代码里
11
+ const LIB_NAME = 'test-hel-tpl-remote-lib-111';
12
+
13
+ const lib = helLibProxy.exposeLib(LIB_NAME);
14
+
15
+ exports["default"] = lib;
16
+ exports.lib = lib;
17
+
18
+ Object.defineProperty(exports, '__esModule', { value: true });
19
+
20
+ }));
@@ -0,0 +1,11 @@
1
+ import { exposeLib } from 'hel-lib-proxy';
2
+
3
+ // import { appGroupName } from '../../package.json'
4
+ // 如果从 package.json 直接导出 appGroupName
5
+ // rollup 打包需要配置 @rollup/plugin-json
6
+ // webpack 打包会把整个 package 对象打到运行代码里
7
+ const LIB_NAME = 'test-hel-tpl-remote-lib-111';
8
+
9
+ const lib = exposeLib(LIB_NAME);
10
+
11
+ export { lib as default, lib };
package/package.json ADDED
@@ -0,0 +1,113 @@
1
+ {
2
+ "name": "test-hel-tpl-remote-lib-111",
3
+ "appGroupName": "test-hel-tpl-remote-lib-111",
4
+ "main": "hel_proxy/entry.js",
5
+ "module": "hel_proxy_es/entry.js",
6
+ "unpkg": "hel_dist/index.html",
7
+ "types": "lib/entrance/libTypes.ts",
8
+ "version": "0.0.1",
9
+ "dependencies": {
10
+ "@types/lodash": "^4.14.182",
11
+ "hel-lib-proxy": "3.13.2",
12
+ "hel-micro": "^3.13.7",
13
+ "lodash": "^4.17.21"
14
+ },
15
+ "peerDependencies": {
16
+ "hel-lib-proxy": "^3.10.2",
17
+ "hel-micro": "^3.11.6"
18
+ },
19
+ "scripts": {
20
+ "postinstall": "node ./scripts/postinstall.js",
21
+ "prepublishOnly": "node ./scripts/prepublishOnly.js",
22
+ "check": "node ./scripts/check",
23
+ "start": "cross-env PORT=3001 npm run app",
24
+ "app": "node scripts/start.js",
25
+ "build_stub": "npm run build && npm run build_bundle",
26
+ "build": "npm run check_name && npm run build_dist && npm run build_meta && npm run build_proxy",
27
+ "check_name": "node scripts/check.js",
28
+ "build_dist": "node scripts/build.js",
29
+ "build_meta": "node scripts/meta.js",
30
+ "build_proxy": "npm run build_proxy_umd && npm run build_proxy_es",
31
+ "build_proxy_umd": "tsc & node ./scripts/replaceToRelativePath.js & rollup -c",
32
+ "build_proxy_es": "tsc & node ./scripts/replaceToRelativePath.js & cross-env BUILD_ENV=es rollup -c",
33
+ "build_bundle": "tsc & cross-env BUNDLE=true node ./scripts/replaceToRelativePath.js & cross-env BUNDLE=true node scripts/build.js",
34
+ "build_cust": "npm run set_home_page \"npm run build\"",
35
+ "set_home_page": "cross-env-shell HEL_APP_HOME_PAGE=http://127.0.0.1:9001",
36
+ "lint": "eslint ./src --ext ts,tsx",
37
+ "lintfix": "eslint ./src --ext ts,tsx --fix",
38
+ "test": "jest"
39
+ },
40
+ "eslintConfig": {
41
+ "extends": "react-app"
42
+ },
43
+ "browserslist": {
44
+ "production": [
45
+ ">0.2%",
46
+ "not dead",
47
+ "not op_mini all"
48
+ ],
49
+ "development": [
50
+ "last 1 chrome version",
51
+ "last 1 firefox version",
52
+ "last 1 safari version"
53
+ ]
54
+ },
55
+ "babel": {
56
+ "presets": [
57
+ "react-app"
58
+ ]
59
+ },
60
+ "license": "MIT",
61
+ "devDependencies": {
62
+ "@babel/core": "7.9.0",
63
+ "@testing-library/dom": "^8.17.1",
64
+ "@testing-library/user-event": "^7.1.2",
65
+ "@types/jest": "^24.9.1",
66
+ "@typescript-eslint/eslint-plugin": "^4.17.0",
67
+ "@typescript-eslint/parser": "^4.17.0",
68
+ "babel-eslint": "10.1.0",
69
+ "babel-jest": "^24.9.0",
70
+ "babel-loader": "8.1.0",
71
+ "babel-plugin-named-asset-import": "^0.3.6",
72
+ "babel-preset-react-app": "^9.1.2",
73
+ "case-sensitive-paths-webpack-plugin": "2.3.0",
74
+ "cross-env": "^7.0.3",
75
+ "eslint": "^6.8.0",
76
+ "eslint-loader": "3.0.3",
77
+ "eslint-plugin-import": "2.20.1",
78
+ "file-loader": "4.3.0",
79
+ "fs-extra": "^10.1.0",
80
+ "hel-dev-utils": "^3.0.1",
81
+ "html-webpack-plugin": "4.0.0-beta.11",
82
+ "jest": "24.9.0",
83
+ "jest-resolve": "24.9.0",
84
+ "jest-watch-typeahead": "0.4.2",
85
+ "jsdom": "^20.0.0",
86
+ "lint-staged": "^10.5.3",
87
+ "pnp-webpack-plugin": "1.6.4",
88
+ "react-dev-utils": "^11.0.4",
89
+ "replace-absolute-path": "^1.0.0",
90
+ "resolve": "^1.22.1",
91
+ "resolve-url-loader": "^3.1.2",
92
+ "rollup": "^2.56.3",
93
+ "rollup-plugin-terser": "^7.0.2",
94
+ "rollup-plugin-typescript": "^1.0.1",
95
+ "terser-webpack-plugin": "2.3.5",
96
+ "ts-pnp": "1.1.6",
97
+ "tslib": "^2.4.0",
98
+ "typescript": "^4.1.3",
99
+ "url-loader": "2.3.0",
100
+ "webpack": "4.42.0",
101
+ "webpack-dev-server": "^3.11.2",
102
+ "webpack-manifest-plugin": "2.2.0",
103
+ "workbox-webpack-plugin": "4.3.1"
104
+ },
105
+ "files": [
106
+ "hel_proxy",
107
+ "hel_proxy_es",
108
+ "hel_bundle",
109
+ "hel_dist",
110
+ "lib",
111
+ "scripts"
112
+ ]
113
+ }
@@ -0,0 +1,214 @@
1
+ /* eslint-disable */
2
+ 'use strict';
3
+
4
+ // Do this as the first thing so that any code reading it knows the right env.
5
+ process.env.BABEL_ENV = 'production';
6
+ process.env.NODE_ENV = 'production';
7
+
8
+ // Makes the script crash on unhandled rejections instead of silently
9
+ // ignoring them. In the future, promise rejections that are not handled will
10
+ // terminate the Node.js process with a non-zero exit code.
11
+ process.on('unhandledRejection', err => {
12
+ throw err;
13
+ });
14
+
15
+ // Ensure environment variables are read.
16
+ require('../config/env');
17
+
18
+
19
+ const path = require('path');
20
+ const chalk = require('react-dev-utils/chalk');
21
+ const fs = require('fs-extra');
22
+ const webpack = require('webpack');
23
+ const paths = require('../config/paths');
24
+ const checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');
25
+ const formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
26
+ const printHostingInstructions = require('react-dev-utils/printHostingInstructions');
27
+ const FileSizeReporter = require('react-dev-utils/FileSizeReporter');
28
+ const printBuildError = require('react-dev-utils/printBuildError');
29
+
30
+ const measureFileSizesBeforeBuild = FileSizeReporter.measureFileSizesBeforeBuild;
31
+ const printFileSizesAfterBuild = FileSizeReporter.printFileSizesAfterBuild;
32
+ const useYarn = fs.existsSync(paths.yarnLockFile);
33
+
34
+ const configFactory = process.env.BUNDLE === 'true'
35
+ ? require('../config/webpackBundle.config')
36
+ : require('../config/webpack.config');
37
+
38
+ // These sizes are pretty large. We'll warn for bundles exceeding them.
39
+ const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;
40
+ const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
41
+
42
+ const isInteractive = process.stdout.isTTY;
43
+
44
+ // Warn and crash if required files are missing
45
+ if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {
46
+ process.exit(1);
47
+ }
48
+
49
+ // Generate configuration
50
+ const config = configFactory('production');
51
+
52
+ // We require that you explicitly set browsers and do not fall back to
53
+ // browserslist defaults.
54
+ const { checkBrowsers } = require('react-dev-utils/browsersHelper');
55
+ checkBrowsers(paths.appPath, isInteractive)
56
+ .then(() => {
57
+ // First, read the current file sizes in build directory.
58
+ // This lets us display how much they changed later.
59
+ return measureFileSizesBeforeBuild(paths.appBuild);
60
+ })
61
+ .then(previousFileSizes => {
62
+ // Remove all content but keep the directory so that
63
+ // if you're in it, you don't end up in Trash
64
+ fs.emptyDirSync(paths.appBuild);
65
+ // Merge with the public folder
66
+ copyPublicFolder();
67
+ // Start the webpack build
68
+ return build(previousFileSizes);
69
+ })
70
+ .then(
71
+ ({ stats, previousFileSizes, warnings }) => {
72
+ if (warnings.length) {
73
+ console.log(chalk.yellow('Compiled with warnings.\n'));
74
+ console.log(warnings.join('\n\n'));
75
+ console.log(
76
+ '\nSearch for the ' +
77
+ chalk.underline(chalk.yellow('keywords')) +
78
+ ' to learn more about each warning.'
79
+ );
80
+ console.log(
81
+ 'To ignore, add ' +
82
+ chalk.cyan('// eslint-disable-next-line') +
83
+ ' to the line before.\n'
84
+ );
85
+ } else {
86
+ console.log(chalk.green('Compiled successfully.\n'));
87
+ }
88
+
89
+ console.log('File sizes after gzip:\n');
90
+ printFileSizesAfterBuild(
91
+ stats,
92
+ previousFileSizes,
93
+ paths.appBuild,
94
+ WARN_AFTER_BUNDLE_GZIP_SIZE,
95
+ WARN_AFTER_CHUNK_GZIP_SIZE
96
+ );
97
+ console.log();
98
+
99
+ const appPackage = require(paths.appPackageJson);
100
+ const publicUrl = paths.publicUrlOrPath;
101
+ const publicPath = config.output.publicPath;
102
+ const buildFolder = path.relative(process.cwd(), paths.appBuild);
103
+ printHostingInstructions(
104
+ appPackage,
105
+ publicUrl,
106
+ publicPath,
107
+ buildFolder,
108
+ useYarn
109
+ );
110
+ },
111
+ err => {
112
+ const tscCompileOnError = process.env.TSC_COMPILE_ON_ERROR === 'true';
113
+ if (tscCompileOnError) {
114
+ console.log(
115
+ chalk.yellow(
116
+ 'Compiled with the following type errors (you may want to check these before deploying your app):\n'
117
+ )
118
+ );
119
+ printBuildError(err);
120
+ } else {
121
+ console.log(chalk.red('Failed to compile.\n'));
122
+ printBuildError(err);
123
+ process.exit(1);
124
+ }
125
+ }
126
+ )
127
+ .catch(err => {
128
+ if (err && err.message) {
129
+ console.log(err.message);
130
+ }
131
+ process.exit(1);
132
+ });
133
+
134
+ // Create the production build and print the deployment instructions.
135
+ function build(previousFileSizes) {
136
+ // We used to support resolving modules according to `NODE_PATH`.
137
+ // This now has been deprecated in favor of jsconfig/tsconfig.json
138
+ // This lets you use absolute paths in imports inside large monorepos:
139
+ if (process.env.NODE_PATH) {
140
+ console.log(
141
+ chalk.yellow(
142
+ 'Setting NODE_PATH to resolve modules absolutely has been deprecated in favor of setting baseUrl in jsconfig.json (or tsconfig.json if you are using TypeScript) and will be removed in a future major release of create-react-app.'
143
+ )
144
+ );
145
+ console.log();
146
+ }
147
+
148
+ console.log('Creating an optimized production build...');
149
+
150
+ const compiler = webpack(config);
151
+ return new Promise((resolve, reject) => {
152
+ compiler.run((err, stats) => {
153
+ let messages;
154
+ if (err) {
155
+ if (!err.message) {
156
+ return reject(err);
157
+ }
158
+
159
+ let errMessage = err.message;
160
+
161
+ // Add additional information for postcss errors
162
+ if (Object.prototype.hasOwnProperty.call(err, 'postcssNode')) {
163
+ errMessage +=
164
+ '\nCompileError: Begins at CSS selector ' +
165
+ err['postcssNode'].selector;
166
+ }
167
+
168
+ messages = formatWebpackMessages({
169
+ errors: [errMessage],
170
+ warnings: [],
171
+ });
172
+ } else {
173
+ messages = formatWebpackMessages(
174
+ stats.toJson({ all: false, warnings: true, errors: true })
175
+ );
176
+ }
177
+ if (messages.errors.length) {
178
+ // Only keep the first error. Others are often indicative
179
+ // of the same problem, but confuse the reader with noise.
180
+ if (messages.errors.length > 1) {
181
+ messages.errors.length = 1;
182
+ }
183
+ return reject(new Error(messages.errors.join('\n\n')));
184
+ }
185
+ if (
186
+ process.env.CI &&
187
+ (typeof process.env.CI !== 'string' ||
188
+ process.env.CI.toLowerCase() !== 'false') &&
189
+ messages.warnings.length
190
+ ) {
191
+ console.log(
192
+ chalk.yellow(
193
+ '\nTreating warnings as errors because process.env.CI = true.\n' +
194
+ 'Most CI servers set it automatically.\n'
195
+ )
196
+ );
197
+ return reject(new Error(messages.warnings.join('\n\n')));
198
+ }
199
+
200
+ return resolve({
201
+ stats,
202
+ previousFileSizes,
203
+ warnings: messages.warnings,
204
+ });
205
+ });
206
+ });
207
+ }
208
+
209
+ function copyPublicFolder() {
210
+ fs.copySync(paths.appPublic, paths.appBuild, {
211
+ dereference: true,
212
+ filter: file => file !== paths.appHtml,
213
+ });
214
+ }
@@ -0,0 +1,13 @@
1
+ /*
2
+ |--------------------------------------------------------------------------
3
+ |
4
+ | 此脚本在流水线上会被触发,用于校验组名是否和应用里的组名保持一致
5
+ |
6
+ |--------------------------------------------------------------------------
7
+ */
8
+ const path = require('path');
9
+ const helDevUtils = require('hel-dev-utils');
10
+ const pkg = require('../package.json');
11
+
12
+ const fileFullPath = path.join(__dirname, '../src/configs/subApp');
13
+ helDevUtils.check(pkg, { fileFullPath, checkEnv: false });
@@ -0,0 +1,21 @@
1
+ /*
2
+ |--------------------------------------------------------------------------
3
+ |
4
+ | 生成meta
5
+ |
6
+ |--------------------------------------------------------------------------
7
+ */
8
+ const process = require('process');
9
+ const path = require('path');
10
+ const helDevUtils = require('hel-dev-utils');
11
+ const packageJson = require('../package.json');
12
+ const subApp = require('../config/subApp');
13
+
14
+ helDevUtils.extractHelMetaJson({
15
+ subApp,
16
+ buildDirFullPath: path.join(__dirname, '../hel_dist'),
17
+ packageJson,
18
+ }).catch(err => {
19
+ console.error(err);
20
+ process.exit(-1);
21
+ });
@@ -0,0 +1,11 @@
1
+
2
+ console.log('---------------------------------------------------------------------------------------');
3
+ console.log('| ');
4
+ console.log('| Welcome to use hel remote module');
5
+ console.log('| this lib only offer types(may include source code), its dist file is nearly empty,');
6
+ console.log('| so it has no effect on your app webpack bundle size! ');
7
+ console.log('| you should use hel-micro to load remote module.');
8
+ console.log('| see https://github.com/tnfe/hel to know more details of hel-micro');
9
+ console.log('| ');
10
+ console.log('---------------------------------------------------------------------------------------');
11
+
@@ -0,0 +1,28 @@
1
+ /*
2
+ |--------------------------------------------------------------------------
3
+ | npm publush 前检查根目录下 package.json 的版本号是否和 hel_dist/hel-meta.json 一致
4
+ |--------------------------------------------------------------------------
5
+ */
6
+
7
+ const chalk = require("react-dev-utils/chalk");
8
+ const pkg = require("../package.json");
9
+ const fs = require("fs");
10
+ const path = require("path");
11
+ const helDistPath = path.resolve(__dirname, "../hel_dist/hel-meta.json");
12
+ const existHelMeata = fs.existsSync(helDistPath);
13
+
14
+ // 检查是否执行npm run build 打包命令
15
+ if (!existHelMeata) {
16
+ console.log(chalk.red("Run the 'npm run build' command first.\n"));
17
+ process.exit(1);
18
+ }
19
+ const { app } = JSON.parse(fs.readFileSync(helDistPath, "utf-8"));
20
+ // 检查根目录下 package.json 的版本号是否和 hel_dist/hel-meta.json 一致
21
+ if (app?.build_version !== pkg.version) {
22
+ console.log(
23
+ chalk.red(
24
+ "The package.json version number and the hel_dist/hel-meta.json version number must be the same.\n"
25
+ )
26
+ );
27
+ process.exit(1);
28
+ }
@@ -0,0 +1,34 @@
1
+ /*
2
+ |--------------------------------------------------------------------------
3
+ |
4
+ | convert absolute path based baseUrl to relative path
5
+ |
6
+ | 配合 npm run build_types 命令执行的脚本
7
+ | 用于将所有的绝对引用路径转为相对应用路径
8
+ | 例如:import { isSubApp } from 'services/appEnv';
9
+ | 将转为:import { isSubApp } from '../../services/appEnv';
10
+ | 这样被别的项目引用时才能正确的导出整个项目的推导类型
11
+ |--------------------------------------------------------------------------
12
+ */
13
+ const replacer = require('replace-absolute-path');
14
+ const path = require('path');
15
+
16
+ (async function () {
17
+ const srcDir = process.env.BUNDLE === 'true' ? path.resolve(__dirname, '../lib-js') : path.resolve(__dirname, '../src');
18
+ const libDir = process.env.BUNDLE === 'true' ? path.resolve(__dirname, '../lib-js') : path.resolve(__dirname, '../lib');
19
+ const strList = libDir.split('/');
20
+ const libDirShortName = strList[strList.length - 1];
21
+
22
+ await replacer({
23
+ inputDir: srcDir,
24
+ outputDir: libDir,
25
+ afterReplaced() {
26
+ console.log('----------------------------------------------------------------------------------');
27
+ console.log(`| all files import statements been transformed to relative path for ${libDirShortName} ^_^!`);
28
+ console.log('----------------------------------------------------------------------------------');
29
+ },
30
+ });
31
+ })()
32
+
33
+
34
+ // console.log(getAllFilePath(path.resolve(__dirname, './src')))
@@ -0,0 +1,166 @@
1
+ 'use strict';
2
+
3
+ // Do this as the first thing so that any code reading it knows the right env.
4
+ process.env.BABEL_ENV = 'development';
5
+ process.env.NODE_ENV = 'development';
6
+
7
+ // Makes the script crash on unhandled rejections instead of silently
8
+ // ignoring them. In the future, promise rejections that are not handled will
9
+ // terminate the Node.js process with a non-zero exit code.
10
+ process.on('unhandledRejection', err => {
11
+ throw err;
12
+ });
13
+
14
+ // Ensure environment variables are read.
15
+ require('../config/env');
16
+
17
+
18
+ const fs = require('fs');
19
+ const chalk = require('react-dev-utils/chalk');
20
+ const webpack = require('webpack');
21
+ const WebpackDevServer = require('webpack-dev-server');
22
+ const clearConsole = require('react-dev-utils/clearConsole');
23
+ const checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');
24
+ const {
25
+ choosePort,
26
+ createCompiler,
27
+ prepareProxy,
28
+ prepareUrls,
29
+ } = require('react-dev-utils/WebpackDevServerUtils');
30
+ const openBrowser = require('react-dev-utils/openBrowser');
31
+ const paths = require('../config/paths');
32
+ const configFactory = require('../config/webpack.config');
33
+ const createDevServerConfig = require('../config/webpackDevServer.config');
34
+
35
+ const useYarn = fs.existsSync(paths.yarnLockFile);
36
+ const isInteractive = process.stdout.isTTY;
37
+
38
+ // Warn and crash if required files are missing
39
+ if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {
40
+ process.exit(1);
41
+ }
42
+
43
+ // Tools like Cloud9 rely on this.
44
+ const DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;
45
+ const HOST = process.env.HOST || '0.0.0.0';
46
+
47
+ if (process.env.HOST) {
48
+ console.log(
49
+ chalk.cyan(
50
+ `Attempting to bind to HOST environment variable: ${chalk.yellow(
51
+ chalk.bold(process.env.HOST)
52
+ )}`
53
+ )
54
+ );
55
+ console.log(
56
+ `If this was unintentional, check that you haven't mistakenly set it in your shell.`
57
+ );
58
+ console.log(
59
+ `Learn more here: ${chalk.yellow('https://bit.ly/CRA-advanced-config')}`
60
+ );
61
+ console.log();
62
+ }
63
+
64
+ // We require that you explicitly set browsers and do not fall back to
65
+ // browserslist defaults.
66
+ const { checkBrowsers } = require('react-dev-utils/browsersHelper');
67
+ checkBrowsers(paths.appPath, isInteractive)
68
+ .then(() => {
69
+ // We attempt to use the default port but if it is busy, we offer the user to
70
+ // run on a different port. `choosePort()` Promise resolves to the next free port.
71
+ return choosePort(HOST, DEFAULT_PORT);
72
+ })
73
+ .then(port => {
74
+ if (port == null) {
75
+ // We have not found a port.
76
+ return;
77
+ }
78
+
79
+ const config = configFactory('development');
80
+ const protocol = process.env.HTTPS === 'true' ? 'https' : 'http';
81
+ const appName = require(paths.appPackageJson).name;
82
+ const useTypeScript = fs.existsSync(paths.appTsConfig);
83
+ const tscCompileOnError = process.env.TSC_COMPILE_ON_ERROR === 'true';
84
+ const urls = prepareUrls(
85
+ protocol,
86
+ HOST,
87
+ port,
88
+ paths.publicUrlOrPath.slice(0, -1)
89
+ );
90
+ const devSocket = {
91
+ warnings: warnings =>
92
+ devServer.sockWrite(devServer.sockets, 'warnings', warnings),
93
+ errors: errors =>
94
+ devServer.sockWrite(devServer.sockets, 'errors', errors),
95
+ };
96
+ // Create a webpack compiler that is configured with custom messages.
97
+ const compiler = createCompiler({
98
+ appName,
99
+ config,
100
+ devSocket,
101
+ urls,
102
+ useYarn,
103
+ useTypeScript,
104
+ tscCompileOnError,
105
+ webpack,
106
+ });
107
+ // Load proxy config
108
+ const proxySetting = require(paths.appPackageJson).proxy;
109
+ const proxyConfig = prepareProxy(
110
+ proxySetting,
111
+ paths.appPublic,
112
+ paths.publicUrlOrPath
113
+ );
114
+ // Serve webpack assets generated by the compiler over a web server.
115
+ const serverConfig = createDevServerConfig(
116
+ proxyConfig,
117
+ urls.lanUrlForConfig
118
+ );
119
+ const devServer = new WebpackDevServer(compiler, serverConfig);
120
+ // Launch WebpackDevServer.
121
+ devServer.listen(port, HOST, err => {
122
+ if (err) {
123
+ return console.log(err);
124
+ }
125
+ if (isInteractive) {
126
+ clearConsole();
127
+ }
128
+
129
+ // We used to support resolving modules according to `NODE_PATH`.
130
+ // This now has been deprecated in favor of jsconfig/tsconfig.json
131
+ // This lets you use absolute paths in imports inside large monorepos:
132
+ if (process.env.NODE_PATH) {
133
+ console.log(
134
+ chalk.yellow(
135
+ 'Setting NODE_PATH to resolve modules absolutely has been deprecated in favor of setting baseUrl in jsconfig.json (or tsconfig.json if you are using TypeScript) and will be removed in a future major release of create-react-app.'
136
+ )
137
+ );
138
+ console.log();
139
+ }
140
+
141
+ console.log(chalk.cyan('Starting the development server...\n'));
142
+ openBrowser(urls.localUrlForBrowser);
143
+ });
144
+
145
+ ['SIGINT', 'SIGTERM'].forEach(function(sig) {
146
+ process.on(sig, function() {
147
+ devServer.close();
148
+ process.exit();
149
+ });
150
+ });
151
+
152
+ if (isInteractive || process.env.CI !== 'true') {
153
+ // Gracefully exit when stdin ends
154
+ process.stdin.on('end', function() {
155
+ devServer.close();
156
+ process.exit();
157
+ });
158
+ process.stdin.resume();
159
+ }
160
+ })
161
+ .catch(err => {
162
+ if (err && err.message) {
163
+ console.log(err.message);
164
+ }
165
+ process.exit(1);
166
+ });
@@ -0,0 +1,54 @@
1
+ /* eslint-disable */
2
+ 'use strict';
3
+
4
+ // Do this as the first thing so that any code reading it knows the right env.
5
+ process.env.BABEL_ENV = 'test';
6
+ process.env.NODE_ENV = 'test';
7
+ process.env.PUBLIC_URL = '';
8
+
9
+ // Makes the script crash on unhandled rejections instead of silently
10
+ // ignoring them. In the future, promise rejections that are not handled will
11
+ // terminate the Node.js process with a non-zero exit code.
12
+ process.on('unhandledRejection', err => {
13
+ throw err;
14
+ });
15
+
16
+ // Ensure environment variables are read.
17
+ require('../config/env');
18
+
19
+
20
+ const jest = require('jest');
21
+ const execSync = require('child_process').execSync;
22
+ let argv = process.argv.slice(2);
23
+
24
+ function isInGitRepository() {
25
+ try {
26
+ execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });
27
+ return true;
28
+ } catch (e) {
29
+ return false;
30
+ }
31
+ }
32
+
33
+ function isInMercurialRepository() {
34
+ try {
35
+ execSync('hg --cwd . root', { stdio: 'ignore' });
36
+ return true;
37
+ } catch (e) {
38
+ return false;
39
+ }
40
+ }
41
+
42
+ // Watch unless on CI or explicitly running all tests
43
+ if (
44
+ !process.env.CI &&
45
+ argv.indexOf('--watchAll') === -1 &&
46
+ argv.indexOf('--watchAll=false') === -1
47
+ ) {
48
+ // https://github.com/facebook/create-react-app/issues/5210
49
+ const hasSourceControl = isInGitRepository() || isInMercurialRepository();
50
+ argv.push(hasSourceControl ? '--watch' : '--watchAll');
51
+ }
52
+
53
+
54
+ jest.run(argv);