discourse-ember-source 3.5.1.1 → 3.5.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (741) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ember/version.rb +1 -1
  3. metadata +2 -740
  4. data/.gitignore +0 -9
  5. data/.travis.yml +0 -5
  6. data/Gemfile +0 -6
  7. data/LICENSE.txt +0 -21
  8. data/README +0 -18
  9. data/README.md +0 -39
  10. data/Rakefile +0 -27
  11. data/bin/console +0 -14
  12. data/bin/setup +0 -8
  13. data/discourse-ember-source-3.5.1.0.gem +0 -0
  14. data/dist/ember-all.debug.map +0 -1
  15. data/dist/ember-template-compiler.map +0 -1
  16. data/dist/ember-testing.map +0 -1
  17. data/dist/ember-tests.map +0 -1
  18. data/dist/ember-tests.prod.map +0 -1
  19. data/dist/ember.debug.map +0 -1
  20. data/dist/ember.min.map +0 -1
  21. data/dist/ember.prod.map +0 -1
  22. data/dist/es/@ember/application/globals-resolver.js +0 -425
  23. data/dist/es/@ember/application/index.js +0 -3
  24. data/dist/es/@ember/application/instance.js +0 -513
  25. data/dist/es/@ember/application/lib/application.js +0 -1139
  26. data/dist/es/@ember/application/lib/lazy_load.js +0 -69
  27. data/dist/es/@ember/application/lib/validate-type.js +0 -24
  28. data/dist/es/@ember/application/tests/application_instance_test.js +0 -230
  29. data/dist/es/@ember/application/tests/application_test.js +0 -470
  30. data/dist/es/@ember/application/tests/bootstrap-test.js +0 -28
  31. data/dist/es/@ember/application/tests/dependency_injection/custom_resolver_test.js +0 -32
  32. data/dist/es/@ember/application/tests/dependency_injection/default_resolver_test.js +0 -363
  33. data/dist/es/@ember/application/tests/dependency_injection/normalization_test.js +0 -70
  34. data/dist/es/@ember/application/tests/dependency_injection/to_string_test.js +0 -71
  35. data/dist/es/@ember/application/tests/dependency_injection_test.js +0 -93
  36. data/dist/es/@ember/application/tests/initializers_test.js +0 -391
  37. data/dist/es/@ember/application/tests/instance_initializers_test.js +0 -395
  38. data/dist/es/@ember/application/tests/lazy_load_test.js +0 -79
  39. data/dist/es/@ember/application/tests/logging_test.js +0 -179
  40. data/dist/es/@ember/application/tests/readiness_test.js +0 -138
  41. data/dist/es/@ember/application/tests/reset_test.js +0 -185
  42. data/dist/es/@ember/application/tests/visit_test.js +0 -783
  43. data/dist/es/@ember/canary-features/index.js +0 -76
  44. data/dist/es/@ember/controller/index.js +0 -50
  45. data/dist/es/@ember/controller/lib/controller_mixin.js +0 -42
  46. data/dist/es/@ember/controller/tests/controller_test.js +0 -209
  47. data/dist/es/@ember/debug/index.js +0 -264
  48. data/dist/es/@ember/debug/lib/deprecate.js +0 -198
  49. data/dist/es/@ember/debug/lib/handlers.js +0 -22
  50. data/dist/es/@ember/debug/lib/testing.js +0 -7
  51. data/dist/es/@ember/debug/lib/warn.js +0 -107
  52. data/dist/es/@ember/debug/tests/handlers-test.js +0 -144
  53. data/dist/es/@ember/debug/tests/main_test.js +0 -444
  54. data/dist/es/@ember/deprecated-features/index.js +0 -21
  55. data/dist/es/@ember/engine/index.js +0 -532
  56. data/dist/es/@ember/engine/instance.js +0 -228
  57. data/dist/es/@ember/engine/lib/engine-parent.js +0 -32
  58. data/dist/es/@ember/engine/tests/engine_initializers_test.js +0 -366
  59. data/dist/es/@ember/engine/tests/engine_instance_initializers_test.js +0 -409
  60. data/dist/es/@ember/engine/tests/engine_instance_test.js +0 -115
  61. data/dist/es/@ember/engine/tests/engine_parent_test.js +0 -20
  62. data/dist/es/@ember/engine/tests/engine_test.js +0 -121
  63. data/dist/es/@ember/error/index.js +0 -36
  64. data/dist/es/@ember/error/tests/index_test.js +0 -19
  65. data/dist/es/@ember/instrumentation/index.js +0 -240
  66. data/dist/es/@ember/instrumentation/tests/index-test.js +0 -214
  67. data/dist/es/@ember/map/index.js +0 -218
  68. data/dist/es/@ember/map/lib/ordered-set.js +0 -186
  69. data/dist/es/@ember/map/lib/utils.js +0 -29
  70. data/dist/es/@ember/map/tests/map_test.js +0 -578
  71. data/dist/es/@ember/map/with-default.js +0 -87
  72. data/dist/es/@ember/object/computed.js +0 -35
  73. data/dist/es/@ember/object/lib/computed/computed_macros.js +0 -742
  74. data/dist/es/@ember/object/lib/computed/reduce_computed_macros.js +0 -894
  75. data/dist/es/@ember/object/tests/computed/computed_macros_test.js +0 -533
  76. data/dist/es/@ember/object/tests/computed/reduce_computed_macros_test.js +0 -2243
  77. data/dist/es/@ember/polyfills/index.js +0 -3
  78. data/dist/es/@ember/polyfills/lib/assign.js +0 -43
  79. data/dist/es/@ember/polyfills/lib/merge.js +0 -35
  80. data/dist/es/@ember/polyfills/tests/assign_test.js +0 -64
  81. data/dist/es/@ember/runloop/index.js +0 -749
  82. data/dist/es/@ember/runloop/tests/debounce_test.js +0 -87
  83. data/dist/es/@ember/runloop/tests/later_test.js +0 -264
  84. data/dist/es/@ember/runloop/tests/next_test.js +0 -56
  85. data/dist/es/@ember/runloop/tests/once_test.js +0 -62
  86. data/dist/es/@ember/runloop/tests/onerror_test.js +0 -59
  87. data/dist/es/@ember/runloop/tests/run_bind_test.js +0 -59
  88. data/dist/es/@ember/runloop/tests/run_test.js +0 -28
  89. data/dist/es/@ember/runloop/tests/schedule_test.js +0 -86
  90. data/dist/es/@ember/runloop/tests/sync_test.js +0 -32
  91. data/dist/es/@ember/runloop/tests/unwind_test.js +0 -54
  92. data/dist/es/@ember/service/index.js +0 -57
  93. data/dist/es/@ember/string/index.js +0 -362
  94. data/dist/es/@ember/string/lib/string_registry.js +0 -13
  95. data/dist/es/@ember/string/tests/camelize_test.js +0 -53
  96. data/dist/es/@ember/string/tests/capitalize_test.js +0 -58
  97. data/dist/es/@ember/string/tests/classify_test.js +0 -79
  98. data/dist/es/@ember/string/tests/dasherize_test.js +0 -57
  99. data/dist/es/@ember/string/tests/decamelize_test.js +0 -51
  100. data/dist/es/@ember/string/tests/loc_test.js +0 -76
  101. data/dist/es/@ember/string/tests/underscore_test.js +0 -51
  102. data/dist/es/@ember/string/tests/w_test.js +0 -39
  103. data/dist/es/@glimmer/compiler.js +0 -1226
  104. data/dist/es/@glimmer/encoder.js +0 -39
  105. data/dist/es/@glimmer/low-level.js +0 -82
  106. data/dist/es/@glimmer/node.js +0 -112
  107. data/dist/es/@glimmer/opcode-compiler.js +0 -1999
  108. data/dist/es/@glimmer/program.js +0 -405
  109. data/dist/es/@glimmer/reference.js +0 -478
  110. data/dist/es/@glimmer/runtime.js +0 -4086
  111. data/dist/es/@glimmer/syntax.js +0 -1424
  112. data/dist/es/@glimmer/util.js +0 -189
  113. data/dist/es/@glimmer/vm.js +0 -27
  114. data/dist/es/@glimmer/wire-format.js +0 -56
  115. data/dist/es/backburner.js +0 -936
  116. data/dist/es/container/index.js +0 -8
  117. data/dist/es/container/lib/container.js +0 -437
  118. data/dist/es/container/lib/registry.js +0 -646
  119. data/dist/es/container/tests/container_test.js +0 -872
  120. data/dist/es/container/tests/owner_test.js +0 -20
  121. data/dist/es/container/tests/registry_test.js +0 -943
  122. data/dist/es/dag-map.js +0 -209
  123. data/dist/es/ember-browser-environment/index.js +0 -8
  124. data/dist/es/ember-browser-environment/lib/has-dom.js +0 -19
  125. data/dist/es/ember-console/index.js +0 -177
  126. data/dist/es/ember-environment/index.js +0 -3
  127. data/dist/es/ember-environment/lib/context.js +0 -20
  128. data/dist/es/ember-environment/lib/env.js +0 -185
  129. data/dist/es/ember-environment/lib/global.js +0 -14
  130. data/dist/es/ember-error-handling/index.js +0 -22
  131. data/dist/es/ember-extension-support/index.js +0 -2
  132. data/dist/es/ember-extension-support/lib/container_debug_adapter.js +0 -99
  133. data/dist/es/ember-extension-support/lib/data_adapter.js +0 -493
  134. data/dist/es/ember-extension-support/tests/container_debug_adapter_test.js +0 -73
  135. data/dist/es/ember-extension-support/tests/data_adapter_test.js +0 -301
  136. data/dist/es/ember-glimmer/index.js +0 -286
  137. data/dist/es/ember-glimmer/lib/compile-time-lookup.js +0 -37
  138. data/dist/es/ember-glimmer/lib/component-managers/abstract.js +0 -49
  139. data/dist/es/ember-glimmer/lib/component-managers/curly.js +0 -395
  140. data/dist/es/ember-glimmer/lib/component-managers/custom.js +0 -145
  141. data/dist/es/ember-glimmer/lib/component-managers/definition-state.js +0 -1
  142. data/dist/es/ember-glimmer/lib/component-managers/mount.js +0 -103
  143. data/dist/es/ember-glimmer/lib/component-managers/outlet.js +0 -114
  144. data/dist/es/ember-glimmer/lib/component-managers/render.js +0 -112
  145. data/dist/es/ember-glimmer/lib/component-managers/root.js +0 -74
  146. data/dist/es/ember-glimmer/lib/component-managers/template-only.js +0 -46
  147. data/dist/es/ember-glimmer/lib/component.js +0 -633
  148. data/dist/es/ember-glimmer/lib/components/checkbox.js +0 -57
  149. data/dist/es/ember-glimmer/lib/components/link-to.js +0 -777
  150. data/dist/es/ember-glimmer/lib/components/text_area.js +0 -236
  151. data/dist/es/ember-glimmer/lib/components/text_field.js +0 -145
  152. data/dist/es/ember-glimmer/lib/dom.js +0 -3
  153. data/dist/es/ember-glimmer/lib/environment.js +0 -102
  154. data/dist/es/ember-glimmer/lib/helper.js +0 -128
  155. data/dist/es/ember-glimmer/lib/helpers/-class.js +0 -23
  156. data/dist/es/ember-glimmer/lib/helpers/-html-safe.js +0 -9
  157. data/dist/es/ember-glimmer/lib/helpers/-input-type.js +0 -11
  158. data/dist/es/ember-glimmer/lib/helpers/-normalize-class.js +0 -22
  159. data/dist/es/ember-glimmer/lib/helpers/action.js +0 -360
  160. data/dist/es/ember-glimmer/lib/helpers/component.js +0 -135
  161. data/dist/es/ember-glimmer/lib/helpers/concat.js +0 -38
  162. data/dist/es/ember-glimmer/lib/helpers/each-in.js +0 -126
  163. data/dist/es/ember-glimmer/lib/helpers/get.js +0 -100
  164. data/dist/es/ember-glimmer/lib/helpers/hash.js +0 -44
  165. data/dist/es/ember-glimmer/lib/helpers/if-unless.js +0 -142
  166. data/dist/es/ember-glimmer/lib/helpers/loc.js +0 -40
  167. data/dist/es/ember-glimmer/lib/helpers/log.js +0 -25
  168. data/dist/es/ember-glimmer/lib/helpers/mut.js +0 -107
  169. data/dist/es/ember-glimmer/lib/helpers/query-param.js +0 -31
  170. data/dist/es/ember-glimmer/lib/helpers/readonly.js +0 -104
  171. data/dist/es/ember-glimmer/lib/helpers/unbound.js +0 -36
  172. data/dist/es/ember-glimmer/lib/modifiers/action.js +0 -185
  173. data/dist/es/ember-glimmer/lib/protocol-for-url.js +0 -48
  174. data/dist/es/ember-glimmer/lib/renderer.js +0 -371
  175. data/dist/es/ember-glimmer/lib/resolver.js +0 -290
  176. data/dist/es/ember-glimmer/lib/setup-registry.js +0 -77
  177. data/dist/es/ember-glimmer/lib/syntax.js +0 -73
  178. data/dist/es/ember-glimmer/lib/syntax/-text-area.js +0 -8
  179. data/dist/es/ember-glimmer/lib/syntax/input.js +0 -173
  180. data/dist/es/ember-glimmer/lib/syntax/let.js +0 -50
  181. data/dist/es/ember-glimmer/lib/syntax/mount.js +0 -101
  182. data/dist/es/ember-glimmer/lib/syntax/outlet.js +0 -120
  183. data/dist/es/ember-glimmer/lib/syntax/render.js +0 -140
  184. data/dist/es/ember-glimmer/lib/syntax/utils.js +0 -6
  185. data/dist/es/ember-glimmer/lib/template-compiler.js +0 -7
  186. data/dist/es/ember-glimmer/lib/template.js +0 -16
  187. data/dist/es/ember-glimmer/lib/template_registry.js +0 -18
  188. data/dist/es/ember-glimmer/lib/templates/component.js +0 -2
  189. data/dist/es/ember-glimmer/lib/templates/empty.js +0 -2
  190. data/dist/es/ember-glimmer/lib/templates/link-to.js +0 -2
  191. data/dist/es/ember-glimmer/lib/templates/outlet.js +0 -2
  192. data/dist/es/ember-glimmer/lib/templates/root.js +0 -2
  193. data/dist/es/ember-glimmer/lib/utils/bindings.js +0 -180
  194. data/dist/es/ember-glimmer/lib/utils/curly-component-state-bucket.js +0 -36
  195. data/dist/es/ember-glimmer/lib/utils/custom-component-manager.js +0 -20
  196. data/dist/es/ember-glimmer/lib/utils/debug-stack.js +0 -57
  197. data/dist/es/ember-glimmer/lib/utils/iterable.js +0 -358
  198. data/dist/es/ember-glimmer/lib/utils/outlet.js +0 -89
  199. data/dist/es/ember-glimmer/lib/utils/process-args.js +0 -40
  200. data/dist/es/ember-glimmer/lib/utils/references.js +0 -325
  201. data/dist/es/ember-glimmer/lib/utils/serialization-first-node-helpers.js +0 -1
  202. data/dist/es/ember-glimmer/lib/utils/string.js +0 -98
  203. data/dist/es/ember-glimmer/lib/utils/to-bool.js +0 -9
  204. data/dist/es/ember-glimmer/lib/views/outlet.js +0 -71
  205. data/dist/es/ember-glimmer/tests/integration/application/actions-test.js +0 -107
  206. data/dist/es/ember-glimmer/tests/integration/application/engine-test.js +0 -912
  207. data/dist/es/ember-glimmer/tests/integration/application/rendering-test.js +0 -530
  208. data/dist/es/ember-glimmer/tests/integration/components/angle-bracket-invocation-test.js +0 -852
  209. data/dist/es/ember-glimmer/tests/integration/components/append-test.js +0 -742
  210. data/dist/es/ember-glimmer/tests/integration/components/attribute-bindings-test.js +0 -999
  211. data/dist/es/ember-glimmer/tests/integration/components/attrs-lookup-test.js +0 -268
  212. data/dist/es/ember-glimmer/tests/integration/components/class-bindings-test.js +0 -849
  213. data/dist/es/ember-glimmer/tests/integration/components/contextual-components-test.js +0 -1493
  214. data/dist/es/ember-glimmer/tests/integration/components/curly-components-test.js +0 -3705
  215. data/dist/es/ember-glimmer/tests/integration/components/destroy-test.js +0 -33
  216. data/dist/es/ember-glimmer/tests/integration/components/dynamic-components-test.js +0 -896
  217. data/dist/es/ember-glimmer/tests/integration/components/error-handling-test.js +0 -164
  218. data/dist/es/ember-glimmer/tests/integration/components/fragment-components-test.js +0 -285
  219. data/dist/es/ember-glimmer/tests/integration/components/instrumentation-compile-test.js +0 -108
  220. data/dist/es/ember-glimmer/tests/integration/components/instrumentation-test.js +0 -157
  221. data/dist/es/ember-glimmer/tests/integration/components/life-cycle-test.js +0 -1653
  222. data/dist/es/ember-glimmer/tests/integration/components/link-to-test.js +0 -218
  223. data/dist/es/ember-glimmer/tests/integration/components/local-lookup-test.js +0 -414
  224. data/dist/es/ember-glimmer/tests/integration/components/namespaced-lookup-test.js +0 -185
  225. data/dist/es/ember-glimmer/tests/integration/components/render-to-element-test.js +0 -0
  226. data/dist/es/ember-glimmer/tests/integration/components/target-action-test.js +0 -779
  227. data/dist/es/ember-glimmer/tests/integration/components/template-only-components-test.js +0 -225
  228. data/dist/es/ember-glimmer/tests/integration/components/to-string-test.js +0 -27
  229. data/dist/es/ember-glimmer/tests/integration/components/utils-test.js +0 -401
  230. data/dist/es/ember-glimmer/tests/integration/components/web-component-fallback-test.js +0 -35
  231. data/dist/es/ember-glimmer/tests/integration/components/will-destroy-element-hook-test.js +0 -40
  232. data/dist/es/ember-glimmer/tests/integration/content-test.js +0 -1759
  233. data/dist/es/ember-glimmer/tests/integration/custom-component-manager-test.js +0 -508
  234. data/dist/es/ember-glimmer/tests/integration/event-dispatcher-test.js +0 -607
  235. data/dist/es/ember-glimmer/tests/integration/helpers/-class-test.js +0 -76
  236. data/dist/es/ember-glimmer/tests/integration/helpers/closure-action-test.js +0 -1240
  237. data/dist/es/ember-glimmer/tests/integration/helpers/concat-test.js +0 -106
  238. data/dist/es/ember-glimmer/tests/integration/helpers/custom-helper-test.js +0 -672
  239. data/dist/es/ember-glimmer/tests/integration/helpers/element-action-test.js +0 -1595
  240. data/dist/es/ember-glimmer/tests/integration/helpers/get-test.js +0 -618
  241. data/dist/es/ember-glimmer/tests/integration/helpers/hash-test.js +0 -188
  242. data/dist/es/ember-glimmer/tests/integration/helpers/if-unless-test.js +0 -149
  243. data/dist/es/ember-glimmer/tests/integration/helpers/input-test.js +0 -827
  244. data/dist/es/ember-glimmer/tests/integration/helpers/loc-test.js +0 -103
  245. data/dist/es/ember-glimmer/tests/integration/helpers/log-test.js +0 -61
  246. data/dist/es/ember-glimmer/tests/integration/helpers/mut-test.js +0 -580
  247. data/dist/es/ember-glimmer/tests/integration/helpers/partial-test.js +0 -386
  248. data/dist/es/ember-glimmer/tests/integration/helpers/readonly-test.js +0 -293
  249. data/dist/es/ember-glimmer/tests/integration/helpers/render-test.js +0 -522
  250. data/dist/es/ember-glimmer/tests/integration/helpers/text-area-test.js +0 -166
  251. data/dist/es/ember-glimmer/tests/integration/helpers/unbound-test.js +0 -650
  252. data/dist/es/ember-glimmer/tests/integration/helpers/yield-test.js +0 -275
  253. data/dist/es/ember-glimmer/tests/integration/input-test.js +0 -242
  254. data/dist/es/ember-glimmer/tests/integration/mount-test.js +0 -424
  255. data/dist/es/ember-glimmer/tests/integration/outlet-test.js +0 -318
  256. data/dist/es/ember-glimmer/tests/integration/refinements-test.js +0 -74
  257. data/dist/es/ember-glimmer/tests/integration/render-settled-test.js +0 -72
  258. data/dist/es/ember-glimmer/tests/integration/svg-test.js +0 -158
  259. data/dist/es/ember-glimmer/tests/integration/syntax/each-in-test.js +0 -697
  260. data/dist/es/ember-glimmer/tests/integration/syntax/each-test.js +0 -1251
  261. data/dist/es/ember-glimmer/tests/integration/syntax/experimental-syntax-test.js +0 -42
  262. data/dist/es/ember-glimmer/tests/integration/syntax/if-unless-test.js +0 -108
  263. data/dist/es/ember-glimmer/tests/integration/syntax/in-element-test.js +0 -119
  264. data/dist/es/ember-glimmer/tests/integration/syntax/let-test.js +0 -390
  265. data/dist/es/ember-glimmer/tests/integration/syntax/with-dynamic-var-test.js +0 -36
  266. data/dist/es/ember-glimmer/tests/integration/syntax/with-test.js +0 -422
  267. data/dist/es/ember-glimmer/tests/unit/outlet-test.js +0 -48
  268. data/dist/es/ember-glimmer/tests/unit/runtime-resolver-cache-test.js +0 -263
  269. data/dist/es/ember-glimmer/tests/unit/template-factory-test.js +0 -67
  270. data/dist/es/ember-glimmer/tests/unit/utils/debug-stack-test.js +0 -38
  271. data/dist/es/ember-glimmer/tests/utils/abstract-test-case.js +0 -1
  272. data/dist/es/ember-glimmer/tests/utils/helpers.js +0 -15
  273. data/dist/es/ember-glimmer/tests/utils/shared-conditional-tests.js +0 -965
  274. data/dist/es/ember-glimmer/tests/utils/string-test.js +0 -47
  275. data/dist/es/ember-glimmer/tests/utils/test-case.js +0 -6
  276. data/dist/es/ember-glimmer/tests/utils/test-helpers.js +0 -1
  277. data/dist/es/ember-meta/index.js +0 -1
  278. data/dist/es/ember-meta/lib/meta.js +0 -623
  279. data/dist/es/ember-meta/tests/meta_test.js +0 -169
  280. data/dist/es/ember-metal/index.js +0 -33
  281. data/dist/es/ember-metal/lib/alias.js +0 -80
  282. data/dist/es/ember-metal/lib/array.js +0 -55
  283. data/dist/es/ember-metal/lib/array_events.js +0 -65
  284. data/dist/es/ember-metal/lib/chains.js +0 -315
  285. data/dist/es/ember-metal/lib/change_event.js +0 -4
  286. data/dist/es/ember-metal/lib/computed.js +0 -526
  287. data/dist/es/ember-metal/lib/computed_cache.js +0 -58
  288. data/dist/es/ember-metal/lib/dependent_keys.js +0 -34
  289. data/dist/es/ember-metal/lib/deprecate_property.js +0 -34
  290. data/dist/es/ember-metal/lib/descriptor.js +0 -28
  291. data/dist/es/ember-metal/lib/each_proxy.js +0 -106
  292. data/dist/es/ember-metal/lib/each_proxy_events.js +0 -13
  293. data/dist/es/ember-metal/lib/events.js +0 -174
  294. data/dist/es/ember-metal/lib/expand_properties.js +0 -64
  295. data/dist/es/ember-metal/lib/get_properties.js +0 -45
  296. data/dist/es/ember-metal/lib/injected_property.js +0 -53
  297. data/dist/es/ember-metal/lib/is_blank.js +0 -34
  298. data/dist/es/ember-metal/lib/is_empty.js +0 -63
  299. data/dist/es/ember-metal/lib/is_none.js +0 -27
  300. data/dist/es/ember-metal/lib/is_present.js +0 -38
  301. data/dist/es/ember-metal/lib/libraries.js +0 -80
  302. data/dist/es/ember-metal/lib/mixin.js +0 -646
  303. data/dist/es/ember-metal/lib/namespace_search.js +0 -166
  304. data/dist/es/ember-metal/lib/observer.js +0 -34
  305. data/dist/es/ember-metal/lib/observer_set.js +0 -48
  306. data/dist/es/ember-metal/lib/path_cache.js +0 -5
  307. data/dist/es/ember-metal/lib/properties.js +0 -192
  308. data/dist/es/ember-metal/lib/property_events.js +0 -198
  309. data/dist/es/ember-metal/lib/property_get.js +0 -160
  310. data/dist/es/ember-metal/lib/property_set.js +0 -157
  311. data/dist/es/ember-metal/lib/set_properties.js +0 -43
  312. data/dist/es/ember-metal/lib/tags.js +0 -81
  313. data/dist/es/ember-metal/lib/tracked.js +0 -201
  314. data/dist/es/ember-metal/lib/transaction.js +0 -137
  315. data/dist/es/ember-metal/lib/watch_key.js +0 -113
  316. data/dist/es/ember-metal/lib/watch_path.js +0 -24
  317. data/dist/es/ember-metal/lib/watching.js +0 -54
  318. data/dist/es/ember-metal/tests/accessors/get_path_test.js +0 -82
  319. data/dist/es/ember-metal/tests/accessors/get_properties_test.js +0 -36
  320. data/dist/es/ember-metal/tests/accessors/get_test.js +0 -335
  321. data/dist/es/ember-metal/tests/accessors/mandatory_setters_test.js +0 -470
  322. data/dist/es/ember-metal/tests/accessors/set_path_test.js +0 -97
  323. data/dist/es/ember-metal/tests/accessors/set_test.js +0 -128
  324. data/dist/es/ember-metal/tests/alias_test.js +0 -167
  325. data/dist/es/ember-metal/tests/chains_test.js +0 -210
  326. data/dist/es/ember-metal/tests/computed_test.js +0 -1040
  327. data/dist/es/ember-metal/tests/descriptor_test.js +0 -368
  328. data/dist/es/ember-metal/tests/events_test.js +0 -210
  329. data/dist/es/ember-metal/tests/expand_properties_test.js +0 -119
  330. data/dist/es/ember-metal/tests/injected_property_test.js +0 -76
  331. data/dist/es/ember-metal/tests/is_blank_test.js +0 -29
  332. data/dist/es/ember-metal/tests/is_empty_test.js +0 -55
  333. data/dist/es/ember-metal/tests/is_none_test.js +0 -23
  334. data/dist/es/ember-metal/tests/is_present_test.js +0 -30
  335. data/dist/es/ember-metal/tests/libraries_test.js +0 -99
  336. data/dist/es/ember-metal/tests/main_test.js +0 -31
  337. data/dist/es/ember-metal/tests/mixin/alias_method_test.js +0 -91
  338. data/dist/es/ember-metal/tests/mixin/apply_test.js +0 -40
  339. data/dist/es/ember-metal/tests/mixin/computed_test.js +0 -166
  340. data/dist/es/ember-metal/tests/mixin/concatenated_properties_test.js +0 -117
  341. data/dist/es/ember-metal/tests/mixin/detect_test.js +0 -40
  342. data/dist/es/ember-metal/tests/mixin/introspection_test.js +0 -75
  343. data/dist/es/ember-metal/tests/mixin/merged_properties_test.js +0 -200
  344. data/dist/es/ember-metal/tests/mixin/method_test.js +0 -252
  345. data/dist/es/ember-metal/tests/mixin/observer_test.js +0 -202
  346. data/dist/es/ember-metal/tests/mixin/reopen_test.js +0 -53
  347. data/dist/es/ember-metal/tests/mixin/without_test.js +0 -22
  348. data/dist/es/ember-metal/tests/namespace_search_test.js +0 -16
  349. data/dist/es/ember-metal/tests/observer_test.js +0 -961
  350. data/dist/es/ember-metal/tests/performance_test.js +0 -81
  351. data/dist/es/ember-metal/tests/properties_test.js +0 -120
  352. data/dist/es/ember-metal/tests/property_did_change_hook.js +0 -73
  353. data/dist/es/ember-metal/tests/set_properties_test.js +0 -49
  354. data/dist/es/ember-metal/tests/tracked/computed_test.js +0 -67
  355. data/dist/es/ember-metal/tests/tracked/get_test.js +0 -86
  356. data/dist/es/ember-metal/tests/tracked/set_test.js +0 -44
  357. data/dist/es/ember-metal/tests/tracked/support.js +0 -37
  358. data/dist/es/ember-metal/tests/tracked/validation_test.js +0 -233
  359. data/dist/es/ember-metal/tests/watching/is_watching_test.js +0 -97
  360. data/dist/es/ember-metal/tests/watching/unwatch_test.js +0 -109
  361. data/dist/es/ember-metal/tests/watching/watch_test.js +0 -255
  362. data/dist/es/ember-owner/index.js +0 -66
  363. data/dist/es/ember-routing/index.js +0 -21
  364. data/dist/es/ember-routing/lib/ext/controller.js +0 -222
  365. data/dist/es/ember-routing/lib/location/api.js +0 -118
  366. data/dist/es/ember-routing/lib/location/auto_location.js +0 -323
  367. data/dist/es/ember-routing/lib/location/hash_location.js +0 -171
  368. data/dist/es/ember-routing/lib/location/history_location.js +0 -298
  369. data/dist/es/ember-routing/lib/location/none_location.js +0 -122
  370. data/dist/es/ember-routing/lib/location/util.js +0 -114
  371. data/dist/es/ember-routing/lib/services/router.js +0 -243
  372. data/dist/es/ember-routing/lib/services/routing.js +0 -101
  373. data/dist/es/ember-routing/lib/system/cache.js +0 -40
  374. data/dist/es/ember-routing/lib/system/controller_for.js +0 -14
  375. data/dist/es/ember-routing/lib/system/dsl.js +0 -208
  376. data/dist/es/ember-routing/lib/system/generate_controller.js +0 -54
  377. data/dist/es/ember-routing/lib/system/query_params.js +0 -6
  378. data/dist/es/ember-routing/lib/system/route.js +0 -2476
  379. data/dist/es/ember-routing/lib/system/router.js +0 -1607
  380. data/dist/es/ember-routing/lib/system/router_state.js +0 -26
  381. data/dist/es/ember-routing/lib/system/transition.js +0 -153
  382. data/dist/es/ember-routing/lib/utils.js +0 -230
  383. data/dist/es/ember-routing/tests/ext/controller_test.js +0 -85
  384. data/dist/es/ember-routing/tests/location/auto_location_test.js +0 -379
  385. data/dist/es/ember-routing/tests/location/hash_location_test.js +0 -207
  386. data/dist/es/ember-routing/tests/location/history_location_test.js +0 -322
  387. data/dist/es/ember-routing/tests/location/none_location_test.js +0 -88
  388. data/dist/es/ember-routing/tests/location/util_test.js +0 -159
  389. data/dist/es/ember-routing/tests/system/cache_test.js +0 -54
  390. data/dist/es/ember-routing/tests/system/controller_for_test.js +0 -75
  391. data/dist/es/ember-routing/tests/system/dsl_test.js +0 -413
  392. data/dist/es/ember-routing/tests/system/route_test.js +0 -587
  393. data/dist/es/ember-routing/tests/system/router_test.js +0 -287
  394. data/dist/es/ember-routing/tests/utils_test.js +0 -37
  395. data/dist/es/ember-runtime/.gitignore +0 -1
  396. data/dist/es/ember-runtime/README +0 -12
  397. data/dist/es/ember-runtime/index.js +0 -35
  398. data/dist/es/ember-runtime/lib/compare.js +0 -149
  399. data/dist/es/ember-runtime/lib/copy.js +0 -106
  400. data/dist/es/ember-runtime/lib/ext/function.js +0 -154
  401. data/dist/es/ember-runtime/lib/ext/rsvp.js +0 -59
  402. data/dist/es/ember-runtime/lib/is-equal.js +0 -60
  403. data/dist/es/ember-runtime/lib/mixins/-proxy.js +0 -109
  404. data/dist/es/ember-runtime/lib/mixins/action_handler.js +0 -222
  405. data/dist/es/ember-runtime/lib/mixins/array.js +0 -1661
  406. data/dist/es/ember-runtime/lib/mixins/comparable.js +0 -38
  407. data/dist/es/ember-runtime/lib/mixins/container_proxy.js +0 -154
  408. data/dist/es/ember-runtime/lib/mixins/copyable.js +0 -34
  409. data/dist/es/ember-runtime/lib/mixins/enumerable.js +0 -16
  410. data/dist/es/ember-runtime/lib/mixins/evented.js +0 -149
  411. data/dist/es/ember-runtime/lib/mixins/mutable_enumerable.js +0 -18
  412. data/dist/es/ember-runtime/lib/mixins/observable.js +0 -482
  413. data/dist/es/ember-runtime/lib/mixins/promise_proxy.js +0 -224
  414. data/dist/es/ember-runtime/lib/mixins/registry_proxy.js +0 -265
  415. data/dist/es/ember-runtime/lib/mixins/target_action_support.js +0 -172
  416. data/dist/es/ember-runtime/lib/system/array_proxy.js +0 -298
  417. data/dist/es/ember-runtime/lib/system/core_object.js +0 -1037
  418. data/dist/es/ember-runtime/lib/system/namespace.js +0 -69
  419. data/dist/es/ember-runtime/lib/system/object.js +0 -73
  420. data/dist/es/ember-runtime/lib/system/object_proxy.js +0 -81
  421. data/dist/es/ember-runtime/lib/type-of.js +0 -107
  422. data/dist/es/ember-runtime/tests/array/any-test.js +0 -55
  423. data/dist/es/ember-runtime/tests/array/compact-test.js +0 -12
  424. data/dist/es/ember-runtime/tests/array/every-test.js +0 -82
  425. data/dist/es/ember-runtime/tests/array/filter-test.js +0 -123
  426. data/dist/es/ember-runtime/tests/array/find-test.js +0 -86
  427. data/dist/es/ember-runtime/tests/array/firstObject-test.js +0 -27
  428. data/dist/es/ember-runtime/tests/array/forEach-test.js +0 -68
  429. data/dist/es/ember-runtime/tests/array/includes-test.js +0 -46
  430. data/dist/es/ember-runtime/tests/array/indexOf-test.js +0 -27
  431. data/dist/es/ember-runtime/tests/array/invoke-test.js +0 -60
  432. data/dist/es/ember-runtime/tests/array/isAny-test.js +0 -53
  433. data/dist/es/ember-runtime/tests/array/lastIndexOf-test.js +0 -78
  434. data/dist/es/ember-runtime/tests/array/lastObject-test.js +0 -31
  435. data/dist/es/ember-runtime/tests/array/map-test.js +0 -68
  436. data/dist/es/ember-runtime/tests/array/mapBy-test.js +0 -16
  437. data/dist/es/ember-runtime/tests/array/objectAt-test.js +0 -34
  438. data/dist/es/ember-runtime/tests/array/reduce-test.js +0 -24
  439. data/dist/es/ember-runtime/tests/array/reject-test.js +0 -134
  440. data/dist/es/ember-runtime/tests/array/sortBy-test.js +0 -23
  441. data/dist/es/ember-runtime/tests/array/toArray-test.js +0 -11
  442. data/dist/es/ember-runtime/tests/array/uniq-test.js +0 -27
  443. data/dist/es/ember-runtime/tests/array/uniqBy-test.js +0 -33
  444. data/dist/es/ember-runtime/tests/array/without-test.js +0 -39
  445. data/dist/es/ember-runtime/tests/copyable-array/copy-test.js +0 -12
  446. data/dist/es/ember-runtime/tests/core/compare_test.js +0 -89
  447. data/dist/es/ember-runtime/tests/core/copy_test.js +0 -47
  448. data/dist/es/ember-runtime/tests/core/isEqual_test.js +0 -65
  449. data/dist/es/ember-runtime/tests/core/is_array_test.js +0 -59
  450. data/dist/es/ember-runtime/tests/core/is_empty_test.js +0 -15
  451. data/dist/es/ember-runtime/tests/core/type_of_test.js +0 -54
  452. data/dist/es/ember-runtime/tests/ext/function_test.js +0 -121
  453. data/dist/es/ember-runtime/tests/ext/rsvp_test.js +0 -269
  454. data/dist/es/ember-runtime/tests/helpers/array.js +0 -336
  455. data/dist/es/ember-runtime/tests/inject_test.js +0 -51
  456. data/dist/es/ember-runtime/tests/legacy_1x/mixins/observable/chained_test.js +0 -63
  457. data/dist/es/ember-runtime/tests/legacy_1x/mixins/observable/observable_test.js +0 -892
  458. data/dist/es/ember-runtime/tests/legacy_1x/mixins/observable/propertyChanges_test.js +0 -142
  459. data/dist/es/ember-runtime/tests/legacy_1x/system/object/base_test.js +0 -98
  460. data/dist/es/ember-runtime/tests/legacy_1x/system/object/concatenated_test.js +0 -131
  461. data/dist/es/ember-runtime/tests/mixins/array_test.js +0 -400
  462. data/dist/es/ember-runtime/tests/mixins/comparable_test.js +0 -37
  463. data/dist/es/ember-runtime/tests/mixins/container_proxy_test.js +0 -48
  464. data/dist/es/ember-runtime/tests/mixins/enumerable_test.js +0 -17
  465. data/dist/es/ember-runtime/tests/mixins/evented_test.js +0 -23
  466. data/dist/es/ember-runtime/tests/mixins/mutable_enumerable_test.js +0 -17
  467. data/dist/es/ember-runtime/tests/mixins/observable_test.js +0 -137
  468. data/dist/es/ember-runtime/tests/mixins/promise_proxy_test.js +0 -593
  469. data/dist/es/ember-runtime/tests/mixins/target_action_support_test.js +0 -237
  470. data/dist/es/ember-runtime/tests/mutable-array/addObject-test.js +0 -76
  471. data/dist/es/ember-runtime/tests/mutable-array/clear-test.js +0 -64
  472. data/dist/es/ember-runtime/tests/mutable-array/insertAt-test.js +0 -216
  473. data/dist/es/ember-runtime/tests/mutable-array/popObject-test.js +0 -91
  474. data/dist/es/ember-runtime/tests/mutable-array/pushObject-test.js +0 -98
  475. data/dist/es/ember-runtime/tests/mutable-array/pushObjects-test.js +0 -12
  476. data/dist/es/ember-runtime/tests/mutable-array/removeAt-test.js +0 -187
  477. data/dist/es/ember-runtime/tests/mutable-array/removeObject-test.js +0 -77
  478. data/dist/es/ember-runtime/tests/mutable-array/removeObjects-test.js +0 -202
  479. data/dist/es/ember-runtime/tests/mutable-array/replace-test.js +0 -221
  480. data/dist/es/ember-runtime/tests/mutable-array/reverseObjects-test.js +0 -35
  481. data/dist/es/ember-runtime/tests/mutable-array/setObjects-test.js +0 -63
  482. data/dist/es/ember-runtime/tests/mutable-array/shiftObject-test.js +0 -105
  483. data/dist/es/ember-runtime/tests/mutable-array/unshiftObject-test.js +0 -99
  484. data/dist/es/ember-runtime/tests/mutable-array/unshiftObjects-test.js +0 -102
  485. data/dist/es/ember-runtime/tests/system/array_proxy/arranged_content_test.js +0 -275
  486. data/dist/es/ember-runtime/tests/system/array_proxy/array_observer_test.js +0 -51
  487. data/dist/es/ember-runtime/tests/system/array_proxy/content_change_test.js +0 -85
  488. data/dist/es/ember-runtime/tests/system/array_proxy/length_test.js +0 -201
  489. data/dist/es/ember-runtime/tests/system/array_proxy/watching_and_listening_test.js +0 -157
  490. data/dist/es/ember-runtime/tests/system/core_object_test.js +0 -114
  491. data/dist/es/ember-runtime/tests/system/namespace/base_test.js +0 -175
  492. data/dist/es/ember-runtime/tests/system/native_array/a_test.js +0 -16
  493. data/dist/es/ember-runtime/tests/system/native_array/copyable_suite_test.js +0 -19
  494. data/dist/es/ember-runtime/tests/system/native_array/replace_test.js +0 -17
  495. data/dist/es/ember-runtime/tests/system/object/computed_test.js +0 -352
  496. data/dist/es/ember-runtime/tests/system/object/create_test.js +0 -135
  497. data/dist/es/ember-runtime/tests/system/object/destroy_test.js +0 -146
  498. data/dist/es/ember-runtime/tests/system/object/detectInstance_test.js +0 -38
  499. data/dist/es/ember-runtime/tests/system/object/detect_test.js +0 -33
  500. data/dist/es/ember-runtime/tests/system/object/es-compatibility-test.js +0 -469
  501. data/dist/es/ember-runtime/tests/system/object/events_test.js +0 -156
  502. data/dist/es/ember-runtime/tests/system/object/extend_test.js +0 -153
  503. data/dist/es/ember-runtime/tests/system/object/observer_test.js +0 -216
  504. data/dist/es/ember-runtime/tests/system/object/reopenClass_test.js +0 -36
  505. data/dist/es/ember-runtime/tests/system/object/reopen_test.js +0 -48
  506. data/dist/es/ember-runtime/tests/system/object/strict-mode-test.js +0 -31
  507. data/dist/es/ember-runtime/tests/system/object/toString_test.js +0 -125
  508. data/dist/es/ember-runtime/tests/system/object_proxy_test.js +0 -314
  509. data/dist/es/ember-template-compiler/index.js +0 -26
  510. data/dist/es/ember-template-compiler/lib/compat.js +0 -16
  511. data/dist/es/ember-template-compiler/lib/plugins/assert-if-helper-without-arguments.js +0 -38
  512. data/dist/es/ember-template-compiler/lib/plugins/assert-input-helper-without-block.js +0 -20
  513. data/dist/es/ember-template-compiler/lib/plugins/assert-reserved-named-arguments.js +0 -26
  514. data/dist/es/ember-template-compiler/lib/plugins/assert-splattribute-expression.js +0 -27
  515. data/dist/es/ember-template-compiler/lib/plugins/deprecate-render-model.js +0 -38
  516. data/dist/es/ember-template-compiler/lib/plugins/deprecate-render.js +0 -41
  517. data/dist/es/ember-template-compiler/lib/plugins/deprecate-send-action.js +0 -42
  518. data/dist/es/ember-template-compiler/lib/plugins/index.js +0 -50
  519. data/dist/es/ember-template-compiler/lib/plugins/transform-action-syntax.js +0 -52
  520. data/dist/es/ember-template-compiler/lib/plugins/transform-angle-bracket-components.js +0 -10
  521. data/dist/es/ember-template-compiler/lib/plugins/transform-attrs-into-args.js +0 -62
  522. data/dist/es/ember-template-compiler/lib/plugins/transform-dot-component-invocation.js +0 -88
  523. data/dist/es/ember-template-compiler/lib/plugins/transform-each-in-into-each.js +0 -48
  524. data/dist/es/ember-template-compiler/lib/plugins/transform-has-block-syntax.js +0 -46
  525. data/dist/es/ember-template-compiler/lib/plugins/transform-in-element.js +0 -83
  526. data/dist/es/ember-template-compiler/lib/plugins/transform-inline-link-to.js +0 -31
  527. data/dist/es/ember-template-compiler/lib/plugins/transform-input-type-syntax.js +0 -52
  528. data/dist/es/ember-template-compiler/lib/plugins/transform-old-binding-syntax.js +0 -48
  529. data/dist/es/ember-template-compiler/lib/plugins/transform-old-class-binding-syntax.js +0 -102
  530. data/dist/es/ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +0 -34
  531. data/dist/es/ember-template-compiler/lib/plugins/transform-top-level-components.js +0 -41
  532. data/dist/es/ember-template-compiler/lib/system/bootstrap.js +0 -44
  533. data/dist/es/ember-template-compiler/lib/system/calculate-location-display.js +0 -20
  534. data/dist/es/ember-template-compiler/lib/system/compile-options.js +0 -71
  535. data/dist/es/ember-template-compiler/lib/system/compile.js +0 -28
  536. data/dist/es/ember-template-compiler/lib/system/dasherize-component-name.js +0 -13
  537. data/dist/es/ember-template-compiler/lib/system/initializer.js +0 -22
  538. data/dist/es/ember-template-compiler/lib/system/precompile.js +0 -18
  539. data/dist/es/ember-template-compiler/tests/plugins/assert-if-helper-without-arguments-test.js +0 -51
  540. data/dist/es/ember-template-compiler/tests/plugins/assert-input-helper-without-block-test.js +0 -17
  541. data/dist/es/ember-template-compiler/tests/plugins/assert-reserved-named-arguments-test.js +0 -416
  542. data/dist/es/ember-template-compiler/tests/plugins/assert-splattribute-expression-test.js +0 -57
  543. data/dist/es/ember-template-compiler/tests/plugins/deprecate-render-model-test.js +0 -19
  544. data/dist/es/ember-template-compiler/tests/plugins/deprecate-render-test.js +0 -19
  545. data/dist/es/ember-template-compiler/tests/plugins/deprecate-send-action-test.js +0 -29
  546. data/dist/es/ember-template-compiler/tests/plugins/transform-dot-component-invocation-test.js +0 -27
  547. data/dist/es/ember-template-compiler/tests/plugins/transform-inline-link-to-test.js +0 -15
  548. data/dist/es/ember-template-compiler/tests/plugins/transform-input-type-syntax-test.js +0 -25
  549. data/dist/es/ember-template-compiler/tests/system/bootstrap-test.js +0 -155
  550. data/dist/es/ember-template-compiler/tests/system/compile_options_test.js +0 -115
  551. data/dist/es/ember-template-compiler/tests/system/dasherize-component-name-test.js +0 -19
  552. data/dist/es/ember-testing/index.js +0 -10
  553. data/dist/es/ember-testing/lib/adapters/adapter.js +0 -58
  554. data/dist/es/ember-testing/lib/adapters/qunit.js +0 -47
  555. data/dist/es/ember-testing/lib/events.js +0 -136
  556. data/dist/es/ember-testing/lib/ext/application.js +0 -191
  557. data/dist/es/ember-testing/lib/ext/rsvp.js +0 -19
  558. data/dist/es/ember-testing/lib/helpers.js +0 -30
  559. data/dist/es/ember-testing/lib/helpers/-is-form-control.js +0 -16
  560. data/dist/es/ember-testing/lib/helpers/and_then.js +0 -3
  561. data/dist/es/ember-testing/lib/helpers/click.js +0 -36
  562. data/dist/es/ember-testing/lib/helpers/current_path.js +0 -27
  563. data/dist/es/ember-testing/lib/helpers/current_route_name.js +0 -25
  564. data/dist/es/ember-testing/lib/helpers/current_url.js +0 -27
  565. data/dist/es/ember-testing/lib/helpers/fill_in.js +0 -46
  566. data/dist/es/ember-testing/lib/helpers/find.js +0 -41
  567. data/dist/es/ember-testing/lib/helpers/find_with_assert.js +0 -34
  568. data/dist/es/ember-testing/lib/helpers/key_event.js +0 -36
  569. data/dist/es/ember-testing/lib/helpers/pause_test.js +0 -65
  570. data/dist/es/ember-testing/lib/helpers/trigger_event.js +0 -62
  571. data/dist/es/ember-testing/lib/helpers/visit.js +0 -42
  572. data/dist/es/ember-testing/lib/helpers/wait.js +0 -72
  573. data/dist/es/ember-testing/lib/initializers.js +0 -17
  574. data/dist/es/ember-testing/lib/setup_for_testing.js +0 -44
  575. data/dist/es/ember-testing/lib/support.js +0 -62
  576. data/dist/es/ember-testing/lib/test.js +0 -70
  577. data/dist/es/ember-testing/lib/test/adapter.js +0 -33
  578. data/dist/es/ember-testing/lib/test/helpers.js +0 -125
  579. data/dist/es/ember-testing/lib/test/on_inject_helpers.js +0 -38
  580. data/dist/es/ember-testing/lib/test/pending_requests.js +0 -24
  581. data/dist/es/ember-testing/lib/test/promise.js +0 -79
  582. data/dist/es/ember-testing/lib/test/run.js +0 -9
  583. data/dist/es/ember-testing/lib/test/waiters.js +0 -117
  584. data/dist/es/ember-testing/tests/acceptance_test.js +0 -478
  585. data/dist/es/ember-testing/tests/adapters/adapter_test.js +0 -31
  586. data/dist/es/ember-testing/tests/adapters/qunit_test.js +0 -50
  587. data/dist/es/ember-testing/tests/adapters_test.js +0 -405
  588. data/dist/es/ember-testing/tests/ext/rsvp_test.js +0 -124
  589. data/dist/es/ember-testing/tests/helper_registration_test.js +0 -98
  590. data/dist/es/ember-testing/tests/helpers_test.js +0 -1228
  591. data/dist/es/ember-testing/tests/integration_test.js +0 -106
  592. data/dist/es/ember-testing/tests/reexports_test.js +0 -26
  593. data/dist/es/ember-testing/tests/test/waiters-test.js +0 -145
  594. data/dist/es/ember-utils/index.js +0 -28
  595. data/dist/es/ember-utils/lib/cache.js +0 -36
  596. data/dist/es/ember-utils/lib/dictionary.js +0 -11
  597. data/dist/es/ember-utils/lib/guid.js +0 -120
  598. data/dist/es/ember-utils/lib/inspect.js +0 -112
  599. data/dist/es/ember-utils/lib/intern.js +0 -49
  600. data/dist/es/ember-utils/lib/invoke.js +0 -53
  601. data/dist/es/ember-utils/lib/is_proxy.js +0 -14
  602. data/dist/es/ember-utils/lib/lookup-descriptor.js +0 -11
  603. data/dist/es/ember-utils/lib/make-array.js +0 -7
  604. data/dist/es/ember-utils/lib/name.js +0 -9
  605. data/dist/es/ember-utils/lib/proxy-utils.js +0 -1
  606. data/dist/es/ember-utils/lib/spec.js +0 -14
  607. data/dist/es/ember-utils/lib/super.js +0 -83
  608. data/dist/es/ember-utils/lib/symbol-utils.js +0 -8
  609. data/dist/es/ember-utils/lib/symbol.js +0 -15
  610. data/dist/es/ember-utils/lib/to-string.js +0 -35
  611. data/dist/es/ember-utils/lib/weak_set.js +0 -18
  612. data/dist/es/ember-utils/tests/cache_test.js +0 -77
  613. data/dist/es/ember-utils/tests/can_invoke_test.js +0 -46
  614. data/dist/es/ember-utils/tests/checkHasSuper_test.js +0 -17
  615. data/dist/es/ember-utils/tests/generate_guid_test.js +0 -13
  616. data/dist/es/ember-utils/tests/guid_for_test.js +0 -101
  617. data/dist/es/ember-utils/tests/inspect_test.js +0 -146
  618. data/dist/es/ember-utils/tests/is_proxy_test.js +0 -18
  619. data/dist/es/ember-utils/tests/make_array_test.js +0 -41
  620. data/dist/es/ember-utils/tests/to-string-test.js +0 -32
  621. data/dist/es/ember-utils/tests/try_invoke_test.js +0 -48
  622. data/dist/es/ember-views/index.js +0 -28
  623. data/dist/es/ember-views/lib/compat/attrs.js +0 -3
  624. data/dist/es/ember-views/lib/compat/fallback-view-registry.js +0 -3
  625. data/dist/es/ember-views/lib/component_lookup.js +0 -27
  626. data/dist/es/ember-views/lib/mixins/action_support.js +0 -189
  627. data/dist/es/ember-views/lib/mixins/child_views_support.js +0 -27
  628. data/dist/es/ember-views/lib/mixins/class_names_support.js +0 -102
  629. data/dist/es/ember-views/lib/mixins/text_support.js +0 -333
  630. data/dist/es/ember-views/lib/mixins/view_state_support.js +0 -19
  631. data/dist/es/ember-views/lib/mixins/view_support.js +0 -452
  632. data/dist/es/ember-views/lib/system/action_manager.js +0 -14
  633. data/dist/es/ember-views/lib/system/event_dispatcher.js +0 -454
  634. data/dist/es/ember-views/lib/system/jquery.js +0 -29
  635. data/dist/es/ember-views/lib/system/jquery_event_deprecation.js +0 -61
  636. data/dist/es/ember-views/lib/system/lookup_partial.js +0 -55
  637. data/dist/es/ember-views/lib/system/utils.js +0 -201
  638. data/dist/es/ember-views/lib/utils/lookup-component.js +0 -58
  639. data/dist/es/ember-views/lib/views/core_view.js +0 -83
  640. data/dist/es/ember-views/lib/views/states.js +0 -48
  641. data/dist/es/ember-views/lib/views/states/default.js +0 -17
  642. data/dist/es/ember-views/lib/views/states/destroying.js +0 -16
  643. data/dist/es/ember-views/lib/views/states/has_element.js +0 -31
  644. data/dist/es/ember-views/lib/views/states/in_dom.js +0 -28
  645. data/dist/es/ember-views/lib/views/states/pre_render.js +0 -3
  646. data/dist/es/ember/index.js +0 -645
  647. data/dist/es/ember/tests/application_lifecycle_test.js +0 -188
  648. data/dist/es/ember/tests/component_context_test.js +0 -255
  649. data/dist/es/ember/tests/component_registration_test.js +0 -252
  650. data/dist/es/ember/tests/controller_test.js +0 -44
  651. data/dist/es/ember/tests/error_handler_test.js +0 -581
  652. data/dist/es/ember/tests/helpers/helper_registration_test.js +0 -103
  653. data/dist/es/ember/tests/helpers/link_to_test.js +0 -2103
  654. data/dist/es/ember/tests/helpers/link_to_test/link_to_transitioning_classes_test.js +0 -342
  655. data/dist/es/ember/tests/helpers/link_to_test/link_to_with_query_params_test.js +0 -694
  656. data/dist/es/ember/tests/homepage_example_test.js +0 -47
  657. data/dist/es/ember/tests/integration/multiple-app-test.js +0 -101
  658. data/dist/es/ember/tests/production_build_test.js +0 -34
  659. data/dist/es/ember/tests/reexports_test.js +0 -307
  660. data/dist/es/ember/tests/routing/decoupled_basic_test.js +0 -4506
  661. data/dist/es/ember/tests/routing/query_params_test.js +0 -1579
  662. data/dist/es/ember/tests/routing/query_params_test/model_dependent_state_with_query_params_test.js +0 -1117
  663. data/dist/es/ember/tests/routing/query_params_test/overlapping_query_params_test.js +0 -185
  664. data/dist/es/ember/tests/routing/query_params_test/query_param_async_get_handler_test.js +0 -327
  665. data/dist/es/ember/tests/routing/query_params_test/query_params_paramless_link_to_test.js +0 -37
  666. data/dist/es/ember/tests/routing/query_params_test/shared_state_test.js +0 -84
  667. data/dist/es/ember/tests/routing/router_map_test.js +0 -46
  668. data/dist/es/ember/tests/routing/router_service_test/basic_test.js +0 -95
  669. data/dist/es/ember/tests/routing/router_service_test/currenturl_lifecycle_test.js +0 -149
  670. data/dist/es/ember/tests/routing/router_service_test/isActive_test.js +0 -113
  671. data/dist/es/ember/tests/routing/router_service_test/replaceWith_test.js +0 -144
  672. data/dist/es/ember/tests/routing/router_service_test/transitionTo_test.js +0 -370
  673. data/dist/es/ember/tests/routing/router_service_test/urlFor_test.js +0 -307
  674. data/dist/es/ember/tests/routing/substates_test.js +0 -1110
  675. data/dist/es/ember/tests/routing/toplevel_dom_test.js +0 -37
  676. data/dist/es/ember/tests/service_injection_test.js +0 -278
  677. data/dist/es/ember/tests/view_instrumentation_test.js +0 -47
  678. data/dist/es/ember/version.js +0 -1
  679. data/dist/es/handlebars.js +0 -1268
  680. data/dist/es/internal-test-helpers/index.js +0 -31
  681. data/dist/es/internal-test-helpers/lib/.gitkeep +0 -0
  682. data/dist/es/internal-test-helpers/lib/apply-mixins.js +0 -37
  683. data/dist/es/internal-test-helpers/lib/browser-detect.js +0 -4
  684. data/dist/es/internal-test-helpers/lib/build-owner.js +0 -49
  685. data/dist/es/internal-test-helpers/lib/confirm-export.js +0 -45
  686. data/dist/es/internal-test-helpers/lib/ember-dev/assertion.js +0 -87
  687. data/dist/es/internal-test-helpers/lib/ember-dev/containers.js +0 -34
  688. data/dist/es/internal-test-helpers/lib/ember-dev/debug.js +0 -47
  689. data/dist/es/internal-test-helpers/lib/ember-dev/deprecation.js +0 -71
  690. data/dist/es/internal-test-helpers/lib/ember-dev/index.js +0 -19
  691. data/dist/es/internal-test-helpers/lib/ember-dev/method-call-tracker.js +0 -127
  692. data/dist/es/internal-test-helpers/lib/ember-dev/namespaces.js +0 -34
  693. data/dist/es/internal-test-helpers/lib/ember-dev/run-loop.js +0 -28
  694. data/dist/es/internal-test-helpers/lib/ember-dev/setup-qunit.js +0 -26
  695. data/dist/es/internal-test-helpers/lib/ember-dev/utils.js +0 -33
  696. data/dist/es/internal-test-helpers/lib/ember-dev/warning.js +0 -71
  697. data/dist/es/internal-test-helpers/lib/equal-inner-html.js +0 -37
  698. data/dist/es/internal-test-helpers/lib/equal-tokens.js +0 -53
  699. data/dist/es/internal-test-helpers/lib/factory.js +0 -65
  700. data/dist/es/internal-test-helpers/lib/get-all-property-names.js +0 -12
  701. data/dist/es/internal-test-helpers/lib/get-text-of.js +0 -3
  702. data/dist/es/internal-test-helpers/lib/matchers.js +0 -167
  703. data/dist/es/internal-test-helpers/lib/module-for.js +0 -89
  704. data/dist/es/internal-test-helpers/lib/registry-check.js +0 -28
  705. data/dist/es/internal-test-helpers/lib/run.js +0 -11
  706. data/dist/es/internal-test-helpers/lib/strip.js +0 -12
  707. data/dist/es/internal-test-helpers/lib/system/synthetic-events.js +0 -183
  708. data/dist/es/internal-test-helpers/lib/test-cases/abstract-application.js +0 -70
  709. data/dist/es/internal-test-helpers/lib/test-cases/abstract-rendering.js +0 -203
  710. data/dist/es/internal-test-helpers/lib/test-cases/abstract.js +0 -222
  711. data/dist/es/internal-test-helpers/lib/test-cases/application.js +0 -39
  712. data/dist/es/internal-test-helpers/lib/test-cases/autoboot-application.js +0 -34
  713. data/dist/es/internal-test-helpers/lib/test-cases/default-resolver-application.js +0 -43
  714. data/dist/es/internal-test-helpers/lib/test-cases/node-query.js +0 -120
  715. data/dist/es/internal-test-helpers/lib/test-cases/query-param.js +0 -124
  716. data/dist/es/internal-test-helpers/lib/test-cases/rendering.js +0 -14
  717. data/dist/es/internal-test-helpers/lib/test-cases/router.js +0 -26
  718. data/dist/es/internal-test-helpers/lib/test-cases/test-resolver-application.js +0 -40
  719. data/dist/es/internal-test-helpers/lib/test-resolver.js +0 -86
  720. data/dist/es/internal-test-helpers/tests/index-test.js +0 -10
  721. data/dist/es/route-recognizer.js +0 -685
  722. data/dist/es/router.js +0 -2454
  723. data/dist/es/rsvp.js +0 -2394
  724. data/dist/es/simple-html-tokenizer.js +0 -638
  725. data/dist/jquery/jquery.js +0 -10364
  726. data/dist/node/app-boot-test.js +0 -146
  727. data/dist/node/build-info-test.js +0 -177
  728. data/dist/node/component-rendering-test.js +0 -34
  729. data/dist/node/helpers/app-module.js +0 -198
  730. data/dist/node/helpers/assert-html-matches.js +0 -25
  731. data/dist/node/helpers/build-owner.js +0 -28
  732. data/dist/node/helpers/component-module.js +0 -137
  733. data/dist/node/sourcemap-test.js +0 -27
  734. data/dist/node/template-compiler-test.js +0 -45
  735. data/dist/node/visit-test.js +0 -349
  736. data/dist/qunit/qunit.css +0 -436
  737. data/dist/qunit/qunit.js +0 -5188
  738. data/dist/tests/index.html +0 -254
  739. data/ember-source.gemspec +0 -28
  740. data/node_modules/.yarn-integrity +0 -10
  741. data/yarn.lock +0 -4
@@ -1,1424 +0,0 @@
1
- import { EventedTokenizer, EntityParser, HTML5NamedCharRefs } from 'simple-html-tokenizer';
2
- import { assign } from '@glimmer/util';
3
- import { parse } from 'handlebars';
4
-
5
- function isCall(node) {
6
- return node.type === 'SubExpression' || node.type === 'MustacheStatement' && node.path.type === 'PathExpression';
7
- }
8
- function isLiteral(input) {
9
- return !!(typeof input === 'object' && input.type.match(/Literal$/));
10
- }
11
-
12
- var nodes = /*#__PURE__*/Object.freeze({
13
- isCall: isCall,
14
- isLiteral: isLiteral
15
- });
16
-
17
- function buildMustache(path, params, hash, raw, loc) {
18
- if (!isLiteral(path)) {
19
- path = buildPath(path);
20
- }
21
- return {
22
- type: 'MustacheStatement',
23
- path,
24
- params: params || [],
25
- hash: hash || buildHash([]),
26
- escaped: !raw,
27
- loc: buildLoc(loc || null)
28
- };
29
- }
30
- function buildBlock(path, params, hash, program, inverse, loc) {
31
- return {
32
- type: 'BlockStatement',
33
- path: buildPath(path),
34
- params: params || [],
35
- hash: hash || buildHash([]),
36
- program: program || null,
37
- inverse: inverse || null,
38
- loc: buildLoc(loc || null)
39
- };
40
- }
41
- function buildElementModifier(path, params, hash, loc) {
42
- return {
43
- type: 'ElementModifierStatement',
44
- path: buildPath(path),
45
- params: params || [],
46
- hash: hash || buildHash([]),
47
- loc: buildLoc(loc || null)
48
- };
49
- }
50
- function buildPartial(name, params, hash, indent, loc) {
51
- return {
52
- type: 'PartialStatement',
53
- name: name,
54
- params: params || [],
55
- hash: hash || buildHash([]),
56
- indent: indent || '',
57
- strip: { open: false, close: false },
58
- loc: buildLoc(loc || null)
59
- };
60
- }
61
- function buildComment(value, loc) {
62
- return {
63
- type: 'CommentStatement',
64
- value: value,
65
- loc: buildLoc(loc || null)
66
- };
67
- }
68
- function buildMustacheComment(value, loc) {
69
- return {
70
- type: 'MustacheCommentStatement',
71
- value: value,
72
- loc: buildLoc(loc || null)
73
- };
74
- }
75
- function buildConcat(parts, loc) {
76
- return {
77
- type: 'ConcatStatement',
78
- parts: parts || [],
79
- loc: buildLoc(loc || null)
80
- };
81
- }
82
- function buildElement(tag, attributes, modifiers, children, comments, blockParams, loc) {
83
- // this is used for backwards compat prior to `blockParams` being added to the AST
84
- if (Array.isArray(comments)) {
85
- if (isBlockParms(comments)) {
86
- blockParams = comments;
87
- comments = [];
88
- } else if (isLoc(blockParams)) {
89
- loc = blockParams;
90
- blockParams = [];
91
- }
92
- } else if (isLoc(comments)) {
93
- // this is used for backwards compat prior to `comments` being added to the AST
94
- loc = comments;
95
- comments = [];
96
- } else if (isLoc(blockParams)) {
97
- loc = blockParams;
98
- blockParams = [];
99
- }
100
- // this is used for backwards compat, prior to `selfClosing` being part of the ElementNode AST
101
- let selfClosing = false;
102
- if (typeof tag === 'object') {
103
- selfClosing = tag.selfClosing;
104
- tag = tag.name;
105
- }
106
- return {
107
- type: 'ElementNode',
108
- tag: tag || '',
109
- selfClosing: selfClosing,
110
- attributes: attributes || [],
111
- blockParams: blockParams || [],
112
- modifiers: modifiers || [],
113
- comments: comments || [],
114
- children: children || [],
115
- loc: buildLoc(loc || null)
116
- };
117
- }
118
- function buildAttr(name, value, loc) {
119
- return {
120
- type: 'AttrNode',
121
- name: name,
122
- value: value,
123
- loc: buildLoc(loc || null)
124
- };
125
- }
126
- function buildText(chars, loc) {
127
- return {
128
- type: 'TextNode',
129
- chars: chars || '',
130
- loc: buildLoc(loc || null)
131
- };
132
- }
133
- // Expressions
134
- function buildSexpr(path, params, hash, loc) {
135
- return {
136
- type: 'SubExpression',
137
- path: buildPath(path),
138
- params: params || [],
139
- hash: hash || buildHash([]),
140
- loc: buildLoc(loc || null)
141
- };
142
- }
143
- function buildPath(original, loc) {
144
- if (typeof original !== 'string') return original;
145
- let parts = original.split('.');
146
- let thisHead = false;
147
- if (parts[0] === 'this') {
148
- thisHead = true;
149
- parts = parts.slice(1);
150
- }
151
- return {
152
- type: 'PathExpression',
153
- original,
154
- this: thisHead,
155
- parts,
156
- data: false,
157
- loc: buildLoc(loc || null)
158
- };
159
- }
160
- function buildLiteral(type, value, loc) {
161
- return {
162
- type,
163
- value,
164
- original: value,
165
- loc: buildLoc(loc || null)
166
- };
167
- }
168
- // Miscellaneous
169
- function buildHash(pairs, loc) {
170
- return {
171
- type: 'Hash',
172
- pairs: pairs || [],
173
- loc: buildLoc(loc || null)
174
- };
175
- }
176
- function buildPair(key, value, loc) {
177
- return {
178
- type: 'HashPair',
179
- key: key,
180
- value,
181
- loc: buildLoc(loc || null)
182
- };
183
- }
184
- function buildProgram(body, blockParams, loc) {
185
- return {
186
- type: 'Program',
187
- body: body || [],
188
- blockParams: blockParams || [],
189
- loc: buildLoc(loc || null)
190
- };
191
- }
192
- function buildSource(source) {
193
- return source || null;
194
- }
195
- function buildPosition(line, column) {
196
- return {
197
- line,
198
- column
199
- };
200
- }
201
- const SYNTHETIC = {
202
- source: '(synthetic)',
203
- start: { line: 1, column: 0 },
204
- end: { line: 1, column: 0 }
205
- };
206
- function buildLoc(...args) {
207
- if (args.length === 1) {
208
- let loc = args[0];
209
- if (loc && typeof loc === 'object') {
210
- return {
211
- source: buildSource(loc.source),
212
- start: buildPosition(loc.start.line, loc.start.column),
213
- end: buildPosition(loc.end.line, loc.end.column)
214
- };
215
- } else {
216
- return SYNTHETIC;
217
- }
218
- } else {
219
- let [startLine, startColumn, endLine, endColumn, source] = args;
220
- return {
221
- source: buildSource(source),
222
- start: buildPosition(startLine, startColumn),
223
- end: buildPosition(endLine, endColumn)
224
- };
225
- }
226
- }
227
- function isBlockParms(arr) {
228
- return arr[0] === 'string';
229
- }
230
- function isLoc(item) {
231
- return !Array.isArray(item);
232
- }
233
- var b = {
234
- mustache: buildMustache,
235
- block: buildBlock,
236
- partial: buildPartial,
237
- comment: buildComment,
238
- mustacheComment: buildMustacheComment,
239
- element: buildElement,
240
- elementModifier: buildElementModifier,
241
- attr: buildAttr,
242
- text: buildText,
243
- sexpr: buildSexpr,
244
- path: buildPath,
245
- concat: buildConcat,
246
- hash: buildHash,
247
- pair: buildPair,
248
- literal: buildLiteral,
249
- program: buildProgram,
250
- loc: buildLoc,
251
- pos: buildPosition,
252
- string: literal('StringLiteral'),
253
- boolean: literal('BooleanLiteral'),
254
- number: literal('NumberLiteral'),
255
- undefined() {
256
- return buildLiteral('UndefinedLiteral', undefined);
257
- },
258
- null() {
259
- return buildLiteral('NullLiteral', null);
260
- }
261
- };
262
- function literal(type) {
263
- return function (value) {
264
- return buildLiteral(type, value);
265
- };
266
- }
267
-
268
- /**
269
- * Subclass of `Error` with additional information
270
- * about location of incorrect markup.
271
- */
272
- const SyntaxError = function () {
273
- SyntaxError.prototype = Object.create(Error.prototype);
274
- SyntaxError.prototype.constructor = SyntaxError;
275
- function SyntaxError(message, location) {
276
- let error = Error.call(this, message);
277
- this.message = message;
278
- this.stack = error.stack;
279
- this.location = location;
280
- }
281
- return SyntaxError;
282
- }();
283
-
284
- // Regex to validate the identifier for block parameters.
285
- // Based on the ID validation regex in Handlebars.
286
- let ID_INVERSE_PATTERN = /[!"#%-,\.\/;->@\[-\^`\{-~]/;
287
- // Checks the element's attributes to see if it uses block params.
288
- // If it does, registers the block params with the program and
289
- // removes the corresponding attributes from the element.
290
- function parseElementBlockParams(element) {
291
- let params = parseBlockParams(element);
292
- if (params) element.blockParams = params;
293
- }
294
- function parseBlockParams(element) {
295
- let l = element.attributes.length;
296
- let attrNames = [];
297
- for (let i = 0; i < l; i++) {
298
- attrNames.push(element.attributes[i].name);
299
- }
300
- let asIndex = attrNames.indexOf('as');
301
- if (asIndex !== -1 && l > asIndex && attrNames[asIndex + 1].charAt(0) === '|') {
302
- // Some basic validation, since we're doing the parsing ourselves
303
- let paramsString = attrNames.slice(asIndex).join(' ');
304
- if (paramsString.charAt(paramsString.length - 1) !== '|' || paramsString.match(/\|/g).length !== 2) {
305
- throw new SyntaxError("Invalid block parameters syntax: '" + paramsString + "'", element.loc);
306
- }
307
- let params = [];
308
- for (let i = asIndex + 1; i < l; i++) {
309
- let param = attrNames[i].replace(/\|/g, '');
310
- if (param !== '') {
311
- if (ID_INVERSE_PATTERN.test(param)) {
312
- throw new SyntaxError("Invalid identifier for block parameters: '" + param + "' in '" + paramsString + "'", element.loc);
313
- }
314
- params.push(param);
315
- }
316
- }
317
- if (params.length === 0) {
318
- throw new SyntaxError("Cannot use zero block parameters: '" + paramsString + "'", element.loc);
319
- }
320
- element.attributes = element.attributes.slice(0, asIndex);
321
- return params;
322
- }
323
- return null;
324
- }
325
- function childrenFor(node) {
326
- switch (node.type) {
327
- case 'Program':
328
- return node.body;
329
- case 'ElementNode':
330
- return node.children;
331
- }
332
- }
333
- function appendChild(parent, node) {
334
- childrenFor(parent).push(node);
335
- }
336
- function isLiteral$1(path) {
337
- return path.type === 'StringLiteral' || path.type === 'BooleanLiteral' || path.type === 'NumberLiteral' || path.type === 'NullLiteral' || path.type === 'UndefinedLiteral';
338
- }
339
- function printLiteral(literal) {
340
- if (literal.type === 'UndefinedLiteral') {
341
- return 'undefined';
342
- } else {
343
- return JSON.stringify(literal.value);
344
- }
345
- }
346
-
347
- const entityParser = new EntityParser(HTML5NamedCharRefs);
348
- class Parser {
349
- constructor(source) {
350
- this.elementStack = [];
351
- this.currentAttribute = null;
352
- this.currentNode = null;
353
- this.tokenizer = new EventedTokenizer(this, entityParser);
354
- this.source = source.split(/(?:\r\n?|\n)/g);
355
- }
356
- get currentAttr() {
357
- return this.currentAttribute;
358
- }
359
- get currentTag() {
360
- let node = this.currentNode;
361
-
362
- return node;
363
- }
364
- get currentStartTag() {
365
- let node = this.currentNode;
366
-
367
- return node;
368
- }
369
- get currentEndTag() {
370
- let node = this.currentNode;
371
-
372
- return node;
373
- }
374
- get currentComment() {
375
- let node = this.currentNode;
376
-
377
- return node;
378
- }
379
- get currentData() {
380
- let node = this.currentNode;
381
-
382
- return node;
383
- }
384
- acceptNode(node) {
385
- return this[node.type](node);
386
- }
387
- currentElement() {
388
- return this.elementStack[this.elementStack.length - 1];
389
- }
390
- sourceForNode(node, endNode) {
391
- let firstLine = node.loc.start.line - 1;
392
- let currentLine = firstLine - 1;
393
- let firstColumn = node.loc.start.column;
394
- let string = [];
395
- let line;
396
- let lastLine;
397
- let lastColumn;
398
- if (endNode) {
399
- lastLine = endNode.loc.end.line - 1;
400
- lastColumn = endNode.loc.end.column;
401
- } else {
402
- lastLine = node.loc.end.line - 1;
403
- lastColumn = node.loc.end.column;
404
- }
405
- while (currentLine < lastLine) {
406
- currentLine++;
407
- line = this.source[currentLine];
408
- if (currentLine === firstLine) {
409
- if (firstLine === lastLine) {
410
- string.push(line.slice(firstColumn, lastColumn));
411
- } else {
412
- string.push(line.slice(firstColumn));
413
- }
414
- } else if (currentLine === lastLine) {
415
- string.push(line.slice(0, lastColumn));
416
- } else {
417
- string.push(line);
418
- }
419
- }
420
- return string.join('\n');
421
- }
422
- }
423
-
424
- class HandlebarsNodeVisitors extends Parser {
425
- constructor() {
426
- super(...arguments);
427
- this.cursorCount = 0;
428
- }
429
- cursor() {
430
- return `%cursor:${this.cursorCount++}%`;
431
- }
432
- Program(program) {
433
- let body = [];
434
- this.cursorCount = 0;
435
- let node = b.program(body, program.blockParams, program.loc);
436
- let i,
437
- l = program.body.length;
438
- this.elementStack.push(node);
439
- if (l === 0) {
440
- return this.elementStack.pop();
441
- }
442
- for (i = 0; i < l; i++) {
443
- this.acceptNode(program.body[i]);
444
- }
445
- // Ensure that that the element stack is balanced properly.
446
- let poppedNode = this.elementStack.pop();
447
- if (poppedNode !== node) {
448
- let elementNode = poppedNode;
449
- throw new SyntaxError('Unclosed element `' + elementNode.tag + '` (on line ' + elementNode.loc.start.line + ').', elementNode.loc);
450
- }
451
- return node;
452
- }
453
- BlockStatement(block) {
454
- if (this.tokenizer['state'] === 'comment') {
455
- this.appendToCommentData(this.sourceForNode(block));
456
- return;
457
- }
458
- if (this.tokenizer['state'] !== 'comment' && this.tokenizer['state'] !== 'data' && this.tokenizer['state'] !== 'beforeData') {
459
- throw new SyntaxError('A block may only be used inside an HTML element or another block.', block.loc);
460
- }
461
- let { path, params, hash } = acceptCallNodes(this, block);
462
- let program = this.Program(block.program);
463
- let inverse = block.inverse ? this.Program(block.inverse) : null;
464
- if (path.original === 'in-element') {
465
- hash = addInElementHash(this.cursor(), hash, block.loc);
466
- }
467
- let node = b.block(path, params, hash, program, inverse, block.loc);
468
- let parentProgram = this.currentElement();
469
- appendChild(parentProgram, node);
470
- }
471
- MustacheStatement(rawMustache) {
472
- let { tokenizer } = this;
473
- if (tokenizer.state === 'comment') {
474
- this.appendToCommentData(this.sourceForNode(rawMustache));
475
- return;
476
- }
477
- let mustache;
478
- let { escaped, loc } = rawMustache;
479
- if (rawMustache.path.type.match(/Literal$/)) {
480
- mustache = {
481
- type: 'MustacheStatement',
482
- path: this.acceptNode(rawMustache.path),
483
- params: [],
484
- hash: b.hash(),
485
- escaped,
486
- loc
487
- };
488
- } else {
489
- let { path, params, hash } = acceptCallNodes(this, rawMustache);
490
- mustache = b.mustache(path, params, hash, !escaped, loc);
491
- }
492
- switch (tokenizer.state) {
493
- // Tag helpers
494
- case "tagOpen" /* tagOpen */:
495
- case "tagName" /* tagName */:
496
- throw new SyntaxError(`Cannot use mustaches in an elements tagname: \`${this.sourceForNode(rawMustache, rawMustache.path)}\` at L${loc.start.line}:C${loc.start.column}`, mustache.loc);
497
- case "beforeAttributeName" /* beforeAttributeName */:
498
- addElementModifier(this.currentStartTag, mustache);
499
- break;
500
- case "attributeName" /* attributeName */:
501
- case "afterAttributeName" /* afterAttributeName */:
502
- this.beginAttributeValue(false);
503
- this.finishAttributeValue();
504
- addElementModifier(this.currentStartTag, mustache);
505
- tokenizer.transitionTo("beforeAttributeName" /* beforeAttributeName */);
506
- break;
507
- case "afterAttributeValueQuoted" /* afterAttributeValueQuoted */:
508
- addElementModifier(this.currentStartTag, mustache);
509
- tokenizer.transitionTo("beforeAttributeName" /* beforeAttributeName */);
510
- break;
511
- // Attribute values
512
- case "beforeAttributeValue" /* beforeAttributeValue */:
513
- this.beginAttributeValue(false);
514
- appendDynamicAttributeValuePart(this.currentAttribute, mustache);
515
- tokenizer.transitionTo("attributeValueUnquoted" /* attributeValueUnquoted */);
516
- break;
517
- case "attributeValueDoubleQuoted" /* attributeValueDoubleQuoted */:
518
- case "attributeValueSingleQuoted" /* attributeValueSingleQuoted */:
519
- case "attributeValueUnquoted" /* attributeValueUnquoted */:
520
- appendDynamicAttributeValuePart(this.currentAttribute, mustache);
521
- break;
522
- // TODO: Only append child when the tokenizer state makes
523
- // sense to do so, otherwise throw an error.
524
- default:
525
- appendChild(this.currentElement(), mustache);
526
- }
527
- return mustache;
528
- }
529
- ContentStatement(content) {
530
- updateTokenizerLocation(this.tokenizer, content);
531
- this.tokenizer.tokenizePart(content.value);
532
- this.tokenizer.flushData();
533
- }
534
- CommentStatement(rawComment) {
535
- let { tokenizer } = this;
536
- if (tokenizer.state === "comment" /* comment */) {
537
- this.appendToCommentData(this.sourceForNode(rawComment));
538
- return null;
539
- }
540
- let { value, loc } = rawComment;
541
- let comment = b.mustacheComment(value, loc);
542
- switch (tokenizer.state) {
543
- case "beforeAttributeName" /* beforeAttributeName */:
544
- this.currentStartTag.comments.push(comment);
545
- break;
546
- case "beforeData" /* beforeData */:
547
- case "data" /* data */:
548
- appendChild(this.currentElement(), comment);
549
- break;
550
- default:
551
- throw new SyntaxError(`Using a Handlebars comment when in the \`${tokenizer['state']}\` state is not supported: "${comment.value}" on line ${loc.start.line}:${loc.start.column}`, rawComment.loc);
552
- }
553
- return comment;
554
- }
555
- PartialStatement(partial) {
556
- let { loc } = partial;
557
- throw new SyntaxError(`Handlebars partials are not supported: "${this.sourceForNode(partial, partial.name)}" at L${loc.start.line}:C${loc.start.column}`, partial.loc);
558
- }
559
- PartialBlockStatement(partialBlock) {
560
- let { loc } = partialBlock;
561
- throw new SyntaxError(`Handlebars partial blocks are not supported: "${this.sourceForNode(partialBlock, partialBlock.name)}" at L${loc.start.line}:C${loc.start.column}`, partialBlock.loc);
562
- }
563
- Decorator(decorator) {
564
- let { loc } = decorator;
565
- throw new SyntaxError(`Handlebars decorators are not supported: "${this.sourceForNode(decorator, decorator.path)}" at L${loc.start.line}:C${loc.start.column}`, decorator.loc);
566
- }
567
- DecoratorBlock(decoratorBlock) {
568
- let { loc } = decoratorBlock;
569
- throw new SyntaxError(`Handlebars decorator blocks are not supported: "${this.sourceForNode(decoratorBlock, decoratorBlock.path)}" at L${loc.start.line}:C${loc.start.column}`, decoratorBlock.loc);
570
- }
571
- SubExpression(sexpr) {
572
- let { path, params, hash } = acceptCallNodes(this, sexpr);
573
- return b.sexpr(path, params, hash, sexpr.loc);
574
- }
575
- PathExpression(path) {
576
- let { original, loc } = path;
577
- let parts;
578
- if (original.indexOf('/') !== -1) {
579
- if (original.slice(0, 2) === './') {
580
- throw new SyntaxError(`Using "./" is not supported in Glimmer and unnecessary: "${path.original}" on line ${loc.start.line}.`, path.loc);
581
- }
582
- if (original.slice(0, 3) === '../') {
583
- throw new SyntaxError(`Changing context using "../" is not supported in Glimmer: "${path.original}" on line ${loc.start.line}.`, path.loc);
584
- }
585
- if (original.indexOf('.') !== -1) {
586
- throw new SyntaxError(`Mixing '.' and '/' in paths is not supported in Glimmer; use only '.' to separate property paths: "${path.original}" on line ${loc.start.line}.`, path.loc);
587
- }
588
- parts = [path.parts.join('/')];
589
- } else if (original === '.') {
590
- let locationInfo = `L${loc.start.line}:C${loc.start.column}`;
591
- throw new SyntaxError(`'.' is not a supported path in Glimmer; check for a path with a trailing '.' at ${locationInfo}.`, path.loc);
592
- } else {
593
- parts = path.parts;
594
- }
595
- let thisHead = false;
596
- // This is to fix a bug in the Handlebars AST where the path expressions in
597
- // `{{this.foo}}` (and similarly `{{foo-bar this.foo named=this.foo}}` etc)
598
- // are simply turned into `{{foo}}`. The fix is to push it back onto the
599
- // parts array and let the runtime see the difference. However, we cannot
600
- // simply use the string `this` as it means literally the property called
601
- // "this" in the current context (it can be expressed in the syntax as
602
- // `{{[this]}}`, where the square bracket are generally for this kind of
603
- // escaping – such as `{{foo.["bar.baz"]}}` would mean lookup a property
604
- // named literally "bar.baz" on `this.foo`). By convention, we use `null`
605
- // for this purpose.
606
- if (original.match(/^this(\..+)?$/)) {
607
- thisHead = true;
608
- }
609
- return {
610
- type: 'PathExpression',
611
- original: path.original,
612
- this: thisHead,
613
- parts,
614
- data: path.data,
615
- loc: path.loc
616
- };
617
- }
618
- Hash(hash) {
619
- let pairs = [];
620
- for (let i = 0; i < hash.pairs.length; i++) {
621
- let pair = hash.pairs[i];
622
- pairs.push(b.pair(pair.key, this.acceptNode(pair.value), pair.loc));
623
- }
624
- return b.hash(pairs, hash.loc);
625
- }
626
- StringLiteral(string) {
627
- return b.literal('StringLiteral', string.value, string.loc);
628
- }
629
- BooleanLiteral(boolean) {
630
- return b.literal('BooleanLiteral', boolean.value, boolean.loc);
631
- }
632
- NumberLiteral(number) {
633
- return b.literal('NumberLiteral', number.value, number.loc);
634
- }
635
- UndefinedLiteral(undef) {
636
- return b.literal('UndefinedLiteral', undefined, undef.loc);
637
- }
638
- NullLiteral(nul) {
639
- return b.literal('NullLiteral', null, nul.loc);
640
- }
641
- }
642
- function calculateRightStrippedOffsets(original, value) {
643
- if (value === '') {
644
- // if it is empty, just return the count of newlines
645
- // in original
646
- return {
647
- lines: original.split('\n').length - 1,
648
- columns: 0
649
- };
650
- }
651
- // otherwise, return the number of newlines prior to
652
- // `value`
653
- let difference = original.split(value)[0];
654
- let lines = difference.split(/\n/);
655
- let lineCount = lines.length - 1;
656
- return {
657
- lines: lineCount,
658
- columns: lines[lineCount].length
659
- };
660
- }
661
- function updateTokenizerLocation(tokenizer, content) {
662
- let line = content.loc.start.line;
663
- let column = content.loc.start.column;
664
- let offsets = calculateRightStrippedOffsets(content.original, content.value);
665
- line = line + offsets.lines;
666
- if (offsets.lines) {
667
- column = offsets.columns;
668
- } else {
669
- column = column + offsets.columns;
670
- }
671
- tokenizer.line = line;
672
- tokenizer.column = column;
673
- }
674
- function acceptCallNodes(compiler, node) {
675
- let path = compiler.PathExpression(node.path);
676
- let params = node.params ? node.params.map(e => compiler.acceptNode(e)) : [];
677
- let hash = node.hash ? compiler.Hash(node.hash) : b.hash();
678
- return { path, params, hash };
679
- }
680
- function addElementModifier(element, mustache) {
681
- let { path, params, hash, loc } = mustache;
682
- if (isLiteral$1(path)) {
683
- let modifier = `{{${printLiteral(path)}}}`;
684
- let tag = `<${element.name} ... ${modifier} ...`;
685
- throw new SyntaxError(`In ${tag}, ${modifier} is not a valid modifier: "${path.original}" on line ${loc && loc.start.line}.`, mustache.loc);
686
- }
687
- let modifier = b.elementModifier(path, params, hash, loc);
688
- element.modifiers.push(modifier);
689
- }
690
- function addInElementHash(cursor, hash, loc) {
691
- let hasNextSibling = false;
692
- hash.pairs.forEach(pair => {
693
- if (pair.key === 'guid') {
694
- throw new SyntaxError('Cannot pass `guid` from user space', loc);
695
- }
696
- if (pair.key === 'nextSibling') {
697
- hasNextSibling = true;
698
- }
699
- });
700
- let guid = b.literal('StringLiteral', cursor);
701
- let guidPair = b.pair('guid', guid);
702
- hash.pairs.unshift(guidPair);
703
- if (!hasNextSibling) {
704
- let nullLiteral = b.literal('NullLiteral', null);
705
- let nextSibling = b.pair('nextSibling', nullLiteral);
706
- hash.pairs.push(nextSibling);
707
- }
708
- return hash;
709
- }
710
- function appendDynamicAttributeValuePart(attribute, part) {
711
- attribute.isDynamic = true;
712
- attribute.parts.push(part);
713
- }
714
-
715
- var visitorKeys = {
716
- Program: ['body'],
717
- MustacheStatement: ['path', 'params', 'hash'],
718
- BlockStatement: ['path', 'params', 'hash', 'program', 'inverse'],
719
- ElementModifierStatement: ['path', 'params', 'hash'],
720
- PartialStatement: ['name', 'params', 'hash'],
721
- CommentStatement: [],
722
- MustacheCommentStatement: [],
723
- ElementNode: ['attributes', 'modifiers', 'children', 'comments'],
724
- AttrNode: ['value'],
725
- TextNode: [],
726
- ConcatStatement: ['parts'],
727
- SubExpression: ['path', 'params', 'hash'],
728
- PathExpression: [],
729
- StringLiteral: [],
730
- BooleanLiteral: [],
731
- NumberLiteral: [],
732
- NullLiteral: [],
733
- UndefinedLiteral: [],
734
- Hash: ['pairs'],
735
- HashPair: ['value']
736
- };
737
-
738
- const TraversalError = function () {
739
- TraversalError.prototype = Object.create(Error.prototype);
740
- TraversalError.prototype.constructor = TraversalError;
741
- function TraversalError(message, node, parent, key) {
742
- let error = Error.call(this, message);
743
- this.key = key;
744
- this.message = message;
745
- this.node = node;
746
- this.parent = parent;
747
- this.stack = error.stack;
748
- }
749
- return TraversalError;
750
- }();
751
- function cannotRemoveNode(node, parent, key) {
752
- return new TraversalError('Cannot remove a node unless it is part of an array', node, parent, key);
753
- }
754
- function cannotReplaceNode(node, parent, key) {
755
- return new TraversalError('Cannot replace a node with multiple nodes unless it is part of an array', node, parent, key);
756
- }
757
- function cannotReplaceOrRemoveInKeyHandlerYet(node, key) {
758
- return new TraversalError('Replacing and removing in key handlers is not yet supported.', node, null, key);
759
- }
760
-
761
- function visitNode(visitor, node) {
762
- let handler = visitor[node.type] || visitor.All || null;
763
- let result;
764
- if (handler && handler['enter']) {
765
- result = handler['enter'].call(null, node);
766
- }
767
- if (result !== undefined && result !== null) {
768
- if (JSON.stringify(node) === JSON.stringify(result)) {
769
- result = undefined;
770
- } else if (Array.isArray(result)) {
771
- return visitArray(visitor, result) || result;
772
- } else {
773
- return visitNode(visitor, result) || result;
774
- }
775
- }
776
- if (result === undefined) {
777
- let keys = visitorKeys[node.type];
778
- for (let i = 0; i < keys.length; i++) {
779
- visitKey(visitor, handler, node, keys[i]);
780
- }
781
- if (handler && handler['exit']) {
782
- result = handler['exit'].call(null, node);
783
- }
784
- }
785
- return result;
786
- }
787
- function visitKey(visitor, handler, node, key) {
788
- let value = node[key];
789
- if (!value) {
790
- return;
791
- }
792
- let keyHandler = handler && (handler.keys[key] || handler.keys.All);
793
- let result;
794
- if (keyHandler && keyHandler.enter) {
795
- result = keyHandler.enter.call(null, node, key);
796
- if (result !== undefined) {
797
- throw cannotReplaceOrRemoveInKeyHandlerYet(node, key);
798
- }
799
- }
800
- if (Array.isArray(value)) {
801
- visitArray(visitor, value);
802
- } else {
803
- let result = visitNode(visitor, value);
804
- if (result !== undefined) {
805
- assignKey(node, key, result);
806
- }
807
- }
808
- if (keyHandler && keyHandler.exit) {
809
- result = keyHandler.exit.call(null, node, key);
810
- if (result !== undefined) {
811
- throw cannotReplaceOrRemoveInKeyHandlerYet(node, key);
812
- }
813
- }
814
- }
815
- function visitArray(visitor, array) {
816
- for (let i = 0; i < array.length; i++) {
817
- let result = visitNode(visitor, array[i]);
818
- if (result !== undefined) {
819
- i += spliceArray(array, i, result) - 1;
820
- }
821
- }
822
- }
823
- function assignKey(node, key, result) {
824
- if (result === null) {
825
- throw cannotRemoveNode(node[key], node, key);
826
- } else if (Array.isArray(result)) {
827
- if (result.length === 1) {
828
- node[key] = result[0];
829
- } else {
830
- if (result.length === 0) {
831
- throw cannotRemoveNode(node[key], node, key);
832
- } else {
833
- throw cannotReplaceNode(node[key], node, key);
834
- }
835
- }
836
- } else {
837
- node[key] = result;
838
- }
839
- }
840
- function spliceArray(array, index, result) {
841
- if (result === null) {
842
- array.splice(index, 1);
843
- return 0;
844
- } else if (Array.isArray(result)) {
845
- array.splice(index, 1, ...result);
846
- return result.length;
847
- } else {
848
- array.splice(index, 1, result);
849
- return 1;
850
- }
851
- }
852
- function traverse(node, visitor) {
853
- visitNode(normalizeVisitor(visitor), node);
854
- }
855
- function normalizeVisitor(visitor) {
856
- let normalizedVisitor = {};
857
- for (let type in visitor) {
858
- let handler = visitor[type] || visitor.All;
859
- let normalizedKeys = {};
860
- if (typeof handler === 'object') {
861
- let keys = handler.keys;
862
- if (keys) {
863
- for (let key in keys) {
864
- let keyHandler = keys[key];
865
- if (typeof keyHandler === 'object') {
866
- normalizedKeys[key] = {
867
- enter: typeof keyHandler.enter === 'function' ? keyHandler.enter : null,
868
- exit: typeof keyHandler.exit === 'function' ? keyHandler.exit : null
869
- };
870
- } else if (typeof keyHandler === 'function') {
871
- normalizedKeys[key] = {
872
- enter: keyHandler,
873
- exit: null
874
- };
875
- }
876
- }
877
- }
878
- normalizedVisitor[type] = {
879
- enter: typeof handler.enter === 'function' ? handler.enter : null,
880
- exit: typeof handler.exit === 'function' ? handler.exit : null,
881
- keys: normalizedKeys
882
- };
883
- } else if (typeof handler === 'function') {
884
- normalizedVisitor[type] = {
885
- enter: handler,
886
- exit: null,
887
- keys: normalizedKeys
888
- };
889
- }
890
- }
891
- return normalizedVisitor;
892
- }
893
-
894
- const ATTR_VALUE_REGEX_TEST = /[\xA0"&]/;
895
- const ATTR_VALUE_REGEX_REPLACE = new RegExp(ATTR_VALUE_REGEX_TEST.source, 'g');
896
- const TEXT_REGEX_TEST = /[\xA0&<>]/;
897
- const TEXT_REGEX_REPLACE = new RegExp(TEXT_REGEX_TEST.source, 'g');
898
- function attrValueReplacer(char) {
899
- switch (char.charCodeAt(0)) {
900
- case 160 /* NBSP */:
901
- return '&nbsp;';
902
- case 34 /* QUOT */:
903
- return '&quot;';
904
- case 38 /* AMP */:
905
- return '&amp;';
906
- default:
907
- return char;
908
- }
909
- }
910
- function textReplacer(char) {
911
- switch (char.charCodeAt(0)) {
912
- case 160 /* NBSP */:
913
- return '&nbsp;';
914
- case 38 /* AMP */:
915
- return '&amp;';
916
- case 60 /* LT */:
917
- return '&lt;';
918
- case 62 /* GT */:
919
- return '&gt;';
920
- default:
921
- return char;
922
- }
923
- }
924
- function escapeAttrValue(attrValue) {
925
- if (ATTR_VALUE_REGEX_TEST.test(attrValue)) {
926
- return attrValue.replace(ATTR_VALUE_REGEX_REPLACE, attrValueReplacer);
927
- }
928
- return attrValue;
929
- }
930
- function escapeText(text) {
931
- if (TEXT_REGEX_TEST.test(text)) {
932
- return text.replace(TEXT_REGEX_REPLACE, textReplacer);
933
- }
934
- return text;
935
- }
936
-
937
- function unreachable() {
938
- throw new Error('unreachable');
939
- }
940
- function build(ast) {
941
- if (!ast) {
942
- return '';
943
- }
944
- const output = [];
945
- switch (ast.type) {
946
- case 'Program':
947
- {
948
- const chainBlock = ast['chained'] && ast.body[0];
949
- if (chainBlock) {
950
- chainBlock['chained'] = true;
951
- }
952
- const body = buildEach(ast.body).join('');
953
- output.push(body);
954
- }
955
- break;
956
- case 'ElementNode':
957
- output.push('<', ast.tag);
958
- if (ast.attributes.length) {
959
- output.push(' ', buildEach(ast.attributes).join(' '));
960
- }
961
- if (ast.modifiers.length) {
962
- output.push(' ', buildEach(ast.modifiers).join(' '));
963
- }
964
- if (ast.comments.length) {
965
- output.push(' ', buildEach(ast.comments).join(' '));
966
- }
967
- if (ast.blockParams.length) {
968
- output.push(' ', 'as', ' ', `|${ast.blockParams.join(' ')}|`);
969
- }
970
- if (voidMap[ast.tag]) {
971
- if (ast.selfClosing) {
972
- output.push(' /');
973
- }
974
- output.push('>');
975
- } else {
976
- output.push('>');
977
- output.push.apply(output, buildEach(ast.children));
978
- output.push('</', ast.tag, '>');
979
- }
980
- break;
981
- case 'AttrNode':
982
- if (ast.value.type === 'TextNode') {
983
- if (ast.value.chars !== '') {
984
- output.push(ast.name, '=');
985
- output.push('"', escapeAttrValue(ast.value.chars), '"');
986
- } else {
987
- output.push(ast.name);
988
- }
989
- } else {
990
- output.push(ast.name, '=');
991
- // ast.value is mustache or concat
992
- output.push(build(ast.value));
993
- }
994
- break;
995
- case 'ConcatStatement':
996
- output.push('"');
997
- ast.parts.forEach(node => {
998
- if (node.type === 'TextNode') {
999
- output.push(escapeAttrValue(node.chars));
1000
- } else {
1001
- output.push(build(node));
1002
- }
1003
- });
1004
- output.push('"');
1005
- break;
1006
- case 'TextNode':
1007
- output.push(escapeText(ast.chars));
1008
- break;
1009
- case 'MustacheStatement':
1010
- {
1011
- output.push(compactJoin(['{{', pathParams(ast), '}}']));
1012
- }
1013
- break;
1014
- case 'MustacheCommentStatement':
1015
- {
1016
- output.push(compactJoin(['{{!--', ast.value, '--}}']));
1017
- }
1018
- break;
1019
- case 'ElementModifierStatement':
1020
- {
1021
- output.push(compactJoin(['{{', pathParams(ast), '}}']));
1022
- }
1023
- break;
1024
- case 'PathExpression':
1025
- output.push(ast.original);
1026
- break;
1027
- case 'SubExpression':
1028
- {
1029
- output.push('(', pathParams(ast), ')');
1030
- }
1031
- break;
1032
- case 'BooleanLiteral':
1033
- output.push(ast.value ? 'true' : 'false');
1034
- break;
1035
- case 'BlockStatement':
1036
- {
1037
- const lines = [];
1038
- if (ast['chained']) {
1039
- lines.push(['{{else ', pathParams(ast), '}}'].join(''));
1040
- } else {
1041
- lines.push(openBlock(ast));
1042
- }
1043
- lines.push(build(ast.program));
1044
- if (ast.inverse) {
1045
- if (!ast.inverse['chained']) {
1046
- lines.push('{{else}}');
1047
- }
1048
- lines.push(build(ast.inverse));
1049
- }
1050
- if (!ast['chained']) {
1051
- lines.push(closeBlock(ast));
1052
- }
1053
- output.push(lines.join(''));
1054
- }
1055
- break;
1056
- case 'PartialStatement':
1057
- {
1058
- output.push(compactJoin(['{{>', pathParams(ast), '}}']));
1059
- }
1060
- break;
1061
- case 'CommentStatement':
1062
- {
1063
- output.push(compactJoin(['<!--', ast.value, '-->']));
1064
- }
1065
- break;
1066
- case 'StringLiteral':
1067
- {
1068
- output.push(`"${ast.value}"`);
1069
- }
1070
- break;
1071
- case 'NumberLiteral':
1072
- {
1073
- output.push(String(ast.value));
1074
- }
1075
- break;
1076
- case 'UndefinedLiteral':
1077
- {
1078
- output.push('undefined');
1079
- }
1080
- break;
1081
- case 'NullLiteral':
1082
- {
1083
- output.push('null');
1084
- }
1085
- break;
1086
- case 'Hash':
1087
- {
1088
- output.push(ast.pairs.map(pair => {
1089
- return build(pair);
1090
- }).join(' '));
1091
- }
1092
- break;
1093
- case 'HashPair':
1094
- {
1095
- output.push(`${ast.key}=${build(ast.value)}`);
1096
- }
1097
- break;
1098
- }
1099
- return output.join('');
1100
- }
1101
- function compact(array) {
1102
- const newArray = [];
1103
- array.forEach(a => {
1104
- if (typeof a !== 'undefined' && a !== null && a !== '') {
1105
- newArray.push(a);
1106
- }
1107
- });
1108
- return newArray;
1109
- }
1110
- function buildEach(asts) {
1111
- return asts.map(build);
1112
- }
1113
- function pathParams(ast) {
1114
- let path;
1115
- switch (ast.type) {
1116
- case 'MustacheStatement':
1117
- case 'SubExpression':
1118
- case 'ElementModifierStatement':
1119
- case 'BlockStatement':
1120
- if (isLiteral(ast.path)) {
1121
- return String(ast.path.value);
1122
- }
1123
- path = build(ast.path);
1124
- break;
1125
- case 'PartialStatement':
1126
- path = build(ast.name);
1127
- break;
1128
- default:
1129
- return unreachable();
1130
- }
1131
- return compactJoin([path, buildEach(ast.params).join(' '), build(ast.hash)], ' ');
1132
- }
1133
- function compactJoin(array, delimiter) {
1134
- return compact(array).join(delimiter || '');
1135
- }
1136
- function blockParams(block) {
1137
- const params = block.program.blockParams;
1138
- if (params.length) {
1139
- return ` as |${params.join(' ')}|`;
1140
- }
1141
- return null;
1142
- }
1143
- function openBlock(block) {
1144
- return ['{{#', pathParams(block), blockParams(block), '}}'].join('');
1145
- }
1146
- function closeBlock(block) {
1147
- return ['{{/', build(block.path), '}}'].join('');
1148
- }
1149
-
1150
- class Walker {
1151
- constructor(order) {
1152
- this.order = order;
1153
- this.stack = [];
1154
- }
1155
- visit(node, callback) {
1156
- if (!node) {
1157
- return;
1158
- }
1159
- this.stack.push(node);
1160
- if (this.order === 'post') {
1161
- this.children(node, callback);
1162
- callback(node, this);
1163
- } else {
1164
- callback(node, this);
1165
- this.children(node, callback);
1166
- }
1167
- this.stack.pop();
1168
- }
1169
- children(node, callback) {
1170
- let visitor = visitors[node.type];
1171
- if (visitor) {
1172
- visitor(this, node, callback);
1173
- }
1174
- }
1175
- }
1176
- let visitors = {
1177
- Program(walker, node, callback) {
1178
- for (let i = 0; i < node.body.length; i++) {
1179
- walker.visit(node.body[i], callback);
1180
- }
1181
- },
1182
- ElementNode(walker, node, callback) {
1183
- for (let i = 0; i < node.children.length; i++) {
1184
- walker.visit(node.children[i], callback);
1185
- }
1186
- },
1187
- BlockStatement(walker, node, callback) {
1188
- walker.visit(node.program, callback);
1189
- walker.visit(node.inverse || null, callback);
1190
- }
1191
- };
1192
-
1193
- const voidMap = Object.create(null);
1194
- let voidTagNames = 'area base br col command embed hr img input keygen link meta param source track wbr';
1195
- voidTagNames.split(' ').forEach(tagName => {
1196
- voidMap[tagName] = true;
1197
- });
1198
- class TokenizerEventHandlers extends HandlebarsNodeVisitors {
1199
- constructor() {
1200
- super(...arguments);
1201
- this.tagOpenLine = 0;
1202
- this.tagOpenColumn = 0;
1203
- }
1204
- reset() {
1205
- this.currentNode = null;
1206
- }
1207
- // Comment
1208
- beginComment() {
1209
- this.currentNode = b.comment('');
1210
- this.currentNode.loc = {
1211
- source: null,
1212
- start: b.pos(this.tagOpenLine, this.tagOpenColumn),
1213
- end: null
1214
- };
1215
- }
1216
- appendToCommentData(char) {
1217
- this.currentComment.value += char;
1218
- }
1219
- finishComment() {
1220
- this.currentComment.loc.end = b.pos(this.tokenizer.line, this.tokenizer.column);
1221
- appendChild(this.currentElement(), this.currentComment);
1222
- }
1223
- // Data
1224
- beginData() {
1225
- this.currentNode = b.text();
1226
- this.currentNode.loc = {
1227
- source: null,
1228
- start: b.pos(this.tokenizer.line, this.tokenizer.column),
1229
- end: null
1230
- };
1231
- }
1232
- appendToData(char) {
1233
- this.currentData.chars += char;
1234
- }
1235
- finishData() {
1236
- this.currentData.loc.end = b.pos(this.tokenizer.line, this.tokenizer.column);
1237
- appendChild(this.currentElement(), this.currentData);
1238
- }
1239
- // Tags - basic
1240
- tagOpen() {
1241
- this.tagOpenLine = this.tokenizer.line;
1242
- this.tagOpenColumn = this.tokenizer.column;
1243
- }
1244
- beginStartTag() {
1245
- this.currentNode = {
1246
- type: 'StartTag',
1247
- name: '',
1248
- attributes: [],
1249
- modifiers: [],
1250
- comments: [],
1251
- selfClosing: false,
1252
- loc: SYNTHETIC
1253
- };
1254
- }
1255
- beginEndTag() {
1256
- this.currentNode = {
1257
- type: 'EndTag',
1258
- name: '',
1259
- attributes: [],
1260
- modifiers: [],
1261
- comments: [],
1262
- selfClosing: false,
1263
- loc: SYNTHETIC
1264
- };
1265
- }
1266
- finishTag() {
1267
- let { line, column } = this.tokenizer;
1268
- let tag = this.currentTag;
1269
- tag.loc = b.loc(this.tagOpenLine, this.tagOpenColumn, line, column);
1270
- if (tag.type === 'StartTag') {
1271
- this.finishStartTag();
1272
- if (voidMap[tag.name] || tag.selfClosing) {
1273
- this.finishEndTag(true);
1274
- }
1275
- } else if (tag.type === 'EndTag') {
1276
- this.finishEndTag(false);
1277
- }
1278
- }
1279
- finishStartTag() {
1280
- let { name, attributes, modifiers, comments, selfClosing } = this.currentStartTag;
1281
- let loc = b.loc(this.tagOpenLine, this.tagOpenColumn);
1282
- let element = b.element({ name, selfClosing }, attributes, modifiers, [], comments, [], loc);
1283
- this.elementStack.push(element);
1284
- }
1285
- finishEndTag(isVoid) {
1286
- let tag = this.currentTag;
1287
- let element = this.elementStack.pop();
1288
- let parent = this.currentElement();
1289
- validateEndTag(tag, element, isVoid);
1290
- element.loc.end.line = this.tokenizer.line;
1291
- element.loc.end.column = this.tokenizer.column;
1292
- parseElementBlockParams(element);
1293
- appendChild(parent, element);
1294
- }
1295
- markTagAsSelfClosing() {
1296
- this.currentTag.selfClosing = true;
1297
- }
1298
- // Tags - name
1299
- appendToTagName(char) {
1300
- this.currentTag.name += char;
1301
- }
1302
- // Tags - attributes
1303
- beginAttribute() {
1304
- let tag = this.currentTag;
1305
- if (tag.type === 'EndTag') {
1306
- throw new SyntaxError(`Invalid end tag: closing tag must not have attributes, ` + `in \`${tag.name}\` (on line ${this.tokenizer.line}).`, tag.loc);
1307
- }
1308
- this.currentAttribute = {
1309
- name: '',
1310
- parts: [],
1311
- isQuoted: false,
1312
- isDynamic: false,
1313
- start: b.pos(this.tokenizer.line, this.tokenizer.column),
1314
- valueStartLine: 0,
1315
- valueStartColumn: 0
1316
- };
1317
- }
1318
- appendToAttributeName(char) {
1319
- this.currentAttr.name += char;
1320
- }
1321
- beginAttributeValue(isQuoted) {
1322
- this.currentAttr.isQuoted = isQuoted;
1323
- this.currentAttr.valueStartLine = this.tokenizer.line;
1324
- this.currentAttr.valueStartColumn = this.tokenizer.column;
1325
- }
1326
- appendToAttributeValue(char) {
1327
- let parts = this.currentAttr.parts;
1328
- let lastPart = parts[parts.length - 1];
1329
- if (lastPart && lastPart.type === 'TextNode') {
1330
- lastPart.chars += char;
1331
- // update end location for each added char
1332
- lastPart.loc.end.line = this.tokenizer.line;
1333
- lastPart.loc.end.column = this.tokenizer.column;
1334
- } else {
1335
- // initially assume the text node is a single char
1336
- let loc = b.loc(this.tokenizer.line, this.tokenizer.column, this.tokenizer.line, this.tokenizer.column);
1337
- // correct for `\n` as first char
1338
- if (char === '\n') {
1339
- loc.start.line -= 1;
1340
- loc.start.column = lastPart ? lastPart.loc.end.column : this.currentAttr.valueStartColumn;
1341
- }
1342
- let text = b.text(char, loc);
1343
- parts.push(text);
1344
- }
1345
- }
1346
- finishAttributeValue() {
1347
- let { name, parts, isQuoted, isDynamic, valueStartLine, valueStartColumn } = this.currentAttr;
1348
- let value = assembleAttributeValue(parts, isQuoted, isDynamic, this.tokenizer.line);
1349
- value.loc = b.loc(valueStartLine, valueStartColumn, this.tokenizer.line, this.tokenizer.column);
1350
- let loc = b.loc(this.currentAttr.start.line, this.currentAttr.start.column, this.tokenizer.line, this.tokenizer.column);
1351
- let attribute = b.attr(name, value, loc);
1352
- this.currentStartTag.attributes.push(attribute);
1353
- }
1354
- reportSyntaxError(message) {
1355
- throw new SyntaxError(`Syntax error at line ${this.tokenizer.line} col ${this.tokenizer.column}: ${message}`, b.loc(this.tokenizer.line, this.tokenizer.column));
1356
- }
1357
- }
1358
- function assembleAttributeValue(parts, isQuoted, isDynamic, line) {
1359
- if (isDynamic) {
1360
- if (isQuoted) {
1361
- return assembleConcatenatedValue(parts);
1362
- } else {
1363
- if (parts.length === 1 || parts.length === 2 && parts[1].type === 'TextNode' && parts[1].chars === '/') {
1364
- return parts[0];
1365
- } else {
1366
- throw new SyntaxError(`An unquoted attribute value must be a string or a mustache, ` + `preceeded by whitespace or a '=' character, and ` + `followed by whitespace, a '>' character, or '/>' (on line ${line})`, b.loc(line, 0));
1367
- }
1368
- }
1369
- } else {
1370
- return parts.length > 0 ? parts[0] : b.text('');
1371
- }
1372
- }
1373
- function assembleConcatenatedValue(parts) {
1374
- for (let i = 0; i < parts.length; i++) {
1375
- let part = parts[i];
1376
- if (part.type !== 'MustacheStatement' && part.type !== 'TextNode') {
1377
- throw new SyntaxError('Unsupported node in quoted attribute value: ' + part['type'], part.loc);
1378
- }
1379
- }
1380
- return b.concat(parts);
1381
- }
1382
- function validateEndTag(tag, element, selfClosing) {
1383
- let error;
1384
- if (voidMap[tag.name] && !selfClosing) {
1385
- // EngTag is also called by StartTag for void and self-closing tags (i.e.
1386
- // <input> or <br />, so we need to check for that here. Otherwise, we would
1387
- // throw an error for those cases.
1388
- error = 'Invalid end tag ' + formatEndTagInfo(tag) + ' (void elements cannot have end tags).';
1389
- } else if (element.tag === undefined) {
1390
- error = 'Closing tag ' + formatEndTagInfo(tag) + ' without an open tag.';
1391
- } else if (element.tag !== tag.name) {
1392
- error = 'Closing tag ' + formatEndTagInfo(tag) + ' did not match last open tag `' + element.tag + '` (on line ' + element.loc.start.line + ').';
1393
- }
1394
- if (error) {
1395
- throw new SyntaxError(error, element.loc);
1396
- }
1397
- }
1398
- function formatEndTagInfo(tag) {
1399
- return '`' + tag.name + '` (on line ' + tag.loc.end.line + ')';
1400
- }
1401
- const syntax = {
1402
- parse: preprocess,
1403
- builders: b,
1404
- print: build,
1405
- traverse,
1406
- Walker
1407
- };
1408
- function preprocess(html, options) {
1409
- let ast = typeof html === 'object' ? html : parse(html);
1410
- let program = new TokenizerEventHandlers(html).acceptNode(ast);
1411
- if (options && options.plugins && options.plugins.ast) {
1412
- for (let i = 0, l = options.plugins.ast.length; i < l; i++) {
1413
- let transform = options.plugins.ast[i];
1414
- let env = assign({}, options, { syntax }, { plugins: undefined });
1415
- let pluginResult = transform(env);
1416
- traverse(program, pluginResult.visitor);
1417
- }
1418
- }
1419
- return program;
1420
- }
1421
-
1422
- // used by ember-compiler
1423
-
1424
- export { nodes as AST, preprocess, b as builders, TraversalError, cannotRemoveNode, cannotReplaceNode, cannotReplaceOrRemoveInKeyHandlerYet, traverse, Walker, build as print, SyntaxError, isLiteral$1 as isLiteral, printLiteral };