@qiankunjs/shared 0.0.1-rc.0 → 0.0.1-rc.2
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.js.map +1 -1
- package/dist/cjs/assets-transpilers/link.js +29 -46
- package/dist/cjs/assets-transpilers/link.js.map +1 -1
- package/dist/cjs/assets-transpilers/script.d.ts +3 -3
- package/dist/cjs/assets-transpilers/script.js +8 -9
- package/dist/cjs/assets-transpilers/script.js.map +1 -1
- package/dist/cjs/assets-transpilers/types.d.ts +3 -3
- package/dist/cjs/assets-transpilers/types.js +3 -3
- package/dist/cjs/assets-transpilers/types.js.map +1 -1
- package/dist/cjs/assets-transpilers/utils.d.ts +1 -0
- package/dist/cjs/assets-transpilers/utils.js +22 -0
- package/dist/cjs/assets-transpilers/utils.js.map +1 -0
- 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/esm/assets-transpilers/index.js.map +1 -1
- package/dist/esm/assets-transpilers/link.js +29 -46
- package/dist/esm/assets-transpilers/link.js.map +1 -1
- package/dist/esm/assets-transpilers/script.d.ts +3 -3
- package/dist/esm/assets-transpilers/script.js +8 -9
- package/dist/esm/assets-transpilers/script.js.map +1 -1
- package/dist/esm/assets-transpilers/types.d.ts +3 -3
- package/dist/esm/assets-transpilers/types.js +3 -3
- package/dist/esm/assets-transpilers/types.js.map +1 -1
- package/dist/esm/assets-transpilers/utils.d.ts +1 -0
- package/dist/esm/assets-transpilers/utils.js +13 -0
- package/dist/esm/assets-transpilers/utils.js.map +1 -0
- 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/package.json +2 -2
- package/src/assets-transpilers/index.ts +3 -3
- package/src/assets-transpilers/link.ts +23 -43
- package/src/assets-transpilers/script.ts +11 -14
- package/src/assets-transpilers/types.ts +3 -3
- package/src/assets-transpilers/utils.ts +16 -0
- package/src/module-resolver/index.ts +9 -9
|
@@ -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","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 = 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"],"mappings":";;;;;;;AAIA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AALA;AACA;AACA;AACA;;AAKO,SAASE,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"}
|
|
@@ -9,22 +9,25 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
|
|
|
9
9
|
var _utils = require("../utils");
|
|
10
10
|
var _script = require("./script");
|
|
11
11
|
var _types = require("./types");
|
|
12
|
+
var _utils2 = require("./utils");
|
|
12
13
|
/**
|
|
13
14
|
* @author Kuitos
|
|
14
15
|
* @since 2023-04-26
|
|
15
16
|
*/
|
|
16
17
|
|
|
17
|
-
var
|
|
18
|
+
var preTranspileStyleSheetLink = function preTranspileStyleSheetLink(link, baseURI, opts) {
|
|
18
19
|
var sandbox = opts.sandbox,
|
|
19
20
|
moduleResolver = opts.moduleResolver;
|
|
20
|
-
var href = link.href
|
|
21
|
+
var href = link.href,
|
|
22
|
+
rel = link.rel;
|
|
21
23
|
if (sandbox) {
|
|
22
|
-
|
|
24
|
+
// filter preload links
|
|
25
|
+
if (href && rel === 'stylesheet') {
|
|
23
26
|
var linkHref = (0, _utils.getEntireUrl)(href, baseURI);
|
|
24
27
|
var matchedAssets = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(linkHref);
|
|
25
28
|
if (matchedAssets) {
|
|
26
29
|
return {
|
|
27
|
-
mode: _types.Mode.
|
|
30
|
+
mode: _types.Mode.REUSED_DEP_IN_SANDBOX,
|
|
28
31
|
result: (0, _objectSpread2.default)({
|
|
29
32
|
src: linkHref
|
|
30
33
|
}, matchedAssets)
|
|
@@ -36,26 +39,9 @@ var preTranspile = function preTranspile(link, baseURI, opts) {
|
|
|
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,20 @@ 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
|
{
|
|
70
61
|
link.as = 'fetch';
|
|
71
62
|
break;
|
|
72
63
|
}
|
|
73
|
-
case _types.Mode.
|
|
64
|
+
case _types.Mode.REUSED_DEP_IN_SANDBOX:
|
|
74
65
|
{
|
|
75
66
|
var url = result.url;
|
|
76
|
-
|
|
77
|
-
type: 'text/javascript'
|
|
78
|
-
}));
|
|
79
|
-
link.href = objectURL;
|
|
80
|
-
revokeAfterLoaded(objectURL, link);
|
|
67
|
+
link.href = (0, _utils2.createReusingObjectUrl)(href, url, 'text/javascript');
|
|
81
68
|
break;
|
|
82
69
|
}
|
|
83
70
|
}
|
|
@@ -85,20 +72,17 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
|
|
|
85
72
|
}
|
|
86
73
|
case 'style':
|
|
87
74
|
{
|
|
88
|
-
var
|
|
89
|
-
href: href
|
|
75
|
+
var _preTranspileStyleShe = preTranspileStyleSheetLink({
|
|
76
|
+
href: href,
|
|
77
|
+
rel: 'stylesheet'
|
|
90
78
|
}, baseURI, opts),
|
|
91
|
-
_mode =
|
|
92
|
-
_result =
|
|
79
|
+
_mode = _preTranspileStyleShe.mode,
|
|
80
|
+
_result = _preTranspileStyleShe.result;
|
|
93
81
|
switch (_mode) {
|
|
94
|
-
case _types.Mode.
|
|
82
|
+
case _types.Mode.REUSED_DEP_IN_SANDBOX:
|
|
95
83
|
{
|
|
96
84
|
var _url = _result.url;
|
|
97
|
-
|
|
98
|
-
type: 'text/css'
|
|
99
|
-
}));
|
|
100
|
-
link.href = _objectURL;
|
|
101
|
-
revokeAfterLoaded(_objectURL, link);
|
|
85
|
+
link.href = (0, _utils2.createReusingObjectUrl)(href, _url, 'text/css');
|
|
102
86
|
break;
|
|
103
87
|
}
|
|
104
88
|
}
|
|
@@ -110,22 +94,21 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
|
|
|
110
94
|
};
|
|
111
95
|
function transpileLink(link, baseURI, opts) {
|
|
112
96
|
var hrefAttribute = link.getAttribute('href');
|
|
113
|
-
var
|
|
114
|
-
href: hrefAttribute || undefined
|
|
97
|
+
var _preTranspileStyleShe2 = preTranspileStyleSheetLink({
|
|
98
|
+
href: hrefAttribute || undefined,
|
|
99
|
+
rel: link.rel
|
|
115
100
|
}, baseURI, opts),
|
|
116
|
-
mode =
|
|
117
|
-
result =
|
|
101
|
+
mode = _preTranspileStyleShe2.mode,
|
|
102
|
+
result = _preTranspileStyleShe2.result;
|
|
118
103
|
switch (mode) {
|
|
119
|
-
case _types.Mode.
|
|
104
|
+
case _types.Mode.REUSED_DEP_IN_SANDBOX:
|
|
120
105
|
{
|
|
121
106
|
var src = result.src,
|
|
122
107
|
version = result.version,
|
|
123
108
|
url = result.url;
|
|
124
109
|
link.dataset.href = src;
|
|
125
110
|
link.dataset.version = version;
|
|
126
|
-
link.href =
|
|
127
|
-
type: 'text/css'
|
|
128
|
-
}));
|
|
111
|
+
link.href = (0, _utils2.createReusingObjectUrl)(src, url, 'text/css');
|
|
129
112
|
return link;
|
|
130
113
|
}
|
|
131
114
|
case _types.Mode.NONE:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","_script","_types","
|
|
1
|
+
{"version":3,"names":["_utils","require","_script","_types","_utils2","preTranspileStyleSheetLink","link","baseURI","opts","sandbox","moduleResolver","href","rel","linkHref","getEntireUrl","matchedAssets","mode","Mode","REUSED_DEP_IN_SANDBOX","result","_objectSpread2","default","src","NONE","postProcessPreloadLink","as","_preTranspileScript","preTranspileScript","REMOTE_ASSETS_IN_SANDBOX","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 { 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; 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 if (sandbox) {\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: Mode.REUSED_DEP_IN_SANDBOX,\n result: { src: linkHref, ...matchedAssets },\n };\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 link.as = 'fetch';\n break;\n }\n\n case Mode.REUSED_DEP_IN_SANDBOX: {\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 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 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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"}
|
|
@@ -6,17 +6,17 @@ import type { MatchResult } from '../module-resolver';
|
|
|
6
6
|
import type { AssetsTranspilerOpts } from './types';
|
|
7
7
|
import { Mode } from './types';
|
|
8
8
|
type PreTranspileResult = {
|
|
9
|
-
mode: Mode.
|
|
9
|
+
mode: Mode.REMOTE_ASSETS_IN_SANDBOX;
|
|
10
10
|
result: {
|
|
11
11
|
src: string;
|
|
12
12
|
};
|
|
13
13
|
} | {
|
|
14
|
-
mode: Mode.
|
|
14
|
+
mode: Mode.REUSED_DEP_IN_SANDBOX;
|
|
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
|
};
|
|
@@ -9,6 +9,7 @@ exports.preTranspile = void 0;
|
|
|
9
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
10
|
var _utils = require("../utils");
|
|
11
11
|
var _types = require("./types");
|
|
12
|
+
var _utils2 = require("./utils");
|
|
12
13
|
/**
|
|
13
14
|
* @author Kuitos
|
|
14
15
|
* @since 2023-03-16
|
|
@@ -39,14 +40,14 @@ var preTranspile = function preTranspile(script, baseURI, opts) {
|
|
|
39
40
|
var matchedScript = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(entireUrl);
|
|
40
41
|
if (matchedScript) {
|
|
41
42
|
return {
|
|
42
|
-
mode: _types.Mode.
|
|
43
|
+
mode: _types.Mode.REUSED_DEP_IN_SANDBOX,
|
|
43
44
|
result: (0, _objectSpread2.default)({
|
|
44
45
|
src: entireUrl
|
|
45
46
|
}, matchedScript)
|
|
46
47
|
};
|
|
47
48
|
}
|
|
48
49
|
return {
|
|
49
|
-
mode: _types.Mode.
|
|
50
|
+
mode: _types.Mode.REMOTE_ASSETS_IN_SANDBOX,
|
|
50
51
|
result: {
|
|
51
52
|
src: entireUrl
|
|
52
53
|
}
|
|
@@ -58,7 +59,7 @@ var preTranspile = function preTranspile(script, baseURI, opts) {
|
|
|
58
59
|
var code = scriptNode.textContent;
|
|
59
60
|
if (code) {
|
|
60
61
|
return {
|
|
61
|
-
mode: _types.Mode.
|
|
62
|
+
mode: _types.Mode.INLINE_CODE_IN_SANDBOX,
|
|
62
63
|
result: {
|
|
63
64
|
code: code
|
|
64
65
|
}
|
|
@@ -85,7 +86,7 @@ function transpileScript(script, baseURI, opts) {
|
|
|
85
86
|
mode = _preTranspile.mode,
|
|
86
87
|
result = _preTranspile.result;
|
|
87
88
|
switch (mode) {
|
|
88
|
-
case _types.Mode.
|
|
89
|
+
case _types.Mode.REMOTE_ASSETS_IN_SANDBOX:
|
|
89
90
|
{
|
|
90
91
|
var src = result.src;
|
|
91
92
|
|
|
@@ -113,7 +114,7 @@ function transpileScript(script, baseURI, opts) {
|
|
|
113
114
|
});
|
|
114
115
|
return script;
|
|
115
116
|
}
|
|
116
|
-
case _types.Mode.
|
|
117
|
+
case _types.Mode.INLINE_CODE_IN_SANDBOX:
|
|
117
118
|
{
|
|
118
119
|
var rawNode = opts.rawNode;
|
|
119
120
|
var scriptNode = script.textContent ? script : rawNode.childNodes[0];
|
|
@@ -123,7 +124,7 @@ function transpileScript(script, baseURI, opts) {
|
|
|
123
124
|
script.dataset.consumed = 'true';
|
|
124
125
|
return script;
|
|
125
126
|
}
|
|
126
|
-
case _types.Mode.
|
|
127
|
+
case _types.Mode.REUSED_DEP_IN_SANDBOX:
|
|
127
128
|
{
|
|
128
129
|
var url = result.url,
|
|
129
130
|
version = result.version,
|
|
@@ -137,9 +138,7 @@ function transpileScript(script, baseURI, opts) {
|
|
|
137
138
|
}
|
|
138
139
|
|
|
139
140
|
// When the script hits the dependency reuse logic, the current script is not executed, and an empty script is returned directly
|
|
140
|
-
script.src =
|
|
141
|
-
type: 'text/javascript'
|
|
142
|
-
}));
|
|
141
|
+
script.src = (0, _utils2.createReusingObjectUrl)(_src, url, 'text/javascript');
|
|
143
142
|
return script;
|
|
144
143
|
}
|
|
145
144
|
case _types.Mode.NONE:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","_types","isValidJavaScriptType","type","handleTypes","indexOf","getCredentials","crossOrigin","undefined","preTranspile","script","baseURI","opts","sandbox","moduleResolver","src","entireUrl","getEntireUrl","matchedScript","mode","Mode","CACHE_FROM_SANDBOX","result","_objectSpread2","default","REMOTE_FROM_SANDBOX","rawNode","scriptNode","textContent","childNodes","code","INLINE_FROM_SANDBOX","NONE","exports","transpileScript","srcAttribute","getAttribute","fetch","_preTranspile","removeAttribute","dataset","syncMode","hasAttribute","priority","credentials","then","res","text","codeFactory","makeEvaluateFactory","fetchPriority","URL","createObjectURL","Blob","consumed","url","version","concat"],"sources":["../../../src/assets-transpilers/script.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-03-16\n */\n\nimport type { MatchResult } from '../module-resolver';\nimport { getEntireUrl } from '../utils';\nimport type { AssetsTranspilerOpts } from './types';\nimport { Mode } from './types';\n\nconst isValidJavaScriptType = (type?: string): boolean => {\n const handleTypes = [\n 'text/javascript',\n 'module',\n 'application/javascript',\n 'text/ecmascript',\n 'application/ecmascript',\n ];\n return !type || handleTypes.indexOf(type) !== -1;\n};\n\nconst getCredentials = (crossOrigin: string | null): RequestInit['credentials'] | undefined => {\n switch (crossOrigin) {\n case 'anonymous':\n return 'same-origin';\n case 'use-credentials':\n return 'include';\n default:\n return undefined;\n }\n};\n\ntype PreTranspileResult =\n | { mode: Mode.REMOTE_FROM_SANDBOX; result: { src: string } }\n | { mode: Mode.CACHE_FROM_SANDBOX; result: { src: string } & MatchResult }\n | { mode: Mode.INLINE_FROM_SANDBOX; result: { code: string } }\n | { mode: Mode.NONE; result?: never };\n\nexport const preTranspile = (\n script: Partial<Pick<HTMLScriptElement, 'src' | 'type' | 'textContent'>>,\n baseURI: string,\n opts: AssetsTranspilerOpts,\n): PreTranspileResult => {\n const { sandbox, moduleResolver } = opts;\n\n const { src, type } = script;\n\n if (sandbox) {\n if (src) {\n const entireUrl = getEntireUrl(src, baseURI);\n const matchedScript = moduleResolver?.(entireUrl);\n if (matchedScript) {\n return {\n mode: Mode.CACHE_FROM_SANDBOX,\n result: { src: entireUrl, ...matchedScript },\n };\n }\n\n return {\n mode: Mode.REMOTE_FROM_SANDBOX,\n result: { src: entireUrl },\n };\n }\n\n if (isValidJavaScriptType(type)) {\n const rawNode = opts.rawNode as HTMLScriptElement;\n const scriptNode = script.textContent ? script : rawNode.childNodes[0];\n\n const code = scriptNode.textContent;\n if (code) {\n return {\n mode: Mode.INLINE_FROM_SANDBOX,\n result: {\n code,\n },\n };\n }\n }\n }\n\n return { mode: Mode.NONE };\n};\n\nexport default function transpileScript(\n script: HTMLScriptElement,\n baseURI: string,\n opts: AssetsTranspilerOpts,\n): HTMLScriptElement {\n // Can't use script.src directly, because it will be resolved to absolute path by browser with Node.baseURI\n // Such as <script src=\"./foo.js\"></script> will be resolved to http://localhost:8000/foo.js while read script.src\n const srcAttribute = script.getAttribute('src');\n const { sandbox, fetch } = opts;\n\n const { mode, result } = preTranspile(\n {\n src: srcAttribute || undefined,\n type: script.type,\n textContent: script.textContent,\n },\n baseURI,\n opts,\n );\n\n switch (mode) {\n case Mode.REMOTE_FROM_SANDBOX: {\n const { src } = result;\n\n // We must remove script src to avoid self execution as we need to fetch the script content and transpile it\n script.removeAttribute('src');\n script.dataset.src = src;\n\n const syncMode = !script.hasAttribute('async');\n const priority: Priority = syncMode ? 'high' : 'low';\n const credentials = getCredentials(script.crossOrigin);\n\n void fetch(src, { credentials, priority })\n .then((res) => res.text())\n .then((code) => {\n const codeFactory = sandbox!.makeEvaluateFactory(code, src);\n\n // HTMLScriptElement default fetchPriority is 'auto', we should set it to 'high' to make it execute earlier while it's not async script\n if (syncMode) {\n script.fetchPriority = 'high';\n }\n\n script.src = URL.createObjectURL(new Blob([codeFactory], { type: 'text/javascript' }));\n });\n\n return script;\n }\n\n case Mode.INLINE_FROM_SANDBOX: {\n const rawNode = opts.rawNode as HTMLScriptElement;\n const scriptNode = script.textContent ? script : rawNode.childNodes[0];\n const { code } = result;\n\n scriptNode.textContent = sandbox!.makeEvaluateFactory(code, baseURI);\n // mark the script have consumed\n script.dataset.consumed = 'true';\n\n return script;\n }\n\n case Mode.CACHE_FROM_SANDBOX: {\n const { url, version, src } = result;\n\n script.dataset.src = src;\n script.dataset.version = version;\n\n const syncMode = !script.getAttribute('async');\n // HTMLScriptElement default fetchPriority is 'auto', we should set it to 'high' to make it execute earlier while it's not async script\n if (syncMode) {\n script.fetchPriority = 'high';\n }\n\n // When the script hits the dependency reuse logic, the current script is not executed, and an empty script is returned directly\n script.src = URL.createObjectURL(\n new Blob([`// ${src} is reusing the execution result of ${url}`], {\n type: 'text/javascript',\n }),\n );\n\n return script;\n }\n\n case Mode.NONE:\n default: {\n if (srcAttribute) {\n script.src = getEntireUrl(srcAttribute, baseURI);\n return script;\n }\n\n return script;\n }\n }\n\n // TODO find entry exports\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_utils","require","_types","_utils2","isValidJavaScriptType","type","handleTypes","indexOf","getCredentials","crossOrigin","undefined","preTranspile","script","baseURI","opts","sandbox","moduleResolver","src","entireUrl","getEntireUrl","matchedScript","mode","Mode","REUSED_DEP_IN_SANDBOX","result","_objectSpread2","default","REMOTE_ASSETS_IN_SANDBOX","rawNode","scriptNode","textContent","childNodes","code","INLINE_CODE_IN_SANDBOX","NONE","exports","transpileScript","srcAttribute","getAttribute","fetch","_preTranspile","removeAttribute","dataset","syncMode","hasAttribute","priority","credentials","then","res","text","codeFactory","makeEvaluateFactory","fetchPriority","URL","createObjectURL","Blob","consumed","url","version","createReusingObjectUrl"],"sources":["../../../src/assets-transpilers/script.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-03-16\n */\n\nimport type { MatchResult } from '../module-resolver';\nimport { getEntireUrl } from '../utils';\nimport type { AssetsTranspilerOpts } from './types';\nimport { Mode } from './types';\nimport { createReusingObjectUrl } from './utils';\n\nconst isValidJavaScriptType = (type?: string): boolean => {\n const handleTypes = [\n 'text/javascript',\n 'module',\n 'application/javascript',\n 'text/ecmascript',\n 'application/ecmascript',\n ];\n return !type || handleTypes.indexOf(type) !== -1;\n};\n\nconst getCredentials = (crossOrigin: string | null): RequestInit['credentials'] | undefined => {\n switch (crossOrigin) {\n case 'anonymous':\n return 'same-origin';\n case 'use-credentials':\n return 'include';\n default:\n return undefined;\n }\n};\n\ntype PreTranspileResult =\n | { mode: Mode.REMOTE_ASSETS_IN_SANDBOX; result: { src: string } }\n | { mode: Mode.REUSED_DEP_IN_SANDBOX; result: { src: string } & MatchResult }\n | { mode: Mode.INLINE_CODE_IN_SANDBOX; result: { code: string } }\n | { mode: Mode.NONE; result?: never };\n\nexport const preTranspile = (\n script: Partial<Pick<HTMLScriptElement, 'src' | 'type' | 'textContent'>>,\n baseURI: string,\n opts: AssetsTranspilerOpts,\n): PreTranspileResult => {\n const { sandbox, moduleResolver } = opts;\n\n const { src, type } = script;\n\n if (sandbox) {\n if (src) {\n const entireUrl = getEntireUrl(src, baseURI);\n const matchedScript = moduleResolver?.(entireUrl);\n if (matchedScript) {\n return {\n mode: Mode.REUSED_DEP_IN_SANDBOX,\n result: { src: entireUrl, ...matchedScript },\n };\n }\n\n return {\n mode: Mode.REMOTE_ASSETS_IN_SANDBOX,\n result: { src: entireUrl },\n };\n }\n\n if (isValidJavaScriptType(type)) {\n const rawNode = opts.rawNode as HTMLScriptElement;\n const scriptNode = script.textContent ? script : rawNode.childNodes[0];\n\n const code = scriptNode.textContent;\n if (code) {\n return {\n mode: Mode.INLINE_CODE_IN_SANDBOX,\n result: {\n code,\n },\n };\n }\n }\n }\n\n return { mode: Mode.NONE };\n};\n\nexport default function transpileScript(\n script: HTMLScriptElement,\n baseURI: string,\n opts: AssetsTranspilerOpts,\n): HTMLScriptElement {\n // Can't use script.src directly, because it will be resolved to absolute path by browser with Node.baseURI\n // Such as <script src=\"./foo.js\"></script> will be resolved to http://localhost:8000/foo.js while read script.src\n const srcAttribute = script.getAttribute('src');\n const { sandbox, fetch } = opts;\n\n const { mode, result } = preTranspile(\n {\n src: srcAttribute || undefined,\n type: script.type,\n textContent: script.textContent,\n },\n baseURI,\n opts,\n );\n\n switch (mode) {\n case Mode.REMOTE_ASSETS_IN_SANDBOX: {\n const { src } = result;\n\n // We must remove script src to avoid self execution as we need to fetch the script content and transpile it\n script.removeAttribute('src');\n script.dataset.src = src;\n\n const syncMode = !script.hasAttribute('async');\n const priority: Priority = syncMode ? 'high' : 'low';\n const credentials = getCredentials(script.crossOrigin);\n\n void fetch(src, { credentials, priority })\n .then((res) => res.text())\n .then((code) => {\n const codeFactory = sandbox!.makeEvaluateFactory(code, src);\n\n // HTMLScriptElement default fetchPriority is 'auto', we should set it to 'high' to make it execute earlier while it's not async script\n if (syncMode) {\n script.fetchPriority = 'high';\n }\n\n script.src = URL.createObjectURL(new Blob([codeFactory], { type: 'text/javascript' }));\n });\n\n return script;\n }\n\n case Mode.INLINE_CODE_IN_SANDBOX: {\n const rawNode = opts.rawNode as HTMLScriptElement;\n const scriptNode = script.textContent ? script : rawNode.childNodes[0];\n const { code } = result;\n\n scriptNode.textContent = sandbox!.makeEvaluateFactory(code, baseURI);\n // mark the script have consumed\n script.dataset.consumed = 'true';\n\n return script;\n }\n\n case Mode.REUSED_DEP_IN_SANDBOX: {\n const { url, version, src } = result;\n\n script.dataset.src = src;\n script.dataset.version = version;\n\n const syncMode = !script.getAttribute('async');\n // HTMLScriptElement default fetchPriority is 'auto', we should set it to 'high' to make it execute earlier while it's not async script\n if (syncMode) {\n script.fetchPriority = 'high';\n }\n\n // When the script hits the dependency reuse logic, the current script is not executed, and an empty script is returned directly\n script.src = createReusingObjectUrl(src, url, 'text/javascript');\n\n return script;\n }\n\n case Mode.NONE:\n default: {\n if (srcAttribute) {\n script.src = getEntireUrl(srcAttribute, baseURI);\n return script;\n }\n\n return script;\n }\n }\n\n // TODO find entry exports\n}\n"],"mappings":"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"}
|
|
@@ -13,8 +13,8 @@ export type AssetsTranspilerOpts = BaseTranspilerOpts & {
|
|
|
13
13
|
rawNode: Node;
|
|
14
14
|
};
|
|
15
15
|
export declare enum Mode {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
REMOTE_ASSETS_IN_SANDBOX = "RAIS",
|
|
17
|
+
REUSED_DEP_IN_SANDBOX = "RDIS",
|
|
18
|
+
INLINE_CODE_IN_SANDBOX = "ICIS",
|
|
19
19
|
NONE = "NONE"
|
|
20
20
|
}
|
|
@@ -9,9 +9,9 @@ exports.Mode = void 0;
|
|
|
9
9
|
* @since 2023-08-26
|
|
10
10
|
*/
|
|
11
11
|
var Mode = /*#__PURE__*/function (Mode) {
|
|
12
|
-
Mode["
|
|
13
|
-
Mode["
|
|
14
|
-
Mode["
|
|
12
|
+
Mode["REMOTE_ASSETS_IN_SANDBOX"] = "RAIS";
|
|
13
|
+
Mode["REUSED_DEP_IN_SANDBOX"] = "RDIS";
|
|
14
|
+
Mode["INLINE_CODE_IN_SANDBOX"] = "ICIS";
|
|
15
15
|
Mode["NONE"] = "NONE";
|
|
16
16
|
return Mode;
|
|
17
17
|
}({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Mode","exports"],"sources":["../../../src/assets-transpilers/types.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-08-26\n */\nimport type { Sandbox } from '@qiankunjs/sandbox';\nimport type { BaseLoaderOpts } from '../common';\n\nimport type { MatchResult } from '../module-resolver';\n\nexport type BaseTranspilerOpts = BaseLoaderOpts & {\n moduleResolver?: (url: string) => MatchResult | undefined;\n sandbox?: Sandbox;\n};\n\nexport type AssetsTranspilerOpts = BaseTranspilerOpts & { rawNode: Node };\n\nexport enum Mode {\n
|
|
1
|
+
{"version":3,"names":["Mode","exports"],"sources":["../../../src/assets-transpilers/types.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-08-26\n */\nimport type { Sandbox } from '@qiankunjs/sandbox';\nimport type { BaseLoaderOpts } from '../common';\n\nimport type { MatchResult } from '../module-resolver';\n\nexport type BaseTranspilerOpts = BaseLoaderOpts & {\n moduleResolver?: (url: string) => MatchResult | undefined;\n sandbox?: Sandbox;\n};\n\nexport type AssetsTranspilerOpts = BaseTranspilerOpts & { rawNode: Node };\n\nexport enum Mode {\n REMOTE_ASSETS_IN_SANDBOX = 'RAIS',\n REUSED_DEP_IN_SANDBOX = 'RDIS',\n INLINE_CODE_IN_SANDBOX = 'ICIS',\n NONE = 'NONE',\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAHA,IAgBYA,IAAI,0BAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA;AAAAC,OAAA,CAAAD,IAAA,GAAAA,IAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createReusingObjectUrl: ((src: string, url: string, type: 'text/javascript' | 'text/css') => string) & import("lodash").MemoizedFunction;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createReusingObjectUrl = void 0;
|
|
8
|
+
var _memoize2 = _interopRequireDefault(require("lodash/memoize"));
|
|
9
|
+
/**
|
|
10
|
+
* @author Kuitos
|
|
11
|
+
* @since 2023-10-09
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
var createReusingObjectUrl = (0, _memoize2.default)(function (src, url, type) {
|
|
15
|
+
return URL.createObjectURL(new Blob(["/* ".concat(src, " is reusing the execution result of ").concat(url, " */")], {
|
|
16
|
+
type: type
|
|
17
|
+
}));
|
|
18
|
+
}, function (src, url, type) {
|
|
19
|
+
return "".concat(src, "#").concat(url, "#").concat(type);
|
|
20
|
+
});
|
|
21
|
+
exports.createReusingObjectUrl = createReusingObjectUrl;
|
|
22
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createReusingObjectUrl","_memoize2","default","src","url","type","URL","createObjectURL","Blob","concat","exports"],"sources":["../../../src/assets-transpilers/utils.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-10-09\n */\nimport { memoize } from 'lodash';\n\nexport const createReusingObjectUrl = memoize(\n (src: string, url: string, type: 'text/javascript' | 'text/css'): string => {\n return URL.createObjectURL(\n new Blob([`/* ${src} is reusing the execution result of ${url} */`], {\n type,\n }),\n );\n },\n (src, url, type) => `${src}#${url}#${type}`,\n);\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;AAGO,IAAMA,sBAAsB,GAAG,IAAAC,SAAA,CAAAC,OAAA,EACpC,UAACC,GAAW,EAAEC,GAAW,EAAEC,IAAoC,EAAa;EAC1E,OAAOC,GAAG,CAACC,eAAe,CACxB,IAAIC,IAAI,CAAC,OAAAC,MAAA,CAAON,GAAG,0CAAAM,MAAA,CAAuCL,GAAG,SAAM,EAAE;IACnEC,IAAI,EAAJA;EACF,CAAC,CACH,CAAC;AACH,CAAC,EACD,UAACF,GAAG,EAAEC,GAAG,EAAEC,IAAI;EAAA,UAAAI,MAAA,CAAQN,GAAG,OAAAM,MAAA,CAAIL,GAAG,OAAAK,MAAA,CAAIJ,IAAI;AAAA,CAC3C,CAAC;AAACK,OAAA,CAAAV,sBAAA,GAAAA,sBAAA"}
|
|
@@ -24,10 +24,10 @@ function moduleResolver(url, microAppContainer, mainAppContainer) {
|
|
|
24
24
|
if (mainAppDependencyMapString) {
|
|
25
25
|
var _microAppContainer$__;
|
|
26
26
|
var mainAppDependencyMap = JSON.parse(mainAppDependencyMapString);
|
|
27
|
-
var
|
|
28
|
-
var matchedDep = findDependency(microAppDependency, normalizeDependencies(mainAppDependencyMap.dependencies),
|
|
27
|
+
var matchedDeps = (_microAppContainer$__ = microAppContainer.__matched_deps__) !== null && _microAppContainer$__ !== void 0 ? _microAppContainer$__ : microAppContainer.__matched_deps__ = [];
|
|
28
|
+
var matchedDep = findDependency(microAppDependency, normalizeDependencies(mainAppDependencyMap.dependencies), matchedDeps);
|
|
29
29
|
if (matchedDep) {
|
|
30
|
-
|
|
30
|
+
matchedDeps.push(matchedDep.name);
|
|
31
31
|
return matchedDep;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -35,13 +35,13 @@ function moduleResolver(url, microAppContainer, mainAppContainer) {
|
|
|
35
35
|
}
|
|
36
36
|
return undefined;
|
|
37
37
|
}
|
|
38
|
-
function findDependency(dependency, mainAppDependencies,
|
|
39
|
-
var matched = mainAppDependencies.find(function (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
(
|
|
43
|
-
return
|
|
44
|
-
})
|
|
38
|
+
function findDependency(dependency, mainAppDependencies, matchedDependencies) {
|
|
39
|
+
var matched = mainAppDependencies.find(function (mainAppDependency) {
|
|
40
|
+
return mainAppDependency.name === dependency.name && (0, _satisfies.default)(mainAppDependency.version, dependency.range) &&
|
|
41
|
+
// peer dependencies must be cached before
|
|
42
|
+
(dependency.peerDeps || []).every(function (peerDep) {
|
|
43
|
+
return matchedDependencies.indexOf(peerDep) !== -1;
|
|
44
|
+
});
|
|
45
45
|
});
|
|
46
46
|
if (matched) {
|
|
47
47
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_satisfies","_interopRequireDefault","require","moduleResolver","url","microAppContainer","mainAppContainer","_microAppContainer$qu","dependencyMapSelector","microAppDependenciesString","querySelector","innerHTML","_ref","JSON","parse","dependencies","normalizedDependencies","normalizeDependencies","microAppDependency","find","v","_mainAppContainer$que","mainAppDependencyMapString","_microAppContainer$__","mainAppDependencyMap","
|
|
1
|
+
{"version":3,"names":["_satisfies","_interopRequireDefault","require","moduleResolver","url","microAppContainer","mainAppContainer","_microAppContainer$qu","dependencyMapSelector","microAppDependenciesString","querySelector","innerHTML","_ref","JSON","parse","dependencies","normalizedDependencies","normalizeDependencies","microAppDependency","find","v","_mainAppContainer$que","mainAppDependencyMapString","_microAppContainer$__","mainAppDependencyMap","matchedDeps","__matched_deps__","matchedDep","findDependency","push","name","undefined","dependency","mainAppDependencies","matchedDependencies","matched","mainAppDependency","satisfies","version","range","peerDeps","every","peerDep","indexOf","Object","keys","map","_objectSpread2","default"],"sources":["../../../src/module-resolver/index.ts"],"sourcesContent":["import satisfies from 'semver/functions/satisfies';\nimport type { MatchResult } from './types';\n\ndeclare global {\n interface HTMLElement {\n __matched_deps__?: string[];\n }\n}\n\ntype Dependency = {\n url: string;\n version: string;\n range: string;\n peerDeps?: string[];\n};\n\ntype NormalizedDependency = {\n name: string;\n} & Dependency;\n\ntype DependencyMap = {\n dependencies: Record<string, Dependency>;\n};\n\nexport type { MatchResult } from './types';\n\nexport function moduleResolver(\n url: string,\n microAppContainer: HTMLElement,\n mainAppContainer: HTMLElement,\n): MatchResult | undefined {\n const dependencyMapSelector = 'script[type=dependencymap]';\n\n const microAppDependenciesString = microAppContainer.querySelector(dependencyMapSelector)?.innerHTML;\n if (microAppDependenciesString) {\n const { dependencies } = JSON.parse(microAppDependenciesString) as DependencyMap;\n const normalizedDependencies = normalizeDependencies(dependencies);\n const microAppDependency = normalizedDependencies.find((v) => v.url === url);\n\n if (microAppDependency) {\n const mainAppDependencyMapString = mainAppContainer.querySelector(dependencyMapSelector)?.innerHTML;\n\n if (mainAppDependencyMapString) {\n const mainAppDependencyMap = JSON.parse(mainAppDependencyMapString) as DependencyMap;\n const matchedDeps = (microAppContainer.__matched_deps__ ??= []);\n const matchedDep = findDependency(\n microAppDependency,\n normalizeDependencies(mainAppDependencyMap.dependencies),\n matchedDeps,\n );\n\n if (matchedDep) {\n matchedDeps.push(matchedDep.name);\n return matchedDep;\n }\n }\n }\n }\n\n return undefined;\n}\n\nfunction findDependency(\n dependency: NormalizedDependency,\n mainAppDependencies: NormalizedDependency[],\n matchedDependencies: string[],\n): MatchResult | undefined {\n const matched = mainAppDependencies.find(\n (mainAppDependency) =>\n mainAppDependency.name === dependency.name &&\n satisfies(mainAppDependency.version, dependency.range) &&\n // peer dependencies must be cached before\n (dependency.peerDeps || []).every((peerDep) => matchedDependencies.indexOf(peerDep) !== -1),\n );\n\n if (matched) {\n return {\n name: matched.name,\n version: matched.version,\n url: matched.url,\n };\n }\n\n return undefined;\n}\n\nfunction normalizeDependencies(dependencies: DependencyMap['dependencies']): NormalizedDependency[] {\n return Object.keys(dependencies).map((name) => ({\n name,\n ...dependencies[name],\n }));\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AA0BO,SAASC,cAAcA,CAC5BC,GAAW,EACXC,iBAA8B,EAC9BC,gBAA6B,EACJ;EAAA,IAAAC,qBAAA;EACzB,IAAMC,qBAAqB,GAAG,4BAA4B;EAE1D,IAAMC,0BAA0B,IAAAF,qBAAA,GAAGF,iBAAiB,CAACK,aAAa,CAACF,qBAAqB,CAAC,cAAAD,qBAAA,uBAAtDA,qBAAA,CAAwDI,SAAS;EACpG,IAAIF,0BAA0B,EAAE;IAC9B,IAAAG,IAAA,GAAyBC,IAAI,CAACC,KAAK,CAACL,0BAA0B,CAAC;MAAvDM,YAAY,GAAAH,IAAA,CAAZG,YAAY;IACpB,IAAMC,sBAAsB,GAAGC,qBAAqB,CAACF,YAAY,CAAC;IAClE,IAAMG,kBAAkB,GAAGF,sBAAsB,CAACG,IAAI,CAAC,UAACC,CAAC;MAAA,OAAKA,CAAC,CAAChB,GAAG,KAAKA,GAAG;IAAA,EAAC;IAE5E,IAAIc,kBAAkB,EAAE;MAAA,IAAAG,qBAAA;MACtB,IAAMC,0BAA0B,IAAAD,qBAAA,GAAGf,gBAAgB,CAACI,aAAa,CAACF,qBAAqB,CAAC,cAAAa,qBAAA,uBAArDA,qBAAA,CAAuDV,SAAS;MAEnG,IAAIW,0BAA0B,EAAE;QAAA,IAAAC,qBAAA;QAC9B,IAAMC,oBAAoB,GAAGX,IAAI,CAACC,KAAK,CAACQ,0BAA0B,CAAkB;QACpF,IAAMG,WAAW,IAAAF,qBAAA,GAAIlB,iBAAiB,CAACqB,gBAAgB,cAAAH,qBAAA,cAAAA,qBAAA,GAAlClB,iBAAiB,CAACqB,gBAAgB,GAAK,EAAG;QAC/D,IAAMC,UAAU,GAAGC,cAAc,CAC/BV,kBAAkB,EAClBD,qBAAqB,CAACO,oBAAoB,CAACT,YAAY,CAAC,EACxDU,WACF,CAAC;QAED,IAAIE,UAAU,EAAE;UACdF,WAAW,CAACI,IAAI,CAACF,UAAU,CAACG,IAAI,CAAC;UACjC,OAAOH,UAAU;QACnB;MACF;IACF;EACF;EAEA,OAAOI,SAAS;AAClB;AAEA,SAASH,cAAcA,CACrBI,UAAgC,EAChCC,mBAA2C,EAC3CC,mBAA6B,EACJ;EACzB,IAAMC,OAAO,GAAGF,mBAAmB,CAACd,IAAI,CACtC,UAACiB,iBAAiB;IAAA,OAChBA,iBAAiB,CAACN,IAAI,KAAKE,UAAU,CAACF,IAAI,IAC1C,IAAAO,kBAAS,EAACD,iBAAiB,CAACE,OAAO,EAAEN,UAAU,CAACO,KAAK,CAAC;IACtD;IACA,CAACP,UAAU,CAACQ,QAAQ,IAAI,EAAE,EAAEC,KAAK,CAAC,UAACC,OAAO;MAAA,OAAKR,mBAAmB,CAACS,OAAO,CAACD,OAAO,CAAC,KAAK,CAAC,CAAC;IAAA,EAAC;EAAA,CAC/F,CAAC;EAED,IAAIP,OAAO,EAAE;IACX,OAAO;MACLL,IAAI,EAAEK,OAAO,CAACL,IAAI;MAClBQ,OAAO,EAAEH,OAAO,CAACG,OAAO;MACxBlC,GAAG,EAAE+B,OAAO,CAAC/B;IACf,CAAC;EACH;EAEA,OAAO2B,SAAS;AAClB;AAEA,SAASd,qBAAqBA,CAACF,YAA2C,EAA0B;EAClG,OAAO6B,MAAM,CAACC,IAAI,CAAC9B,YAAY,CAAC,CAAC+B,GAAG,CAAC,UAAChB,IAAI;IAAA,WAAAiB,cAAA,CAAAC,OAAA;MACxClB,IAAI,EAAJA;IAAI,GACDf,YAAY,CAACe,IAAI,CAAC;EAAA,CACrB,CAAC;AACL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["transpileLink","transpileScript","transpileAssets","node","baseURI","opts","htmlElement","tagName"],"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":["transpileLink","transpileScript","transpileAssets","node","baseURI","opts","htmlElement","tagName"],"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 = 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"],"mappings":"AAAA;AACA;AACA;AACA;AACA,OAAOA,aAAa;AACpB,OAAOC,eAAe;AAGtB,OAAO,SAASC,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,OAAON,eAAe,CAACK,WAAW,EAAuBF,OAAO,EAAEC,IAAI,CAAC;MACzE;IAEA,KAAK,MAAM;MAAE;QACX,OAAOL,aAAa,CAACM,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"}
|