@qiankunjs/shared 0.0.1-rc.5 → 0.0.1-rc.7

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 (59) hide show
  1. package/dist/cjs/assets-transpilers/link.js +15 -13
  2. package/dist/cjs/assets-transpilers/link.js.map +1 -1
  3. package/dist/cjs/assets-transpilers/script.d.ts +2 -2
  4. package/dist/cjs/assets-transpilers/script.js +62 -37
  5. package/dist/cjs/assets-transpilers/script.js.map +1 -1
  6. package/dist/cjs/assets-transpilers/types.d.ts +3 -0
  7. package/dist/cjs/assets-transpilers/types.js +2 -0
  8. package/dist/cjs/assets-transpilers/types.js.map +1 -1
  9. package/dist/cjs/fetch-utils/miniLruCache.d.ts +8 -0
  10. package/dist/cjs/fetch-utils/miniLruCache.js +49 -0
  11. package/dist/cjs/fetch-utils/miniLruCache.js.map +1 -0
  12. package/dist/cjs/fetch-utils/wrapFetchWithCache.d.ts +3 -0
  13. package/dist/cjs/fetch-utils/wrapFetchWithCache.js +74 -0
  14. package/dist/cjs/fetch-utils/wrapFetchWithCache.js.map +1 -0
  15. package/dist/cjs/index.d.ts +2 -1
  16. package/dist/cjs/index.js +15 -4
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/reporter/QiankunError.js.map +1 -0
  19. package/dist/{esm/error → cjs/reporter}/index.d.ts +1 -0
  20. package/dist/cjs/reporter/index.js +28 -0
  21. package/dist/cjs/reporter/index.js.map +1 -0
  22. package/dist/cjs/reporter/logger.d.ts +1 -0
  23. package/dist/cjs/reporter/logger.js +14 -0
  24. package/dist/cjs/reporter/logger.js.map +1 -0
  25. package/dist/esm/assets-transpilers/link.js +15 -13
  26. package/dist/esm/assets-transpilers/link.js.map +1 -1
  27. package/dist/esm/assets-transpilers/script.d.ts +2 -2
  28. package/dist/esm/assets-transpilers/script.js +62 -37
  29. package/dist/esm/assets-transpilers/script.js.map +1 -1
  30. package/dist/esm/assets-transpilers/types.d.ts +3 -0
  31. package/dist/esm/assets-transpilers/types.js +2 -0
  32. package/dist/esm/assets-transpilers/types.js.map +1 -1
  33. package/dist/esm/fetch-utils/miniLruCache.d.ts +8 -0
  34. package/dist/esm/fetch-utils/miniLruCache.js +42 -0
  35. package/dist/esm/fetch-utils/miniLruCache.js.map +1 -0
  36. package/dist/esm/fetch-utils/wrapFetchWithCache.d.ts +3 -0
  37. package/dist/esm/fetch-utils/wrapFetchWithCache.js +66 -0
  38. package/dist/esm/fetch-utils/wrapFetchWithCache.js.map +1 -0
  39. package/dist/esm/index.d.ts +2 -1
  40. package/dist/esm/index.js +2 -1
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/reporter/QiankunError.js.map +1 -0
  43. package/dist/{cjs/error → esm/reporter}/index.d.ts +1 -0
  44. package/dist/esm/reporter/index.js +3 -0
  45. package/dist/esm/reporter/index.js.map +1 -0
  46. package/dist/esm/reporter/logger.d.ts +1 -0
  47. package/dist/esm/reporter/logger.js +8 -0
  48. package/dist/esm/reporter/logger.js.map +1 -0
  49. package/package.json +2 -2
  50. package/dist/cjs/error/QiankunError.js.map +0 -1
  51. package/dist/cjs/error/index.js +0 -13
  52. package/dist/cjs/error/index.js.map +0 -1
  53. package/dist/esm/error/QiankunError.js.map +0 -1
  54. package/dist/esm/error/index.js +0 -2
  55. package/dist/esm/error/index.js.map +0 -1
  56. /package/dist/cjs/{error → reporter}/QiankunError.d.ts +0 -0
  57. /package/dist/cjs/{error → reporter}/QiankunError.js +0 -0
  58. /package/dist/esm/{error → reporter}/QiankunError.d.ts +0 -0
  59. /package/dist/esm/{error → reporter}/QiankunError.js +0 -0
@@ -20,19 +20,18 @@ var preTranspileStyleSheetLink = function preTranspileStyleSheetLink(link, baseU
20
20
  moduleResolver = opts.moduleResolver;
21
21
  var href = link.href,
22
22
  rel = link.rel;
23
- if (sandbox) {
24
- // filter preload links
25
- if (href && rel === 'stylesheet') {
26
- var linkHref = (0, _utils.getEntireUrl)(href, baseURI);
27
- var matchedAssets = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(linkHref);
28
- if (matchedAssets) {
29
- return {
30
- mode: _types.Mode.REUSED_DEP_IN_SANDBOX,
31
- result: (0, _objectSpread2.default)({
32
- src: linkHref
33
- }, matchedAssets)
34
- };
35
- }
23
+
24
+ // filter preload links
25
+ if (href && rel === 'stylesheet') {
26
+ var linkHref = (0, _utils.getEntireUrl)(href, baseURI);
27
+ var matchedAssets = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(linkHref);
28
+ if (matchedAssets) {
29
+ return {
30
+ mode: sandbox ? _types.Mode.REUSED_DEP_IN_SANDBOX : _types.Mode.REUSED_DEP,
31
+ result: (0, _objectSpread2.default)({
32
+ src: linkHref
33
+ }, matchedAssets)
34
+ };
36
35
  }
37
36
  }
38
37
  return {
@@ -62,6 +61,7 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
62
61
  break;
63
62
  }
64
63
  case _types.Mode.REUSED_DEP_IN_SANDBOX:
64
+ case _types.Mode.REUSED_DEP:
65
65
  {
66
66
  var url = result.url;
67
67
  link.href = (0, _utils2.createReusingObjectUrl)(href, url, 'text/javascript');
@@ -80,6 +80,7 @@ var postProcessPreloadLink = function postProcessPreloadLink(link, baseURI, opts
80
80
  _result = _preTranspileStyleShe.result;
81
81
  switch (_mode) {
82
82
  case _types.Mode.REUSED_DEP_IN_SANDBOX:
83
+ case _types.Mode.REUSED_DEP:
83
84
  {
84
85
  var _url = _result.url;
85
86
  link.href = (0, _utils2.createReusingObjectUrl)(href, _url, 'text/css');
@@ -102,6 +103,7 @@ function transpileLink(link, baseURI, opts) {
102
103
  result = _preTranspileStyleShe2.result;
103
104
  switch (mode) {
104
105
  case _types.Mode.REUSED_DEP_IN_SANDBOX:
106
+ case _types.Mode.REUSED_DEP:
105
107
  {
106
108
  var src = result.src,
107
109
  version = result.version,
@@ -1 +1 @@
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":";;;;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AATA;AACA;AACA;AACA;;AAWA,IAAMI,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAC9BC,IAAoD,EACpDC,OAAe,EACfC,IAAwB,EACD;EACvB,IAAQC,OAAO,GAAqBD,IAAI,CAAhCC,OAAO;IAAEC,cAAc,GAAKF,IAAI,CAAvBE,cAAc;EAC/B,IAAQC,IAAI,GAAUL,IAAI,CAAlBK,IAAI;IAAEC,GAAG,GAAKN,IAAI,CAAZM,GAAG;EAEjB,IAAIH,OAAO,EAAE;IACX;IACA,IAAIE,IAAI,IAAIC,GAAG,KAAK,YAAY,EAAE;MAChC,IAAMC,QAAQ,GAAG,IAAAC,mBAAY,EAACH,IAAI,EAAEJ,OAAO,CAAC;MAE5C,IAAMQ,aAAa,GAAGL,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGG,QAAQ,CAAC;MAChD,IAAIE,aAAa,EAAE;QACjB,OAAO;UACLC,IAAI,EAAEC,WAAI,CAACC,qBAAqB;UAChCC,MAAM,MAAAC,cAAA,CAAAC,OAAA;YAAIC,GAAG,EAAET;UAAQ,GAAKE,aAAa;QAC3C,CAAC;MACH;IACF;EACF;EAEA,OAAO;IACLC,IAAI,EAAEC,WAAI,CAACM;EACb,CAAC;AACH,CAAC;AAED,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAIlB,IAAqB,EAAEC,OAAe,EAAEC,IAA0B,EAAW;EAC3G,IAAQiB,EAAE,GAAWnB,IAAI,CAAjBmB,EAAE;IAAEd,IAAI,GAAKL,IAAI,CAAbK,IAAI;EAChB,QAAQc,EAAE;IACR,KAAK,QAAQ;MAAE;QACb,IAAAC,mBAAA,GAAyB,IAAAC,oBAAkB,EAAC;YAAEL,GAAG,EAAEX;UAAK,CAAC,EAAEJ,OAAO,EAAEC,IAAI,CAAC;UAAjEQ,IAAI,GAAAU,mBAAA,CAAJV,IAAI;UAAEG,MAAM,GAAAO,mBAAA,CAANP,MAAM;QAEpB,QAAQH,IAAI;UACV;AACR;AACA;AACA;AACA;UACQ,KAAKC,WAAI,CAACW,wBAAwB;YAAE;cAClCtB,IAAI,CAACmB,EAAE,GAAG,OAAO;cACjB;YACF;UAEA,KAAKR,WAAI,CAACC,qBAAqB;YAAE;cAC/B,IAAQW,GAAG,GAAKV,MAAM,CAAdU,GAAG;cACXvB,IAAI,CAACK,IAAI,GAAG,IAAAmB,8BAAsB,EAACnB,IAAI,EAAEkB,GAAG,EAAE,iBAAiB,CAAC;cAEhE;YACF;QACF;QAEA;MACF;IAEA,KAAK,OAAO;MAAE;QACZ,IAAAE,qBAAA,GAAyB1B,0BAA0B,CAAC;YAAEM,IAAI,EAAJA,IAAI;YAAEC,GAAG,EAAE;UAAa,CAAC,EAAEL,OAAO,EAAEC,IAAI,CAAC;UAAvFQ,KAAI,GAAAe,qBAAA,CAAJf,IAAI;UAAEG,OAAM,GAAAY,qBAAA,CAANZ,MAAM;QAEpB,QAAQH,KAAI;UACV,KAAKC,WAAI,CAACC,qBAAqB;YAAE;cAC/B,IAAQW,IAAG,GAAKV,OAAM,CAAdU,GAAG;cACXvB,IAAI,CAACK,IAAI,GAAG,IAAAmB,8BAAsB,EAACnB,IAAI,EAAEkB,IAAG,EAAE,UAAU,CAAC;cACzD;YACF;QACF;QAEA;MACF;IAEA;MACE;EACJ;AACF,CAAC;AAEc,SAASG,aAAaA,CACnC1B,IAAqB,EACrBC,OAAe,EACfC,IAA0B,EACT;EACjB,IAAMyB,aAAa,GAAG3B,IAAI,CAAC4B,YAAY,CAAC,MAAM,CAAC;EAC/C,IAAAC,sBAAA,GAAyB9B,0BAA0B,CACjD;MACEM,IAAI,EAAEsB,aAAa,IAAIG,SAAS;MAChCxB,GAAG,EAAEN,IAAI,CAACM;IACZ,CAAC,EACDL,OAAO,EACPC,IACF,CAAC;IAPOQ,IAAI,GAAAmB,sBAAA,CAAJnB,IAAI;IAAEG,MAAM,GAAAgB,sBAAA,CAANhB,MAAM;EASpB,QAAQH,IAAI;IACV,KAAKC,WAAI,CAACC,qBAAqB;MAAE;QAC/B,IAAQI,GAAG,GAAmBH,MAAM,CAA5BG,GAAG;UAAEe,OAAO,GAAUlB,MAAM,CAAvBkB,OAAO;UAAER,GAAG,GAAKV,MAAM,CAAdU,GAAG;QACzBvB,IAAI,CAACgC,OAAO,CAAC3B,IAAI,GAAGW,GAAG;QACvBhB,IAAI,CAACgC,OAAO,CAACD,OAAO,GAAGA,OAAO;QAC9B/B,IAAI,CAACK,IAAI,GAAG,IAAAmB,8BAAsB,EAACR,GAAG,EAAEO,GAAG,EAAE,UAAU,CAAC;QAExD,OAAOvB,IAAI;MACb;IAEA,KAAKW,WAAI,CAACM,IAAI;IACd;MAAS;QACP,IAAIU,aAAa,EAAE;UACjB3B,IAAI,CAACK,IAAI,GAAG,IAAAG,mBAAY,EAACmB,aAAa,EAAE1B,OAAO,CAAC;UAEhD,IAAID,IAAI,CAACM,GAAG,KAAK,SAAS,EAAE;YAC1BY,sBAAsB,CAAClB,IAAI,EAAEC,OAAO,EAAEC,IAAI,CAAC;UAC7C;UAEA,OAAOF,IAAI;QACb;QAEA,OAAOA,IAAI;MACb;EACF;AACF"}
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","REUSED_DEP","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 | Mode.REUSED_DEP; result: { src: string } & MatchResult }\n | { mode: Mode.NONE; result?: never };\nconst preTranspileStyleSheetLink = (\n link: Partial<Pick<HTMLLinkElement, 'href' | 'rel'>>,\n baseURI: string,\n opts: BaseTranspilerOpts,\n): PreTranspileResult => {\n const { sandbox, moduleResolver } = opts;\n const { href, rel } = link;\n\n // filter preload links\n if (href && rel === 'stylesheet') {\n const linkHref = getEntireUrl(href, baseURI);\n\n const matchedAssets = moduleResolver?.(linkHref);\n if (matchedAssets) {\n return {\n mode: sandbox ? Mode.REUSED_DEP_IN_SANDBOX : Mode.REUSED_DEP,\n result: { src: linkHref, ...matchedAssets },\n };\n }\n }\n\n return {\n mode: Mode.NONE,\n };\n};\n\nconst postProcessPreloadLink = (link: HTMLLinkElement, baseURI: string, opts: AssetsTranspilerOpts): void => {\n const { as, href } = link;\n switch (as) {\n case 'script': {\n const { mode, result } = preTranspileScript({ src: href }, baseURI, opts);\n\n switch (mode) {\n /**\n * While the assets are transpiling in sandbox, it means they will be evaluated with manual fetching,\n * thus we need to set the attribute `as` to fetch instead of script or style to avoid preload cache missing.\n * see https://stackoverflow.com/questions/52635660/can-link-rel-preload-be-made-to-work-with-fetch/63814972#63814972\n */\n case Mode.REMOTE_ASSETS_IN_SANDBOX: {\n link.as = 'fetch';\n break;\n }\n\n case Mode.REUSED_DEP_IN_SANDBOX:\n case Mode.REUSED_DEP: {\n const { url } = result;\n link.href = createReusingObjectUrl(href, url, 'text/javascript');\n\n break;\n }\n }\n\n break;\n }\n\n case 'style': {\n const { mode, result } = preTranspileStyleSheetLink({ href, rel: 'stylesheet' }, baseURI, opts);\n\n switch (mode) {\n case Mode.REUSED_DEP_IN_SANDBOX:\n case Mode.REUSED_DEP: {\n const { url } = result;\n link.href = createReusingObjectUrl(href, url, 'text/css');\n break;\n }\n }\n\n break;\n }\n\n default:\n break;\n }\n};\n\nexport default function transpileLink(\n link: HTMLLinkElement,\n baseURI: string,\n opts: AssetsTranspilerOpts,\n): HTMLLinkElement {\n const hrefAttribute = link.getAttribute('href');\n const { mode, result } = preTranspileStyleSheetLink(\n {\n href: hrefAttribute || undefined,\n rel: link.rel,\n },\n baseURI,\n opts,\n );\n\n switch (mode) {\n case Mode.REUSED_DEP_IN_SANDBOX:\n case Mode.REUSED_DEP: {\n const { src, version, url } = result;\n link.dataset.href = src;\n link.dataset.version = version;\n link.href = createReusingObjectUrl(src, url, 'text/css');\n\n return link;\n }\n\n case Mode.NONE:\n default: {\n if (hrefAttribute) {\n link.href = getEntireUrl(hrefAttribute, baseURI);\n\n if (link.rel === 'preload') {\n postProcessPreloadLink(link, baseURI, opts);\n }\n\n return link;\n }\n\n return link;\n }\n }\n}\n"],"mappings":"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"}
@@ -6,12 +6,12 @@ import type { MatchResult } from '../module-resolver';
6
6
  import type { AssetsTranspilerOpts, ScriptTranspilerOpts } from './types';
7
7
  import { Mode } from './types';
8
8
  type PreTranspileResult = {
9
- mode: Mode.REMOTE_ASSETS_IN_SANDBOX;
9
+ mode: Mode.REMOTE_ASSETS_IN_SANDBOX | Mode.REMOTE_ASSETS;
10
10
  result: {
11
11
  src: string;
12
12
  };
13
13
  } | {
14
- mode: Mode.REUSED_DEP_IN_SANDBOX;
14
+ mode: Mode.REUSED_DEP_IN_SANDBOX | Mode.REUSED_DEP;
15
15
  result: {
16
16
  src: string;
17
17
  } & MatchResult;
@@ -32,37 +32,35 @@ var preTranspile = exports.preTranspile = function preTranspile(script, baseURI,
32
32
  moduleResolver = opts.moduleResolver;
33
33
  var src = script.src,
34
34
  type = script.type;
35
- if (sandbox) {
36
- if (src) {
37
- var entireUrl = (0, _utils.getEntireUrl)(src, baseURI);
38
- var matchedScript = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(entireUrl);
39
- if (matchedScript) {
40
- return {
41
- mode: _types.Mode.REUSED_DEP_IN_SANDBOX,
42
- result: (0, _objectSpread2.default)({
43
- src: entireUrl
44
- }, matchedScript)
45
- };
46
- }
35
+ if (src) {
36
+ var entireUrl = (0, _utils.getEntireUrl)(src, baseURI);
37
+ var matchedScript = moduleResolver === null || moduleResolver === void 0 ? void 0 : moduleResolver(entireUrl);
38
+ if (matchedScript) {
47
39
  return {
48
- mode: _types.Mode.REMOTE_ASSETS_IN_SANDBOX,
49
- result: {
40
+ mode: sandbox ? _types.Mode.REUSED_DEP_IN_SANDBOX : _types.Mode.REUSED_DEP,
41
+ result: (0, _objectSpread2.default)({
50
42
  src: entireUrl
51
- }
43
+ }, matchedScript)
52
44
  };
53
45
  }
54
- if ((0, _utils2.isValidJavaScriptType)(type)) {
55
- var rawNode = opts.rawNode;
56
- var scriptNode = script.textContent ? script : rawNode.childNodes[0];
57
- var code = scriptNode.textContent;
58
- if (code) {
59
- return {
60
- mode: _types.Mode.INLINE_CODE_IN_SANDBOX,
61
- result: {
62
- code: code
63
- }
64
- };
46
+ return {
47
+ mode: sandbox ? _types.Mode.REMOTE_ASSETS_IN_SANDBOX : _types.Mode.REMOTE_ASSETS,
48
+ result: {
49
+ src: entireUrl
65
50
  }
51
+ };
52
+ }
53
+ if ((0, _utils2.isValidJavaScriptType)(type) && sandbox) {
54
+ var rawNode = opts.rawNode;
55
+ var scriptNode = script.textContent ? script : rawNode.childNodes[0];
56
+ var code = scriptNode.textContent;
57
+ if (code) {
58
+ return {
59
+ mode: _types.Mode.INLINE_CODE_IN_SANDBOX,
60
+ result: {
61
+ code: code
62
+ }
63
+ };
66
64
  }
67
65
  }
68
66
  return {
@@ -107,31 +105,47 @@ function transpileScript(script, baseURI, opts) {
107
105
  return res.text();
108
106
  }).then( /*#__PURE__*/function () {
109
107
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(code) {
110
- var prevScriptTranspiledDeferred, codeFactory;
108
+ var prevScriptTranspiledDeferred, beforeScriptExecuteEvent, beforeExecutedListenerScript, codeFactory;
111
109
  return _regenerator.default.wrap(function _callee$(_context) {
112
110
  while (1) switch (_context.prev = _context.next) {
113
111
  case 0:
114
- prevScriptTranspiledDeferred = opts.prevScriptTranspiledDeferred;
115
- codeFactory = sandbox.makeEvaluateFactory(code, src);
112
+ prevScriptTranspiledDeferred = opts.prevScriptTranspiledDeferred; // add preprocess code to dispatch a CustomEvent before the script is executed
113
+ beforeScriptExecuteEvent = 'q:bse';
114
+ beforeExecutedListenerScript = ";(function(){var s=document.currentScript;var e=new CustomEvent('".concat(beforeScriptExecuteEvent, "',{detail:{s:s}});window.dispatchEvent(e);})();");
115
+ codeFactory = beforeExecutedListenerScript + sandbox.makeEvaluateFactory(code, src);
116
116
  if (!syncMode) {
117
- _context.next = 7;
117
+ _context.next = 9;
118
118
  break;
119
119
  }
120
120
  if (!(prevScriptTranspiledDeferred && !prevScriptTranspiledDeferred.isSettled())) {
121
- _context.next = 6;
121
+ _context.next = 8;
122
122
  break;
123
123
  }
124
- _context.next = 6;
124
+ _context.next = 8;
125
125
  return (0, _utils.waitUntilSettled)(prevScriptTranspiledDeferred.promise);
126
- case 6:
126
+ case 8:
127
127
  // HTMLScriptElement default fetchPriority is 'auto', we should set it to 'high' to make it execute earlier while it's not async script
128
128
  script.fetchPriority = 'high';
129
- case 7:
129
+ case 9:
130
+ // change the script src to a blob url to make it execute in the sandbox
130
131
  script.src = URL.createObjectURL(new Blob([codeFactory], {
131
132
  type: 'text/javascript'
132
133
  }));
134
+ window.addEventListener(beforeScriptExecuteEvent, function listener(evt) {
135
+ var _ref2 = evt.detail,
136
+ s = _ref2.s;
137
+ if (s === script) {
138
+ URL.revokeObjectURL(s.src);
139
+ // change the script src to the original src while the script is executing
140
+ // thus the script behavior can be more consistent with the native browser logic
141
+ s.src = src;
142
+ s.dataset.consumed = 'true';
143
+ delete s.dataset.src;
144
+ window.removeEventListener(beforeScriptExecuteEvent, listener);
145
+ }
146
+ });
133
147
  scriptTranspiledDeferred === null || scriptTranspiledDeferred === void 0 || scriptTranspiledDeferred.resolve();
134
- case 9:
148
+ case 12:
135
149
  case "end":
136
150
  return _context.stop();
137
151
  }
@@ -158,6 +172,7 @@ function transpileScript(script, baseURI, opts) {
158
172
  return script;
159
173
  }
160
174
  case _types.Mode.REUSED_DEP_IN_SANDBOX:
175
+ case _types.Mode.REUSED_DEP:
161
176
  {
162
177
  var url = result.url,
163
178
  version = result.version,
@@ -172,14 +187,24 @@ function transpileScript(script, baseURI, opts) {
172
187
 
173
188
  // When the script hits the dependency reuse logic, the current script is not executed, and an empty script is returned directly
174
189
  script.src = (0, _utils2.createReusingObjectUrl)(_src, url, 'text/javascript');
190
+ var onScriptComplete = function onScriptComplete(prevListener, event) {
191
+ script.onload = script.onerror = null;
192
+ script.src = _src;
193
+ script.dataset.consumed = 'true';
194
+ script.dataset.src = url;
195
+ prevListener === null || prevListener === void 0 || prevListener.call(script, event);
196
+ };
197
+ script.onload = onScriptComplete.bind(null, script.onload);
198
+ script.onerror = onScriptComplete.bind(null, script.onerror);
175
199
  scriptTranspiledDeferred === null || scriptTranspiledDeferred === void 0 || scriptTranspiledDeferred.resolve();
176
200
  return script;
177
201
  }
202
+ case _types.Mode.REMOTE_ASSETS:
178
203
  case _types.Mode.NONE:
179
204
  default:
180
205
  {
181
- if (srcAttribute) {
182
- script.src = (0, _utils.getEntireUrl)(srcAttribute, baseURI);
206
+ if (result !== null && result !== void 0 && result.src) {
207
+ script.src = result.src;
183
208
  }
184
209
  scriptTranspiledDeferred === null || scriptTranspiledDeferred === void 0 || scriptTranspiledDeferred.resolve();
185
210
  return script;
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","_types","_utils2","getCredentials","crossOrigin","undefined","preTranspile","exports","script","baseURI","opts","sandbox","moduleResolver","src","type","entireUrl","getEntireUrl","matchedScript","mode","Mode","REUSED_DEP_IN_SANDBOX","result","_objectSpread2","default","REMOTE_ASSETS_IN_SANDBOX","isValidJavaScriptType","rawNode","scriptNode","textContent","childNodes","code","INLINE_CODE_IN_SANDBOX","NONE","transpileScript","srcAttribute","getAttribute","scriptTranspiledDeferred","removeAttribute","_preTranspile","fetch","dataset","syncMode","hasAttribute","priority","credentials","then","res","text","_ref","_asyncToGenerator2","_regenerator","mark","_callee","prevScriptTranspiledDeferred","codeFactory","wrap","_callee$","_context","prev","next","makeEvaluateFactory","isSettled","waitUntilSettled","promise","fetchPriority","URL","createObjectURL","Blob","resolve","stop","_x","apply","arguments","catch","e","reject","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, waitUntilSettled } from '../utils';\nimport type { AssetsTranspilerOpts, ScriptTranspilerOpts } from './types';\nimport { Mode } from './types';\nimport { createReusingObjectUrl, isValidJavaScriptType } from './utils';\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: ScriptTranspilerOpts,\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, scriptTranspiledDeferred } = opts;\n\n // To prevent webpack from skipping reload logic and causing the js not to re-execute when a micro app is loaded multiple times, the data-webpack attribute of the script must be removed.\n // see https://github.com/webpack/webpack/blob/1f13ff9fe587e094df59d660b4611b1bd19aed4c/lib/runtime/LoadScriptRuntimeModule.js#L131-L136\n // FIXME We should determine whether the current micro application is being loaded for the second time. If not, this removal should not be performed.\n script.removeAttribute('data-webpack');\n\n try {\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 { fetch } = opts;\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(async (code) => {\n const { prevScriptTranspiledDeferred } = opts;\n const codeFactory = sandbox!.makeEvaluateFactory(code, src);\n\n if (syncMode) {\n // if it's a sync script and there is a previous sync script, we should wait it to finish fetching\n if (prevScriptTranspiledDeferred && !prevScriptTranspiledDeferred.isSettled()) {\n await waitUntilSettled(prevScriptTranspiledDeferred.promise);\n }\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 script.fetchPriority = 'high';\n }\n\n script.src = URL.createObjectURL(new Blob([codeFactory], { type: 'text/javascript' }));\n scriptTranspiledDeferred?.resolve();\n })\n .catch((e) => {\n scriptTranspiledDeferred?.reject();\n throw e;\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 scriptTranspiledDeferred?.resolve();\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 scriptTranspiledDeferred?.resolve();\n\n return script;\n }\n\n case Mode.NONE:\n default: {\n if (srcAttribute) {\n script.src = getEntireUrl(srcAttribute, baseURI);\n }\n\n scriptTranspiledDeferred?.resolve();\n\n return script;\n }\n }\n } catch (e) {\n scriptTranspiledDeferred?.reject(e);\n throw e;\n }\n}\n"],"mappings":";;;;;;;;;;;AAMA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AATA;AACA;AACA;AACA;;AAQA,IAAMG,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,WAA0B,EAA6C;EAC7F,QAAQA,WAAW;IACjB,KAAK,WAAW;MACd,OAAO,aAAa;IACtB,KAAK,iBAAiB;MACpB,OAAO,SAAS;IAClB;MACE,OAAOC,SAAS;EACpB;AACF,CAAC;AAQM,IAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,SAAfA,YAAYA,CACvBE,MAAwE,EACxEC,OAAe,EACfC,IAA0B,EACH;EACvB,IAAQC,OAAO,GAAqBD,IAAI,CAAhCC,OAAO;IAAEC,cAAc,GAAKF,IAAI,CAAvBE,cAAc;EAE/B,IAAQC,GAAG,GAAWL,MAAM,CAApBK,GAAG;IAAEC,IAAI,GAAKN,MAAM,CAAfM,IAAI;EAEjB,IAAIH,OAAO,EAAE;IACX,IAAIE,GAAG,EAAE;MACP,IAAME,SAAS,GAAG,IAAAC,mBAAY,EAACH,GAAG,EAAEJ,OAAO,CAAC;MAC5C,IAAMQ,aAAa,GAAGL,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGG,SAAS,CAAC;MACjD,IAAIE,aAAa,EAAE;QACjB,OAAO;UACLC,IAAI,EAAEC,WAAI,CAACC,qBAAqB;UAChCC,MAAM,MAAAC,cAAA,CAAAC,OAAA;YAAIV,GAAG,EAAEE;UAAS,GAAKE,aAAa;QAC5C,CAAC;MACH;MAEA,OAAO;QACLC,IAAI,EAAEC,WAAI,CAACK,wBAAwB;QACnCH,MAAM,EAAE;UAAER,GAAG,EAAEE;QAAU;MAC3B,CAAC;IACH;IAEA,IAAI,IAAAU,6BAAqB,EAACX,IAAI,CAAC,EAAE;MAC/B,IAAMY,OAAO,GAAGhB,IAAI,CAACgB,OAA4B;MACjD,IAAMC,UAAU,GAAGnB,MAAM,CAACoB,WAAW,GAAGpB,MAAM,GAAGkB,OAAO,CAACG,UAAU,CAAC,CAAC,CAAC;MAEtE,IAAMC,IAAI,GAAGH,UAAU,CAACC,WAAW;MACnC,IAAIE,IAAI,EAAE;QACR,OAAO;UACLZ,IAAI,EAAEC,WAAI,CAACY,sBAAsB;UACjCV,MAAM,EAAE;YACNS,IAAI,EAAJA;UACF;QACF,CAAC;MACH;IACF;EACF;EAEA,OAAO;IAAEZ,IAAI,EAAEC,WAAI,CAACa;EAAK,CAAC;AAC5B,CAAC;AAEc,SAASC,eAAeA,CACrCzB,MAAyB,EACzBC,OAAe,EACfC,IAA0B,EACP;EACnB;EACA;EACA,IAAMwB,YAAY,GAAG1B,MAAM,CAAC2B,YAAY,CAAC,KAAK,CAAC;EAC/C,IAAQxB,OAAO,GAA+BD,IAAI,CAA1CC,OAAO;IAAEyB,wBAAwB,GAAK1B,IAAI,CAAjC0B,wBAAwB;;EAEzC;EACA;EACA;EACA5B,MAAM,CAAC6B,eAAe,CAAC,cAAc,CAAC;EAEtC,IAAI;IACF,IAAAC,aAAA,GAAyBhC,YAAY,CACnC;QACEO,GAAG,EAAEqB,YAAY,IAAI7B,SAAS;QAC9BS,IAAI,EAAEN,MAAM,CAACM,IAAI;QACjBc,WAAW,EAAEpB,MAAM,CAACoB;MACtB,CAAC,EACDnB,OAAO,EACPC,IACF,CAAC;MAROQ,IAAI,GAAAoB,aAAA,CAAJpB,IAAI;MAAEG,MAAM,GAAAiB,aAAA,CAANjB,MAAM;IAUpB,QAAQH,IAAI;MACV,KAAKC,WAAI,CAACK,wBAAwB;QAAE;UAClC,IAAQe,KAAK,GAAK7B,IAAI,CAAd6B,KAAK;UACb,IAAQ1B,GAAG,GAAKQ,MAAM,CAAdR,GAAG;;UAEX;UACAL,MAAM,CAAC6B,eAAe,CAAC,KAAK,CAAC;UAC7B7B,MAAM,CAACgC,OAAO,CAAC3B,GAAG,GAAGA,GAAG;UAExB,IAAM4B,QAAQ,GAAG,CAACjC,MAAM,CAACkC,YAAY,CAAC,OAAO,CAAC;UAC9C,IAAMC,QAAkB,GAAGF,QAAQ,GAAG,MAAM,GAAG,KAAK;UACpD,IAAMG,WAAW,GAAGzC,cAAc,CAACK,MAAM,CAACJ,WAAW,CAAC;UAEtD,KAAKmC,KAAK,CAAC1B,GAAG,EAAE;YAAE+B,WAAW,EAAXA,WAAW;YAAED,QAAQ,EAARA;UAAS,CAAC,CAAC,CACvCE,IAAI,CAAC,UAACC,GAAG;YAAA,OAAKA,GAAG,CAACC,IAAI,CAAC,CAAC;UAAA,EAAC,CACzBF,IAAI;YAAA,IAAAG,IAAA,OAAAC,kBAAA,CAAA1B,OAAA,gBAAA2B,YAAA,CAAA3B,OAAA,CAAA4B,IAAA,CAAC,SAAAC,QAAOtB,IAAI;cAAA,IAAAuB,4BAAA,EAAAC,WAAA;cAAA,OAAAJ,YAAA,CAAA3B,OAAA,CAAAgC,IAAA,UAAAC,SAAAC,QAAA;gBAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;kBAAA;oBACPN,4BAA4B,GAAK3C,IAAI,CAArC2C,4BAA4B;oBAC9BC,WAAW,GAAG3C,OAAO,CAAEiD,mBAAmB,CAAC9B,IAAI,EAAEjB,GAAG,CAAC;oBAAA,KAEvD4B,QAAQ;sBAAAgB,QAAA,CAAAE,IAAA;sBAAA;oBAAA;oBAAA,MAENN,4BAA4B,IAAI,CAACA,4BAA4B,CAACQ,SAAS,CAAC,CAAC;sBAAAJ,QAAA,CAAAE,IAAA;sBAAA;oBAAA;oBAAAF,QAAA,CAAAE,IAAA;oBAAA,OACrE,IAAAG,uBAAgB,EAACT,4BAA4B,CAACU,OAAO,CAAC;kBAAA;oBAG9D;oBACAvD,MAAM,CAACwD,aAAa,GAAG,MAAM;kBAAC;oBAGhCxD,MAAM,CAACK,GAAG,GAAGoD,GAAG,CAACC,eAAe,CAAC,IAAIC,IAAI,CAAC,CAACb,WAAW,CAAC,EAAE;sBAAExC,IAAI,EAAE;oBAAkB,CAAC,CAAC,CAAC;oBACtFsB,wBAAwB,aAAxBA,wBAAwB,eAAxBA,wBAAwB,CAAEgC,OAAO,CAAC,CAAC;kBAAC;kBAAA;oBAAA,OAAAX,QAAA,CAAAY,IAAA;gBAAA;cAAA,GAAAjB,OAAA;YAAA,CACrC;YAAA,iBAAAkB,EAAA;cAAA,OAAAtB,IAAA,CAAAuB,KAAA,OAAAC,SAAA;YAAA;UAAA,IAAC,CACDC,KAAK,CAAC,UAACC,CAAC,EAAK;YACZtC,wBAAwB,aAAxBA,wBAAwB,eAAxBA,wBAAwB,CAAEuC,MAAM,CAAC,CAAC;YAClC,MAAMD,CAAC;UACT,CAAC,CAAC;UAEJ,OAAOlE,MAAM;QACf;MAEA,KAAKW,WAAI,CAACY,sBAAsB;QAAE;UAChC,IAAML,OAAO,GAAGhB,IAAI,CAACgB,OAA4B;UACjD,IAAMC,UAAU,GAAGnB,MAAM,CAACoB,WAAW,GAAGpB,MAAM,GAAGkB,OAAO,CAACG,UAAU,CAAC,CAAC,CAAC;UACtE,IAAQC,IAAI,GAAKT,MAAM,CAAfS,IAAI;UAEZH,UAAU,CAACC,WAAW,GAAGjB,OAAO,CAAEiD,mBAAmB,CAAC9B,IAAI,EAAErB,OAAO,CAAC;UACpE;UACAD,MAAM,CAACgC,OAAO,CAACoC,QAAQ,GAAG,MAAM;UAEhCxC,wBAAwB,aAAxBA,wBAAwB,eAAxBA,wBAAwB,CAAEgC,OAAO,CAAC,CAAC;UAEnC,OAAO5D,MAAM;QACf;MAEA,KAAKW,WAAI,CAACC,qBAAqB;QAAE;UAC/B,IAAQyD,GAAG,GAAmBxD,MAAM,CAA5BwD,GAAG;YAAEC,OAAO,GAAUzD,MAAM,CAAvByD,OAAO;YAAEjE,IAAG,GAAKQ,MAAM,CAAdR,GAAG;UAEzBL,MAAM,CAACgC,OAAO,CAAC3B,GAAG,GAAGA,IAAG;UACxBL,MAAM,CAACgC,OAAO,CAACsC,OAAO,GAAGA,OAAO;UAEhC,IAAMrC,SAAQ,GAAG,CAACjC,MAAM,CAAC2B,YAAY,CAAC,OAAO,CAAC;UAC9C;UACA,IAAIM,SAAQ,EAAE;YACZjC,MAAM,CAACwD,aAAa,GAAG,MAAM;UAC/B;;UAEA;UACAxD,MAAM,CAACK,GAAG,GAAG,IAAAkE,8BAAsB,EAAClE,IAAG,EAAEgE,GAAG,EAAE,iBAAiB,CAAC;UAEhEzC,wBAAwB,aAAxBA,wBAAwB,eAAxBA,wBAAwB,CAAEgC,OAAO,CAAC,CAAC;UAEnC,OAAO5D,MAAM;QACf;MAEA,KAAKW,WAAI,CAACa,IAAI;MACd;QAAS;UACP,IAAIE,YAAY,EAAE;YAChB1B,MAAM,CAACK,GAAG,GAAG,IAAAG,mBAAY,EAACkB,YAAY,EAAEzB,OAAO,CAAC;UAClD;UAEA2B,wBAAwB,aAAxBA,wBAAwB,eAAxBA,wBAAwB,CAAEgC,OAAO,CAAC,CAAC;UAEnC,OAAO5D,MAAM;QACf;IACF;EACF,CAAC,CAAC,OAAOkE,CAAC,EAAE;IACVtC,wBAAwB,aAAxBA,wBAAwB,eAAxBA,wBAAwB,CAAEuC,MAAM,CAACD,CAAC,CAAC;IACnC,MAAMA,CAAC;EACT;AACF"}
1
+ {"version":3,"names":["_utils","require","_types","_utils2","getCredentials","crossOrigin","undefined","preTranspile","exports","script","baseURI","opts","sandbox","moduleResolver","src","type","entireUrl","getEntireUrl","matchedScript","mode","Mode","REUSED_DEP_IN_SANDBOX","REUSED_DEP","result","_objectSpread2","default","REMOTE_ASSETS_IN_SANDBOX","REMOTE_ASSETS","isValidJavaScriptType","rawNode","scriptNode","textContent","childNodes","code","INLINE_CODE_IN_SANDBOX","NONE","transpileScript","srcAttribute","getAttribute","scriptTranspiledDeferred","removeAttribute","_preTranspile","fetch","dataset","syncMode","hasAttribute","priority","credentials","then","res","text","_ref","_asyncToGenerator2","_regenerator","mark","_callee","prevScriptTranspiledDeferred","beforeScriptExecuteEvent","beforeExecutedListenerScript","codeFactory","wrap","_callee$","_context","prev","next","concat","makeEvaluateFactory","isSettled","waitUntilSettled","promise","fetchPriority","URL","createObjectURL","Blob","window","addEventListener","listener","evt","_ref2","detail","s","revokeObjectURL","consumed","removeEventListener","resolve","stop","_x","apply","arguments","catch","e","reject","url","version","createReusingObjectUrl","onScriptComplete","prevListener","event","onload","onerror","call","bind"],"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, waitUntilSettled } from '../utils';\nimport type { AssetsTranspilerOpts, ScriptTranspilerOpts } from './types';\nimport { Mode } from './types';\nimport { createReusingObjectUrl, isValidJavaScriptType } from './utils';\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 | Mode.REMOTE_ASSETS; result: { src: string } }\n | { mode: Mode.REUSED_DEP_IN_SANDBOX | Mode.REUSED_DEP; 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 (src) {\n const entireUrl = getEntireUrl(src, baseURI);\n const matchedScript = moduleResolver?.(entireUrl);\n if (matchedScript) {\n return {\n mode: sandbox ? Mode.REUSED_DEP_IN_SANDBOX : Mode.REUSED_DEP,\n result: { src: entireUrl, ...matchedScript },\n };\n }\n\n return {\n mode: sandbox ? Mode.REMOTE_ASSETS_IN_SANDBOX : Mode.REMOTE_ASSETS,\n result: { src: entireUrl },\n };\n }\n\n if (isValidJavaScriptType(type) && sandbox) {\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 return { mode: Mode.NONE };\n};\n\nexport default function transpileScript(\n script: HTMLScriptElement,\n baseURI: string,\n opts: ScriptTranspilerOpts,\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, scriptTranspiledDeferred } = opts;\n\n // To prevent webpack from skipping reload logic and causing the js not to re-execute when a micro app is loaded multiple times, the data-webpack attribute of the script must be removed.\n // see https://github.com/webpack/webpack/blob/1f13ff9fe587e094df59d660b4611b1bd19aed4c/lib/runtime/LoadScriptRuntimeModule.js#L131-L136\n // FIXME We should determine whether the current micro application is being loaded for the second time. If not, this removal should not be performed.\n script.removeAttribute('data-webpack');\n\n try {\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 { fetch } = opts;\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(async (code) => {\n const { prevScriptTranspiledDeferred } = opts;\n\n // add preprocess code to dispatch a CustomEvent before the script is executed\n const beforeScriptExecuteEvent = 'q:bse';\n const beforeExecutedListenerScript = `;(function(){var s=document.currentScript;var e=new CustomEvent('${beforeScriptExecuteEvent}',{detail:{s:s}});window.dispatchEvent(e);})();`;\n\n const codeFactory = beforeExecutedListenerScript + sandbox!.makeEvaluateFactory(code, src);\n\n if (syncMode) {\n // if it's a sync script and there is a previous sync script, we should wait it to finish fetching\n if (prevScriptTranspiledDeferred && !prevScriptTranspiledDeferred.isSettled()) {\n await waitUntilSettled(prevScriptTranspiledDeferred.promise);\n }\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 script.fetchPriority = 'high';\n }\n\n // change the script src to a blob url to make it execute in the sandbox\n script.src = URL.createObjectURL(new Blob([codeFactory], { type: 'text/javascript' }));\n\n window.addEventListener(beforeScriptExecuteEvent, function listener(evt: CustomEventInit) {\n const { s } = evt.detail as { s: HTMLScriptElement };\n if (s === script) {\n URL.revokeObjectURL(s.src);\n // change the script src to the original src while the script is executing\n // thus the script behavior can be more consistent with the native browser logic\n s.src = src;\n s.dataset.consumed = 'true';\n delete s.dataset.src;\n\n window.removeEventListener(beforeScriptExecuteEvent, listener);\n }\n });\n\n scriptTranspiledDeferred?.resolve();\n })\n .catch((e) => {\n scriptTranspiledDeferred?.reject();\n throw e;\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 scriptTranspiledDeferred?.resolve();\n\n return script;\n }\n\n case Mode.REUSED_DEP_IN_SANDBOX:\n case Mode.REUSED_DEP: {\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 const onScriptComplete = (\n prevListener: typeof HTMLScriptElement.prototype.onload | typeof HTMLScriptElement.prototype.onerror,\n event: Event,\n ) => {\n script.onload = script.onerror = null;\n\n script.src = src;\n script.dataset.consumed = 'true';\n script.dataset.src = url;\n\n prevListener?.call(script, event);\n };\n script.onload = onScriptComplete.bind(null, script.onload);\n script.onerror = onScriptComplete.bind(null, script.onerror) as typeof HTMLScriptElement.prototype.onerror;\n\n scriptTranspiledDeferred?.resolve();\n\n return script;\n }\n\n case Mode.REMOTE_ASSETS:\n case Mode.NONE:\n default: {\n if (result?.src) {\n script.src = result.src;\n }\n\n scriptTranspiledDeferred?.resolve();\n\n return script;\n }\n }\n } catch (e) {\n scriptTranspiledDeferred?.reject(e);\n throw e;\n }\n}\n"],"mappings":"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"}
@@ -14,6 +14,7 @@ export type BaseTranspilerOpts = BaseLoaderOpts & {
14
14
  export type AssetsTranspilerOpts = BaseTranspilerOpts & {
15
15
  rawNode: Node;
16
16
  };
17
+ export type NodeTransformer = <T extends Node>(node: T, baseURI: string, opts: Omit<AssetsTranspilerOpts, 'moduleResolver'>) => T;
17
18
  export type ScriptTranspilerOpts = AssetsTranspilerOpts & ({
18
19
  prevScriptTranspiledDeferred: Deferred<void>;
19
20
  scriptTranspiledDeferred: Deferred<void>;
@@ -23,7 +24,9 @@ export type ScriptTranspilerOpts = AssetsTranspilerOpts & ({
23
24
  });
24
25
  export declare enum Mode {
25
26
  REMOTE_ASSETS_IN_SANDBOX = "RAIS",
27
+ REMOTE_ASSETS = "RA",
26
28
  REUSED_DEP_IN_SANDBOX = "RDIS",
29
+ REUSED_DEP = "RD",
27
30
  INLINE_CODE_IN_SANDBOX = "ICIS",
28
31
  NONE = "NONE"
29
32
  }
@@ -10,7 +10,9 @@ exports.Mode = void 0;
10
10
  */
11
11
  var Mode = exports.Mode = /*#__PURE__*/function (Mode) {
12
12
  Mode["REMOTE_ASSETS_IN_SANDBOX"] = "RAIS";
13
+ Mode["REMOTE_ASSETS"] = "RA";
13
14
  Mode["REUSED_DEP_IN_SANDBOX"] = "RDIS";
15
+ Mode["REUSED_DEP"] = "RD";
14
16
  Mode["INLINE_CODE_IN_SANDBOX"] = "ICIS";
15
17
  Mode["NONE"] = "NONE";
16
18
  return Mode;
@@ -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 { BaseLoaderOpts } from '../common';\nimport type { MatchResult } from '../module-resolver';\nimport type { Deferred } from '../utils';\n\nexport type BaseTranspilerOpts = BaseLoaderOpts & {\n moduleResolver?: (url: string) => MatchResult | undefined;\n sandbox?: {\n makeEvaluateFactory(source: string, sourceURL?: string): string;\n };\n};\n\nexport type AssetsTranspilerOpts = BaseTranspilerOpts & { rawNode: Node };\n\nexport type ScriptTranspilerOpts = AssetsTranspilerOpts &\n (\n | { prevScriptTranspiledDeferred: Deferred<void>; scriptTranspiledDeferred: Deferred<void> }\n | { prevScriptTranspiledDeferred?: undefined; scriptTranspiledDeferred?: undefined }\n );\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,IAuBYA,IAAI,GAAAC,OAAA,CAAAD,IAAA,0BAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA"}
1
+ {"version":3,"names":["Mode","exports"],"sources":["../../../src/assets-transpilers/types.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-08-26\n */\nimport type { BaseLoaderOpts } from '../common';\nimport type { MatchResult } from '../module-resolver';\nimport type { Deferred } from '../utils';\n\nexport type BaseTranspilerOpts = BaseLoaderOpts & {\n moduleResolver?: (url: string) => MatchResult | undefined;\n sandbox?: {\n makeEvaluateFactory(source: string, sourceURL?: string): string;\n };\n};\n\nexport type AssetsTranspilerOpts = BaseTranspilerOpts & { rawNode: Node };\n\nexport type NodeTransformer = <T extends Node>(\n node: T,\n baseURI: string,\n opts: Omit<AssetsTranspilerOpts, 'moduleResolver'>,\n) => T;\n\nexport type ScriptTranspilerOpts = AssetsTranspilerOpts &\n (\n | { prevScriptTranspiledDeferred: Deferred<void>; scriptTranspiledDeferred: Deferred<void> }\n | { prevScriptTranspiledDeferred?: undefined; scriptTranspiledDeferred?: undefined }\n );\n\nexport enum Mode {\n REMOTE_ASSETS_IN_SANDBOX = 'RAIS',\n REMOTE_ASSETS = 'RA',\n REUSED_DEP_IN_SANDBOX = 'RDIS',\n REUSED_DEP = 'RD',\n INLINE_CODE_IN_SANDBOX = 'ICIS',\n NONE = 'NONE',\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAHA,IA6BYA,IAAI,GAAAC,OAAA,CAAAD,IAAA,0BAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAJA,IAAI;EAAA,OAAJA,IAAI;AAAA"}
@@ -0,0 +1,8 @@
1
+ export declare class LRUCache<K, V> {
2
+ private readonly capacity;
3
+ private cache;
4
+ constructor(capacity: number);
5
+ get(key: K): V | undefined;
6
+ set(key: K, value: V): void;
7
+ delete(key: K): void;
8
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.LRUCache = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var LRUCache = exports.LRUCache = /*#__PURE__*/function () {
12
+ function LRUCache(capacity) {
13
+ (0, _classCallCheck2.default)(this, LRUCache);
14
+ (0, _defineProperty2.default)(this, "capacity", void 0);
15
+ (0, _defineProperty2.default)(this, "cache", void 0);
16
+ this.capacity = capacity;
17
+ this.cache = new Map();
18
+ }
19
+ (0, _createClass2.default)(LRUCache, [{
20
+ key: "get",
21
+ value: function get(key) {
22
+ var value = this.cache.get(key);
23
+ if (value !== undefined) {
24
+ this.cache.delete(key);
25
+ this.cache.set(key, value);
26
+ }
27
+ return value;
28
+ }
29
+ }, {
30
+ key: "set",
31
+ value: function set(key, value) {
32
+ if (this.cache.has(key)) {
33
+ this.cache.delete(key);
34
+ }
35
+ this.cache.set(key, value);
36
+ if (this.cache.size > this.capacity) {
37
+ var firstKey = this.cache.keys().next().value;
38
+ this.cache.delete(firstKey);
39
+ }
40
+ }
41
+ }, {
42
+ key: "delete",
43
+ value: function _delete(key) {
44
+ this.cache.delete(key);
45
+ }
46
+ }]);
47
+ return LRUCache;
48
+ }();
49
+ //# sourceMappingURL=miniLruCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LRUCache","exports","capacity","_classCallCheck2","default","_defineProperty2","cache","Map","_createClass2","key","value","get","undefined","delete","set","has","size","firstKey","keys","next","_delete"],"sources":["../../../src/fetch-utils/miniLruCache.ts"],"sourcesContent":["export class LRUCache<K, V> {\n private readonly capacity: number;\n private cache: Map<K, V>;\n\n constructor(capacity: number) {\n this.capacity = capacity;\n this.cache = new Map();\n }\n\n get(key: K): V | undefined {\n const value = this.cache.get(key);\n if (value !== undefined) {\n this.cache.delete(key);\n this.cache.set(key, value);\n }\n return value;\n }\n\n set(key: K, value: V): void {\n if (this.cache.has(key)) {\n this.cache.delete(key);\n }\n this.cache.set(key, value);\n if (this.cache.size > this.capacity) {\n const firstKey = this.cache.keys().next().value as K;\n this.cache.delete(firstKey);\n }\n }\n\n delete(key: K): void {\n this.cache.delete(key);\n }\n}\n"],"mappings":";;;;;;;;;;IAAaA,QAAQ,GAAAC,OAAA,CAAAD,QAAA;EAInB,SAAAA,SAAYE,QAAgB,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAJ,QAAA;IAAA,IAAAK,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAC5B,IAAI,CAACF,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACI,KAAK,GAAG,IAAIC,GAAG,CAAC,CAAC;EACxB;EAAC,IAAAC,aAAA,CAAAJ,OAAA,EAAAJ,QAAA;IAAAS,GAAA;IAAAC,KAAA,EAED,SAAAC,IAAIF,GAAM,EAAiB;MACzB,IAAMC,KAAK,GAAG,IAAI,CAACJ,KAAK,CAACK,GAAG,CAACF,GAAG,CAAC;MACjC,IAAIC,KAAK,KAAKE,SAAS,EAAE;QACvB,IAAI,CAACN,KAAK,CAACO,MAAM,CAACJ,GAAG,CAAC;QACtB,IAAI,CAACH,KAAK,CAACQ,GAAG,CAACL,GAAG,EAAEC,KAAK,CAAC;MAC5B;MACA,OAAOA,KAAK;IACd;EAAC;IAAAD,GAAA;IAAAC,KAAA,EAED,SAAAI,IAAIL,GAAM,EAAEC,KAAQ,EAAQ;MAC1B,IAAI,IAAI,CAACJ,KAAK,CAACS,GAAG,CAACN,GAAG,CAAC,EAAE;QACvB,IAAI,CAACH,KAAK,CAACO,MAAM,CAACJ,GAAG,CAAC;MACxB;MACA,IAAI,CAACH,KAAK,CAACQ,GAAG,CAACL,GAAG,EAAEC,KAAK,CAAC;MAC1B,IAAI,IAAI,CAACJ,KAAK,CAACU,IAAI,GAAG,IAAI,CAACd,QAAQ,EAAE;QACnC,IAAMe,QAAQ,GAAG,IAAI,CAACX,KAAK,CAACY,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAACT,KAAU;QACpD,IAAI,CAACJ,KAAK,CAACO,MAAM,CAACI,QAAQ,CAAC;MAC7B;IACF;EAAC;IAAAR,GAAA;IAAAC,KAAA,EAED,SAAAU,QAAOX,GAAM,EAAQ;MACnB,IAAI,CAACH,KAAK,CAACO,MAAM,CAACJ,GAAG,CAAC;IACxB;EAAC;EAAA,OAAAT,QAAA;AAAA"}
@@ -0,0 +1,3 @@
1
+ type Fetch = typeof window.fetch;
2
+ export declare const wrapFetchWithCache: (fetch: Fetch) => Fetch;
3
+ export {};
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.wrapFetchWithCache = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _once2 = _interopRequireDefault(require("lodash/once"));
11
+ var _miniLruCache = require("./miniLruCache");
12
+ /**
13
+ * @author Kuitos
14
+ * @since 2023-11-06
15
+ */
16
+
17
+ var getCacheKey = function getCacheKey(input) {
18
+ return typeof input === 'string' ? input : 'url' in input ? input.url : input.href;
19
+ };
20
+ var getGlobalCache = (0, _once2.default)(function () {
21
+ return new _miniLruCache.LRUCache(50);
22
+ });
23
+ var isValidaResponse = function isValidaResponse(status) {
24
+ return status >= 200 && status < 400;
25
+ };
26
+ var wrapFetchWithCache = exports.wrapFetchWithCache = function wrapFetchWithCache(fetch) {
27
+ var lruCache = getGlobalCache();
28
+ var cachedFetch = function cachedFetch(input, init) {
29
+ var fetchInput = input;
30
+ var cacheKey = getCacheKey(fetchInput);
31
+ var wrapFetchPromise = /*#__PURE__*/function () {
32
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(promise) {
33
+ var res, status;
34
+ return _regenerator.default.wrap(function _callee$(_context) {
35
+ while (1) switch (_context.prev = _context.next) {
36
+ case 0:
37
+ _context.prev = 0;
38
+ _context.next = 3;
39
+ return promise;
40
+ case 3:
41
+ res = _context.sent;
42
+ status = res.status;
43
+ if (!isValidaResponse(status)) {
44
+ lruCache.delete(cacheKey);
45
+ }
46
+
47
+ // must clone the response as one response body can only be read once as a stream
48
+ return _context.abrupt("return", res.clone());
49
+ case 9:
50
+ _context.prev = 9;
51
+ _context.t0 = _context["catch"](0);
52
+ lruCache.delete(cacheKey);
53
+ throw _context.t0;
54
+ case 13:
55
+ case "end":
56
+ return _context.stop();
57
+ }
58
+ }, _callee, null, [[0, 9]]);
59
+ }));
60
+ return function wrapFetchPromise(_x) {
61
+ return _ref.apply(this, arguments);
62
+ };
63
+ }();
64
+ var cachedFetchPromise = lruCache.get(cacheKey);
65
+ if (cachedFetchPromise) {
66
+ return wrapFetchPromise(cachedFetchPromise);
67
+ }
68
+ var fetchPromise = fetch(fetchInput, init);
69
+ lruCache.set(cacheKey, fetchPromise);
70
+ return wrapFetchPromise(fetchPromise);
71
+ };
72
+ return cachedFetch;
73
+ };
74
+ //# sourceMappingURL=wrapFetchWithCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_miniLruCache","require","getCacheKey","input","url","href","getGlobalCache","_once2","default","LRUCache","isValidaResponse","status","wrapFetchWithCache","exports","fetch","lruCache","cachedFetch","init","fetchInput","cacheKey","wrapFetchPromise","_ref","_asyncToGenerator2","_regenerator","mark","_callee","promise","res","wrap","_callee$","_context","prev","next","sent","delete","abrupt","clone","t0","stop","_x","apply","arguments","cachedFetchPromise","get","fetchPromise","set"],"sources":["../../../src/fetch-utils/wrapFetchWithCache.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-11-06\n */\nimport { once } from 'lodash';\nimport { LRUCache } from './miniLruCache';\n\ntype Fetch = typeof window.fetch;\n\nconst getCacheKey = (input: Parameters<Fetch>[0]): string => {\n return typeof input === 'string' ? input : 'url' in input ? input.url : input.href;\n};\n\nconst getGlobalCache = once(() => {\n return new LRUCache<string, Promise<Response>>(50);\n});\n\nconst isValidaResponse = (status: number): boolean => {\n return status >= 200 && status < 400;\n};\n\nexport const wrapFetchWithCache: (fetch: Fetch) => Fetch = (fetch) => {\n const lruCache = getGlobalCache();\n\n const cachedFetch: Fetch = (input, init) => {\n const fetchInput = input as Parameters<Fetch>[0];\n const cacheKey = getCacheKey(fetchInput);\n const wrapFetchPromise = async (promise: Promise<Response>): Promise<Response> => {\n try {\n const res = await promise;\n\n const { status } = res;\n if (!isValidaResponse(status)) {\n lruCache.delete(cacheKey);\n }\n\n // must clone the response as one response body can only be read once as a stream\n return res.clone();\n } catch (e) {\n lruCache.delete(cacheKey);\n throw e;\n }\n };\n\n const cachedFetchPromise = lruCache.get(cacheKey);\n if (cachedFetchPromise) {\n return wrapFetchPromise(cachedFetchPromise);\n }\n\n const fetchPromise = fetch(fetchInput, init);\n lruCache.set(cacheKey, fetchPromise);\n\n return wrapFetchPromise(fetchPromise);\n };\n\n return cachedFetch;\n};\n"],"mappings":";;;;;;;;;;AAKA,IAAAA,aAAA,GAAAC,OAAA;AALA;AACA;AACA;AACA;;AAMA,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAA2B,EAAa;EAC3D,OAAO,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,KAAK,IAAIA,KAAK,GAAGA,KAAK,CAACC,GAAG,GAAGD,KAAK,CAACE,IAAI;AACpF,CAAC;AAED,IAAMC,cAAc,GAAG,IAAAC,MAAA,CAAAC,OAAA,EAAK,YAAM;EAChC,OAAO,IAAIC,sBAAQ,CAA4B,EAAE,CAAC;AACpD,CAAC,CAAC;AAEF,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,MAAc,EAAc;EACpD,OAAOA,MAAM,IAAI,GAAG,IAAIA,MAAM,GAAG,GAAG;AACtC,CAAC;AAEM,IAAMC,kBAA2C,GAAAC,OAAA,CAAAD,kBAAA,GAAG,SAA9CA,kBAA2CA,CAAIE,KAAK,EAAK;EACpE,IAAMC,QAAQ,GAAGT,cAAc,CAAC,CAAC;EAEjC,IAAMU,WAAkB,GAAG,SAArBA,WAAkBA,CAAIb,KAAK,EAAEc,IAAI,EAAK;IAC1C,IAAMC,UAAU,GAAGf,KAA6B;IAChD,IAAMgB,QAAQ,GAAGjB,WAAW,CAACgB,UAAU,CAAC;IACxC,IAAME,gBAAgB;MAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAG,SAAAC,QAAOC,OAA0B;QAAA,IAAAC,GAAA,EAAAhB,MAAA;QAAA,OAAAY,YAAA,CAAAf,OAAA,CAAAoB,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAAF,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAE,IAAA;cAAA,OAEpCN,OAAO;YAAA;cAAnBC,GAAG,GAAAG,QAAA,CAAAG,IAAA;cAEDtB,MAAM,GAAKgB,GAAG,CAAdhB,MAAM;cACd,IAAI,CAACD,gBAAgB,CAACC,MAAM,CAAC,EAAE;gBAC7BI,QAAQ,CAACmB,MAAM,CAACf,QAAQ,CAAC;cAC3B;;cAEA;cAAA,OAAAW,QAAA,CAAAK,MAAA,WACOR,GAAG,CAACS,KAAK,CAAC,CAAC;YAAA;cAAAN,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAO,EAAA,GAAAP,QAAA;cAElBf,QAAQ,CAACmB,MAAM,CAACf,QAAQ,CAAC;cAAC,MAAAW,QAAA,CAAAO,EAAA;YAAA;YAAA;cAAA,OAAAP,QAAA,CAAAQ,IAAA;UAAA;QAAA,GAAAb,OAAA;MAAA,CAG7B;MAAA,gBAfKL,gBAAgBA,CAAAmB,EAAA;QAAA,OAAAlB,IAAA,CAAAmB,KAAA,OAAAC,SAAA;MAAA;IAAA,GAerB;IAED,IAAMC,kBAAkB,GAAG3B,QAAQ,CAAC4B,GAAG,CAACxB,QAAQ,CAAC;IACjD,IAAIuB,kBAAkB,EAAE;MACtB,OAAOtB,gBAAgB,CAACsB,kBAAkB,CAAC;IAC7C;IAEA,IAAME,YAAY,GAAG9B,KAAK,CAACI,UAAU,EAAED,IAAI,CAAC;IAC5CF,QAAQ,CAAC8B,GAAG,CAAC1B,QAAQ,EAAEyB,YAAY,CAAC;IAEpC,OAAOxB,gBAAgB,CAACwB,YAAY,CAAC;EACvC,CAAC;EAED,OAAO5B,WAAW;AACpB,CAAC"}
@@ -6,4 +6,5 @@ export * from './assets-transpilers';
6
6
  export * from './utils';
7
7
  export * from './module-resolver';
8
8
  export * from './common';
9
- export * from './error';
9
+ export * from './reporter';
10
+ export * from './fetch-utils/wrapFetchWithCache';
package/dist/cjs/index.js CHANGED
@@ -47,14 +47,25 @@ Object.keys(_common).forEach(function (key) {
47
47
  }
48
48
  });
49
49
  });
50
- var _error = require("./error");
51
- Object.keys(_error).forEach(function (key) {
50
+ var _reporter = require("./reporter");
51
+ Object.keys(_reporter).forEach(function (key) {
52
52
  if (key === "default" || key === "__esModule") return;
53
- if (key in exports && exports[key] === _error[key]) return;
53
+ if (key in exports && exports[key] === _reporter[key]) return;
54
54
  Object.defineProperty(exports, key, {
55
55
  enumerable: true,
56
56
  get: function get() {
57
- return _error[key];
57
+ return _reporter[key];
58
+ }
59
+ });
60
+ });
61
+ var _wrapFetchWithCache = require("./fetch-utils/wrapFetchWithCache");
62
+ Object.keys(_wrapFetchWithCache).forEach(function (key) {
63
+ if (key === "default" || key === "__esModule") return;
64
+ if (key in exports && exports[key] === _wrapFetchWithCache[key]) return;
65
+ Object.defineProperty(exports, key, {
66
+ enumerable: true,
67
+ get: function get() {
68
+ return _wrapFetchWithCache[key];
58
69
  }
59
70
  });
60
71
  });
@@ -1 +1 @@
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"}
1
+ {"version":3,"names":["_assetsTranspilers","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_utils","_moduleResolver","_common","_reporter","_wrapFetchWithCache"],"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 './reporter';\nexport * from './fetch-utils/wrapFetchWithCache';\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,SAAA,GAAAZ,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAU,SAAA,EAAAT,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAQ,SAAA,CAAAR,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAI,SAAA,CAAAR,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,mBAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,mBAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAS,mBAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAK,mBAAA,CAAAT,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["QiankunError","exports","_Error","_inherits2","default","_super","_createSuper2","message","_classCallCheck2","call","concat","_createClass2","_wrapNativeSuper2","Error"],"sources":["../../../src/reporter/QiankunError.ts"],"sourcesContent":["export class QiankunError extends Error {\n constructor(message: string) {\n super(`[qiankun]: ${message}`);\n }\n}\n"],"mappings":";;;;;;;;;;;;IAAaA,YAAY,GAAAC,OAAA,CAAAD,YAAA,0BAAAE,MAAA;EAAA,IAAAC,UAAA,CAAAC,OAAA,EAAAJ,YAAA,EAAAE,MAAA;EAAA,IAAAG,MAAA,OAAAC,aAAA,CAAAF,OAAA,EAAAJ,YAAA;EACvB,SAAAA,aAAYO,OAAe,EAAE;IAAA,IAAAC,gBAAA,CAAAJ,OAAA,QAAAJ,YAAA;IAAA,OAAAK,MAAA,CAAAI,IAAA,qBAAAC,MAAA,CACPH,OAAO;EAC7B;EAAC,WAAAI,aAAA,CAAAP,OAAA,EAAAJ,YAAA;AAAA,oBAAAY,iBAAA,CAAAR,OAAA,EAH+BS,KAAK"}
@@ -1 +1,2 @@
1
1
  export { QiankunError } from './QiankunError';
2
+ export * from './logger';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ QiankunError: true
8
+ };
9
+ Object.defineProperty(exports, "QiankunError", {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return _QiankunError.QiankunError;
13
+ }
14
+ });
15
+ var _QiankunError = require("./QiankunError");
16
+ var _logger = require("./logger");
17
+ Object.keys(_logger).forEach(function (key) {
18
+ if (key === "default" || key === "__esModule") return;
19
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
+ if (key in exports && exports[key] === _logger[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _logger[key];
25
+ }
26
+ });
27
+ });
28
+ //# sourceMappingURL=index.js.map