@qiankunjs/shared 0.0.1-rc.0 → 0.0.1-rc.10
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/assets-transpilers/index.d.ts +8 -0
- package/dist/cjs/assets-transpilers/index.js +14 -0
- package/dist/cjs/assets-transpilers/index.js.map +1 -1
- package/dist/cjs/assets-transpilers/link.js +45 -56
- package/dist/cjs/assets-transpilers/link.js.map +1 -1
- package/dist/cjs/assets-transpilers/script.d.ts +5 -5
- package/dist/cjs/assets-transpilers/script.js +161 -101
- package/dist/cjs/assets-transpilers/script.js.map +1 -1
- package/dist/cjs/assets-transpilers/types.d.ts +17 -5
- package/dist/cjs/assets-transpilers/types.js +6 -5
- package/dist/cjs/assets-transpilers/types.js.map +1 -1
- package/dist/cjs/assets-transpilers/utils.d.ts +2 -0
- package/dist/cjs/assets-transpilers/utils.js +25 -0
- package/dist/cjs/assets-transpilers/utils.js.map +1 -0
- package/dist/cjs/deferred-queue/index.d.ts +6 -0
- package/dist/cjs/deferred-queue/index.js +25 -0
- package/dist/cjs/deferred-queue/index.js.map +1 -0
- package/dist/cjs/fetch-utils/miniLruCache.d.ts +8 -0
- package/dist/cjs/fetch-utils/miniLruCache.js +49 -0
- package/dist/cjs/fetch-utils/miniLruCache.js.map +1 -0
- package/dist/cjs/fetch-utils/wrapFetchWithCache.d.ts +3 -0
- package/dist/cjs/fetch-utils/wrapFetchWithCache.js +74 -0
- package/dist/cjs/fetch-utils/wrapFetchWithCache.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.js +26 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/module-resolver/index.d.ts +1 -1
- package/dist/cjs/module-resolver/index.js +10 -10
- package/dist/cjs/module-resolver/index.js.map +1 -1
- package/dist/cjs/{error → reporter}/QiankunError.js +1 -2
- package/dist/cjs/reporter/QiankunError.js.map +1 -0
- package/dist/{esm/error → cjs/reporter}/index.d.ts +1 -0
- package/dist/cjs/reporter/index.js +28 -0
- package/dist/cjs/reporter/index.js.map +1 -0
- package/dist/cjs/reporter/logger.d.ts +1 -0
- package/dist/cjs/reporter/logger.js +14 -0
- package/dist/cjs/reporter/logger.js.map +1 -0
- package/dist/cjs/utils.d.ts +8 -0
- package/dist/cjs/utils.js +89 -28
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/assets-transpilers/index.d.ts +8 -0
- package/dist/esm/assets-transpilers/index.js +8 -0
- package/dist/esm/assets-transpilers/index.js.map +1 -1
- package/dist/esm/assets-transpilers/link.js +45 -56
- package/dist/esm/assets-transpilers/link.js.map +1 -1
- package/dist/esm/assets-transpilers/script.d.ts +5 -5
- package/dist/esm/assets-transpilers/script.js +161 -100
- package/dist/esm/assets-transpilers/script.js.map +1 -1
- package/dist/esm/assets-transpilers/types.d.ts +17 -5
- package/dist/esm/assets-transpilers/types.js +5 -3
- package/dist/esm/assets-transpilers/types.js.map +1 -1
- package/dist/esm/assets-transpilers/utils.d.ts +2 -0
- package/dist/esm/assets-transpilers/utils.js +17 -0
- package/dist/esm/assets-transpilers/utils.js.map +1 -0
- package/dist/esm/deferred-queue/index.d.ts +6 -0
- package/dist/esm/deferred-queue/index.js +19 -0
- package/dist/esm/deferred-queue/index.js.map +1 -0
- package/dist/esm/fetch-utils/miniLruCache.d.ts +8 -0
- package/dist/esm/fetch-utils/miniLruCache.js +42 -0
- package/dist/esm/fetch-utils/miniLruCache.js.map +1 -0
- package/dist/esm/fetch-utils/wrapFetchWithCache.d.ts +3 -0
- package/dist/esm/fetch-utils/wrapFetchWithCache.js +66 -0
- package/dist/esm/fetch-utils/wrapFetchWithCache.js.map +1 -0
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/module-resolver/index.d.ts +1 -1
- package/dist/esm/module-resolver/index.js +10 -10
- package/dist/esm/module-resolver/index.js.map +1 -1
- package/dist/esm/reporter/QiankunError.js.map +1 -0
- package/dist/{cjs/error → esm/reporter}/index.d.ts +1 -0
- package/dist/esm/reporter/index.js +3 -0
- package/dist/esm/reporter/index.js.map +1 -0
- package/dist/esm/reporter/logger.d.ts +1 -0
- package/dist/esm/reporter/logger.js +8 -0
- package/dist/esm/reporter/logger.js.map +1 -0
- package/dist/esm/utils.d.ts +8 -0
- package/dist/esm/utils.js +78 -12
- package/dist/esm/utils.js.map +1 -1
- package/package.json +6 -8
- package/dist/cjs/error/QiankunError.js.map +0 -1
- package/dist/cjs/error/index.js +0 -13
- package/dist/cjs/error/index.js.map +0 -1
- package/dist/esm/error/QiankunError.js.map +0 -1
- package/dist/esm/error/index.js +0 -2
- package/dist/esm/error/index.js.map +0 -1
- package/src/assets-transpilers/index.ts +0 -40
- package/src/assets-transpilers/link.ts +0 -150
- package/src/assets-transpilers/script.ts +0 -178
- package/src/assets-transpilers/types.ts +0 -22
- package/src/common.ts +0 -3
- package/src/error/QiankunError.ts +0 -5
- package/src/error/index.ts +0 -1
- package/src/index.ts +0 -9
- package/src/module-resolver/__tests__/index.ts +0 -75
- package/src/module-resolver/index.ts +0 -92
- package/src/module-resolver/types.ts +0 -9
- package/src/typings.d.ts +0 -13
- package/src/utils.ts +0 -29
- /package/dist/cjs/{error → reporter}/QiankunError.d.ts +0 -0
- /package/dist/esm/{error → reporter}/QiankunError.d.ts +0 -0
- /package/dist/esm/{error → reporter}/QiankunError.js +0 -0
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import type { AssetsTranspilerOpts } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* transpile the assets to support micro frontend
|
|
4
|
+
* @param node the original node
|
|
5
|
+
* @param baseURI the baseURI of the node
|
|
6
|
+
* @param opts
|
|
7
|
+
* @returns original node after transpiled
|
|
8
|
+
*/
|
|
2
9
|
export declare function transpileAssets<T extends Node>(node: T, baseURI: string, opts: AssetsTranspilerOpts): T;
|
|
3
10
|
export type * from './types';
|
|
11
|
+
export { isValidJavaScriptType } from './utils';
|
|
@@ -4,14 +4,28 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
Object.defineProperty(exports, "isValidJavaScriptType", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _utils.isValidJavaScriptType;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
7
13
|
exports.transpileAssets = transpileAssets;
|
|
8
14
|
var _link = _interopRequireDefault(require("./link"));
|
|
9
15
|
var _script = _interopRequireDefault(require("./script"));
|
|
16
|
+
var _utils = require("./utils");
|
|
10
17
|
/**
|
|
11
18
|
* @author Kuitos
|
|
12
19
|
* @since 2023-03-14
|
|
13
20
|
*/
|
|
14
21
|
|
|
22
|
+
/**
|
|
23
|
+
* transpile the assets to support micro frontend
|
|
24
|
+
* @param node the original node
|
|
25
|
+
* @param baseURI the baseURI of the node
|
|
26
|
+
* @param opts
|
|
27
|
+
* @returns original node after transpiled
|
|
28
|
+
*/
|
|
15
29
|
function transpileAssets(node, baseURI, opts) {
|
|
16
30
|
var htmlElement = node;
|
|
17
31
|
var tagName = htmlElement.tagName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_link","_interopRequireDefault","require","_script","transpileAssets","node","baseURI","opts","htmlElement","tagName","transpileScript","transpileLink"],"sources":["../../../src/assets-transpilers/index.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-03-14\n */\nimport transpileLink from './link';\nimport transpileScript from './script';\nimport type { AssetsTranspilerOpts } from './types';\n\nexport function transpileAssets<T extends Node>(node: T, baseURI: string, opts: AssetsTranspilerOpts): T {\n const htmlElement =
|
|
1
|
+
{"version":3,"names":["_link","_interopRequireDefault","require","_script","_utils","transpileAssets","node","baseURI","opts","htmlElement","tagName","transpileScript","transpileLink"],"sources":["../../../src/assets-transpilers/index.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-03-14\n */\nimport transpileLink from './link';\nimport transpileScript from './script';\nimport type { AssetsTranspilerOpts } from './types';\n\n/**\n * transpile the assets to support micro frontend\n * @param node the original node\n * @param baseURI the baseURI of the node\n * @param opts\n * @returns original node after transpiled\n */\nexport function transpileAssets<T extends Node>(node: T, baseURI: string, opts: AssetsTranspilerOpts): T {\n const htmlElement = node as unknown as HTMLElement;\n const { tagName } = htmlElement;\n\n switch (tagName) {\n case 'SCRIPT': {\n return transpileScript(htmlElement as HTMLScriptElement, baseURI, opts) as unknown as T;\n }\n\n case 'LINK': {\n return transpileLink(htmlElement as HTMLLinkElement, baseURI, opts) as unknown as T;\n }\n\n default:\n break;\n }\n\n // TODO need to deal with the text scenario of script\n // const { nodeType } = node;\n // switch (nodeType) {\n // case Node.TEXT_NODE: {\n // if (node.parentNode?.nodeName === 'script') {\n // break;\n // }\n // }\n //\n // }\n // }\n return node;\n}\n\nexport type * from './types';\n\nexport { isValidJavaScriptType } from './utils';\n"],"mappings":";;;;;;;;;;;;;AAIA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AA2CA,IAAAE,MAAA,GAAAF,OAAA;AAhDA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,eAAeA,CAAiBC,IAAO,EAAEC,OAAe,EAAEC,IAA0B,EAAK;EACvG,IAAMC,WAAW,GAAGH,IAA8B;EAClD,IAAQI,OAAO,GAAKD,WAAW,CAAvBC,OAAO;EAEf,QAAQA,OAAO;IACb,KAAK,QAAQ;MAAE;QACb,OAAO,IAAAC,eAAe,EAACF,WAAW,EAAuBF,OAAO,EAAEC,IAAI,CAAC;MACzE;IAEA,KAAK,MAAM;MAAE;QACX,OAAO,IAAAI,aAAa,EAACH,WAAW,EAAqBF,OAAO,EAAEC,IAAI,CAAC;MACrE;IAEA;MACE;EACJ;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAOF,IAAI;AACb"}
|
|
@@ -6,56 +6,42 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = transpileLink;
|
|
8
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
+
var _reporter = require("../reporter");
|
|
9
10
|
var _utils = require("../utils");
|
|
10
11
|
var _script = require("./script");
|
|
11
12
|
var _types = require("./types");
|
|
13
|
+
var _utils2 = require("./utils");
|
|
12
14
|
/**
|
|
13
15
|
* @author Kuitos
|
|
14
16
|
* @since 2023-04-26
|
|
15
17
|
*/
|
|
16
18
|
|
|
17
|
-
var
|
|
19
|
+
var preTranspileStyleSheetLink = function preTranspileStyleSheetLink(link, baseURI, opts) {
|
|
18
20
|
var sandbox = opts.sandbox,
|
|
19
21
|
moduleResolver = opts.moduleResolver;
|
|
20
|
-
var href = link.href
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
var href = link.href,
|
|
23
|
+
rel = link.rel;
|
|
24
|
+
|
|
25
|
+
// filter preload links
|
|
26
|
+
if (href && rel === 'stylesheet') {
|
|
27
|
+
var linkHref = (0, _utils.getEntireUrl)(href, baseURI);
|
|
28
|
+
var matchedAssets = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(linkHref);
|
|
29
|
+
if (matchedAssets) {
|
|
30
|
+
return {
|
|
31
|
+
mode: sandbox ? _types.Mode.REUSED_DEP_IN_SANDBOX : _types.Mode.REUSED_DEP,
|
|
32
|
+
result: (0, _objectSpread2.default)({
|
|
33
|
+
src: linkHref
|
|
34
|
+
}, matchedAssets)
|
|
35
|
+
};
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
return {
|
|
36
39
|
mode: _types.Mode.NONE
|
|
37
40
|
};
|
|
38
41
|
};
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* While the assets are transpiling in sandbox, it means they will be evaluated with manual fetching,
|
|
42
|
-
* thus we need to set the attribute `as` to fetch instead of script or style to avoid preload cache missing.
|
|
43
|
-
* see https://stackoverflow.com/questions/52635660/can-link-rel-preload-be-made-to-work-with-fetch/63814972#63814972
|
|
44
|
-
*/
|
|
45
42
|
var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts) {
|
|
46
43
|
var as = link.as,
|
|
47
44
|
href = link.href;
|
|
48
|
-
var revokeAfterLoaded = function revokeAfterLoaded(objectURL, link) {
|
|
49
|
-
var revoke = function revoke() {
|
|
50
|
-
return URL.revokeObjectURL(objectURL);
|
|
51
|
-
};
|
|
52
|
-
link.addEventListener('load', revoke, {
|
|
53
|
-
once: true
|
|
54
|
-
});
|
|
55
|
-
link.addEventListener('error', revoke, {
|
|
56
|
-
once: true
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
45
|
switch (as) {
|
|
60
46
|
case 'script':
|
|
61
47
|
{
|
|
@@ -65,19 +51,24 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
|
|
|
65
51
|
mode = _preTranspileScript.mode,
|
|
66
52
|
result = _preTranspileScript.result;
|
|
67
53
|
switch (mode) {
|
|
68
|
-
|
|
54
|
+
/**
|
|
55
|
+
* While the assets are transpiling in sandbox, it means they will be evaluated with manual fetching,
|
|
56
|
+
* thus we need to set the attribute `as` to fetch instead of script or style to avoid preload cache missing.
|
|
57
|
+
* see https://stackoverflow.com/questions/52635660/can-link-rel-preload-be-made-to-work-with-fetch/63814972#63814972
|
|
58
|
+
*/
|
|
59
|
+
case _types.Mode.REMOTE_ASSETS_IN_SANDBOX:
|
|
69
60
|
{
|
|
61
|
+
if (process.env.NODE_ENV === 'development' && !link.hasAttribute('crossorigin')) {
|
|
62
|
+
(0, _reporter.warn)("crossorigin attribute of script ".concat(href, " is not specified, that will make preload invalid, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/preload#cors-enabled_fetches"));
|
|
63
|
+
}
|
|
70
64
|
link.as = 'fetch';
|
|
71
65
|
break;
|
|
72
66
|
}
|
|
73
|
-
case _types.Mode.
|
|
67
|
+
case _types.Mode.REUSED_DEP_IN_SANDBOX:
|
|
68
|
+
case _types.Mode.REUSED_DEP:
|
|
74
69
|
{
|
|
75
70
|
var url = result.url;
|
|
76
|
-
|
|
77
|
-
type: 'text/javascript'
|
|
78
|
-
}));
|
|
79
|
-
link.href = objectURL;
|
|
80
|
-
revokeAfterLoaded(objectURL, link);
|
|
71
|
+
link.href = (0, _utils2.createReusingObjectUrl)(href, url, 'text/javascript');
|
|
81
72
|
break;
|
|
82
73
|
}
|
|
83
74
|
}
|
|
@@ -85,20 +76,18 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
|
|
|
85
76
|
}
|
|
86
77
|
case 'style':
|
|
87
78
|
{
|
|
88
|
-
var
|
|
89
|
-
href: href
|
|
79
|
+
var _preTranspileStyleShe = preTranspileStyleSheetLink({
|
|
80
|
+
href: href,
|
|
81
|
+
rel: 'stylesheet'
|
|
90
82
|
}, baseURI, opts),
|
|
91
|
-
_mode =
|
|
92
|
-
_result =
|
|
83
|
+
_mode = _preTranspileStyleShe.mode,
|
|
84
|
+
_result = _preTranspileStyleShe.result;
|
|
93
85
|
switch (_mode) {
|
|
94
|
-
case _types.Mode.
|
|
86
|
+
case _types.Mode.REUSED_DEP_IN_SANDBOX:
|
|
87
|
+
case _types.Mode.REUSED_DEP:
|
|
95
88
|
{
|
|
96
89
|
var _url = _result.url;
|
|
97
|
-
|
|
98
|
-
type: 'text/css'
|
|
99
|
-
}));
|
|
100
|
-
link.href = _objectURL;
|
|
101
|
-
revokeAfterLoaded(_objectURL, link);
|
|
90
|
+
link.href = (0, _utils2.createReusingObjectUrl)(href, _url, 'text/css');
|
|
102
91
|
break;
|
|
103
92
|
}
|
|
104
93
|
}
|
|
@@ -110,22 +99,22 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
|
|
|
110
99
|
};
|
|
111
100
|
function transpileLink(link, baseURI, opts) {
|
|
112
101
|
var hrefAttribute = link.getAttribute('href');
|
|
113
|
-
var
|
|
114
|
-
href: hrefAttribute || undefined
|
|
102
|
+
var _preTranspileStyleShe2 = preTranspileStyleSheetLink({
|
|
103
|
+
href: hrefAttribute || undefined,
|
|
104
|
+
rel: link.rel
|
|
115
105
|
}, baseURI, opts),
|
|
116
|
-
mode =
|
|
117
|
-
result =
|
|
106
|
+
mode = _preTranspileStyleShe2.mode,
|
|
107
|
+
result = _preTranspileStyleShe2.result;
|
|
118
108
|
switch (mode) {
|
|
119
|
-
case _types.Mode.
|
|
109
|
+
case _types.Mode.REUSED_DEP_IN_SANDBOX:
|
|
110
|
+
case _types.Mode.REUSED_DEP:
|
|
120
111
|
{
|
|
121
112
|
var src = result.src,
|
|
122
113
|
version = result.version,
|
|
123
114
|
url = result.url;
|
|
124
115
|
link.dataset.href = src;
|
|
125
116
|
link.dataset.version = version;
|
|
126
|
-
link.href =
|
|
127
|
-
type: 'text/css'
|
|
128
|
-
}));
|
|
117
|
+
link.href = (0, _utils2.createReusingObjectUrl)(src, url, 'text/css');
|
|
129
118
|
return link;
|
|
130
119
|
}
|
|
131
120
|
case _types.Mode.NONE:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_reporter","require","_utils","_script","_types","_utils2","preTranspileStyleSheetLink","link","baseURI","opts","sandbox","moduleResolver","href","rel","linkHref","getEntireUrl","matchedAssets","mode","Mode","REUSED_DEP_IN_SANDBOX","REUSED_DEP","result","_objectSpread2","default","src","NONE","postProcessPreloadLink","as","_preTranspileScript","preTranspileScript","REMOTE_ASSETS_IN_SANDBOX","process","env","NODE_ENV","hasAttribute","warn","concat","url","createReusingObjectUrl","_preTranspileStyleShe","transpileLink","hrefAttribute","getAttribute","_preTranspileStyleShe2","undefined","version","dataset"],"sources":["../../../src/assets-transpilers/link.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-04-26\n */\nimport type { MatchResult } from '../module-resolver';\nimport { warn } from '../reporter';\nimport { getEntireUrl } from '../utils';\nimport { preTranspile as preTranspileScript } from './script';\nimport type { AssetsTranspilerOpts, BaseTranspilerOpts } from './types';\nimport { Mode } from './types';\nimport { createReusingObjectUrl } from './utils';\n\ntype PreTranspileResult =\n | { mode: Mode.REUSED_DEP_IN_SANDBOX | Mode.REUSED_DEP; result: { src: string } & MatchResult }\n | { mode: Mode.NONE; result?: never };\nconst preTranspileStyleSheetLink = (\n link: Partial<Pick<HTMLLinkElement, 'href' | 'rel'>>,\n baseURI: string,\n opts: BaseTranspilerOpts,\n): PreTranspileResult => {\n const { sandbox, moduleResolver } = opts;\n const { href, rel } = link;\n\n // filter preload links\n if (href && rel === 'stylesheet') {\n const linkHref = getEntireUrl(href, baseURI);\n\n const matchedAssets = moduleResolver?.(linkHref);\n if (matchedAssets) {\n return {\n mode: sandbox ? Mode.REUSED_DEP_IN_SANDBOX : Mode.REUSED_DEP,\n result: { src: linkHref, ...matchedAssets },\n };\n }\n }\n\n return {\n mode: Mode.NONE,\n };\n};\n\nconst postProcessPreloadLink = (link: HTMLLinkElement, baseURI: string, opts: AssetsTranspilerOpts): void => {\n const { as, href } = link;\n switch (as) {\n case 'script': {\n const { mode, result } = preTranspileScript({ src: href }, baseURI, opts);\n\n switch (mode) {\n /**\n * While the assets are transpiling in sandbox, it means they will be evaluated with manual fetching,\n * thus we need to set the attribute `as` to fetch instead of script or style to avoid preload cache missing.\n * see https://stackoverflow.com/questions/52635660/can-link-rel-preload-be-made-to-work-with-fetch/63814972#63814972\n */\n case Mode.REMOTE_ASSETS_IN_SANDBOX: {\n if (process.env.NODE_ENV === 'development' && !link.hasAttribute('crossorigin')) {\n warn(\n `crossorigin attribute of script ${href} is not specified, that will make preload invalid, see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/preload#cors-enabled_fetches`,\n );\n }\n link.as = 'fetch';\n break;\n }\n\n case Mode.REUSED_DEP_IN_SANDBOX:\n case Mode.REUSED_DEP: {\n const { url } = result;\n link.href = createReusingObjectUrl(href, url, 'text/javascript');\n\n break;\n }\n }\n\n break;\n }\n\n case 'style': {\n const { mode, result } = preTranspileStyleSheetLink({ href, rel: 'stylesheet' }, baseURI, opts);\n\n switch (mode) {\n case Mode.REUSED_DEP_IN_SANDBOX:\n case Mode.REUSED_DEP: {\n const { url } = result;\n link.href = createReusingObjectUrl(href, url, 'text/css');\n break;\n }\n }\n\n break;\n }\n\n default:\n break;\n }\n};\n\nexport default function transpileLink(\n link: HTMLLinkElement,\n baseURI: string,\n opts: AssetsTranspilerOpts,\n): HTMLLinkElement {\n const hrefAttribute = link.getAttribute('href');\n const { mode, result } = preTranspileStyleSheetLink(\n {\n href: hrefAttribute || undefined,\n rel: link.rel,\n },\n baseURI,\n opts,\n );\n\n switch (mode) {\n case Mode.REUSED_DEP_IN_SANDBOX:\n case Mode.REUSED_DEP: {\n const { src, version, url } = result;\n link.dataset.href = src;\n link.dataset.version = version;\n link.href = createReusingObjectUrl(src, url, 'text/css');\n\n return link;\n }\n\n case Mode.NONE:\n default: {\n if (hrefAttribute) {\n link.href = getEntireUrl(hrefAttribute, baseURI);\n\n if (link.rel === 'preload') {\n postProcessPreloadLink(link, baseURI, opts);\n }\n\n return link;\n }\n\n return link;\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -3,20 +3,20 @@
|
|
|
3
3
|
* @since 2023-03-16
|
|
4
4
|
*/
|
|
5
5
|
import type { MatchResult } from '../module-resolver';
|
|
6
|
-
import type { AssetsTranspilerOpts } from './types';
|
|
6
|
+
import type { AssetsTranspilerOpts, ScriptTranspilerOpts } from './types';
|
|
7
7
|
import { Mode } from './types';
|
|
8
8
|
type PreTranspileResult = {
|
|
9
|
-
mode: Mode.
|
|
9
|
+
mode: Mode.REMOTE_ASSETS_IN_SANDBOX | Mode.REMOTE_ASSETS;
|
|
10
10
|
result: {
|
|
11
11
|
src: string;
|
|
12
12
|
};
|
|
13
13
|
} | {
|
|
14
|
-
mode: Mode.
|
|
14
|
+
mode: Mode.REUSED_DEP_IN_SANDBOX | Mode.REUSED_DEP;
|
|
15
15
|
result: {
|
|
16
16
|
src: string;
|
|
17
17
|
} & MatchResult;
|
|
18
18
|
} | {
|
|
19
|
-
mode: Mode.
|
|
19
|
+
mode: Mode.INLINE_CODE_IN_SANDBOX;
|
|
20
20
|
result: {
|
|
21
21
|
code: string;
|
|
22
22
|
};
|
|
@@ -25,5 +25,5 @@ type PreTranspileResult = {
|
|
|
25
25
|
result?: never;
|
|
26
26
|
};
|
|
27
27
|
export declare const preTranspile: (script: Partial<Pick<HTMLScriptElement, 'src' | 'type' | 'textContent'>>, baseURI: string, opts: AssetsTranspilerOpts) => PreTranspileResult;
|
|
28
|
-
export default function transpileScript(script: HTMLScriptElement, baseURI: string, opts:
|
|
28
|
+
export default function transpileScript(script: HTMLScriptElement, baseURI: string, opts: ScriptTranspilerOpts): HTMLScriptElement;
|
|
29
29
|
export {};
|
|
@@ -6,18 +6,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = transpileScript;
|
|
8
8
|
exports.preTranspile = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
9
11
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
12
|
var _utils = require("../utils");
|
|
11
13
|
var _types = require("./types");
|
|
14
|
+
var _utils2 = require("./utils");
|
|
12
15
|
/**
|
|
13
16
|
* @author Kuitos
|
|
14
17
|
* @since 2023-03-16
|
|
15
18
|
*/
|
|
16
19
|
|
|
17
|
-
var isValidJavaScriptType = function isValidJavaScriptType(type) {
|
|
18
|
-
var handleTypes = ['text/javascript', 'module', 'application/javascript', 'text/ecmascript', 'application/ecmascript'];
|
|
19
|
-
return !type || handleTypes.indexOf(type) !== -1;
|
|
20
|
-
};
|
|
21
20
|
var getCredentials = function getCredentials(crossOrigin) {
|
|
22
21
|
switch (crossOrigin) {
|
|
23
22
|
case 'anonymous':
|
|
@@ -28,131 +27,192 @@ var getCredentials = function getCredentials(crossOrigin) {
|
|
|
28
27
|
return undefined;
|
|
29
28
|
}
|
|
30
29
|
};
|
|
31
|
-
var preTranspile = function preTranspile(script, baseURI, opts) {
|
|
30
|
+
var preTranspile = exports.preTranspile = function preTranspile(script, baseURI, opts) {
|
|
32
31
|
var sandbox = opts.sandbox,
|
|
33
32
|
moduleResolver = opts.moduleResolver;
|
|
34
33
|
var src = script.src,
|
|
35
34
|
type = script.type;
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (matchedScript) {
|
|
41
|
-
return {
|
|
42
|
-
mode: _types.Mode.CACHE_FROM_SANDBOX,
|
|
43
|
-
result: (0, _objectSpread2.default)({
|
|
44
|
-
src: entireUrl
|
|
45
|
-
}, matchedScript)
|
|
46
|
-
};
|
|
47
|
-
}
|
|
35
|
+
if (src) {
|
|
36
|
+
var entireUrl = (0, _utils.getEntireUrl)(src, baseURI);
|
|
37
|
+
var matchedScript = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(entireUrl);
|
|
38
|
+
if (matchedScript) {
|
|
48
39
|
return {
|
|
49
|
-
mode: _types.Mode.
|
|
50
|
-
result: {
|
|
40
|
+
mode: sandbox ? _types.Mode.REUSED_DEP_IN_SANDBOX : _types.Mode.REUSED_DEP,
|
|
41
|
+
result: (0, _objectSpread2.default)({
|
|
51
42
|
src: entireUrl
|
|
52
|
-
}
|
|
43
|
+
}, matchedScript)
|
|
53
44
|
};
|
|
54
45
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
if (code) {
|
|
60
|
-
return {
|
|
61
|
-
mode: _types.Mode.INLINE_FROM_SANDBOX,
|
|
62
|
-
result: {
|
|
63
|
-
code: code
|
|
64
|
-
}
|
|
65
|
-
};
|
|
46
|
+
return {
|
|
47
|
+
mode: sandbox ? _types.Mode.REMOTE_ASSETS_IN_SANDBOX : _types.Mode.REMOTE_ASSETS,
|
|
48
|
+
result: {
|
|
49
|
+
src: entireUrl
|
|
66
50
|
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if ((0, _utils2.isValidJavaScriptType)(type) && sandbox) {
|
|
54
|
+
var rawNode = opts.rawNode;
|
|
55
|
+
var scriptNode = script.textContent ? script : rawNode.childNodes[0];
|
|
56
|
+
var code = scriptNode.textContent;
|
|
57
|
+
if (code) {
|
|
58
|
+
return {
|
|
59
|
+
mode: _types.Mode.INLINE_CODE_IN_SANDBOX,
|
|
60
|
+
result: {
|
|
61
|
+
code: code
|
|
62
|
+
}
|
|
63
|
+
};
|
|
67
64
|
}
|
|
68
65
|
}
|
|
69
66
|
return {
|
|
70
67
|
mode: _types.Mode.NONE
|
|
71
68
|
};
|
|
72
69
|
};
|
|
73
|
-
exports.preTranspile = preTranspile;
|
|
74
70
|
function transpileScript(script, baseURI, opts) {
|
|
75
71
|
// Can't use script.src directly, because it will be resolved to absolute path by browser with Node.baseURI
|
|
76
72
|
// Such as <script src="./foo.js"></script> will be resolved to http://localhost:8000/foo.js while read script.src
|
|
77
73
|
var srcAttribute = script.getAttribute('src');
|
|
78
74
|
var sandbox = opts.sandbox,
|
|
79
|
-
|
|
80
|
-
var _preTranspile = preTranspile({
|
|
81
|
-
src: srcAttribute || undefined,
|
|
82
|
-
type: script.type,
|
|
83
|
-
textContent: script.textContent
|
|
84
|
-
}, baseURI, opts),
|
|
85
|
-
mode = _preTranspile.mode,
|
|
86
|
-
result = _preTranspile.result;
|
|
87
|
-
switch (mode) {
|
|
88
|
-
case _types.Mode.REMOTE_FROM_SANDBOX:
|
|
89
|
-
{
|
|
90
|
-
var src = result.src;
|
|
75
|
+
scriptTranspiledDeferred = opts.scriptTranspiledDeferred;
|
|
91
76
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
77
|
+
// To prevent webpack from skipping reload logic and causing the js not to re-execute when a micro app is loaded multiple times, the data-webpack attribute of the script must be removed.
|
|
78
|
+
// see https://github.com/webpack/webpack/blob/1f13ff9fe587e094df59d660b4611b1bd19aed4c/lib/runtime/LoadScriptRuntimeModule.js#L131-L136
|
|
79
|
+
// FIXME We should determine whether the current micro application is being loaded for the second time. If not, this removal should not be performed.
|
|
80
|
+
script.removeAttribute('data-webpack');
|
|
81
|
+
try {
|
|
82
|
+
var _preTranspile = preTranspile({
|
|
83
|
+
src: srcAttribute || undefined,
|
|
84
|
+
type: script.type,
|
|
85
|
+
textContent: script.textContent
|
|
86
|
+
}, baseURI, opts),
|
|
87
|
+
mode = _preTranspile.mode,
|
|
88
|
+
result = _preTranspile.result;
|
|
89
|
+
switch (mode) {
|
|
90
|
+
case _types.Mode.REMOTE_ASSETS_IN_SANDBOX:
|
|
91
|
+
{
|
|
92
|
+
var fetch = opts.fetch;
|
|
93
|
+
var src = result.src;
|
|
105
94
|
|
|
95
|
+
// We must remove script src to avoid self execution as we need to fetch the script content and transpile it
|
|
96
|
+
script.removeAttribute('src');
|
|
97
|
+
script.dataset.src = src;
|
|
98
|
+
var syncMode = !script.hasAttribute('async');
|
|
99
|
+
var priority = syncMode ? 'high' : 'low';
|
|
100
|
+
var credentials = getCredentials(script.crossOrigin);
|
|
101
|
+
void fetch(src, {
|
|
102
|
+
credentials: credentials,
|
|
103
|
+
priority: priority
|
|
104
|
+
}).then(function (res) {
|
|
105
|
+
return res.text();
|
|
106
|
+
}).then( /*#__PURE__*/function () {
|
|
107
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(code) {
|
|
108
|
+
var prevScriptTranspiledDeferred, beforeScriptExecuteEvent, beforeExecutedListenerScript, codeFactory;
|
|
109
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
110
|
+
while (1) switch (_context.prev = _context.next) {
|
|
111
|
+
case 0:
|
|
112
|
+
prevScriptTranspiledDeferred = opts.prevScriptTranspiledDeferred; // add preprocess code to dispatch a CustomEvent before the script is executed
|
|
113
|
+
beforeScriptExecuteEvent = 'q:bse';
|
|
114
|
+
beforeExecutedListenerScript = ";(function(){var s=document.currentScript;var e=new CustomEvent('".concat(beforeScriptExecuteEvent, "',{detail:{s:s}});window.dispatchEvent(e);})();");
|
|
115
|
+
codeFactory = beforeExecutedListenerScript + sandbox.makeEvaluateFactory(code, src);
|
|
116
|
+
if (!syncMode) {
|
|
117
|
+
_context.next = 9;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
if (!(prevScriptTranspiledDeferred && !prevScriptTranspiledDeferred.isSettled())) {
|
|
121
|
+
_context.next = 8;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
_context.next = 8;
|
|
125
|
+
return (0, _utils.waitUntilSettled)(prevScriptTranspiledDeferred.promise);
|
|
126
|
+
case 8:
|
|
127
|
+
// HTMLScriptElement default fetchPriority is 'auto', we should set it to 'high' to make it execute earlier while it's not async script
|
|
128
|
+
script.fetchPriority = 'high';
|
|
129
|
+
case 9:
|
|
130
|
+
// change the script src to the blob url to make it execute in the sandbox
|
|
131
|
+
script.src = URL.createObjectURL(new Blob([codeFactory], {
|
|
132
|
+
type: 'text/javascript'
|
|
133
|
+
}));
|
|
134
|
+
window.addEventListener(beforeScriptExecuteEvent, function listener(evt) {
|
|
135
|
+
var _ref2 = evt.detail,
|
|
136
|
+
s = _ref2.s;
|
|
137
|
+
if (s === script) {
|
|
138
|
+
URL.revokeObjectURL(s.src);
|
|
139
|
+
// change the script src to the original src while the script is executing
|
|
140
|
+
// thus the script behavior can be more consistent with the native browser logic
|
|
141
|
+
s.src = src;
|
|
142
|
+
s.dataset.consumed = 'true';
|
|
143
|
+
delete s.dataset.src;
|
|
144
|
+
window.removeEventListener(beforeScriptExecuteEvent, listener);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
scriptTranspiledDeferred === null || scriptTranspiledDeferred === void 0 || scriptTranspiledDeferred.resolve();
|
|
148
|
+
case 12:
|
|
149
|
+
case "end":
|
|
150
|
+
return _context.stop();
|
|
151
|
+
}
|
|
152
|
+
}, _callee);
|
|
153
|
+
}));
|
|
154
|
+
return function (_x) {
|
|
155
|
+
return _ref.apply(this, arguments);
|
|
156
|
+
};
|
|
157
|
+
}()).catch(function (e) {
|
|
158
|
+
scriptTranspiledDeferred === null || scriptTranspiledDeferred === void 0 || scriptTranspiledDeferred.reject();
|
|
159
|
+
throw e;
|
|
160
|
+
});
|
|
161
|
+
return script;
|
|
162
|
+
}
|
|
163
|
+
case _types.Mode.INLINE_CODE_IN_SANDBOX:
|
|
164
|
+
{
|
|
165
|
+
var rawNode = opts.rawNode;
|
|
166
|
+
var scriptNode = script.textContent ? script : rawNode.childNodes[0];
|
|
167
|
+
var code = result.code;
|
|
168
|
+
scriptNode.textContent = sandbox.makeEvaluateFactory(code);
|
|
169
|
+
// mark the script have consumed
|
|
170
|
+
script.dataset.consumed = 'true';
|
|
171
|
+
scriptTranspiledDeferred === null || scriptTranspiledDeferred === void 0 || scriptTranspiledDeferred.resolve();
|
|
172
|
+
return script;
|
|
173
|
+
}
|
|
174
|
+
case _types.Mode.REUSED_DEP_IN_SANDBOX:
|
|
175
|
+
case _types.Mode.REUSED_DEP:
|
|
176
|
+
{
|
|
177
|
+
var url = result.url,
|
|
178
|
+
version = result.version,
|
|
179
|
+
_src = result.src;
|
|
180
|
+
script.dataset.src = _src;
|
|
181
|
+
script.dataset.version = version;
|
|
182
|
+
var _syncMode = !script.getAttribute('async');
|
|
106
183
|
// HTMLScriptElement default fetchPriority is 'auto', we should set it to 'high' to make it execute earlier while it's not async script
|
|
107
|
-
if (
|
|
184
|
+
if (_syncMode) {
|
|
108
185
|
script.fetchPriority = 'high';
|
|
109
186
|
}
|
|
110
|
-
script.src = URL.createObjectURL(new Blob([codeFactory], {
|
|
111
|
-
type: 'text/javascript'
|
|
112
|
-
}));
|
|
113
|
-
});
|
|
114
|
-
return script;
|
|
115
|
-
}
|
|
116
|
-
case _types.Mode.INLINE_FROM_SANDBOX:
|
|
117
|
-
{
|
|
118
|
-
var rawNode = opts.rawNode;
|
|
119
|
-
var scriptNode = script.textContent ? script : rawNode.childNodes[0];
|
|
120
|
-
var code = result.code;
|
|
121
|
-
scriptNode.textContent = sandbox.makeEvaluateFactory(code, baseURI);
|
|
122
|
-
// mark the script have consumed
|
|
123
|
-
script.dataset.consumed = 'true';
|
|
124
|
-
return script;
|
|
125
|
-
}
|
|
126
|
-
case _types.Mode.CACHE_FROM_SANDBOX:
|
|
127
|
-
{
|
|
128
|
-
var url = result.url,
|
|
129
|
-
version = result.version,
|
|
130
|
-
_src = result.src;
|
|
131
|
-
script.dataset.src = _src;
|
|
132
|
-
script.dataset.version = version;
|
|
133
|
-
var _syncMode = !script.getAttribute('async');
|
|
134
|
-
// HTMLScriptElement default fetchPriority is 'auto', we should set it to 'high' to make it execute earlier while it's not async script
|
|
135
|
-
if (_syncMode) {
|
|
136
|
-
script.fetchPriority = 'high';
|
|
137
|
-
}
|
|
138
187
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
script.
|
|
188
|
+
// When the script hits the dependency reuse logic, the current script is not executed, and an empty script is returned directly
|
|
189
|
+
script.src = (0, _utils2.createReusingObjectUrl)(_src, url, 'text/javascript');
|
|
190
|
+
var onScriptComplete = function onScriptComplete(prevListener, event) {
|
|
191
|
+
script.onload = script.onerror = null;
|
|
192
|
+
script.src = _src;
|
|
193
|
+
script.dataset.consumed = 'true';
|
|
194
|
+
script.dataset.src = url;
|
|
195
|
+
prevListener === null || prevListener === void 0 || prevListener.call(script, event);
|
|
196
|
+
};
|
|
197
|
+
script.onload = onScriptComplete.bind(null, script.onload);
|
|
198
|
+
script.onerror = onScriptComplete.bind(null, script.onerror);
|
|
199
|
+
scriptTranspiledDeferred === null || scriptTranspiledDeferred === void 0 || scriptTranspiledDeferred.resolve();
|
|
150
200
|
return script;
|
|
151
201
|
}
|
|
152
|
-
|
|
153
|
-
|
|
202
|
+
case _types.Mode.REMOTE_ASSETS:
|
|
203
|
+
case _types.Mode.NONE:
|
|
204
|
+
default:
|
|
205
|
+
{
|
|
206
|
+
if (result !== null && result !== void 0 && result.src) {
|
|
207
|
+
script.src = result.src;
|
|
208
|
+
}
|
|
209
|
+
scriptTranspiledDeferred === null || scriptTranspiledDeferred === void 0 || scriptTranspiledDeferred.resolve();
|
|
210
|
+
return script;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
} catch (e) {
|
|
214
|
+
scriptTranspiledDeferred === null || scriptTranspiledDeferred === void 0 || scriptTranspiledDeferred.reject(e);
|
|
215
|
+
throw e;
|
|
154
216
|
}
|
|
155
|
-
|
|
156
|
-
// TODO find entry exports
|
|
157
217
|
}
|
|
158
218
|
//# sourceMappingURL=script.js.map
|