@teambit/dependencies 1.0.330 → 1.0.331

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 (276) hide show
  1. package/artifacts/__bit_junit.xml +203 -5
  2. package/artifacts/schema.json +2016 -1173
  3. package/dependencies-loader/apply-overrides.ts +3 -3
  4. package/dependencies-loader/auto-detect-deps.ts +16 -13
  5. package/dependencies-loader/dependencies-loader.ts +1 -1
  6. package/dist/dependencies-loader/apply-overrides.js +12 -5
  7. package/dist/dependencies-loader/apply-overrides.js.map +1 -1
  8. package/dist/dependencies-loader/auto-detect-deps.d.ts +4 -4
  9. package/dist/dependencies-loader/auto-detect-deps.js +14 -14
  10. package/dist/dependencies-loader/auto-detect-deps.js.map +1 -1
  11. package/dist/dependencies-loader/dependencies-loader.js +4 -4
  12. package/dist/dependencies-loader/dependencies-loader.js.map +1 -1
  13. package/dist/files-dependency-builder/build-tree.d.ts +11 -0
  14. package/dist/files-dependency-builder/build-tree.js +233 -0
  15. package/dist/files-dependency-builder/build-tree.js.map +1 -0
  16. package/dist/files-dependency-builder/build-tree.spec.d.ts +1 -0
  17. package/dist/files-dependency-builder/build-tree.spec.js +154 -0
  18. package/dist/files-dependency-builder/build-tree.spec.js.map +1 -0
  19. package/dist/files-dependency-builder/dependency-tree/Config.d.ts +4 -0
  20. package/dist/files-dependency-builder/dependency-tree/Config.js +74 -0
  21. package/dist/files-dependency-builder/dependency-tree/Config.js.map +1 -0
  22. package/dist/files-dependency-builder/dependency-tree/index.d.ts +15 -0
  23. package/dist/files-dependency-builder/dependency-tree/index.js +272 -0
  24. package/dist/files-dependency-builder/dependency-tree/index.js.map +1 -0
  25. package/dist/files-dependency-builder/dependency-tree/index.spec.d.ts +1 -0
  26. package/dist/files-dependency-builder/dependency-tree/index.spec.js +877 -0
  27. package/dist/files-dependency-builder/dependency-tree/index.spec.js.map +1 -0
  28. package/dist/files-dependency-builder/detectives/detective-css/index.d.ts +1 -0
  29. package/dist/files-dependency-builder/detectives/detective-css/index.js +18 -0
  30. package/dist/files-dependency-builder/detectives/detective-css/index.js.map +1 -0
  31. package/dist/files-dependency-builder/detectives/detective-es6/index.d.ts +1 -0
  32. package/dist/files-dependency-builder/detectives/detective-es6/index.js +18 -0
  33. package/dist/files-dependency-builder/detectives/detective-es6/index.js.map +1 -0
  34. package/dist/files-dependency-builder/detectives/detective-less/index.d.ts +1 -0
  35. package/dist/files-dependency-builder/detectives/detective-less/index.js +18 -0
  36. package/dist/files-dependency-builder/detectives/detective-less/index.js.map +1 -0
  37. package/dist/files-dependency-builder/detectives/detective-sass/index.d.ts +1 -0
  38. package/dist/files-dependency-builder/detectives/detective-sass/index.js +18 -0
  39. package/dist/files-dependency-builder/detectives/detective-sass/index.js.map +1 -0
  40. package/dist/files-dependency-builder/detectives/detective-scss/index.d.ts +1 -0
  41. package/dist/files-dependency-builder/detectives/detective-scss/index.js +18 -0
  42. package/dist/files-dependency-builder/detectives/detective-scss/index.js.map +1 -0
  43. package/dist/files-dependency-builder/detectives/detective-typescript/index.d.ts +1 -0
  44. package/dist/files-dependency-builder/detectives/detective-typescript/index.js +18 -0
  45. package/dist/files-dependency-builder/detectives/detective-typescript/index.js.map +1 -0
  46. package/dist/files-dependency-builder/detector-hook.d.ts +47 -0
  47. package/dist/files-dependency-builder/detector-hook.js +29 -0
  48. package/dist/files-dependency-builder/detector-hook.js.map +1 -0
  49. package/dist/files-dependency-builder/filing-cabinet/index.d.ts +17 -0
  50. package/dist/files-dependency-builder/filing-cabinet/index.js +140 -0
  51. package/dist/files-dependency-builder/filing-cabinet/index.js.map +1 -0
  52. package/dist/files-dependency-builder/filing-cabinet/index.spec.d.ts +1 -0
  53. package/dist/files-dependency-builder/filing-cabinet/index.spec.js +651 -0
  54. package/dist/files-dependency-builder/filing-cabinet/index.spec.js.map +1 -0
  55. package/dist/files-dependency-builder/fixtures/build-tree/a.d.ts +1 -0
  56. package/dist/files-dependency-builder/fixtures/build-tree/a.js +6 -0
  57. package/dist/files-dependency-builder/fixtures/build-tree/a.js.map +1 -0
  58. package/dist/files-dependency-builder/fixtures/build-tree/b.d.ts +1 -0
  59. package/dist/files-dependency-builder/fixtures/build-tree/b.js +6 -0
  60. package/dist/files-dependency-builder/fixtures/build-tree/b.js.map +1 -0
  61. package/dist/files-dependency-builder/fixtures/build-tree/not-link-file/file-a.d.ts +1 -0
  62. package/dist/files-dependency-builder/fixtures/build-tree/not-link-file/file-a.js +3 -0
  63. package/dist/files-dependency-builder/fixtures/build-tree/not-link-file/file-a.js.map +1 -0
  64. package/dist/files-dependency-builder/fixtures/build-tree/not-link-file/file-b.d.ts +1 -0
  65. package/dist/files-dependency-builder/fixtures/build-tree/not-link-file/file-b.js +3 -0
  66. package/dist/files-dependency-builder/fixtures/build-tree/not-link-file/file-b.js.map +1 -0
  67. package/dist/files-dependency-builder/fixtures/build-tree/not-link-file/file-c.d.ts +1 -0
  68. package/dist/files-dependency-builder/fixtures/build-tree/not-link-file/file-c.js +10 -0
  69. package/dist/files-dependency-builder/fixtures/build-tree/not-link-file/file-c.js.map +1 -0
  70. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/foo.d.ts +1 -0
  71. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/foo.js +3 -0
  72. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/foo.js.map +1 -0
  73. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/index.d.ts +1 -0
  74. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/index.js +21 -0
  75. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/index.js.map +1 -0
  76. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/is-string.d.ts +2 -0
  77. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/is-string.js +18 -0
  78. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/is-string.js.map +1 -0
  79. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/self-cycle.d.ts +2 -0
  80. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/self-cycle.js +20 -0
  81. package/dist/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/self-cycle.js.map +1 -0
  82. package/dist/files-dependency-builder/fixtures/build-tree/unparsed.d.ts +0 -0
  83. package/dist/files-dependency-builder/fixtures/build-tree/unparsed.js +5 -0
  84. package/dist/files-dependency-builder/fixtures/build-tree/unparsed.js.map +1 -0
  85. package/dist/files-dependency-builder/fixtures/dependency-tree/amd/a.d.ts +0 -0
  86. package/dist/files-dependency-builder/fixtures/dependency-tree/amd/a.js +10 -0
  87. package/dist/files-dependency-builder/fixtures/dependency-tree/amd/a.js.map +1 -0
  88. package/dist/files-dependency-builder/fixtures/dependency-tree/amd/b.d.ts +0 -0
  89. package/dist/files-dependency-builder/fixtures/dependency-tree/amd/b.js +10 -0
  90. package/dist/files-dependency-builder/fixtures/dependency-tree/amd/b.js.map +1 -0
  91. package/dist/files-dependency-builder/fixtures/dependency-tree/amd/c.d.ts +0 -0
  92. package/dist/files-dependency-builder/fixtures/dependency-tree/amd/c.js +6 -0
  93. package/dist/files-dependency-builder/fixtures/dependency-tree/amd/c.js.map +1 -0
  94. package/dist/files-dependency-builder/fixtures/dependency-tree/commonjs/a.d.ts +1 -0
  95. package/dist/files-dependency-builder/fixtures/dependency-tree/commonjs/a.js +6 -0
  96. package/dist/files-dependency-builder/fixtures/dependency-tree/commonjs/a.js.map +1 -0
  97. package/dist/files-dependency-builder/fixtures/dependency-tree/commonjs/b.d.ts +1 -0
  98. package/dist/files-dependency-builder/fixtures/dependency-tree/commonjs/b.js +6 -0
  99. package/dist/files-dependency-builder/fixtures/dependency-tree/commonjs/b.js.map +1 -0
  100. package/dist/files-dependency-builder/fixtures/dependency-tree/commonjs/c.d.ts +1 -0
  101. package/dist/files-dependency-builder/fixtures/dependency-tree/commonjs/c.js +6 -0
  102. package/dist/files-dependency-builder/fixtures/dependency-tree/commonjs/c.js.map +1 -0
  103. package/dist/files-dependency-builder/fixtures/dependency-tree/onlyRealDeps/a.d.ts +1 -0
  104. package/dist/files-dependency-builder/fixtures/dependency-tree/onlyRealDeps/a.js +8 -0
  105. package/dist/files-dependency-builder/fixtures/dependency-tree/onlyRealDeps/a.js.map +1 -0
  106. package/dist/files-dependency-builder/fixtures/dependency-tree/webpack/aliased.d.ts +1 -0
  107. package/dist/files-dependency-builder/fixtures/dependency-tree/webpack/aliased.js +6 -0
  108. package/dist/files-dependency-builder/fixtures/dependency-tree/webpack/aliased.js.map +1 -0
  109. package/dist/files-dependency-builder/fixtures/dependency-tree/webpack/unaliased.d.ts +1 -0
  110. package/dist/files-dependency-builder/fixtures/dependency-tree/webpack/unaliased.js +6 -0
  111. package/dist/files-dependency-builder/fixtures/dependency-tree/webpack/unaliased.js.map +1 -0
  112. package/dist/files-dependency-builder/fixtures/filing-cabinet/ast.d.ts +221 -0
  113. package/dist/files-dependency-builder/fixtures/filing-cabinet/ast.js +259 -0
  114. package/dist/files-dependency-builder/fixtures/filing-cabinet/ast.js.map +1 -0
  115. package/dist/files-dependency-builder/fixtures/filing-cabinet/foo.d.ts +2 -0
  116. package/dist/files-dependency-builder/fixtures/filing-cabinet/foo.js +12 -0
  117. package/dist/files-dependency-builder/fixtures/filing-cabinet/foo.js.map +1 -0
  118. package/dist/files-dependency-builder/fixtures/filing-cabinet/foo.scss +1 -0
  119. package/dist/files-dependency-builder/fixtures/filing-cabinet/foo2.scss +0 -0
  120. package/dist/files-dependency-builder/fixtures/filing-cabinet/mockedJSFiles.d.ts +59 -0
  121. package/dist/files-dependency-builder/fixtures/filing-cabinet/mockedJSFiles.js +65 -0
  122. package/dist/files-dependency-builder/fixtures/filing-cabinet/mockedJSFiles.js.map +1 -0
  123. package/dist/files-dependency-builder/fixtures/filing-cabinet/root1/mod1.d.ts +1 -0
  124. package/dist/files-dependency-builder/fixtures/filing-cabinet/root1/mod1.js +5 -0
  125. package/dist/files-dependency-builder/fixtures/filing-cabinet/root1/mod1.js.map +1 -0
  126. package/dist/files-dependency-builder/fixtures/filing-cabinet/root2/mod2.d.ts +1 -0
  127. package/dist/files-dependency-builder/fixtures/filing-cabinet/root2/mod2.js +5 -0
  128. package/dist/files-dependency-builder/fixtures/filing-cabinet/root2/mod2.js.map +1 -0
  129. package/dist/files-dependency-builder/fixtures/filing-cabinet/webpack.config.d.ts +6 -0
  130. package/dist/files-dependency-builder/fixtures/filing-cabinet/webpack.config.js +12 -0
  131. package/dist/files-dependency-builder/fixtures/filing-cabinet/webpack.config.js.map +1 -0
  132. package/dist/files-dependency-builder/fixtures/missing-deps.d.ts +0 -0
  133. package/dist/files-dependency-builder/fixtures/missing-deps.js +5 -0
  134. package/dist/files-dependency-builder/fixtures/missing-deps.js.map +1 -0
  135. package/dist/files-dependency-builder/fixtures/precinct/Gruntfile.d.ts +2 -0
  136. package/dist/files-dependency-builder/fixtures/precinct/Gruntfile.js +24 -0
  137. package/dist/files-dependency-builder/fixtures/precinct/Gruntfile.js.map +1 -0
  138. package/dist/files-dependency-builder/fixtures/precinct/amd.d.ts +0 -0
  139. package/dist/files-dependency-builder/fixtures/precinct/amd.js +6 -0
  140. package/dist/files-dependency-builder/fixtures/precinct/amd.js.map +1 -0
  141. package/dist/files-dependency-builder/fixtures/precinct/bar.foo +1 -0
  142. package/dist/files-dependency-builder/fixtures/precinct/cjsExportLazy.d.ts +6 -0
  143. package/dist/files-dependency-builder/fixtures/precinct/cjsExportLazy.js +11 -0
  144. package/dist/files-dependency-builder/fixtures/precinct/cjsExportLazy.js.map +1 -0
  145. package/dist/files-dependency-builder/fixtures/precinct/commonjs.d.ts +1 -0
  146. package/dist/files-dependency-builder/fixtures/precinct/commonjs.js +7 -0
  147. package/dist/files-dependency-builder/fixtures/precinct/commonjs.js.map +1 -0
  148. package/dist/files-dependency-builder/fixtures/precinct/coreModules.d.ts +1 -0
  149. package/dist/files-dependency-builder/fixtures/precinct/coreModules.js +9 -0
  150. package/dist/files-dependency-builder/fixtures/precinct/coreModules.js.map +1 -0
  151. package/dist/files-dependency-builder/fixtures/precinct/es6.d.ts +1 -0
  152. package/dist/files-dependency-builder/fixtures/precinct/es6.js +15 -0
  153. package/dist/files-dependency-builder/fixtures/precinct/es6.js.map +1 -0
  154. package/dist/files-dependency-builder/fixtures/precinct/es6MixedExportLazy.d.ts +5 -0
  155. package/dist/files-dependency-builder/fixtures/precinct/es6MixedExportLazy.js +15 -0
  156. package/dist/files-dependency-builder/fixtures/precinct/es6MixedExportLazy.js.map +1 -0
  157. package/dist/files-dependency-builder/fixtures/precinct/es7.d.ts +1 -0
  158. package/dist/files-dependency-builder/fixtures/precinct/es7.js +7 -0
  159. package/dist/files-dependency-builder/fixtures/precinct/es7.js.map +1 -0
  160. package/dist/files-dependency-builder/fixtures/precinct/exampleAST.d.ts +24 -0
  161. package/dist/files-dependency-builder/fixtures/precinct/exampleAST.js +30 -0
  162. package/dist/files-dependency-builder/fixtures/precinct/exampleAST.js.map +1 -0
  163. package/dist/files-dependency-builder/fixtures/precinct/foo.foo +1 -0
  164. package/dist/files-dependency-builder/fixtures/precinct/styles.css +6 -0
  165. package/dist/files-dependency-builder/fixtures/precinct/styles.less +4 -0
  166. package/dist/files-dependency-builder/fixtures/precinct/styles.sass +2 -0
  167. package/dist/files-dependency-builder/fixtures/precinct/styles.scss +3 -0
  168. package/dist/files-dependency-builder/fixtures/precinct/styles.styl +5 -0
  169. package/dist/files-dependency-builder/fixtures/precinct/typescript.d.ts +0 -0
  170. package/dist/files-dependency-builder/fixtures/precinct/typescript.js +11 -0
  171. package/dist/files-dependency-builder/fixtures/precinct/typescript.js.map +1 -0
  172. package/dist/files-dependency-builder/fixtures/precinct/unparseable.d.ts +0 -0
  173. package/dist/files-dependency-builder/fixtures/precinct/unparseable.js +9 -0
  174. package/dist/files-dependency-builder/fixtures/precinct/unparseable.js.map +1 -0
  175. package/dist/files-dependency-builder/fixtures/unsupported-file.pdf +0 -0
  176. package/dist/files-dependency-builder/generate-tree-madge.d.ts +31 -0
  177. package/dist/files-dependency-builder/generate-tree-madge.js +196 -0
  178. package/dist/files-dependency-builder/generate-tree-madge.js.map +1 -0
  179. package/dist/files-dependency-builder/index.d.ts +3 -0
  180. package/dist/files-dependency-builder/index.js +34 -0
  181. package/dist/files-dependency-builder/index.js.map +1 -0
  182. package/dist/files-dependency-builder/missing-handler.d.ts +34 -0
  183. package/dist/files-dependency-builder/missing-handler.js +107 -0
  184. package/dist/files-dependency-builder/missing-handler.js.map +1 -0
  185. package/dist/files-dependency-builder/path-map.d.ts +20 -0
  186. package/dist/files-dependency-builder/path-map.js +46 -0
  187. package/dist/files-dependency-builder/path-map.js.map +1 -0
  188. package/dist/files-dependency-builder/precinct/index.d.ts +22 -0
  189. package/dist/files-dependency-builder/precinct/index.js +306 -0
  190. package/dist/files-dependency-builder/precinct/index.js.map +1 -0
  191. package/dist/files-dependency-builder/precinct/index.spec.d.ts +1 -0
  192. package/dist/files-dependency-builder/precinct/index.spec.js +300 -0
  193. package/dist/files-dependency-builder/precinct/index.spec.js.map +1 -0
  194. package/dist/files-dependency-builder/types/dependency-tree-type.d.ts +35 -0
  195. package/dist/files-dependency-builder/types/dependency-tree-type.js +34 -0
  196. package/dist/files-dependency-builder/types/dependency-tree-type.js.map +1 -0
  197. package/dist/files-dependency-builder/types/index.d.ts +0 -0
  198. package/dist/files-dependency-builder/types/index.js +7 -0
  199. package/dist/files-dependency-builder/types/index.js.map +1 -0
  200. package/dist/index.d.ts +1 -0
  201. package/dist/index.js +25 -0
  202. package/dist/index.js.map +1 -1
  203. package/dist/resolve-pkg-data.d.ts +23 -0
  204. package/dist/resolve-pkg-data.js +157 -0
  205. package/dist/resolve-pkg-data.js.map +1 -0
  206. package/files-dependency-builder/build-tree.spec.ts +130 -0
  207. package/files-dependency-builder/build-tree.ts +185 -0
  208. package/files-dependency-builder/dependency-tree/Config.ts +68 -0
  209. package/files-dependency-builder/dependency-tree/index.spec.ts +893 -0
  210. package/files-dependency-builder/dependency-tree/index.ts +244 -0
  211. package/files-dependency-builder/detectives/detective-css/index.ts +1 -0
  212. package/files-dependency-builder/detectives/detective-es6/index.ts +1 -0
  213. package/files-dependency-builder/detectives/detective-less/index.ts +1 -0
  214. package/files-dependency-builder/detectives/detective-sass/index.ts +1 -0
  215. package/files-dependency-builder/detectives/detective-scss/index.ts +1 -0
  216. package/files-dependency-builder/detectives/detective-typescript/index.ts +1 -0
  217. package/files-dependency-builder/detector-hook.ts +69 -0
  218. package/files-dependency-builder/filing-cabinet/index.spec.ts +718 -0
  219. package/files-dependency-builder/filing-cabinet/index.ts +119 -0
  220. package/files-dependency-builder/fixtures/build-tree/a.js +2 -0
  221. package/files-dependency-builder/fixtures/build-tree/b.js +2 -0
  222. package/files-dependency-builder/fixtures/build-tree/not-link-file/file-a.js +2 -0
  223. package/files-dependency-builder/fixtures/build-tree/not-link-file/file-b.js +4 -0
  224. package/files-dependency-builder/fixtures/build-tree/not-link-file/file-c.js +3 -0
  225. package/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/foo.js +2 -0
  226. package/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/index.js +2 -0
  227. package/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/is-string.js +3 -0
  228. package/files-dependency-builder/fixtures/build-tree/tree-shaking-cycle/self-cycle.js +3 -0
  229. package/files-dependency-builder/fixtures/build-tree/unparsed.js +2 -0
  230. package/files-dependency-builder/fixtures/dependency-tree/amd/a.js +6 -0
  231. package/files-dependency-builder/fixtures/dependency-tree/amd/b.js +6 -0
  232. package/files-dependency-builder/fixtures/dependency-tree/amd/c.js +2 -0
  233. package/files-dependency-builder/fixtures/dependency-tree/commonjs/a.js +2 -0
  234. package/files-dependency-builder/fixtures/dependency-tree/commonjs/b.js +3 -0
  235. package/files-dependency-builder/fixtures/dependency-tree/commonjs/c.js +3 -0
  236. package/files-dependency-builder/fixtures/dependency-tree/onlyRealDeps/a.js +4 -0
  237. package/files-dependency-builder/fixtures/dependency-tree/webpack/aliased.js +2 -0
  238. package/files-dependency-builder/fixtures/dependency-tree/webpack/unaliased.js +2 -0
  239. package/files-dependency-builder/fixtures/filing-cabinet/ast.js +266 -0
  240. package/files-dependency-builder/fixtures/filing-cabinet/foo.jsx +3 -0
  241. package/files-dependency-builder/fixtures/filing-cabinet/foo.scss +1 -0
  242. package/files-dependency-builder/fixtures/filing-cabinet/foo2.scss +0 -0
  243. package/files-dependency-builder/fixtures/filing-cabinet/mockedJSFiles.js +61 -0
  244. package/files-dependency-builder/fixtures/filing-cabinet/root1/mod1.js +1 -0
  245. package/files-dependency-builder/fixtures/filing-cabinet/root2/mod2.js +1 -0
  246. package/files-dependency-builder/fixtures/filing-cabinet/webpack.config.js +8 -0
  247. package/files-dependency-builder/fixtures/missing-deps.js +2 -0
  248. package/files-dependency-builder/fixtures/precinct/Gruntfile.js +22 -0
  249. package/files-dependency-builder/fixtures/precinct/amd.js +2 -0
  250. package/files-dependency-builder/fixtures/precinct/bar.foo +1 -0
  251. package/files-dependency-builder/fixtures/precinct/cjsExportLazy.js +7 -0
  252. package/files-dependency-builder/fixtures/precinct/commonjs.js +3 -0
  253. package/files-dependency-builder/fixtures/precinct/coreModules.js +5 -0
  254. package/files-dependency-builder/fixtures/precinct/es6.js +4 -0
  255. package/files-dependency-builder/fixtures/precinct/es6MixedExportLazy.js +7 -0
  256. package/files-dependency-builder/fixtures/precinct/es7.js +3 -0
  257. package/files-dependency-builder/fixtures/precinct/exampleAST.js +32 -0
  258. package/files-dependency-builder/fixtures/precinct/foo.foo +1 -0
  259. package/files-dependency-builder/fixtures/precinct/styles.css +6 -0
  260. package/files-dependency-builder/fixtures/precinct/styles.less +4 -0
  261. package/files-dependency-builder/fixtures/precinct/styles.sass +2 -0
  262. package/files-dependency-builder/fixtures/precinct/styles.scss +3 -0
  263. package/files-dependency-builder/fixtures/precinct/styles.styl +5 -0
  264. package/files-dependency-builder/fixtures/precinct/typescript.ts +8 -0
  265. package/files-dependency-builder/fixtures/precinct/unparseable.js +6 -0
  266. package/files-dependency-builder/fixtures/unsupported-file.pdf +0 -0
  267. package/files-dependency-builder/generate-tree-madge.ts +200 -0
  268. package/files-dependency-builder/index.ts +5 -0
  269. package/files-dependency-builder/missing-handler.ts +76 -0
  270. package/files-dependency-builder/path-map.ts +38 -0
  271. package/files-dependency-builder/precinct/index.spec.ts +342 -0
  272. package/files-dependency-builder/precinct/index.ts +250 -0
  273. package/files-dependency-builder/types/dependency-tree-type.ts +46 -0
  274. package/files-dependency-builder/types/index.ts +3 -0
  275. package/package.json +37 -13
  276. /package/dist/{preview-1720513025675.js → preview-1720667996237.js} +0 -0
@@ -0,0 +1,718 @@
1
+ import { BIT_TEMP_ROOT } from '@teambit/defender.fs.global-bit-temp-dir';
2
+ import fs from 'fs-extra';
3
+ import assert from 'assert';
4
+ import path from 'path';
5
+ import rewire from 'rewire';
6
+ import sinon from 'sinon';
7
+
8
+ import { DependencyDetector } from '../detector-hook';
9
+
10
+ const UNIT_TEST_DIR = path.join(BIT_TEMP_ROOT, 'unit-test');
11
+
12
+ const cabinetNonDefault = rewire('./');
13
+ const cabinet = cabinetNonDefault.default;
14
+
15
+ const fixtures = path.resolve(`${__dirname}/../fixtures/filing-cabinet`);
16
+
17
+ // eslint-disable-next-line import/no-dynamic-require, global-require
18
+ const mockedFiles = require(`${fixtures}/mockedJSFiles`);
19
+ // eslint-disable-next-line import/no-dynamic-require, global-require
20
+ const mockAST = require(`${fixtures}/ast`);
21
+
22
+ function mockfs(obj: any, acc?: string) {
23
+ Object.entries(obj).forEach(([key, value]) => {
24
+ if (typeof value === 'string') {
25
+ const filePath = acc ? path.join(acc, key) : key;
26
+ const fullFilePath = path.join(UNIT_TEST_DIR, filePath);
27
+ const content = value;
28
+ return fs.outputFileSync(fullFilePath, content);
29
+ }
30
+ mockfs(value, acc ? path.join(acc, key) : key);
31
+ return undefined;
32
+ });
33
+ }
34
+
35
+ function cleanUnitDir() {
36
+ fs.removeSync(UNIT_TEST_DIR);
37
+ }
38
+
39
+ // try {
40
+ // // eslint-disable-next-line global-require
41
+ // require('module-lookup-amd');
42
+ // } catch (err: any) {
43
+ // // eslint-disable-next-line no-console
44
+ // console.log(`mocha suppresses the error, so console.error is needed to show the error on the screen.
45
+ // the problem is with module-lookup-amd that calls requirejs package and uses rewire package.
46
+ // see https://github.com/jhnns/rewire/issues/178 for more details.
47
+ // the error occurs since node v12.16.0. for the time being, to run the tests, use an earlier version.
48
+ // `);
49
+ // // eslint-disable-next-line no-console
50
+ // console.error(err);
51
+ // throw err;
52
+ // }
53
+
54
+ describe('filing-cabinet', () => {
55
+ describe('JavaScript', () => {
56
+ beforeEach(() => {
57
+ mockfs(mockedFiles);
58
+ });
59
+
60
+ afterEach(() => {
61
+ cleanUnitDir();
62
+ });
63
+
64
+ it('uses a generic resolve for unsupported file extensions', () => {
65
+ const resolvedFile = cabinet({
66
+ dependency: './bar',
67
+ filename: `${UNIT_TEST_DIR}/js/commonjs/foo.baz`,
68
+ directory: `${UNIT_TEST_DIR}/js/commonjs/`,
69
+ });
70
+ assert.ok(resolvedFile.endsWith('bar.baz'));
71
+ });
72
+
73
+ describe('when given an ast for a JS file', () => {
74
+ it('reuses the ast when trying to determine the module type', () => {
75
+ const ast = {};
76
+
77
+ const result = cabinet({
78
+ dependency: './bar',
79
+ filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,
80
+ directory: `${UNIT_TEST_DIR}/js/es6/`,
81
+ ast,
82
+ });
83
+ assert.ok(result.endsWith('es6/bar.js'));
84
+ });
85
+
86
+ it('resolves the dependency successfully', () => {
87
+ const result = cabinet({
88
+ dependency: './bar',
89
+ filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,
90
+ directory: `${UNIT_TEST_DIR}/js/es6/`,
91
+ ast: mockAST,
92
+ });
93
+ assert.equal(result, path.join(UNIT_TEST_DIR, 'js/es6/bar.js'));
94
+ });
95
+ });
96
+
97
+ describe('when not given an ast', () => {
98
+ it('uses the filename to look for the module type', () => {
99
+ const options = {
100
+ dependency: './bar',
101
+ filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,
102
+ directory: `${UNIT_TEST_DIR}/js/es6/`,
103
+ };
104
+
105
+ const result = cabinet(options);
106
+ assert.equal(result, path.join(UNIT_TEST_DIR, 'js/es6/bar.js'));
107
+ });
108
+ });
109
+
110
+ describe('es6', () => {
111
+ // TODO: commonJSLookup is not able to be stubbed after the revamp, but keep the test case temporarily for reference
112
+ it.skip('assumes commonjs for es6 modules with no requirejs/webpack config', () => {
113
+ const stub = sinon.stub();
114
+ const revert = cabinetNonDefault.__set__('commonJSLookup', stub);
115
+
116
+ cabinet({
117
+ dependency: './bar',
118
+ filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,
119
+ directory: `${UNIT_TEST_DIR}/js/es6/`,
120
+ });
121
+
122
+ assert.ok(stub.called);
123
+
124
+ revert();
125
+ });
126
+ });
127
+
128
+ describe('jsx', () => {
129
+ it('resolves files with the .jsx extension', () => {
130
+ const result = cabinet({
131
+ dependency: './bar',
132
+ filename: `${UNIT_TEST_DIR}/js/es6/foo.jsx`,
133
+ directory: `${UNIT_TEST_DIR}/js/es6/`,
134
+ });
135
+
136
+ assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/es6/bar.js')}`);
137
+ });
138
+ });
139
+
140
+ // describe('amd', () => {
141
+ // it('uses the amd resolver', () => {
142
+ // const resolvedFile = cabinet({
143
+ // dependency: './bar',
144
+ // filename: `${UNIT_TEST_DIR}/js/amd/foo.js`,
145
+ // directory: `${UNIT_TEST_DIR}/js/amd/`,
146
+ // });
147
+ // assert.ok(resolvedFile.endsWith('amd/bar.js'));
148
+ // });
149
+
150
+ // // skipped as part of lazy loading fix. not seems to be super helpful test
151
+ // it.skip('passes along arguments', () => {
152
+ // const stub = sinon.stub();
153
+ // const revert = cabinet.__set__('amdLookup', stub);
154
+ // const config = { baseUrl: 'js' };
155
+
156
+ // cabinet({
157
+ // dependency: 'bar',
158
+ // config,
159
+ // configPath: 'config.js',
160
+ // filename: `${UNIT_TEST_DIR}/js/amd/foo.js`,
161
+ // directory: `${UNIT_TEST_DIR}/js/amd/`,
162
+ // });
163
+
164
+ // const args = stub.getCall(0).args[0];
165
+
166
+ // assert.equal(args.dependency, 'bar');
167
+ // assert.equal(args.config, config);
168
+ // assert.equal(args.configPath, 'config.js');
169
+ // assert.equal(args.filename, 'js/amd/foo.js');
170
+ // assert.equal(args.directory, 'js/amd/');
171
+
172
+ // assert.ok(stub.called);
173
+
174
+ // revert();
175
+ // });
176
+ // });
177
+
178
+ describe('commonjs', () => {
179
+ // TODO: commonJSLookup is not able to be stubbed after the revamp, but keep the test case temporarily for reference
180
+ it.skip("uses require's resolver", () => {
181
+ const stub = sinon.stub();
182
+ const revert = cabinetNonDefault.__set__('commonJSLookup', stub);
183
+
184
+ cabinet({
185
+ dependency: './bar',
186
+ filename: `${UNIT_TEST_DIR}/js/commonjs/foo.js`,
187
+ directory: `${UNIT_TEST_DIR}/js/commonjs/`,
188
+ });
189
+
190
+ assert.ok(stub.called);
191
+
192
+ revert();
193
+ });
194
+
195
+ it('returns an empty string for an unresolved module', () => {
196
+ const result = cabinet({
197
+ dependency: 'foobar',
198
+ filename: `${UNIT_TEST_DIR}/js/commonjs/foo.js`,
199
+ directory: `${UNIT_TEST_DIR}/js/commonjs/`,
200
+ });
201
+
202
+ assert.equal(result, '');
203
+ });
204
+
205
+ it('adds the directory to the require resolution paths', () => {
206
+ const directory = `${UNIT_TEST_DIR}/js/commonjs/`;
207
+ cabinet({
208
+ dependency: 'foobar',
209
+ filename: `${UNIT_TEST_DIR}/js/commonjs/foo.js`,
210
+ directory,
211
+ });
212
+
213
+ assert.ok(
214
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
215
+ require.main.paths.some(function (p) {
216
+ return p.indexOf(path.normalize(directory)) !== -1;
217
+ })
218
+ );
219
+ });
220
+
221
+ it('resolves a relative dependency about the filename', () => {
222
+ const directory = `${UNIT_TEST_DIR}/js/commonjs/`;
223
+ const filename = `${directory}foo.js`;
224
+
225
+ const result = cabinet({
226
+ dependency: './bar',
227
+ filename,
228
+ directory,
229
+ });
230
+
231
+ assert.equal(result, path.join(path.resolve(directory), 'bar.js'));
232
+ });
233
+
234
+ it("resolves a .. dependency to its parent directory's index.js file", () => {
235
+ const directory = `${UNIT_TEST_DIR}/js/commonjs/`;
236
+ const filename = `${directory}subdir/module.js`;
237
+
238
+ const result = cabinet({
239
+ dependency: '../',
240
+ filename,
241
+ directory,
242
+ });
243
+
244
+ assert.equal(result, path.join(path.resolve(directory), 'index.js'));
245
+ });
246
+
247
+ // @todo: fix
248
+ it.skip('resolves a dependency within a directory outside of the given file', () => {
249
+ const directory = `${UNIT_TEST_DIR}/js/commonjs/`;
250
+ const filename = `${directory}test/index.spec.js`;
251
+
252
+ const result = cabinet({
253
+ dependency: 'subdir',
254
+ filename,
255
+ directory,
256
+ });
257
+
258
+ assert.equal(result, path.join(path.resolve(directory), 'subdir/index.js'));
259
+ });
260
+
261
+ // @todo: fix
262
+ it.skip('resolves a node module with module entry in package.json', () => {
263
+ const directory = `${UNIT_TEST_DIR}/js/commonjs/`;
264
+ const filename = `${directory}module.entry.js`;
265
+
266
+ const result = cabinet({
267
+ dependency: 'module.entry',
268
+ filename,
269
+ directory,
270
+ nodeModulesConfig: {
271
+ entry: 'module',
272
+ },
273
+ });
274
+
275
+ assert.equal(
276
+ result,
277
+ path.join(path.resolve(directory), '..', 'node_modules', 'module.entry', 'index.module.js')
278
+ );
279
+ });
280
+
281
+ it('resolves a nested module', () => {
282
+ const directory = `${UNIT_TEST_DIR}/js/node_modules/nested/`;
283
+ const filename = `${directory}index.js`;
284
+
285
+ const result = cabinet({
286
+ dependency: 'lodash.assign',
287
+ filename,
288
+ directory,
289
+ });
290
+
291
+ assert.equal(result, path.join(path.resolve(directory), 'node_modules', 'lodash.assign', 'index.js'));
292
+ });
293
+
294
+ it('resolves to the index.js file of a directory', () => {
295
+ const directory = `${UNIT_TEST_DIR}/js/withIndex`;
296
+ const filename = `${directory}/index.js`;
297
+
298
+ const result = cabinet({
299
+ dependency: './subdir',
300
+ filename,
301
+ directory,
302
+ });
303
+
304
+ assert.equal(result, path.normalize(`${path.resolve(directory)}/subdir/index.js`));
305
+ });
306
+
307
+ it('resolves implicit .jsx requires', () => {
308
+ const result = cabinet({
309
+ dependency: './bar',
310
+ filename: `${UNIT_TEST_DIR}/js/cjs/foo.js`,
311
+ directory: `${UNIT_TEST_DIR}/js/cjs/`,
312
+ });
313
+
314
+ assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/cjs/bar.jsx')}`);
315
+ });
316
+
317
+ it('resolves implicit .scss requires', () => {
318
+ const result = cabinet({
319
+ dependency: './baz',
320
+ filename: `${UNIT_TEST_DIR}/js/cjs/foo.js`,
321
+ directory: `${UNIT_TEST_DIR}/js/cjs/`,
322
+ });
323
+
324
+ assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/cjs/baz.scss')}`);
325
+ });
326
+
327
+ it('resolves implicit .json requires', () => {
328
+ const result = cabinet({
329
+ dependency: './pkg',
330
+ filename: `${UNIT_TEST_DIR}/js/cjs/foo.js`,
331
+ directory: `${UNIT_TEST_DIR}/js/cjs/`,
332
+ });
333
+
334
+ assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/cjs/pkg.json')}`);
335
+ });
336
+ });
337
+
338
+ describe('typescript', () => {
339
+ it('resolves an import', () => {
340
+ const directory = `${UNIT_TEST_DIR}/js/ts`;
341
+ const filename = `${directory}/index.ts`;
342
+
343
+ const result = cabinet({
344
+ dependency: './foo',
345
+ filename,
346
+ directory,
347
+ });
348
+
349
+ assert.equal(result, path.join(path.resolve(directory), 'foo.ts'));
350
+ });
351
+
352
+ describe('when a dependency does not exist', () => {
353
+ it('returns an empty result', () => {
354
+ const directory = `${UNIT_TEST_DIR}/js/ts`;
355
+ const filename = `${directory}/index.ts`;
356
+
357
+ const result = cabinet({
358
+ dependency: './barbar',
359
+ filename,
360
+ directory,
361
+ });
362
+
363
+ assert.equal(result, '');
364
+ });
365
+ });
366
+ });
367
+ });
368
+
369
+ describe('CSS', () => {
370
+ beforeEach(() => {
371
+ mockfs({
372
+ stylus: {
373
+ 'foo.styl': '',
374
+ 'bar.styl': '',
375
+ },
376
+ sass: {
377
+ 'foo.scss': '',
378
+ 'bar.scss': '',
379
+ 'foo.sass': '',
380
+ 'bar.sass': '',
381
+ },
382
+ less: {
383
+ 'foo.less': '',
384
+ 'bar.less': '',
385
+ 'bar.css': '',
386
+ },
387
+ });
388
+
389
+ // mockJSDir = path.resolve(__dirname, '../');
390
+ });
391
+
392
+ afterEach(() => {
393
+ cleanUnitDir();
394
+ });
395
+
396
+ describe('sass', () => {
397
+ it('uses the sass resolver for .scss files', () => {
398
+ const result = cabinet({
399
+ dependency: 'bar',
400
+ filename: `${UNIT_TEST_DIR}/sass/foo.scss`,
401
+ directory: `${UNIT_TEST_DIR}/sass/`,
402
+ });
403
+
404
+ assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/sass/bar.scss`));
405
+ });
406
+
407
+ it('uses the sass resolver for .sass files', () => {
408
+ const result = cabinet({
409
+ dependency: 'bar',
410
+ filename: `${UNIT_TEST_DIR}/sass/foo.sass`,
411
+ directory: `${UNIT_TEST_DIR}/sass/`,
412
+ });
413
+
414
+ assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/sass/bar.sass`));
415
+ });
416
+ });
417
+
418
+ describe('stylus', () => {
419
+ it('uses the stylus resolver', () => {
420
+ const result = cabinet({
421
+ dependency: 'bar',
422
+ filename: `${UNIT_TEST_DIR}/stylus/foo.styl`,
423
+ directory: `${UNIT_TEST_DIR}/stylus/`,
424
+ });
425
+
426
+ assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/stylus/bar.styl`));
427
+ });
428
+ });
429
+
430
+ describe('less', () => {
431
+ it('resolves extensionless dependencies', () => {
432
+ const result = cabinet({
433
+ dependency: 'bar',
434
+ filename: `${UNIT_TEST_DIR}/less/foo.less`,
435
+ directory: `${UNIT_TEST_DIR}/less/`,
436
+ });
437
+
438
+ assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/less/bar.less`));
439
+ });
440
+
441
+ it('resolves dependencies with a less extension', () => {
442
+ const result = cabinet({
443
+ dependency: 'bar.less',
444
+ filename: `${UNIT_TEST_DIR}/less/foo.less`,
445
+ directory: `${UNIT_TEST_DIR}/less/`,
446
+ });
447
+
448
+ assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/less/bar.less`));
449
+ });
450
+
451
+ it('resolves dependencies with a css extension', () => {
452
+ const result = cabinet({
453
+ dependency: 'bar.css',
454
+ filename: `${UNIT_TEST_DIR}/less/foo.less`,
455
+ directory: `${UNIT_TEST_DIR}/less/`,
456
+ });
457
+
458
+ assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/less/bar.css`));
459
+ });
460
+ });
461
+ });
462
+
463
+ describe('unrecognized extension', () => {
464
+ it('uses a generic resolve for unsupported file extensions', () => {
465
+ const result = cabinet({
466
+ dependency: './bar',
467
+ filename: `${UNIT_TEST_DIR}/barbazim/foo.baz`,
468
+ directory: `${UNIT_TEST_DIR}/barbazim/`,
469
+ });
470
+
471
+ assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/barbazim/bar.baz`));
472
+ });
473
+ });
474
+
475
+ describe('custom env lookups', () => {
476
+ it('supports passing env detectors', () => {
477
+ const detector: DependencyDetector = {
478
+ detect: (fileContent: string) => {
479
+ return fileContent.indexOf('foo') === -1 ? [] : ['foo'];
480
+ },
481
+ isSupported: ({ ext }) => {
482
+ return ext === '.foo';
483
+ },
484
+ dependencyLookup: ({ dependency }) => {
485
+ return `/xyz/${dependency}.baz`;
486
+ },
487
+ type: 'foo',
488
+ };
489
+ const result = cabinet({
490
+ directory: `${UNIT_TEST_DIR}/barbazim/`,
491
+ filename: `${UNIT_TEST_DIR}/barbazim/xxx.foo`,
492
+ ext: '.foo',
493
+ dependency: 'bar',
494
+ envDetectors: [detector],
495
+ });
496
+
497
+ assert.equal(result, '/xyz/bar.baz');
498
+ });
499
+ });
500
+
501
+ describe('.register', () => {
502
+ it('registers a custom resolver for a given extension', () => {
503
+ const stub = sinon.stub().returns('foo.foobar');
504
+ cabinetNonDefault.register('.foobar', stub);
505
+
506
+ const pathResult = cabinet({
507
+ dependency: './bar',
508
+ filename: `${UNIT_TEST_DIR}/js/amd/foo.foobar`,
509
+ directory: `${UNIT_TEST_DIR}/js/amd/`,
510
+ });
511
+
512
+ assert.ok(stub.called);
513
+ assert.equal(pathResult, 'foo.foobar');
514
+ });
515
+
516
+ it('allows does not break default resolvers', () => {
517
+ mockfs({
518
+ stylus: {
519
+ 'foo.styl': '',
520
+ 'bar.styl': '',
521
+ },
522
+ });
523
+
524
+ const stub = sinon.stub().returns('foo');
525
+
526
+ cabinetNonDefault.register('.foobar', stub);
527
+
528
+ cabinet({
529
+ dependency: './bar',
530
+ filename: `${UNIT_TEST_DIR}/js/amd/foo.foobar`,
531
+ directory: `${UNIT_TEST_DIR}/js/amd/`,
532
+ });
533
+
534
+ const result = cabinet({
535
+ dependency: './bar',
536
+ filename: `${UNIT_TEST_DIR}/stylus/foo.styl`,
537
+ directory: `${UNIT_TEST_DIR}/stylus/`,
538
+ });
539
+
540
+ assert.ok(stub.called);
541
+ assert.ok(result);
542
+
543
+ cleanUnitDir();
544
+ });
545
+
546
+ it('can be called multiple times', () => {
547
+ const stub = sinon.stub().returns('foo');
548
+ const stub2 = sinon.stub().returns('foo');
549
+
550
+ cabinetNonDefault.register('.foobar', stub);
551
+ cabinetNonDefault.register('.barbar', stub2);
552
+
553
+ cabinet({
554
+ dependency: './bar',
555
+ filename: `${UNIT_TEST_DIR}/js/amd/foo.foobar`,
556
+ directory: `${UNIT_TEST_DIR}/js/amd/`,
557
+ });
558
+
559
+ cabinet({
560
+ dependency: './bar',
561
+ filename: `${UNIT_TEST_DIR}/js/amd/foo.barbar`,
562
+ directory: `${UNIT_TEST_DIR}/js/amd/`,
563
+ });
564
+
565
+ assert.ok(stub.called);
566
+ assert.ok(stub2.called);
567
+ });
568
+
569
+ it('does not add redundant extensions to supportedFileExtensions', () => {
570
+ const stub = sinon.stub;
571
+ const newExt = '.foobar';
572
+
573
+ cabinetNonDefault.register(newExt, stub);
574
+ cabinetNonDefault.register(newExt, stub);
575
+
576
+ const { supportedFileExtensions } = cabinetNonDefault;
577
+
578
+ assert.equal(supportedFileExtensions.indexOf(newExt), supportedFileExtensions.lastIndexOf(newExt));
579
+ });
580
+ });
581
+
582
+ // skip temporarily to make PR 9000 pass
583
+ describe.skip('.scss with a dependency prefix with a tilda', () => {
584
+ it('should resolve the dependency to a node_module package (using webpack under the hood)', () => {
585
+ const result = cabinet({
586
+ dependency: '~bootstrap/index',
587
+ filename: `${fixtures}/foo.scss`,
588
+ directory: fixtures,
589
+ });
590
+
591
+ assert.equal(result, path.resolve(`${fixtures}/node_modules/bootstrap/index.scss`));
592
+ });
593
+ });
594
+ // skip temporarily to make PR 9000 pass
595
+ describe.skip('.scss with a dependency prefix with a tilda and resolve config', () => {
596
+ describe('when the alias in resolve-config does not match the dependency', () => {
597
+ it('should fallback to the node-module resolution', () => {
598
+ const resolveConfig = { aliases: { '~non-exist': 'some-dir' } };
599
+ const result = cabinet({
600
+ resolveConfig,
601
+ dependency: '~bootstrap/index',
602
+ filename: `${fixtures}/foo.scss`,
603
+ directory: fixtures,
604
+ });
605
+
606
+ assert.equal(result, path.resolve(`${fixtures}/node_modules/bootstrap/index.scss`));
607
+ });
608
+ });
609
+ });
610
+
611
+ // @todo: fix.
612
+ describe.skip('webpack', () => {
613
+ let directory;
614
+
615
+ beforeEach(() => {
616
+ directory = path.resolve(__dirname, '../../../');
617
+ });
618
+
619
+ function testResolution(dependency, expected) {
620
+ const resolved = cabinet({
621
+ dependency,
622
+ filename: `${__dirname}/index.js`,
623
+ directory,
624
+ webpackConfig: `${fixtures}/webpack.config.js`,
625
+ });
626
+
627
+ assert.equal(resolved, path.normalize(expected));
628
+ }
629
+
630
+ it('resolves an aliased path', () => {
631
+ testResolution('R', `${directory}/node_modules/resolve/index.js`);
632
+ });
633
+
634
+ it('resolves a non-aliased path', () => {
635
+ testResolution('resolve', `${directory}/node_modules/resolve/index.js`);
636
+ });
637
+
638
+ it('resolves a relative path', () => {
639
+ testResolution('./test/ast', `${fixtures}/test/ast.js`);
640
+ });
641
+
642
+ it('resolves an absolute path from a file within a subdirectory', () => {
643
+ const resolved = cabinet({
644
+ dependency: 'R',
645
+ filename: `${fixtures}/test/ast.js`,
646
+ directory,
647
+ webpackConfig: `${fixtures}/webpack.config.js`,
648
+ });
649
+
650
+ assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);
651
+ });
652
+
653
+ it('resolves a path using resolve.root', () => {
654
+ const resolved = cabinet({
655
+ dependency: 'mod1',
656
+ filename: `${directory}/index.js`,
657
+ directory,
658
+ webpackConfig: `${directory}/webpack-root.config.js`,
659
+ });
660
+
661
+ assert.equal(resolved, `${directory}/test/root1/mod1.js`);
662
+ });
663
+
664
+ it('resolves NPM module when using resolve.root', () => {
665
+ const resolved = cabinet({
666
+ dependency: 'resolve',
667
+ filename: `${directory}/index.js`,
668
+ directory,
669
+ webpackConfig: `${directory}/webpack-root.config.js`,
670
+ });
671
+
672
+ assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);
673
+ });
674
+
675
+ it('resolves NPM module when using resolve.modulesDirectories', () => {
676
+ const resolved = cabinet({
677
+ dependency: 'resolve',
678
+ filename: `${directory}/index.js`,
679
+ directory,
680
+ webpackConfig: `${directory}/webpack-root.config.js`,
681
+ });
682
+
683
+ assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);
684
+ });
685
+
686
+ it('resolves a path using resolve.modulesDirectories', () => {
687
+ const resolved = cabinet({
688
+ dependency: 'mod2',
689
+ filename: `${directory}/index.js`,
690
+ directory,
691
+ webpackConfig: `${directory}/webpack-root.config.js`,
692
+ });
693
+
694
+ assert.equal(resolved, `${directory}/test/root2/mod2.js`);
695
+ });
696
+
697
+ it('resolves a path using webpack config that exports a function', () => {
698
+ const resolved = cabinet({
699
+ dependency: 'R',
700
+ filename: `${directory}/index.js`,
701
+ directory,
702
+ webpackConfig: `${directory}/webpack-env.config.js`,
703
+ });
704
+
705
+ assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);
706
+ });
707
+
708
+ it('resolves files with a .jsx extension', () => {
709
+ testResolution('./test/foo.jsx', `${directory}/test/foo.jsx`);
710
+ });
711
+
712
+ describe('when the dependency contains a loader', () => {
713
+ it('still works', () => {
714
+ testResolution('hgn!resolve', `${directory}/node_modules/resolve/index.js`);
715
+ });
716
+ });
717
+ });
718
+ });