@qiankunjs/shared 0.0.1-alpha.5 → 0.0.1-rc.0

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.
Files changed (53) hide show
  1. package/dist/cjs/assets-transpilers/link.js +32 -21
  2. package/dist/cjs/assets-transpilers/link.js.map +1 -1
  3. package/dist/cjs/assets-transpilers/script.d.ts +5 -4
  4. package/dist/cjs/assets-transpilers/script.js +9 -8
  5. package/dist/cjs/assets-transpilers/script.js.map +1 -1
  6. package/dist/cjs/assets-transpilers/types.d.ts +8 -0
  7. package/dist/cjs/assets-transpilers/types.js +13 -0
  8. package/dist/cjs/assets-transpilers/types.js.map +1 -1
  9. package/dist/cjs/common.d.ts +0 -2
  10. package/dist/cjs/common.js.map +1 -1
  11. package/dist/cjs/error/QiankunError.d.ts +3 -0
  12. package/dist/cjs/error/QiankunError.js +23 -0
  13. package/dist/cjs/error/QiankunError.js.map +1 -0
  14. package/dist/cjs/error/index.d.ts +1 -0
  15. package/dist/cjs/error/index.js +13 -0
  16. package/dist/cjs/error/index.js.map +1 -0
  17. package/dist/cjs/index.d.ts +1 -0
  18. package/dist/cjs/index.js +11 -0
  19. package/dist/cjs/index.js.map +1 -1
  20. package/dist/esm/assets-transpilers/link.js +32 -21
  21. package/dist/esm/assets-transpilers/link.js.map +1 -1
  22. package/dist/esm/assets-transpilers/script.d.ts +5 -4
  23. package/dist/esm/assets-transpilers/script.js +9 -8
  24. package/dist/esm/assets-transpilers/script.js.map +1 -1
  25. package/dist/esm/assets-transpilers/types.d.ts +8 -0
  26. package/dist/esm/assets-transpilers/types.js +12 -1
  27. package/dist/esm/assets-transpilers/types.js.map +1 -1
  28. package/dist/esm/common.d.ts +0 -2
  29. package/dist/esm/common.js.map +1 -1
  30. package/dist/esm/error/QiankunError.d.ts +3 -0
  31. package/dist/esm/error/QiankunError.js +15 -0
  32. package/dist/esm/error/QiankunError.js.map +1 -0
  33. package/dist/esm/error/index.d.ts +1 -0
  34. package/dist/esm/error/index.js +2 -0
  35. package/dist/esm/error/index.js.map +1 -0
  36. package/dist/esm/index.d.ts +1 -0
  37. package/dist/esm/index.js +1 -0
  38. package/dist/esm/index.js.map +1 -1
  39. package/package.json +2 -2
  40. package/src/assets-transpilers/link.ts +37 -26
  41. package/src/assets-transpilers/script.ts +13 -12
  42. package/src/assets-transpilers/types.ts +12 -1
  43. package/src/common.ts +0 -3
  44. package/src/error/QiankunError.ts +5 -0
  45. package/src/error/index.ts +1 -0
  46. package/src/index.ts +1 -0
  47. package/dist/cjs/assets-transpilers/utils.d.ts +0 -7
  48. package/dist/cjs/assets-transpilers/utils.js +0 -59
  49. package/dist/cjs/assets-transpilers/utils.js.map +0 -1
  50. package/dist/esm/assets-transpilers/utils.d.ts +0 -7
  51. package/dist/esm/assets-transpilers/utils.js +0 -52
  52. package/dist/esm/assets-transpilers/utils.js.map +0 -1
  53. package/src/assets-transpilers/utils.ts +0 -69
@@ -8,6 +8,7 @@ exports.default = transpileLink;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
9
  var _utils = require("../utils");
10
10
  var _script = require("./script");
11
+ var _types = require("./types");
11
12
  /**
12
13
  * @author Kuitos
13
14
  * @since 2023-04-26
@@ -23,7 +24,7 @@ var preTranspile = function preTranspile(link, baseURI, opts) {
23
24
  var matchedAssets = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(linkHref);
24
25
  if (matchedAssets) {
25
26
  return {
26
- mode: 'cache',
27
+ mode: _types.Mode.CACHE_FROM_SANDBOX,
27
28
  result: (0, _objectSpread2.default)({
28
29
  src: linkHref
29
30
  }, matchedAssets)
@@ -32,7 +33,7 @@ var preTranspile = function preTranspile(link, baseURI, opts) {
32
33
  }
33
34
  }
34
35
  return {
35
- mode: 'none'
36
+ mode: _types.Mode.NONE
36
37
  };
37
38
  };
38
39
 
@@ -63,16 +64,22 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
63
64
  }, baseURI, opts),
64
65
  mode = _preTranspileScript.mode,
65
66
  result = _preTranspileScript.result;
66
- if (mode === 'remote') {
67
- link.as = 'fetch';
68
- }
69
- if (mode === 'cache') {
70
- var url = result.url;
71
- var objectURL = URL.createObjectURL(new Blob(["// ".concat(href, " is reusing the execution result of ").concat(url)], {
72
- type: 'text/javascript'
73
- }));
74
- link.href = objectURL;
75
- revokeAfterLoaded(objectURL, link);
67
+ switch (mode) {
68
+ case _types.Mode.REMOTE_FROM_SANDBOX:
69
+ {
70
+ link.as = 'fetch';
71
+ break;
72
+ }
73
+ case _types.Mode.CACHE_FROM_SANDBOX:
74
+ {
75
+ var url = result.url;
76
+ var objectURL = URL.createObjectURL(new Blob(["// ".concat(href, " is reusing the execution result of ").concat(url)], {
77
+ type: 'text/javascript'
78
+ }));
79
+ link.href = objectURL;
80
+ revokeAfterLoaded(objectURL, link);
81
+ break;
82
+ }
76
83
  }
77
84
  break;
78
85
  }
@@ -83,13 +90,17 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
83
90
  }, baseURI, opts),
84
91
  _mode = _preTranspile.mode,
85
92
  _result = _preTranspile.result;
86
- if (_mode === 'cache') {
87
- var _url = _result.url;
88
- var _objectURL = URL.createObjectURL(new Blob(["// ".concat(href, " is reusing the execution result of ").concat(_url)], {
89
- type: 'text/css'
90
- }));
91
- link.href = _objectURL;
92
- revokeAfterLoaded(_objectURL, link);
93
+ switch (_mode) {
94
+ case _types.Mode.CACHE_FROM_SANDBOX:
95
+ {
96
+ var _url = _result.url;
97
+ var _objectURL = URL.createObjectURL(new Blob(["// ".concat(href, " is reusing the execution result of ").concat(_url)], {
98
+ type: 'text/css'
99
+ }));
100
+ link.href = _objectURL;
101
+ revokeAfterLoaded(_objectURL, link);
102
+ break;
103
+ }
93
104
  }
94
105
  break;
95
106
  }
@@ -105,7 +116,7 @@ function transpileLink(link, baseURI, opts) {
105
116
  mode = _preTranspile2.mode,
106
117
  result = _preTranspile2.result;
107
118
  switch (mode) {
108
- case 'cache':
119
+ case _types.Mode.CACHE_FROM_SANDBOX:
109
120
  {
110
121
  var src = result.src,
111
122
  version = result.version,
@@ -117,7 +128,7 @@ function transpileLink(link, baseURI, opts) {
117
128
  }));
118
129
  return link;
119
130
  }
120
- case 'none':
131
+ case _types.Mode.NONE:
121
132
  default:
122
133
  {
123
134
  if (hrefAttribute) {
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","_script","preTranspile","link","baseURI","opts","sandbox","moduleResolver","href","linkHref","getEntireUrl","matchedAssets","mode","result","_objectSpread2","default","src","postProcessPreloadLink","as","revokeAfterLoaded","objectURL","revoke","URL","revokeObjectURL","addEventListener","once","_preTranspileScript","preTranspileScript","url","createObjectURL","Blob","concat","type","_preTranspile","transpileLink","hrefAttribute","getAttribute","_preTranspile2","undefined","version","dataset","rel"],"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';\n\ntype PreTranspileResult = { mode: 'cache'; result: { src: string } & MatchResult } | { mode: 'none'; result?: never };\nconst preTranspile = (\n link: Partial<Pick<HTMLLinkElement, 'href'>>,\n baseURI: string,\n opts: BaseTranspilerOpts,\n): PreTranspileResult => {\n const { sandbox, moduleResolver } = opts;\n const { href } = link;\n\n if (sandbox) {\n if (href) {\n const linkHref = getEntireUrl(href, baseURI);\n\n const matchedAssets = moduleResolver?.(linkHref);\n if (matchedAssets) {\n return {\n mode: 'cache',\n result: { src: linkHref, ...matchedAssets },\n };\n }\n }\n }\n\n return {\n mode: 'none',\n };\n};\n\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 */\nconst postProcessPreloadLink = (link: HTMLLinkElement, baseURI: string, opts: AssetsTranspilerOpts): void => {\n const { as, href } = link;\n\n const revokeAfterLoaded = (objectURL: string, link: HTMLLinkElement) => {\n const revoke = () => URL.revokeObjectURL(objectURL);\n link.addEventListener('load', revoke, { once: true });\n link.addEventListener('error', revoke, { once: true });\n };\n\n switch (as) {\n case 'script': {\n const { mode, result } = preTranspileScript({ src: href }, baseURI, opts);\n\n if (mode === 'remote') {\n link.as = 'fetch';\n }\n\n if (mode === 'cache') {\n const { url } = result;\n const objectURL = URL.createObjectURL(\n new Blob([`// ${href} is reusing the execution result of ${url}`], {\n type: 'text/javascript',\n }),\n );\n link.href = objectURL;\n revokeAfterLoaded(objectURL, link);\n }\n\n break;\n }\n\n case 'style': {\n const { mode, result } = preTranspile({ href }, baseURI, opts);\n\n if (mode === 'cache') {\n const { url } = result;\n const objectURL = URL.createObjectURL(\n new Blob([`// ${href} is reusing the execution result of ${url}`], {\n type: 'text/css',\n }),\n );\n link.href = objectURL;\n revokeAfterLoaded(objectURL, link);\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 } = preTranspile(\n {\n href: hrefAttribute || undefined,\n },\n baseURI,\n opts,\n );\n\n switch (mode) {\n case 'cache': {\n const { src, version, url } = result;\n link.dataset.href = src;\n link.dataset.version = version;\n link.href = URL.createObjectURL(\n new Blob([`// ${src} is reusing the execution result of ${url}`], {\n type: 'text/css',\n }),\n );\n\n return link;\n }\n\n case '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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"}
1
+ {"version":3,"names":["_utils","require","_script","_types","preTranspile","link","baseURI","opts","sandbox","moduleResolver","href","linkHref","getEntireUrl","matchedAssets","mode","Mode","CACHE_FROM_SANDBOX","result","_objectSpread2","default","src","NONE","postProcessPreloadLink","as","revokeAfterLoaded","objectURL","revoke","URL","revokeObjectURL","addEventListener","once","_preTranspileScript","preTranspileScript","REMOTE_FROM_SANDBOX","url","createObjectURL","Blob","concat","type","_preTranspile","transpileLink","hrefAttribute","getAttribute","_preTranspile2","undefined","version","dataset","rel"],"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';\n\ntype PreTranspileResult =\n | { mode: Mode.CACHE_FROM_SANDBOX; result: { src: string } & MatchResult }\n | { mode: Mode.NONE; result?: never };\nconst preTranspile = (\n link: Partial<Pick<HTMLLinkElement, 'href'>>,\n baseURI: string,\n opts: BaseTranspilerOpts,\n): PreTranspileResult => {\n const { sandbox, moduleResolver } = opts;\n const { href } = link;\n\n if (sandbox) {\n if (href) {\n const linkHref = getEntireUrl(href, baseURI);\n\n const matchedAssets = moduleResolver?.(linkHref);\n if (matchedAssets) {\n return {\n mode: Mode.CACHE_FROM_SANDBOX,\n result: { src: linkHref, ...matchedAssets },\n };\n }\n }\n }\n\n return {\n mode: Mode.NONE,\n };\n};\n\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 */\nconst postProcessPreloadLink = (link: HTMLLinkElement, baseURI: string, opts: AssetsTranspilerOpts): void => {\n const { as, href } = link;\n\n const revokeAfterLoaded = (objectURL: string, link: HTMLLinkElement) => {\n const revoke = () => URL.revokeObjectURL(objectURL);\n link.addEventListener('load', revoke, { once: true });\n link.addEventListener('error', revoke, { once: true });\n };\n\n switch (as) {\n case 'script': {\n const { mode, result } = preTranspileScript({ src: href }, baseURI, opts);\n\n switch (mode) {\n case Mode.REMOTE_FROM_SANDBOX: {\n link.as = 'fetch';\n break;\n }\n\n case Mode.CACHE_FROM_SANDBOX: {\n const { url } = result;\n const objectURL = URL.createObjectURL(\n new Blob([`// ${href} is reusing the execution result of ${url}`], {\n type: 'text/javascript',\n }),\n );\n link.href = objectURL;\n revokeAfterLoaded(objectURL, link);\n\n break;\n }\n }\n\n break;\n }\n\n case 'style': {\n const { mode, result } = preTranspile({ href }, baseURI, opts);\n\n switch (mode) {\n case Mode.CACHE_FROM_SANDBOX: {\n const { url } = result;\n const objectURL = URL.createObjectURL(\n new Blob([`// ${href} is reusing the execution result of ${url}`], {\n type: 'text/css',\n }),\n );\n link.href = objectURL;\n revokeAfterLoaded(objectURL, link);\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 } = preTranspile(\n {\n href: hrefAttribute || undefined,\n },\n baseURI,\n opts,\n );\n\n switch (mode) {\n case Mode.CACHE_FROM_SANDBOX: {\n const { src, version, url } = result;\n link.dataset.href = src;\n link.dataset.version = version;\n link.href = URL.createObjectURL(\n new Blob([`// ${src} is reusing the execution result of ${url}`], {\n type: 'text/css',\n }),\n );\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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"}
@@ -4,23 +4,24 @@
4
4
  */
5
5
  import type { MatchResult } from '../module-resolver';
6
6
  import type { AssetsTranspilerOpts } from './types';
7
+ import { Mode } from './types';
7
8
  type PreTranspileResult = {
8
- mode: 'remote';
9
+ mode: Mode.REMOTE_FROM_SANDBOX;
9
10
  result: {
10
11
  src: string;
11
12
  };
12
13
  } | {
13
- mode: 'cache';
14
+ mode: Mode.CACHE_FROM_SANDBOX;
14
15
  result: {
15
16
  src: string;
16
17
  } & MatchResult;
17
18
  } | {
18
- mode: 'inline';
19
+ mode: Mode.INLINE_FROM_SANDBOX;
19
20
  result: {
20
21
  code: string;
21
22
  };
22
23
  } | {
23
- mode: 'none';
24
+ mode: Mode.NONE;
24
25
  result?: never;
25
26
  };
26
27
  export declare const preTranspile: (script: Partial<Pick<HTMLScriptElement, 'src' | 'type' | 'textContent'>>, baseURI: string, opts: AssetsTranspilerOpts) => PreTranspileResult;
@@ -8,6 +8,7 @@ exports.default = transpileScript;
8
8
  exports.preTranspile = void 0;
9
9
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
10
  var _utils = require("../utils");
11
+ var _types = require("./types");
11
12
  /**
12
13
  * @author Kuitos
13
14
  * @since 2023-03-16
@@ -38,14 +39,14 @@ var preTranspile = function preTranspile(script, baseURI, opts) {
38
39
  var matchedScript = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(entireUrl);
39
40
  if (matchedScript) {
40
41
  return {
41
- mode: 'cache',
42
+ mode: _types.Mode.CACHE_FROM_SANDBOX,
42
43
  result: (0, _objectSpread2.default)({
43
44
  src: entireUrl
44
45
  }, matchedScript)
45
46
  };
46
47
  }
47
48
  return {
48
- mode: 'remote',
49
+ mode: _types.Mode.REMOTE_FROM_SANDBOX,
49
50
  result: {
50
51
  src: entireUrl
51
52
  }
@@ -57,7 +58,7 @@ var preTranspile = function preTranspile(script, baseURI, opts) {
57
58
  var code = scriptNode.textContent;
58
59
  if (code) {
59
60
  return {
60
- mode: 'inline',
61
+ mode: _types.Mode.INLINE_FROM_SANDBOX,
61
62
  result: {
62
63
  code: code
63
64
  }
@@ -66,7 +67,7 @@ var preTranspile = function preTranspile(script, baseURI, opts) {
66
67
  }
67
68
  }
68
69
  return {
69
- mode: 'none'
70
+ mode: _types.Mode.NONE
70
71
  };
71
72
  };
72
73
  exports.preTranspile = preTranspile;
@@ -84,7 +85,7 @@ function transpileScript(script, baseURI, opts) {
84
85
  mode = _preTranspile.mode,
85
86
  result = _preTranspile.result;
86
87
  switch (mode) {
87
- case 'remote':
88
+ case _types.Mode.REMOTE_FROM_SANDBOX:
88
89
  {
89
90
  var src = result.src;
90
91
 
@@ -112,7 +113,7 @@ function transpileScript(script, baseURI, opts) {
112
113
  });
113
114
  return script;
114
115
  }
115
- case 'inline':
116
+ case _types.Mode.INLINE_FROM_SANDBOX:
116
117
  {
117
118
  var rawNode = opts.rawNode;
118
119
  var scriptNode = script.textContent ? script : rawNode.childNodes[0];
@@ -122,7 +123,7 @@ function transpileScript(script, baseURI, opts) {
122
123
  script.dataset.consumed = 'true';
123
124
  return script;
124
125
  }
125
- case 'cache':
126
+ case _types.Mode.CACHE_FROM_SANDBOX:
126
127
  {
127
128
  var url = result.url,
128
129
  version = result.version,
@@ -141,7 +142,7 @@ function transpileScript(script, baseURI, opts) {
141
142
  }));
142
143
  return script;
143
144
  }
144
- case 'none':
145
+ case _types.Mode.NONE:
145
146
  default:
146
147
  {
147
148
  if (srcAttribute) {
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","isValidJavaScriptType","type","handleTypes","indexOf","getCredentials","crossOrigin","undefined","preTranspile","script","baseURI","opts","sandbox","moduleResolver","src","entireUrl","getEntireUrl","matchedScript","mode","result","_objectSpread2","default","rawNode","scriptNode","textContent","childNodes","code","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';\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: 'remote'; result: { src: string } }\n | { mode: 'cache'; result: { src: string } & MatchResult }\n | { mode: 'inline'; result: { code: string } }\n | { 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: 'cache',\n result: { src: entireUrl, ...matchedScript },\n };\n }\n\n return {\n mode: 'remote',\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: 'inline',\n result: {\n code,\n },\n };\n }\n }\n }\n\n return { 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 'remote': {\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 'inline': {\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 'cache': {\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 '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","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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"}
@@ -2,11 +2,19 @@
2
2
  * @author Kuitos
3
3
  * @since 2023-08-26
4
4
  */
5
+ import type { Sandbox } from '@qiankunjs/sandbox';
5
6
  import type { BaseLoaderOpts } from '../common';
6
7
  import type { MatchResult } from '../module-resolver';
7
8
  export type BaseTranspilerOpts = BaseLoaderOpts & {
8
9
  moduleResolver?: (url: string) => MatchResult | undefined;
10
+ sandbox?: Sandbox;
9
11
  };
10
12
  export type AssetsTranspilerOpts = BaseTranspilerOpts & {
11
13
  rawNode: Node;
12
14
  };
15
+ export declare enum Mode {
16
+ REMOTE_FROM_SANDBOX = "REMOTE_FROM_SANDBOX",
17
+ CACHE_FROM_SANDBOX = "CACHE_IN_SANDBOX",
18
+ INLINE_FROM_SANDBOX = "INLINE_FROM_SANDBOX",
19
+ NONE = "NONE"
20
+ }
@@ -3,4 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.Mode = void 0;
7
+ /**
8
+ * @author Kuitos
9
+ * @since 2023-08-26
10
+ */
11
+ var Mode = /*#__PURE__*/function (Mode) {
12
+ Mode["REMOTE_FROM_SANDBOX"] = "REMOTE_FROM_SANDBOX";
13
+ Mode["CACHE_FROM_SANDBOX"] = "CACHE_IN_SANDBOX";
14
+ Mode["INLINE_FROM_SANDBOX"] = "INLINE_FROM_SANDBOX";
15
+ Mode["NONE"] = "NONE";
16
+ return Mode;
17
+ }({});
18
+ exports.Mode = Mode;
6
19
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/assets-transpilers/types.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-08-26\n */\nimport type { BaseLoaderOpts } from '../common';\n\nimport type { MatchResult } from '../module-resolver';\n\nexport type BaseTranspilerOpts = BaseLoaderOpts & { moduleResolver?: (url: string) => MatchResult | undefined };\n\nexport type AssetsTranspilerOpts = BaseTranspilerOpts & { rawNode: Node };\n"],"mappings":""}
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_FROM_SANDBOX = 'REMOTE_FROM_SANDBOX',\n CACHE_FROM_SANDBOX = 'CACHE_IN_SANDBOX',\n INLINE_FROM_SANDBOX = 'INLINE_FROM_SANDBOX',\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"}
@@ -1,5 +1,3 @@
1
- import type { Sandbox } from '@qiankunjs/sandbox';
2
1
  export type BaseLoaderOpts = {
3
2
  fetch: typeof window.fetch;
4
- sandbox?: Sandbox;
5
3
  };
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/common.ts"],"sourcesContent":["import type { Sandbox } from '@qiankunjs/sandbox';\n\nexport type BaseLoaderOpts = {\n fetch: typeof window.fetch;\n sandbox?: Sandbox;\n};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["../../src/common.ts"],"sourcesContent":["export type BaseLoaderOpts = {\n fetch: typeof window.fetch;\n};\n"],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare class QiankunError extends Error {
2
+ constructor(message: string);
3
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.QiankunError = void 0;
8
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
11
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
12
+ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
13
+ var QiankunError = /*#__PURE__*/function (_Error) {
14
+ (0, _inherits2.default)(QiankunError, _Error);
15
+ var _super = (0, _createSuper2.default)(QiankunError);
16
+ function QiankunError(message) {
17
+ (0, _classCallCheck2.default)(this, QiankunError);
18
+ return _super.call(this, "[qiankun]: ".concat(message));
19
+ }
20
+ return (0, _createClass2.default)(QiankunError);
21
+ }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
22
+ exports.QiankunError = QiankunError;
23
+ //# sourceMappingURL=QiankunError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["QiankunError","_Error","_inherits2","default","_super","_createSuper2","message","_classCallCheck2","call","concat","_createClass2","_wrapNativeSuper2","Error","exports"],"sources":["../../../src/error/QiankunError.ts"],"sourcesContent":["export class QiankunError extends Error {\n constructor(message: string) {\n super(`[qiankun]: ${message}`);\n }\n}\n"],"mappings":";;;;;;;;;;;;IAAaA,YAAY,0BAAAC,MAAA;EAAA,IAAAC,UAAA,CAAAC,OAAA,EAAAH,YAAA,EAAAC,MAAA;EAAA,IAAAG,MAAA,OAAAC,aAAA,CAAAF,OAAA,EAAAH,YAAA;EACvB,SAAAA,aAAYM,OAAe,EAAE;IAAA,IAAAC,gBAAA,CAAAJ,OAAA,QAAAH,YAAA;IAAA,OAAAI,MAAA,CAAAI,IAAA,qBAAAC,MAAA,CACPH,OAAO;EAC7B;EAAC,WAAAI,aAAA,CAAAP,OAAA,EAAAH,YAAA;AAAA,oBAAAW,iBAAA,CAAAR,OAAA,EAH+BS,KAAK;AAAAC,OAAA,CAAAb,YAAA,GAAAA,YAAA"}
@@ -0,0 +1 @@
1
+ export { QiankunError } from './QiankunError';
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "QiankunError", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _QiankunError.QiankunError;
10
+ }
11
+ });
12
+ var _QiankunError = require("./QiankunError");
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_QiankunError","require"],"sources":["../../../src/error/index.ts"],"sourcesContent":["export { QiankunError } from './QiankunError';\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA"}
@@ -6,3 +6,4 @@ export * from './assets-transpilers';
6
6
  export * from './utils';
7
7
  export * from './module-resolver';
8
8
  export * from './common';
9
+ export * from './error';
package/dist/cjs/index.js CHANGED
@@ -47,4 +47,15 @@ Object.keys(_common).forEach(function (key) {
47
47
  }
48
48
  });
49
49
  });
50
+ var _error = require("./error");
51
+ Object.keys(_error).forEach(function (key) {
52
+ if (key === "default" || key === "__esModule") return;
53
+ if (key in exports && exports[key] === _error[key]) return;
54
+ Object.defineProperty(exports, key, {
55
+ enumerable: true,
56
+ get: function get() {
57
+ return _error[key];
58
+ }
59
+ });
60
+ });
50
61
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_assetsTranspilers","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_utils","_moduleResolver","_common"],"sources":["../../src/index.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-05-06\n */\nexport * from './assets-transpilers';\nexport * from './utils';\nexport * from './module-resolver';\nexport * from './common';\n"],"mappings":";;;;;AAIA,IAAAA,kBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,kBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,kBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAT,kBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,MAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,MAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,MAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAC,MAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,eAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,eAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,eAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAE,eAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,OAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,OAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,OAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAG,OAAA,CAAAP,GAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"names":["_assetsTranspilers","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_utils","_moduleResolver","_common","_error"],"sources":["../../src/index.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-05-06\n */\nexport * from './assets-transpilers';\nexport * from './utils';\nexport * from './module-resolver';\nexport * from './common';\nexport * from './error';\n"],"mappings":";;;;;AAIA,IAAAA,kBAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,kBAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,kBAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAT,kBAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,MAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,MAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,MAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAC,MAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,eAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,eAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,eAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAE,eAAA,CAAAN,GAAA;IAAA;EAAA;AAAA;AACA,IAAAO,OAAA,GAAAX,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAS,OAAA,EAAAR,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAO,OAAA,CAAAP,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAG,OAAA,CAAAP,GAAA;IAAA;EAAA;AAAA;AACA,IAAAQ,MAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,MAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,MAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAI,MAAA,CAAAR,GAAA;IAAA;EAAA;AAAA"}
@@ -6,6 +6,7 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
6
6
 
7
7
  import { getEntireUrl } from "../utils";
8
8
  import { preTranspile as preTranspileScript } from "./script";
9
+ import { Mode } from "./types";
9
10
  var preTranspile = function preTranspile(link, baseURI, opts) {
10
11
  var sandbox = opts.sandbox,
11
12
  moduleResolver = opts.moduleResolver;
@@ -16,7 +17,7 @@ var preTranspile = function preTranspile(link, baseURI, opts) {
16
17
  var matchedAssets = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(linkHref);
17
18
  if (matchedAssets) {
18
19
  return {
19
- mode: 'cache',
20
+ mode: Mode.CACHE_FROM_SANDBOX,
20
21
  result: _objectSpread({
21
22
  src: linkHref
22
23
  }, matchedAssets)
@@ -25,7 +26,7 @@ var preTranspile = function preTranspile(link, baseURI, opts) {
25
26
  }
26
27
  }
27
28
  return {
28
- mode: 'none'
29
+ mode: Mode.NONE
29
30
  };
30
31
  };
31
32
 
@@ -56,16 +57,22 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
56
57
  }, baseURI, opts),
57
58
  mode = _preTranspileScript.mode,
58
59
  result = _preTranspileScript.result;
59
- if (mode === 'remote') {
60
- link.as = 'fetch';
61
- }
62
- if (mode === 'cache') {
63
- var url = result.url;
64
- var objectURL = URL.createObjectURL(new Blob(["// ".concat(href, " is reusing the execution result of ").concat(url)], {
65
- type: 'text/javascript'
66
- }));
67
- link.href = objectURL;
68
- revokeAfterLoaded(objectURL, link);
60
+ switch (mode) {
61
+ case Mode.REMOTE_FROM_SANDBOX:
62
+ {
63
+ link.as = 'fetch';
64
+ break;
65
+ }
66
+ case Mode.CACHE_FROM_SANDBOX:
67
+ {
68
+ var url = result.url;
69
+ var objectURL = URL.createObjectURL(new Blob(["// ".concat(href, " is reusing the execution result of ").concat(url)], {
70
+ type: 'text/javascript'
71
+ }));
72
+ link.href = objectURL;
73
+ revokeAfterLoaded(objectURL, link);
74
+ break;
75
+ }
69
76
  }
70
77
  break;
71
78
  }
@@ -76,13 +83,17 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
76
83
  }, baseURI, opts),
77
84
  _mode = _preTranspile.mode,
78
85
  _result = _preTranspile.result;
79
- if (_mode === 'cache') {
80
- var _url = _result.url;
81
- var _objectURL = URL.createObjectURL(new Blob(["// ".concat(href, " is reusing the execution result of ").concat(_url)], {
82
- type: 'text/css'
83
- }));
84
- link.href = _objectURL;
85
- revokeAfterLoaded(_objectURL, link);
86
+ switch (_mode) {
87
+ case Mode.CACHE_FROM_SANDBOX:
88
+ {
89
+ var _url = _result.url;
90
+ var _objectURL = URL.createObjectURL(new Blob(["// ".concat(href, " is reusing the execution result of ").concat(_url)], {
91
+ type: 'text/css'
92
+ }));
93
+ link.href = _objectURL;
94
+ revokeAfterLoaded(_objectURL, link);
95
+ break;
96
+ }
86
97
  }
87
98
  break;
88
99
  }
@@ -98,7 +109,7 @@ export default function transpileLink(link, baseURI, opts) {
98
109
  mode = _preTranspile2.mode,
99
110
  result = _preTranspile2.result;
100
111
  switch (mode) {
101
- case 'cache':
112
+ case Mode.CACHE_FROM_SANDBOX:
102
113
  {
103
114
  var src = result.src,
104
115
  version = result.version,
@@ -110,7 +121,7 @@ export default function transpileLink(link, baseURI, opts) {
110
121
  }));
111
122
  return link;
112
123
  }
113
- case 'none':
124
+ case Mode.NONE:
114
125
  default:
115
126
  {
116
127
  if (hrefAttribute) {
@@ -1 +1 @@
1
- {"version":3,"names":["getEntireUrl","preTranspile","preTranspileScript","link","baseURI","opts","sandbox","moduleResolver","href","linkHref","matchedAssets","mode","result","_objectSpread","src","postProcessPreloadLink","as","revokeAfterLoaded","objectURL","revoke","URL","revokeObjectURL","addEventListener","once","_preTranspileScript","url","createObjectURL","Blob","concat","type","_preTranspile","transpileLink","hrefAttribute","getAttribute","_preTranspile2","undefined","version","dataset","rel"],"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';\n\ntype PreTranspileResult = { mode: 'cache'; result: { src: string } & MatchResult } | { mode: 'none'; result?: never };\nconst preTranspile = (\n link: Partial<Pick<HTMLLinkElement, 'href'>>,\n baseURI: string,\n opts: BaseTranspilerOpts,\n): PreTranspileResult => {\n const { sandbox, moduleResolver } = opts;\n const { href } = link;\n\n if (sandbox) {\n if (href) {\n const linkHref = getEntireUrl(href, baseURI);\n\n const matchedAssets = moduleResolver?.(linkHref);\n if (matchedAssets) {\n return {\n mode: 'cache',\n result: { src: linkHref, ...matchedAssets },\n };\n }\n }\n }\n\n return {\n mode: 'none',\n };\n};\n\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 */\nconst postProcessPreloadLink = (link: HTMLLinkElement, baseURI: string, opts: AssetsTranspilerOpts): void => {\n const { as, href } = link;\n\n const revokeAfterLoaded = (objectURL: string, link: HTMLLinkElement) => {\n const revoke = () => URL.revokeObjectURL(objectURL);\n link.addEventListener('load', revoke, { once: true });\n link.addEventListener('error', revoke, { once: true });\n };\n\n switch (as) {\n case 'script': {\n const { mode, result } = preTranspileScript({ src: href }, baseURI, opts);\n\n if (mode === 'remote') {\n link.as = 'fetch';\n }\n\n if (mode === 'cache') {\n const { url } = result;\n const objectURL = URL.createObjectURL(\n new Blob([`// ${href} is reusing the execution result of ${url}`], {\n type: 'text/javascript',\n }),\n );\n link.href = objectURL;\n revokeAfterLoaded(objectURL, link);\n }\n\n break;\n }\n\n case 'style': {\n const { mode, result } = preTranspile({ href }, baseURI, opts);\n\n if (mode === 'cache') {\n const { url } = result;\n const objectURL = URL.createObjectURL(\n new Blob([`// ${href} is reusing the execution result of ${url}`], {\n type: 'text/css',\n }),\n );\n link.href = objectURL;\n revokeAfterLoaded(objectURL, link);\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 } = preTranspile(\n {\n href: hrefAttribute || undefined,\n },\n baseURI,\n opts,\n );\n\n switch (mode) {\n case 'cache': {\n const { src, version, url } = result;\n link.dataset.href = src;\n link.dataset.version = version;\n link.href = URL.createObjectURL(\n new Blob([`// ${src} is reusing the execution result of ${url}`], {\n type: 'text/css',\n }),\n );\n\n return link;\n }\n\n case '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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"}
1
+ {"version":3,"names":["getEntireUrl","preTranspile","preTranspileScript","Mode","link","baseURI","opts","sandbox","moduleResolver","href","linkHref","matchedAssets","mode","CACHE_FROM_SANDBOX","result","_objectSpread","src","NONE","postProcessPreloadLink","as","revokeAfterLoaded","objectURL","revoke","URL","revokeObjectURL","addEventListener","once","_preTranspileScript","REMOTE_FROM_SANDBOX","url","createObjectURL","Blob","concat","type","_preTranspile","transpileLink","hrefAttribute","getAttribute","_preTranspile2","undefined","version","dataset","rel"],"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';\n\ntype PreTranspileResult =\n | { mode: Mode.CACHE_FROM_SANDBOX; result: { src: string } & MatchResult }\n | { mode: Mode.NONE; result?: never };\nconst preTranspile = (\n link: Partial<Pick<HTMLLinkElement, 'href'>>,\n baseURI: string,\n opts: BaseTranspilerOpts,\n): PreTranspileResult => {\n const { sandbox, moduleResolver } = opts;\n const { href } = link;\n\n if (sandbox) {\n if (href) {\n const linkHref = getEntireUrl(href, baseURI);\n\n const matchedAssets = moduleResolver?.(linkHref);\n if (matchedAssets) {\n return {\n mode: Mode.CACHE_FROM_SANDBOX,\n result: { src: linkHref, ...matchedAssets },\n };\n }\n }\n }\n\n return {\n mode: Mode.NONE,\n };\n};\n\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 */\nconst postProcessPreloadLink = (link: HTMLLinkElement, baseURI: string, opts: AssetsTranspilerOpts): void => {\n const { as, href } = link;\n\n const revokeAfterLoaded = (objectURL: string, link: HTMLLinkElement) => {\n const revoke = () => URL.revokeObjectURL(objectURL);\n link.addEventListener('load', revoke, { once: true });\n link.addEventListener('error', revoke, { once: true });\n };\n\n switch (as) {\n case 'script': {\n const { mode, result } = preTranspileScript({ src: href }, baseURI, opts);\n\n switch (mode) {\n case Mode.REMOTE_FROM_SANDBOX: {\n link.as = 'fetch';\n break;\n }\n\n case Mode.CACHE_FROM_SANDBOX: {\n const { url } = result;\n const objectURL = URL.createObjectURL(\n new Blob([`// ${href} is reusing the execution result of ${url}`], {\n type: 'text/javascript',\n }),\n );\n link.href = objectURL;\n revokeAfterLoaded(objectURL, link);\n\n break;\n }\n }\n\n break;\n }\n\n case 'style': {\n const { mode, result } = preTranspile({ href }, baseURI, opts);\n\n switch (mode) {\n case Mode.CACHE_FROM_SANDBOX: {\n const { url } = result;\n const objectURL = URL.createObjectURL(\n new Blob([`// ${href} is reusing the execution result of ${url}`], {\n type: 'text/css',\n }),\n );\n link.href = objectURL;\n revokeAfterLoaded(objectURL, link);\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 } = preTranspile(\n {\n href: hrefAttribute || undefined,\n },\n baseURI,\n opts,\n );\n\n switch (mode) {\n case Mode.CACHE_FROM_SANDBOX: {\n const { src, version, url } = result;\n link.dataset.href = src;\n link.dataset.version = version;\n link.href = URL.createObjectURL(\n new Blob([`// ${src} is reusing the execution result of ${url}`], {\n type: 'text/css',\n }),\n );\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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"}