@shriyanss/js-recon 1.2.2 → 1.3.1-alpha.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 (152) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/build/analyze/engine/astEngine.js +65 -31
  3. package/build/analyze/engine/astEngine.js.map +1 -1
  4. package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js.map +1 -1
  5. package/build/analyze/helpers/engineHelpers/taintFlow.js +218 -0
  6. package/build/analyze/helpers/engineHelpers/taintFlow.js.map +1 -0
  7. package/build/analyze/helpers/schemas.js +2 -0
  8. package/build/analyze/helpers/schemas.js.map +1 -1
  9. package/build/endpoints/next_js/client_jsFilesHref.js +4 -2
  10. package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -1
  11. package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
  12. package/build/endpoints/next_js/client_subsequentRequests.js +12 -4
  13. package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -1
  14. package/build/globalConfig.js +1 -1
  15. package/build/globalConfig.js.map +1 -1
  16. package/build/index.js +16 -2
  17. package/build/index.js.map +1 -1
  18. package/build/lazyLoad/downloadFilesUtil.js +74 -80
  19. package/build/lazyLoad/downloadFilesUtil.js.map +1 -1
  20. package/build/lazyLoad/downloadLoadedJsUtil.js +1 -1
  21. package/build/lazyLoad/downloadLoadedJsUtil.js.map +1 -1
  22. package/build/lazyLoad/downloadQueue.js +186 -0
  23. package/build/lazyLoad/downloadQueue.js.map +1 -0
  24. package/build/lazyLoad/index.js +76 -89
  25. package/build/lazyLoad/index.js.map +1 -1
  26. package/build/lazyLoad/next_js/NextJsCrawler.js +109 -32
  27. package/build/lazyLoad/next_js/NextJsCrawler.js.map +1 -1
  28. package/build/lazyLoad/next_js/next_GetJSScript.js +20 -3
  29. package/build/lazyLoad/next_js/next_GetJSScript.js.map +1 -1
  30. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +1 -1
  31. package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
  32. package/build/lazyLoad/next_js/next_SubsequentRequests.js +24 -4
  33. package/build/lazyLoad/next_js/next_SubsequentRequests.js.map +1 -1
  34. package/build/lazyLoad/next_js/next_bruteForceJsFiles.js +8 -3
  35. package/build/lazyLoad/next_js/next_bruteForceJsFiles.js.map +1 -1
  36. package/build/lazyLoad/next_js/next_getClientSidePaths.js +83 -0
  37. package/build/lazyLoad/next_js/next_getClientSidePaths.js.map +1 -0
  38. package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js +10 -1
  39. package/build/lazyLoad/next_js/next_scriptTagsSubsequentRequests.js.map +1 -1
  40. package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -1
  41. package/build/lazyLoad/react/react_getScriptTags.js +29 -0
  42. package/build/lazyLoad/react/react_getScriptTags.js.map +1 -0
  43. package/build/lazyLoad/react/react_sourcemapUrls.js +44 -0
  44. package/build/lazyLoad/react/react_sourcemapUrls.js.map +1 -0
  45. package/build/lazyLoad/react/react_webpackChunkPaths.js +188 -0
  46. package/build/lazyLoad/react/react_webpackChunkPaths.js.map +1 -0
  47. package/build/lazyLoad/techDetect/checkAngularJS.js +70 -0
  48. package/build/lazyLoad/techDetect/checkAngularJS.js.map +1 -0
  49. package/build/lazyLoad/techDetect/checkNextJS.js +45 -0
  50. package/build/lazyLoad/techDetect/checkNextJS.js.map +1 -0
  51. package/build/lazyLoad/techDetect/checkNuxtJS.js +39 -0
  52. package/build/lazyLoad/techDetect/checkNuxtJS.js.map +1 -0
  53. package/build/lazyLoad/techDetect/checkReact.js +55 -0
  54. package/build/lazyLoad/techDetect/checkReact.js.map +1 -0
  55. package/build/lazyLoad/techDetect/checkSvelte.js +69 -0
  56. package/build/lazyLoad/techDetect/checkSvelte.js.map +1 -0
  57. package/build/lazyLoad/techDetect/checkVueJS.js +118 -0
  58. package/build/lazyLoad/techDetect/checkVueJS.js.map +1 -0
  59. package/build/lazyLoad/techDetect/index.js +29 -258
  60. package/build/lazyLoad/techDetect/index.js.map +1 -1
  61. package/build/lazyLoad/vue/vue_RuntimeJs.js +122 -54
  62. package/build/lazyLoad/vue/vue_RuntimeJs.js.map +1 -1
  63. package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +4 -0
  64. package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -1
  65. package/build/lazyLoad/vue/vue_discoverJsFiles.js +82 -0
  66. package/build/lazyLoad/vue/vue_discoverJsFiles.js.map +1 -0
  67. package/build/lazyLoad/vue/vue_getClientSidePaths.js +149 -0
  68. package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -0
  69. package/build/lazyLoad/vue/vue_jsImports.js +40 -34
  70. package/build/lazyLoad/vue/vue_jsImports.js.map +1 -1
  71. package/build/lazyLoad/vue/vue_pageSrc.js +60 -0
  72. package/build/lazyLoad/vue/vue_pageSrc.js.map +1 -0
  73. package/build/lazyLoad/vue/vue_reconstructSourceMaps.js +8 -0
  74. package/build/lazyLoad/vue/vue_reconstructSourceMaps.js.map +1 -1
  75. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js +136 -0
  76. package/build/lazyLoad/vue/vue_recursiveClientSidePathDownload.js.map +1 -0
  77. package/build/lazyLoad/vue/vue_severalJsFilesHome.js +5 -0
  78. package/build/lazyLoad/vue/vue_severalJsFilesHome.js.map +1 -1
  79. package/build/lazyLoad/vue/vue_stringJsFiles.js +142 -0
  80. package/build/lazyLoad/vue/vue_stringJsFiles.js.map +1 -0
  81. package/build/lazyLoad/vue/vue_viteMapDeps.js +89 -0
  82. package/build/lazyLoad/vue/vue_viteMapDeps.js.map +1 -0
  83. package/build/map/index.js +50 -0
  84. package/build/map/index.js.map +1 -1
  85. package/build/map/next_js/getExports.js +14 -6
  86. package/build/map/next_js/getExports.js.map +1 -1
  87. package/build/map/next_js/getFetchInstances.js +11 -5
  88. package/build/map/next_js/getFetchInstances.js.map +1 -1
  89. package/build/map/next_js/getTurbopackConnections.js +255 -0
  90. package/build/map/next_js/getTurbopackConnections.js.map +1 -0
  91. package/build/map/next_js/getWebpackConnections.js +3 -4
  92. package/build/map/next_js/getWebpackConnections.js.map +1 -1
  93. package/build/map/next_js/resolveAxios.js +24 -5
  94. package/build/map/next_js/resolveAxios.js.map +1 -1
  95. package/build/map/next_js/resolveAxiosHelpers/astNodeToJsonString.js +2 -2
  96. package/build/map/next_js/resolveAxiosHelpers/astNodeToJsonString.js.map +1 -1
  97. package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js +25 -15
  98. package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js.map +1 -1
  99. package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js.map +1 -1
  100. package/build/map/next_js/resolveAxiosHelpers/interceptorHeaders.js +206 -0
  101. package/build/map/next_js/resolveAxiosHelpers/interceptorHeaders.js.map +1 -0
  102. package/build/map/next_js/resolveAxiosHelpers/processAxiosCall.js +25 -8
  103. package/build/map/next_js/resolveAxiosHelpers/processAxiosCall.js.map +1 -1
  104. package/build/map/next_js/resolveAxiosHelpers/processDirectAxiosCall.js +14 -6
  105. package/build/map/next_js/resolveAxiosHelpers/processDirectAxiosCall.js.map +1 -1
  106. package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js +22 -10
  107. package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js.map +1 -1
  108. package/build/map/next_js/resolveAxiosHelpers/traceBody.js +913 -0
  109. package/build/map/next_js/resolveAxiosHelpers/traceBody.js.map +1 -0
  110. package/build/map/next_js/resolveFetch.js +117 -4
  111. package/build/map/next_js/resolveFetch.js.map +1 -1
  112. package/build/map/next_js/resolveNewRequest.js +749 -0
  113. package/build/map/next_js/resolveNewRequest.js.map +1 -0
  114. package/build/map/next_js/utils.js +311 -49
  115. package/build/map/next_js/utils.js.map +1 -1
  116. package/build/map/vue_js/getViteConnections.js +293 -0
  117. package/build/map/vue_js/getViteConnections.js.map +1 -0
  118. package/build/map/vue_js/interactive.js +39 -0
  119. package/build/map/vue_js/interactive.js.map +1 -0
  120. package/build/map/vue_js/interactive_helpers/commandHandler.js +285 -0
  121. package/build/map/vue_js/interactive_helpers/commandHandler.js.map +1 -0
  122. package/build/map/vue_js/interactive_helpers/commandHelpers.js +39 -0
  123. package/build/map/vue_js/interactive_helpers/commandHelpers.js.map +1 -0
  124. package/build/map/vue_js/interactive_helpers/helpMenu.js +11 -0
  125. package/build/map/vue_js/interactive_helpers/helpMenu.js.map +1 -0
  126. package/build/map/vue_js/vue_resolveFetch.js +155 -0
  127. package/build/map/vue_js/vue_resolveFetch.js.map +1 -0
  128. package/build/mcp/cli.js +381 -0
  129. package/build/mcp/cli.js.map +1 -0
  130. package/build/mcp/commands.js +147 -0
  131. package/build/mcp/commands.js.map +1 -0
  132. package/build/mcp/config.js +68 -0
  133. package/build/mcp/config.js.map +1 -0
  134. package/build/mcp/index.js +29 -0
  135. package/build/mcp/index.js.map +1 -0
  136. package/build/mcp/providers.js +153 -0
  137. package/build/mcp/providers.js.map +1 -0
  138. package/build/mcp/tools.js +185 -0
  139. package/build/mcp/tools.js.map +1 -0
  140. package/build/run/index.js +40 -16
  141. package/build/run/index.js.map +1 -1
  142. package/build/strings/index.js +5 -1
  143. package/build/strings/index.js.map +1 -1
  144. package/build/utility/makeReq.js +90 -63
  145. package/build/utility/makeReq.js.map +1 -1
  146. package/build/utility/openapiGenerator.js +46 -2
  147. package/build/utility/openapiGenerator.js.map +1 -1
  148. package/build/utility/postmanGenerator.js +163 -0
  149. package/build/utility/postmanGenerator.js.map +1 -0
  150. package/build/utility/puppeteerInstance.js +5 -0
  151. package/build/utility/puppeteerInstance.js.map +1 -0
  152. package/package.json +11 -4
@@ -1 +1 @@
1
- {"version":3,"file":"vue_SingleJsFileOnHome.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_SingleJsFileOnHome.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;AAEnC,MAAM,sBAAsB,GAAG,CAAO,GAAW,EAAE,EAAE;IACjD,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,mCAAmC;IACnC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAEzC,0CAA0C;IAC1C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAExC,8CAA8C;IAC9C,gDAAgD;IAChD,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,sBAAsB,EAAE,CAAC;YACzB,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,gDAAgD;IAChD,IAAI,sBAAsB,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,gDAAgD;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAExD,+BAA+B;IAC/B,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAE5C,oBAAoB;IACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sEAAsE,CAAC,CAAC,CAAC;IAElG,kBAAkB;IAClB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7E,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,mCAAmC;IACnC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IAErC,oBAAoB;IACpB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE;QAChC,UAAU,EAAE,aAAa;QACzB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;QAC9B,aAAa,EAAE,IAAI;KACtB,CAAC,CAAC;IAEH,mBAAmB;IACnB,IAAI,mBAAmB,GAAa,EAAE,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE;QACV,eAAe,CAAC,IAAI;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,MAAM,cAAc,GAAa,EAAE,CAAC;YACpC,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,eAAe,GAAG,IAAI,CAAC;YAE3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,uCAAuC;gBACvC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC/C,eAAe,GAAG,KAAK,CAAC;oBACxB,MAAM;gBACV,CAAC;gBAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;gBAC5B,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,KAAK,GAAG,IAAI,CAAC;oBACb,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;qBAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,oEAAoE;oBACpE,eAAe,GAAG,KAAK,CAAC;oBACxB,MAAM;gBACV,CAAC;YACL,CAAC;YAED,IAAI,eAAe,IAAI,KAAK,EAAE,CAAC;gBAC3B,mBAAmB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;KACJ,CAAC,CAAC;IAEH,+EAA+E;IAC/E,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAEpC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;QACxC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC,CAAA,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"vue_SingleJsFileOnHome.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_SingleJsFileOnHome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import chalk from "chalk";
11
+ import vue_pageSrc from "./vue_pageSrc.js";
12
+ import vue_runtimeJs from "./vue_RuntimeJs.js";
13
+ import vue_singleJsFileOnHome from "./vue_SingleJsFileOnHome.js";
14
+ import vue_severalJsFilesHome from "./vue_severalJsFilesHome.js";
15
+ import vue_jsImports from "./vue_jsImports.js";
16
+ import vue_reconstructSourceMaps from "./vue_reconstructSourceMaps.js";
17
+ import vue_getClientSidePaths from "./vue_getClientSidePaths.js";
18
+ import vue_viteMapDeps from "./vue_viteMapDeps.js";
19
+ import vue_stringJsFiles from "./vue_stringJsFiles.js";
20
+ /**
21
+ * Runs the full Vue.js JS-file discovery pipeline against a single URL.
22
+ *
23
+ * Combines all the per-URL discovery techniques (page source script tags,
24
+ * runtime.js chunks, single/several JS files on home, import statements,
25
+ * source-map reconstruction) into one reusable flow, and also surfaces the
26
+ * client-side paths found in the discovered files so callers can recurse.
27
+ *
28
+ * @param onFilesDiscovered Called with each batch of newly found URLs so the
29
+ * caller can start downloading them immediately rather than waiting for the
30
+ * full pipeline to finish.
31
+ */
32
+ const vue_discoverJsFiles = (url_1, ...args_1) => __awaiter(void 0, [url_1, ...args_1], void 0, function* (url, maxJsSizeMb = 2, onFilesDiscovered) {
33
+ let jsFiles = [];
34
+ const emit = (files) => {
35
+ jsFiles.push(...files);
36
+ if (files.length > 0 && onFilesDiscovered) {
37
+ onFilesDiscovered(files.map((f) => (f.startsWith("//") ? "https:" + f : f)));
38
+ }
39
+ };
40
+ // first, get all the JS files from the page source
41
+ emit(yield vue_pageSrc(url));
42
+ // method 1: through runtime.<hash>.js
43
+ emit(yield vue_runtimeJs(url));
44
+ // single JS file on the page (typically dev-mode)
45
+ const fromSingleJs = yield vue_singleJsFileOnHome(url);
46
+ emit(fromSingleJs);
47
+ if (fromSingleJs.length > 0) {
48
+ console.log(chalk.green(`[✓] Found ${fromSingleJs.length} files from the single JS file on home`));
49
+ }
50
+ // several JS files referenced directly on the page
51
+ emit(yield vue_severalJsFilesHome(url));
52
+ // scan page-loaded JS files for Vite's __vite__mapDeps chunk manifest
53
+ const fromViteMapDeps = yield vue_viteMapDeps(jsFiles, maxJsSizeMb);
54
+ emit(fromViteMapDeps);
55
+ if (fromViteMapDeps.length > 0) {
56
+ console.log(chalk.green(`[✓] Found ${fromViteMapDeps.length} files from __vite__mapDeps`));
57
+ }
58
+ // walk the import graph of everything found so far
59
+ const fromImports = yield vue_jsImports(url, jsFiles, maxJsSizeMb);
60
+ emit(fromImports);
61
+ if (fromImports.length > 0) {
62
+ console.log(chalk.green(`[✓] Found ${fromImports.length} files from import statements`));
63
+ }
64
+ // scan string literals inside known JS files for .js references
65
+ const fromStringRefs = yield vue_stringJsFiles(jsFiles, maxJsSizeMb);
66
+ emit(fromStringRefs);
67
+ if (fromStringRefs.length > 0) {
68
+ console.log(chalk.green(`[✓] Found ${fromStringRefs.length} files from string literal JS references`));
69
+ }
70
+ // reconstruct sourceMappingURL references
71
+ const fromSourceMaps = yield vue_reconstructSourceMaps(url, jsFiles);
72
+ emit(fromSourceMaps);
73
+ if (fromSourceMaps.length > 0) {
74
+ console.log(chalk.green(`[✓] Found ${fromSourceMaps.length} files from reconstructing source maps`));
75
+ }
76
+ jsFiles = [...new Set(jsFiles)].map((f) => (f.startsWith("//") ? "https:" + f : f));
77
+ // surface client-side paths so the caller can recurse into them
78
+ const clientSidePaths = yield vue_getClientSidePaths(url, jsFiles, maxJsSizeMb);
79
+ return { jsFiles, clientSidePaths: [...new Set(clientSidePaths)] };
80
+ });
81
+ export default vue_discoverJsFiles;
82
+ //# sourceMappingURL=vue_discoverJsFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue_discoverJsFiles.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_discoverJsFiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import makeRequest from "../../utility/makeReq.js";
11
+ import _traverse from "@babel/traverse";
12
+ import chalk from "chalk";
13
+ import cliProgress from "cli-progress";
14
+ import parser from "@babel/parser";
15
+ import t from "@babel/types";
16
+ const traverse = _traverse.default;
17
+ const vue_getClientSidePaths = (url_1, jsFiles_1, ...args_1) => __awaiter(void 0, [url_1, jsFiles_1, ...args_1], void 0, function* (url, jsFiles, maxJsSizeMb = 2) {
18
+ const MAX_JS_SIZE_BYTES = maxJsSizeMb * 1024 * 1024;
19
+ let toReturn = [];
20
+ const baseOrigin = new URL(url).origin;
21
+ const bar = new cliProgress.SingleBar({
22
+ format: chalk.cyan("[i] Extracting client-side paths ") +
23
+ "[{bar}] {percentage}% | {value}/{total} files | {paths} paths | {skipped} skipped",
24
+ barCompleteChar: "█",
25
+ barIncompleteChar: "░",
26
+ hideCursor: false,
27
+ clearOnComplete: false,
28
+ stopOnComplete: false,
29
+ }, cliProgress.Presets.shades_classic);
30
+ let processed = 0;
31
+ let skipped = 0;
32
+ bar.start(jsFiles.length, 0, { paths: 0, skipped: 0 });
33
+ // iterate through all those
34
+ for (const jsFile of jsFiles) {
35
+ if (!jsFile.endsWith(".js")) {
36
+ processed++;
37
+ skipped++;
38
+ bar.update(processed, { paths: toReturn.length, skipped });
39
+ continue;
40
+ }
41
+ const req = yield makeRequest(jsFile);
42
+ if (req == null) {
43
+ processed++;
44
+ skipped++;
45
+ bar.update(processed, { paths: toReturn.length, skipped });
46
+ continue;
47
+ }
48
+ const jsContent = yield req.text();
49
+ if (jsContent.length > MAX_JS_SIZE_BYTES) {
50
+ processed++;
51
+ skipped++;
52
+ bar.update(processed, { paths: toReturn.length, skipped });
53
+ continue;
54
+ }
55
+ // load in ast
56
+ let ast;
57
+ try {
58
+ ast = parser.parse(jsContent, {
59
+ sourceType: "unambiguous",
60
+ plugins: ["jsx", "typescript"],
61
+ errorRecovery: true,
62
+ });
63
+ }
64
+ catch (_a) {
65
+ processed++;
66
+ skipped++;
67
+ bar.update(processed, { paths: toReturn.length, skipped });
68
+ continue;
69
+ }
70
+ const jsFileOrigin = new URL(jsFile).origin;
71
+ const pathsBefore = toReturn.length;
72
+ traverse(ast, {
73
+ ObjectProperty(path) {
74
+ const { key, value } = path.node;
75
+ if (t.isIdentifier(key, { name: "link" }) &&
76
+ t.isStringLiteral(value) &&
77
+ t.isObjectExpression(path.parent)) {
78
+ const linkVal = value.value;
79
+ if (linkVal.startsWith("//")) {
80
+ toReturn.push("https:" + linkVal);
81
+ }
82
+ else if (linkVal.startsWith("/")) {
83
+ toReturn.push(baseOrigin + linkVal);
84
+ }
85
+ else if (linkVal.startsWith("http") && new URL(linkVal).origin === jsFileOrigin) {
86
+ toReturn.push(linkVal);
87
+ }
88
+ }
89
+ },
90
+ CallExpression(path) {
91
+ const { callee, arguments: args } = path.node;
92
+ // Match Object.assign(...)
93
+ if (!t.isMemberExpression(callee) ||
94
+ !t.isIdentifier(callee.object, { name: "Object" }) ||
95
+ !t.isIdentifier(callee.property, { name: "assign" }))
96
+ return;
97
+ if (args.length < 2)
98
+ return;
99
+ const [firstArg, secondArg] = args;
100
+ // Match window.<something>.routes
101
+ if (!t.isMemberExpression(firstArg) ||
102
+ !t.isIdentifier(firstArg.property, { name: "routes" }) ||
103
+ !t.isMemberExpression(firstArg.object) ||
104
+ !t.isIdentifier(firstArg.object.object, { name: "window" }))
105
+ return;
106
+ if (!t.isObjectExpression(secondArg))
107
+ return;
108
+ for (const routeEntry of secondArg.properties) {
109
+ if (!t.isObjectProperty(routeEntry) || !t.isObjectExpression(routeEntry.value))
110
+ continue;
111
+ for (const routeProp of routeEntry.value.properties) {
112
+ if (!t.isObjectProperty(routeProp) ||
113
+ !t.isIdentifier(routeProp.key, { name: "tokens" }) ||
114
+ !t.isArrayExpression(routeProp.value))
115
+ continue;
116
+ for (const tokenEl of routeProp.value.elements) {
117
+ if (!t.isArrayExpression(tokenEl))
118
+ continue;
119
+ const [typeEl, valueEl] = tokenEl.elements;
120
+ if (t.isStringLiteral(typeEl, { value: "text" }) && t.isStringLiteral(valueEl)) {
121
+ const pathVal = valueEl.value;
122
+ if (pathVal.startsWith("//")) {
123
+ toReturn.push("https:" + pathVal);
124
+ }
125
+ else if (pathVal.startsWith("/")) {
126
+ toReturn.push(baseOrigin + pathVal);
127
+ }
128
+ else if (pathVal.startsWith("http") && new URL(pathVal).origin === jsFileOrigin) {
129
+ toReturn.push(pathVal);
130
+ }
131
+ }
132
+ }
133
+ }
134
+ }
135
+ },
136
+ });
137
+ processed++;
138
+ if (toReturn.length === pathsBefore)
139
+ skipped++;
140
+ bar.update(processed, { paths: toReturn.length, skipped });
141
+ }
142
+ bar.stop();
143
+ if (toReturn.length > 0) {
144
+ console.log(chalk.green(`[+] Found ${toReturn.length} client-side paths from JS files!`));
145
+ }
146
+ return toReturn;
147
+ });
148
+ export default vue_getClientSidePaths;
149
+ //# sourceMappingURL=vue_getClientSidePaths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue_getClientSidePaths.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_getClientSidePaths.ts"],"names":[],"mappings":"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"}
@@ -12,59 +12,65 @@ import parser from "@babel/parser";
12
12
  import _traverse from "@babel/traverse";
13
13
  import chalk from "chalk";
14
14
  const traverse = _traverse.default;
15
- const parseJsFile = (url) => __awaiter(void 0, void 0, void 0, function* () {
16
- let foundUrls = [];
15
+ const parseJsFile = (url, maxJsSizeMb) => __awaiter(void 0, void 0, void 0, function* () {
16
+ const MAX_JS_SIZE_BYTES = maxJsSizeMb * 1024 * 1024;
17
+ const foundUrls = new Set();
17
18
  const req = yield makeRequest(url);
19
+ if (req == null) {
20
+ console.log(chalk.red(`Failed to fetch ${url}`));
21
+ return foundUrls;
22
+ }
18
23
  const reqText = yield req.text();
19
- const ast = parser.parse(reqText, {
20
- sourceType: "module",
21
- plugins: ["importAssertions"],
22
- });
24
+ if (reqText.length > MAX_JS_SIZE_BYTES) {
25
+ return foundUrls;
26
+ }
27
+ let ast;
28
+ try {
29
+ ast = parser.parse(reqText, {
30
+ sourceType: "module",
31
+ plugins: ["importAssertions"],
32
+ });
33
+ }
34
+ catch (_a) {
35
+ return foundUrls;
36
+ }
23
37
  // get all the import statements
24
38
  traverse(ast, {
25
39
  ImportDeclaration(path) {
26
40
  const source = path.node.source.value;
27
- if (source.startsWith("./")) {
28
- if (!foundUrls.includes(new URL(source, url).href)) {
29
- foundUrls.push(new URL(source, url).href);
30
- }
31
- }
32
- else if (source.startsWith("../")) {
33
- if (!foundUrls.includes(new URL(source, url).href)) {
34
- foundUrls.push(new URL(source, url).href);
35
- }
41
+ if (source.startsWith("./") || source.startsWith("../") || source.startsWith("/")) {
42
+ foundUrls.add(new URL(source, url).href);
36
43
  }
37
44
  else {
38
- // DEBUG
39
45
  console.log(chalk.red(`Found import statement but can't resolve it: ${source} - on ${url}`));
40
46
  }
41
47
  },
42
48
  });
43
49
  return foundUrls;
44
50
  });
45
- const vue_jsImports = (url, foundJsFiles) => __awaiter(void 0, void 0, void 0, function* () {
46
- let foundUrls = [];
47
- let crawledUrls = [];
48
- // iterate through URLs, and get the contents of those
51
+ const vue_jsImports = (url_1, foundJsFiles_1, ...args_1) => __awaiter(void 0, [url_1, foundJsFiles_1, ...args_1], void 0, function* (url, foundJsFiles, maxJsSizeMb = 2) {
52
+ const allDiscoveredUrls = new Set();
53
+ const crawledUrls = new Set(foundJsFiles);
49
54
  for (const jsfile of foundJsFiles) {
50
- const foundUrlsParsed = yield parseJsFile(jsfile);
51
- foundUrls.push(...foundUrlsParsed);
52
- if (!crawledUrls.includes(jsfile)) {
53
- crawledUrls.push(jsfile);
54
- }
55
+ const discovered = yield parseJsFile(jsfile, maxJsSizeMb);
56
+ for (const u of discovered)
57
+ allDiscoveredUrls.add(u);
55
58
  }
56
- // continue crawling until no new URLs are found
57
- while (foundUrls.some((url) => !crawledUrls.includes(url))) {
58
- // iterate through foundUrls
59
- for (const url of foundUrls) {
60
- if (!crawledUrls.includes(url)) {
61
- crawledUrls.push(url);
62
- const foundUrlsParsed = yield parseJsFile(url);
63
- foundUrls.push(...foundUrlsParsed);
59
+ // crawl newly found URLs until no uncrawled ones remain
60
+ let foundNew = true;
61
+ while (foundNew) {
62
+ foundNew = false;
63
+ for (const u of [...allDiscoveredUrls]) {
64
+ if (!crawledUrls.has(u)) {
65
+ foundNew = true;
66
+ crawledUrls.add(u);
67
+ const discovered = yield parseJsFile(u, maxJsSizeMb);
68
+ for (const newU of discovered)
69
+ allDiscoveredUrls.add(newU);
64
70
  }
65
71
  }
66
72
  }
67
- return foundUrls;
73
+ return [...allDiscoveredUrls];
68
74
  });
69
75
  export default vue_jsImports;
70
76
  //# sourceMappingURL=vue_jsImports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vue_jsImports.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_jsImports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vue_jsImports.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_jsImports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import makeRequest from "../../utility/makeReq.js";
11
+ import chalk from "chalk";
12
+ import * as cheerio from "cheerio";
13
+ const vue_pageSrc = (url) => __awaiter(void 0, void 0, void 0, function* () {
14
+ let toReturn = [];
15
+ // first, get the contents of the homepage
16
+ const req = yield makeRequest(url);
17
+ if (req == null) {
18
+ console.log(chalk.red(`Failed to fetch ${url}`));
19
+ return toReturn;
20
+ }
21
+ const homepageContent = yield req.text();
22
+ // get all the script srcs
23
+ const $script = cheerio.load(homepageContent);
24
+ $script("script").each((_, el) => {
25
+ const src = $script(el).attr("src");
26
+ if (src) {
27
+ // construct the full URL if it's a relative path
28
+ if (src.startsWith("http") || src.startsWith("//")) {
29
+ toReturn.push(src);
30
+ }
31
+ else {
32
+ const fullUrl = new URL(src, url).href;
33
+ toReturn.push(fullUrl);
34
+ }
35
+ }
36
+ });
37
+ // get all the link srcs
38
+ const $link = cheerio.load(homepageContent);
39
+ $link("link").each((_, el) => {
40
+ const src = $link(el).attr("href");
41
+ if (src) {
42
+ // check the rel attribute
43
+ const rel = $link(el).attr("rel");
44
+ const asAttr = $link(el).attr("as");
45
+ if (rel && (rel == "modulepreload" || (rel == "preload" && asAttr == "script"))) {
46
+ // construct the full URL if it's a relative path
47
+ if (src.startsWith("http") || src.startsWith("//")) {
48
+ toReturn.push(src);
49
+ }
50
+ else {
51
+ const fullUrl = new URL(src, url).href;
52
+ toReturn.push(fullUrl);
53
+ }
54
+ }
55
+ }
56
+ });
57
+ return toReturn;
58
+ });
59
+ export default vue_pageSrc;
60
+ //# sourceMappingURL=vue_pageSrc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue_pageSrc.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_pageSrc.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,GAAG,CAAO,GAAW,EAAE,EAAE;IACtC,IAAI,QAAQ,GAAa,EAAE,CAAC;IAE5B,0CAA0C;IAC1C,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAEzC,0BAA0B;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,GAAG,EAAE,CAAC;YACN,iDAAiD;YACjD,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACJ,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5C,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,GAAG,EAAE,CAAC;YACN,0BAA0B;YAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,eAAe,IAAI,CAAC,GAAG,IAAI,SAAS,IAAI,MAAM,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC9E,iDAAiD;gBACjD,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACJ,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;oBACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAA,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -17,6 +17,10 @@ const vue_reconstructSourceMaps = (url, jsFilesToDownload) => __awaiter(void 0,
17
17
  return sourceMapUrls;
18
18
  }
19
19
  const req = yield makeRequest(jsFilesToDownload[0]);
20
+ if (req == null) {
21
+ console.log(chalk.red(`Failed to fetch ${jsFilesToDownload[0]}`));
22
+ return sourceMapUrls;
23
+ }
20
24
  const content = yield req.text();
21
25
  // check if it has the sourceMappingURL
22
26
  if (!(content.includes("sourceMappingURL=") || content.includes("sourceMappingURL ="))) {
@@ -26,6 +30,10 @@ const vue_reconstructSourceMaps = (url, jsFilesToDownload) => __awaiter(void 0,
26
30
  // now that one file has this, iterate through all the files, and reconstruct the source maps
27
31
  for (const jsFile of jsFilesToDownload) {
28
32
  const req = yield makeRequest(jsFile);
33
+ if (req == null) {
34
+ console.log(chalk.red(`Failed to fetch ${jsFile}`));
35
+ continue;
36
+ }
29
37
  const content = yield req.text();
30
38
  // get the sourceMappingURL
31
39
  let sourceMappingURL_reg = content.match(/sourceMappingURL=([^"]+)/);
@@ -1 +1 @@
1
- {"version":3,"file":"vue_reconstructSourceMaps.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_reconstructSourceMaps.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,yBAAyB,GAAG,CAAO,GAAW,EAAE,iBAA2B,EAAE,EAAE;IACjF,2EAA2E;IAE3E,IAAI,aAAa,GAAa,EAAE,CAAC;IACjC,4BAA4B;IAC5B,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAEjC,uCAAuC;IACvC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC;QACrF,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAEvD,6FAA6F;IAC7F,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjC,2BAA2B;QAC3B,IAAI,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACrE,IAAI,oBAAoB,EAAE,CAAC;YACvB,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEpE,sBAAsB;YACtB,IAAI,gBAAgB,GAAW,EAAE,CAAC;YAClC,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,gBAAgB,CAAC;YACjE,CAAC;iBAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,gBAAgB,GAAG,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;iBAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,gBAAgB,GAAG,gBAAgB,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACJ,gBAAgB,GAAG,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;YAED,gEAAgE;YAChE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC,CAAA,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"vue_reconstructSourceMaps.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_reconstructSourceMaps.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,yBAAyB,GAAG,CAAO,GAAW,EAAE,iBAA2B,EAAE,EAAE;IACjF,2EAA2E;IAE3E,IAAI,aAAa,GAAa,EAAE,CAAC;IACjC,4BAA4B;IAC5B,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAEjC,uCAAuC;IACvC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC;QACrF,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAEvD,6FAA6F;IAC7F,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC,CAAC;YACpD,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjC,2BAA2B;QAC3B,IAAI,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACrE,IAAI,oBAAoB,EAAE,CAAC;YACvB,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEpE,sBAAsB;YACtB,IAAI,gBAAgB,GAAW,EAAE,CAAC;YAClC,IAAI,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,gBAAgB,CAAC;YACjE,CAAC;iBAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,gBAAgB,GAAG,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;iBAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,gBAAgB,GAAG,gBAAgB,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACJ,gBAAgB,GAAG,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;YAED,gEAAgE;YAChE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC,CAAA,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,136 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import chalk from "chalk";
11
+ import cliProgress from "cli-progress";
12
+ import vue_discoverJsFiles from "./vue_discoverJsFiles.js";
13
+ /**
14
+ * Recursively walks newly discovered Vue.js client-side paths.
15
+ *
16
+ * For each path, runs the same discovery pipeline used on the entry URL
17
+ * (via {@link vue_discoverJsFiles}), collects every JS file it finds and
18
+ * queues any new client-side paths surfaced from those files. Paths are
19
+ * tracked in a visited set so each URL is only processed once.
20
+ *
21
+ * Termination conditions:
22
+ * - the pending queue is exhausted, or
23
+ * - {@link STAGNATION_LIMIT} consecutive rounds yield no new JS files.
24
+ */
25
+ const STAGNATION_LIMIT = 3;
26
+ const vue_recursiveClientSidePathDownload = (clientSidePaths_1, ...args_1) => __awaiter(void 0, [clientSidePaths_1, ...args_1], void 0, function* (clientSidePaths, threads = 1, maxJsSizeMb = 2, onFilesDiscovered) {
27
+ const allJsFiles = new Set();
28
+ const visitedPaths = new Set();
29
+ const knownPaths = new Set();
30
+ let pending = [];
31
+ for (const p of clientSidePaths) {
32
+ if (!knownPaths.has(p)) {
33
+ knownPaths.add(p);
34
+ pending.push(p);
35
+ }
36
+ }
37
+ let stagnantRounds = 0;
38
+ let round = 0;
39
+ if (pending.length === 0) {
40
+ return [];
41
+ }
42
+ const bar = new cliProgress.SingleBar({
43
+ format: chalk.cyan("[i] Recursing client-side paths ") +
44
+ "[{bar}] {percentage}% | {value}/{total} paths | round {round} | {jsFiles} JS files | {stagnant} stagnant",
45
+ barCompleteChar: "█",
46
+ barIncompleteChar: "░",
47
+ hideCursor: false,
48
+ clearOnComplete: false,
49
+ stopOnComplete: false,
50
+ etaBuffer: 50,
51
+ }, cliProgress.Presets.shades_classic);
52
+ bar.start(knownPaths.size, 0, {
53
+ round: 0,
54
+ jsFiles: 0,
55
+ stagnant: `0/${STAGNATION_LIMIT}`,
56
+ });
57
+ const refreshBar = () => {
58
+ bar.setTotal(knownPaths.size);
59
+ bar.update(visitedPaths.size, {
60
+ round,
61
+ jsFiles: allJsFiles.size,
62
+ stagnant: `${stagnantRounds}/${STAGNATION_LIMIT}`,
63
+ });
64
+ };
65
+ try {
66
+ while (pending.length > 0) {
67
+ const batch = pending.filter((p) => !visitedPaths.has(p));
68
+ pending = [];
69
+ if (batch.length === 0)
70
+ break;
71
+ round++;
72
+ const sizeBeforeRound = allJsFiles.size;
73
+ const errors = [];
74
+ let cursor = 0;
75
+ const workerCount = Math.max(1, Math.min(threads, batch.length));
76
+ const worker = () => __awaiter(void 0, void 0, void 0, function* () {
77
+ while (cursor < batch.length) {
78
+ const path = batch[cursor++];
79
+ try {
80
+ const { jsFiles, clientSidePaths: newPaths } = yield vue_discoverJsFiles(path, maxJsSizeMb, onFilesDiscovered);
81
+ for (const file of jsFiles) {
82
+ allJsFiles.add(file);
83
+ }
84
+ for (const newPath of newPaths) {
85
+ if (!knownPaths.has(newPath)) {
86
+ knownPaths.add(newPath);
87
+ pending.push(newPath);
88
+ }
89
+ }
90
+ }
91
+ catch (err) {
92
+ errors.push(`[!] Failed to recurse into ${path}: ${err instanceof Error ? err.message : String(err)}`);
93
+ }
94
+ finally {
95
+ visitedPaths.add(path);
96
+ refreshBar();
97
+ }
98
+ }
99
+ });
100
+ yield Promise.all(Array.from({ length: workerCount }, () => worker()));
101
+ if (errors.length > 0) {
102
+ bar.stop();
103
+ for (const msg of errors) {
104
+ console.log(chalk.red(msg));
105
+ }
106
+ bar.start(knownPaths.size, visitedPaths.size, {
107
+ round,
108
+ jsFiles: allJsFiles.size,
109
+ stagnant: `${stagnantRounds}/${STAGNATION_LIMIT}`,
110
+ });
111
+ }
112
+ const newFilesThisRound = allJsFiles.size - sizeBeforeRound;
113
+ if (newFilesThisRound === 0) {
114
+ stagnantRounds++;
115
+ refreshBar();
116
+ if (stagnantRounds >= STAGNATION_LIMIT) {
117
+ bar.stop();
118
+ console.log(chalk.yellow(`[!] Stopping recursion: ${STAGNATION_LIMIT} consecutive rounds without new JS files`));
119
+ break;
120
+ }
121
+ }
122
+ else {
123
+ stagnantRounds = 0;
124
+ }
125
+ }
126
+ }
127
+ finally {
128
+ bar.stop();
129
+ }
130
+ if (allJsFiles.size > 0) {
131
+ console.log(chalk.green(`[✓] Recursive client-side discovery yielded ${allJsFiles.size} JS file(s) across ${visitedPaths.size} path(s)`));
132
+ }
133
+ return [...allJsFiles];
134
+ });
135
+ export default vue_recursiveClientSidePathDownload;
136
+ //# sourceMappingURL=vue_recursiveClientSidePathDownload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue_recursiveClientSidePathDownload.js","sourceRoot":"","sources":["../../../src/lazyLoad/vue/vue_recursiveClientSidePathDownload.ts"],"names":[],"mappings":"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"}