@qiankunjs/shared 0.0.1-rc.0 → 0.0.1-rc.2

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