@embroider/compat 4.0.2-unstable.bd82823 → 4.0.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 (317) hide show
  1. package/dist/src/add-to-tree.js.map +1 -0
  2. package/dist/src/addon-dependency-rules/ember-basic-dropdown.js.map +1 -0
  3. package/dist/src/addon-dependency-rules/ember-data.js.map +1 -0
  4. package/dist/src/addon-dependency-rules/ember-element-helper.js.map +1 -0
  5. package/dist/src/addon-dependency-rules/ember-modal-dialog.js.map +1 -0
  6. package/dist/src/addon-dependency-rules/ember-power-select-typeahead.js.map +1 -0
  7. package/dist/src/addon-dependency-rules/ember-power-select-with-create.js.map +1 -0
  8. package/dist/src/addon-dependency-rules/ember-power-select.js.map +1 -0
  9. package/dist/src/audit/babel-visitor.js.map +1 -0
  10. package/dist/src/audit/build.js.map +1 -0
  11. package/dist/src/audit/options.js.map +1 -0
  12. package/dist/src/audit.js.map +1 -0
  13. package/dist/src/babel-plugin-adjust-imports.js.map +1 -0
  14. package/dist/src/babel.js.map +1 -0
  15. package/dist/src/build-compat-addon.js.map +1 -0
  16. package/dist/src/compat-adapters/@ember/test-waiters.js.map +1 -0
  17. package/dist/src/compat-adapters/@ember-data/adapter.js.map +1 -0
  18. package/dist/src/compat-adapters/@ember-data/model.js.map +1 -0
  19. package/dist/src/compat-adapters/@ember-data/record-data.js.map +1 -0
  20. package/dist/src/compat-adapters/@ember-data/serializer.js.map +1 -0
  21. package/dist/src/compat-adapters/@ember-data/store.js.map +1 -0
  22. package/dist/src/compat-adapters/@glimmer/tracking.js.map +1 -0
  23. package/dist/src/compat-adapters/@html-next/vertical-collection.js.map +1 -0
  24. package/dist/src/compat-adapters/active-model-adapter.js.map +1 -0
  25. package/dist/src/compat-adapters/ember-asset-loader.js.map +1 -0
  26. package/dist/src/compat-adapters/ember-cli-addon-docs.js.map +1 -0
  27. package/dist/src/compat-adapters/ember-cli-babel.js.map +1 -0
  28. package/dist/src/compat-adapters/ember-cli-clipboard.js.map +1 -0
  29. package/dist/src/compat-adapters/ember-cli-deprecation-workflow.js.map +1 -0
  30. package/dist/src/compat-adapters/ember-cli-fastboot-testing.js.map +1 -0
  31. package/dist/src/compat-adapters/ember-cli-fastboot.js.map +1 -0
  32. package/dist/src/compat-adapters/ember-cli-mirage.js.map +1 -0
  33. package/dist/src/compat-adapters/ember-composable-helpers.js.map +1 -0
  34. package/dist/src/compat-adapters/ember-data.js.map +1 -0
  35. package/dist/src/compat-adapters/ember-decorators.js.map +1 -0
  36. package/dist/src/compat-adapters/ember-engines.js.map +1 -0
  37. package/dist/src/compat-adapters/ember-exam.js.map +1 -0
  38. package/dist/src/compat-adapters/ember-fetch.js.map +1 -0
  39. package/dist/src/compat-adapters/ember-get-config.js.map +1 -0
  40. package/dist/src/compat-adapters/ember-inflector.js.map +1 -0
  41. package/dist/src/compat-adapters/ember-percy.js.map +1 -0
  42. package/dist/src/compat-adapters/ember-resolver.js.map +1 -0
  43. package/dist/src/compat-adapters/ember-scroll-modifiers.js.map +1 -0
  44. package/dist/src/compat-adapters/ember-source.js.map +1 -0
  45. package/dist/src/compat-adapters/ember-svg-jar.js.map +1 -0
  46. package/dist/src/compat-adapters/ember-test-selectors.js.map +1 -0
  47. package/dist/src/compat-addons.js.map +1 -0
  48. package/dist/src/compat-app-builder.js.map +1 -0
  49. package/dist/src/compat-app.js.map +1 -0
  50. package/dist/src/compat-utils.js.map +1 -0
  51. package/dist/src/content-for-config.js.map +1 -0
  52. package/dist/src/dasherize-component-name.js.map +1 -0
  53. package/dist/src/default-pipeline.js.map +1 -0
  54. package/dist/src/dependency-rules.js.map +1 -0
  55. package/dist/src/detect-babel-plugins.js.map +1 -0
  56. package/dist/src/detect-compact-reexports.js.map +1 -0
  57. package/dist/src/dummy-package.js.map +1 -0
  58. package/dist/src/empty-package-tree.js.map +1 -0
  59. package/dist/src/get-real-addon.js.map +1 -0
  60. package/dist/src/hbs-to-js-broccoli-plugin.js.map +1 -0
  61. package/dist/src/htmlbars-unwrapper.js.map +1 -0
  62. package/dist/src/http-audit.js.map +1 -0
  63. package/dist/src/index.js.map +1 -0
  64. package/dist/src/merges.js.map +1 -0
  65. package/dist/src/module-visitor.js.map +1 -0
  66. package/dist/src/modules-compat.js.map +1 -0
  67. package/dist/src/observe-tree.js.map +1 -0
  68. package/dist/src/options.js.map +1 -0
  69. package/dist/src/prepare-htmlbars-ast-plugins.js.map +1 -0
  70. package/dist/src/resolver-transform.js.map +1 -0
  71. package/dist/src/rewrite-addon-tree.js.map +1 -0
  72. package/dist/src/rewrite-package-json.js.map +1 -0
  73. package/dist/src/smoosh-package-json.js.map +1 -0
  74. package/dist/src/snitch.js.map +1 -0
  75. package/dist/src/standalone-addon-build.js.map +1 -0
  76. package/dist/src/synthesize-template-only-components.js.map +1 -0
  77. package/dist/src/v1-addon.js.map +1 -0
  78. package/dist/src/v1-config.js.map +1 -0
  79. package/dist/src/v1-instance-cache.js.map +1 -0
  80. package/package.json +12 -9
  81. package/src/add-to-tree.js.map +0 -1
  82. package/src/addon-dependency-rules/ember-basic-dropdown.js.map +0 -1
  83. package/src/addon-dependency-rules/ember-data.js.map +0 -1
  84. package/src/addon-dependency-rules/ember-element-helper.js.map +0 -1
  85. package/src/addon-dependency-rules/ember-modal-dialog.js.map +0 -1
  86. package/src/addon-dependency-rules/ember-power-select-typeahead.js.map +0 -1
  87. package/src/addon-dependency-rules/ember-power-select-with-create.js.map +0 -1
  88. package/src/addon-dependency-rules/ember-power-select.js.map +0 -1
  89. package/src/audit/babel-visitor.js.map +0 -1
  90. package/src/audit/build.js.map +0 -1
  91. package/src/audit/options.js.map +0 -1
  92. package/src/audit.js.map +0 -1
  93. package/src/babel-plugin-adjust-imports.js.map +0 -1
  94. package/src/babel.js.map +0 -1
  95. package/src/build-compat-addon.js.map +0 -1
  96. package/src/compat-adapters/@ember/test-waiters.js.map +0 -1
  97. package/src/compat-adapters/@ember-data/adapter.js.map +0 -1
  98. package/src/compat-adapters/@ember-data/model.js.map +0 -1
  99. package/src/compat-adapters/@ember-data/record-data.js.map +0 -1
  100. package/src/compat-adapters/@ember-data/serializer.js.map +0 -1
  101. package/src/compat-adapters/@ember-data/store.js.map +0 -1
  102. package/src/compat-adapters/@glimmer/tracking.js.map +0 -1
  103. package/src/compat-adapters/@html-next/vertical-collection.js.map +0 -1
  104. package/src/compat-adapters/active-model-adapter.js.map +0 -1
  105. package/src/compat-adapters/ember-asset-loader.js.map +0 -1
  106. package/src/compat-adapters/ember-cli-addon-docs.js.map +0 -1
  107. package/src/compat-adapters/ember-cli-babel.js.map +0 -1
  108. package/src/compat-adapters/ember-cli-clipboard.js.map +0 -1
  109. package/src/compat-adapters/ember-cli-deprecation-workflow.js.map +0 -1
  110. package/src/compat-adapters/ember-cli-fastboot-testing.js.map +0 -1
  111. package/src/compat-adapters/ember-cli-fastboot.js.map +0 -1
  112. package/src/compat-adapters/ember-cli-mirage.js.map +0 -1
  113. package/src/compat-adapters/ember-composable-helpers.js.map +0 -1
  114. package/src/compat-adapters/ember-data.js.map +0 -1
  115. package/src/compat-adapters/ember-decorators.js.map +0 -1
  116. package/src/compat-adapters/ember-engines.js.map +0 -1
  117. package/src/compat-adapters/ember-exam.js.map +0 -1
  118. package/src/compat-adapters/ember-fetch.js.map +0 -1
  119. package/src/compat-adapters/ember-get-config.js.map +0 -1
  120. package/src/compat-adapters/ember-inflector.js.map +0 -1
  121. package/src/compat-adapters/ember-percy.js.map +0 -1
  122. package/src/compat-adapters/ember-resolver.js.map +0 -1
  123. package/src/compat-adapters/ember-scroll-modifiers.js.map +0 -1
  124. package/src/compat-adapters/ember-source.js.map +0 -1
  125. package/src/compat-adapters/ember-svg-jar.js.map +0 -1
  126. package/src/compat-adapters/ember-test-selectors.js.map +0 -1
  127. package/src/compat-addons.js.map +0 -1
  128. package/src/compat-app-builder.js.map +0 -1
  129. package/src/compat-app.js.map +0 -1
  130. package/src/compat-utils.js.map +0 -1
  131. package/src/content-for-config.js.map +0 -1
  132. package/src/dasherize-component-name.js.map +0 -1
  133. package/src/default-pipeline.js.map +0 -1
  134. package/src/dependency-rules.js.map +0 -1
  135. package/src/detect-babel-plugins.js.map +0 -1
  136. package/src/detect-compact-reexports.js.map +0 -1
  137. package/src/dummy-package.js.map +0 -1
  138. package/src/empty-package-tree.js.map +0 -1
  139. package/src/get-real-addon.js.map +0 -1
  140. package/src/hbs-to-js-broccoli-plugin.js.map +0 -1
  141. package/src/htmlbars-unwrapper.js.map +0 -1
  142. package/src/http-audit.js.map +0 -1
  143. package/src/index.js.map +0 -1
  144. package/src/merges.js.map +0 -1
  145. package/src/module-visitor.js.map +0 -1
  146. package/src/modules-compat.js.map +0 -1
  147. package/src/observe-tree.js.map +0 -1
  148. package/src/options.js.map +0 -1
  149. package/src/prepare-htmlbars-ast-plugins.js.map +0 -1
  150. package/src/resolver-transform.js.map +0 -1
  151. package/src/rewrite-addon-tree.js.map +0 -1
  152. package/src/rewrite-package-json.js.map +0 -1
  153. package/src/smoosh-package-json.js.map +0 -1
  154. package/src/snitch.js.map +0 -1
  155. package/src/standalone-addon-build.js.map +0 -1
  156. package/src/synthesize-template-only-components.js.map +0 -1
  157. package/src/v1-addon.js.map +0 -1
  158. package/src/v1-config.js.map +0 -1
  159. package/src/v1-instance-cache.js.map +0 -1
  160. /package/{src → dist/src}/add-to-tree.d.ts +0 -0
  161. /package/{src → dist/src}/add-to-tree.js +0 -0
  162. /package/{src → dist/src}/addon-dependency-rules/ember-basic-dropdown.d.ts +0 -0
  163. /package/{src → dist/src}/addon-dependency-rules/ember-basic-dropdown.js +0 -0
  164. /package/{src → dist/src}/addon-dependency-rules/ember-data.d.ts +0 -0
  165. /package/{src → dist/src}/addon-dependency-rules/ember-data.js +0 -0
  166. /package/{src → dist/src}/addon-dependency-rules/ember-element-helper.d.ts +0 -0
  167. /package/{src → dist/src}/addon-dependency-rules/ember-element-helper.js +0 -0
  168. /package/{src → dist/src}/addon-dependency-rules/ember-modal-dialog.d.ts +0 -0
  169. /package/{src → dist/src}/addon-dependency-rules/ember-modal-dialog.js +0 -0
  170. /package/{src → dist/src}/addon-dependency-rules/ember-power-select-typeahead.d.ts +0 -0
  171. /package/{src → dist/src}/addon-dependency-rules/ember-power-select-typeahead.js +0 -0
  172. /package/{src → dist/src}/addon-dependency-rules/ember-power-select-with-create.d.ts +0 -0
  173. /package/{src → dist/src}/addon-dependency-rules/ember-power-select-with-create.js +0 -0
  174. /package/{src → dist/src}/addon-dependency-rules/ember-power-select.d.ts +0 -0
  175. /package/{src → dist/src}/addon-dependency-rules/ember-power-select.js +0 -0
  176. /package/{src → dist/src}/audit/babel-visitor.d.ts +0 -0
  177. /package/{src → dist/src}/audit/babel-visitor.js +0 -0
  178. /package/{src → dist/src}/audit/build.d.ts +0 -0
  179. /package/{src → dist/src}/audit/build.js +0 -0
  180. /package/{src → dist/src}/audit/options.d.ts +0 -0
  181. /package/{src → dist/src}/audit/options.js +0 -0
  182. /package/{src → dist/src}/audit.d.ts +0 -0
  183. /package/{src → dist/src}/audit.js +0 -0
  184. /package/{src → dist/src}/babel-plugin-adjust-imports.d.ts +0 -0
  185. /package/{src → dist/src}/babel-plugin-adjust-imports.js +0 -0
  186. /package/{src → dist/src}/babel.d.ts +0 -0
  187. /package/{src → dist/src}/babel.js +0 -0
  188. /package/{src → dist/src}/build-compat-addon.d.ts +0 -0
  189. /package/{src → dist/src}/build-compat-addon.js +0 -0
  190. /package/{src → dist/src}/compat-adapters/@ember/test-waiters.d.ts +0 -0
  191. /package/{src → dist/src}/compat-adapters/@ember/test-waiters.js +0 -0
  192. /package/{src → dist/src}/compat-adapters/@ember-data/adapter.d.ts +0 -0
  193. /package/{src → dist/src}/compat-adapters/@ember-data/adapter.js +0 -0
  194. /package/{src → dist/src}/compat-adapters/@ember-data/model.d.ts +0 -0
  195. /package/{src → dist/src}/compat-adapters/@ember-data/model.js +0 -0
  196. /package/{src → dist/src}/compat-adapters/@ember-data/record-data.d.ts +0 -0
  197. /package/{src → dist/src}/compat-adapters/@ember-data/record-data.js +0 -0
  198. /package/{src → dist/src}/compat-adapters/@ember-data/serializer.d.ts +0 -0
  199. /package/{src → dist/src}/compat-adapters/@ember-data/serializer.js +0 -0
  200. /package/{src → dist/src}/compat-adapters/@ember-data/store.d.ts +0 -0
  201. /package/{src → dist/src}/compat-adapters/@ember-data/store.js +0 -0
  202. /package/{src → dist/src}/compat-adapters/@glimmer/tracking.d.ts +0 -0
  203. /package/{src → dist/src}/compat-adapters/@glimmer/tracking.js +0 -0
  204. /package/{src → dist/src}/compat-adapters/@html-next/vertical-collection.d.ts +0 -0
  205. /package/{src → dist/src}/compat-adapters/@html-next/vertical-collection.js +0 -0
  206. /package/{src → dist/src}/compat-adapters/active-model-adapter.d.ts +0 -0
  207. /package/{src → dist/src}/compat-adapters/active-model-adapter.js +0 -0
  208. /package/{src → dist/src}/compat-adapters/ember-asset-loader.d.ts +0 -0
  209. /package/{src → dist/src}/compat-adapters/ember-asset-loader.js +0 -0
  210. /package/{src → dist/src}/compat-adapters/ember-cli-addon-docs.d.ts +0 -0
  211. /package/{src → dist/src}/compat-adapters/ember-cli-addon-docs.js +0 -0
  212. /package/{src → dist/src}/compat-adapters/ember-cli-babel.d.ts +0 -0
  213. /package/{src → dist/src}/compat-adapters/ember-cli-babel.js +0 -0
  214. /package/{src → dist/src}/compat-adapters/ember-cli-clipboard.d.ts +0 -0
  215. /package/{src → dist/src}/compat-adapters/ember-cli-clipboard.js +0 -0
  216. /package/{src → dist/src}/compat-adapters/ember-cli-deprecation-workflow.d.ts +0 -0
  217. /package/{src → dist/src}/compat-adapters/ember-cli-deprecation-workflow.js +0 -0
  218. /package/{src → dist/src}/compat-adapters/ember-cli-fastboot-testing.d.ts +0 -0
  219. /package/{src → dist/src}/compat-adapters/ember-cli-fastboot-testing.js +0 -0
  220. /package/{src → dist/src}/compat-adapters/ember-cli-fastboot.d.ts +0 -0
  221. /package/{src → dist/src}/compat-adapters/ember-cli-fastboot.js +0 -0
  222. /package/{src → dist/src}/compat-adapters/ember-cli-mirage.d.ts +0 -0
  223. /package/{src → dist/src}/compat-adapters/ember-cli-mirage.js +0 -0
  224. /package/{src → dist/src}/compat-adapters/ember-composable-helpers.d.ts +0 -0
  225. /package/{src → dist/src}/compat-adapters/ember-composable-helpers.js +0 -0
  226. /package/{src → dist/src}/compat-adapters/ember-data.d.ts +0 -0
  227. /package/{src → dist/src}/compat-adapters/ember-data.js +0 -0
  228. /package/{src → dist/src}/compat-adapters/ember-decorators.d.ts +0 -0
  229. /package/{src → dist/src}/compat-adapters/ember-decorators.js +0 -0
  230. /package/{src → dist/src}/compat-adapters/ember-engines.d.ts +0 -0
  231. /package/{src → dist/src}/compat-adapters/ember-engines.js +0 -0
  232. /package/{src → dist/src}/compat-adapters/ember-exam.d.ts +0 -0
  233. /package/{src → dist/src}/compat-adapters/ember-exam.js +0 -0
  234. /package/{src → dist/src}/compat-adapters/ember-fetch.d.ts +0 -0
  235. /package/{src → dist/src}/compat-adapters/ember-fetch.js +0 -0
  236. /package/{src → dist/src}/compat-adapters/ember-get-config.d.ts +0 -0
  237. /package/{src → dist/src}/compat-adapters/ember-get-config.js +0 -0
  238. /package/{src → dist/src}/compat-adapters/ember-inflector.d.ts +0 -0
  239. /package/{src → dist/src}/compat-adapters/ember-inflector.js +0 -0
  240. /package/{src → dist/src}/compat-adapters/ember-percy.d.ts +0 -0
  241. /package/{src → dist/src}/compat-adapters/ember-percy.js +0 -0
  242. /package/{src → dist/src}/compat-adapters/ember-resolver.d.ts +0 -0
  243. /package/{src → dist/src}/compat-adapters/ember-resolver.js +0 -0
  244. /package/{src → dist/src}/compat-adapters/ember-scroll-modifiers.d.ts +0 -0
  245. /package/{src → dist/src}/compat-adapters/ember-scroll-modifiers.js +0 -0
  246. /package/{src → dist/src}/compat-adapters/ember-source.d.ts +0 -0
  247. /package/{src → dist/src}/compat-adapters/ember-source.js +0 -0
  248. /package/{src → dist/src}/compat-adapters/ember-svg-jar.d.ts +0 -0
  249. /package/{src → dist/src}/compat-adapters/ember-svg-jar.js +0 -0
  250. /package/{src → dist/src}/compat-adapters/ember-test-selectors.d.ts +0 -0
  251. /package/{src → dist/src}/compat-adapters/ember-test-selectors.js +0 -0
  252. /package/{src → dist/src}/compat-addons.d.ts +0 -0
  253. /package/{src → dist/src}/compat-addons.js +0 -0
  254. /package/{src → dist/src}/compat-app-builder.d.ts +0 -0
  255. /package/{src → dist/src}/compat-app-builder.js +0 -0
  256. /package/{src → dist/src}/compat-app.d.ts +0 -0
  257. /package/{src → dist/src}/compat-app.js +0 -0
  258. /package/{src → dist/src}/compat-utils.d.ts +0 -0
  259. /package/{src → dist/src}/compat-utils.js +0 -0
  260. /package/{src → dist/src}/content-for-config.d.ts +0 -0
  261. /package/{src → dist/src}/content-for-config.js +0 -0
  262. /package/{src → dist/src}/dasherize-component-name.d.ts +0 -0
  263. /package/{src → dist/src}/dasherize-component-name.js +0 -0
  264. /package/{src → dist/src}/default-pipeline.d.ts +0 -0
  265. /package/{src → dist/src}/default-pipeline.js +0 -0
  266. /package/{src → dist/src}/dependency-rules.d.ts +0 -0
  267. /package/{src → dist/src}/dependency-rules.js +0 -0
  268. /package/{src → dist/src}/detect-babel-plugins.d.ts +0 -0
  269. /package/{src → dist/src}/detect-babel-plugins.js +0 -0
  270. /package/{src → dist/src}/detect-compact-reexports.d.ts +0 -0
  271. /package/{src → dist/src}/detect-compact-reexports.js +0 -0
  272. /package/{src → dist/src}/dummy-package.d.ts +0 -0
  273. /package/{src → dist/src}/dummy-package.js +0 -0
  274. /package/{src → dist/src}/empty-package-tree.d.ts +0 -0
  275. /package/{src → dist/src}/empty-package-tree.js +0 -0
  276. /package/{src → dist/src}/get-real-addon.d.ts +0 -0
  277. /package/{src → dist/src}/get-real-addon.js +0 -0
  278. /package/{src → dist/src}/hbs-to-js-broccoli-plugin.d.ts +0 -0
  279. /package/{src → dist/src}/hbs-to-js-broccoli-plugin.js +0 -0
  280. /package/{src → dist/src}/htmlbars-unwrapper.d.ts +0 -0
  281. /package/{src → dist/src}/htmlbars-unwrapper.js +0 -0
  282. /package/{src → dist/src}/http-audit.d.ts +0 -0
  283. /package/{src → dist/src}/http-audit.js +0 -0
  284. /package/{src → dist/src}/index.d.ts +0 -0
  285. /package/{src → dist/src}/index.js +0 -0
  286. /package/{src → dist/src}/merges.d.ts +0 -0
  287. /package/{src → dist/src}/merges.js +0 -0
  288. /package/{src → dist/src}/module-visitor.d.ts +0 -0
  289. /package/{src → dist/src}/module-visitor.js +0 -0
  290. /package/{src → dist/src}/modules-compat.d.ts +0 -0
  291. /package/{src → dist/src}/modules-compat.js +0 -0
  292. /package/{src → dist/src}/observe-tree.d.ts +0 -0
  293. /package/{src → dist/src}/observe-tree.js +0 -0
  294. /package/{src → dist/src}/options.d.ts +0 -0
  295. /package/{src → dist/src}/options.js +0 -0
  296. /package/{src → dist/src}/prepare-htmlbars-ast-plugins.d.ts +0 -0
  297. /package/{src → dist/src}/prepare-htmlbars-ast-plugins.js +0 -0
  298. /package/{src → dist/src}/resolver-transform.d.ts +0 -0
  299. /package/{src → dist/src}/resolver-transform.js +0 -0
  300. /package/{src → dist/src}/rewrite-addon-tree.d.ts +0 -0
  301. /package/{src → dist/src}/rewrite-addon-tree.js +0 -0
  302. /package/{src → dist/src}/rewrite-package-json.d.ts +0 -0
  303. /package/{src → dist/src}/rewrite-package-json.js +0 -0
  304. /package/{src → dist/src}/smoosh-package-json.d.ts +0 -0
  305. /package/{src → dist/src}/smoosh-package-json.js +0 -0
  306. /package/{src → dist/src}/snitch.d.ts +0 -0
  307. /package/{src → dist/src}/snitch.js +0 -0
  308. /package/{src → dist/src}/standalone-addon-build.d.ts +0 -0
  309. /package/{src → dist/src}/standalone-addon-build.js +0 -0
  310. /package/{src → dist/src}/synthesize-template-only-components.d.ts +0 -0
  311. /package/{src → dist/src}/synthesize-template-only-components.js +0 -0
  312. /package/{src → dist/src}/v1-addon.d.ts +0 -0
  313. /package/{src → dist/src}/v1-addon.js +0 -0
  314. /package/{src → dist/src}/v1-config.d.ts +0 -0
  315. /package/{src → dist/src}/v1-config.js +0 -0
  316. /package/{src → dist/src}/v1-instance-cache.d.ts +0 -0
  317. /package/{src → dist/src}/v1-instance-cache.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-transform.js","sourceRoot":"","sources":["../../src/resolver-transform.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ASTv1, ASTPlugin, ASTPluginBuilder, ASTPluginEnvironment, WalkerPath } from '@glimmer/syntax';\nimport type {\n PreprocessedComponentRule,\n ActivePackageRules,\n ComponentRules,\n PackageRules,\n ModuleRules,\n} from './dependency-rules';\nimport { preprocessComponentRule, appTreeRulesDir } from './dependency-rules';\nimport { Memoize } from 'typescript-memoize';\nimport type { WithJSUtils } from 'babel-plugin-ember-template-compilation';\nimport assertNever from 'assert-never';\nimport { join, sep } from 'path';\nimport { dasherize, snippetToDasherizedName } from './dasherize-component-name';\nimport type { ResolverOptions as CoreResolverOptions } from '@embroider/core';\nimport { Resolver, ResolverLoader, cleanUrl } from '@embroider/core';\nimport type CompatOptions from './options';\nimport type { AuditMessage, Loc } from './audit';\nimport { camelCase, mergeWith } from 'lodash';\nimport { satisfies } from 'semver';\n\ntype Env = WithJSUtils<ASTPluginEnvironment> & {\n filename: string;\n contents: string;\n strictMode?: boolean;\n locals?: string[];\n};\n\n// this is a subset of the full Options. We care about serializability, and we\n// only needs parts that are easily serializable, which is why we don't keep the\n// whole thing.\ntype UserConfig = Pick<Required<CompatOptions>, 'staticInvokables' | 'allowUnsafeDynamicComponents'>;\n\nexport interface CompatResolverOptions extends CoreResolverOptions {\n activePackageRules: ActivePackageRules[];\n options: UserConfig;\n}\n\nexport interface ExternalNameHint {\n (path: string, kind: 'component' | 'helper' | 'modifier' | 'ambiguous-component-or-helper'): string | null;\n}\n\nexport type ExternalResolver = (module: string) => string;\n\nexport interface Options {\n appRoot: string;\n emberVersion: string;\n externalNameHint?: ExternalNameHint;\n externalResolve?: (module: string) => string;\n}\n\ntype BuiltIn = {\n importableHelper?: [string, string];\n importableComponent?: [string, string];\n importableModifier?: [string, string];\n};\n\nfunction builtInKeywords(emberVersion: string): Record<string, BuiltIn | undefined> {\n const builtInKeywords: Record<string, BuiltIn | undefined> = {\n '-get-dynamic-var': {},\n '-in-element': {},\n '-with-dynamic-vars': {},\n action: {},\n array: {\n importableHelper: ['array', '@ember/helper'],\n },\n component: {},\n concat: {\n importableHelper: ['concat', '@ember/helper'],\n },\n debugger: {},\n 'each-in': {},\n each: {},\n fn: {\n importableHelper: ['fn', '@ember/helper'],\n },\n get: {\n importableHelper: ['get', '@ember/helper'],\n },\n 'has-block-params': {},\n 'has-block': {},\n hasBlock: {},\n hasBlockParams: {},\n hash: {\n importableHelper: ['hash', '@ember/helper'],\n },\n helper: {},\n if: {},\n 'in-element': {},\n input: {\n importableComponent: ['Input', '@ember/component'],\n },\n let: {},\n 'link-to': {\n importableComponent: ['LinkTo', '@ember/routing'],\n },\n loc: {},\n log: {},\n modifier: {},\n mount: {},\n mut: {},\n on: {\n importableModifier: ['on', '@ember/modifier'],\n },\n outlet: {},\n partial: {},\n 'query-params': {},\n readonly: {},\n textarea: {\n importableComponent: ['Textarea', '@ember/component'],\n },\n unbound: {},\n 'unique-id': {},\n unless: {},\n with: {},\n yield: {},\n };\n if (satisfies(emberVersion, '>=5.2')) {\n builtInKeywords['unique-id'] = {\n importableHelper: ['uniqueId', '@ember/helper'],\n };\n }\n return builtInKeywords;\n}\n\nfunction supportsThisFallback(emberVersion: string): boolean {\n return satisfies(emberVersion, '<= 4.0.0-alpha.0', { includePrerelease: true });\n}\n\ninterface ComponentResolution {\n type: 'component';\n specifier: string;\n importedName: string;\n yieldsComponents: Required<ComponentRules>['yieldsSafeComponents'];\n yieldsArguments: Required<ComponentRules>['yieldsArguments'];\n argumentsAreComponents: string[];\n nameHint: string;\n}\n\ntype HelperResolution = {\n type: 'helper';\n nameHint: string;\n specifier: string;\n importedName: string;\n};\n\ntype ModifierResolution = {\n type: 'modifier';\n specifier: string;\n importedName: string;\n nameHint: string;\n};\n\ntype ResolutionResult = ComponentResolution | HelperResolution | ModifierResolution;\n\ninterface ResolutionFail {\n type: 'error';\n message: string;\n detail: string;\n loc: Loc;\n}\n\ntype Resolution = ResolutionResult | ResolutionFail;\n\ntype ComponentLocator =\n | {\n type: 'literal';\n path: string;\n }\n | {\n type: 'path';\n path: string;\n }\n | {\n type: 'other';\n };\n\nclass TemplateResolver implements ASTPlugin {\n readonly name = 'embroider-build-time-resolver';\n\n private auditHandler: undefined | ((msg: AuditMessage) => void);\n private scopeStack = new ScopeStack();\n\n private moduleResolver: Resolver;\n\n constructor(\n private env: Env,\n private config: CompatResolverOptions,\n private builtInsForEmberVersion: ReturnType<typeof builtInKeywords>,\n private supportsThisFallback: boolean,\n private externalNameHint?: ExternalNameHint,\n private externalResolve?: ExternalResolver\n ) {\n this.moduleResolver = new Resolver(config);\n if ((globalThis as any).embroider_audit) {\n this.auditHandler = (globalThis as any).embroider_audit;\n }\n }\n\n private emit<Target extends WalkerPath<ASTv1.Node>>(\n parentPath: Target,\n resolution: Resolution | null,\n setter: (target: Target['node'], newIdentifier: ASTv1.PathExpression) => void\n ) {\n switch (resolution?.type) {\n case 'error':\n this.reportError(resolution);\n return;\n case 'component':\n case 'modifier':\n case 'helper': {\n let specifier = resolution.specifier;\n if (this.externalResolve) {\n specifier = this.externalResolve(specifier);\n }\n let name = this.env.meta.jsutils.bindImport(specifier, resolution.importedName, parentPath, {\n nameHint: resolution.nameHint,\n });\n setter(parentPath.node, this.env.syntax.builders.path(name));\n this.scopeStack.emittedResolution(name, resolution);\n return;\n }\n case undefined:\n return;\n default:\n assertNever(resolution);\n }\n }\n\n private reportError(dep: ResolutionFail) {\n if (!this.auditHandler && !this.config.options.allowUnsafeDynamicComponents) {\n let e: any = new Error(`${dep.message}: ${dep.detail} in ${this.humanReadableFile(this.env.filename)}`);\n e.isTemplateResolverError = true;\n e.loc = dep.loc;\n e.moduleName = this.env.filename;\n throw e;\n }\n if (this.auditHandler) {\n this.auditHandler({\n message: dep.message,\n filename: this.env.filename,\n detail: dep.detail,\n loc: dep.loc,\n source: this.env.contents,\n });\n }\n }\n\n private humanReadableFile(file: string) {\n let { appRoot } = this.config;\n if (!appRoot.endsWith(sep)) {\n appRoot += sep;\n }\n if (file.startsWith(appRoot)) {\n return file.slice(appRoot.length);\n }\n return file;\n }\n\n private handleComponentHelper(\n param: ASTv1.Node,\n impliedBecause?: { componentName: string; argumentName: string }\n ): ComponentResolution | ResolutionFail | null {\n let locator: ComponentLocator;\n switch (param.type) {\n case 'StringLiteral':\n locator = { type: 'literal', path: param.value };\n break;\n case 'PathExpression':\n locator = { type: 'path', path: param.original };\n break;\n case 'MustacheStatement':\n if (param.hash.pairs.length === 0 && param.params.length === 0) {\n return this.handleComponentHelper(param.path, impliedBecause);\n } else if (param.path.type === 'PathExpression' && param.path.original === 'component') {\n // safe because we will handle this inner `{{component ...}}` mustache on its own\n return null;\n } else {\n locator = { type: 'other' };\n }\n break;\n case 'TextNode':\n locator = { type: 'literal', path: param.chars };\n break;\n case 'SubExpression':\n if (param.path.type === 'PathExpression' && param.path.original === 'component') {\n // safe because we will handle this inner `(component ...)` subexpression on its own\n return null;\n }\n if (param.path.type === 'PathExpression' && param.path.original === 'ensure-safe-component') {\n // safe because we trust ensure-safe-component\n return null;\n }\n locator = { type: 'other' };\n break;\n default:\n locator = { type: 'other' };\n }\n\n if (locator.type === 'path' && this.scopeStack.safeComponentInScope(locator.path)) {\n return null;\n }\n\n return this.targetComponentHelper(locator, param.loc, impliedBecause);\n }\n\n private handleDynamicComponentArguments(\n componentName: string,\n argumentsAreComponents: string[],\n attributes: WalkerPath<ASTv1.AttrNode | ASTv1.HashPair>[]\n ) {\n for (let name of argumentsAreComponents) {\n let attr = attributes.find(attr => {\n if (attr.node.type === 'AttrNode') {\n return attr.node.name === '@' + name;\n } else {\n return attr.node.key === name;\n }\n });\n if (attr) {\n let resolution = this.handleComponentHelper(attr.node.value, {\n componentName,\n argumentName: name,\n });\n this.emit(attr, resolution, (node, newId) => {\n if (node.type === 'AttrNode') {\n node.value = this.env.syntax.builders.mustache(newId);\n } else {\n node.value = newId;\n }\n });\n }\n }\n }\n\n private get staticInvokablesEnabled(): boolean {\n if (!this.config?.options) {\n return true;\n }\n return this.config.options.staticInvokables || Boolean(this.auditHandler);\n }\n\n private isIgnoredComponent(dasherizedName: string) {\n return this.rules.components.get(dasherizedName)?.safeToIgnore;\n }\n\n @Memoize()\n private get rules() {\n // rules that are keyed by the filename they're talking about\n let files: Map<string, PreprocessedComponentRule> = new Map();\n\n // rules that are keyed by our dasherized interpretation of the component's name\n let components: Map<string, PreprocessedComponentRule> = new Map();\n\n // we're not responsible for filtering out rules for inactive packages here,\n // that is done before getting to us. So we should assume these are all in\n // force.\n for (let rule of this.config?.activePackageRules ?? []) {\n if (rule.components) {\n for (let [snippet, rules] of Object.entries(rule.components)) {\n let processedRules = preprocessComponentRule(rules);\n let dasherizedName = this.standardDasherize(snippet, rule);\n components.set(dasherizedName, processedRules);\n if (rules.layout) {\n for (let root of rule.roots) {\n if (rules.layout.addonPath) {\n files.set(join(root, rules.layout.addonPath), processedRules);\n }\n if (rules.layout.appPath) {\n files.set(join(root, rules.layout.appPath), processedRules);\n }\n }\n }\n }\n }\n if (rule.appTemplates) {\n for (let [path, templateRules] of Object.entries(rule.appTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n for (let root of rule.roots) {\n files.set(join(appTreeRulesDir(root, this.moduleResolver), path), processedRules);\n }\n }\n }\n if (rule.addonTemplates) {\n for (let [path, templateRules] of Object.entries(rule.addonTemplates)) {\n let processedRules = preprocessComponentRule(templateRules);\n for (let root of rule.roots) {\n files.set(join(root, path), processedRules);\n }\n }\n }\n }\n return { files, components };\n }\n\n private findRules(absPath: string): PreprocessedComponentRule | undefined {\n // when babel is invoked by vite our filenames can have query params still\n // hanging off them. That would break rule matching.\n absPath = cleanUrl(absPath);\n\n let fileRules = this.rules.files.get(absPath);\n let componentRules: PreprocessedComponentRule | undefined;\n\n let componentName = this.moduleResolver.reverseComponentLookup(absPath);\n if (componentName) {\n componentRules = this.rules.components.get(componentName);\n }\n\n if (fileRules && componentRules) {\n return mergeWith(fileRules, componentRules, appendArrays);\n }\n\n return fileRules ?? componentRules;\n }\n\n private standardDasherize(snippet: string, rule: PackageRules | ModuleRules): string {\n let name = snippetToDasherizedName(snippet);\n if (name == null) {\n throw new Error(`unable to parse component snippet \"${snippet}\" from rule ${JSON.stringify(rule, null, 2)}`);\n }\n return name;\n }\n\n private targetComponent(name: string, nameHint: string): ComponentResolution | null {\n if (!this.staticInvokablesEnabled) {\n return null;\n }\n\n const builtIn = this.builtInsForEmberVersion[name];\n\n if (builtIn?.importableComponent) {\n let [importedName, specifier] = builtIn.importableComponent;\n return {\n type: 'component',\n specifier,\n importedName,\n yieldsComponents: [],\n yieldsArguments: [],\n argumentsAreComponents: [],\n nameHint: importedName,\n };\n }\n\n if (builtIn) {\n return null;\n }\n if (this.isIgnoredComponent(name)) {\n return null;\n }\n\n let componentRules = this.rules.components.get(name);\n return {\n type: 'component',\n specifier: `@embroider/virtual/components/${name}`,\n importedName: 'default',\n yieldsComponents: componentRules ? componentRules.yieldsSafeComponents : [],\n yieldsArguments: componentRules ? componentRules.yieldsArguments : [],\n argumentsAreComponents: componentRules ? componentRules.argumentsAreComponents : [],\n nameHint: this.nameHint(nameHint, 'component'),\n };\n }\n\n private targetComponentHelper(\n component: ComponentLocator,\n loc: Loc,\n impliedBecause?: { componentName: string; argumentName: string }\n ): ComponentResolution | ResolutionFail | null {\n if (!this.staticInvokablesEnabled) {\n return null;\n }\n\n let message;\n if (impliedBecause) {\n message = `argument \"${impliedBecause.argumentName}\" to component \"${impliedBecause.componentName}\" is treated as a component, but the value you're passing is dynamic`;\n } else {\n message = `Unsafe dynamic component`;\n }\n\n if (component.type === 'other') {\n return {\n type: 'error',\n message,\n detail: `cannot statically analyze this expression`,\n loc,\n };\n }\n if (component.type === 'path') {\n if (this.ownRules?.safeInteriorPaths.includes(component.path)) {\n return null;\n }\n return {\n type: 'error',\n message,\n detail: component.path,\n loc,\n };\n }\n\n return this.targetComponent(component.path, component.path);\n }\n\n private targetHelper(path: string): HelperResolution | null {\n if (!this.staticInvokablesEnabled) {\n return null;\n }\n\n // people are not allowed to override the built-in helpers with their own\n // globally-named helpers. It throws an error. So it's fine for us to\n // prioritize the builtIns here without bothering to resolve a user helper\n // of the same name.\n const builtIn = this.builtInsForEmberVersion[path];\n\n if (builtIn?.importableHelper) {\n let [importedName, specifier] = builtIn.importableHelper;\n return {\n type: 'helper',\n specifier,\n importedName,\n nameHint: importedName,\n };\n }\n\n if (builtIn) {\n return null;\n }\n\n return {\n type: 'helper',\n specifier: `@embroider/virtual/helpers/${path}`,\n importedName: 'default',\n nameHint: this.nameHint(path, 'helper'),\n };\n }\n\n private targetHelperOrComponent(\n path: string,\n loc: Loc,\n hasArgs: boolean\n ): ComponentResolution | HelperResolution | null {\n /*\n\n In earlier embroider versions we would do a bunch of module resolution right\n here inside the ast transform to try to resolve the ambiguity of this case\n and if we didn't find anything, leave the template unchanged. But that leads\n to both a lot of extra build-time expense (since we are attempting\n resolution for lots of things that may in fact be just some data and not a\n component invocation at all, and also since we are pre-resolving modules\n that will get resolved a second time by the final stage packager).\n\n Now, we're going to be less forgiving, because it streamlines the build for\n everyone who's not still using these *extremely* old patterns.\n\n The problematic case is:\n\n 1. In a non-strict template (because this whole resolver-transform.ts is a\n no-op on strict handlebars).\n\n 2. Have a mustache statement like: `{{something}}`, where `something` is:\n\n a. Not a variable in scope (for example, there's no preceeding line\n like `<Parent as |something|>`)\n b. Does not start with `@` because that must be an argument from outside this template.\n c. Does not contain a dot, like `some.thing` (because that case is classically\n never a global component resolution that we would need to handle)\n d. Does not start with `this` (this rule is mostly redundant with the previous rule,\n but even a standalone `this` is never a component invocation).\n e. Does not have any arguments. If there are argument like `{{something a=b}}`,\n there is still ambiguity between helper vs component, but there is no longer\n the possibility that this was just rendering some data.\n f. Does not take a block, like `{{#something}}{{/something}}` (because that is\n always a component, no ambiguity.)\n\n We can't tell if this problematic case is really:\n\n 1. A helper invocation with no arguments that is being directly rendered.\n Out-of-the-box, ember already generates [a lint\n error](https://github.com/ember-template-lint/ember-template-lint/blob/master/docs/rule/no-curly-component-invocation.md)\n for this, although it tells you to whitelist your helper when IMO it\n should tell you to use an unambiguous syntax like `{{ (something) }}`\n instead.\n\n 2. A component invocation, which you could have written `<Something />`\n instead. Angle-bracket invocation has been available and easy-to-adopt\n for a very long time.\n\n 3. Property-this-fallback for `{{this.something}}`. Property-this-fallback\n is eliminated at Ember 4.0, so people have been heavily pushed to get\n it out of their addons.\n */\n\n // first, bail out on all the stuff we can obviously ignore\n if (!this.staticInvokablesEnabled || this.isIgnoredComponent(path)) {\n return null;\n }\n\n let builtIn = this.builtInsForEmberVersion[path];\n\n if (builtIn?.importableComponent) {\n let [importedName, specifier] = builtIn.importableComponent;\n return {\n type: 'component',\n specifier,\n importedName,\n yieldsComponents: [],\n yieldsArguments: [],\n argumentsAreComponents: [],\n nameHint: importedName,\n };\n }\n\n if (builtIn?.importableHelper) {\n let [importedName, specifier] = builtIn.importableHelper;\n return {\n type: 'helper',\n specifier,\n importedName,\n nameHint: importedName,\n };\n }\n\n if (builtIn) {\n return null;\n }\n\n let ownComponentRules = this.findRules(this.env.filename);\n if (ownComponentRules?.disambiguate[path]) {\n switch (ownComponentRules.disambiguate[path]) {\n case 'component':\n return this.targetComponent(path, path);\n case 'helper':\n return this.targetHelper(path);\n case 'data':\n return null;\n }\n }\n\n if (!hasArgs && !path.includes('/') && !path.includes('@') && this.supportsThisFallback) {\n // this is the case that could also be property-this-fallback. We're going\n // to force people to disambiguate, because letting a potential component\n // or helper invocation lurk inside every bit of data you render is not\n // ok.\n this.reportError({\n type: 'error',\n message: 'unsupported ambiguous syntax',\n detail: `\"{{${path}}}\" is ambiguous and could mean \"{{this.${path}}}\" or component \"<${capitalize(\n camelCase(path)\n )} />\" or helper \"{{ (${path}) }}\". Change it to one of those unambigous forms, or use a \"disambiguate\" packageRule to work around the problem if its in third-party code you cannot easily fix.`,\n loc,\n });\n return null;\n }\n\n let componentRules = this.rules.components.get(path);\n return {\n type: 'component',\n specifier: `@embroider/virtual/ambiguous/${path}`,\n importedName: 'default',\n yieldsComponents: componentRules ? componentRules.yieldsSafeComponents : [],\n yieldsArguments: componentRules ? componentRules.yieldsArguments : [],\n argumentsAreComponents: componentRules ? componentRules.argumentsAreComponents : [],\n nameHint: this.nameHint(path, 'ambiguous-component-or-helper'),\n };\n }\n\n private targetElementModifier(path: string): ModifierResolution | null {\n if (!this.staticInvokablesEnabled) {\n return null;\n }\n\n const builtIn = this.builtInsForEmberVersion[path];\n if (builtIn?.importableModifier) {\n let [importedName, specifier] = builtIn.importableModifier;\n return {\n type: 'modifier',\n specifier,\n importedName,\n nameHint: importedName,\n };\n }\n\n if (builtIn) {\n return null;\n }\n\n return {\n type: 'modifier',\n specifier: `@embroider/virtual/modifiers/${path}`,\n importedName: 'default',\n nameHint: this.nameHint(path, 'modifier'),\n };\n }\n\n targetDynamicModifier(modifier: ComponentLocator, loc: Loc): ModifierResolution | ResolutionFail | null {\n if (!this.staticInvokablesEnabled) {\n return null;\n }\n\n if (modifier.type === 'literal') {\n return this.targetElementModifier(modifier.path);\n } else {\n return {\n type: 'error',\n message: 'Unsafe dynamic modifier',\n detail: `cannot statically analyze this expression`,\n loc,\n };\n }\n }\n\n private targetDynamicHelper(helper: ComponentLocator): HelperResolution | null {\n if (!this.staticInvokablesEnabled) {\n return null;\n }\n\n if (helper.type === 'literal') {\n return this.targetHelper(helper.path);\n }\n\n // we don't have to manage any errors in this case because ember itself\n // considers it an error to pass anything but a string literal to the\n // `helper` helper.\n return null;\n }\n\n private nameHint(path: string, kind: 'component' | 'helper' | 'modifier' | 'ambiguous-component-or-helper'): string {\n let hint = this.externalNameHint?.(path, kind);\n if (hint != null) {\n return hint;\n }\n\n let parts = path.split('@');\n hint = parts[parts.length - 1];\n\n // if our name is going to be entirely lower case letter, we add an\n // underscore to avoid any possible HTML element collision.\n if (/^[a-z]+$/.test(hint)) {\n hint += '_';\n }\n return hint;\n }\n\n private handleDynamicModifier(param: ASTv1.Expression): ModifierResolution | ResolutionFail | null {\n if (param.type === 'StringLiteral') {\n return this.targetDynamicModifier({ type: 'literal', path: param.value }, param.loc);\n }\n // we don't have to manage any errors in this case because ember itself\n // considers it an error to pass anything but a string literal to the\n // modifier helper.\n return null;\n }\n\n private handleDynamicHelper(param: ASTv1.Expression): HelperResolution | ResolutionFail | null {\n // We only need to handle StringLiterals since Ember already throws an error if unsupported values\n // are passed to the helper keyword.\n // If a helper reference is passed in we don't need to do anything since it's either the result of a previous\n // helper keyword invocation, or a helper reference that was imported somewhere.\n if (param.type === 'StringLiteral') {\n return this.targetDynamicHelper({ type: 'literal', path: param.value });\n }\n return null;\n }\n\n private ownRules: PreprocessedComponentRule | undefined;\n\n private implementInvokesRule(node: ASTv1.Template, path: WalkerPath<ASTv1.Template>) {\n if (!this.ownRules?.invokes) {\n return;\n }\n let registrations: ASTv1.HashPair[] = [];\n for (let snippets of Object.values(this.ownRules.invokes)) {\n for (let snippet of snippets) {\n let dasherizedName = snippetToDasherizedName(snippet);\n if (!dasherizedName) {\n throw new Error(`Package rule contains unparseable component snippet: ${snippet}`);\n }\n let resolution = this.targetComponentHelper({ type: 'literal', path: dasherizedName }, node.loc);\n this.emit(path, resolution, (_target, id) => {\n registrations.push(this.env.syntax.builders.pair(dasherizedName, id));\n });\n }\n }\n if (registrations.length > 0) {\n node.body.unshift(\n this.env.syntax.builders.mustache(\n this.env.meta.jsutils.bindExpression(registrationHelper, path, { nameHint: 'registerComponents' }),\n [],\n this.env.syntax.builders.hash(registrations)\n )\n );\n }\n }\n\n visitor: ASTPlugin['visitor'] = {\n Template: {\n enter: (node, path) => {\n this.ownRules = this.findRules(this.env.filename);\n this.implementInvokesRule(node, path);\n if (this.env.locals) {\n this.scopeStack.pushMustacheBlock(this.env.locals, { top: true });\n }\n },\n exit: () => {\n if (this.env.locals) {\n this.scopeStack.pop();\n }\n },\n },\n Block: {\n enter: node => {\n this.scopeStack.pushMustacheBlock(node.blockParams);\n },\n exit: () => {\n this.scopeStack.pop();\n },\n },\n BlockStatement: (node, path) => {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n let rootName = headOf(node.path);\n if (this.scopeStack.inScope(rootName, path)) {\n return;\n }\n if (isThisHead(node.path)) {\n return;\n }\n if (parts(node.path).length > 1) {\n // paths with a dot in them (which therefore split into more than\n // one \"part\") are classically understood by ember to be contextual\n // components, which means there's nothing to resolve at this\n // location.\n return;\n }\n if (node.path.original === 'component' && node.params.length > 0) {\n let resolution = this.handleComponentHelper(node.params[0]);\n this.emit(path, resolution, (node, newIdentifier) => {\n node.params[0] = newIdentifier;\n });\n return;\n }\n let resolution = this.targetComponent(node.path.original, node.path.original);\n this.emit(path, resolution, (node, newId) => {\n node.path = newId;\n });\n if (resolution?.type === 'component') {\n this.scopeStack.enteringComponentBlock(resolution, ({ argumentsAreComponents }) => {\n this.handleDynamicComponentArguments(\n rootName,\n argumentsAreComponents,\n extendPath(extendPath(path, 'hash'), 'pairs')\n );\n });\n }\n },\n SubExpression: (node, path) => {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n if (isThisHead(node.path)) {\n return;\n }\n if (this.scopeStack.inScope(headOf(node.path), path)) {\n return;\n }\n if (node.path.original === 'component' && node.params.length > 0) {\n let resolution = this.handleComponentHelper(node.params[0]);\n this.emit(path, resolution, (node, newId) => {\n node.params[0] = newId;\n });\n return;\n }\n if (node.path.original === 'helper' && node.params.length > 0) {\n let resolution = this.handleDynamicHelper(node.params[0]);\n this.emit(path, resolution, (node, newId) => {\n node.params[0] = newId;\n });\n return;\n }\n if (node.path.original === 'modifier' && node.params.length > 0) {\n let resolution = this.handleDynamicModifier(node.params[0]);\n this.emit(path, resolution, (node, newId) => {\n node.params[0] = newId;\n });\n return;\n }\n if (node.path.tail.length === 0 && node.path.head.type === 'VarHead') {\n let resolution = this.targetHelper(node.path.original);\n this.emit(path, resolution, (node, newId) => {\n node.path = newId;\n });\n }\n },\n MustacheStatement: {\n enter: (node, path) => {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n let rootName = headOf(node.path);\n if (this.scopeStack.inScope(rootName, path)) {\n let resolution = this.scopeStack.resolutionInScope(rootName, path);\n if (resolution?.type === 'component') {\n this.handleDynamicComponentArguments(\n node.path.original,\n resolution.argumentsAreComponents,\n extendPath(extendPath(path, 'hash'), 'pairs')\n );\n }\n return;\n }\n if (isThisHead(node.path)) {\n return;\n }\n if (parts(node.path).length > 1) {\n // paths with a dot in them (which therefore split into more than\n // one \"part\") are classically understood by ember to be contextual\n // components, which means there's nothing to resolve at this\n // location.\n return;\n }\n if (node.path.original.startsWith('@')) {\n // similarly, global resolution of helpers and components never\n // happens with argument paths (it could still be an invocation, but\n // it would be a lexically-scoped invocation, not one we need to\n // adjust)\n return;\n }\n if (node.path.original === 'component' && node.params.length > 0) {\n let resolution = this.handleComponentHelper(node.params[0]);\n this.emit(path, resolution, (node, newId) => {\n node.params[0] = newId;\n });\n return;\n }\n if (node.path.original === 'helper' && node.params.length > 0) {\n let resolution = this.handleDynamicHelper(node.params[0]);\n this.emit(path, resolution, (node, newIdentifier) => {\n node.params[0] = newIdentifier;\n });\n return;\n }\n if (path.parent?.node.type === 'AttrNode') {\n // this mustache is the value of an attribute. Components aren't\n // allowed here, so we're not ambiguous, so resolve a helper.\n let resolution = this.targetHelper(node.path.original);\n this.emit(path, resolution, (node, newIdentifier) => {\n node.path = newIdentifier;\n });\n return;\n }\n let hasArgs = node.params.length > 0 || node.hash.pairs.length > 0;\n let resolution = this.targetHelperOrComponent(node.path.original, node.path.loc, hasArgs);\n this.emit(path, resolution, (node, newIdentifier) => {\n node.path = newIdentifier;\n });\n if (resolution?.type === 'component') {\n this.handleDynamicComponentArguments(\n node.path.original,\n resolution.argumentsAreComponents,\n extendPath(extendPath(path, 'hash'), 'pairs')\n );\n }\n },\n },\n ElementModifierStatement: (node, path) => {\n if (node.path.type !== 'PathExpression') {\n return;\n }\n if (this.scopeStack.inScope(headOf(node.path), path)) {\n return;\n }\n if (isThisHead(node.path)) {\n return;\n }\n if (isAtHead(node.path)) {\n return;\n }\n if (parts(node.path).length > 1) {\n // paths with a dot in them (which therefore split into more than\n // one \"part\") are classically understood by ember to be contextual\n // components. With the introduction of `Template strict mode` in Ember 3.25\n // it is also possible to pass modifiers this way which means there's nothing\n // to resolve at this location.\n return;\n }\n\n let resolution = this.targetElementModifier(node.path.original);\n this.emit(path, resolution, (node, newId) => {\n node.path = newId;\n });\n },\n ElementNode: {\n enter: (node, path) => {\n let rootName = node.tag.split('.')[0];\n if (this.scopeStack.inScope(rootName, path)) {\n let existingResolution = this.scopeStack.resolutionInScope(rootName, path);\n if (existingResolution?.type === 'component') {\n this.scopeStack.enteringComponentBlock(existingResolution, ({ argumentsAreComponents }) => {\n this.handleDynamicComponentArguments(node.tag, argumentsAreComponents, extendPath(path, 'attributes'));\n });\n }\n } else {\n let resolution: ComponentResolution | null = null;\n\n // if it starts with lower case, it can't be a component we need to\n // globally resolve\n if (node.tag[0] !== node.tag[0].toLowerCase()) {\n resolution = this.targetComponent(dasherize(node.tag), node.tag);\n }\n\n this.emit(path, resolution, (node, newId) => {\n node.tag = newId.original;\n });\n if (resolution?.type === 'component') {\n this.scopeStack.enteringComponentBlock(resolution, ({ argumentsAreComponents }) => {\n this.handleDynamicComponentArguments(node.tag, argumentsAreComponents, extendPath(path, 'attributes'));\n });\n }\n }\n this.scopeStack.pushElementBlock(node.blockParams, node);\n },\n exit: () => {\n this.scopeStack.pop();\n },\n },\n };\n}\n\n// This is the AST transform that resolves components, helpers and modifiers at build time\nexport default function makeResolverTransform({ appRoot, emberVersion, externalNameHint, externalResolve }: Options) {\n let loader = new ResolverLoader(appRoot);\n let config = loader.resolver.options as CompatResolverOptions;\n const resolverTransform: ASTPluginBuilder<Env> = env => {\n if (env.strictMode) {\n return {\n name: 'embroider-build-time-resolver-strict-noop',\n visitor: {},\n };\n }\n return new TemplateResolver(\n env,\n config,\n builtInKeywords(emberVersion),\n supportsThisFallback(emberVersion),\n externalNameHint,\n externalResolve\n );\n };\n (resolverTransform as any).parallelBabel = {\n requireFile: __filename,\n buildUsing: 'makeResolverTransform',\n params: { appRoot: appRoot },\n };\n return resolverTransform;\n}\n\ninterface ComponentBlockMarker {\n type: 'componentBlockMarker';\n resolution: ComponentResolution;\n argumentsAreComponents: string[];\n exit: (marker: ComponentBlockMarker) => void;\n}\n\ntype ScopeEntry =\n | {\n type: 'mustache';\n blockParams: string[];\n\n // our top-level scope entry is a 'mustache' entry whose block params\n // represent the scope bag coming in from Javascript. When we emit new\n // javascript bindings, they up in this top-level scope entry's\n // blockParams. We also track their original ResolutionResults here so\n // that we can consistently apply any custom rules that they contain.\n emittedResolutions?: Map<string, ResolutionResult>;\n }\n | { type: 'element'; blockParams: string[]; childrenOf: ASTv1.ElementNode }\n | ComponentBlockMarker;\n\nclass ScopeStack {\n private stack: ScopeEntry[] = [];\n\n // mustache blocks like:\n //\n // {{#stuff as |some block vars|}}\n //\n // are relatively simple for us because there's a dedicated `Block` AST node\n // that exactly covers the range in which the variables are in scope.\n pushMustacheBlock(blockParams: string[], params?: { top?: boolean }) {\n let entry: ScopeEntry = { type: 'mustache', blockParams };\n if (params?.top) {\n entry.emittedResolutions = new Map();\n }\n this.stack.unshift(entry);\n }\n\n // element blocks like:\n //\n // <Stuff as |some block vars|>\n //\n // are *not* so simple for us because there's no single AST node that exactly\n // covers the range in which the variables are in scope. For example, the\n // *attributes* of the element do not see the variables, but the children of\n // the element do.\n pushElementBlock(blockParams: string[], childrenOf: ASTv1.ElementNode) {\n this.stack.unshift({ type: 'element', blockParams, childrenOf });\n }\n\n // and when we leave the block they go out of scope. If this block was tagged\n // by a safe component marker, we also clear that.\n pop() {\n this.stack.shift();\n let next = this.stack[0];\n if (next && next.type === 'componentBlockMarker') {\n next.exit(next);\n this.stack.shift();\n }\n }\n\n // right before we enter a block, we might determine that some of the values\n // that will be yielded as marked (by a rule) as safe to be used with the\n // {{component}} helper.\n enteringComponentBlock(resolution: ComponentResolution, exit: ComponentBlockMarker['exit']) {\n this.stack.unshift({\n type: 'componentBlockMarker',\n resolution,\n argumentsAreComponents: resolution.argumentsAreComponents.slice(),\n exit,\n });\n }\n\n inScope(name: string, fromPath: WalkerPath<ASTv1.Node>) {\n for (let scope of this.stack) {\n if (scope.type === 'mustache' && scope.blockParams.includes(name)) {\n return true;\n }\n if (\n scope.type === 'element' &&\n scope.blockParams.includes(name) &&\n withinElementBlock(fromPath, scope.childrenOf)\n ) {\n return true;\n }\n }\n return false;\n }\n\n // some names in scope are things that this transform itself has already\n // emitted. This identifies them.\n resolutionInScope(name: string, fromPath: WalkerPath<ASTv1.Node>): ResolutionResult | undefined {\n for (let scope of this.stack) {\n if (scope.type === 'mustache' && scope.blockParams.includes(name)) {\n if (scope.emittedResolutions) {\n return scope.emittedResolutions.get(name);\n }\n }\n if (\n scope.type === 'element' &&\n scope.blockParams.includes(name) &&\n withinElementBlock(fromPath, scope.childrenOf)\n ) {\n return;\n }\n }\n return;\n }\n\n emittedResolution(name: string, resolution: ResolutionResult) {\n let top = this.stack[0];\n if (top?.type === 'mustache' && top.emittedResolutions) {\n top.emittedResolutions.set(name, resolution);\n }\n }\n\n safeComponentInScope(name: string): boolean {\n let parts = name.split('.');\n if (parts.length > 2) {\n // we let component rules specify that they yield components or objects\n // containing components. But not deeper than that. So the max path length\n // that can refer to a marked-safe component is two segments.\n return false;\n }\n for (let i = 0; i < this.stack.length - 1; i++) {\n let here = this.stack[i];\n let next = this.stack[i + 1];\n if ((here.type === 'mustache' || here.type === 'element') && next.type === 'componentBlockMarker') {\n let positionalIndex = here.blockParams.indexOf(parts[0]);\n if (positionalIndex === -1) {\n continue;\n }\n\n if (parts.length === 1) {\n if (next.resolution.yieldsComponents[positionalIndex] === true) {\n return true;\n }\n let sourceArg = next.resolution.yieldsArguments[positionalIndex];\n if (typeof sourceArg === 'string') {\n next.argumentsAreComponents.push(sourceArg);\n return true;\n }\n } else {\n let entry = next.resolution.yieldsComponents[positionalIndex];\n if (entry && typeof entry === 'object') {\n return entry[parts[1]] === true;\n }\n\n let argsEntry = next.resolution.yieldsArguments[positionalIndex];\n if (argsEntry && typeof argsEntry === 'object') {\n let sourceArg = argsEntry[parts[1]];\n if (typeof sourceArg === 'string') {\n next.argumentsAreComponents.push(sourceArg);\n return true;\n }\n }\n }\n // we found the source of the name, but there were no rules to cover it.\n // Don't keep searching higher, those are different names.\n return false;\n }\n }\n return false;\n }\n}\n\nfunction extendPath<N extends ASTv1.Node, K extends keyof N>(\n path: WalkerPath<N>,\n key: K\n): N[K] extends ASTv1.Node ? WalkerPath<N[K]> : N[K] extends ASTv1.Node[] ? WalkerPath<N[K][0]>[] : never {\n const _WalkerPath = path.constructor as {\n new <Child extends ASTv1.Node>(\n node: Child,\n parent?: WalkerPath<ASTv1.Node> | null,\n parentKey?: string | null\n ): WalkerPath<Child>;\n };\n let child = path.node[key];\n if (Array.isArray(child)) {\n return child.map(c => new _WalkerPath(c, path, key as string)) as any;\n } else {\n return new _WalkerPath(child as any, path, key as string) as any;\n }\n}\n\nfunction capitalize(word: string): string {\n return word[0].toUpperCase() + word.slice(1);\n}\n\n// ElementNodes have both children and attributes and both of those are\n// \"children\" in the abstract syntax tree sense, but here we want to distinguish\n// between them.\nfunction withinElementBlock(childPath: WalkerPath<ASTv1.Node>, ancestorNode: ASTv1.ElementNode): Boolean {\n let cursor: WalkerPath<ASTv1.Node> | null = childPath;\n while (cursor && cursor.node !== ancestorNode) {\n if (ancestorNode.children.includes(cursor.node as ASTv1.Statement)) {\n return true;\n }\n cursor = cursor.parent;\n }\n return false;\n}\nfunction appendArrays(objValue: any, srcValue: any) {\n if (Array.isArray(objValue)) {\n return objValue.concat(srcValue);\n }\n}\n\nfunction headOf(path: any) {\n if (!path) return;\n\n return 'head' in path ? path.head.name : path.parts[0];\n}\n\nfunction isThisHead(path: any) {\n if (!path) return;\n\n if ('head' in path) {\n return path.head.type === 'ThisHead';\n }\n\n return path.this === true;\n}\n\nfunction isAtHead(path: any) {\n if (!path) return;\n\n if ('head' in path) {\n return path.head.type === 'AtHead';\n }\n\n return path.data === true;\n}\n\nfunction parts(path: any) {\n if (!path) return;\n\n return 'original' in path ? path.original.split('.') : path.parts;\n}\n\nfunction registrationHelper(context: { import: (module: string, name: string, hint?: string) => string }) {\n let Helper = context.import('@ember/component/helper', 'default', 'Helper');\n let getOwner = context.import('@ember/owner', 'getOwner');\n return `\n (class extends ${Helper} {\n compute(_positional, registrations) {\n let owner = ${getOwner}(this);\n for (let [name, definition] of Object.entries(registrations)) {\n owner.register(\\`component:\\${name}\\`, definition);\n }\n }\n })\n `;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrite-addon-tree.js","sourceRoot":"","sources":["../../src/rewrite-addon-tree.ts"],"names":[],"mappings":";;;;;AA4CA,mCA0CC;AAtFD,sEAA0C;AAC1C,gFAA8C;AAC9C,sDAA8B;AAG9B,gEAAsC;AACtC,uCAA2D;AAC3D,+BAAsC;AAqCtC,SAAwB,gBAAgB,CACtC,IAAU,EACV,IAAY,EACZ,UAAkB;IAElB,IAAI,OAAO,GAA+B,EAAE,CAAC;IAE7C,IAAI,GAAG,IAAI,qBAAS,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;QACtC,KAAK,IAAI,IAAI,IAAI,IAAA,sBAAW,EAAC,UAAU,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,IAAA,mBAAQ,EAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YACD,IAAA,mBAAQ,EAAC,QAAQ,EAAE,IAAA,WAAI,EAAC,UAAU,EAAE,IAAA,eAAQ,EAAC,IAAI,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,GAAG,IAAI,gBAAM,CACxB,IAAI,EACJ;QACE,YAAY,EAAE,IAAI,MAAM,CAAC,IAAI,UAAU,GAAG,CAAC;QAC3C,aAAa,EAAE,CAAC,QAAkB,EAAE,EAAE;YACpC,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;KACF,EACD;QACE,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,IAAI;KACjB,CACF,CAAC;IACF,IAAI,QAAQ,GAAG,IAAA,yBAAW,EAAC,IAAI,EAAE;QAC/B,OAAO,EAAE,CAAC,GAAG,UAAU,KAAK,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO;QACL,IAAI,EAAE,IAAA,8BAAU,EAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;KAChD,CAAC;AACJ,CAAC","sourcesContent":["import buildFunnel from 'broccoli-funnel';\nimport mergeTrees from 'broccoli-merge-trees';\nimport Snitch from './snitch';\nimport type { Node } from 'broccoli-node-api';\nimport type { AddonMeta } from '@embroider/core';\nimport AddToTree from './add-to-tree';\nimport { moveSync, readdirSync, statSync } from 'fs-extra';\nimport { join, basename } from 'path';\n\n/*\n The traditional addon and addon-test-support trees allows you to emit modules\n under any package you feel like. Which we are NOT COOL WITH.\n\n This transform re-captures anything you try to put into other people's\n packages, puts them back into your own, and tracks what renaming is required\n by your consumers so they can still find those things.\n\n Example:\n\n ember-qunit emits an addon-test-support tree like:\n\n ├── ember-qunit\n │   ├── adapter.js\n │   ├── index.js\n │   └── ...\n └── qunit\n └── index.js\n\n The part that is under \"ember-qunit\" gets handled normally, in that we can\n merge it directly into our own v2 package root so people can import the\n modules from their tests.\n\n But the shim under \"qunit\" gets moved *into* the ember-qunit package, and\n consumers of ember-qunit will get renaming from:\n\n import { test } from 'qunit';\n\n to\n\n import { test } from 'ember-qunit/qunit';\n*/\n\ntype GetMeta = () => Partial<AddonMeta>;\n\nexport default function rewriteAddonTree(\n tree: Node,\n name: string,\n moduleName: string\n): { tree: Node; getMeta: GetMeta } {\n let renamed: { [name: string]: string } = {};\n\n tree = new AddToTree(tree, outputPath => {\n for (let file of readdirSync(outputPath)) {\n if (!file.endsWith('.js')) {\n continue;\n }\n const filePath = join(outputPath, file);\n if (!statSync(filePath).isFile()) {\n continue;\n }\n moveSync(filePath, join(outputPath, basename(file, '.js'), 'index.js'));\n }\n });\n\n let goodParts = new Snitch(\n tree,\n {\n allowedPaths: new RegExp(`^${moduleName}/`),\n foundBadPaths: (badPaths: string[]) => {\n for (let badPath of badPaths) {\n renamed[badPath] = `${name}/${badPath}`;\n }\n },\n },\n {\n srcDir: moduleName,\n allowEmpty: true,\n }\n );\n let badParts = buildFunnel(tree, {\n exclude: [`${moduleName}/**`],\n });\n return {\n tree: mergeTrees([goodParts, badParts]),\n getMeta: () => ({ 'renamed-modules': renamed }),\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrite-package-json.js","sourceRoot":"","sources":["../../src/rewrite-package-json.ts"],"names":[],"mappings":";;;;;AAAA,sEAAqC;AAErC,2BAAmC;AACnC,+BAA4B;AAE5B,MAAqB,kBAAmB,SAAQ,yBAAM;IACpD,YAAY,SAAe,EAAU,cAAyB;QAC5D,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE;YACjB,UAAU,EAAE,qCAAqC;YACjD,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QALgC,mBAAc,GAAd,cAAc,CAAW;IAM9D,CAAC;IAED,KAAK;QACH,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/G,CAAC;CACF;AAZD,qCAYC","sourcesContent":["import Plugin from 'broccoli-plugin';\nimport type { Node } from 'broccoli-node-api';\nimport { writeFileSync } from 'fs';\nimport { join } from 'path';\n\nexport default class RewritePackageJSON extends Plugin {\n constructor(inputTree: Node, private getPackageJSON: () => any) {\n super([inputTree], {\n annotation: 'embroider:core:rewrite-package-json',\n persistentOutput: true,\n needsCache: false,\n });\n }\n\n build() {\n writeFileSync(join(this.outputPath, 'package.json'), JSON.stringify(this.getPackageJSON(), null, 2), 'utf8');\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoosh-package-json.js","sourceRoot":"","sources":["../../src/smoosh-package-json.ts"],"names":[],"mappings":";;;;;AAAA,sEAAqC;AAErC,2BAA6D;AAC7D,+BAA4B;AAC5B,qCAAyC;AAEzC,MAAqB,iBAAkB,SAAQ,yBAAM;IACnD,YAAY,UAAkB,EAAE,OAAgC,EAAE;QAChE,KAAK,CAAC,UAAU,EAAE;YAChB,UAAU,EAAE,sCAAsC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,EAAE;YACpE,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACjC,IAAI,OAAO,GAAG,IAAA,WAAI,EAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YACtC,IAAI,IAAA,eAAU,EAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,GAAG,IAAA,sBAAa,EAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACrC,IAAA,kBAAa,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7F,CAAC;CACF;AAnBD,oCAmBC","sourcesContent":["import Plugin from 'broccoli-plugin';\nimport type { Node } from 'broccoli-node-api';\nimport { readFileSync, writeFileSync, existsSync } from 'fs';\nimport { join } from 'path';\nimport { mergeWithUniq } from './merges';\n\nexport default class SmooshPackageJSON extends Plugin {\n constructor(inputTrees: Node[], opts: { annotation?: string } = {}) {\n super(inputTrees, {\n annotation: `embroider:core:smoosh-package-json:${opts?.annotation}`,\n persistentOutput: true,\n needsCache: false,\n });\n }\n\n build() {\n let pkgs = this.inputPaths.map(p => {\n let pkgPath = join(p, 'package.json');\n if (existsSync(pkgPath)) {\n return JSON.parse(readFileSync(pkgPath, 'utf8'));\n }\n });\n let pkg = mergeWithUniq({}, ...pkgs);\n writeFileSync(join(this.outputPath, 'package.json'), JSON.stringify(pkg, null, 2), 'utf8');\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snitch.js","sourceRoot":"","sources":["../../src/snitch.ts"],"names":[],"mappings":";;;;;AACA,qDAAyC;AACzC,0DAAiC;AAGjC;;;;;;EAME;AAEF,MAAqB,MAAO,SAAQ,wBAAM;IAKxC,YACE,SAAe,EACf,aAAgE,EAChE,aAA4B;QAE5B,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAP1B,cAAS,GAAG,IAAI,CAAC;QAQvB,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;IACnD,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,QAAQ,GAAa,EAAE,CAAC;YAC5B,IAAA,mBAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBAClE,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;oBAC5B,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACtC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AAjCD,yBAiCC","sourcesContent":["import type { Options as FunnelOptions } from 'broccoli-funnel';\nimport { Funnel } from 'broccoli-funnel';\nimport walkSync from 'walk-sync';\nimport type { Node } from 'broccoli-node-api';\n\n/*\n This is used to monitor when addons are emitting badly-behaved broccoli\n trees that don't follow directory-naming conventions.\n\n We only check on the first build, on the assumption that it's rare to change\n after that.\n*/\n\nexport default class Snitch extends Funnel {\n private allowedPaths: RegExp;\n private foundBadPaths: Function;\n private mustCheck = true;\n\n constructor(\n inputTree: Node,\n snitchOptions: { allowedPaths: RegExp; foundBadPaths: Function },\n funnelOptions: FunnelOptions\n ) {\n super(inputTree, funnelOptions);\n this.allowedPaths = snitchOptions.allowedPaths;\n this.foundBadPaths = snitchOptions.foundBadPaths;\n }\n\n build() {\n if (this.mustCheck) {\n let badPaths: string[] = [];\n walkSync(this.inputPaths[0], { directories: false }).map(filename => {\n if (filename === '.gitkeep') {\n return;\n }\n if (!this.allowedPaths.test(filename)) {\n badPaths.push(filename);\n }\n });\n if (badPaths.length > 0) {\n this.foundBadPaths(badPaths);\n }\n this.mustCheck = false;\n }\n return super.build();\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-addon-build.js","sourceRoot":"","sources":["../../src/standalone-addon-build.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Package, RewrittenPackageIndex } from '@embroider/core';\nimport { PackageCache, summarizePeerDepViolations, validatePeerDependencies } from '@embroider/core';\nimport V1InstanceCache from './v1-instance-cache';\nimport buildCompatAddon from './build-compat-addon';\nimport { Funnel } from 'broccoli-funnel';\nimport crypto from 'crypto';\nimport broccoliMergeTrees from 'broccoli-merge-trees';\nimport writeFile from 'broccoli-file-creator';\nimport type { Node } from 'broccoli-node-api';\nimport type CompatApp from './compat-app';\nimport { join } from 'path';\n\nexport function convertLegacyAddons(compatApp: CompatApp) {\n let packageCache = PackageCache.shared('embroider', compatApp.root);\n let instanceCache = new V1InstanceCache(compatApp, packageCache);\n\n let appPackage = compatApp.appPackage();\n\n let violations = validatePeerDependencies(appPackage).filter(({ dep }) => dep.isEmberAddon() && !dep.isV2Ember());\n if (violations.length > 0) {\n if (process.env.I_HAVE_BAD_PEER_DEPS_AND_WANT_A_BROKEN_BUILD) {\n console.warn(\n `You have set process.env.I_HAVE_BAD_PEER_DEPS_AND_WANT_A_BROKEN_BUILD, so we're ignoring your broken peer deps. Please don't bother reporting any Embroider bugs until you unset it.\\n${summarizePeerDepViolations(\n violations\n )}`\n );\n } else {\n throw new Error(\n `Some V1 ember addons are resolving as incorrect peer dependencies. This makes it impossible for us to safely convert them to v2 format.\n\n 👇 👇 👇\n👉 See https://github.com/embroider-build/embroider/blob/main/docs/peer-dependency-resolution-issues.md for an explanation of the problem and suggestions for fixing it.\n 👆 👆 👆\n\n${summarizePeerDepViolations(violations)}\n\n 👇 👇 👇\n👉 See https://github.com/embroider-build/embroider/blob/main/docs/peer-dependency-resolution-issues.md for an explanation of the problem and suggestions for fixing it.\n 👆 👆 👆`\n );\n }\n }\n\n let v1Addons = findV1Addons(appPackage);\n let index = buildAddonIndex(appPackage, v1Addons);\n\n let interiorTrees: Node[] = [];\n let exteriorTrees = [...v1Addons].map(pkg => {\n let interior = buildCompatAddon(pkg, instanceCache);\n interiorTrees.push(interior);\n return new Funnel(interior, { destDir: index.packages[pkg.root] });\n });\n\n let fakeTargets = Object.values(index.packages).map(dir => {\n let segments = dir.split('/');\n while (segments[segments.length - 1] && segments[segments.length - 1] !== 'node_modules') {\n segments.pop();\n }\n segments.push('moved-package-target.js');\n return writeFile(join(...segments), '');\n });\n\n return broccoliMergeTrees([\n ...exteriorTrees,\n new Funnel(compatApp.synthesizeStylesPackage(interiorTrees), {\n destDir: '@embroider/synthesized-styles',\n }),\n new Funnel(compatApp.synthesizeVendorPackage(interiorTrees), {\n destDir: '@embroider/synthesized-vendor',\n }),\n writeFile('index.json', JSON.stringify(index, null, 2)),\n ...fakeTargets,\n ]);\n}\n\nfunction buildAddonIndex(appPackage: Package, packages: Set<Package>): RewrittenPackageIndex {\n let content: RewrittenPackageIndex = {\n packages: {},\n extraResolutions: {},\n };\n for (let oldPkg of packages) {\n let newRoot = `${oldPkg.name}.${hashed(oldPkg.root)}/node_modules/${oldPkg.name}`;\n content.packages[oldPkg.root] = newRoot;\n let nonResolvableDeps = oldPkg.nonResolvableDeps;\n if (nonResolvableDeps) {\n content.extraResolutions[newRoot] = [...nonResolvableDeps.values()].map(v => v.root);\n }\n }\n\n let nonResolvableDeps = appPackage.nonResolvableDeps;\n if (nonResolvableDeps) {\n let extraRoots = [...nonResolvableDeps.values()].map(v => v.root);\n // the app gets extraResolutions registered against its *original*\n // location\n content.extraResolutions[appPackage.root] = extraRoots;\n }\n\n return content;\n}\n\nfunction findV1Addons(pkg: Package, seen: Set<Package> = new Set(), output: Set<Package> = new Set()): Set<Package> {\n for (let dep of pkg.dependencies) {\n if (seen.has(dep)) {\n continue;\n }\n seen.add(dep);\n if (dep.isEmberAddon()) {\n if (!dep.isV2Addon()) {\n output.add(dep);\n }\n findV1Addons(dep, seen, output);\n }\n }\n return output;\n}\n\nfunction hashed(path: string): string {\n let h = crypto.createHash('sha1');\n return h.update(path).digest('hex').slice(0, 8);\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesize-template-only-components.js","sourceRoot":"","sources":["../../src/synthesize-template-only-components.ts"],"names":[],"mappings":"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","sourcesContent":["import Plugin from 'broccoli-plugin';\nimport type { Node } from 'broccoli-node-api';\nimport { join, basename, extname } from 'path';\nimport walkSync, { type Entry } from 'walk-sync';\nimport { removeSync, outputFileSync, pathExistsSync, readFileSync } from 'fs-extra';\n\nconst source = `import templateOnlyComponent from '@ember/component/template-only';\nexport default templateOnlyComponent();`;\n\nconst jsExtensions = ['.js', '.ts', '.mjs', '.mts'];\n\ntype Emitted =\n | { type: 'template-only-component'; outputPath: string }\n | { type: 'template-import'; outputPath: string; mtime: number };\n\ntype TemplateOnly = { template: Entry; javascript: undefined };\ntype JavaScriptOnly = { template: undefined; javascript: Entry };\ntype Colocated = { template: Entry; javascript: Entry };\ntype ComponentFiles = TemplateOnly | JavaScriptOnly | Colocated;\n\nfunction importTemplate(files: { template: Entry }): string {\n return `/* import __COLOCATED_TEMPLATE__ from './${basename(files.template.relativePath)}'; */\\n`;\n}\n\nexport default class SynthesizeTemplateOnlyComponents extends Plugin {\n private emitted = new Map() as Map<string, Emitted>;\n private allowedPaths: string[];\n private templateExtensions: string[];\n\n constructor(tree: Node, params: { allowedPaths: string[]; templateExtensions: string[] }) {\n super([tree], {\n annotation: `synthesize-template-only-components:${params.allowedPaths.join(':')}`,\n persistentOutput: true,\n needsCache: false,\n });\n this.allowedPaths = params.allowedPaths;\n this.templateExtensions = params.templateExtensions;\n }\n\n async build() {\n let unneeded = new Set(this.emitted.keys());\n for (let dir of this.allowedPaths) {\n let entries = this.crawl(join(this.inputPaths[0], dir));\n for (let [name, files] of entries) {\n let fullName = join(this.outputPath, dir, name);\n unneeded.delete(fullName);\n if (files.javascript && files.template) {\n this.addTemplateImport(fullName, files);\n } else if (files.template) {\n this.addTemplateOnlyComponent(fullName, files);\n } else {\n this.remove(fullName);\n }\n }\n }\n for (let fullName of unneeded) {\n this.remove(fullName);\n }\n }\n\n private addTemplateOnlyComponent(filename: string, files: TemplateOnly) {\n const emitted = this.emitted.get(filename);\n\n if (emitted?.type !== 'template-only-component') {\n // special case: ember-cli doesn't allow template-only components named\n // \"template.hbs\" because there are too many people doing a \"pods-like\"\n // layout that happens to match that pattern.🤮\n if (basename(filename) !== 'template') {\n const outputPath = filename + '.js';\n outputFileSync(outputPath, importTemplate(files) + source, 'utf8');\n this.emitted.set(filename, { type: 'template-only-component', outputPath });\n\n if (emitted && emitted.outputPath !== outputPath) {\n removeSync(emitted.outputPath);\n }\n }\n }\n }\n\n private addTemplateImport(filename: string, files: Colocated) {\n const emitted = this.emitted.get(filename);\n const mtime = files.javascript.mtime;\n\n if (!(emitted?.type === 'template-import' && emitted.mtime === mtime)) {\n const inputSource = readFileSync(files.javascript.fullPath, { encoding: 'utf8' });\n const outputPath = filename + extname(files.javascript.relativePath);\n // If we are ok with appending instead, copy + append maybe more efficient?\n outputFileSync(outputPath, importTemplate(files) + inputSource, 'utf8');\n this.emitted.set(filename, { type: 'template-import', outputPath, mtime });\n\n if (emitted && emitted.outputPath !== outputPath) {\n removeSync(emitted.outputPath);\n }\n }\n }\n\n private remove(filename: string) {\n const emitted = this.emitted.get(filename);\n\n if (emitted) {\n removeSync(emitted.outputPath);\n this.emitted.delete(filename);\n }\n }\n\n private crawl(dir: string): Map<string, ComponentFiles> {\n const entries = new Map<string, ComponentFiles>();\n\n if (pathExistsSync(dir)) {\n for (let entry of walkSync.entries(dir, { directories: false })) {\n const templateExtension = this.templateExtensions.find(ext => entry.relativePath.endsWith(ext));\n if (templateExtension) {\n const key = entry.relativePath.slice(0, -1 * templateExtension.length);\n entries.set(key, { template: entry, javascript: entries.get(key)?.javascript });\n continue;\n }\n\n const jsExtension = jsExtensions.find(ext => entry.relativePath.endsWith(ext));\n if (jsExtension) {\n const key = entry.relativePath.slice(0, -1 * jsExtension.length);\n entries.set(key, { template: entries.get(key)?.template, javascript: entry });\n continue;\n }\n }\n }\n\n return entries;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1-addon.js","sourceRoot":"","sources":["../../src/v1-addon.ts"],"names":[],"mappings":"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","sourcesContent":["import { Memoize } from 'typescript-memoize';\nimport { dirname, join, relative, resolve } from 'path';\nimport { sync as pkgUpSync } from 'pkg-up';\nimport { existsSync, pathExistsSync } from 'fs-extra';\nimport type { Options as FunnelOptions } from 'broccoli-funnel';\nimport buildFunnel from 'broccoli-funnel';\nimport { UnwatchedDir, WatchedDir } from 'broccoli-source';\nimport RewritePackageJSON from './rewrite-package-json';\nimport { todo, unsupported } from '@embroider/core/src/messages';\nimport type { Node } from 'broccoli-node-api';\nimport mergeTrees from 'broccoli-merge-trees';\nimport semver from 'semver';\nimport rewriteAddonTree from './rewrite-addon-tree';\nimport { mergeWithAppend } from './merges';\nimport type { AddonMeta, PackageCache, AddonInstance, AddonTreePath } from '@embroider/core';\nimport { debug, findTopmostAddon } from '@embroider/core';\nimport walkSync from 'walk-sync';\nimport ObserveTree from './observe-tree';\nimport { isEmbroiderMacrosPlugin } from '@embroider/macros/src/node';\nimport type { TransformOptions, PluginItem } from '@babel/core';\nimport modulesCompat from './modules-compat';\nimport writeFile from 'broccoli-file-creator';\nimport SynthesizeTemplateOnlyComponents from './synthesize-template-only-components';\nimport {\n isEmberAutoImportDynamic,\n isCompactReexports,\n isColocationPlugin,\n isInlinePrecompilePlugin,\n} from './detect-babel-plugins';\nimport HbsToJSBroccoliPlugin from './hbs-to-js-broccoli-plugin';\nimport { fromPairs } from 'lodash';\nimport loadAstPlugins from './prepare-htmlbars-ast-plugins';\nimport getRealAddon from './get-real-addon';\nimport type { Options as EtcOptions } from 'babel-plugin-ember-template-compilation';\nimport type CompatApp from './compat-app';\nimport type { CompatOptionsType } from './options';\n\nconst stockTreeNames: AddonTreePath[] = Object.freeze([\n 'addon',\n 'addon-styles',\n 'styles',\n 'addon-test-support',\n 'test-support',\n 'app',\n 'public',\n 'vendor',\n // 'addon-templates' and 'templates are trees too, but they live inside\n // 'addon' and 'app' and we handle them there.\n]) as AddonTreePath[];\n\nconst dynamicTreeHooks = Object.freeze([\n 'treeFor',\n 'treeForAddon',\n 'treeForAddonTemplates',\n 'treeForAddonTestSupport',\n 'treeForApp',\n 'treeForPublic',\n 'treeForStyles',\n 'treeForTemplates',\n 'treeForTestSupport',\n 'treeForVendor',\n]);\n\nconst defaultMethods = {\n app: 'treeForApp',\n addon: 'treeForAddon',\n 'addon-styles': 'treeForAddonStyles',\n 'addon-templates': 'treeForAddonTemplates',\n 'addon-test-support': 'treeForAddonTestSupport',\n public: 'treeForPublic',\n styles: 'treeForStyles',\n templates: 'treeForTemplates',\n 'test-support': 'treeForTestSupport',\n vendor: 'treeForVendor',\n};\n\nconst appPublicationDir = '_app_';\nconst fastbootPublicationDir = '_fastboot_';\n\n// This controls and types the interface between our new world and the classic\n// v1 addon instance.\nexport default class V1Addon {\n constructor(\n protected addonInstance: AddonInstance,\n protected addonOptions: CompatOptionsType,\n protected app: CompatApp,\n private packageCache: PackageCache,\n private orderIdx: number\n ) {\n if (addonInstance.registry) {\n this.updateRegistry(addonInstance.registry);\n }\n }\n\n // Optional extensible hook for pruning down the list of redundant addon\n // instances produced by the classic ember-cli architecture. ember-cli\n // instantiates each addon *per consumer*, not per package. So a given package\n // will have many addon instances, and Embroider dutifully produces a V1Addon\n // instance for each one, and then needs to mimic the classic smooshing\n // behavior between them.\n //\n // But some packages (and ember-cli-babel is the motivating example) produce a\n // huge number of instances that do nothing useful and incur significant cost.\n // This hook allows their compat adapter to prune down the set, using\n // addon-specific knowledge of which instance(s) are actually important.\n //\n // The order of the instances is significant. The first one is the one with\n // the highest precedence, meaning its files would win under classic\n // smooshing.\n reduceInstances(instances: V1Addon[]): V1Addon[] {\n // the default beahvior is that all copies matter\n return instances;\n }\n\n // this is only defined when there are custom AST transforms that need it\n @Memoize()\n private get templateCompilerBabelPlugin(): PluginItem | undefined {\n let plugins = loadAstPlugins(this.addonInstance.registry);\n let hasTemplateTag = this.addonInstance.addons.find((a: any) => a.name === 'ember-template-imports');\n // our macros don't run here in stage1\n plugins = plugins.filter((p: any) => !isEmbroiderMacrosPlugin(p));\n if (plugins.length > 0 || hasTemplateTag) {\n let compilerPath = require.resolve('ember-source/dist/ember-template-compiler.js', {\n paths: [findTopmostAddon(this.addonInstance).parent.root],\n });\n let opts: EtcOptions = {\n compilerPath,\n targetFormat: 'hbs',\n enableLegacyModules: [\n 'ember-cli-htmlbars',\n 'ember-cli-htmlbars-inline-precompile',\n 'htmlbars-inline-precompile',\n ],\n transforms: plugins,\n };\n return [require.resolve('babel-plugin-ember-template-compilation'), opts];\n }\n }\n\n private updateRegistry(registry: any) {\n // auto-import gets disabled because we support it natively\n registry.remove('js', 'ember-auto-import-analyzer');\n\n // here we're replacing the stock template compiler with our own. Ours\n // doesn't compile all the way to wire format -- it does source-to-source\n // transformation just to process custom AST transforms, while leaving the\n // template as a template. It does turn HBS files into equivalent JS files\n // (because in the general case, AST transforms may need to emit values in\n // Javascript scope), but those JS files will contain HBS strings, not wire\n // format.\n //\n // Even when no AST transforms are registered, we'll still need to register\n // a no-op transform here to avoid an exception coming out of ember-cli like\n // \"Addon templates were detected, but there are no template compilers\n // registered\".\n registry.remove('template', 'ember-cli-htmlbars');\n registry.add('template', {\n name: 'embroider-addon-templates',\n ext: 'hbs',\n _addon: this,\n toTree(this: { _addon: V1Addon }, tree: Node): Node {\n if (this._addon.templateCompilerBabelPlugin) {\n return new HbsToJSBroccoliPlugin(tree);\n } else {\n // when there are no custom AST transforms, we don't need to do\n // anything at all.\n return tree;\n }\n },\n });\n\n // first, look into the babel config and related packages to decide whether\n // we need to run babel at all in this stage.\n let needsCustomBabel = this.needsCustomBabel();\n\n // regardless of the answer, we modify the babel config, because even if\n // we're unregistering ember-cli-babel, some addons manually invoke\n // ember-cli-babel in their custom hooks, and in that case we want to be\n // sure we've taken out the babel plugins that really shouldn't run at this\n // stage.\n this.updateBabelConfig();\n\n if (!needsCustomBabel) {\n // no custom babel behavior, so we don't run the ember-cli-babel\n // preprocessor at all. We still need to register a no-op preprocessor to\n // prevent ember-cli from emitting a deprecation warning.\n registry.remove('js', 'ember-cli-babel');\n registry.add('js', {\n name: 'embroider-babel-noop',\n ext: 'js',\n toTree(tree: Node) {\n return tree;\n },\n });\n }\n }\n\n // we need to run custom inline hbs preprocessing if there are custom hbs\n // plugins and there are inline hbs templates\n private needsInlineHBS(): boolean {\n if (!this.templateCompilerBabelPlugin) {\n // no custom transforms\n return false;\n }\n if (this.addonInstance.addons.find((a: any) => a.name === 'ember-cli-htmlbars-inline-precompile')) {\n // the older inline template compiler is present\n return true;\n }\n if (this.addonInstance.addons.find((a: any) => a.name === 'ember-template-imports')) {\n /**\n * Stage1 will always run custom broccoli preprocessors. So that's enough to convert:\n *\n * import Thing from './thing';\n * <template><Thing/></template>\n * to\n *\n * import Thing from './thing';\n * import { template } from '@ember/template-compiler';\n * export default template(\"Thing\", {\n * eval: function() { return eval(arguments[0]) } })\n * });\n * This is really all we need to do at stage1, since this is now valid Javascript that could appear in a v2 addon.\n *\n * But if the addon is also using TS, we also need to run the typescript transform before it will be valid JS. And if the typescript transform was being truly correct it would not try to delete the import because the eval can see the imported binding. That's why we have an eval. It's a standards-compliant want of gaining access to everything in scope.\n *\n * Normally we only use babel-plugin-ember-template-compilation in stage1 to run custom AST transforms. Since there are none in the addon, we don't add it. The fix here is helping because there is a new reason to add it. It will further convert the above example to:\n *\n * import Thing from './thing';\n * import { template } from '@ember/template-compiler';\n * export default template(\"Thing\", {\n * scope: () => ({ Thing })\n * });\n * which typescript then respects.\n */\n return true;\n }\n\n if (\n this.addonInstance.addons.find(\n (a: any) =>\n a.name === 'ember-cli-htmlbars' && semver.satisfies(semver.coerce(a.pkg.version) || a.pkg.version, '>4.0.0')\n )\n ) {\n // a version of ember-cli-htmlbars that natively supports inline hbs is present\n return true;\n }\n\n return false;\n }\n\n private needsCustomBabel() {\n if (\n this.addonInstance.addons.find(\n (a: any) =>\n a.name === 'ember-cli-typescript' &&\n semver.satisfies(semver.coerce(a.pkg.version) || a.pkg.version, '>=4.0.0-alpha.1')\n )\n ) {\n // This addon is using ember-cli-typescript 4, which relies on\n // ember-cli-babel to add the TypeScript transform Babel plugin.\n return true;\n }\n\n if (\n this.addonInstance.options &&\n this.addonInstance.options['ember-cli-babel'] &&\n this.addonInstance.options['ember-cli-babel'].enableTypeScriptTransform\n ) {\n // This addon has explicitly configured ember-cli-babel to add the\n // TypeScript transform Babel plugin.\n return true;\n }\n\n if ((this.options.babel?.plugins?.filter(babelPluginAllowedInStage1)?.length ?? 0) > 0) {\n // this addon has custom babel plugins, so we need to run them here in\n // stage1\n return true;\n }\n\n // even if there are no custom babel plugins, if we need to do any\n // preprocessing of inline handlebars templates we still need to run the\n // custom babel.\n return this.needsInlineHBS();\n }\n\n get name(): string {\n return this.packageJSON.name;\n }\n\n // you can override this to change the *input* packageJSON that the rest of\n // stage1 will see. If you want to see and change the *output* packageJSON see\n // `newPackageJSON`.\n protected get packageJSON() {\n return this.packageCache.get(this.root).packageJSON;\n }\n\n protected get newPackageJSON() {\n // shallow copy only! This is OK as long as we're only changing top-level\n // keys in this method\n let pkg = Object.assign({}, this.packageJSON);\n let meta: AddonMeta = Object.assign({}, this.packageCache.get(this.root).meta, this.packageMeta);\n pkg['ember-addon'] = meta;\n\n // classic addons don't get to customize their entrypoints like this. We\n // always rewrite them so their entrypoint is index.js, so whatever was here\n // is just misleading to stage3 packagers that might look (rollup does).\n delete pkg.main;\n delete pkg.module;\n delete pkg.exports;\n\n return pkg;\n }\n\n @Memoize()\n get root(): string {\n // addonInstance.root gets modified by a customized \"main\" or\n // \"ember-addon.main\" in package.json. We want the real package root here\n // (the place where package.json lives).\n return dirname(pkgUpSync({ cwd: this.addonInstance.root })!);\n }\n\n @Memoize()\n private get mainModule() {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const mod = require((this.addonInstance as unknown as any).constructor._meta_.modulePath);\n\n if (typeof mod === 'function') {\n return mod.prototype;\n } else {\n return mod;\n }\n }\n\n protected get options() {\n if (!this.addonInstance.options) {\n this.addonInstance.options = {};\n return this.addonInstance.options;\n }\n // some addons (like ember-cli-inline-content) assign the *app's* options\n // onto their own this.options. Which means they (accidentally or on\n // purpose), always get the app's babel config, and it means when we try\n // to modify the addon's babel config we're accidentally modifying the\n // app's too.\n //\n // So here we do copying to ensure that we can modify the babel config\n // without altering anybody else. We're not doing cloneDeep because that\n // pulls on our lazy MacrosConfig if it appears in any babel configs here,\n // whereas we want to leave it unevaluated until babel actually uses it.\n let addonOptions =\n typeof this.addonInstance.options == 'function' ? this.addonInstance.options() : this.addonInstance.options;\n let options = Object.assign({}, addonOptions);\n if (options.babel) {\n options.babel = Object.assign({}, options.babel);\n if (options.babel.plugins) {\n options.babel.plugins = options.babel.plugins.slice();\n }\n }\n if (options['ember-cli-babel']) {\n options['ember-cli-babel'] = Object.assign({}, options['ember-cli-babel']);\n }\n\n if (typeof this.addonInstance.options == 'function') {\n this.addonInstance.options = () => options;\n } else {\n this.addonInstance.options = options;\n }\n\n return options;\n }\n\n protected customizes(...treeNames: string[]) {\n // get the real addon as we're going to compare with __proto__\n const realAddon = getRealAddon(this.addonInstance);\n return Boolean(\n treeNames.find(treeName => {\n return (\n // customized hook exists in actual code exported from their index.js\n this.mainModule[treeName] ||\n // addon instance doesn't match its own prototype\n (realAddon.__proto__ && realAddon[treeName] !== realAddon.__proto__[treeName]) ||\n this.customizesHookName(treeName)\n );\n })\n );\n }\n\n private customizesHookName(treeName: string): boolean {\n if (!this.addonInstance.treeForMethods) {\n // weird old addons don't even extend ember-cli's Addon base class and\n // might not have this.\n return false;\n }\n for (let [name, methodName] of Object.entries(defaultMethods)) {\n if (methodName === treeName) {\n return this.addonInstance.treeForMethods[name] !== methodName;\n }\n }\n return false;\n }\n\n @Memoize()\n private hasStockTree(treeName: AddonTreePath): boolean {\n if (this.suppressesTree(treeName)) {\n return false;\n }\n\n // we need to use this.addonInstance.root instead of this.root here because\n // we're looking for the classic location of the stock tree, and that\n // location is influenced by a customized ember-addon.main in package.json,\n // which is reflected in addonInstance.root.\n return (\n this.addonInstance.treePaths && existsSync(join(this.addonInstance.root, this.addonInstance.treePaths[treeName]))\n );\n }\n\n hasAnyTrees(): boolean {\n return Boolean(stockTreeNames.find(name => this.hasStockTree(name))) || this.customizes(...dynamicTreeHooks);\n }\n\n // we keep all these here to ensure that we always apply the same options to\n // the same tree, so that our cache doesn't need to worry about varying\n // options.\n private stockTreeFunnelOptions(treeName: string): FunnelOptions | undefined {\n switch (treeName) {\n case 'addon':\n return {\n exclude: ['styles/**'],\n };\n case 'styles':\n return {\n destDir: '_app_styles_',\n };\n case 'addon-test-support':\n return {\n destDir: 'test-support',\n };\n case 'app':\n return {\n exclude: ['styles/**'],\n destDir: appPublicationDir,\n };\n case 'public':\n return {\n destDir: `public/${this.moduleName}`,\n };\n case 'vendor':\n return {\n destDir: 'vendor',\n };\n }\n }\n\n protected stockTree(treeName: AddonTreePath): Node {\n return this.throughTreeCache(treeName, 'stock', () => {\n // adjust from the legacy \"root\" to our real root, because our rootTree\n // uses our real root but the stock trees are defined in terms of the\n // legacy root\n let srcDir = relative(this.root, join(this.addonInstance.root, this.addonInstance.treePaths[treeName]));\n let opts = Object.assign({ srcDir }, this.stockTreeFunnelOptions(treeName));\n return buildFunnel(this.rootTree, opts);\n })!;\n }\n\n @Memoize()\n protected get rootTree(): Node {\n if (this.packageCache.get(this.root).mayRebuild) {\n return new WatchedDir(this.root);\n } else {\n return new UnwatchedDir(this.root);\n }\n }\n\n @Memoize()\n private get moduleName(): string {\n if (typeof this.addonInstance.moduleName === 'function') {\n return this.addonInstance.moduleName();\n }\n return this.addonInstance.name;\n }\n\n // applies preprocessors to JS and HBS\n private transpile(tree: Node) {\n // Namespace the tree being passed to preprocessJs with the moduleName\n // to mimic classic build\n tree = buildFunnel(tree, { destDir: this.moduleName });\n\n if (this.addonInstance.shouldCompileTemplates() && this.addonInstance.registry.load('template')?.length > 0) {\n tree = this.app.preprocessRegistry.preprocessTemplates(tree, {\n registry: this.addonInstance.registry,\n });\n }\n\n tree = this.addonInstance.preprocessJs(tree, '/', this.moduleName, {\n registry: this.addonInstance.registry,\n });\n\n // Remove namespacing so that it gets written out to the node_modules\n // directory correctly.\n tree = buildFunnel(tree, {\n srcDir: this.moduleName,\n });\n\n return tree;\n }\n\n @Memoize()\n protected updateBabelConfig() {\n let packageOptions = this.options;\n let emberCLIBabelInstance = this.addonInstance.addons.find((a: any) => a.name === 'ember-cli-babel');\n let version;\n\n if (emberCLIBabelInstance) {\n version = emberCLIBabelInstance.pkg.version;\n }\n\n if (!packageOptions['ember-cli-babel']) {\n packageOptions['ember-cli-babel'] = {};\n }\n\n if (!packageOptions.babel) {\n packageOptions.babel = {};\n }\n let babelConfig = packageOptions.babel as TransformOptions;\n\n Object.assign(packageOptions['ember-cli-babel'], {\n compileModules: false,\n disablePresetEnv: true,\n disableDebugTooling: true,\n disableEmberModulesAPIPolyfill: true,\n });\n\n if (version && semver.satisfies(semver.coerce(version) || version, '^5')) {\n unsupported(`${this.name} is using babel 5. Not installing our custom plugin.`);\n return;\n }\n\n if (!babelConfig.plugins) {\n babelConfig.plugins = [];\n } else {\n let hadAutoImport = Boolean(babelConfig.plugins.find(isEmberAutoImportDynamic));\n babelConfig.plugins = babelConfig.plugins.filter(babelPluginAllowedInStage1);\n if (hadAutoImport) {\n // if we removed ember-auto-import's dynamic import() plugin, the code\n // may use import() syntax and we need to re-add it to the parser.\n if (version && semver.satisfies(semver.coerce(version) || version, '^6')) {\n babelConfig.plugins.push(require.resolve('babel-plugin-syntax-dynamic-import'));\n } else {\n babelConfig.plugins.push(require.resolve('@babel/plugin-syntax-dynamic-import'));\n }\n }\n }\n\n if (this.templateCompilerBabelPlugin) {\n babelConfig.plugins.push(this.templateCompilerBabelPlugin);\n }\n }\n\n get v2Tree(): Node {\n return this.throughTreeCache(\n // these are all the kinds of trees that ember-cli's tree cache\n // understands. We need them all here because if *any* of these are\n // uncacheable, we want our whole v2 tree to be treated as uncacheable.\n [\n 'app',\n 'addon',\n 'addon-styles',\n 'addon-templates',\n 'addon-test-support',\n 'public',\n 'styles',\n 'templates',\n 'test-support',\n 'vendor',\n ],\n 'v2Tree',\n () => mergeTrees(this.v2Trees, { overwrite: true })\n );\n }\n\n // this is split out so that compatibility shims can override it to add more\n // things to the package metadata.\n protected get packageMeta(): Partial<AddonMeta> {\n let built = this.build();\n return mergeWithAppend(\n {\n version: 2,\n 'auto-upgraded': true,\n type: 'addon',\n },\n built.staticMeta,\n ...built.dynamicMeta.map(d => d())\n );\n }\n\n @Memoize()\n protected get v2Trees() {\n let { trees } = this.build();\n return trees;\n }\n\n protected throughTreeCache(nameOrNames: string | string[], category: string, fn: () => Node): Node;\n protected throughTreeCache(\n nameOrNames: string | string[],\n category: string,\n fn: () => Node | undefined\n ): Node | undefined {\n let cacheKey: string | undefined;\n if (typeof this.addonInstance.cacheKeyForTree === 'function') {\n let names = Array.isArray(nameOrNames) ? nameOrNames : [nameOrNames];\n cacheKey = names.reduce((accum: string | undefined, name) => {\n if (accum == null) {\n // a previous name was uncacheable, so we're entirely uncacheable\n return undefined;\n }\n let key = this.addonInstance.cacheKeyForTree?.(name);\n if (key) {\n return accum + key;\n } else {\n return undefined;\n }\n }, '');\n if (cacheKey) {\n cacheKey = cacheKey + category;\n let cachedTree = this.app.addonTreeCache.get(cacheKey);\n if (cachedTree) {\n debug('cache hit %s %s %s', this.name, nameOrNames, category);\n return cachedTree;\n }\n }\n }\n debug('cache miss %s %s %s', this.name, nameOrNames, category);\n let tree = fn();\n if (tree && cacheKey) {\n this.app.addonTreeCache.set(cacheKey, tree);\n }\n return tree;\n }\n\n // In general, we can't reliably run addons' custom `treeFor()` methods,\n // because they recurse in a way that we absolutely don't want.\n //\n // But there is a very common use case that we *can* handle opportunisticaly,\n // which is a treeFor() that's used purely to guard whether `_super` will be\n // called or not.\n protected suppressesTree(name: string): boolean {\n if (!this.customizes('treeFor')) {\n return false;\n }\n // get the real addon as we're going to patch and restore `_super`\n const realAddon = getRealAddon(this.addonInstance);\n let origSuper = this.addonInstance._super;\n try {\n realAddon._super = stubbedSuper;\n let result = this.mainModule.treeFor?.call(this.addonInstance, name);\n if (result === markedEmptyTree) {\n // the method returns _super unchanged, so tree is not suppressed and we\n // understand what's going on\n return false;\n }\n if (result == null) {\n // the method nulled out the tree, so we are definitely suppressing\n return true;\n }\n // we can't tell what's really going on, don't suppress and hope for the\n // best\n unsupported(`${this.name} has a custom treeFor() method that is doing some arbitrary broccoli processing.`);\n return false;\n } finally {\n if (realAddon._super === stubbedSuper) {\n realAddon._super = origSuper;\n }\n }\n }\n\n protected invokeOriginalTreeFor(\n name: string,\n { neuterPreprocessors } = { neuterPreprocessors: false }\n ): Node | undefined {\n // @ts-expect-error have no idea why throughTreeCache overload is not working here..\n return this.throughTreeCache(name, 'original', () => {\n // get the real addon as we're going to patch and restore `preprocessJs`\n const realAddon = getRealAddon(this.addonInstance);\n let original;\n try {\n if (neuterPreprocessors) {\n original = realAddon.preprocessJs;\n realAddon.preprocessJs = function (tree: Node) {\n return tree;\n };\n }\n if (this.suppressesTree(name)) {\n return undefined;\n }\n return this.addonInstance._treeFor(name);\n } finally {\n if (neuterPreprocessors) {\n realAddon.preprocessJs = original;\n }\n }\n });\n }\n\n protected treeForAddon(built: IntermediateBuild): Node | undefined {\n // the extra isEngine condition is because ember-engines injects a\n // treeForAddon method into each engine addon that we really don't need or\n // want to run. Unfortunately there's not a more localized place to patch it\n // out, partly because ember-engines also uses a bogus inheritance strategy\n // (instead of providing a prototype that engine addons can extend it\n // patches things into their instance directly).\n if (this.customizes('treeForAddon', 'treeForAddonTemplates') && !this.isEngine()) {\n let tree = this.invokeOriginalTreeFor('addon', { neuterPreprocessors: true });\n if (tree) {\n tree = modulesCompat(tree);\n\n // this captures addons that are trying to escape their own package's\n // namespace\n let result = rewriteAddonTree(this.transpile(tree), this.name, this.moduleName);\n built.dynamicMeta.push(result.getMeta);\n return result.tree;\n }\n } else if (this.hasStockTree('addon')) {\n return this.transpile(this.stockTree('addon'));\n }\n }\n\n protected addonStylesTree(): Node | undefined {\n if (this.customizes('treeForAddonStyles')) {\n let custom = this.invokeOriginalTreeFor('addon-styles');\n if (custom) {\n return this.addonInstance.compileStyles(custom);\n }\n } else if (this.hasStockTree('addon-styles')) {\n return this.addonInstance.compileStyles(this.stockTree('addon-styles'));\n }\n }\n\n protected treeForTestSupport(): Node | undefined {\n if (this.customizes('treeForTestSupport')) {\n todo(`${this.name} has customized the test support tree`);\n } else if (this.hasStockTree('test-support')) {\n // this one doesn't go through transpile yet because it gets handled as\n // part of the consuming app. For example, imports should be relative to\n // the consuming app, not our own package.\n return buildFunnel(this.stockTree('test-support'), {\n destDir: `${appPublicationDir}/tests`,\n });\n }\n }\n\n private buildTreeForAddon(built: IntermediateBuild) {\n let tree = this.treeForAddon(built);\n if (!tree) {\n return;\n }\n let templateOnlyComponents: Node = new SynthesizeTemplateOnlyComponents(tree, {\n allowedPaths: ['components'],\n\n // if an addon has custom AST transforms, stage1 can rewrite .hbs to\n // .hbs.js\n templateExtensions: ['.hbs', '.hbs.js'],\n });\n\n if (this.isEngine()) {\n // even when staticAddonTrees is enabled, engines may have a router map\n // that needs to be dynamically resolved.\n let hasRoutesModule = false;\n\n tree = new ObserveTree(tree, outputDir => {\n hasRoutesModule = existsSync(resolve(outputDir, 'routes.js'));\n });\n built.dynamicMeta.push(() => ({\n 'implicit-modules': hasRoutesModule ? ['./routes.js'] : [],\n }));\n }\n\n built.trees.push(tree);\n built.trees.push(templateOnlyComponents);\n }\n\n private buildAddonStyles(built: IntermediateBuild) {\n let addonStylesTree = this.addonStylesTree();\n if (addonStylesTree) {\n if (this.app.hasCompiledStyles) {\n // >= ember-cli@3.18 store css files in <addon-name/__COMPILED_STYLES__\n // and for embroider to work correctly need to be moved back to `/`\n //\n // speaking with @rwjblue the ember-cli build is now frozen, and it is\n // ok to assume that after the above version no changes will occur\n // makings this work-around safe.\n //\n // additional context: https://github.com/embroider-build/embroider/pull/934/files#r695269976\n addonStylesTree = buildFunnel(addonStylesTree, {\n srcDir: `${this.name}/__COMPILED_STYLES__`,\n destDir: '/',\n allowEmpty: true,\n });\n }\n\n let discoveredFiles: string[] = [];\n let tree = new ObserveTree(addonStylesTree, outputPath => {\n discoveredFiles = walkSync(outputPath, { globs: ['**/*.css'], directories: false });\n });\n built.trees.push(tree);\n built.dynamicMeta.push(() => {\n return {\n 'implicit-styles': discoveredFiles.map(f => `./${f}`),\n };\n });\n }\n }\n\n private buildTreeForStyles(built: IntermediateBuild) {\n let tree;\n if (this.customizes('treeForStyles')) {\n // the user's tree returns their own styles with no \"app/styles\" wrapping\n // around, which is actually what we want\n tree = this.invokeOriginalTreeFor('styles');\n if (tree) {\n tree = buildFunnel(tree, {\n destDir: '_app_styles_',\n getDestinationPath(path) {\n return path.replace(/^app\\/styles\\//, '');\n },\n });\n }\n } else if (this.hasStockTree('styles')) {\n tree = this.stockTree('styles');\n }\n if (tree) {\n built.trees.push(tree);\n }\n }\n\n private buildAddonTestSupport(built: IntermediateBuild) {\n let addonTestSupportTree;\n if (this.customizes('treeForAddonTestSupport')) {\n let original = this.invokeOriginalTreeFor('addon-test-support', { neuterPreprocessors: true });\n if (original) {\n let { tree, getMeta } = rewriteAddonTree(original, this.name, this.moduleName);\n addonTestSupportTree = this.transpile(tree);\n built.dynamicMeta.push(getMeta);\n }\n } else if (this.hasStockTree('addon-test-support')) {\n addonTestSupportTree = this.transpile(this.stockTree('addon-test-support'));\n }\n if (addonTestSupportTree) {\n built.trees.push(addonTestSupportTree);\n }\n }\n\n private maybeSetDirectoryMeta(built: IntermediateBuild, tree: Node, localDir: string, key: keyof AddonMeta): Node {\n let files: AddonMeta['app-js'];\n built.dynamicMeta.push(() => {\n if (files) {\n return { [key]: files };\n } else {\n return {};\n }\n });\n return new ObserveTree(tree, (outputPath: string) => {\n let dir = join(outputPath, localDir);\n if (existsSync(dir)) {\n files = fromPairs(walkSync(dir, { globs: ['**/*.js', '**/*.hbs'] }).map(f => [`./${f}`, `./${localDir}/${f}`]));\n } else {\n files = undefined;\n }\n });\n }\n\n private buildTestSupport(built: IntermediateBuild) {\n let tree = this.treeForTestSupport();\n if (tree) {\n tree = this.maybeSetDirectoryMeta(built, tree, appPublicationDir, 'app-js');\n built.trees.push(tree);\n }\n }\n\n private buildTreeForApp(built: IntermediateBuild) {\n let appTree;\n if (this.customizes('treeForApp', 'treeForTemplates')) {\n let original = this.invokeOriginalTreeFor('app');\n if (original) {\n appTree = buildFunnel(original, {\n destDir: appPublicationDir,\n });\n }\n } else if (this.hasStockTree('app')) {\n appTree = this.stockTree('app');\n }\n\n if (appTree) {\n // this one doesn't go through transpile yet because it gets handled as\n // part of the consuming app.\n appTree = this.maybeSetDirectoryMeta(built, appTree, appPublicationDir, 'app-js');\n built.trees.push(appTree);\n }\n\n if (\n typeof this.addonInstance.isDevelopingAddon === 'function' &&\n this.addonInstance.isDevelopingAddon() &&\n this.addonInstance.hintingEnabled()\n ) {\n let hintTree = this.addonInstance.jshintAddonTree();\n if (hintTree) {\n hintTree = this.maybeSetDirectoryMeta(\n built,\n buildFunnel(hintTree, { destDir: appPublicationDir }),\n appPublicationDir,\n 'app-js'\n );\n built.trees.push(hintTree);\n }\n }\n }\n\n private buildTreeForFastBoot(built: IntermediateBuild) {\n let tree;\n\n if (this.customizes('treeForFastBoot')) {\n // Arguably, it would be more correct to always create the new Funnel,\n // because the fastboot directory could be created *after* our build starts.\n // But that would result in hundreds of additional trees, even though the\n // vast majority of addons aren't changing and don't have fastboot\n // directories. So I'm pretty comfortable with the optimization. It means\n // that an addon author who creates a brand new fastboot directory in a v1\n // packages will need to restart their build. (Really we hope new addons\n // will be authored in v2 instead soon anyway, and they won't need the\n // concept of \"fastboot directory\" because they can use the macro system to\n // conditionally import some things only in fastboot.)\n if (pathExistsSync(join(this.root, 'fastboot'))) {\n tree = buildFunnel(this.rootTree, { srcDir: 'fastboot' });\n }\n tree = this.addonInstance.treeForFastBoot(tree);\n if (tree) {\n tree = buildFunnel(tree, { destDir: fastbootPublicationDir });\n }\n } else {\n if (pathExistsSync(join(this.root, 'fastboot'))) {\n tree = buildFunnel(this.rootTree, { srcDir: 'fastboot', destDir: fastbootPublicationDir });\n }\n }\n\n if (tree) {\n // this one doesn't go through transpile yet because it gets handled as\n // part of the consuming app.\n tree = this.maybeSetDirectoryMeta(built, tree, fastbootPublicationDir, 'fastboot-js');\n built.trees.push(tree);\n }\n }\n\n private buildPublicTree(built: IntermediateBuild) {\n let publicTree;\n // the extra isEngine condition is here because ember-engines injects a\n // customized treeForPublic into every engine addon. We don't want or need\n // it to run.\n if (this.customizes('treeForPublic') && !this.isEngine()) {\n let original = this.invokeOriginalTreeFor('public');\n if (original) {\n publicTree = buildFunnel(original, {\n destDir: 'public',\n });\n }\n } else if (this.hasStockTree('public')) {\n publicTree = this.stockTree('public');\n }\n if (publicTree) {\n let publicAssets: { [filename: string]: string } = {};\n publicTree = new ObserveTree(publicTree, (outputPath: string) => {\n publicAssets = {};\n for (let filename of walkSync(join(outputPath, 'public'))) {\n if (!filename.endsWith('/')) {\n publicAssets[`./public/${filename}`] = './' + filename;\n }\n }\n });\n built.trees.push(publicTree);\n built.dynamicMeta.push(() => ({ 'public-assets': publicAssets }));\n }\n }\n\n private buildVendorTree(built: IntermediateBuild) {\n if (this.customizes('treeForVendor')) {\n // We don't have any particular opinions about the structure inside\n // vendor, so even when it's customized we can just use the customized\n // one.\n let tree = this.invokeOriginalTreeFor('vendor');\n if (tree) {\n built.trees.push(\n buildFunnel(tree, {\n destDir: 'vendor',\n })\n );\n }\n } else if (this.hasStockTree('vendor')) {\n built.trees.push(this.stockTree('vendor'));\n }\n }\n\n private isEngine() {\n return typeof this.addonInstance.getEngineConfigContents === 'function';\n }\n\n private buildEngineConfig(built: IntermediateBuild) {\n if (!this.isEngine()) {\n return;\n }\n // this addon is an engine, so it needs its own config/environment.js.\n // ember-engines always emits a separate inline (not-meta-tag) config for\n // fastboot, so we mimic that behavior here.\n //\n // getEngineConfigContents is an arbitrary customizable module, so we can't\n // easily rewrite it to live inside our conditional, so it's safer in a\n // separate module.\n built.trees.push(writeFile('config/_environment_browser_.js', this.addonInstance.getEngineConfigContents?.()));\n built.trees.push(\n writeFile(\n 'config/environment.js',\n `\n import { macroCondition, getGlobalConfig, importSync } from '@embroider/macros';\n let config;\n if (macroCondition(getGlobalConfig().fastboot?.isRunning)){\n config = ${JSON.stringify(this.addonInstance.engineConfig?.(this.app.env, {}), null, 2)};\n } else {\n config = importSync('./_environment_browser_.js').default;\n }\n export default config;\n `\n )\n );\n }\n\n private buildPackageJSON(built: IntermediateBuild) {\n built.trees.push(new RewritePackageJSON(this.rootTree, () => this.newPackageJSON));\n }\n\n @Memoize()\n private build(): IntermediateBuild {\n let built = new IntermediateBuild();\n built.staticMeta['order-index'] = this.orderIdx;\n\n if (this.options.lazyLoading === true || (this.options.lazyLoading && this.options.lazyLoading.enabled)) {\n built.staticMeta['lazy-engine'] = true;\n }\n\n if (this.moduleName !== this.name) {\n built.staticMeta['renamed-packages'] = {\n [this.moduleName]: this.name,\n };\n }\n\n this.buildTreeForAddon(built);\n this.buildAddonStyles(built);\n this.buildTreeForStyles(built);\n this.buildAddonTestSupport(built);\n this.buildTestSupport(built);\n this.buildTreeForApp(built);\n this.buildTreeForFastBoot(built);\n this.buildPublicTree(built);\n this.buildVendorTree(built);\n this.buildEngineConfig(built);\n this.buildPackageJSON(built);\n return built;\n }\n}\n\nexport interface V1AddonConstructor {\n new (\n addonInstance: any,\n options: CompatOptionsType,\n app: CompatApp,\n packageCache: PackageCache,\n orderIdx: number\n ): V1Addon;\n\n shouldApplyAdapter?(addonInstance: any): boolean;\n}\n\nclass IntermediateBuild {\n trees: Node[] = [];\n staticMeta: { [metaField: string]: any } = {};\n dynamicMeta: (() => Partial<AddonMeta>)[] = [];\n}\n\nfunction babelPluginAllowedInStage1(plugin: PluginItem) {\n if (isEmbroiderMacrosPlugin(plugin)) {\n // the point of @embroider/macros is that it's allowed to stay in v2\n // addon publication format, so it doesn't need to run here in stage1.\n // We always run it in stage3.\n return false;\n }\n\n if (isInlinePrecompilePlugin(plugin)) {\n // Similarly, the inline precompile plugin must not run in stage1. We\n // want all templates uncompiled. Instead, we will be adding our own\n // plugin that only runs custom AST transforms inside inline\n // templates.\n return false;\n }\n\n if (isEmberAutoImportDynamic(plugin)) {\n // We replace ember-auto-import's implementation of dynamic import(), so we\n // need to stop its plugin from rewriting those.\n return false;\n }\n\n if (isCompactReexports(plugin)) {\n // We don't want to replace re-exports at this stage, since that will turn\n // an `export` statement into a `define`, which is handled in Stage 3\n return false;\n }\n\n if (isColocationPlugin(plugin)) {\n // template co-location is a first-class feature we support directly, so\n // whether or not the app brought a plugin for it we're going to do it our\n // way.\n return false;\n }\n\n return true;\n}\n\nconst markedEmptyTree = new UnwatchedDir(process.cwd());\n\nconst stubbedSuper = () => {\n return markedEmptyTree;\n};\n\nstubbedSuper.treeFor = () => {\n return markedEmptyTree;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1-config.js","sourceRoot":"","sources":["../../src/v1-config.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAqC;AAErC,+BAA4B;AAC5B,uCAAwC;AAUxC,MAAa,QAAS,SAAQ,yBAAM;IAElC,YAAY,UAAgB,EAAU,GAAW;QAC/C,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QADY,QAAG,GAAH,GAAG,CAAQ;IAEjD,CAAC;IACD,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,uBAAY,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACnH,CAAC;IACD,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AAdD,4BAcC","sourcesContent":["import Plugin from 'broccoli-plugin';\nimport type { Node } from 'broccoli-node-api';\nimport { join } from 'path';\nimport { readFileSync } from 'fs-extra';\n\nexport interface ConfigContents {\n modulePrefix: string;\n podModulePrefix?: string;\n EmberENV: unknown;\n APP: unknown;\n rootURL: string;\n}\n\nexport class V1Config extends Plugin {\n private lastConfig: ConfigContents | undefined;\n constructor(configTree: Node, private env: string) {\n super([configTree], {});\n }\n build() {\n this.lastConfig = JSON.parse(readFileSync(join(this.inputPaths[0], 'environments', `${this.env}.json`), 'utf8'));\n }\n readConfig() {\n if (!this.lastConfig) {\n throw new Error(`V1Config not available until after the build`);\n }\n return this.lastConfig;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1-instance-cache.js","sourceRoot":"","sources":["../../src/v1-instance-cache.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,iCAAiC;;;;;AAGjC,0DAAiC;AACjC,uCAA0C;AAE1C,0CAA8C;AAG9C,MAAqB,eAAe;IAOlC,YAAoB,GAAc,EAAU,YAA0B;QAAlD,QAAG,GAAH,GAAG,CAAW;QAAU,iBAAY,GAAZ,YAAY,CAAc;QANtE,6EAA6E;QAC7E,8EAA8E;QAC9E,4CAA4C;QACpC,WAAM,GAA2B,IAAI,GAAG,EAAE,CAAC;QAIjD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAElB,uEAAuE;QACvE,iCAAiC;QAChC,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAA0B,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC7E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,aAA4B;QAC/C,IAAI,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QACzC,mEAAmE;QACnE,2DAA2D;QAC3D,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEpE,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,kBAAO,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,IAAI,GAAG,GAAG,SAAS,oBAAoB,WAAW,KAAK,CAAC;YAC5D,IAAI,IAAA,yBAAc,EAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,iEAAiE;gBACjE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,kBAAO,CAAC;QACjB,CAAC;QAED,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;YACpC,OAAO,YAAY,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAO,CAAC;QACjF,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,QAAQ,CAAC,aAA4B;QAC3C,uEAAuE;QACvE,6DAA6D;QAC7D,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnB,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrG,IAAI,IAAI,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;CACF;AA9DD,kCA8DC","sourcesContent":["// All access to class ember-cli-provided Addon and EmberApp instances of v1\n// packages is supposed to go through here. This lets us control the boundary\n// between the new and old words.\n\nimport type { V1AddonConstructor } from './v1-addon';\nimport V1Addon from './v1-addon';\nimport { pathExistsSync } from 'fs-extra';\nimport type { AddonInstance, PackageCache } from '@embroider/core';\nimport { getOrCreate } from '@embroider/core';\nimport type CompatApp from './compat-app';\n\nexport default class V1InstanceCache {\n // maps from package root directories to known V1 instances of that packages.\n // There can be many because a single copy of an addon may be consumed by many\n // other packages and each gets an instance.\n private addons: Map<string, V1Addon[]> = new Map();\n private orderIdx: number;\n\n constructor(private app: CompatApp, private packageCache: PackageCache) {\n this.app = app;\n this.orderIdx = 0;\n\n // no reason to do this on demand because the legacy ember app instance\n // already loaded all descendants\n (app.legacyEmberAppInstance.project.addons as AddonInstance[]).forEach(addon => {\n this.addAddon(addon);\n });\n }\n\n private adapterClass(addonInstance: AddonInstance): V1AddonConstructor {\n let packageName = addonInstance.pkg.name;\n // if the user registered something (including \"null\", which allows\n // disabling the built-in adapters), that takes precedence.\n let AdapterClass = this.app.options.compatAdapters.get(packageName);\n\n if (AdapterClass === null) {\n return V1Addon;\n }\n\n if (!AdapterClass) {\n let path = `${__dirname}/compat-adapters/${packageName}.js`;\n if (pathExistsSync(path)) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n AdapterClass = require(path).default;\n }\n }\n\n if (!AdapterClass) {\n return V1Addon;\n }\n\n if (AdapterClass.shouldApplyAdapter) {\n return AdapterClass.shouldApplyAdapter(addonInstance) ? AdapterClass : V1Addon;\n }\n\n return AdapterClass;\n }\n\n private addAddon(addonInstance: AddonInstance) {\n // Traverse and add any nested addons. This must happen _before_ we add\n // the addon itself to correctly preserve the addon ordering.\n addonInstance.addons.forEach(a => this.addAddon(a));\n\n this.orderIdx += 1;\n let Klass = this.adapterClass(addonInstance);\n let v1Addon = new Klass(addonInstance, this.app.options, this.app, this.packageCache, this.orderIdx);\n let pkgs = getOrCreate(this.addons, v1Addon.root, () => []);\n pkgs.push(v1Addon);\n }\n\n getAddons(root: string): V1Addon[] {\n return this.addons.get(root) || [];\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embroider/compat",
3
- "version": "4.0.2-unstable.bd82823",
3
+ "version": "4.0.2",
4
4
  "private": false,
5
5
  "description": "Backward compatibility layer for the Embroider build system.",
6
6
  "repository": {
@@ -10,12 +10,15 @@
10
10
  },
11
11
  "license": "MIT",
12
12
  "author": "Edward Faulkner",
13
- "main": "src/index.js",
13
+ "main": "dist/index.js",
14
+ "exports": {
15
+ ".": "./dist/src/index.js",
16
+ "./src/*": "./dist/src/*.js",
17
+ "./*": "./dist/src/*.js"
18
+ },
14
19
  "files": [
15
20
  "babel.js",
16
- "src/**/*.js",
17
- "src/**/*.d.ts",
18
- "src/**/*.js.map"
21
+ "dist/src/"
19
22
  ],
20
23
  "dependencies": {
21
24
  "@babel/code-frame": "^7.14.5",
@@ -60,7 +63,7 @@
60
63
  "tree-sync": "^2.1.0",
61
64
  "typescript-memoize": "^1.0.1",
62
65
  "walk-sync": "^3.0.0",
63
- "@embroider/macros": "1.17.2-unstable.bd82823"
66
+ "@embroider/macros": "1.17.2"
64
67
  },
65
68
  "devDependencies": {
66
69
  "@glimmer/syntax": "^0.94.9",
@@ -84,11 +87,11 @@
84
87
  "scenario-tester": "^4.0.0",
85
88
  "typescript": "^5.4.5",
86
89
  "@embroider/sample-transforms": "0.0.0",
87
- "@embroider/core": "^4.0.2-unstable.bd82823",
88
- "@embroider/test-support": "0.36.0"
90
+ "@embroider/test-support": "0.36.0",
91
+ "@embroider/core": "^4.0.2"
89
92
  },
90
93
  "peerDependencies": {
91
- "@embroider/core": "^4.0.2-unstable.bd82823"
94
+ "@embroider/core": "^4.0.2"
92
95
  },
93
96
  "engines": {
94
97
  "node": "12.* || 14.* || >= 16"
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-to-tree.js","sourceRoot":"","sources":["add-to-tree.ts"],"names":[],"mappings":";;AACA,qDAAyC;AAEzC,MAAqB,SAAU,SAAQ,wBAAM;IAC3C,YAAY,cAAoB,EAAU,IAAkD;QAC1F,KAAK,CAAC,cAAc,EAAE;YACpB,UAAU,EAAE,+BAA+B;SAC5C,CAAC,CAAC;QAHqC,SAAI,GAAJ,IAAI,CAA8C;IAI5F,CAAC;IACD,eAAe;QACb,4EAA4E;QAC5E,kDAAkD;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;CACF;AAfD,4BAeC","sourcesContent":["import type { Node } from 'broccoli-node-api';\nimport { Funnel } from 'broccoli-funnel';\n\nexport default class AddToTree extends Funnel {\n constructor(combinedVendor: Node, private hook: (outputPath: string) => Promise<void> | void) {\n super(combinedVendor, {\n annotation: '@embroider/compat/synthvendor',\n });\n }\n shouldLinkRoots() {\n // We want to force funnel to copy things rather than just linking the whole\n // directory, because we're planning to mutate it.\n return false;\n }\n async build() {\n await super.build();\n await this.hook(this.outputPath);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ember-basic-dropdown.js","sourceRoot":"","sources":["ember-basic-dropdown.ts"],"names":[],"mappings":";;AAEA,IAAI,UAAU,GAAiB;IAC7B,OAAO,EAAE,sBAAsB;IAC/B,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE;QACZ,8BAA8B,EAAE;YAC9B,mBAAmB,EAAE,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;SAClF;KACF;IACD,UAAU,EAAE;QACV,oBAAoB,EAAE;YACpB,MAAM,EAAE;gBACN,SAAS,EAAE,yCAAyC;aACrD;YACD,yBAAyB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;SACpE;KACF;CACF,CAAC;AAEF,IAAI,UAAU,GAAiB;IAC7B,OAAO,EAAE,sBAAsB;IAC/B,WAAW,EAAE,kBAAkB;IAC/B,YAAY,EAAE;QACZ,8BAA8B,EAAE;YAC9B,mBAAmB,EAAE,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;SAClF;KACF;IACD,UAAU,EAAE;QACV,oBAAoB,EAAE;YACpB,MAAM,EAAE;gBACN,SAAS,EAAE,yCAAyC;aACrD;YACD,yBAAyB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;SACpE;KACF;CACF,CAAC;AAEF,kBAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC","sourcesContent":["import type { PackageRules } from '..';\n\nlet rulesForV1: PackageRules = {\n package: 'ember-basic-dropdown',\n semverRange: '1.x',\n addonModules: {\n 'components/basic-dropdown.js': {\n dependsOnComponents: ['{{basic-dropdown/trigger}}', '{{basic-dropdown/content}}'],\n },\n },\n components: {\n '{{basic-dropdown}}': {\n layout: {\n addonPath: 'templates/components/basic-dropdown.hbs',\n },\n acceptsComponentArguments: ['triggerComponent', 'contentComponent'],\n },\n },\n};\n\nlet rulesForV2: PackageRules = {\n package: 'ember-basic-dropdown',\n semverRange: '>=2.0.0 <=3.0.18',\n addonModules: {\n 'components/basic-dropdown.js': {\n dependsOnComponents: ['{{basic-dropdown-trigger}}', '{{basic-dropdown-content}}'],\n },\n },\n components: {\n '{{basic-dropdown}}': {\n layout: {\n addonPath: 'templates/components/basic-dropdown.hbs',\n },\n acceptsComponentArguments: ['triggerComponent', 'contentComponent'],\n },\n },\n};\n\nexport default [rulesForV1, rulesForV2];\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ember-data.js","sourceRoot":"","sources":["ember-data.ts"],"names":[],"mappings":";;AAEA,IAAI,KAAK,GAAmB;IAC1B;QACE,OAAO,EAAE,mBAAmB;QAC5B,WAAW,EAAE,UAAU;QACvB,YAAY,EAAE;YACZ,aAAa,EAAE;gBACb,gBAAgB,EAAE,CAAC,kCAAkC,CAAC;aACvD;YACD,+BAA+B,EAAE;gBAC/B,gBAAgB,EAAE,CAAC,kCAAkC,CAAC;aACvD;YACD,yCAAyC,EAAE;gBACzC,gBAAgB,EAAE,CAAC,4BAA4B,CAAC;aACjD;SACF;KACF;CACF,CAAC;AAEF,kBAAe,KAAK,CAAC","sourcesContent":["import type { PackageRules } from '..';\n\nlet rules: PackageRules[] = [\n {\n package: '@ember-data/store',\n semverRange: '<=4.11.0',\n addonModules: {\n '-private.js': {\n dependsOnModules: ['@ember-data/record-data/-private'],\n },\n '-private/system/core-store.js': {\n dependsOnModules: ['@ember-data/record-data/-private'],\n },\n '-private/system/model/internal-model.js': {\n dependsOnModules: ['@ember-data/model/-private'],\n },\n },\n },\n];\n\nexport default rules;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ember-element-helper.js","sourceRoot":"","sources":["ember-element-helper.ts"],"names":[],"mappings":";;AAEA,IAAI,KAAK,GAAiB;IACxB,OAAO,EAAE,sBAAsB;IAC/B,YAAY,EAAE;QACZ,qBAAqB,EAAE;YACrB,mBAAmB,EAAE,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;SAC1E;KACF;IACD,UAAU,EAAE,EAAE;CACf,CAAC;AAEF,kBAAe,CAAC,KAAK,CAAC,CAAC","sourcesContent":["import type { PackageRules } from '..';\n\nlet rules: PackageRules = {\n package: 'ember-element-helper',\n addonModules: {\n 'helpers/-element.js': {\n dependsOnComponents: ['{{-dynamic-element}}', '{{-dynamic-element-alt}}'],\n },\n },\n components: {},\n};\n\nexport default [rules];\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ember-modal-dialog.js","sourceRoot":"","sources":["ember-modal-dialog.ts"],"names":[],"mappings":";;AAEA,MAAM,KAAK,GAAmB;IAC5B;QACE,OAAO,EAAE,oBAAoB;QAC7B,UAAU,EAAE;YACV,gBAAgB,EAAE;gBAChB,OAAO,EAAE;oBACP,wBAAwB,EAAE;wBACxB,yCAAyC;wBACzC,8CAA8C;wBAC9C,uCAAuC;wBACvC,uCAAuC;wBACvC,sCAAsC;qBACvC;iBACF;gBACD,MAAM,EAAE;oBACN,SAAS,EAAE,uCAAuC;iBACnD;aACF;YACD,mBAAmB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;YAC3C,iBAAiB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;SAC1C;KACF;CACF,CAAC;AAEF,kBAAe,KAAK,CAAC","sourcesContent":["import type { PackageRules } from '..';\n\nconst rules: PackageRules[] = [\n {\n package: 'ember-modal-dialog',\n components: {\n '<ModalDialog/>': {\n invokes: {\n modalDialogComponentName: [\n '{{ember-modal-dialog/-in-place-dialog}}',\n '{{ember-modal-dialog/-liquid-tether-dialog}}',\n '{{ember-modal-dialog/-tether-dialog}}',\n '{{ember-modal-dialog/-liquid-dialog}}',\n '{{ember-modal-dialog/-basic-dialog}}',\n ],\n },\n layout: {\n addonPath: 'templates/components/modal-dialog.hbs',\n },\n },\n '<LiquidWormhole/>': { safeToIgnore: true },\n '<LiquidTether/>': { safeToIgnore: true },\n },\n },\n];\n\nexport default rules;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ember-power-select-typeahead.js","sourceRoot":"","sources":["ember-power-select-typeahead.ts"],"names":[],"mappings":";;AAEA,IAAI,KAAK,GAAiB;IACxB,OAAO,EAAE,8BAA8B;IACvC,YAAY,EAAE;QACZ,wCAAwC,EAAE;YACxC,mBAAmB,EAAE,CAAC,oCAAoC,CAAC;SAC5D;QACD,uCAAuC,EAAE;YACvC,mBAAmB,EAAE,CAAC,mCAAmC,CAAC;SAC3D;KACF;IACD,UAAU,EAAE;QACV,4BAA4B,EAAE;YAC5B,MAAM,EAAE;gBACN,SAAS,EAAE,iDAAiD;aAC7D;YACD,yBAAyB,EAAE;gBACzB,uBAAuB;gBACvB,wBAAwB;gBACxB,kBAAkB;gBAClB,sBAAsB;gBACtB,wBAAwB;gBACxB,uBAAuB;gBACvB,kBAAkB;aACnB;SACF;KACF;CACF,CAAC;AAEF,kBAAe,CAAC,KAAK,CAAC,CAAC","sourcesContent":["import type { PackageRules } from '..';\n\nlet rules: PackageRules = {\n package: 'ember-power-select-typeahead',\n addonModules: {\n './components/power-select-typeahead.js': {\n dependsOnComponents: ['{{power-select-typeahead/trigger}}'],\n },\n './components/power-select-multiple.js': {\n dependsOnComponents: ['{{power-select-multiple/trigger}}'],\n },\n },\n components: {\n '{{power-select-typeahead}}': {\n layout: {\n addonPath: 'templates/components/power-select-typeahead.hbs',\n },\n acceptsComponentArguments: [\n 'afterOptionsComponent',\n 'beforeOptionsComponent',\n 'optionsComponent',\n 'placeholderComponent',\n 'searchMessageComponent',\n 'selectedItemComponent',\n 'triggerComponent',\n ],\n },\n },\n};\n\nexport default [rules];\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ember-power-select-with-create.js","sourceRoot":"","sources":["ember-power-select-with-create.ts"],"names":[],"mappings":";;AAEA,MAAM,KAAK,GAAmB;IAC5B;QACE,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,QAAQ;QACrB,UAAU,EAAE;YACV,0BAA0B,EAAE;gBAC1B,yBAAyB,EAAE,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;gBACnF,MAAM,EAAE;oBACN,SAAS,EAAE,mDAAmD;iBAC/D;aACF;SACF;QACD,YAAY,EAAE;YACZ,wCAAwC,EAAE;gBACxC,mBAAmB,EAAE,CAAC,gBAAgB,EAAE,2CAA2C,CAAC;aACrF;SACF;KACF;CACF,CAAC;AAEF,kBAAe,KAAK,CAAC","sourcesContent":["import type { PackageRules } from '..';\n\nconst rules: PackageRules[] = [\n {\n package: 'ember-power-select-with-create',\n semverRange: '<3.0.0',\n components: {\n '<PowerSelectWithCreate/>': {\n acceptsComponentArguments: ['powerSelectComponentName', 'suggestedOptionComponent'],\n layout: {\n addonPath: 'templates/components/power-select-with-create.hbs',\n },\n },\n },\n addonModules: {\n 'components/power-select-with-create.js': {\n dependsOnComponents: ['<PowerSelect/>', '<PowerSelectWithCreate::SuggestedOption/>'],\n },\n },\n },\n];\n\nexport default rules;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ember-power-select.js","sourceRoot":"","sources":["ember-power-select.ts"],"names":[],"mappings":";;AAEA,IAAI,KAAK,GAAiB;IACxB,OAAO,EAAE,oBAAoB;IAC7B,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE;QACZ,8BAA8B,EAAE;YAC9B,mBAAmB,EAAE;gBACnB,iCAAiC;gBACjC,0BAA0B;gBAC1B,qCAAqC;gBACrC,0BAA0B;gBAC1B,iCAAiC;gBACjC,8BAA8B;aAC/B;SACF;QACD,uCAAuC,EAAE;YACvC,mBAAmB,EAAE,CAAC,mCAAmC,CAAC;SAC3D;KACF;IACD,UAAU,EAAE;QACV,kBAAkB,EAAE;YAClB,MAAM,EAAE;gBACN,SAAS,EAAE,uCAAuC;aACnD;YACD,yBAAyB,EAAE;gBACzB,uBAAuB;gBACvB,wBAAwB;gBACxB,kBAAkB;gBAClB,sBAAsB;gBACtB,wBAAwB;gBACxB,uBAAuB;gBACvB,kBAAkB;aACnB;SACF;QACD,2BAA2B,EAAE;YAC3B,MAAM,EAAE;gBACN,SAAS,EAAE,gDAAgD;aAC5D;YACD,yBAAyB,EAAE;gBACzB,uBAAuB;gBACvB,wBAAwB;gBACxB,gBAAgB;gBAChB,kBAAkB;gBAClB,sBAAsB;gBACtB,wBAAwB;gBACxB,uBAAuB;gBACvB,kBAAkB;aACnB;SACF;QACD,0BAA0B,EAAE;YAC1B,MAAM,EAAE;gBACN,SAAS,EAAE,+CAA+C;aAC3D;YACD,yBAAyB,EAAE,CAAC,uBAAuB,EAAE,sBAAsB,CAAC;SAC7E;QACD,0BAA0B,EAAE;YAC1B,MAAM,EAAE;gBACN,SAAS,EAAE,+CAA+C;aAC3D;YACD,yBAAyB,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;SAClE;QACD,mCAAmC,EAAE;YACnC,MAAM,EAAE;gBACN,SAAS,EAAE,wDAAwD;aACpE;YACD,yBAAyB,EAAE,CAAC,uBAAuB,CAAC;SACrD;KACF;CACF,CAAC;AAEF,kBAAe,CAAC,KAAK,CAAC,CAAC","sourcesContent":["import type { PackageRules } from '..';\n\nlet rules: PackageRules = {\n package: 'ember-power-select',\n semverRange: '< 5.0.1',\n addonModules: {\n './components/power-select.js': {\n dependsOnComponents: [\n '{{power-select/before-options}}',\n '{{power-select/options}}',\n '{{power-select/power-select-group}}',\n '{{power-select/trigger}}',\n '{{power-select/search-message}}',\n '{{power-select/placeholder}}',\n ],\n },\n './components/power-select-multiple.js': {\n dependsOnComponents: ['{{power-select-multiple/trigger}}'],\n },\n },\n components: {\n '{{power-select}}': {\n layout: {\n addonPath: 'templates/components/power-select.hbs',\n },\n acceptsComponentArguments: [\n 'afterOptionsComponent',\n 'beforeOptionsComponent',\n 'optionsComponent',\n 'placeholderComponent',\n 'searchMessageComponent',\n 'selectedItemComponent',\n 'triggerComponent',\n ],\n },\n '{{power-select-multiple}}': {\n layout: {\n addonPath: 'templates/components/power-select-multiple.hbs',\n },\n acceptsComponentArguments: [\n 'afterOptionsComponent',\n 'beforeOptionsComponent',\n 'groupComponent',\n 'optionsComponent',\n 'placeholderComponent',\n 'searchMessageComponent',\n 'selectedItemComponent',\n 'triggerComponent',\n ],\n },\n '{{power-select/trigger}}': {\n layout: {\n addonPath: 'templates/components/power-select/trigger.hbs',\n },\n acceptsComponentArguments: ['selectedItemComponent', 'placeholderComponent'],\n },\n '{{power-select/options}}': {\n layout: {\n addonPath: 'templates/components/power-select/options.hbs',\n },\n acceptsComponentArguments: ['groupComponent', 'optionsComponent'],\n },\n '{{power-select-multiple/trigger}}': {\n layout: {\n addonPath: 'templates/components/power-select-multiple/trigger.hbs',\n },\n acceptsComponentArguments: ['selectedItemComponent'],\n },\n },\n};\n\nexport default [rules];\n"]}