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,39 +0,0 @@
1
- import { ENV } from 'ember-environment';
2
- import { w } from '@ember/string';
3
- import { moduleFor, AbstractTestCase } from 'internal-test-helpers';
4
-
5
- function test(assert, given, expected, description) {
6
- assert.deepEqual(w(given), expected, description);
7
- if (ENV.EXTEND_PROTOTYPES.String) {
8
- assert.deepEqual(given.w(), expected, description);
9
- }
10
- }
11
-
12
- moduleFor(
13
- 'EmberStringUtils.w',
14
- class extends AbstractTestCase {
15
- ['@test String.prototype.w is not available without EXTEND_PROTOTYPES'](assert) {
16
- if (!ENV.EXTEND_PROTOTYPES.String) {
17
- assert.ok('undefined' === typeof String.prototype.w, 'String.prototype helper disabled');
18
- } else {
19
- assert.expect(0);
20
- }
21
- }
22
-
23
- ['@test String w tests'](assert) {
24
- test(
25
- assert,
26
- 'one two three',
27
- ['one', 'two', 'three'],
28
- `w('one two three') => ['one','two','three']`
29
- );
30
- test(
31
- assert,
32
- 'one two three',
33
- ['one', 'two', 'three'],
34
- `w('one two three') with extra spaces between words => ['one','two','three']`
35
- );
36
- test(assert, 'one\ttwo three', ['one', 'two', 'three'], `w('one two three') with tabs`);
37
- }
38
- }
39
- );
@@ -1,1226 +0,0 @@
1
- import { dict, unreachable, Stack, DictSet } from '@glimmer/util';
2
- import { Ops, isModifier, isFlushElement, isArgument, isAttribute, isAttrSplat } from '@glimmer/wire-format';
3
- import { isLiteral, SyntaxError, preprocess } from '@glimmer/syntax';
4
-
5
- class SymbolTable {
6
- static top() {
7
- return new ProgramSymbolTable();
8
- }
9
- child(locals) {
10
- let symbols = locals.map(name => this.allocate(name));
11
- return new BlockSymbolTable(this, locals, symbols);
12
- }
13
- }
14
- class ProgramSymbolTable extends SymbolTable {
15
- constructor() {
16
- super(...arguments);
17
- this.symbols = [];
18
- this.size = 1;
19
- this.named = dict();
20
- this.blocks = dict();
21
- }
22
- has(_name) {
23
- return false;
24
- }
25
- get(_name) {
26
- throw unreachable();
27
- }
28
- getLocalsMap() {
29
- return {};
30
- }
31
- getEvalInfo() {
32
- return [];
33
- }
34
- allocateNamed(name) {
35
- let named = this.named[name];
36
- if (!named) {
37
- named = this.named[name] = this.allocate(name);
38
- }
39
- return named;
40
- }
41
- allocateBlock(name) {
42
- let block = this.blocks[name];
43
- if (!block) {
44
- block = this.blocks[name] = this.allocate(`&${name}`);
45
- }
46
- return block;
47
- }
48
- allocate(identifier) {
49
- this.symbols.push(identifier);
50
- return this.size++;
51
- }
52
- }
53
- class BlockSymbolTable extends SymbolTable {
54
- constructor(parent, symbols, slots) {
55
- super();
56
- this.parent = parent;
57
- this.symbols = symbols;
58
- this.slots = slots;
59
- }
60
- has(name) {
61
- return this.symbols.indexOf(name) !== -1 || this.parent.has(name);
62
- }
63
- get(name) {
64
- let slot = this.symbols.indexOf(name);
65
- return slot === -1 ? this.parent.get(name) : this.slots[slot];
66
- }
67
- getLocalsMap() {
68
- let dict$$1 = this.parent.getLocalsMap();
69
- this.symbols.forEach(symbol => dict$$1[symbol] = this.get(symbol));
70
- return dict$$1;
71
- }
72
- getEvalInfo() {
73
- let locals = this.getLocalsMap();
74
- return Object.keys(locals).map(symbol => locals[symbol]);
75
- }
76
- allocateNamed(name) {
77
- return this.parent.allocateNamed(name);
78
- }
79
- allocateBlock(name) {
80
- return this.parent.allocateBlock(name);
81
- }
82
- allocate(identifier) {
83
- return this.parent.allocate(identifier);
84
- }
85
- }
86
- /**
87
- * Takes in an AST and outputs a list of actions to be consumed
88
- * by a compiler. For example, the template
89
- *
90
- * foo{{bar}}<div>baz</div>
91
- *
92
- * produces the actions
93
- *
94
- * [['startProgram', [programNode, 0]],
95
- * ['text', [textNode, 0, 3]],
96
- * ['mustache', [mustacheNode, 1, 3]],
97
- * ['openElement', [elementNode, 2, 3, 0]],
98
- * ['text', [textNode, 0, 1]],
99
- * ['closeElement', [elementNode, 2, 3],
100
- * ['endProgram', [programNode]]]
101
- *
102
- * This visitor walks the AST depth first and backwards. As
103
- * a result the bottom-most child template will appear at the
104
- * top of the actions list whereas the root template will appear
105
- * at the bottom of the list. For example,
106
- *
107
- * <div>{{#if}}foo{{else}}bar<b></b>{{/if}}</div>
108
- *
109
- * produces the actions
110
- *
111
- * [['startProgram', [programNode, 0]],
112
- * ['text', [textNode, 0, 2, 0]],
113
- * ['openElement', [elementNode, 1, 2, 0]],
114
- * ['closeElement', [elementNode, 1, 2]],
115
- * ['endProgram', [programNode]],
116
- * ['startProgram', [programNode, 0]],
117
- * ['text', [textNode, 0, 1]],
118
- * ['endProgram', [programNode]],
119
- * ['startProgram', [programNode, 2]],
120
- * ['openElement', [elementNode, 0, 1, 1]],
121
- * ['block', [blockNode, 0, 1]],
122
- * ['closeElement', [elementNode, 0, 1]],
123
- * ['endProgram', [programNode]]]
124
- *
125
- * The state of the traversal is maintained by a stack of frames.
126
- * Whenever a node with children is entered (either a ProgramNode
127
- * or an ElementNode) a frame is pushed onto the stack. The frame
128
- * contains information about the state of the traversal of that
129
- * node. For example,
130
- *
131
- * - index of the current child node being visited
132
- * - the number of mustaches contained within its child nodes
133
- * - the list of actions generated by its child nodes
134
- */
135
- class Frame {
136
- constructor() {
137
- this.parentNode = null;
138
- this.children = null;
139
- this.childIndex = null;
140
- this.childCount = null;
141
- this.childTemplateCount = 0;
142
- this.mustacheCount = 0;
143
- this.actions = [];
144
- this.blankChildTextNodes = null;
145
- this.symbols = null;
146
- }
147
- }
148
- class TemplateVisitor {
149
- constructor() {
150
- this.frameStack = [];
151
- this.actions = [];
152
- this.programDepth = -1;
153
- }
154
- visit(node) {
155
- this[node.type](node);
156
- }
157
- // Traversal methods
158
- Program(program) {
159
- this.programDepth++;
160
- let parentFrame = this.getCurrentFrame();
161
- let programFrame = this.pushFrame();
162
- if (!parentFrame) {
163
- program['symbols'] = SymbolTable.top();
164
- } else {
165
- program['symbols'] = parentFrame.symbols.child(program.blockParams);
166
- }
167
- let startType, endType;
168
- if (this.programDepth === 0) {
169
- startType = 'startProgram';
170
- endType = 'endProgram';
171
- } else {
172
- startType = 'startBlock';
173
- endType = 'endBlock';
174
- }
175
- programFrame.parentNode = program;
176
- programFrame.children = program.body;
177
- programFrame.childCount = program.body.length;
178
- programFrame.blankChildTextNodes = [];
179
- programFrame.actions.push([endType, [program, this.programDepth]]);
180
- programFrame.symbols = program['symbols'];
181
- for (let i = program.body.length - 1; i >= 0; i--) {
182
- programFrame.childIndex = i;
183
- this.visit(program.body[i]);
184
- }
185
- programFrame.actions.push([startType, [program, programFrame.childTemplateCount, programFrame.blankChildTextNodes.reverse()]]);
186
- this.popFrame();
187
- this.programDepth--;
188
- // Push the completed template into the global actions list
189
- if (parentFrame) {
190
- parentFrame.childTemplateCount++;
191
- }
192
- this.actions.push(...programFrame.actions.reverse());
193
- }
194
- ElementNode(element) {
195
- let parentFrame = this.currentFrame;
196
- let elementFrame = this.pushFrame();
197
- elementFrame.parentNode = element;
198
- elementFrame.children = element.children;
199
- elementFrame.childCount = element.children.length;
200
- elementFrame.mustacheCount += element.modifiers.length;
201
- elementFrame.blankChildTextNodes = [];
202
- elementFrame.symbols = element['symbols'] = parentFrame.symbols.child(element.blockParams);
203
- let actionArgs = [element, parentFrame.childIndex, parentFrame.childCount];
204
- elementFrame.actions.push(['closeElement', actionArgs]);
205
- for (let i = element.attributes.length - 1; i >= 0; i--) {
206
- this.visit(element.attributes[i]);
207
- }
208
- for (let i = element.children.length - 1; i >= 0; i--) {
209
- elementFrame.childIndex = i;
210
- this.visit(element.children[i]);
211
- }
212
- let open = ['openElement', [...actionArgs, elementFrame.mustacheCount, elementFrame.blankChildTextNodes.reverse()]];
213
- elementFrame.actions.push(open);
214
- this.popFrame();
215
- // Propagate the element's frame state to the parent frame
216
- if (elementFrame.mustacheCount > 0) {
217
- parentFrame.mustacheCount++;
218
- }
219
- parentFrame.childTemplateCount += elementFrame.childTemplateCount;
220
- parentFrame.actions.push(...elementFrame.actions);
221
- }
222
- AttrNode(attr) {
223
- if (attr.value.type !== 'TextNode') {
224
- this.currentFrame.mustacheCount++;
225
- }
226
- }
227
- TextNode(text) {
228
- let frame = this.currentFrame;
229
- if (text.chars === '') {
230
- frame.blankChildTextNodes.push(domIndexOf(frame.children, text));
231
- }
232
- frame.actions.push(['text', [text, frame.childIndex, frame.childCount]]);
233
- }
234
- BlockStatement(node) {
235
- let frame = this.currentFrame;
236
- frame.mustacheCount++;
237
- frame.actions.push(['block', [node, frame.childIndex, frame.childCount]]);
238
- if (node.inverse) {
239
- this.visit(node.inverse);
240
- }
241
- if (node.program) {
242
- this.visit(node.program);
243
- }
244
- }
245
- PartialStatement(node) {
246
- let frame = this.currentFrame;
247
- frame.mustacheCount++;
248
- frame.actions.push(['mustache', [node, frame.childIndex, frame.childCount]]);
249
- }
250
- CommentStatement(text) {
251
- let frame = this.currentFrame;
252
- frame.actions.push(['comment', [text, frame.childIndex, frame.childCount]]);
253
- }
254
- MustacheCommentStatement() {
255
- // Intentional empty: Handlebars comments should not affect output.
256
- }
257
- MustacheStatement(mustache) {
258
- let frame = this.currentFrame;
259
- frame.mustacheCount++;
260
- frame.actions.push(['mustache', [mustache, frame.childIndex, frame.childCount]]);
261
- }
262
- // Frame helpers
263
- get currentFrame() {
264
- return this.getCurrentFrame();
265
- }
266
- getCurrentFrame() {
267
- return this.frameStack[this.frameStack.length - 1];
268
- }
269
- pushFrame() {
270
- let frame = new Frame();
271
- this.frameStack.push(frame);
272
- return frame;
273
- }
274
- popFrame() {
275
- return this.frameStack.pop();
276
- }
277
- }
278
- // Returns the index of `domNode` in the `nodes` array, skipping
279
- // over any nodes which do not represent DOM nodes.
280
- function domIndexOf(nodes, domNode) {
281
- let index = -1;
282
- for (let i = 0; i < nodes.length; i++) {
283
- let node = nodes[i];
284
- if (node.type !== 'TextNode' && node.type !== 'ElementNode') {
285
- continue;
286
- } else {
287
- index++;
288
- }
289
- if (node === domNode) {
290
- return index;
291
- }
292
- }
293
- return -1;
294
- }
295
-
296
- class Block {
297
- constructor() {
298
- this.statements = [];
299
- }
300
- push(statement) {
301
- this.statements.push(statement);
302
- }
303
- }
304
- class InlineBlock extends Block {
305
- constructor(table) {
306
- super();
307
- this.table = table;
308
- }
309
- toJSON() {
310
- return {
311
- statements: this.statements,
312
- parameters: this.table.slots
313
- };
314
- }
315
- }
316
- class TemplateBlock extends Block {
317
- constructor(symbolTable) {
318
- super();
319
- this.symbolTable = symbolTable;
320
- this.type = 'template';
321
- this.yields = new DictSet();
322
- this.named = new DictSet();
323
- this.blocks = [];
324
- this.hasEval = false;
325
- }
326
- push(statement) {
327
- this.statements.push(statement);
328
- }
329
- toJSON() {
330
- return {
331
- symbols: this.symbolTable.symbols,
332
- statements: this.statements,
333
- hasEval: this.hasEval
334
- };
335
- }
336
- }
337
- class ComponentBlock extends Block {
338
- constructor(tag, table, selfClosing) {
339
- super();
340
- this.tag = tag;
341
- this.table = table;
342
- this.selfClosing = selfClosing;
343
- this.attributes = [];
344
- this.arguments = [];
345
- this.inParams = true;
346
- this.positionals = [];
347
- }
348
- push(statement) {
349
- if (this.inParams) {
350
- if (isModifier(statement)) {
351
- throw new Error('Compile Error: Element modifiers are not allowed in components');
352
- } else if (isFlushElement(statement)) {
353
- this.inParams = false;
354
- } else if (isArgument(statement)) {
355
- this.arguments.push(statement);
356
- } else if (isAttribute(statement)) {
357
- this.attributes.push(statement);
358
- } else if (isAttrSplat(statement)) {
359
- this.attributes.push(statement);
360
- } else {
361
- throw new Error('Compile Error: only parameters allowed before flush-element');
362
- }
363
- } else {
364
- this.statements.push(statement);
365
- }
366
- }
367
- toJSON() {
368
- let args = this.arguments;
369
- let keys = args.map(arg => arg[1]);
370
- let values = args.map(arg => arg[2]);
371
- let block = this.selfClosing ? null : {
372
- statements: this.statements,
373
- parameters: this.table.slots
374
- };
375
- return [this.tag, this.attributes, [keys, values], block];
376
- }
377
- }
378
- class Template {
379
- constructor(symbols) {
380
- this.block = new TemplateBlock(symbols);
381
- }
382
- toJSON() {
383
- return this.block.toJSON();
384
- }
385
- }
386
- class JavaScriptCompiler {
387
- constructor(opcodes, symbols, options) {
388
- this.blocks = new Stack();
389
- this.values = [];
390
- this.opcodes = opcodes;
391
- this.template = new Template(symbols);
392
- this.options = options;
393
- }
394
- static process(opcodes, symbols, options) {
395
- let compiler = new JavaScriptCompiler(opcodes, symbols, options);
396
- return compiler.process();
397
- }
398
- get currentBlock() {
399
- return this.blocks.current;
400
- }
401
- process() {
402
- this.opcodes.forEach(op => {
403
- let opcode = op[0];
404
- let arg = op[1];
405
- if (!this[opcode]) {
406
- throw new Error(`unimplemented ${opcode} on JavaScriptCompiler`);
407
- }
408
- this[opcode](arg);
409
- });
410
- return this.template;
411
- }
412
- /// Nesting
413
- startBlock(program) {
414
- let block = new InlineBlock(program['symbols']);
415
- this.blocks.push(block);
416
- }
417
- endBlock() {
418
- let { template, blocks } = this;
419
- let block = blocks.pop();
420
- template.block.blocks.push(block.toJSON());
421
- }
422
- startProgram() {
423
- this.blocks.push(this.template.block);
424
- }
425
- endProgram() {}
426
- /// Statements
427
- text(content) {
428
- this.push([Ops.Text, content]);
429
- }
430
- append(trusted) {
431
- this.push([Ops.Append, this.popValue(), trusted]);
432
- }
433
- comment(value) {
434
- this.push([Ops.Comment, value]);
435
- }
436
- modifier(name) {
437
- let params = this.popValue();
438
- let hash = this.popValue();
439
- this.push([Ops.Modifier, name, params, hash]);
440
- }
441
- block([name, template, inverse]) {
442
- let params = this.popValue();
443
- let hash = this.popValue();
444
- let blocks = this.template.block.blocks;
445
-
446
- this.push([Ops.Block, name, params, hash, blocks[template], blocks[inverse]]);
447
- }
448
- openComponent(element) {
449
- let tag = this.options && this.options.customizeComponentName ? this.options.customizeComponentName(element.tag) : element.tag;
450
- let component = new ComponentBlock(tag, element['symbols'], element.selfClosing);
451
- this.blocks.push(component);
452
- }
453
- openSplattedElement(element) {
454
- let tag = element.tag;
455
- if (element.blockParams.length > 0) {
456
- throw new Error(`Compile Error: <${element.tag}> is not a component and doesn't support block parameters`);
457
- } else {
458
- this.push([Ops.OpenSplattedElement, tag]);
459
- }
460
- }
461
- openElement(element) {
462
- let tag = element.tag;
463
- if (element.blockParams.length > 0) {
464
- throw new Error(`Compile Error: <${element.tag}> is not a component and doesn't support block parameters`);
465
- } else {
466
- this.push([Ops.OpenElement, tag]);
467
- }
468
- }
469
- flushElement() {
470
- this.push([Ops.FlushElement]);
471
- }
472
- closeComponent(_element) {
473
- let [tag, attrs, args, block] = this.endComponent();
474
- this.push([Ops.Component, tag, attrs, args, block]);
475
- }
476
- closeDynamicComponent(_element) {
477
- let [, attrs, args, block] = this.endComponent();
478
- this.push([Ops.DynamicComponent, this.popValue(), attrs, args, block]);
479
- }
480
- closeElement(_element) {
481
- this.push([Ops.CloseElement]);
482
- }
483
- staticAttr([name, namespace]) {
484
- let value = this.popValue();
485
- this.push([Ops.StaticAttr, name, value, namespace]);
486
- }
487
- dynamicAttr([name, namespace]) {
488
- let value = this.popValue();
489
- this.push([Ops.DynamicAttr, name, value, namespace]);
490
- }
491
- trustingAttr([name, namespace]) {
492
- let value = this.popValue();
493
- this.push([Ops.TrustingAttr, name, value, namespace]);
494
- }
495
- staticArg(name) {
496
- let value = this.popValue();
497
- this.push([Ops.StaticArg, name, value]);
498
- }
499
- dynamicArg(name) {
500
- let value = this.popValue();
501
- this.push([Ops.DynamicArg, name, value]);
502
- }
503
- yield(to) {
504
- let params = this.popValue();
505
- this.push([Ops.Yield, to, params]);
506
- }
507
- attrSplat(to) {
508
- this.push([Ops.AttrSplat, to]);
509
- }
510
- debugger(evalInfo) {
511
- this.push([Ops.Debugger, evalInfo]);
512
- this.template.block.hasEval = true;
513
- }
514
- hasBlock(name) {
515
- this.pushValue([Ops.HasBlock, name]);
516
- }
517
- hasBlockParams(name) {
518
- this.pushValue([Ops.HasBlockParams, name]);
519
- }
520
- partial(evalInfo) {
521
- let params = this.popValue();
522
- this.push([Ops.Partial, params[0], evalInfo]);
523
- this.template.block.hasEval = true;
524
- }
525
- /// Expressions
526
- literal(value) {
527
- if (value === undefined) {
528
- this.pushValue([Ops.Undefined]);
529
- } else {
530
- this.pushValue(value);
531
- }
532
- }
533
- unknown(name) {
534
- this.pushValue([Ops.Unknown, name]);
535
- }
536
- get([head, path]) {
537
- this.pushValue([Ops.Get, head, path]);
538
- }
539
- maybeLocal(path) {
540
- this.pushValue([Ops.MaybeLocal, path]);
541
- }
542
- concat() {
543
- this.pushValue([Ops.Concat, this.popValue()]);
544
- }
545
- helper(name) {
546
- let params = this.popValue();
547
- let hash = this.popValue();
548
- this.pushValue([Ops.Helper, name, params, hash]);
549
- }
550
- /// Stack Management Opcodes
551
- prepareArray(size) {
552
- let values = [];
553
- for (let i = 0; i < size; i++) {
554
- values.push(this.popValue());
555
- }
556
- this.pushValue(values);
557
- }
558
- prepareObject(size) {
559
-
560
- let keys = new Array(size);
561
- let values = new Array(size);
562
- for (let i = 0; i < size; i++) {
563
- keys[i] = this.popValue();
564
- values[i] = this.popValue();
565
- }
566
- this.pushValue([keys, values]);
567
- }
568
- /// Utilities
569
- endComponent() {
570
- let component = this.blocks.pop();
571
-
572
- return component.toJSON();
573
- }
574
- push(args) {
575
- while (args[args.length - 1] === null) {
576
- args.pop();
577
- }
578
- this.currentBlock.push(args);
579
- }
580
- pushValue(val) {
581
- this.values.push(val);
582
- }
583
- popValue() {
584
-
585
- return this.values.pop();
586
- }
587
- }
588
-
589
- // There is a small whitelist of namespaced attributes specially
590
- // enumerated in
591
- // https://www.w3.org/TR/html/syntax.html#attributes-0
592
- //
593
- // > When a foreign element has one of the namespaced attributes given by
594
- // > the local name and namespace of the first and second cells of a row
595
- // > from the following table, it must be written using the name given by
596
- // > the third cell from the same row.
597
- //
598
- // In all other cases, colons are interpreted as a regular character
599
- // with no special meaning:
600
- //
601
- // > No other namespaced attribute can be expressed in the HTML syntax.
602
- const XLINK = 'http://www.w3.org/1999/xlink';
603
- const XML = 'http://www.w3.org/XML/1998/namespace';
604
- const XMLNS = 'http://www.w3.org/2000/xmlns/';
605
- const WHITELIST = {
606
- 'xlink:actuate': XLINK,
607
- 'xlink:arcrole': XLINK,
608
- 'xlink:href': XLINK,
609
- 'xlink:role': XLINK,
610
- 'xlink:show': XLINK,
611
- 'xlink:title': XLINK,
612
- 'xlink:type': XLINK,
613
- 'xml:base': XML,
614
- 'xml:lang': XML,
615
- 'xml:space': XML,
616
- xmlns: XMLNS,
617
- 'xmlns:xlink': XMLNS
618
- };
619
- function getAttrNamespace(attrName) {
620
- return WHITELIST[attrName] || null;
621
- }
622
-
623
- class SymbolAllocator {
624
- constructor(ops) {
625
- this.ops = ops;
626
- this.symbolStack = new Stack();
627
- }
628
- process() {
629
- let out = [];
630
- let { ops } = this;
631
- for (let i = 0; i < ops.length; i++) {
632
- let op = ops[i];
633
- let result = this.dispatch(op);
634
- if (result === undefined) {
635
- out.push(op);
636
- } else {
637
- out.push(result);
638
- }
639
- }
640
- return out;
641
- }
642
- dispatch(op) {
643
- let name = op[0];
644
- let operand = op[1];
645
- return this[name](operand);
646
- }
647
- get symbols() {
648
- return this.symbolStack.current;
649
- }
650
- startProgram(op) {
651
- this.symbolStack.push(op['symbols']);
652
- }
653
- endProgram(_op) {
654
- this.symbolStack.pop();
655
- }
656
- startBlock(op) {
657
- this.symbolStack.push(op['symbols']);
658
- }
659
- endBlock(_op) {
660
- this.symbolStack.pop();
661
- }
662
- flushElement(op) {
663
- this.symbolStack.push(op['symbols']);
664
- }
665
- closeElement(_op) {
666
- this.symbolStack.pop();
667
- }
668
- closeComponent(_op) {
669
- this.symbolStack.pop();
670
- }
671
- closeDynamicComponent(_op) {
672
- this.symbolStack.pop();
673
- }
674
- attrSplat(_op) {
675
- return ['attrSplat', this.symbols.allocateBlock('attrs')];
676
- }
677
- get(op) {
678
- let [name, rest] = op;
679
- if (name === 0) {
680
- return ['get', [0, rest]];
681
- }
682
- if (isLocal(name, this.symbols)) {
683
- let head = this.symbols.get(name);
684
- return ['get', [head, rest]];
685
- } else if (name[0] === '@') {
686
- let head = this.symbols.allocateNamed(name);
687
- return ['get', [head, rest]];
688
- } else {
689
- return ['maybeLocal', [name, ...rest]];
690
- }
691
- }
692
- maybeGet(op) {
693
- let [name, rest] = op;
694
- if (name === 0) {
695
- return ['get', [0, rest]];
696
- }
697
- if (isLocal(name, this.symbols)) {
698
- let head = this.symbols.get(name);
699
- return ['get', [head, rest]];
700
- } else if (name[0] === '@') {
701
- let head = this.symbols.allocateNamed(name);
702
- return ['get', [head, rest]];
703
- } else if (rest.length === 0) {
704
- return ['unknown', name];
705
- } else {
706
- return ['maybeLocal', [name, ...rest]];
707
- }
708
- }
709
- yield(op) {
710
- if (op === 0) {
711
- throw new Error('Cannot yield to this');
712
- }
713
- return ['yield', this.symbols.allocateBlock(op)];
714
- }
715
- debugger(_op) {
716
- return ['debugger', this.symbols.getEvalInfo()];
717
- }
718
- hasBlock(op) {
719
- if (op === 0) {
720
- throw new Error('Cannot hasBlock this');
721
- }
722
- return ['hasBlock', this.symbols.allocateBlock(op)];
723
- }
724
- hasBlockParams(op) {
725
- if (op === 0) {
726
- throw new Error('Cannot hasBlockParams this');
727
- }
728
- return ['hasBlockParams', this.symbols.allocateBlock(op)];
729
- }
730
- partial(_op) {
731
- return ['partial', this.symbols.getEvalInfo()];
732
- }
733
- text(_op) {}
734
- comment(_op) {}
735
- openComponent(_op) {}
736
- openElement(_op) {}
737
- openSplattedElement(_op) {}
738
- staticArg(_op) {}
739
- dynamicArg(_op) {}
740
- staticAttr(_op) {}
741
- trustingAttr(_op) {}
742
- dynamicAttr(_op) {}
743
- modifier(_op) {}
744
- append(_op) {}
745
- block(_op) {}
746
- literal(_op) {}
747
- helper(_op) {}
748
- unknown(_op) {}
749
- maybeLocal(_op) {}
750
- prepareArray(_op) {}
751
- prepareObject(_op) {}
752
- concat(_op) {}
753
- }
754
- function isLocal(name, symbols) {
755
- return symbols && symbols.has(name);
756
- }
757
-
758
- function isTrustedValue(value) {
759
- return value.escaped !== undefined && !value.escaped;
760
- }
761
- class TemplateCompiler {
762
- constructor() {
763
- this.templateId = 0;
764
- this.templateIds = [];
765
- this.opcodes = [];
766
- this.includeMeta = false;
767
- }
768
- static compile(ast, options) {
769
- let templateVisitor = new TemplateVisitor();
770
- templateVisitor.visit(ast);
771
- let compiler = new TemplateCompiler();
772
- let opcodes = compiler.process(templateVisitor.actions);
773
- let symbols = new SymbolAllocator(opcodes).process();
774
- return JavaScriptCompiler.process(symbols, ast['symbols'], options);
775
- }
776
- process(actions) {
777
- actions.forEach(([name, ...args]) => {
778
- if (!this[name]) {
779
- throw new Error(`Unimplemented ${name} on TemplateCompiler`);
780
- }
781
- this[name](...args);
782
- });
783
- return this.opcodes;
784
- }
785
- startProgram([program]) {
786
- this.opcode(['startProgram', program], program);
787
- }
788
- endProgram() {
789
- this.opcode(['endProgram', null], null);
790
- }
791
- startBlock([program]) {
792
- this.templateId++;
793
- this.opcode(['startBlock', program], program);
794
- }
795
- endBlock() {
796
- this.templateIds.push(this.templateId - 1);
797
- this.opcode(['endBlock', null], null);
798
- }
799
- text([action]) {
800
- this.opcode(['text', action.chars], action);
801
- }
802
- comment([action]) {
803
- this.opcode(['comment', action.value], action);
804
- }
805
- openElement([action]) {
806
- let attributes = action.attributes;
807
- let hasSplat;
808
- for (let i = 0; i < attributes.length; i++) {
809
- let attr = attributes[i];
810
- if (attr.name === '...attributes') {
811
- hasSplat = attr;
812
- break;
813
- }
814
- }
815
- if (isDynamicComponent(action)) {
816
- let head, rest;
817
- [head, ...rest] = action.tag.split('.');
818
- if (head === 'this') {
819
- head = 0;
820
- }
821
- this.opcode(['get', [head, rest]]);
822
- this.opcode(['openComponent', action], action);
823
- } else if (isComponent(action)) {
824
- this.opcode(['openComponent', action], action);
825
- } else if (hasSplat) {
826
- this.opcode(['openSplattedElement', action], action);
827
- } else {
828
- this.opcode(['openElement', action], action);
829
- }
830
- let typeAttr = null;
831
- let attrs = action.attributes;
832
- for (let i = 0; i < attrs.length; i++) {
833
- if (attrs[i].name === 'type') {
834
- typeAttr = attrs[i];
835
- continue;
836
- }
837
- this.attribute([attrs[i]]);
838
- }
839
- if (typeAttr) {
840
- this.attribute([typeAttr]);
841
- }
842
- for (let i = 0; i < action.modifiers.length; i++) {
843
- this.modifier([action.modifiers[i]]);
844
- }
845
- this.opcode(['flushElement', action], null);
846
- }
847
- closeElement([action]) {
848
- if (isDynamicComponent(action)) {
849
- this.opcode(['closeDynamicComponent', action], action);
850
- } else if (isComponent(action)) {
851
- this.opcode(['closeComponent', action], action);
852
- } else {
853
- this.opcode(['closeElement', action], action);
854
- }
855
- }
856
- attribute([action]) {
857
- let { name, value } = action;
858
- let namespace = getAttrNamespace(name);
859
- let isStatic = this.prepareAttributeValue(value);
860
- if (name.charAt(0) === '@') {
861
- // Arguments
862
- if (isStatic) {
863
- this.opcode(['staticArg', name], action);
864
- } else if (action.value.type === 'MustacheStatement') {
865
- this.opcode(['dynamicArg', name], action);
866
- } else {
867
- this.opcode(['dynamicArg', name], action);
868
- }
869
- } else {
870
- let isTrusting = isTrustedValue(value);
871
- if (isStatic && name === '...attributes') {
872
- this.opcode(['attrSplat', null], action);
873
- } else if (isStatic) {
874
- this.opcode(['staticAttr', [name, namespace]], action);
875
- } else if (isTrusting) {
876
- this.opcode(['trustingAttr', [name, namespace]], action);
877
- } else if (action.value.type === 'MustacheStatement') {
878
- this.opcode(['dynamicAttr', [name, null]], action);
879
- } else {
880
- this.opcode(['dynamicAttr', [name, namespace]], action);
881
- }
882
- }
883
- }
884
- modifier([action]) {
885
- assertIsSimplePath(action.path, action.loc, 'modifier');
886
- let { path: { parts } } = action;
887
- this.prepareHelper(action);
888
- this.opcode(['modifier', parts[0]], action);
889
- }
890
- mustache([action]) {
891
- let { path } = action;
892
- if (isLiteral(path)) {
893
- this.mustacheExpression(action);
894
- this.opcode(['append', !action.escaped], action);
895
- } else if (isYield(path)) {
896
- let to = assertValidYield(action);
897
- this.yield(to, action);
898
- } else if (isPartial(path)) {
899
- let params = assertValidPartial(action);
900
- this.partial(params, action);
901
- } else if (isDebugger(path)) {
902
- assertValidDebuggerUsage(action);
903
- this.debugger('debugger', action);
904
- } else {
905
- this.mustacheExpression(action);
906
- this.opcode(['append', !action.escaped], action);
907
- }
908
- }
909
- block([action /*, index, count*/]) {
910
- this.prepareHelper(action);
911
- let templateId = this.templateIds.pop();
912
- let inverseId = action.inverse === null ? null : this.templateIds.pop();
913
- this.opcode(['block', [action.path.parts[0], templateId, inverseId]], action);
914
- }
915
- /// Internal actions, not found in the original processed actions
916
- arg([path]) {
917
- let { parts: [head, ...rest] } = path;
918
- this.opcode(['get', [`@${head}`, rest]], path);
919
- }
920
- mustacheExpression(expr) {
921
- let { path } = expr;
922
- if (isLiteral(path)) {
923
- this.opcode(['literal', path.value], expr);
924
- } else if (isBuiltInHelper(path)) {
925
- this.builtInHelper(expr);
926
- } else if (isArg(path)) {
927
- this.arg([path]);
928
- } else if (isHelperInvocation(expr)) {
929
- this.prepareHelper(expr);
930
- this.opcode(['helper', path.parts[0]], expr);
931
- } else if (path.this) {
932
- this.opcode(['get', [0, path.parts]], expr);
933
- } else {
934
- let [head, ...parts] = path.parts;
935
- this.opcode(['maybeGet', [head, parts]], expr);
936
- }
937
- // } else if (isLocal(path, this.symbols)) {
938
- // let [head, ...parts] = path.parts;
939
- // this.opcode(['get', [head, parts]], expr);
940
- // } else if (isSimplePath(path)) {
941
- // this.opcode(['unknown', path.parts[0]], expr);
942
- // } else {
943
- // this.opcode(['maybeLocal', path.parts], expr);
944
- // }
945
- }
946
- /// Internal Syntax
947
- yield(to, action) {
948
- this.prepareParams(action.params);
949
- this.opcode(['yield', to], action);
950
- }
951
- debugger(_name, action) {
952
- this.opcode(['debugger', null], action);
953
- }
954
- hasBlock(name, action) {
955
- this.opcode(['hasBlock', name], action);
956
- }
957
- hasBlockParams(name, action) {
958
- this.opcode(['hasBlockParams', name], action);
959
- }
960
- partial(_params, action) {
961
- this.prepareParams(action.params);
962
- this.opcode(['partial', null], action);
963
- }
964
- builtInHelper(expr) {
965
- let { path } = expr;
966
- if (isHasBlock(path)) {
967
- let name = assertValidHasBlockUsage(expr.path.original, expr);
968
- this.hasBlock(name, expr);
969
- } else if (isHasBlockParams(path)) {
970
- let name = assertValidHasBlockUsage(expr.path.original, expr);
971
- this.hasBlockParams(name, expr);
972
- }
973
- }
974
- /// Expressions, invoked recursively from prepareParams and prepareHash
975
- SubExpression(expr) {
976
- if (isBuiltInHelper(expr.path)) {
977
- this.builtInHelper(expr);
978
- } else {
979
- this.prepareHelper(expr);
980
- this.opcode(['helper', expr.path.parts[0]], expr);
981
- }
982
- }
983
- PathExpression(expr) {
984
- if (expr.data) {
985
- this.arg([expr]);
986
- } else {
987
- let [head, ...rest] = expr.parts;
988
- if (expr.this) {
989
- this.opcode(['get', [0, expr.parts]], expr);
990
- } else {
991
- this.opcode(['get', [head, rest]], expr);
992
- }
993
- }
994
- }
995
- StringLiteral(action) {
996
- this.opcode(['literal', action.value], action);
997
- }
998
- BooleanLiteral(action) {
999
- this.opcode(['literal', action.value], action);
1000
- }
1001
- NumberLiteral(action) {
1002
- this.opcode(['literal', action.value], action);
1003
- }
1004
- NullLiteral(action) {
1005
- this.opcode(['literal', action.value], action);
1006
- }
1007
- UndefinedLiteral(action) {
1008
- this.opcode(['literal', action.value], action);
1009
- }
1010
- /// Utilities
1011
- opcode(opcode, action = null) {
1012
- // TODO: This doesn't really work
1013
- if (this.includeMeta && action) {
1014
- opcode.push(this.meta(action));
1015
- }
1016
- this.opcodes.push(opcode);
1017
- }
1018
- prepareHelper(expr) {
1019
- assertIsSimplePath(expr.path, expr.loc, 'helper');
1020
- let { params, hash } = expr;
1021
- this.prepareHash(hash);
1022
- this.prepareParams(params);
1023
- }
1024
- prepareParams(params) {
1025
- if (!params.length) {
1026
- this.opcode(['literal', null], null);
1027
- return;
1028
- }
1029
- for (let i = params.length - 1; i >= 0; i--) {
1030
- let param = params[i];
1031
-
1032
- this[param.type](param);
1033
- }
1034
- this.opcode(['prepareArray', params.length], null);
1035
- }
1036
- prepareHash(hash) {
1037
- let pairs = hash.pairs;
1038
- if (!pairs.length) {
1039
- this.opcode(['literal', null], null);
1040
- return;
1041
- }
1042
- for (let i = pairs.length - 1; i >= 0; i--) {
1043
- let { key, value } = pairs[i];
1044
-
1045
- this[value.type](value);
1046
- this.opcode(['literal', key], null);
1047
- }
1048
- this.opcode(['prepareObject', pairs.length], null);
1049
- }
1050
- prepareAttributeValue(value) {
1051
- // returns the static value if the value is static
1052
- switch (value.type) {
1053
- case 'TextNode':
1054
- this.opcode(['literal', value.chars], value);
1055
- return true;
1056
- case 'MustacheStatement':
1057
- this.attributeMustache([value]);
1058
- return false;
1059
- case 'ConcatStatement':
1060
- this.prepareConcatParts(value.parts);
1061
- this.opcode(['concat', null], value);
1062
- return false;
1063
- }
1064
- }
1065
- prepareConcatParts(parts) {
1066
- for (let i = parts.length - 1; i >= 0; i--) {
1067
- let part = parts[i];
1068
- if (part.type === 'MustacheStatement') {
1069
- this.attributeMustache([part]);
1070
- } else if (part.type === 'TextNode') {
1071
- this.opcode(['literal', part.chars], null);
1072
- }
1073
- }
1074
- this.opcode(['prepareArray', parts.length], null);
1075
- }
1076
- attributeMustache([action]) {
1077
- this.mustacheExpression(action);
1078
- }
1079
- meta(node) {
1080
- let loc = node.loc;
1081
- if (!loc) {
1082
- return [];
1083
- }
1084
- let { source, start, end } = loc;
1085
- return ['loc', [source || null, [start.line, start.column], [end.line, end.column]]];
1086
- }
1087
- }
1088
- function isHelperInvocation(mustache) {
1089
- return mustache.params && mustache.params.length > 0 || mustache.hash && mustache.hash.pairs.length > 0;
1090
- }
1091
- function isSimplePath({ parts }) {
1092
- return parts.length === 1;
1093
- }
1094
- function isYield(path) {
1095
- return path.original === 'yield';
1096
- }
1097
- function isPartial(path) {
1098
- return path.original === 'partial';
1099
- }
1100
- function isDebugger(path) {
1101
- return path.original === 'debugger';
1102
- }
1103
- function isHasBlock(path) {
1104
- return path.original === 'has-block';
1105
- }
1106
- function isHasBlockParams(path) {
1107
- return path.original === 'has-block-params';
1108
- }
1109
- function isBuiltInHelper(path) {
1110
- return isHasBlock(path) || isHasBlockParams(path);
1111
- }
1112
- function isArg(path) {
1113
- return !!path['data'];
1114
- }
1115
- function isDynamicComponent(element) {
1116
- let open = element.tag.charAt(0);
1117
- let [maybeLocal] = element.tag.split('.');
1118
- let isNamedArgument = open === '@';
1119
- let isLocal = element['symbols'].has(maybeLocal);
1120
- let isThisPath = element.tag.indexOf('this.') === 0;
1121
- return isLocal || isNamedArgument || isThisPath;
1122
- }
1123
- function isComponent(element) {
1124
- let open = element.tag.charAt(0);
1125
- let isPath = element.tag.indexOf('.') > -1;
1126
- let isUpperCase = open === open.toUpperCase() && open !== open.toLowerCase();
1127
- return isUpperCase && !isPath || isDynamicComponent(element);
1128
- }
1129
- function assertIsSimplePath(path, loc, context) {
1130
- if (!isSimplePath(path)) {
1131
- throw new SyntaxError(`\`${path.original}\` is not a valid name for a ${context} on line ${loc.start.line}.`, path.loc);
1132
- }
1133
- }
1134
- function assertValidYield(statement) {
1135
- let { pairs } = statement.hash;
1136
- if (pairs.length === 1 && pairs[0].key !== 'to' || pairs.length > 1) {
1137
- throw new SyntaxError(`yield only takes a single named argument: 'to'`, statement.loc);
1138
- } else if (pairs.length === 1 && pairs[0].value.type !== 'StringLiteral') {
1139
- throw new SyntaxError(`you can only yield to a literal value`, statement.loc);
1140
- } else if (pairs.length === 0) {
1141
- return 'default';
1142
- } else {
1143
- return pairs[0].value.value;
1144
- }
1145
- }
1146
- function assertValidPartial(statement) {
1147
- let { params, hash, escaped, loc } = statement;
1148
- if (params && params.length !== 1) {
1149
- throw new SyntaxError(`Partial found with no arguments. You must specify a template name. (on line ${loc.start.line})`, statement.loc);
1150
- } else if (hash && hash.pairs.length > 0) {
1151
- throw new SyntaxError(`partial does not take any named arguments (on line ${loc.start.line})`, statement.loc);
1152
- } else if (!escaped) {
1153
- throw new SyntaxError(`{{{partial ...}}} is not supported, please use {{partial ...}} instead (on line ${loc.start.line})`, statement.loc);
1154
- }
1155
- return params;
1156
- }
1157
- function assertValidHasBlockUsage(type, call) {
1158
- let { params, hash, loc } = call;
1159
- if (hash && hash.pairs.length > 0) {
1160
- throw new SyntaxError(`${type} does not take any named arguments`, call.loc);
1161
- }
1162
- if (params.length === 0) {
1163
- return 'default';
1164
- } else if (params.length === 1) {
1165
- let param = params[0];
1166
- if (param.type === 'StringLiteral') {
1167
- return param.value;
1168
- } else {
1169
- throw new SyntaxError(`you can only yield to a literal value (on line ${loc.start.line})`, call.loc);
1170
- }
1171
- } else {
1172
- throw new SyntaxError(`${type} only takes a single positional argument (on line ${loc.start.line})`, call.loc);
1173
- }
1174
- }
1175
- function assertValidDebuggerUsage(statement) {
1176
- let { params, hash } = statement;
1177
- if (hash && hash.pairs.length > 0) {
1178
- throw new SyntaxError(`debugger does not take any named arguments`, statement.loc);
1179
- }
1180
- if (params.length === 0) {
1181
- return 'default';
1182
- } else {
1183
- throw new SyntaxError(`debugger does not take any positional arguments`, statement.loc);
1184
- }
1185
- }
1186
-
1187
- const defaultId = (() => {
1188
- if (typeof require === 'function') {
1189
- try {
1190
- /* tslint:disable:no-require-imports */
1191
- const crypto = require('crypto');
1192
- /* tslint:enable:no-require-imports */
1193
- let idFn = src => {
1194
- let hash = crypto.createHash('sha1');
1195
- hash.update(src, 'utf8');
1196
- // trim to 6 bytes of data (2^48 - 1)
1197
- return hash.digest('base64').substring(0, 8);
1198
- };
1199
- idFn('test');
1200
- return idFn;
1201
- } catch (e) {}
1202
- }
1203
- return function idFn() {
1204
- return null;
1205
- };
1206
- })();
1207
- const defaultOptions = {
1208
- id: defaultId,
1209
- meta: {}
1210
- };
1211
- function precompile(string, options = defaultOptions) {
1212
- let ast = preprocess(string, options);
1213
- let { meta } = options;
1214
- let { block } = TemplateCompiler.compile(ast, options);
1215
- let idFn = options.id || defaultId;
1216
- let blockJSON = JSON.stringify(block.toJSON());
1217
- let templateJSONObject = {
1218
- id: idFn(JSON.stringify(meta) + blockJSON),
1219
- block: blockJSON,
1220
- meta: meta
1221
- };
1222
- // JSON is javascript
1223
- return JSON.stringify(templateJSONObject);
1224
- }
1225
-
1226
- export { defaultId, precompile, TemplateCompiler, TemplateVisitor };