@embroider/compat 4.1.26 → 4.1.28

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 (306) hide show
  1. package/README.md +30 -0
  2. package/dist/src/add-to-tree.d.ts +9 -0
  3. package/dist/src/add-to-tree.d.ts.map +1 -0
  4. package/dist/src/add-to-tree.js +22 -0
  5. package/dist/src/add-to-tree.js.map +1 -0
  6. package/dist/src/addon-dependency-rules/ember-basic-dropdown.d.ts +4 -0
  7. package/dist/src/addon-dependency-rules/ember-basic-dropdown.d.ts.map +1 -0
  8. package/dist/src/addon-dependency-rules/ember-basic-dropdown.js +28 -0
  9. package/dist/src/addon-dependency-rules/ember-basic-dropdown.js.map +1 -0
  10. package/dist/src/addon-dependency-rules/ember-modal-dialog.d.ts +4 -0
  11. package/dist/src/addon-dependency-rules/ember-modal-dialog.d.ts.map +1 -0
  12. package/dist/src/addon-dependency-rules/ember-modal-dialog.js +27 -0
  13. package/dist/src/addon-dependency-rules/ember-modal-dialog.js.map +1 -0
  14. package/dist/src/addon-dependency-rules/ember-power-select-typeahead.d.ts +4 -0
  15. package/dist/src/addon-dependency-rules/ember-power-select-typeahead.d.ts.map +1 -0
  16. package/dist/src/addon-dependency-rules/ember-power-select-typeahead.js +23 -0
  17. package/dist/src/addon-dependency-rules/ember-power-select-typeahead.js.map +1 -0
  18. package/dist/src/addon-dependency-rules/ember-power-select-with-create.d.ts +4 -0
  19. package/dist/src/addon-dependency-rules/ember-power-select-with-create.d.ts.map +1 -0
  20. package/dist/src/addon-dependency-rules/ember-power-select-with-create.js +18 -0
  21. package/dist/src/addon-dependency-rules/ember-power-select-with-create.js.map +1 -0
  22. package/dist/src/addon-dependency-rules/ember-power-select.d.ts +4 -0
  23. package/dist/src/addon-dependency-rules/ember-power-select.d.ts.map +1 -0
  24. package/dist/src/addon-dependency-rules/ember-power-select.js +57 -0
  25. package/dist/src/addon-dependency-rules/ember-power-select.js.map +1 -0
  26. package/dist/src/audit/babel-visitor.d.ts +41 -0
  27. package/dist/src/audit/babel-visitor.d.ts.map +1 -0
  28. package/dist/src/audit/babel-visitor.js +230 -0
  29. package/dist/src/audit/babel-visitor.js.map +1 -0
  30. package/dist/src/audit/build.d.ts +8 -0
  31. package/dist/src/audit/build.d.ts.map +1 -0
  32. package/dist/src/audit/build.js +71 -0
  33. package/dist/src/audit/build.js.map +1 -0
  34. package/dist/src/audit/options.d.ts +9 -0
  35. package/dist/src/audit/options.d.ts.map +1 -0
  36. package/dist/src/audit/options.js +3 -0
  37. package/dist/src/audit/options.js.map +1 -0
  38. package/dist/src/audit.d.ts +60 -0
  39. package/dist/src/audit.d.ts.map +1 -0
  40. package/dist/src/audit.js +296 -0
  41. package/dist/src/audit.js.map +1 -0
  42. package/dist/src/babel.d.ts +18 -0
  43. package/dist/src/babel.d.ts.map +1 -0
  44. package/dist/src/babel.js +138 -0
  45. package/dist/src/babel.js.map +1 -0
  46. package/dist/src/build-compat-addon.d.ts +5 -0
  47. package/dist/src/build-compat-addon.d.ts.map +1 -0
  48. package/dist/src/build-compat-addon.js +43 -0
  49. package/dist/src/build-compat-addon.js.map +1 -0
  50. package/dist/src/compat-adapters/@ember/test-waiters.d.ts +6 -0
  51. package/dist/src/compat-adapters/@ember/test-waiters.d.ts.map +1 -0
  52. package/dist/src/compat-adapters/@ember/test-waiters.js +26 -0
  53. package/dist/src/compat-adapters/@ember/test-waiters.js.map +1 -0
  54. package/dist/src/compat-adapters/@ember-data/adapter.d.ts +2 -0
  55. package/dist/src/compat-adapters/@ember-data/adapter.d.ts.map +1 -0
  56. package/dist/src/compat-adapters/@ember-data/adapter.js +6 -0
  57. package/dist/src/compat-adapters/@ember-data/adapter.js.map +1 -0
  58. package/dist/src/compat-adapters/@ember-data/model.d.ts +2 -0
  59. package/dist/src/compat-adapters/@ember-data/model.d.ts.map +1 -0
  60. package/dist/src/compat-adapters/@ember-data/model.js +6 -0
  61. package/dist/src/compat-adapters/@ember-data/model.js.map +1 -0
  62. package/dist/src/compat-adapters/@ember-data/record-data.d.ts +2 -0
  63. package/dist/src/compat-adapters/@ember-data/record-data.d.ts.map +1 -0
  64. package/dist/src/compat-adapters/@ember-data/record-data.js +6 -0
  65. package/dist/src/compat-adapters/@ember-data/record-data.js.map +1 -0
  66. package/dist/src/compat-adapters/@ember-data/serializer.d.ts +2 -0
  67. package/dist/src/compat-adapters/@ember-data/serializer.d.ts.map +1 -0
  68. package/dist/src/compat-adapters/@ember-data/serializer.js +6 -0
  69. package/dist/src/compat-adapters/@ember-data/serializer.js.map +1 -0
  70. package/dist/src/compat-adapters/@ember-data/store.d.ts +2 -0
  71. package/dist/src/compat-adapters/@ember-data/store.d.ts.map +1 -0
  72. package/dist/src/compat-adapters/@ember-data/store.js +6 -0
  73. package/dist/src/compat-adapters/@ember-data/store.js.map +1 -0
  74. package/dist/src/compat-adapters/@glimmer/tracking.d.ts +10 -0
  75. package/dist/src/compat-adapters/@glimmer/tracking.d.ts.map +1 -0
  76. package/dist/src/compat-adapters/@glimmer/tracking.js +36 -0
  77. package/dist/src/compat-adapters/@glimmer/tracking.js.map +1 -0
  78. package/dist/src/compat-adapters/@html-next/vertical-collection.d.ts +5 -0
  79. package/dist/src/compat-adapters/@html-next/vertical-collection.d.ts.map +1 -0
  80. package/dist/src/compat-adapters/@html-next/vertical-collection.js +14 -0
  81. package/dist/src/compat-adapters/@html-next/vertical-collection.js.map +1 -0
  82. package/dist/src/compat-adapters/active-model-adapter.d.ts +5 -0
  83. package/dist/src/compat-adapters/active-model-adapter.d.ts.map +1 -0
  84. package/dist/src/compat-adapters/active-model-adapter.js +16 -0
  85. package/dist/src/compat-adapters/active-model-adapter.js.map +1 -0
  86. package/dist/src/compat-adapters/ember-asset-loader.d.ts +6 -0
  87. package/dist/src/compat-adapters/ember-asset-loader.d.ts.map +1 -0
  88. package/dist/src/compat-adapters/ember-asset-loader.js +36 -0
  89. package/dist/src/compat-adapters/ember-asset-loader.js.map +1 -0
  90. package/dist/src/compat-adapters/ember-cli-addon-docs.d.ts +5 -0
  91. package/dist/src/compat-adapters/ember-cli-addon-docs.d.ts.map +1 -0
  92. package/dist/src/compat-adapters/ember-cli-addon-docs.js +14 -0
  93. package/dist/src/compat-adapters/ember-cli-addon-docs.js.map +1 -0
  94. package/dist/src/compat-adapters/ember-cli-babel.d.ts +5 -0
  95. package/dist/src/compat-adapters/ember-cli-babel.d.ts.map +1 -0
  96. package/dist/src/compat-adapters/ember-cli-babel.js +25 -0
  97. package/dist/src/compat-adapters/ember-cli-babel.js.map +1 -0
  98. package/dist/src/compat-adapters/ember-cli-clipboard.d.ts +5 -0
  99. package/dist/src/compat-adapters/ember-cli-clipboard.d.ts.map +1 -0
  100. package/dist/src/compat-adapters/ember-cli-clipboard.js +31 -0
  101. package/dist/src/compat-adapters/ember-cli-clipboard.js.map +1 -0
  102. package/dist/src/compat-adapters/ember-cli-deprecation-workflow.d.ts +6 -0
  103. package/dist/src/compat-adapters/ember-cli-deprecation-workflow.d.ts.map +1 -0
  104. package/dist/src/compat-adapters/ember-cli-deprecation-workflow.js +46 -0
  105. package/dist/src/compat-adapters/ember-cli-deprecation-workflow.js.map +1 -0
  106. package/dist/src/compat-adapters/ember-cli-fastboot-testing.d.ts +5 -0
  107. package/dist/src/compat-adapters/ember-cli-fastboot-testing.d.ts.map +1 -0
  108. package/dist/src/compat-adapters/ember-cli-fastboot-testing.js +21 -0
  109. package/dist/src/compat-adapters/ember-cli-fastboot-testing.js.map +1 -0
  110. package/dist/src/compat-adapters/ember-cli-fastboot.d.ts +12 -0
  111. package/dist/src/compat-adapters/ember-cli-fastboot.d.ts.map +1 -0
  112. package/dist/src/compat-adapters/ember-cli-fastboot.js +157 -0
  113. package/dist/src/compat-adapters/ember-cli-fastboot.js.map +1 -0
  114. package/dist/src/compat-adapters/ember-cli-mirage.d.ts +7 -0
  115. package/dist/src/compat-adapters/ember-cli-mirage.d.ts.map +1 -0
  116. package/dist/src/compat-adapters/ember-cli-mirage.js +29 -0
  117. package/dist/src/compat-adapters/ember-cli-mirage.js.map +1 -0
  118. package/dist/src/compat-adapters/ember-composable-helpers.d.ts +6 -0
  119. package/dist/src/compat-adapters/ember-composable-helpers.d.ts.map +1 -0
  120. package/dist/src/compat-adapters/ember-composable-helpers.js +40 -0
  121. package/dist/src/compat-adapters/ember-composable-helpers.js.map +1 -0
  122. package/dist/src/compat-adapters/ember-data.d.ts +10 -0
  123. package/dist/src/compat-adapters/ember-data.d.ts.map +1 -0
  124. package/dist/src/compat-adapters/ember-data.js +74 -0
  125. package/dist/src/compat-adapters/ember-data.js.map +1 -0
  126. package/dist/src/compat-adapters/ember-decorators.d.ts +5 -0
  127. package/dist/src/compat-adapters/ember-decorators.d.ts.map +1 -0
  128. package/dist/src/compat-adapters/ember-decorators.js +16 -0
  129. package/dist/src/compat-adapters/ember-decorators.js.map +1 -0
  130. package/dist/src/compat-adapters/ember-engines.d.ts +15 -0
  131. package/dist/src/compat-adapters/ember-engines.d.ts.map +1 -0
  132. package/dist/src/compat-adapters/ember-engines.js +34 -0
  133. package/dist/src/compat-adapters/ember-engines.js.map +1 -0
  134. package/dist/src/compat-adapters/ember-exam.d.ts +16 -0
  135. package/dist/src/compat-adapters/ember-exam.d.ts.map +1 -0
  136. package/dist/src/compat-adapters/ember-exam.js +30 -0
  137. package/dist/src/compat-adapters/ember-exam.js.map +1 -0
  138. package/dist/src/compat-adapters/ember-fetch.d.ts +7 -0
  139. package/dist/src/compat-adapters/ember-fetch.d.ts.map +1 -0
  140. package/dist/src/compat-adapters/ember-fetch.js +56 -0
  141. package/dist/src/compat-adapters/ember-fetch.js.map +1 -0
  142. package/dist/src/compat-adapters/ember-get-config.d.ts +17 -0
  143. package/dist/src/compat-adapters/ember-get-config.d.ts.map +1 -0
  144. package/dist/src/compat-adapters/ember-get-config.js +41 -0
  145. package/dist/src/compat-adapters/ember-get-config.js.map +1 -0
  146. package/dist/src/compat-adapters/ember-inflector.d.ts +7 -0
  147. package/dist/src/compat-adapters/ember-inflector.d.ts.map +1 -0
  148. package/dist/src/compat-adapters/ember-inflector.js +39 -0
  149. package/dist/src/compat-adapters/ember-inflector.js.map +1 -0
  150. package/dist/src/compat-adapters/ember-percy.d.ts +5 -0
  151. package/dist/src/compat-adapters/ember-percy.d.ts.map +1 -0
  152. package/dist/src/compat-adapters/ember-percy.js +18 -0
  153. package/dist/src/compat-adapters/ember-percy.js.map +1 -0
  154. package/dist/src/compat-adapters/ember-resolver.d.ts +5 -0
  155. package/dist/src/compat-adapters/ember-resolver.d.ts.map +1 -0
  156. package/dist/src/compat-adapters/ember-resolver.js +21 -0
  157. package/dist/src/compat-adapters/ember-resolver.js.map +1 -0
  158. package/dist/src/compat-adapters/ember-scroll-modifiers.d.ts +5 -0
  159. package/dist/src/compat-adapters/ember-scroll-modifiers.d.ts.map +1 -0
  160. package/dist/src/compat-adapters/ember-scroll-modifiers.js +23 -0
  161. package/dist/src/compat-adapters/ember-scroll-modifiers.js.map +1 -0
  162. package/dist/src/compat-adapters/ember-source.d.ts +12 -0
  163. package/dist/src/compat-adapters/ember-source.d.ts.map +1 -0
  164. package/dist/src/compat-adapters/ember-source.js +465 -0
  165. package/dist/src/compat-adapters/ember-source.js.map +1 -0
  166. package/dist/src/compat-adapters/ember-svg-jar.d.ts +5 -0
  167. package/dist/src/compat-adapters/ember-svg-jar.d.ts.map +1 -0
  168. package/dist/src/compat-adapters/ember-svg-jar.js +29 -0
  169. package/dist/src/compat-adapters/ember-svg-jar.js.map +1 -0
  170. package/dist/src/compat-adapters/ember-test-selectors.d.ts +6 -0
  171. package/dist/src/compat-adapters/ember-test-selectors.d.ts.map +1 -0
  172. package/dist/src/compat-adapters/ember-test-selectors.js +19 -0
  173. package/dist/src/compat-adapters/ember-test-selectors.js.map +1 -0
  174. package/dist/src/compat-addons.d.ts +17 -0
  175. package/dist/src/compat-addons.d.ts.map +1 -0
  176. package/dist/src/compat-addons.js +48 -0
  177. package/dist/src/compat-addons.js.map +1 -0
  178. package/dist/src/compat-app-builder.d.ts +28 -0
  179. package/dist/src/compat-app-builder.d.ts.map +1 -0
  180. package/dist/src/compat-app-builder.js +221 -0
  181. package/dist/src/compat-app-builder.js.map +1 -0
  182. package/dist/src/compat-app.d.ts +62 -0
  183. package/dist/src/compat-app.d.ts.map +1 -0
  184. package/dist/src/compat-app.js +618 -0
  185. package/dist/src/compat-app.js.map +1 -0
  186. package/dist/src/compat-utils.d.ts +10 -0
  187. package/dist/src/compat-utils.d.ts.map +1 -0
  188. package/dist/src/compat-utils.js +65 -0
  189. package/dist/src/compat-utils.js.map +1 -0
  190. package/dist/src/content-for-config.d.ts +12 -0
  191. package/dist/src/content-for-config.d.ts.map +1 -0
  192. package/dist/src/content-for-config.js +66 -0
  193. package/dist/src/content-for-config.js.map +1 -0
  194. package/dist/src/dasherize-component-name.d.ts +3 -0
  195. package/dist/src/dasherize-component-name.d.ts.map +1 -0
  196. package/dist/src/dasherize-component-name.js +28 -0
  197. package/dist/src/dasherize-component-name.js.map +1 -0
  198. package/dist/src/default-pipeline.d.ts +10 -0
  199. package/dist/src/default-pipeline.d.ts.map +1 -0
  200. package/dist/src/default-pipeline.js +43 -0
  201. package/dist/src/default-pipeline.js.map +1 -0
  202. package/dist/src/dependency-rules.d.ts +62 -0
  203. package/dist/src/dependency-rules.d.ts.map +1 -0
  204. package/dist/src/dependency-rules.js +89 -0
  205. package/dist/src/dependency-rules.js.map +1 -0
  206. package/dist/src/detect-babel-plugins.d.ts +7 -0
  207. package/dist/src/detect-babel-plugins.d.ts.map +1 -0
  208. package/dist/src/detect-babel-plugins.js +96 -0
  209. package/dist/src/detect-babel-plugins.js.map +1 -0
  210. package/dist/src/detect-compact-reexports.d.ts +3 -0
  211. package/dist/src/detect-compact-reexports.d.ts.map +1 -0
  212. package/dist/src/detect-compact-reexports.js +17 -0
  213. package/dist/src/detect-compact-reexports.js.map +1 -0
  214. package/dist/src/dummy-package.d.ts +9 -0
  215. package/dist/src/dummy-package.d.ts.map +1 -0
  216. package/dist/src/dummy-package.js +44 -0
  217. package/dist/src/dummy-package.js.map +1 -0
  218. package/dist/src/empty-package-tree.d.ts +9 -0
  219. package/dist/src/empty-package-tree.d.ts.map +1 -0
  220. package/dist/src/empty-package-tree.js +36 -0
  221. package/dist/src/empty-package-tree.js.map +1 -0
  222. package/dist/src/get-real-addon.d.ts +7 -0
  223. package/dist/src/get-real-addon.d.ts.map +1 -0
  224. package/dist/src/get-real-addon.js +33 -0
  225. package/dist/src/get-real-addon.js.map +1 -0
  226. package/dist/src/hbs-to-js-broccoli-plugin.d.ts +9 -0
  227. package/dist/src/hbs-to-js-broccoli-plugin.d.ts.map +1 -0
  228. package/dist/src/hbs-to-js-broccoli-plugin.js +39 -0
  229. package/dist/src/hbs-to-js-broccoli-plugin.js.map +1 -0
  230. package/dist/src/htmlbars-unwrapper.d.ts +6 -0
  231. package/dist/src/htmlbars-unwrapper.d.ts.map +1 -0
  232. package/dist/src/htmlbars-unwrapper.js +8 -0
  233. package/dist/src/htmlbars-unwrapper.js.map +1 -0
  234. package/dist/src/http-audit.d.ts +14 -0
  235. package/dist/src/http-audit.d.ts.map +1 -0
  236. package/dist/src/http-audit.js +60 -0
  237. package/dist/src/http-audit.js.map +1 -0
  238. package/dist/src/index.d.ts +8 -0
  239. package/dist/src/index.d.ts.map +1 -0
  240. package/dist/src/index.js +18 -0
  241. package/dist/src/index.js.map +1 -0
  242. package/dist/src/merges.d.ts +3 -0
  243. package/dist/src/merges.d.ts.map +1 -0
  244. package/dist/src/merges.js +32 -0
  245. package/dist/src/merges.js.map +1 -0
  246. package/dist/src/module-visitor.d.ts +53 -0
  247. package/dist/src/module-visitor.d.ts.map +1 -0
  248. package/dist/src/module-visitor.js +285 -0
  249. package/dist/src/module-visitor.js.map +1 -0
  250. package/dist/src/modules-compat.d.ts +3 -0
  251. package/dist/src/modules-compat.d.ts.map +1 -0
  252. package/dist/src/modules-compat.js +18 -0
  253. package/dist/src/modules-compat.js.map +1 -0
  254. package/dist/src/observe-tree.d.ts +8 -0
  255. package/dist/src/observe-tree.d.ts.map +1 -0
  256. package/dist/src/observe-tree.js +17 -0
  257. package/dist/src/observe-tree.js.map +1 -0
  258. package/dist/src/options.d.ts +17 -0
  259. package/dist/src/options.d.ts.map +1 -0
  260. package/dist/src/options.js +57 -0
  261. package/dist/src/options.js.map +1 -0
  262. package/dist/src/prepare-htmlbars-ast-plugins.d.ts +3 -0
  263. package/dist/src/prepare-htmlbars-ast-plugins.d.ts.map +1 -0
  264. package/dist/src/prepare-htmlbars-ast-plugins.js +39 -0
  265. package/dist/src/prepare-htmlbars-ast-plugins.js.map +1 -0
  266. package/dist/src/resolver-transform.d.ts +29 -0
  267. package/dist/src/resolver-transform.d.ts.map +1 -0
  268. package/dist/src/resolver-transform.js +1094 -0
  269. package/dist/src/resolver-transform.js.map +1 -0
  270. package/dist/src/rewrite-addon-tree.d.ts +9 -0
  271. package/dist/src/rewrite-addon-tree.d.ts.map +1 -0
  272. package/dist/src/rewrite-addon-tree.js +46 -0
  273. package/dist/src/rewrite-addon-tree.js.map +1 -0
  274. package/dist/src/rewrite-package-json.d.ts +8 -0
  275. package/dist/src/rewrite-package-json.d.ts.map +1 -0
  276. package/dist/src/rewrite-package-json.js +23 -0
  277. package/dist/src/rewrite-package-json.js.map +1 -0
  278. package/dist/src/smoosh-package-json.d.ts +9 -0
  279. package/dist/src/smoosh-package-json.d.ts.map +1 -0
  280. package/dist/src/smoosh-package-json.js +30 -0
  281. package/dist/src/smoosh-package-json.js.map +1 -0
  282. package/dist/src/snitch.d.ts +14 -0
  283. package/dist/src/snitch.d.ts.map +1 -0
  284. package/dist/src/snitch.js +42 -0
  285. package/dist/src/snitch.js.map +1 -0
  286. package/dist/src/standalone-addon-build.d.ts +3 -0
  287. package/dist/src/standalone-addon-build.d.ts.map +1 -0
  288. package/dist/src/standalone-addon-build.js +106 -0
  289. package/dist/src/standalone-addon-build.js.map +1 -0
  290. package/dist/src/synthesize-template-only-components.d.ts +17 -0
  291. package/dist/src/synthesize-template-only-components.d.ts.map +1 -0
  292. package/dist/src/synthesize-template-only-components.js +109 -0
  293. package/dist/src/synthesize-template-only-components.js.map +1 -0
  294. package/dist/src/v1-addon.d.ts +71 -0
  295. package/dist/src/v1-addon.d.ts.map +1 -0
  296. package/dist/src/v1-addon.js +1025 -0
  297. package/dist/src/v1-addon.js.map +1 -0
  298. package/dist/src/v1-config.d.ts +17 -0
  299. package/dist/src/v1-config.d.ts.map +1 -0
  300. package/dist/src/v1-config.js +26 -0
  301. package/dist/src/v1-config.js.map +1 -0
  302. package/dist/src/v1-instance-cache.d.ts +14 -0
  303. package/dist/src/v1-instance-cache.d.ts.map +1 -0
  304. package/dist/src/v1-instance-cache.js +66 -0
  305. package/dist/src/v1-instance-cache.js.map +1 -0
  306. package/package.json +6 -6
@@ -0,0 +1,618 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const core_1 = require("@embroider/core");
13
+ const options_1 = require("./options");
14
+ const typescript_memoize_1 = require("typescript-memoize");
15
+ const pkg_up_1 = require("pkg-up");
16
+ const path_1 = require("path");
17
+ const broccoli_funnel_1 = __importDefault(require("broccoli-funnel"));
18
+ const broccoli_merge_trees_1 = __importDefault(require("broccoli-merge-trees"));
19
+ const broccoli_source_1 = require("broccoli-source");
20
+ const resolve_1 = __importDefault(require("resolve"));
21
+ const content_for_config_1 = __importDefault(require("./content-for-config"));
22
+ const v1_config_1 = require("./v1-config");
23
+ const fs_extra_1 = require("fs-extra");
24
+ const add_to_tree_1 = __importDefault(require("./add-to-tree"));
25
+ const dummy_package_1 = __importDefault(require("./dummy-package"));
26
+ const node_1 = require("@embroider/macros/src/node");
27
+ const resolve_package_path_1 = __importDefault(require("resolve-package-path"));
28
+ const broccoli_concat_1 = __importDefault(require("broccoli-concat"));
29
+ const mapKeys_1 = __importDefault(require("lodash/mapKeys"));
30
+ const detect_babel_plugins_1 = require("./detect-babel-plugins");
31
+ const prepare_htmlbars_ast_plugins_1 = __importDefault(require("./prepare-htmlbars-ast-plugins"));
32
+ const fs_1 = require("fs");
33
+ const semver_1 = __importDefault(require("semver"));
34
+ const compat_app_builder_1 = require("./compat-app-builder");
35
+ const walk_sync_1 = __importDefault(require("walk-sync"));
36
+ const broccoli_file_creator_1 = __importDefault(require("broccoli-file-creator"));
37
+ // This runs at broccoli-pipeline-construction time, whereas the
38
+ // CompatAppBuilder instance only becomes available during tree-building time.
39
+ class CompatApp {
40
+ get isDummy() {
41
+ var _a, _b;
42
+ return (_b = (_a = this.legacyEmberAppInstance.project.pkg.keywords) === null || _a === void 0 ? void 0 : _a.includes('ember-addon')) !== null && _b !== void 0 ? _b : false;
43
+ }
44
+ get name() {
45
+ if (this.isDummy) {
46
+ // here we accept the ember-cli behavior
47
+ return this.legacyEmberAppInstance.name;
48
+ }
49
+ else {
50
+ // always the name from package.json. Not the one that apps may have weirdly
51
+ // customized.
52
+ return this.legacyEmberAppInstance.project.pkg.name;
53
+ }
54
+ }
55
+ get env() {
56
+ return this.legacyEmberAppInstance.env;
57
+ }
58
+ get root() {
59
+ if (this.isDummy) {
60
+ // this is the Known Hack for finding the true root of the dummy app.
61
+ return (0, path_1.join)(this.legacyEmberAppInstance.project.configPath(), '..', '..');
62
+ }
63
+ else {
64
+ return (0, path_1.dirname)((0, pkg_up_1.sync)({ cwd: this.legacyEmberAppInstance.project.root }));
65
+ }
66
+ }
67
+ get emberCLILocation() {
68
+ const emberCLIPackage = (0, resolve_package_path_1.default)('ember-cli', this.root);
69
+ if (emberCLIPackage === null) {
70
+ throw new Error(`Embroider: cannot resolve ember-cli's package.json`);
71
+ }
72
+ return (0, path_1.dirname)(emberCLIPackage);
73
+ }
74
+ get hasCompiledStyles() {
75
+ return semver_1.default.gte(JSON.parse((0, fs_1.readFileSync)(`${this.emberCLILocation}/package.json`, 'utf8')).version, '3.18.0');
76
+ }
77
+ requireFromEmberCLI(specifier) {
78
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
79
+ return require(resolve_1.default.sync(specifier, { basedir: this.emberCLILocation }));
80
+ }
81
+ get configLoader() {
82
+ return this.requireFromEmberCLI('broccoli-config-loader');
83
+ }
84
+ get appUtils() {
85
+ return this.requireFromEmberCLI('./lib/utilities/ember-app-utils');
86
+ }
87
+ get addonTreeCache() {
88
+ return new Map();
89
+ }
90
+ get preprocessRegistry() {
91
+ return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');
92
+ }
93
+ get shouldBuildTests() {
94
+ return this.legacyEmberAppInstance.tests || false;
95
+ }
96
+ configPath() {
97
+ return this.legacyEmberAppInstance.project.configPath();
98
+ }
99
+ get configTree() {
100
+ return new this.configLoader((0, path_1.dirname)(this.configPath()), {
101
+ env: this.legacyEmberAppInstance.env,
102
+ tests: this.legacyEmberAppInstance.tests || false,
103
+ project: this.legacyEmberAppInstance.project,
104
+ });
105
+ }
106
+ get config() {
107
+ return new v1_config_1.V1Config(this.configTree, this.legacyEmberAppInstance.env);
108
+ }
109
+ get testConfig() {
110
+ if (this.shouldBuildTests) {
111
+ return new v1_config_1.V1Config(this.configTree, 'test');
112
+ }
113
+ }
114
+ get contentFor() {
115
+ const configPaths = [
116
+ { file: '/index.html', path: (0, path_1.join)('environments', `${this.legacyEmberAppInstance.env}.json`) },
117
+ ];
118
+ if (this.shouldBuildTests)
119
+ configPaths.push({ file: '/tests/index.html', path: (0, path_1.join)('environments', `test.json`) });
120
+ return new content_for_config_1.default(this.configTree, {
121
+ availableContentForTypes: this.options.availableContentForTypes,
122
+ configPaths,
123
+ pattern: this.filteredPatternsByContentFor.contentFor,
124
+ });
125
+ }
126
+ get autoRun() {
127
+ return this.legacyEmberAppInstance.options.autoRun;
128
+ }
129
+ get storeConfigInMeta() {
130
+ return this.legacyEmberAppInstance.options.storeConfigInMeta;
131
+ }
132
+ get configReplacePatterns() {
133
+ return this.appUtils.configReplacePatterns({
134
+ addons: this.legacyEmberAppInstance.project.addons,
135
+ autoRun: this.autoRun,
136
+ storeConfigInMeta: this.storeConfigInMeta,
137
+ });
138
+ }
139
+ get filteredPatternsByContentFor() {
140
+ const filter = '/{{content-for [\'"](.+?)["\']}}/g';
141
+ return {
142
+ contentFor: this.configReplacePatterns.find((pattern) => filter.includes(pattern.match.toString())),
143
+ others: this.configReplacePatterns.filter((pattern) => !filter.includes(pattern.match.toString())),
144
+ };
145
+ }
146
+ extraBabelPlugins() {
147
+ // this finds any custom babel plugins on the app (either because the app
148
+ // author explicitly added some, or because addons have pushed plugins into
149
+ // it).
150
+ let appBabel = this.legacyEmberAppInstance.options.babel;
151
+ if (appBabel) {
152
+ if (appBabel.plugins) {
153
+ return appBabel.plugins.filter(p => {
154
+ // even if the app was using @embroider/macros, we drop it from the config
155
+ // here in favor of our globally-configured one.
156
+ return (!(0, node_1.isEmbroiderMacrosPlugin)(p) &&
157
+ // similarly, if the app was already using an inline template compiler
158
+ // babel plugin, we remove it here because we have our own
159
+ // always-installed version of that (v2 addons are allowed to assume it
160
+ // will be present in the final app build, the app doesn't get to turn
161
+ // that off or configure it.)
162
+ !(0, detect_babel_plugins_1.isInlinePrecompilePlugin)(p) &&
163
+ !(0, detect_babel_plugins_1.isEmberAutoImportDynamic)(p) &&
164
+ !(0, detect_babel_plugins_1.isHtmlbarColocation)(p));
165
+ });
166
+ }
167
+ }
168
+ return [];
169
+ }
170
+ babelMajorVersion() {
171
+ var _a, _b;
172
+ let babelAddon = this.legacyEmberAppInstance.project.addons.find((a) => a.name === 'ember-cli-babel');
173
+ if (babelAddon) {
174
+ let babelAddonMajor = Number(babelAddon.pkg.version.split('.')[0]);
175
+ let babelMajor = babelAddonMajor;
176
+ if (babelAddonMajor >= 8) {
177
+ // `ember-cli-babel` v8 breaks lockstep with Babel, because it now
178
+ // defines `@babel/core` as a peer dependency, so we need to check the
179
+ // project's version of `@babel/core`:
180
+ let babelVersion = (_a = this.legacyEmberAppInstance.project.pkg.devDependencies) === null || _a === void 0 ? void 0 : _a['@babel/core'];
181
+ if (babelVersion) {
182
+ babelMajor = (_b = semver_1.default.coerce(babelVersion)) === null || _b === void 0 ? void 0 : _b.major;
183
+ }
184
+ else {
185
+ babelMajor = 7;
186
+ }
187
+ }
188
+ if (babelMajor !== 7) {
189
+ throw new Error('`@embroider/compat` only supports apps and addons that use Babel v7.');
190
+ }
191
+ return babelMajor;
192
+ }
193
+ // if we didn't have our own babel plugin at all, it's safe to parse our
194
+ // code with 7.
195
+ return 7;
196
+ }
197
+ transformedNodeFiles() {
198
+ // any app.imports from node_modules that need custom transforms will need
199
+ // to get copied into our own synthesized vendor package. app.imports from
200
+ // node_modules that *don't* need custom transforms can just stay where they
201
+ // are.
202
+ let transformed = new Map();
203
+ for (let transformConfig of this.legacyEmberAppInstance._customTransformsMap.values()) {
204
+ for (let filename of transformConfig.files) {
205
+ let preresolved = this.preresolvedNodeFile(filename);
206
+ if (preresolved) {
207
+ transformed.set(filename, preresolved);
208
+ }
209
+ }
210
+ }
211
+ return transformed;
212
+ }
213
+ preresolvedNodeFile(filename) {
214
+ // this regex is an exact copy of how ember-cli does this, so we align.
215
+ let match = filename.match(/^node_modules\/((@[^/]+\/)?[^/]+)\//);
216
+ if (match) {
217
+ // ember-cli has already done its own resolution of
218
+ // `app.import('node_modules/something/...')`, so we go find its answer.
219
+ for (let { name, path } of this.legacyEmberAppInstance._nodeModules.values()) {
220
+ if (match[1] === name) {
221
+ return filename.replace(match[0], path + path_1.sep);
222
+ }
223
+ }
224
+ throw new Error(`bug: expected ember-cli to already have a resolved path for asset ${filename}`);
225
+ }
226
+ }
227
+ combinedVendor(addonTrees) {
228
+ var _a, _b;
229
+ let trees = addonTrees.map(tree => (0, broccoli_funnel_1.default)(tree, {
230
+ allowEmpty: true,
231
+ srcDir: 'vendor',
232
+ destDir: 'vendor',
233
+ }));
234
+ let emberSource = this.legacyEmberAppInstance.project.addons.find(a => a.name === 'ember-source');
235
+ if (emberSource && ((_b = (_a = emberSource.pkg['ember-addon']) === null || _a === void 0 ? void 0 : _a['version']) !== null && _b !== void 0 ? _b : 1) >= 2) {
236
+ // there's stuff in the ecosystem that assumes these files will always be
237
+ // present in the vendor tree. But when ember-source is V2, it cannot put
238
+ // them there, so @embroider/compat will fill in defaults. The bundles are
239
+ // empty because we're just trying to keep the build from blowing up, the
240
+ // actual ember modules get loaded as modules instead.
241
+ //
242
+ // The template compiler is still here so that apps using a V2 ember can
243
+ // still app.import the traditional runtime template compiler.
244
+ //
245
+ // When ember-source no longer provides `paths` (v7+), these legacy vendor
246
+ // files are not needed at all — ember-source is fully ESM.
247
+ if (emberSource.paths) {
248
+ trees.push((0, broccoli_file_creator_1.default)('vendor/ember/ember.js', () => ''));
249
+ trees.push((0, broccoli_file_creator_1.default)('vendor/ember/ember-testing.js', () => ''));
250
+ const templateCompilerSrc = (0, fs_1.readFileSync)((0, path_1.join)(emberSource.root, 'dist/ember-template-compiler.js'), 'utf8');
251
+ trees.push((0, broccoli_file_creator_1.default)('vendor/ember/ember-template-compiler.js', () => templateCompilerSrc));
252
+ }
253
+ }
254
+ if (this.vendorTree) {
255
+ trees.push((0, broccoli_funnel_1.default)(this.vendorTree, {
256
+ destDir: 'vendor',
257
+ }));
258
+ }
259
+ const tree = (0, broccoli_merge_trees_1.default)(trees, { overwrite: true });
260
+ const outputGroups = [
261
+ // scripts
262
+ {
263
+ outputFiles: this.legacyEmberAppInstance._scriptOutputFiles,
264
+ implicitKey: '_implicitScripts',
265
+ vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.js,
266
+ },
267
+ // styles
268
+ {
269
+ outputFiles: this.legacyEmberAppInstance._styleOutputFiles,
270
+ implicitKey: '_implicitStyles',
271
+ vendorOutputPath: this.legacyEmberAppInstance.options.outputPaths.vendor.css,
272
+ },
273
+ ];
274
+ const concatentations = [];
275
+ // support: app.import / outputFile / using
276
+ for (let entry of outputGroups) {
277
+ const { outputFiles, implicitKey, vendorOutputPath } = entry;
278
+ for (let importPath of Object.keys(outputFiles)) {
279
+ const headerFiles = outputFiles[importPath];
280
+ if (importPath === vendorOutputPath) {
281
+ // these are the default ember-cli output files vendor.js or
282
+ // vendor.css. Let embroider handle these.
283
+ this[implicitKey] = headerFiles;
284
+ }
285
+ else if (headerFiles.length === 0) {
286
+ // something went really wrong, open an issue
287
+ throw new Error('Embroider: EWUT');
288
+ }
289
+ else if (headerFiles.length === 1) {
290
+ // app.import(x, { outputFile: y }); where only one app.imports had this outputFile
291
+ //
292
+ // No concat needed. Simply serialize the remapping in the addon's
293
+ // manifest, this ensures it is included in the final output with no extra work.
294
+ this._publicAssets[headerFiles[0]] = importPath;
295
+ }
296
+ else {
297
+ // app.import(x, { outputFile: y }); where multiple app.imports share one outputFile
298
+ // Concat needed. Perform concat, and include the outputFile in the
299
+ // addon's manifest. This ensures it is included in the final output
300
+ this._publicAssets[importPath] = importPath;
301
+ concatentations.push(new broccoli_concat_1.default(tree, {
302
+ headerFiles,
303
+ outputFile: importPath,
304
+ annotation: `Package ${importPath}`,
305
+ separator: '\n;',
306
+ sourceMapConfig: this.legacyEmberAppInstance.options['sourcemaps'],
307
+ }));
308
+ }
309
+ }
310
+ }
311
+ this.addOtherAssets();
312
+ return (0, broccoli_merge_trees_1.default)([tree, ...concatentations], { overwrite: true });
313
+ }
314
+ addOtherAssets() {
315
+ for (let asset of this.legacyEmberAppInstance.otherAssetPaths) {
316
+ this._publicAssets[`${asset.src}/${asset.file}`] = `${asset.dest}/${asset.file}`;
317
+ }
318
+ }
319
+ addNodeAssets(inputTree) {
320
+ let transformedNodeFiles = this.transformedNodeFiles();
321
+ return new add_to_tree_1.default(inputTree, outputPath => {
322
+ for (let [localDestPath, sourcePath] of transformedNodeFiles) {
323
+ let destPath = (0, path_1.join)(outputPath, localDestPath);
324
+ (0, fs_extra_1.ensureDirSync)((0, path_1.dirname)(destPath));
325
+ (0, fs_extra_1.copySync)(sourcePath, destPath);
326
+ }
327
+ if (this.shouldBuildTests) {
328
+ (0, fs_extra_1.writeFileSync)((0, path_1.join)(outputPath, 'testem.js'), `/*
329
+ * This is dummy file that exists for the sole purpose
330
+ * of allowing tests to run directly in the browser as
331
+ * well as by Testem.
332
+ *
333
+ * Testem is configured to run tests directly against
334
+ * the test build of index.html, which requires a
335
+ * snippet to load the testem.js file:
336
+ * <script src="/testem.js"></script>
337
+ * This has to go before the qunit framework and app
338
+ * tests are loaded.
339
+ *
340
+ * Testem internally supplies this file. However, if you
341
+ * run the tests directly in the browser (localhost:8000/tests),
342
+ * this file does not exist.
343
+ *
344
+ * Hence the purpose of this fake file. This file is served
345
+ * directly from the express server to satisify the script load.
346
+ */`);
347
+ this._publicAssets['/testem.js'] = './testem.js';
348
+ }
349
+ let remapAsset = this.remapAsset.bind(this);
350
+ let addonMeta = {
351
+ version: 2,
352
+ 'implicit-scripts': this._implicitScripts.map(remapAsset).filter(forbiddenVendorPath),
353
+ 'implicit-styles': this._implicitStyles.map(remapAsset),
354
+ 'implicit-test-scripts': this.legacyEmberAppInstance.legacyTestFilesToAppend.map(remapAsset),
355
+ 'implicit-test-styles': this.legacyEmberAppInstance.vendorTestStaticStyles.map(remapAsset),
356
+ 'public-assets': (0, mapKeys_1.default)(this._publicAssets, (_, key) => remapAsset(key)),
357
+ };
358
+ let meta = {
359
+ name: '@embroider/synthesized-vendor',
360
+ version: '0.0.0',
361
+ keywords: ['ember-addon'],
362
+ 'ember-addon': addonMeta,
363
+ };
364
+ (0, fs_extra_1.writeJSONSync)((0, path_1.join)(outputPath, 'package.json'), meta, { spaces: 2 });
365
+ });
366
+ }
367
+ synthesizeVendorPackage(addonTrees) {
368
+ return this.applyCustomTransforms(this.addNodeAssets(this.combinedVendor(addonTrees)));
369
+ }
370
+ combinedStyles(addonTrees) {
371
+ let trees = addonTrees.map(tree => (0, broccoli_funnel_1.default)(tree, {
372
+ allowEmpty: true,
373
+ srcDir: '_app_styles_',
374
+ }));
375
+ let appStyles = this.legacyEmberAppInstance.trees.styles;
376
+ if (appStyles) {
377
+ // Workaround for https://github.com/ember-cli/ember-cli/issues/9020
378
+ //
379
+ // The default app styles tree is unwatched and relies on side effects
380
+ // elsewhere in ember-cli's build pipeline to actually get rebuilds to
381
+ // work. Here we need it to actually be watched properly if we want to
382
+ // rely on it, particularly when using BROCCOLI_ENABLED_MEMOIZE.
383
+ if (appStyles._watched === false && appStyles._directoryPath) {
384
+ appStyles = new broccoli_source_1.WatchedDir(appStyles._directoryPath);
385
+ }
386
+ trees.push(appStyles);
387
+ }
388
+ return (0, broccoli_merge_trees_1.default)(trees, { overwrite: true, annotation: 'embroider-v1-app-combined-styles' });
389
+ }
390
+ synthesizeStylesPackage(addonTrees) {
391
+ let options = {
392
+ // we're deliberately not allowing this to be customized. It's an
393
+ // internal implementation detail, and respecting outputPaths here is
394
+ // unnecessary complexity. The corresponding code that adjusts the HTML
395
+ // <link> is in updateHTML in app.ts.
396
+ outputPaths: { app: `/@embroider/virtual/app.css` },
397
+ registry: this.legacyEmberAppInstance.registry,
398
+ minifyCSS: this.legacyEmberAppInstance.options.minifyCSS.options,
399
+ };
400
+ let nestedInput = (0, broccoli_funnel_1.default)(this.combinedStyles(addonTrees), { destDir: 'app/styles' });
401
+ let styles = this.preprocessors.preprocessCss(nestedInput, '/app/styles', '/assets', options);
402
+ return new add_to_tree_1.default(styles, outputPath => {
403
+ let addonMeta = {
404
+ version: 2,
405
+ 'public-assets': {},
406
+ };
407
+ let assetPath = (0, path_1.join)(outputPath, '@embroider', 'virtual');
408
+ if ((0, fs_extra_1.pathExistsSync)(assetPath)) {
409
+ for (let file of (0, walk_sync_1.default)(assetPath, { directories: false })) {
410
+ addonMeta['public-assets'][`./@embroider/virtual/${file}`] = `/@embroider/virtual/${file}`;
411
+ }
412
+ }
413
+ let meta = {
414
+ name: '@embroider/synthesized-styles',
415
+ version: '0.0.0',
416
+ keywords: ['ember-addon'],
417
+ 'ember-addon': addonMeta,
418
+ };
419
+ (0, fs_extra_1.writeJSONSync)((0, path_1.join)(outputPath, 'package.json'), meta, { spaces: 2 });
420
+ });
421
+ }
422
+ // this is taken nearly verbatim from ember-cli.
423
+ applyCustomTransforms(externalTree) {
424
+ for (let customTransformEntry of this.legacyEmberAppInstance._customTransformsMap) {
425
+ let transformName = customTransformEntry[0];
426
+ let transformConfig = customTransformEntry[1];
427
+ let transformTree = (0, broccoli_funnel_1.default)(externalTree, {
428
+ files: transformConfig.files,
429
+ annotation: `Funnel (custom transform: ${transformName})`,
430
+ });
431
+ externalTree = (0, broccoli_merge_trees_1.default)([externalTree, transformConfig.callback(transformTree, transformConfig.options)], {
432
+ annotation: `TreeMerger (custom transform: ${transformName})`,
433
+ overwrite: true,
434
+ });
435
+ }
436
+ return externalTree;
437
+ }
438
+ remapAsset(asset) {
439
+ if (this.transformedNodeFiles().has(asset)) {
440
+ // transformed node assets become local paths, because we have copied
441
+ // those ones into our synthesized vendor package.
442
+ return './' + asset;
443
+ }
444
+ let preresolved = this.preresolvedNodeFile(asset);
445
+ if (preresolved) {
446
+ // non-transformed node assets point directly at their pre-resolved
447
+ // original files (this is an absolute path).
448
+ return preresolved;
449
+ }
450
+ // non node assets are local paths. They need an explicit `/` or `.` at
451
+ // the start.
452
+ if (asset.startsWith('.') || (0, path_1.isAbsolute)(asset)) {
453
+ return asset;
454
+ }
455
+ return './' + asset;
456
+ }
457
+ get htmlbarsPlugins() {
458
+ let plugins = (0, prepare_htmlbars_ast_plugins_1.default)(this.legacyEmberAppInstance.registry);
459
+ // even if the app was using @embroider/macros, we drop it from the config
460
+ // here in favor of our globally-configured one.
461
+ plugins = plugins.filter((p) => !(0, node_1.isEmbroiderMacrosPlugin)(p));
462
+ return plugins;
463
+ }
464
+ get vendorTree() {
465
+ return this.ensureTree(this.legacyEmberAppInstance.trees.vendor);
466
+ }
467
+ ensureTree(maybeTree) {
468
+ if (typeof maybeTree === 'string') {
469
+ // this is deliberately mimicking how ember-cli does it. We don't use
470
+ // `this.root` on purpose, because that can differ from what ember-cli
471
+ // considers the project.root. And we don't use path.resolve even though
472
+ // that seems possibly more correct, because ember-cli always assumes the
473
+ // input is relative.
474
+ let resolvedPath = (0, path_1.join)(this.legacyEmberAppInstance.project.root, maybeTree);
475
+ if ((0, fs_extra_1.existsSync)(resolvedPath)) {
476
+ return new broccoli_source_1.WatchedDir(maybeTree);
477
+ }
478
+ else {
479
+ return undefined;
480
+ }
481
+ }
482
+ return maybeTree;
483
+ }
484
+ get preprocessors() {
485
+ return this.requireFromEmberCLI('ember-cli-preprocess-registry/preprocessors');
486
+ }
487
+ constructor(legacyEmberAppInstance, _options) {
488
+ this.legacyEmberAppInstance = legacyEmberAppInstance;
489
+ this.annotation = '@embroider/compat/app';
490
+ this._publicAssets = Object.create(null);
491
+ this._implicitScripts = [];
492
+ this._implicitStyles = [];
493
+ this.options = (0, options_1.optionsWithDefaults)(_options);
494
+ this.macrosConfig = node_1.MacrosConfig.for(legacyEmberAppInstance, this.root);
495
+ if (this.env !== 'production') {
496
+ this.macrosConfig.enablePackageDevelopment(this.root);
497
+ this.macrosConfig.enableRuntimeMode();
498
+ if (this.isDummy) {
499
+ // dummy apps automatically put their owning addon under development too
500
+ this.macrosConfig.enablePackageDevelopment((0, path_1.dirname)((0, pkg_up_1.sync)({ cwd: this.legacyEmberAppInstance.project.root })));
501
+ }
502
+ }
503
+ // this uses globalConfig because it's a way for packages to ask "is
504
+ // Embroider doing this build?". So it's necessarily global, not scoped to
505
+ // any subgraph of dependencies.
506
+ this.macrosConfig.setGlobalConfig(__filename, `@embroider/core`, {
507
+ // this is hard-coded to true because it literally means "embroider is
508
+ // building this Ember app". You can see non-true when using the Embroider
509
+ // macros in a classic build.
510
+ active: true,
511
+ });
512
+ // Embroider 4.x always requires eager importSync
513
+ this.macrosConfig.importSyncImplementation = 'eager';
514
+ }
515
+ inTrees(prevStageTree) {
516
+ let configTree = this.config;
517
+ let contentForTree = this.contentFor;
518
+ return {
519
+ configTree,
520
+ contentForTree,
521
+ prevStageTree,
522
+ };
523
+ }
524
+ appPackage() {
525
+ // this is deliberately not RewrittenPackageCache, because it's supposed to
526
+ // be the original copy of the app with all the original dependencies.
527
+ let packageCache = core_1.PackageCache.shared('embroider', this.root);
528
+ if (this.isDummy) {
529
+ return new dummy_package_1.default(this.root, this.legacyEmberAppInstance.project.root, packageCache // TODO: cast won't be needed when refactor is complete
530
+ );
531
+ }
532
+ else {
533
+ return packageCache.get(this.root);
534
+ }
535
+ }
536
+ async instantiate(packageCache, configTree, contentForTree) {
537
+ let origAppPkg = this.appPackage();
538
+ let movedAppPkg = packageCache.withRewrittenDeps(origAppPkg);
539
+ let workingDir = (0, core_1.locateEmbroiderWorkingDir)(this.root);
540
+ return new compat_app_builder_1.CompatAppBuilder(origAppPkg, movedAppPkg, this.options, this, configTree, contentForTree, packageCache.get((0, path_1.join)(workingDir, 'rewritten-packages', '@embroider', 'synthesized-vendor')), packageCache.get((0, path_1.join)(workingDir, 'rewritten-packages', '@embroider', 'synthesized-styles')));
541
+ }
542
+ asStage(prevStage) {
543
+ let resolve;
544
+ let promise = new Promise(r => (resolve = r));
545
+ let tree = () => {
546
+ let inTrees = this.inTrees(prevStage.tree);
547
+ return new core_1.WaitForTrees(inTrees, this.annotation, async (_treePaths) => {
548
+ if (!this.active) {
549
+ let { outputPath } = await prevStage.ready();
550
+ let packageCache = core_1.RewrittenPackageCache.shared('embroider', this.root);
551
+ this.active = await this.instantiate(packageCache, inTrees.configTree, inTrees.contentForTree);
552
+ resolve({ outputPath });
553
+ }
554
+ await this.active.build();
555
+ });
556
+ };
557
+ return {
558
+ get inputPath() {
559
+ return prevStage.inputPath;
560
+ },
561
+ ready: async () => {
562
+ return await promise;
563
+ },
564
+ get tree() {
565
+ return tree();
566
+ },
567
+ };
568
+ }
569
+ }
570
+ exports.default = CompatApp;
571
+ __decorate([
572
+ (0, typescript_memoize_1.Memoize)()
573
+ ], CompatApp.prototype, "root", null);
574
+ __decorate([
575
+ (0, typescript_memoize_1.Memoize)()
576
+ ], CompatApp.prototype, "emberCLILocation", null);
577
+ __decorate([
578
+ (0, typescript_memoize_1.Memoize)()
579
+ ], CompatApp.prototype, "hasCompiledStyles", null);
580
+ __decorate([
581
+ (0, typescript_memoize_1.Memoize)()
582
+ ], CompatApp.prototype, "addonTreeCache", null);
583
+ __decorate([
584
+ (0, typescript_memoize_1.Memoize)()
585
+ ], CompatApp.prototype, "preprocessRegistry", null);
586
+ __decorate([
587
+ (0, typescript_memoize_1.Memoize)()
588
+ ], CompatApp.prototype, "config", null);
589
+ __decorate([
590
+ (0, typescript_memoize_1.Memoize)()
591
+ ], CompatApp.prototype, "testConfig", null);
592
+ __decorate([
593
+ (0, typescript_memoize_1.Memoize)()
594
+ ], CompatApp.prototype, "contentFor", null);
595
+ __decorate([
596
+ (0, typescript_memoize_1.Memoize)()
597
+ ], CompatApp.prototype, "configReplacePatterns", null);
598
+ __decorate([
599
+ (0, typescript_memoize_1.Memoize)()
600
+ ], CompatApp.prototype, "extraBabelPlugins", null);
601
+ __decorate([
602
+ (0, typescript_memoize_1.Memoize)()
603
+ ], CompatApp.prototype, "babelMajorVersion", null);
604
+ __decorate([
605
+ (0, typescript_memoize_1.Memoize)()
606
+ ], CompatApp.prototype, "transformedNodeFiles", null);
607
+ __decorate([
608
+ (0, typescript_memoize_1.Memoize)()
609
+ ], CompatApp.prototype, "preprocessors", null);
610
+ __decorate([
611
+ (0, typescript_memoize_1.Memoize)()
612
+ ], CompatApp.prototype, "appPackage", null);
613
+ function forbiddenVendorPath(path) {
614
+ // ember-source does not go in vendor under embroider (we always use the
615
+ // separate ES modules)
616
+ return !['./vendor/ember/ember.js'].includes(path);
617
+ }
618
+ //# sourceMappingURL=compat-app.js.map