discourse-ember-source 3.5.1.1 → 3.5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ember/version.rb +1 -1
- metadata +2 -740
- data/.gitignore +0 -9
- data/.travis.yml +0 -5
- data/Gemfile +0 -6
- data/LICENSE.txt +0 -21
- data/README +0 -18
- data/README.md +0 -39
- data/Rakefile +0 -27
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/discourse-ember-source-3.5.1.0.gem +0 -0
- data/dist/ember-all.debug.map +0 -1
- data/dist/ember-template-compiler.map +0 -1
- data/dist/ember-testing.map +0 -1
- data/dist/ember-tests.map +0 -1
- data/dist/ember-tests.prod.map +0 -1
- data/dist/ember.debug.map +0 -1
- data/dist/ember.min.map +0 -1
- data/dist/ember.prod.map +0 -1
- data/dist/es/@ember/application/globals-resolver.js +0 -425
- data/dist/es/@ember/application/index.js +0 -3
- data/dist/es/@ember/application/instance.js +0 -513
- data/dist/es/@ember/application/lib/application.js +0 -1139
- data/dist/es/@ember/application/lib/lazy_load.js +0 -69
- data/dist/es/@ember/application/lib/validate-type.js +0 -24
- data/dist/es/@ember/application/tests/application_instance_test.js +0 -230
- data/dist/es/@ember/application/tests/application_test.js +0 -470
- data/dist/es/@ember/application/tests/bootstrap-test.js +0 -28
- data/dist/es/@ember/application/tests/dependency_injection/custom_resolver_test.js +0 -32
- data/dist/es/@ember/application/tests/dependency_injection/default_resolver_test.js +0 -363
- data/dist/es/@ember/application/tests/dependency_injection/normalization_test.js +0 -70
- data/dist/es/@ember/application/tests/dependency_injection/to_string_test.js +0 -71
- data/dist/es/@ember/application/tests/dependency_injection_test.js +0 -93
- data/dist/es/@ember/application/tests/initializers_test.js +0 -391
- data/dist/es/@ember/application/tests/instance_initializers_test.js +0 -395
- data/dist/es/@ember/application/tests/lazy_load_test.js +0 -79
- data/dist/es/@ember/application/tests/logging_test.js +0 -179
- data/dist/es/@ember/application/tests/readiness_test.js +0 -138
- data/dist/es/@ember/application/tests/reset_test.js +0 -185
- data/dist/es/@ember/application/tests/visit_test.js +0 -783
- data/dist/es/@ember/canary-features/index.js +0 -76
- data/dist/es/@ember/controller/index.js +0 -50
- data/dist/es/@ember/controller/lib/controller_mixin.js +0 -42
- data/dist/es/@ember/controller/tests/controller_test.js +0 -209
- data/dist/es/@ember/debug/index.js +0 -264
- data/dist/es/@ember/debug/lib/deprecate.js +0 -198
- data/dist/es/@ember/debug/lib/handlers.js +0 -22
- data/dist/es/@ember/debug/lib/testing.js +0 -7
- data/dist/es/@ember/debug/lib/warn.js +0 -107
- data/dist/es/@ember/debug/tests/handlers-test.js +0 -144
- data/dist/es/@ember/debug/tests/main_test.js +0 -444
- data/dist/es/@ember/deprecated-features/index.js +0 -21
- data/dist/es/@ember/engine/index.js +0 -532
- data/dist/es/@ember/engine/instance.js +0 -228
- data/dist/es/@ember/engine/lib/engine-parent.js +0 -32
- data/dist/es/@ember/engine/tests/engine_initializers_test.js +0 -366
- data/dist/es/@ember/engine/tests/engine_instance_initializers_test.js +0 -409
- data/dist/es/@ember/engine/tests/engine_instance_test.js +0 -115
- data/dist/es/@ember/engine/tests/engine_parent_test.js +0 -20
- data/dist/es/@ember/engine/tests/engine_test.js +0 -121
- data/dist/es/@ember/error/index.js +0 -36
- data/dist/es/@ember/error/tests/index_test.js +0 -19
- data/dist/es/@ember/instrumentation/index.js +0 -240
- data/dist/es/@ember/instrumentation/tests/index-test.js +0 -214
- data/dist/es/@ember/map/index.js +0 -218
- data/dist/es/@ember/map/lib/ordered-set.js +0 -186
- data/dist/es/@ember/map/lib/utils.js +0 -29
- data/dist/es/@ember/map/tests/map_test.js +0 -578
- data/dist/es/@ember/map/with-default.js +0 -87
- data/dist/es/@ember/object/computed.js +0 -35
- data/dist/es/@ember/object/lib/computed/computed_macros.js +0 -742
- data/dist/es/@ember/object/lib/computed/reduce_computed_macros.js +0 -894
- data/dist/es/@ember/object/tests/computed/computed_macros_test.js +0 -533
- data/dist/es/@ember/object/tests/computed/reduce_computed_macros_test.js +0 -2243
- data/dist/es/@ember/polyfills/index.js +0 -3
- data/dist/es/@ember/polyfills/lib/assign.js +0 -43
- data/dist/es/@ember/polyfills/lib/merge.js +0 -35
- data/dist/es/@ember/polyfills/tests/assign_test.js +0 -64
- data/dist/es/@ember/runloop/index.js +0 -749
- data/dist/es/@ember/runloop/tests/debounce_test.js +0 -87
- data/dist/es/@ember/runloop/tests/later_test.js +0 -264
- data/dist/es/@ember/runloop/tests/next_test.js +0 -56
- data/dist/es/@ember/runloop/tests/once_test.js +0 -62
- data/dist/es/@ember/runloop/tests/onerror_test.js +0 -59
- data/dist/es/@ember/runloop/tests/run_bind_test.js +0 -59
- data/dist/es/@ember/runloop/tests/run_test.js +0 -28
- data/dist/es/@ember/runloop/tests/schedule_test.js +0 -86
- data/dist/es/@ember/runloop/tests/sync_test.js +0 -32
- data/dist/es/@ember/runloop/tests/unwind_test.js +0 -54
- data/dist/es/@ember/service/index.js +0 -57
- data/dist/es/@ember/string/index.js +0 -362
- data/dist/es/@ember/string/lib/string_registry.js +0 -13
- data/dist/es/@ember/string/tests/camelize_test.js +0 -53
- data/dist/es/@ember/string/tests/capitalize_test.js +0 -58
- data/dist/es/@ember/string/tests/classify_test.js +0 -79
- data/dist/es/@ember/string/tests/dasherize_test.js +0 -57
- data/dist/es/@ember/string/tests/decamelize_test.js +0 -51
- data/dist/es/@ember/string/tests/loc_test.js +0 -76
- data/dist/es/@ember/string/tests/underscore_test.js +0 -51
- data/dist/es/@ember/string/tests/w_test.js +0 -39
- data/dist/es/@glimmer/compiler.js +0 -1226
- data/dist/es/@glimmer/encoder.js +0 -39
- data/dist/es/@glimmer/low-level.js +0 -82
- data/dist/es/@glimmer/node.js +0 -112
- data/dist/es/@glimmer/opcode-compiler.js +0 -1999
- data/dist/es/@glimmer/program.js +0 -405
- data/dist/es/@glimmer/reference.js +0 -478
- data/dist/es/@glimmer/runtime.js +0 -4086
- data/dist/es/@glimmer/syntax.js +0 -1424
- data/dist/es/@glimmer/util.js +0 -189
- data/dist/es/@glimmer/vm.js +0 -27
- data/dist/es/@glimmer/wire-format.js +0 -56
- data/dist/es/backburner.js +0 -936
- data/dist/es/container/index.js +0 -8
- data/dist/es/container/lib/container.js +0 -437
- data/dist/es/container/lib/registry.js +0 -646
- data/dist/es/container/tests/container_test.js +0 -872
- data/dist/es/container/tests/owner_test.js +0 -20
- data/dist/es/container/tests/registry_test.js +0 -943
- data/dist/es/dag-map.js +0 -209
- data/dist/es/ember-browser-environment/index.js +0 -8
- data/dist/es/ember-browser-environment/lib/has-dom.js +0 -19
- data/dist/es/ember-console/index.js +0 -177
- data/dist/es/ember-environment/index.js +0 -3
- data/dist/es/ember-environment/lib/context.js +0 -20
- data/dist/es/ember-environment/lib/env.js +0 -185
- data/dist/es/ember-environment/lib/global.js +0 -14
- data/dist/es/ember-error-handling/index.js +0 -22
- data/dist/es/ember-extension-support/index.js +0 -2
- data/dist/es/ember-extension-support/lib/container_debug_adapter.js +0 -99
- data/dist/es/ember-extension-support/lib/data_adapter.js +0 -493
- data/dist/es/ember-extension-support/tests/container_debug_adapter_test.js +0 -73
- data/dist/es/ember-extension-support/tests/data_adapter_test.js +0 -301
- data/dist/es/ember-glimmer/index.js +0 -286
- data/dist/es/ember-glimmer/lib/compile-time-lookup.js +0 -37
- data/dist/es/ember-glimmer/lib/component-managers/abstract.js +0 -49
- data/dist/es/ember-glimmer/lib/component-managers/curly.js +0 -395
- data/dist/es/ember-glimmer/lib/component-managers/custom.js +0 -145
- data/dist/es/ember-glimmer/lib/component-managers/definition-state.js +0 -1
- data/dist/es/ember-glimmer/lib/component-managers/mount.js +0 -103
- data/dist/es/ember-glimmer/lib/component-managers/outlet.js +0 -114
- data/dist/es/ember-glimmer/lib/component-managers/render.js +0 -112
- data/dist/es/ember-glimmer/lib/component-managers/root.js +0 -74
- data/dist/es/ember-glimmer/lib/component-managers/template-only.js +0 -46
- data/dist/es/ember-glimmer/lib/component.js +0 -633
- data/dist/es/ember-glimmer/lib/components/checkbox.js +0 -57
- data/dist/es/ember-glimmer/lib/components/link-to.js +0 -777
- data/dist/es/ember-glimmer/lib/components/text_area.js +0 -236
- data/dist/es/ember-glimmer/lib/components/text_field.js +0 -145
- data/dist/es/ember-glimmer/lib/dom.js +0 -3
- data/dist/es/ember-glimmer/lib/environment.js +0 -102
- data/dist/es/ember-glimmer/lib/helper.js +0 -128
- data/dist/es/ember-glimmer/lib/helpers/-class.js +0 -23
- data/dist/es/ember-glimmer/lib/helpers/-html-safe.js +0 -9
- data/dist/es/ember-glimmer/lib/helpers/-input-type.js +0 -11
- data/dist/es/ember-glimmer/lib/helpers/-normalize-class.js +0 -22
- data/dist/es/ember-glimmer/lib/helpers/action.js +0 -360
- data/dist/es/ember-glimmer/lib/helpers/component.js +0 -135
- data/dist/es/ember-glimmer/lib/helpers/concat.js +0 -38
- data/dist/es/ember-glimmer/lib/helpers/each-in.js +0 -126
- data/dist/es/ember-glimmer/lib/helpers/get.js +0 -100
- data/dist/es/ember-glimmer/lib/helpers/hash.js +0 -44
- data/dist/es/ember-glimmer/lib/helpers/if-unless.js +0 -142
- data/dist/es/ember-glimmer/lib/helpers/loc.js +0 -40
- data/dist/es/ember-glimmer/lib/helpers/log.js +0 -25
- data/dist/es/ember-glimmer/lib/helpers/mut.js +0 -107
- data/dist/es/ember-glimmer/lib/helpers/query-param.js +0 -31
- data/dist/es/ember-glimmer/lib/helpers/readonly.js +0 -104
- data/dist/es/ember-glimmer/lib/helpers/unbound.js +0 -36
- data/dist/es/ember-glimmer/lib/modifiers/action.js +0 -185
- data/dist/es/ember-glimmer/lib/protocol-for-url.js +0 -48
- data/dist/es/ember-glimmer/lib/renderer.js +0 -371
- data/dist/es/ember-glimmer/lib/resolver.js +0 -290
- data/dist/es/ember-glimmer/lib/setup-registry.js +0 -77
- data/dist/es/ember-glimmer/lib/syntax.js +0 -73
- data/dist/es/ember-glimmer/lib/syntax/-text-area.js +0 -8
- data/dist/es/ember-glimmer/lib/syntax/input.js +0 -173
- data/dist/es/ember-glimmer/lib/syntax/let.js +0 -50
- data/dist/es/ember-glimmer/lib/syntax/mount.js +0 -101
- data/dist/es/ember-glimmer/lib/syntax/outlet.js +0 -120
- data/dist/es/ember-glimmer/lib/syntax/render.js +0 -140
- data/dist/es/ember-glimmer/lib/syntax/utils.js +0 -6
- data/dist/es/ember-glimmer/lib/template-compiler.js +0 -7
- data/dist/es/ember-glimmer/lib/template.js +0 -16
- data/dist/es/ember-glimmer/lib/template_registry.js +0 -18
- data/dist/es/ember-glimmer/lib/templates/component.js +0 -2
- data/dist/es/ember-glimmer/lib/templates/empty.js +0 -2
- data/dist/es/ember-glimmer/lib/templates/link-to.js +0 -2
- data/dist/es/ember-glimmer/lib/templates/outlet.js +0 -2
- data/dist/es/ember-glimmer/lib/templates/root.js +0 -2
- data/dist/es/ember-glimmer/lib/utils/bindings.js +0 -180
- data/dist/es/ember-glimmer/lib/utils/curly-component-state-bucket.js +0 -36
- data/dist/es/ember-glimmer/lib/utils/custom-component-manager.js +0 -20
- data/dist/es/ember-glimmer/lib/utils/debug-stack.js +0 -57
- data/dist/es/ember-glimmer/lib/utils/iterable.js +0 -358
- data/dist/es/ember-glimmer/lib/utils/outlet.js +0 -89
- data/dist/es/ember-glimmer/lib/utils/process-args.js +0 -40
- data/dist/es/ember-glimmer/lib/utils/references.js +0 -325
- data/dist/es/ember-glimmer/lib/utils/serialization-first-node-helpers.js +0 -1
- data/dist/es/ember-glimmer/lib/utils/string.js +0 -98
- data/dist/es/ember-glimmer/lib/utils/to-bool.js +0 -9
- data/dist/es/ember-glimmer/lib/views/outlet.js +0 -71
- data/dist/es/ember-glimmer/tests/integration/application/actions-test.js +0 -107
- data/dist/es/ember-glimmer/tests/integration/application/engine-test.js +0 -912
- data/dist/es/ember-glimmer/tests/integration/application/rendering-test.js +0 -530
- data/dist/es/ember-glimmer/tests/integration/components/angle-bracket-invocation-test.js +0 -852
- data/dist/es/ember-glimmer/tests/integration/components/append-test.js +0 -742
- data/dist/es/ember-glimmer/tests/integration/components/attribute-bindings-test.js +0 -999
- data/dist/es/ember-glimmer/tests/integration/components/attrs-lookup-test.js +0 -268
- data/dist/es/ember-glimmer/tests/integration/components/class-bindings-test.js +0 -849
- data/dist/es/ember-glimmer/tests/integration/components/contextual-components-test.js +0 -1493
- data/dist/es/ember-glimmer/tests/integration/components/curly-components-test.js +0 -3705
- data/dist/es/ember-glimmer/tests/integration/components/destroy-test.js +0 -33
- data/dist/es/ember-glimmer/tests/integration/components/dynamic-components-test.js +0 -896
- data/dist/es/ember-glimmer/tests/integration/components/error-handling-test.js +0 -164
- data/dist/es/ember-glimmer/tests/integration/components/fragment-components-test.js +0 -285
- data/dist/es/ember-glimmer/tests/integration/components/instrumentation-compile-test.js +0 -108
- data/dist/es/ember-glimmer/tests/integration/components/instrumentation-test.js +0 -157
- data/dist/es/ember-glimmer/tests/integration/components/life-cycle-test.js +0 -1653
- data/dist/es/ember-glimmer/tests/integration/components/link-to-test.js +0 -218
- data/dist/es/ember-glimmer/tests/integration/components/local-lookup-test.js +0 -414
- data/dist/es/ember-glimmer/tests/integration/components/namespaced-lookup-test.js +0 -185
- data/dist/es/ember-glimmer/tests/integration/components/render-to-element-test.js +0 -0
- data/dist/es/ember-glimmer/tests/integration/components/target-action-test.js +0 -779
- data/dist/es/ember-glimmer/tests/integration/components/template-only-components-test.js +0 -225
- data/dist/es/ember-glimmer/tests/integration/components/to-string-test.js +0 -27
- data/dist/es/ember-glimmer/tests/integration/components/utils-test.js +0 -401
- data/dist/es/ember-glimmer/tests/integration/components/web-component-fallback-test.js +0 -35
- data/dist/es/ember-glimmer/tests/integration/components/will-destroy-element-hook-test.js +0 -40
- data/dist/es/ember-glimmer/tests/integration/content-test.js +0 -1759
- data/dist/es/ember-glimmer/tests/integration/custom-component-manager-test.js +0 -508
- data/dist/es/ember-glimmer/tests/integration/event-dispatcher-test.js +0 -607
- data/dist/es/ember-glimmer/tests/integration/helpers/-class-test.js +0 -76
- data/dist/es/ember-glimmer/tests/integration/helpers/closure-action-test.js +0 -1240
- data/dist/es/ember-glimmer/tests/integration/helpers/concat-test.js +0 -106
- data/dist/es/ember-glimmer/tests/integration/helpers/custom-helper-test.js +0 -672
- data/dist/es/ember-glimmer/tests/integration/helpers/element-action-test.js +0 -1595
- data/dist/es/ember-glimmer/tests/integration/helpers/get-test.js +0 -618
- data/dist/es/ember-glimmer/tests/integration/helpers/hash-test.js +0 -188
- data/dist/es/ember-glimmer/tests/integration/helpers/if-unless-test.js +0 -149
- data/dist/es/ember-glimmer/tests/integration/helpers/input-test.js +0 -827
- data/dist/es/ember-glimmer/tests/integration/helpers/loc-test.js +0 -103
- data/dist/es/ember-glimmer/tests/integration/helpers/log-test.js +0 -61
- data/dist/es/ember-glimmer/tests/integration/helpers/mut-test.js +0 -580
- data/dist/es/ember-glimmer/tests/integration/helpers/partial-test.js +0 -386
- data/dist/es/ember-glimmer/tests/integration/helpers/readonly-test.js +0 -293
- data/dist/es/ember-glimmer/tests/integration/helpers/render-test.js +0 -522
- data/dist/es/ember-glimmer/tests/integration/helpers/text-area-test.js +0 -166
- data/dist/es/ember-glimmer/tests/integration/helpers/unbound-test.js +0 -650
- data/dist/es/ember-glimmer/tests/integration/helpers/yield-test.js +0 -275
- data/dist/es/ember-glimmer/tests/integration/input-test.js +0 -242
- data/dist/es/ember-glimmer/tests/integration/mount-test.js +0 -424
- data/dist/es/ember-glimmer/tests/integration/outlet-test.js +0 -318
- data/dist/es/ember-glimmer/tests/integration/refinements-test.js +0 -74
- data/dist/es/ember-glimmer/tests/integration/render-settled-test.js +0 -72
- data/dist/es/ember-glimmer/tests/integration/svg-test.js +0 -158
- data/dist/es/ember-glimmer/tests/integration/syntax/each-in-test.js +0 -697
- data/dist/es/ember-glimmer/tests/integration/syntax/each-test.js +0 -1251
- data/dist/es/ember-glimmer/tests/integration/syntax/experimental-syntax-test.js +0 -42
- data/dist/es/ember-glimmer/tests/integration/syntax/if-unless-test.js +0 -108
- data/dist/es/ember-glimmer/tests/integration/syntax/in-element-test.js +0 -119
- data/dist/es/ember-glimmer/tests/integration/syntax/let-test.js +0 -390
- data/dist/es/ember-glimmer/tests/integration/syntax/with-dynamic-var-test.js +0 -36
- data/dist/es/ember-glimmer/tests/integration/syntax/with-test.js +0 -422
- data/dist/es/ember-glimmer/tests/unit/outlet-test.js +0 -48
- data/dist/es/ember-glimmer/tests/unit/runtime-resolver-cache-test.js +0 -263
- data/dist/es/ember-glimmer/tests/unit/template-factory-test.js +0 -67
- data/dist/es/ember-glimmer/tests/unit/utils/debug-stack-test.js +0 -38
- data/dist/es/ember-glimmer/tests/utils/abstract-test-case.js +0 -1
- data/dist/es/ember-glimmer/tests/utils/helpers.js +0 -15
- data/dist/es/ember-glimmer/tests/utils/shared-conditional-tests.js +0 -965
- data/dist/es/ember-glimmer/tests/utils/string-test.js +0 -47
- data/dist/es/ember-glimmer/tests/utils/test-case.js +0 -6
- data/dist/es/ember-glimmer/tests/utils/test-helpers.js +0 -1
- data/dist/es/ember-meta/index.js +0 -1
- data/dist/es/ember-meta/lib/meta.js +0 -623
- data/dist/es/ember-meta/tests/meta_test.js +0 -169
- data/dist/es/ember-metal/index.js +0 -33
- data/dist/es/ember-metal/lib/alias.js +0 -80
- data/dist/es/ember-metal/lib/array.js +0 -55
- data/dist/es/ember-metal/lib/array_events.js +0 -65
- data/dist/es/ember-metal/lib/chains.js +0 -315
- data/dist/es/ember-metal/lib/change_event.js +0 -4
- data/dist/es/ember-metal/lib/computed.js +0 -526
- data/dist/es/ember-metal/lib/computed_cache.js +0 -58
- data/dist/es/ember-metal/lib/dependent_keys.js +0 -34
- data/dist/es/ember-metal/lib/deprecate_property.js +0 -34
- data/dist/es/ember-metal/lib/descriptor.js +0 -28
- data/dist/es/ember-metal/lib/each_proxy.js +0 -106
- data/dist/es/ember-metal/lib/each_proxy_events.js +0 -13
- data/dist/es/ember-metal/lib/events.js +0 -174
- data/dist/es/ember-metal/lib/expand_properties.js +0 -64
- data/dist/es/ember-metal/lib/get_properties.js +0 -45
- data/dist/es/ember-metal/lib/injected_property.js +0 -53
- data/dist/es/ember-metal/lib/is_blank.js +0 -34
- data/dist/es/ember-metal/lib/is_empty.js +0 -63
- data/dist/es/ember-metal/lib/is_none.js +0 -27
- data/dist/es/ember-metal/lib/is_present.js +0 -38
- data/dist/es/ember-metal/lib/libraries.js +0 -80
- data/dist/es/ember-metal/lib/mixin.js +0 -646
- data/dist/es/ember-metal/lib/namespace_search.js +0 -166
- data/dist/es/ember-metal/lib/observer.js +0 -34
- data/dist/es/ember-metal/lib/observer_set.js +0 -48
- data/dist/es/ember-metal/lib/path_cache.js +0 -5
- data/dist/es/ember-metal/lib/properties.js +0 -192
- data/dist/es/ember-metal/lib/property_events.js +0 -198
- data/dist/es/ember-metal/lib/property_get.js +0 -160
- data/dist/es/ember-metal/lib/property_set.js +0 -157
- data/dist/es/ember-metal/lib/set_properties.js +0 -43
- data/dist/es/ember-metal/lib/tags.js +0 -81
- data/dist/es/ember-metal/lib/tracked.js +0 -201
- data/dist/es/ember-metal/lib/transaction.js +0 -137
- data/dist/es/ember-metal/lib/watch_key.js +0 -113
- data/dist/es/ember-metal/lib/watch_path.js +0 -24
- data/dist/es/ember-metal/lib/watching.js +0 -54
- data/dist/es/ember-metal/tests/accessors/get_path_test.js +0 -82
- data/dist/es/ember-metal/tests/accessors/get_properties_test.js +0 -36
- data/dist/es/ember-metal/tests/accessors/get_test.js +0 -335
- data/dist/es/ember-metal/tests/accessors/mandatory_setters_test.js +0 -470
- data/dist/es/ember-metal/tests/accessors/set_path_test.js +0 -97
- data/dist/es/ember-metal/tests/accessors/set_test.js +0 -128
- data/dist/es/ember-metal/tests/alias_test.js +0 -167
- data/dist/es/ember-metal/tests/chains_test.js +0 -210
- data/dist/es/ember-metal/tests/computed_test.js +0 -1040
- data/dist/es/ember-metal/tests/descriptor_test.js +0 -368
- data/dist/es/ember-metal/tests/events_test.js +0 -210
- data/dist/es/ember-metal/tests/expand_properties_test.js +0 -119
- data/dist/es/ember-metal/tests/injected_property_test.js +0 -76
- data/dist/es/ember-metal/tests/is_blank_test.js +0 -29
- data/dist/es/ember-metal/tests/is_empty_test.js +0 -55
- data/dist/es/ember-metal/tests/is_none_test.js +0 -23
- data/dist/es/ember-metal/tests/is_present_test.js +0 -30
- data/dist/es/ember-metal/tests/libraries_test.js +0 -99
- data/dist/es/ember-metal/tests/main_test.js +0 -31
- data/dist/es/ember-metal/tests/mixin/alias_method_test.js +0 -91
- data/dist/es/ember-metal/tests/mixin/apply_test.js +0 -40
- data/dist/es/ember-metal/tests/mixin/computed_test.js +0 -166
- data/dist/es/ember-metal/tests/mixin/concatenated_properties_test.js +0 -117
- data/dist/es/ember-metal/tests/mixin/detect_test.js +0 -40
- data/dist/es/ember-metal/tests/mixin/introspection_test.js +0 -75
- data/dist/es/ember-metal/tests/mixin/merged_properties_test.js +0 -200
- data/dist/es/ember-metal/tests/mixin/method_test.js +0 -252
- data/dist/es/ember-metal/tests/mixin/observer_test.js +0 -202
- data/dist/es/ember-metal/tests/mixin/reopen_test.js +0 -53
- data/dist/es/ember-metal/tests/mixin/without_test.js +0 -22
- data/dist/es/ember-metal/tests/namespace_search_test.js +0 -16
- data/dist/es/ember-metal/tests/observer_test.js +0 -961
- data/dist/es/ember-metal/tests/performance_test.js +0 -81
- data/dist/es/ember-metal/tests/properties_test.js +0 -120
- data/dist/es/ember-metal/tests/property_did_change_hook.js +0 -73
- data/dist/es/ember-metal/tests/set_properties_test.js +0 -49
- data/dist/es/ember-metal/tests/tracked/computed_test.js +0 -67
- data/dist/es/ember-metal/tests/tracked/get_test.js +0 -86
- data/dist/es/ember-metal/tests/tracked/set_test.js +0 -44
- data/dist/es/ember-metal/tests/tracked/support.js +0 -37
- data/dist/es/ember-metal/tests/tracked/validation_test.js +0 -233
- data/dist/es/ember-metal/tests/watching/is_watching_test.js +0 -97
- data/dist/es/ember-metal/tests/watching/unwatch_test.js +0 -109
- data/dist/es/ember-metal/tests/watching/watch_test.js +0 -255
- data/dist/es/ember-owner/index.js +0 -66
- data/dist/es/ember-routing/index.js +0 -21
- data/dist/es/ember-routing/lib/ext/controller.js +0 -222
- data/dist/es/ember-routing/lib/location/api.js +0 -118
- data/dist/es/ember-routing/lib/location/auto_location.js +0 -323
- data/dist/es/ember-routing/lib/location/hash_location.js +0 -171
- data/dist/es/ember-routing/lib/location/history_location.js +0 -298
- data/dist/es/ember-routing/lib/location/none_location.js +0 -122
- data/dist/es/ember-routing/lib/location/util.js +0 -114
- data/dist/es/ember-routing/lib/services/router.js +0 -243
- data/dist/es/ember-routing/lib/services/routing.js +0 -101
- data/dist/es/ember-routing/lib/system/cache.js +0 -40
- data/dist/es/ember-routing/lib/system/controller_for.js +0 -14
- data/dist/es/ember-routing/lib/system/dsl.js +0 -208
- data/dist/es/ember-routing/lib/system/generate_controller.js +0 -54
- data/dist/es/ember-routing/lib/system/query_params.js +0 -6
- data/dist/es/ember-routing/lib/system/route.js +0 -2476
- data/dist/es/ember-routing/lib/system/router.js +0 -1607
- data/dist/es/ember-routing/lib/system/router_state.js +0 -26
- data/dist/es/ember-routing/lib/system/transition.js +0 -153
- data/dist/es/ember-routing/lib/utils.js +0 -230
- data/dist/es/ember-routing/tests/ext/controller_test.js +0 -85
- data/dist/es/ember-routing/tests/location/auto_location_test.js +0 -379
- data/dist/es/ember-routing/tests/location/hash_location_test.js +0 -207
- data/dist/es/ember-routing/tests/location/history_location_test.js +0 -322
- data/dist/es/ember-routing/tests/location/none_location_test.js +0 -88
- data/dist/es/ember-routing/tests/location/util_test.js +0 -159
- data/dist/es/ember-routing/tests/system/cache_test.js +0 -54
- data/dist/es/ember-routing/tests/system/controller_for_test.js +0 -75
- data/dist/es/ember-routing/tests/system/dsl_test.js +0 -413
- data/dist/es/ember-routing/tests/system/route_test.js +0 -587
- data/dist/es/ember-routing/tests/system/router_test.js +0 -287
- data/dist/es/ember-routing/tests/utils_test.js +0 -37
- data/dist/es/ember-runtime/.gitignore +0 -1
- data/dist/es/ember-runtime/README +0 -12
- data/dist/es/ember-runtime/index.js +0 -35
- data/dist/es/ember-runtime/lib/compare.js +0 -149
- data/dist/es/ember-runtime/lib/copy.js +0 -106
- data/dist/es/ember-runtime/lib/ext/function.js +0 -154
- data/dist/es/ember-runtime/lib/ext/rsvp.js +0 -59
- data/dist/es/ember-runtime/lib/is-equal.js +0 -60
- data/dist/es/ember-runtime/lib/mixins/-proxy.js +0 -109
- data/dist/es/ember-runtime/lib/mixins/action_handler.js +0 -222
- data/dist/es/ember-runtime/lib/mixins/array.js +0 -1661
- data/dist/es/ember-runtime/lib/mixins/comparable.js +0 -38
- data/dist/es/ember-runtime/lib/mixins/container_proxy.js +0 -154
- data/dist/es/ember-runtime/lib/mixins/copyable.js +0 -34
- data/dist/es/ember-runtime/lib/mixins/enumerable.js +0 -16
- data/dist/es/ember-runtime/lib/mixins/evented.js +0 -149
- data/dist/es/ember-runtime/lib/mixins/mutable_enumerable.js +0 -18
- data/dist/es/ember-runtime/lib/mixins/observable.js +0 -482
- data/dist/es/ember-runtime/lib/mixins/promise_proxy.js +0 -224
- data/dist/es/ember-runtime/lib/mixins/registry_proxy.js +0 -265
- data/dist/es/ember-runtime/lib/mixins/target_action_support.js +0 -172
- data/dist/es/ember-runtime/lib/system/array_proxy.js +0 -298
- data/dist/es/ember-runtime/lib/system/core_object.js +0 -1037
- data/dist/es/ember-runtime/lib/system/namespace.js +0 -69
- data/dist/es/ember-runtime/lib/system/object.js +0 -73
- data/dist/es/ember-runtime/lib/system/object_proxy.js +0 -81
- data/dist/es/ember-runtime/lib/type-of.js +0 -107
- data/dist/es/ember-runtime/tests/array/any-test.js +0 -55
- data/dist/es/ember-runtime/tests/array/compact-test.js +0 -12
- data/dist/es/ember-runtime/tests/array/every-test.js +0 -82
- data/dist/es/ember-runtime/tests/array/filter-test.js +0 -123
- data/dist/es/ember-runtime/tests/array/find-test.js +0 -86
- data/dist/es/ember-runtime/tests/array/firstObject-test.js +0 -27
- data/dist/es/ember-runtime/tests/array/forEach-test.js +0 -68
- data/dist/es/ember-runtime/tests/array/includes-test.js +0 -46
- data/dist/es/ember-runtime/tests/array/indexOf-test.js +0 -27
- data/dist/es/ember-runtime/tests/array/invoke-test.js +0 -60
- data/dist/es/ember-runtime/tests/array/isAny-test.js +0 -53
- data/dist/es/ember-runtime/tests/array/lastIndexOf-test.js +0 -78
- data/dist/es/ember-runtime/tests/array/lastObject-test.js +0 -31
- data/dist/es/ember-runtime/tests/array/map-test.js +0 -68
- data/dist/es/ember-runtime/tests/array/mapBy-test.js +0 -16
- data/dist/es/ember-runtime/tests/array/objectAt-test.js +0 -34
- data/dist/es/ember-runtime/tests/array/reduce-test.js +0 -24
- data/dist/es/ember-runtime/tests/array/reject-test.js +0 -134
- data/dist/es/ember-runtime/tests/array/sortBy-test.js +0 -23
- data/dist/es/ember-runtime/tests/array/toArray-test.js +0 -11
- data/dist/es/ember-runtime/tests/array/uniq-test.js +0 -27
- data/dist/es/ember-runtime/tests/array/uniqBy-test.js +0 -33
- data/dist/es/ember-runtime/tests/array/without-test.js +0 -39
- data/dist/es/ember-runtime/tests/copyable-array/copy-test.js +0 -12
- data/dist/es/ember-runtime/tests/core/compare_test.js +0 -89
- data/dist/es/ember-runtime/tests/core/copy_test.js +0 -47
- data/dist/es/ember-runtime/tests/core/isEqual_test.js +0 -65
- data/dist/es/ember-runtime/tests/core/is_array_test.js +0 -59
- data/dist/es/ember-runtime/tests/core/is_empty_test.js +0 -15
- data/dist/es/ember-runtime/tests/core/type_of_test.js +0 -54
- data/dist/es/ember-runtime/tests/ext/function_test.js +0 -121
- data/dist/es/ember-runtime/tests/ext/rsvp_test.js +0 -269
- data/dist/es/ember-runtime/tests/helpers/array.js +0 -336
- data/dist/es/ember-runtime/tests/inject_test.js +0 -51
- data/dist/es/ember-runtime/tests/legacy_1x/mixins/observable/chained_test.js +0 -63
- data/dist/es/ember-runtime/tests/legacy_1x/mixins/observable/observable_test.js +0 -892
- data/dist/es/ember-runtime/tests/legacy_1x/mixins/observable/propertyChanges_test.js +0 -142
- data/dist/es/ember-runtime/tests/legacy_1x/system/object/base_test.js +0 -98
- data/dist/es/ember-runtime/tests/legacy_1x/system/object/concatenated_test.js +0 -131
- data/dist/es/ember-runtime/tests/mixins/array_test.js +0 -400
- data/dist/es/ember-runtime/tests/mixins/comparable_test.js +0 -37
- data/dist/es/ember-runtime/tests/mixins/container_proxy_test.js +0 -48
- data/dist/es/ember-runtime/tests/mixins/enumerable_test.js +0 -17
- data/dist/es/ember-runtime/tests/mixins/evented_test.js +0 -23
- data/dist/es/ember-runtime/tests/mixins/mutable_enumerable_test.js +0 -17
- data/dist/es/ember-runtime/tests/mixins/observable_test.js +0 -137
- data/dist/es/ember-runtime/tests/mixins/promise_proxy_test.js +0 -593
- data/dist/es/ember-runtime/tests/mixins/target_action_support_test.js +0 -237
- data/dist/es/ember-runtime/tests/mutable-array/addObject-test.js +0 -76
- data/dist/es/ember-runtime/tests/mutable-array/clear-test.js +0 -64
- data/dist/es/ember-runtime/tests/mutable-array/insertAt-test.js +0 -216
- data/dist/es/ember-runtime/tests/mutable-array/popObject-test.js +0 -91
- data/dist/es/ember-runtime/tests/mutable-array/pushObject-test.js +0 -98
- data/dist/es/ember-runtime/tests/mutable-array/pushObjects-test.js +0 -12
- data/dist/es/ember-runtime/tests/mutable-array/removeAt-test.js +0 -187
- data/dist/es/ember-runtime/tests/mutable-array/removeObject-test.js +0 -77
- data/dist/es/ember-runtime/tests/mutable-array/removeObjects-test.js +0 -202
- data/dist/es/ember-runtime/tests/mutable-array/replace-test.js +0 -221
- data/dist/es/ember-runtime/tests/mutable-array/reverseObjects-test.js +0 -35
- data/dist/es/ember-runtime/tests/mutable-array/setObjects-test.js +0 -63
- data/dist/es/ember-runtime/tests/mutable-array/shiftObject-test.js +0 -105
- data/dist/es/ember-runtime/tests/mutable-array/unshiftObject-test.js +0 -99
- data/dist/es/ember-runtime/tests/mutable-array/unshiftObjects-test.js +0 -102
- data/dist/es/ember-runtime/tests/system/array_proxy/arranged_content_test.js +0 -275
- data/dist/es/ember-runtime/tests/system/array_proxy/array_observer_test.js +0 -51
- data/dist/es/ember-runtime/tests/system/array_proxy/content_change_test.js +0 -85
- data/dist/es/ember-runtime/tests/system/array_proxy/length_test.js +0 -201
- data/dist/es/ember-runtime/tests/system/array_proxy/watching_and_listening_test.js +0 -157
- data/dist/es/ember-runtime/tests/system/core_object_test.js +0 -114
- data/dist/es/ember-runtime/tests/system/namespace/base_test.js +0 -175
- data/dist/es/ember-runtime/tests/system/native_array/a_test.js +0 -16
- data/dist/es/ember-runtime/tests/system/native_array/copyable_suite_test.js +0 -19
- data/dist/es/ember-runtime/tests/system/native_array/replace_test.js +0 -17
- data/dist/es/ember-runtime/tests/system/object/computed_test.js +0 -352
- data/dist/es/ember-runtime/tests/system/object/create_test.js +0 -135
- data/dist/es/ember-runtime/tests/system/object/destroy_test.js +0 -146
- data/dist/es/ember-runtime/tests/system/object/detectInstance_test.js +0 -38
- data/dist/es/ember-runtime/tests/system/object/detect_test.js +0 -33
- data/dist/es/ember-runtime/tests/system/object/es-compatibility-test.js +0 -469
- data/dist/es/ember-runtime/tests/system/object/events_test.js +0 -156
- data/dist/es/ember-runtime/tests/system/object/extend_test.js +0 -153
- data/dist/es/ember-runtime/tests/system/object/observer_test.js +0 -216
- data/dist/es/ember-runtime/tests/system/object/reopenClass_test.js +0 -36
- data/dist/es/ember-runtime/tests/system/object/reopen_test.js +0 -48
- data/dist/es/ember-runtime/tests/system/object/strict-mode-test.js +0 -31
- data/dist/es/ember-runtime/tests/system/object/toString_test.js +0 -125
- data/dist/es/ember-runtime/tests/system/object_proxy_test.js +0 -314
- data/dist/es/ember-template-compiler/index.js +0 -26
- data/dist/es/ember-template-compiler/lib/compat.js +0 -16
- data/dist/es/ember-template-compiler/lib/plugins/assert-if-helper-without-arguments.js +0 -38
- data/dist/es/ember-template-compiler/lib/plugins/assert-input-helper-without-block.js +0 -20
- data/dist/es/ember-template-compiler/lib/plugins/assert-reserved-named-arguments.js +0 -26
- data/dist/es/ember-template-compiler/lib/plugins/assert-splattribute-expression.js +0 -27
- data/dist/es/ember-template-compiler/lib/plugins/deprecate-render-model.js +0 -38
- data/dist/es/ember-template-compiler/lib/plugins/deprecate-render.js +0 -41
- data/dist/es/ember-template-compiler/lib/plugins/deprecate-send-action.js +0 -42
- data/dist/es/ember-template-compiler/lib/plugins/index.js +0 -50
- data/dist/es/ember-template-compiler/lib/plugins/transform-action-syntax.js +0 -52
- data/dist/es/ember-template-compiler/lib/plugins/transform-angle-bracket-components.js +0 -10
- data/dist/es/ember-template-compiler/lib/plugins/transform-attrs-into-args.js +0 -62
- data/dist/es/ember-template-compiler/lib/plugins/transform-dot-component-invocation.js +0 -88
- data/dist/es/ember-template-compiler/lib/plugins/transform-each-in-into-each.js +0 -48
- data/dist/es/ember-template-compiler/lib/plugins/transform-has-block-syntax.js +0 -46
- data/dist/es/ember-template-compiler/lib/plugins/transform-in-element.js +0 -83
- data/dist/es/ember-template-compiler/lib/plugins/transform-inline-link-to.js +0 -31
- data/dist/es/ember-template-compiler/lib/plugins/transform-input-type-syntax.js +0 -52
- data/dist/es/ember-template-compiler/lib/plugins/transform-old-binding-syntax.js +0 -48
- data/dist/es/ember-template-compiler/lib/plugins/transform-old-class-binding-syntax.js +0 -102
- data/dist/es/ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +0 -34
- data/dist/es/ember-template-compiler/lib/plugins/transform-top-level-components.js +0 -41
- data/dist/es/ember-template-compiler/lib/system/bootstrap.js +0 -44
- data/dist/es/ember-template-compiler/lib/system/calculate-location-display.js +0 -20
- data/dist/es/ember-template-compiler/lib/system/compile-options.js +0 -71
- data/dist/es/ember-template-compiler/lib/system/compile.js +0 -28
- data/dist/es/ember-template-compiler/lib/system/dasherize-component-name.js +0 -13
- data/dist/es/ember-template-compiler/lib/system/initializer.js +0 -22
- data/dist/es/ember-template-compiler/lib/system/precompile.js +0 -18
- data/dist/es/ember-template-compiler/tests/plugins/assert-if-helper-without-arguments-test.js +0 -51
- data/dist/es/ember-template-compiler/tests/plugins/assert-input-helper-without-block-test.js +0 -17
- data/dist/es/ember-template-compiler/tests/plugins/assert-reserved-named-arguments-test.js +0 -416
- data/dist/es/ember-template-compiler/tests/plugins/assert-splattribute-expression-test.js +0 -57
- data/dist/es/ember-template-compiler/tests/plugins/deprecate-render-model-test.js +0 -19
- data/dist/es/ember-template-compiler/tests/plugins/deprecate-render-test.js +0 -19
- data/dist/es/ember-template-compiler/tests/plugins/deprecate-send-action-test.js +0 -29
- data/dist/es/ember-template-compiler/tests/plugins/transform-dot-component-invocation-test.js +0 -27
- data/dist/es/ember-template-compiler/tests/plugins/transform-inline-link-to-test.js +0 -15
- data/dist/es/ember-template-compiler/tests/plugins/transform-input-type-syntax-test.js +0 -25
- data/dist/es/ember-template-compiler/tests/system/bootstrap-test.js +0 -155
- data/dist/es/ember-template-compiler/tests/system/compile_options_test.js +0 -115
- data/dist/es/ember-template-compiler/tests/system/dasherize-component-name-test.js +0 -19
- data/dist/es/ember-testing/index.js +0 -10
- data/dist/es/ember-testing/lib/adapters/adapter.js +0 -58
- data/dist/es/ember-testing/lib/adapters/qunit.js +0 -47
- data/dist/es/ember-testing/lib/events.js +0 -136
- data/dist/es/ember-testing/lib/ext/application.js +0 -191
- data/dist/es/ember-testing/lib/ext/rsvp.js +0 -19
- data/dist/es/ember-testing/lib/helpers.js +0 -30
- data/dist/es/ember-testing/lib/helpers/-is-form-control.js +0 -16
- data/dist/es/ember-testing/lib/helpers/and_then.js +0 -3
- data/dist/es/ember-testing/lib/helpers/click.js +0 -36
- data/dist/es/ember-testing/lib/helpers/current_path.js +0 -27
- data/dist/es/ember-testing/lib/helpers/current_route_name.js +0 -25
- data/dist/es/ember-testing/lib/helpers/current_url.js +0 -27
- data/dist/es/ember-testing/lib/helpers/fill_in.js +0 -46
- data/dist/es/ember-testing/lib/helpers/find.js +0 -41
- data/dist/es/ember-testing/lib/helpers/find_with_assert.js +0 -34
- data/dist/es/ember-testing/lib/helpers/key_event.js +0 -36
- data/dist/es/ember-testing/lib/helpers/pause_test.js +0 -65
- data/dist/es/ember-testing/lib/helpers/trigger_event.js +0 -62
- data/dist/es/ember-testing/lib/helpers/visit.js +0 -42
- data/dist/es/ember-testing/lib/helpers/wait.js +0 -72
- data/dist/es/ember-testing/lib/initializers.js +0 -17
- data/dist/es/ember-testing/lib/setup_for_testing.js +0 -44
- data/dist/es/ember-testing/lib/support.js +0 -62
- data/dist/es/ember-testing/lib/test.js +0 -70
- data/dist/es/ember-testing/lib/test/adapter.js +0 -33
- data/dist/es/ember-testing/lib/test/helpers.js +0 -125
- data/dist/es/ember-testing/lib/test/on_inject_helpers.js +0 -38
- data/dist/es/ember-testing/lib/test/pending_requests.js +0 -24
- data/dist/es/ember-testing/lib/test/promise.js +0 -79
- data/dist/es/ember-testing/lib/test/run.js +0 -9
- data/dist/es/ember-testing/lib/test/waiters.js +0 -117
- data/dist/es/ember-testing/tests/acceptance_test.js +0 -478
- data/dist/es/ember-testing/tests/adapters/adapter_test.js +0 -31
- data/dist/es/ember-testing/tests/adapters/qunit_test.js +0 -50
- data/dist/es/ember-testing/tests/adapters_test.js +0 -405
- data/dist/es/ember-testing/tests/ext/rsvp_test.js +0 -124
- data/dist/es/ember-testing/tests/helper_registration_test.js +0 -98
- data/dist/es/ember-testing/tests/helpers_test.js +0 -1228
- data/dist/es/ember-testing/tests/integration_test.js +0 -106
- data/dist/es/ember-testing/tests/reexports_test.js +0 -26
- data/dist/es/ember-testing/tests/test/waiters-test.js +0 -145
- data/dist/es/ember-utils/index.js +0 -28
- data/dist/es/ember-utils/lib/cache.js +0 -36
- data/dist/es/ember-utils/lib/dictionary.js +0 -11
- data/dist/es/ember-utils/lib/guid.js +0 -120
- data/dist/es/ember-utils/lib/inspect.js +0 -112
- data/dist/es/ember-utils/lib/intern.js +0 -49
- data/dist/es/ember-utils/lib/invoke.js +0 -53
- data/dist/es/ember-utils/lib/is_proxy.js +0 -14
- data/dist/es/ember-utils/lib/lookup-descriptor.js +0 -11
- data/dist/es/ember-utils/lib/make-array.js +0 -7
- data/dist/es/ember-utils/lib/name.js +0 -9
- data/dist/es/ember-utils/lib/proxy-utils.js +0 -1
- data/dist/es/ember-utils/lib/spec.js +0 -14
- data/dist/es/ember-utils/lib/super.js +0 -83
- data/dist/es/ember-utils/lib/symbol-utils.js +0 -8
- data/dist/es/ember-utils/lib/symbol.js +0 -15
- data/dist/es/ember-utils/lib/to-string.js +0 -35
- data/dist/es/ember-utils/lib/weak_set.js +0 -18
- data/dist/es/ember-utils/tests/cache_test.js +0 -77
- data/dist/es/ember-utils/tests/can_invoke_test.js +0 -46
- data/dist/es/ember-utils/tests/checkHasSuper_test.js +0 -17
- data/dist/es/ember-utils/tests/generate_guid_test.js +0 -13
- data/dist/es/ember-utils/tests/guid_for_test.js +0 -101
- data/dist/es/ember-utils/tests/inspect_test.js +0 -146
- data/dist/es/ember-utils/tests/is_proxy_test.js +0 -18
- data/dist/es/ember-utils/tests/make_array_test.js +0 -41
- data/dist/es/ember-utils/tests/to-string-test.js +0 -32
- data/dist/es/ember-utils/tests/try_invoke_test.js +0 -48
- data/dist/es/ember-views/index.js +0 -28
- data/dist/es/ember-views/lib/compat/attrs.js +0 -3
- data/dist/es/ember-views/lib/compat/fallback-view-registry.js +0 -3
- data/dist/es/ember-views/lib/component_lookup.js +0 -27
- data/dist/es/ember-views/lib/mixins/action_support.js +0 -189
- data/dist/es/ember-views/lib/mixins/child_views_support.js +0 -27
- data/dist/es/ember-views/lib/mixins/class_names_support.js +0 -102
- data/dist/es/ember-views/lib/mixins/text_support.js +0 -333
- data/dist/es/ember-views/lib/mixins/view_state_support.js +0 -19
- data/dist/es/ember-views/lib/mixins/view_support.js +0 -452
- data/dist/es/ember-views/lib/system/action_manager.js +0 -14
- data/dist/es/ember-views/lib/system/event_dispatcher.js +0 -454
- data/dist/es/ember-views/lib/system/jquery.js +0 -29
- data/dist/es/ember-views/lib/system/jquery_event_deprecation.js +0 -61
- data/dist/es/ember-views/lib/system/lookup_partial.js +0 -55
- data/dist/es/ember-views/lib/system/utils.js +0 -201
- data/dist/es/ember-views/lib/utils/lookup-component.js +0 -58
- data/dist/es/ember-views/lib/views/core_view.js +0 -83
- data/dist/es/ember-views/lib/views/states.js +0 -48
- data/dist/es/ember-views/lib/views/states/default.js +0 -17
- data/dist/es/ember-views/lib/views/states/destroying.js +0 -16
- data/dist/es/ember-views/lib/views/states/has_element.js +0 -31
- data/dist/es/ember-views/lib/views/states/in_dom.js +0 -28
- data/dist/es/ember-views/lib/views/states/pre_render.js +0 -3
- data/dist/es/ember/index.js +0 -645
- data/dist/es/ember/tests/application_lifecycle_test.js +0 -188
- data/dist/es/ember/tests/component_context_test.js +0 -255
- data/dist/es/ember/tests/component_registration_test.js +0 -252
- data/dist/es/ember/tests/controller_test.js +0 -44
- data/dist/es/ember/tests/error_handler_test.js +0 -581
- data/dist/es/ember/tests/helpers/helper_registration_test.js +0 -103
- data/dist/es/ember/tests/helpers/link_to_test.js +0 -2103
- data/dist/es/ember/tests/helpers/link_to_test/link_to_transitioning_classes_test.js +0 -342
- data/dist/es/ember/tests/helpers/link_to_test/link_to_with_query_params_test.js +0 -694
- data/dist/es/ember/tests/homepage_example_test.js +0 -47
- data/dist/es/ember/tests/integration/multiple-app-test.js +0 -101
- data/dist/es/ember/tests/production_build_test.js +0 -34
- data/dist/es/ember/tests/reexports_test.js +0 -307
- data/dist/es/ember/tests/routing/decoupled_basic_test.js +0 -4506
- data/dist/es/ember/tests/routing/query_params_test.js +0 -1579
- data/dist/es/ember/tests/routing/query_params_test/model_dependent_state_with_query_params_test.js +0 -1117
- data/dist/es/ember/tests/routing/query_params_test/overlapping_query_params_test.js +0 -185
- data/dist/es/ember/tests/routing/query_params_test/query_param_async_get_handler_test.js +0 -327
- data/dist/es/ember/tests/routing/query_params_test/query_params_paramless_link_to_test.js +0 -37
- data/dist/es/ember/tests/routing/query_params_test/shared_state_test.js +0 -84
- data/dist/es/ember/tests/routing/router_map_test.js +0 -46
- data/dist/es/ember/tests/routing/router_service_test/basic_test.js +0 -95
- data/dist/es/ember/tests/routing/router_service_test/currenturl_lifecycle_test.js +0 -149
- data/dist/es/ember/tests/routing/router_service_test/isActive_test.js +0 -113
- data/dist/es/ember/tests/routing/router_service_test/replaceWith_test.js +0 -144
- data/dist/es/ember/tests/routing/router_service_test/transitionTo_test.js +0 -370
- data/dist/es/ember/tests/routing/router_service_test/urlFor_test.js +0 -307
- data/dist/es/ember/tests/routing/substates_test.js +0 -1110
- data/dist/es/ember/tests/routing/toplevel_dom_test.js +0 -37
- data/dist/es/ember/tests/service_injection_test.js +0 -278
- data/dist/es/ember/tests/view_instrumentation_test.js +0 -47
- data/dist/es/ember/version.js +0 -1
- data/dist/es/handlebars.js +0 -1268
- data/dist/es/internal-test-helpers/index.js +0 -31
- data/dist/es/internal-test-helpers/lib/.gitkeep +0 -0
- data/dist/es/internal-test-helpers/lib/apply-mixins.js +0 -37
- data/dist/es/internal-test-helpers/lib/browser-detect.js +0 -4
- data/dist/es/internal-test-helpers/lib/build-owner.js +0 -49
- data/dist/es/internal-test-helpers/lib/confirm-export.js +0 -45
- data/dist/es/internal-test-helpers/lib/ember-dev/assertion.js +0 -87
- data/dist/es/internal-test-helpers/lib/ember-dev/containers.js +0 -34
- data/dist/es/internal-test-helpers/lib/ember-dev/debug.js +0 -47
- data/dist/es/internal-test-helpers/lib/ember-dev/deprecation.js +0 -71
- data/dist/es/internal-test-helpers/lib/ember-dev/index.js +0 -19
- data/dist/es/internal-test-helpers/lib/ember-dev/method-call-tracker.js +0 -127
- data/dist/es/internal-test-helpers/lib/ember-dev/namespaces.js +0 -34
- data/dist/es/internal-test-helpers/lib/ember-dev/run-loop.js +0 -28
- data/dist/es/internal-test-helpers/lib/ember-dev/setup-qunit.js +0 -26
- data/dist/es/internal-test-helpers/lib/ember-dev/utils.js +0 -33
- data/dist/es/internal-test-helpers/lib/ember-dev/warning.js +0 -71
- data/dist/es/internal-test-helpers/lib/equal-inner-html.js +0 -37
- data/dist/es/internal-test-helpers/lib/equal-tokens.js +0 -53
- data/dist/es/internal-test-helpers/lib/factory.js +0 -65
- data/dist/es/internal-test-helpers/lib/get-all-property-names.js +0 -12
- data/dist/es/internal-test-helpers/lib/get-text-of.js +0 -3
- data/dist/es/internal-test-helpers/lib/matchers.js +0 -167
- data/dist/es/internal-test-helpers/lib/module-for.js +0 -89
- data/dist/es/internal-test-helpers/lib/registry-check.js +0 -28
- data/dist/es/internal-test-helpers/lib/run.js +0 -11
- data/dist/es/internal-test-helpers/lib/strip.js +0 -12
- data/dist/es/internal-test-helpers/lib/system/synthetic-events.js +0 -183
- data/dist/es/internal-test-helpers/lib/test-cases/abstract-application.js +0 -70
- data/dist/es/internal-test-helpers/lib/test-cases/abstract-rendering.js +0 -203
- data/dist/es/internal-test-helpers/lib/test-cases/abstract.js +0 -222
- data/dist/es/internal-test-helpers/lib/test-cases/application.js +0 -39
- data/dist/es/internal-test-helpers/lib/test-cases/autoboot-application.js +0 -34
- data/dist/es/internal-test-helpers/lib/test-cases/default-resolver-application.js +0 -43
- data/dist/es/internal-test-helpers/lib/test-cases/node-query.js +0 -120
- data/dist/es/internal-test-helpers/lib/test-cases/query-param.js +0 -124
- data/dist/es/internal-test-helpers/lib/test-cases/rendering.js +0 -14
- data/dist/es/internal-test-helpers/lib/test-cases/router.js +0 -26
- data/dist/es/internal-test-helpers/lib/test-cases/test-resolver-application.js +0 -40
- data/dist/es/internal-test-helpers/lib/test-resolver.js +0 -86
- data/dist/es/internal-test-helpers/tests/index-test.js +0 -10
- data/dist/es/route-recognizer.js +0 -685
- data/dist/es/router.js +0 -2454
- data/dist/es/rsvp.js +0 -2394
- data/dist/es/simple-html-tokenizer.js +0 -638
- data/dist/jquery/jquery.js +0 -10364
- data/dist/node/app-boot-test.js +0 -146
- data/dist/node/build-info-test.js +0 -177
- data/dist/node/component-rendering-test.js +0 -34
- data/dist/node/helpers/app-module.js +0 -198
- data/dist/node/helpers/assert-html-matches.js +0 -25
- data/dist/node/helpers/build-owner.js +0 -28
- data/dist/node/helpers/component-module.js +0 -137
- data/dist/node/sourcemap-test.js +0 -27
- data/dist/node/template-compiler-test.js +0 -45
- data/dist/node/visit-test.js +0 -349
- data/dist/qunit/qunit.css +0 -436
- data/dist/qunit/qunit.js +0 -5188
- data/dist/tests/index.html +0 -254
- data/ember-source.gemspec +0 -28
- data/node_modules/.yarn-integrity +0 -10
- data/yarn.lock +0 -4
data/dist/es/container/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Public API for the container is still in flux.
|
|
3
|
-
The public API, specified on the application namespace should be considered the stable API.
|
|
4
|
-
// @module container
|
|
5
|
-
@private
|
|
6
|
-
*/
|
|
7
|
-
export { default as Registry, privatize } from './lib/registry';
|
|
8
|
-
export { default as Container, FACTORY_FOR } from './lib/container';
|
|
@@ -1,437 +0,0 @@
|
|
|
1
|
-
import { EMBER_MODULE_UNIFICATION } from '@ember/canary-features';
|
|
2
|
-
import { assert } from '@ember/debug';
|
|
3
|
-
import { assign } from '@ember/polyfills';
|
|
4
|
-
import { DEBUG } from '@glimmer/env';
|
|
5
|
-
import { OWNER, setOwner } from 'ember-owner';
|
|
6
|
-
import { dictionary, HAS_NATIVE_PROXY } from 'ember-utils';
|
|
7
|
-
let leakTracking;
|
|
8
|
-
let containers;
|
|
9
|
-
if (DEBUG) {
|
|
10
|
-
// requires v8
|
|
11
|
-
// chrome --js-flags="--allow-natives-syntax --expose-gc"
|
|
12
|
-
// node --allow-natives-syntax --expose-gc
|
|
13
|
-
try {
|
|
14
|
-
if (typeof gc === 'function') {
|
|
15
|
-
leakTracking = (() => {
|
|
16
|
-
// avoid syntax errors when --allow-natives-syntax not present
|
|
17
|
-
let GetWeakSetValues = new Function('weakSet', 'return %GetWeakSetValues(weakSet, 0)');
|
|
18
|
-
containers = new WeakSet();
|
|
19
|
-
return {
|
|
20
|
-
hasContainers() {
|
|
21
|
-
gc();
|
|
22
|
-
return GetWeakSetValues(containers).length > 0;
|
|
23
|
-
},
|
|
24
|
-
reset() {
|
|
25
|
-
let values = GetWeakSetValues(containers);
|
|
26
|
-
for (let i = 0; i < values.length; i++) {
|
|
27
|
-
containers.delete(values[i]);
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
})();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
catch (e) {
|
|
35
|
-
// ignore
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
A container used to instantiate and cache objects.
|
|
40
|
-
|
|
41
|
-
Every `Container` must be associated with a `Registry`, which is referenced
|
|
42
|
-
to determine the factory and options that should be used to instantiate
|
|
43
|
-
objects.
|
|
44
|
-
|
|
45
|
-
The public API for `Container` is still in flux and should not be considered
|
|
46
|
-
stable.
|
|
47
|
-
|
|
48
|
-
@private
|
|
49
|
-
@class Container
|
|
50
|
-
*/
|
|
51
|
-
export default class Container {
|
|
52
|
-
constructor(registry, options = {}) {
|
|
53
|
-
this.registry = registry;
|
|
54
|
-
this.owner = options.owner || null;
|
|
55
|
-
this.cache = dictionary(options.cache || null);
|
|
56
|
-
this.factoryManagerCache = dictionary(options.factoryManagerCache || null);
|
|
57
|
-
this.isDestroyed = false;
|
|
58
|
-
this.isDestroying = false;
|
|
59
|
-
if (DEBUG) {
|
|
60
|
-
this.validationCache = dictionary(options.validationCache || null);
|
|
61
|
-
if (containers !== undefined) {
|
|
62
|
-
containers.add(this);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
@private
|
|
68
|
-
@property registry
|
|
69
|
-
@type Registry
|
|
70
|
-
@since 1.11.0
|
|
71
|
-
*/
|
|
72
|
-
/**
|
|
73
|
-
@private
|
|
74
|
-
@property cache
|
|
75
|
-
@type InheritingDict
|
|
76
|
-
*/
|
|
77
|
-
/**
|
|
78
|
-
@private
|
|
79
|
-
@property validationCache
|
|
80
|
-
@type InheritingDict
|
|
81
|
-
*/
|
|
82
|
-
/**
|
|
83
|
-
Given a fullName return a corresponding instance.
|
|
84
|
-
The default behavior is for lookup to return a singleton instance.
|
|
85
|
-
The singleton is scoped to the container, allowing multiple containers
|
|
86
|
-
to all have their own locally scoped singletons.
|
|
87
|
-
```javascript
|
|
88
|
-
let registry = new Registry();
|
|
89
|
-
let container = registry.container();
|
|
90
|
-
registry.register('api:twitter', Twitter);
|
|
91
|
-
let twitter = container.lookup('api:twitter');
|
|
92
|
-
twitter instanceof Twitter; // => true
|
|
93
|
-
// by default the container will return singletons
|
|
94
|
-
let twitter2 = container.lookup('api:twitter');
|
|
95
|
-
twitter2 instanceof Twitter; // => true
|
|
96
|
-
twitter === twitter2; //=> true
|
|
97
|
-
```
|
|
98
|
-
If singletons are not wanted, an optional flag can be provided at lookup.
|
|
99
|
-
```javascript
|
|
100
|
-
let registry = new Registry();
|
|
101
|
-
let container = registry.container();
|
|
102
|
-
registry.register('api:twitter', Twitter);
|
|
103
|
-
let twitter = container.lookup('api:twitter', { singleton: false });
|
|
104
|
-
let twitter2 = container.lookup('api:twitter', { singleton: false });
|
|
105
|
-
twitter === twitter2; //=> false
|
|
106
|
-
```
|
|
107
|
-
@private
|
|
108
|
-
@method lookup
|
|
109
|
-
@param {String} fullName
|
|
110
|
-
@param {Object} [options]
|
|
111
|
-
@param {String} [options.source] The fullname of the request source (used for local lookup)
|
|
112
|
-
@return {any}
|
|
113
|
-
*/
|
|
114
|
-
lookup(fullName, options) {
|
|
115
|
-
assert('expected container not to be destroyed', !this.isDestroyed);
|
|
116
|
-
assert('fullName must be a proper full name', this.registry.isValidFullName(fullName));
|
|
117
|
-
return lookup(this, this.registry.normalize(fullName), options);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
A depth first traversal, destroying the container, its descendant containers and all
|
|
121
|
-
their managed objects.
|
|
122
|
-
@private
|
|
123
|
-
@method destroy
|
|
124
|
-
*/
|
|
125
|
-
destroy() {
|
|
126
|
-
destroyDestroyables(this);
|
|
127
|
-
this.isDestroying = true;
|
|
128
|
-
}
|
|
129
|
-
finalizeDestroy() {
|
|
130
|
-
resetCache(this);
|
|
131
|
-
this.isDestroyed = true;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
Clear either the entire cache or just the cache for a particular key.
|
|
135
|
-
|
|
136
|
-
@private
|
|
137
|
-
@method reset
|
|
138
|
-
@param {String} fullName optional key to reset; if missing, resets everything
|
|
139
|
-
*/
|
|
140
|
-
reset(fullName) {
|
|
141
|
-
if (this.isDestroyed)
|
|
142
|
-
return;
|
|
143
|
-
if (fullName === undefined) {
|
|
144
|
-
destroyDestroyables(this);
|
|
145
|
-
resetCache(this);
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
resetMember(this, this.registry.normalize(fullName));
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
Returns an object that can be used to provide an owner to a
|
|
153
|
-
manually created instance.
|
|
154
|
-
@private
|
|
155
|
-
@method ownerInjection
|
|
156
|
-
@returns { Object }
|
|
157
|
-
*/
|
|
158
|
-
ownerInjection() {
|
|
159
|
-
return { [OWNER]: this.owner };
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
Given a fullName, return the corresponding factory. The consumer of the factory
|
|
163
|
-
is responsible for the destruction of any factory instances, as there is no
|
|
164
|
-
way for the container to ensure instances are destroyed when it itself is
|
|
165
|
-
destroyed.
|
|
166
|
-
@public
|
|
167
|
-
@method factoryFor
|
|
168
|
-
@param {String} fullName
|
|
169
|
-
@param {Object} [options]
|
|
170
|
-
@param {String} [options.source] The fullname of the request source (used for local lookup)
|
|
171
|
-
@return {any}
|
|
172
|
-
*/
|
|
173
|
-
factoryFor(fullName, options = {}) {
|
|
174
|
-
assert('expected container not to be destroyed', !this.isDestroyed);
|
|
175
|
-
let normalizedName = this.registry.normalize(fullName);
|
|
176
|
-
assert('fullName must be a proper full name', this.registry.isValidFullName(normalizedName));
|
|
177
|
-
assert('EMBER_MODULE_UNIFICATION must be enabled to pass a namespace option to factoryFor', EMBER_MODULE_UNIFICATION || !options.namespace);
|
|
178
|
-
if (options.source || options.namespace) {
|
|
179
|
-
normalizedName = this.registry.expandLocalLookup(fullName, options);
|
|
180
|
-
if (!normalizedName) {
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
return factoryFor(this, normalizedName, fullName);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
if (DEBUG) {
|
|
188
|
-
Container._leakTracking = leakTracking;
|
|
189
|
-
}
|
|
190
|
-
/*
|
|
191
|
-
* Wrap a factory manager in a proxy which will not permit properties to be
|
|
192
|
-
* set on the manager.
|
|
193
|
-
*/
|
|
194
|
-
function wrapManagerInDeprecationProxy(manager) {
|
|
195
|
-
if (HAS_NATIVE_PROXY) {
|
|
196
|
-
let validator = {
|
|
197
|
-
set(_obj, prop) {
|
|
198
|
-
throw new Error(`You attempted to set "${prop}" on a factory manager created by container#factoryFor. A factory manager is a read-only construct.`);
|
|
199
|
-
},
|
|
200
|
-
};
|
|
201
|
-
// Note:
|
|
202
|
-
// We have to proxy access to the manager here so that private property
|
|
203
|
-
// access doesn't cause the above errors to occur.
|
|
204
|
-
let m = manager;
|
|
205
|
-
let proxiedManager = {
|
|
206
|
-
class: m.class,
|
|
207
|
-
create(props) {
|
|
208
|
-
return m.create(props);
|
|
209
|
-
},
|
|
210
|
-
};
|
|
211
|
-
let proxy = new Proxy(proxiedManager, validator);
|
|
212
|
-
FACTORY_FOR.set(proxy, manager);
|
|
213
|
-
}
|
|
214
|
-
return manager;
|
|
215
|
-
}
|
|
216
|
-
function isSingleton(container, fullName) {
|
|
217
|
-
return container.registry.getOption(fullName, 'singleton') !== false;
|
|
218
|
-
}
|
|
219
|
-
function isInstantiatable(container, fullName) {
|
|
220
|
-
return container.registry.getOption(fullName, 'instantiate') !== false;
|
|
221
|
-
}
|
|
222
|
-
function lookup(container, fullName, options = {}) {
|
|
223
|
-
assert('EMBER_MODULE_UNIFICATION must be enabled to pass a namespace option to lookup', EMBER_MODULE_UNIFICATION || !options.namespace);
|
|
224
|
-
let normalizedName = fullName;
|
|
225
|
-
if (options.source || options.namespace) {
|
|
226
|
-
normalizedName = container.registry.expandLocalLookup(fullName, options);
|
|
227
|
-
if (!normalizedName) {
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
if (options.singleton !== false) {
|
|
232
|
-
let cached = container.cache[normalizedName];
|
|
233
|
-
if (cached !== undefined) {
|
|
234
|
-
return cached;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
return instantiateFactory(container, normalizedName, fullName, options);
|
|
238
|
-
}
|
|
239
|
-
function factoryFor(container, normalizedName, fullName) {
|
|
240
|
-
let cached = container.factoryManagerCache[normalizedName];
|
|
241
|
-
if (cached !== undefined) {
|
|
242
|
-
return cached;
|
|
243
|
-
}
|
|
244
|
-
let factory = container.registry.resolve(normalizedName);
|
|
245
|
-
if (factory === undefined) {
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
if (DEBUG && factory && typeof factory._onLookup === 'function') {
|
|
249
|
-
factory._onLookup(fullName);
|
|
250
|
-
}
|
|
251
|
-
let manager = new FactoryManager(container, factory, fullName, normalizedName);
|
|
252
|
-
if (DEBUG) {
|
|
253
|
-
manager = wrapManagerInDeprecationProxy(manager);
|
|
254
|
-
}
|
|
255
|
-
container.factoryManagerCache[normalizedName] = manager;
|
|
256
|
-
return manager;
|
|
257
|
-
}
|
|
258
|
-
function isSingletonClass(container, fullName, { instantiate, singleton }) {
|
|
259
|
-
return (singleton !== false &&
|
|
260
|
-
!instantiate &&
|
|
261
|
-
isSingleton(container, fullName) &&
|
|
262
|
-
!isInstantiatable(container, fullName));
|
|
263
|
-
}
|
|
264
|
-
function isSingletonInstance(container, fullName, { instantiate, singleton }) {
|
|
265
|
-
return (singleton !== false &&
|
|
266
|
-
instantiate !== false &&
|
|
267
|
-
isSingleton(container, fullName) &&
|
|
268
|
-
isInstantiatable(container, fullName));
|
|
269
|
-
}
|
|
270
|
-
function isFactoryClass(container, fullname, { instantiate, singleton }) {
|
|
271
|
-
return (instantiate === false &&
|
|
272
|
-
(singleton === false || !isSingleton(container, fullname)) &&
|
|
273
|
-
!isInstantiatable(container, fullname));
|
|
274
|
-
}
|
|
275
|
-
function isFactoryInstance(container, fullName, { instantiate, singleton }) {
|
|
276
|
-
return (instantiate !== false &&
|
|
277
|
-
(singleton !== false || isSingleton(container, fullName)) &&
|
|
278
|
-
isInstantiatable(container, fullName));
|
|
279
|
-
}
|
|
280
|
-
function instantiateFactory(container, normalizedName, fullName, options) {
|
|
281
|
-
let factoryManager = factoryFor(container, normalizedName, fullName);
|
|
282
|
-
if (factoryManager === undefined) {
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
// SomeClass { singleton: true, instantiate: true } | { singleton: true } | { instantiate: true } | {}
|
|
286
|
-
// By default majority of objects fall into this case
|
|
287
|
-
if (isSingletonInstance(container, fullName, options)) {
|
|
288
|
-
return (container.cache[normalizedName] = factoryManager.create());
|
|
289
|
-
}
|
|
290
|
-
// SomeClass { singleton: false, instantiate: true }
|
|
291
|
-
if (isFactoryInstance(container, fullName, options)) {
|
|
292
|
-
return factoryManager.create();
|
|
293
|
-
}
|
|
294
|
-
// SomeClass { singleton: true, instantiate: false } | { instantiate: false } | { singleton: false, instantiation: false }
|
|
295
|
-
if (isSingletonClass(container, fullName, options) ||
|
|
296
|
-
isFactoryClass(container, fullName, options)) {
|
|
297
|
-
return factoryManager.class;
|
|
298
|
-
}
|
|
299
|
-
throw new Error('Could not create factory');
|
|
300
|
-
}
|
|
301
|
-
function processInjections(container, injections, result) {
|
|
302
|
-
if (DEBUG) {
|
|
303
|
-
container.registry.validateInjections(injections);
|
|
304
|
-
}
|
|
305
|
-
let hash = result.injections;
|
|
306
|
-
if (hash === undefined) {
|
|
307
|
-
hash = result.injections = {};
|
|
308
|
-
}
|
|
309
|
-
for (let i = 0; i < injections.length; i++) {
|
|
310
|
-
let { property, specifier, source } = injections[i];
|
|
311
|
-
if (source) {
|
|
312
|
-
hash[property] = lookup(container, specifier, { source });
|
|
313
|
-
}
|
|
314
|
-
else {
|
|
315
|
-
hash[property] = lookup(container, specifier);
|
|
316
|
-
}
|
|
317
|
-
if (!result.isDynamic) {
|
|
318
|
-
result.isDynamic = !isSingleton(container, specifier);
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
function buildInjections(container, typeInjections, injections) {
|
|
323
|
-
let result = {
|
|
324
|
-
injections: undefined,
|
|
325
|
-
isDynamic: false,
|
|
326
|
-
};
|
|
327
|
-
if (typeInjections !== undefined) {
|
|
328
|
-
processInjections(container, typeInjections, result);
|
|
329
|
-
}
|
|
330
|
-
if (injections !== undefined) {
|
|
331
|
-
processInjections(container, injections, result);
|
|
332
|
-
}
|
|
333
|
-
return result;
|
|
334
|
-
}
|
|
335
|
-
function injectionsFor(container, fullName) {
|
|
336
|
-
let registry = container.registry;
|
|
337
|
-
let [type] = fullName.split(':');
|
|
338
|
-
let typeInjections = registry.getTypeInjections(type);
|
|
339
|
-
let injections = registry.getInjections(fullName);
|
|
340
|
-
return buildInjections(container, typeInjections, injections);
|
|
341
|
-
}
|
|
342
|
-
function destroyDestroyables(container) {
|
|
343
|
-
let cache = container.cache;
|
|
344
|
-
let keys = Object.keys(cache);
|
|
345
|
-
for (let i = 0; i < keys.length; i++) {
|
|
346
|
-
let key = keys[i];
|
|
347
|
-
let value = cache[key];
|
|
348
|
-
if (value.destroy) {
|
|
349
|
-
value.destroy();
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
function resetCache(container) {
|
|
354
|
-
container.cache = dictionary(null);
|
|
355
|
-
container.factoryManagerCache = dictionary(null);
|
|
356
|
-
}
|
|
357
|
-
function resetMember(container, fullName) {
|
|
358
|
-
let member = container.cache[fullName];
|
|
359
|
-
delete container.factoryManagerCache[fullName];
|
|
360
|
-
if (member) {
|
|
361
|
-
delete container.cache[fullName];
|
|
362
|
-
if (member.destroy) {
|
|
363
|
-
member.destroy();
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
export const FACTORY_FOR = new WeakMap();
|
|
368
|
-
class FactoryManager {
|
|
369
|
-
constructor(container, factory, fullName, normalizedName) {
|
|
370
|
-
this.container = container;
|
|
371
|
-
this.owner = container.owner;
|
|
372
|
-
this.class = factory;
|
|
373
|
-
this.fullName = fullName;
|
|
374
|
-
this.normalizedName = normalizedName;
|
|
375
|
-
this.madeToString = undefined;
|
|
376
|
-
this.injections = undefined;
|
|
377
|
-
FACTORY_FOR.set(this, this);
|
|
378
|
-
}
|
|
379
|
-
toString() {
|
|
380
|
-
if (this.madeToString === undefined) {
|
|
381
|
-
this.madeToString = this.container.registry.makeToString(this.class, this.fullName);
|
|
382
|
-
}
|
|
383
|
-
return this.madeToString;
|
|
384
|
-
}
|
|
385
|
-
create(options) {
|
|
386
|
-
let injectionsCache = this.injections;
|
|
387
|
-
if (injectionsCache === undefined) {
|
|
388
|
-
let { injections, isDynamic } = injectionsFor(this.container, this.normalizedName);
|
|
389
|
-
injectionsCache = injections;
|
|
390
|
-
if (!isDynamic) {
|
|
391
|
-
this.injections = injections;
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
let props = injectionsCache;
|
|
395
|
-
if (options !== undefined) {
|
|
396
|
-
props = assign({}, injectionsCache, options);
|
|
397
|
-
}
|
|
398
|
-
if (DEBUG) {
|
|
399
|
-
let lazyInjections;
|
|
400
|
-
let validationCache = this.container.validationCache;
|
|
401
|
-
// Ensure that all lazy injections are valid at instantiation time
|
|
402
|
-
if (!validationCache[this.fullName] &&
|
|
403
|
-
this.class &&
|
|
404
|
-
typeof this.class._lazyInjections === 'function') {
|
|
405
|
-
lazyInjections = this.class._lazyInjections();
|
|
406
|
-
lazyInjections = this.container.registry.normalizeInjectionsHash(lazyInjections);
|
|
407
|
-
this.container.registry.validateInjections(lazyInjections);
|
|
408
|
-
}
|
|
409
|
-
validationCache[this.fullName] = true;
|
|
410
|
-
}
|
|
411
|
-
if (!this.class.create) {
|
|
412
|
-
throw new Error(`Failed to create an instance of '${this.normalizedName}'. Most likely an improperly defined class or` + ` an invalid module export.`);
|
|
413
|
-
}
|
|
414
|
-
// required to allow access to things like
|
|
415
|
-
// the customized toString, _debugContainerKey,
|
|
416
|
-
// owner, etc. without a double extend and without
|
|
417
|
-
// modifying the objects properties
|
|
418
|
-
if (typeof this.class._initFactory === 'function') {
|
|
419
|
-
this.class._initFactory(this);
|
|
420
|
-
}
|
|
421
|
-
else {
|
|
422
|
-
// in the non-EmberObject case we need to still setOwner
|
|
423
|
-
// this is required for supporting glimmer environment and
|
|
424
|
-
// template instantiation which rely heavily on
|
|
425
|
-
// `options[OWNER]` being passed into `create`
|
|
426
|
-
// TODO: clean this up, and remove in future versions
|
|
427
|
-
if (options === undefined || props === undefined) {
|
|
428
|
-
// avoid mutating `props` here since they are the cached injections
|
|
429
|
-
props = assign({}, props);
|
|
430
|
-
}
|
|
431
|
-
setOwner(props, this.owner);
|
|
432
|
-
}
|
|
433
|
-
let instance = this.class.create(props);
|
|
434
|
-
FACTORY_FOR.set(instance, this);
|
|
435
|
-
return instance;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
@@ -1,646 +0,0 @@
|
|
|
1
|
-
import { assert, deprecate } from '@ember/debug';
|
|
2
|
-
import { REGISTRY_RESOLVER_AS_FUNCTION } from '@ember/deprecated-features';
|
|
3
|
-
import { assign } from '@ember/polyfills';
|
|
4
|
-
import { DEBUG } from '@glimmer/env';
|
|
5
|
-
import { ENV } from 'ember-environment';
|
|
6
|
-
import { dictionary, intern } from 'ember-utils';
|
|
7
|
-
import Container from './container';
|
|
8
|
-
const VALID_FULL_NAME_REGEXP = /^[^:]+:[^:]+$/;
|
|
9
|
-
const missingResolverFunctionsDeprecation = 'Passing a `resolver` function into a Registry is deprecated. Please pass in a Resolver object with a `resolve` method.';
|
|
10
|
-
/**
|
|
11
|
-
A registry used to store factory and option information keyed
|
|
12
|
-
by type.
|
|
13
|
-
|
|
14
|
-
A `Registry` stores the factory and option information needed by a
|
|
15
|
-
`Container` to instantiate and cache objects.
|
|
16
|
-
|
|
17
|
-
The API for `Registry` is still in flux and should not be considered stable.
|
|
18
|
-
|
|
19
|
-
@private
|
|
20
|
-
@class Registry
|
|
21
|
-
@since 1.11.0
|
|
22
|
-
*/
|
|
23
|
-
export default class Registry {
|
|
24
|
-
constructor(options = {}) {
|
|
25
|
-
this.fallback = options.fallback || null;
|
|
26
|
-
this.resolver = options.resolver || null;
|
|
27
|
-
if (ENV._ENABLE_RESOLVER_FUNCTION_SUPPORT !== true) {
|
|
28
|
-
assert(missingResolverFunctionsDeprecation, typeof this.resolver !== 'function');
|
|
29
|
-
}
|
|
30
|
-
if (REGISTRY_RESOLVER_AS_FUNCTION &&
|
|
31
|
-
typeof this.resolver === 'function' &&
|
|
32
|
-
ENV._ENABLE_RESOLVER_FUNCTION_SUPPORT === true) {
|
|
33
|
-
deprecate(missingResolverFunctionsDeprecation, false, {
|
|
34
|
-
id: 'ember-application.registry-resolver-as-function',
|
|
35
|
-
until: '3.0.0',
|
|
36
|
-
url: 'https://emberjs.com/deprecations/v2.x#toc_registry-resolver-as-function',
|
|
37
|
-
});
|
|
38
|
-
this.resolver = { resolve: this.resolver };
|
|
39
|
-
}
|
|
40
|
-
this.registrations = dictionary(options.registrations || null);
|
|
41
|
-
this._typeInjections = dictionary(null);
|
|
42
|
-
this._injections = dictionary(null);
|
|
43
|
-
this._localLookupCache = Object.create(null);
|
|
44
|
-
this._normalizeCache = dictionary(null);
|
|
45
|
-
this._resolveCache = dictionary(null);
|
|
46
|
-
this._failSet = new Set();
|
|
47
|
-
this._options = dictionary(null);
|
|
48
|
-
this._typeOptions = dictionary(null);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
A backup registry for resolving registrations when no matches can be found.
|
|
52
|
-
|
|
53
|
-
@private
|
|
54
|
-
@property fallback
|
|
55
|
-
@type Registry
|
|
56
|
-
*/
|
|
57
|
-
/**
|
|
58
|
-
An object that has a `resolve` method that resolves a name.
|
|
59
|
-
|
|
60
|
-
@private
|
|
61
|
-
@property resolver
|
|
62
|
-
@type Resolver
|
|
63
|
-
*/
|
|
64
|
-
/**
|
|
65
|
-
@private
|
|
66
|
-
@property registrations
|
|
67
|
-
@type InheritingDict
|
|
68
|
-
*/
|
|
69
|
-
/**
|
|
70
|
-
@private
|
|
71
|
-
|
|
72
|
-
@property _typeInjections
|
|
73
|
-
@type InheritingDict
|
|
74
|
-
*/
|
|
75
|
-
/**
|
|
76
|
-
@private
|
|
77
|
-
|
|
78
|
-
@property _injections
|
|
79
|
-
@type InheritingDict
|
|
80
|
-
*/
|
|
81
|
-
/**
|
|
82
|
-
@private
|
|
83
|
-
|
|
84
|
-
@property _normalizeCache
|
|
85
|
-
@type InheritingDict
|
|
86
|
-
*/
|
|
87
|
-
/**
|
|
88
|
-
@private
|
|
89
|
-
|
|
90
|
-
@property _resolveCache
|
|
91
|
-
@type InheritingDict
|
|
92
|
-
*/
|
|
93
|
-
/**
|
|
94
|
-
@private
|
|
95
|
-
|
|
96
|
-
@property _options
|
|
97
|
-
@type InheritingDict
|
|
98
|
-
*/
|
|
99
|
-
/**
|
|
100
|
-
@private
|
|
101
|
-
|
|
102
|
-
@property _typeOptions
|
|
103
|
-
@type InheritingDict
|
|
104
|
-
*/
|
|
105
|
-
/**
|
|
106
|
-
Creates a container based on this registry.
|
|
107
|
-
|
|
108
|
-
@private
|
|
109
|
-
@method container
|
|
110
|
-
@param {Object} options
|
|
111
|
-
@return {Container} created container
|
|
112
|
-
*/
|
|
113
|
-
container(options) {
|
|
114
|
-
return new Container(this, options);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
Registers a factory for later injection.
|
|
118
|
-
|
|
119
|
-
Example:
|
|
120
|
-
|
|
121
|
-
```javascript
|
|
122
|
-
let registry = new Registry();
|
|
123
|
-
|
|
124
|
-
registry.register('model:user', Person, {singleton: false });
|
|
125
|
-
registry.register('fruit:favorite', Orange);
|
|
126
|
-
registry.register('communication:main', Email, {singleton: false});
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
@private
|
|
130
|
-
@method register
|
|
131
|
-
@param {String} fullName
|
|
132
|
-
@param {Function} factory
|
|
133
|
-
@param {Object} options
|
|
134
|
-
*/
|
|
135
|
-
register(fullName, factory, options = {}) {
|
|
136
|
-
assert('fullName must be a proper full name', this.isValidFullName(fullName));
|
|
137
|
-
assert(`Attempting to register an unknown factory: '${fullName}'`, factory !== undefined);
|
|
138
|
-
let normalizedName = this.normalize(fullName);
|
|
139
|
-
assert(`Cannot re-register: '${fullName}', as it has already been resolved.`, !this._resolveCache[normalizedName]);
|
|
140
|
-
this._failSet.delete(normalizedName);
|
|
141
|
-
this.registrations[normalizedName] = factory;
|
|
142
|
-
this._options[normalizedName] = options;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
Unregister a fullName
|
|
146
|
-
|
|
147
|
-
```javascript
|
|
148
|
-
let registry = new Registry();
|
|
149
|
-
registry.register('model:user', User);
|
|
150
|
-
|
|
151
|
-
registry.resolve('model:user').create() instanceof User //=> true
|
|
152
|
-
|
|
153
|
-
registry.unregister('model:user')
|
|
154
|
-
registry.resolve('model:user') === undefined //=> true
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
@private
|
|
158
|
-
@method unregister
|
|
159
|
-
@param {String} fullName
|
|
160
|
-
*/
|
|
161
|
-
unregister(fullName) {
|
|
162
|
-
assert('fullName must be a proper full name', this.isValidFullName(fullName));
|
|
163
|
-
let normalizedName = this.normalize(fullName);
|
|
164
|
-
this._localLookupCache = Object.create(null);
|
|
165
|
-
delete this.registrations[normalizedName];
|
|
166
|
-
delete this._resolveCache[normalizedName];
|
|
167
|
-
delete this._options[normalizedName];
|
|
168
|
-
this._failSet.delete(normalizedName);
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
Given a fullName return the corresponding factory.
|
|
172
|
-
|
|
173
|
-
By default `resolve` will retrieve the factory from
|
|
174
|
-
the registry.
|
|
175
|
-
|
|
176
|
-
```javascript
|
|
177
|
-
let registry = new Registry();
|
|
178
|
-
registry.register('api:twitter', Twitter);
|
|
179
|
-
|
|
180
|
-
registry.resolve('api:twitter') // => Twitter
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
Optionally the registry can be provided with a custom resolver.
|
|
184
|
-
If provided, `resolve` will first provide the custom resolver
|
|
185
|
-
the opportunity to resolve the fullName, otherwise it will fallback
|
|
186
|
-
to the registry.
|
|
187
|
-
|
|
188
|
-
```javascript
|
|
189
|
-
let registry = new Registry();
|
|
190
|
-
registry.resolver = function(fullName) {
|
|
191
|
-
// lookup via the module system of choice
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
// the twitter factory is added to the module system
|
|
195
|
-
registry.resolve('api:twitter') // => Twitter
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
@private
|
|
199
|
-
@method resolve
|
|
200
|
-
@param {String} fullName
|
|
201
|
-
@param {Object} [options]
|
|
202
|
-
@param {String} [options.source] the fullname of the request source (used for local lookups)
|
|
203
|
-
@return {Function} fullName's factory
|
|
204
|
-
*/
|
|
205
|
-
resolve(fullName, options) {
|
|
206
|
-
let factory = resolve(this, this.normalize(fullName), options);
|
|
207
|
-
if (factory === undefined && this.fallback !== null) {
|
|
208
|
-
factory = this.fallback.resolve(...arguments);
|
|
209
|
-
}
|
|
210
|
-
return factory;
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
A hook that can be used to describe how the resolver will
|
|
214
|
-
attempt to find the factory.
|
|
215
|
-
|
|
216
|
-
For example, the default Ember `.describe` returns the full
|
|
217
|
-
class name (including namespace) where Ember's resolver expects
|
|
218
|
-
to find the `fullName`.
|
|
219
|
-
|
|
220
|
-
@private
|
|
221
|
-
@method describe
|
|
222
|
-
@param {String} fullName
|
|
223
|
-
@return {string} described fullName
|
|
224
|
-
*/
|
|
225
|
-
describe(fullName) {
|
|
226
|
-
if (this.resolver !== null && this.resolver.lookupDescription) {
|
|
227
|
-
return this.resolver.lookupDescription(fullName);
|
|
228
|
-
}
|
|
229
|
-
else if (this.fallback !== null) {
|
|
230
|
-
return this.fallback.describe(fullName);
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
return fullName;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
A hook to enable custom fullName normalization behavior
|
|
238
|
-
|
|
239
|
-
@private
|
|
240
|
-
@method normalizeFullName
|
|
241
|
-
@param {String} fullName
|
|
242
|
-
@return {string} normalized fullName
|
|
243
|
-
*/
|
|
244
|
-
normalizeFullName(fullName) {
|
|
245
|
-
if (this.resolver !== null && this.resolver.normalize) {
|
|
246
|
-
return this.resolver.normalize(fullName);
|
|
247
|
-
}
|
|
248
|
-
else if (this.fallback !== null) {
|
|
249
|
-
return this.fallback.normalizeFullName(fullName);
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
return fullName;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
Normalize a fullName based on the application's conventions
|
|
257
|
-
|
|
258
|
-
@private
|
|
259
|
-
@method normalize
|
|
260
|
-
@param {String} fullName
|
|
261
|
-
@return {string} normalized fullName
|
|
262
|
-
*/
|
|
263
|
-
normalize(fullName) {
|
|
264
|
-
return (this._normalizeCache[fullName] ||
|
|
265
|
-
(this._normalizeCache[fullName] = this.normalizeFullName(fullName)));
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
@method makeToString
|
|
269
|
-
|
|
270
|
-
@private
|
|
271
|
-
@param {any} factory
|
|
272
|
-
@param {string} fullName
|
|
273
|
-
@return {function} toString function
|
|
274
|
-
*/
|
|
275
|
-
makeToString(factory, fullName) {
|
|
276
|
-
if (this.resolver !== null && this.resolver.makeToString) {
|
|
277
|
-
return this.resolver.makeToString(factory, fullName);
|
|
278
|
-
}
|
|
279
|
-
else if (this.fallback !== null) {
|
|
280
|
-
return this.fallback.makeToString(factory, fullName);
|
|
281
|
-
}
|
|
282
|
-
else {
|
|
283
|
-
return factory.toString();
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
Given a fullName check if the container is aware of its factory
|
|
288
|
-
or singleton instance.
|
|
289
|
-
|
|
290
|
-
@private
|
|
291
|
-
@method has
|
|
292
|
-
@param {String} fullName
|
|
293
|
-
@param {Object} [options]
|
|
294
|
-
@param {String} [options.source] the fullname of the request source (used for local lookups)
|
|
295
|
-
@return {Boolean}
|
|
296
|
-
*/
|
|
297
|
-
has(fullName, options) {
|
|
298
|
-
if (!this.isValidFullName(fullName)) {
|
|
299
|
-
return false;
|
|
300
|
-
}
|
|
301
|
-
let source = options && options.source && this.normalize(options.source);
|
|
302
|
-
let namespace = (options && options.namespace) || undefined;
|
|
303
|
-
return has(this, this.normalize(fullName), source, namespace);
|
|
304
|
-
}
|
|
305
|
-
/**
|
|
306
|
-
Allow registering options for all factories of a type.
|
|
307
|
-
|
|
308
|
-
```javascript
|
|
309
|
-
let registry = new Registry();
|
|
310
|
-
let container = registry.container();
|
|
311
|
-
|
|
312
|
-
// if all of type `connection` must not be singletons
|
|
313
|
-
registry.optionsForType('connection', { singleton: false });
|
|
314
|
-
|
|
315
|
-
registry.register('connection:twitter', TwitterConnection);
|
|
316
|
-
registry.register('connection:facebook', FacebookConnection);
|
|
317
|
-
|
|
318
|
-
let twitter = container.lookup('connection:twitter');
|
|
319
|
-
let twitter2 = container.lookup('connection:twitter');
|
|
320
|
-
|
|
321
|
-
twitter === twitter2; // => false
|
|
322
|
-
|
|
323
|
-
let facebook = container.lookup('connection:facebook');
|
|
324
|
-
let facebook2 = container.lookup('connection:facebook');
|
|
325
|
-
|
|
326
|
-
facebook === facebook2; // => false
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
@private
|
|
330
|
-
@method optionsForType
|
|
331
|
-
@param {String} type
|
|
332
|
-
@param {Object} options
|
|
333
|
-
*/
|
|
334
|
-
optionsForType(type, options) {
|
|
335
|
-
this._typeOptions[type] = options;
|
|
336
|
-
}
|
|
337
|
-
getOptionsForType(type) {
|
|
338
|
-
let optionsForType = this._typeOptions[type];
|
|
339
|
-
if (optionsForType === undefined && this.fallback !== null) {
|
|
340
|
-
optionsForType = this.fallback.getOptionsForType(type);
|
|
341
|
-
}
|
|
342
|
-
return optionsForType;
|
|
343
|
-
}
|
|
344
|
-
/**
|
|
345
|
-
@private
|
|
346
|
-
@method options
|
|
347
|
-
@param {String} fullName
|
|
348
|
-
@param {Object} options
|
|
349
|
-
*/
|
|
350
|
-
options(fullName, options) {
|
|
351
|
-
let normalizedName = this.normalize(fullName);
|
|
352
|
-
this._options[normalizedName] = options;
|
|
353
|
-
}
|
|
354
|
-
getOptions(fullName) {
|
|
355
|
-
let normalizedName = this.normalize(fullName);
|
|
356
|
-
let options = this._options[normalizedName];
|
|
357
|
-
if (options === undefined && this.fallback !== null) {
|
|
358
|
-
options = this.fallback.getOptions(fullName);
|
|
359
|
-
}
|
|
360
|
-
return options;
|
|
361
|
-
}
|
|
362
|
-
getOption(fullName, optionName) {
|
|
363
|
-
let options = this._options[fullName];
|
|
364
|
-
if (options !== undefined && options[optionName] !== undefined) {
|
|
365
|
-
return options[optionName];
|
|
366
|
-
}
|
|
367
|
-
let type = fullName.split(':')[0];
|
|
368
|
-
options = this._typeOptions[type];
|
|
369
|
-
if (options && options[optionName] !== undefined) {
|
|
370
|
-
return options[optionName];
|
|
371
|
-
}
|
|
372
|
-
else if (this.fallback !== null) {
|
|
373
|
-
return this.fallback.getOption(fullName, optionName);
|
|
374
|
-
}
|
|
375
|
-
return undefined;
|
|
376
|
-
}
|
|
377
|
-
/**
|
|
378
|
-
Used only via `injection`.
|
|
379
|
-
|
|
380
|
-
Provides a specialized form of injection, specifically enabling
|
|
381
|
-
all objects of one type to be injected with a reference to another
|
|
382
|
-
object.
|
|
383
|
-
|
|
384
|
-
For example, provided each object of type `controller` needed a `router`.
|
|
385
|
-
one would do the following:
|
|
386
|
-
|
|
387
|
-
```javascript
|
|
388
|
-
let registry = new Registry();
|
|
389
|
-
let container = registry.container();
|
|
390
|
-
|
|
391
|
-
registry.register('router:main', Router);
|
|
392
|
-
registry.register('controller:user', UserController);
|
|
393
|
-
registry.register('controller:post', PostController);
|
|
394
|
-
|
|
395
|
-
registry.typeInjection('controller', 'router', 'router:main');
|
|
396
|
-
|
|
397
|
-
let user = container.lookup('controller:user');
|
|
398
|
-
let post = container.lookup('controller:post');
|
|
399
|
-
|
|
400
|
-
user.router instanceof Router; //=> true
|
|
401
|
-
post.router instanceof Router; //=> true
|
|
402
|
-
|
|
403
|
-
// both controllers share the same router
|
|
404
|
-
user.router === post.router; //=> true
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
@private
|
|
408
|
-
@method typeInjection
|
|
409
|
-
@param {String} type
|
|
410
|
-
@param {String} property
|
|
411
|
-
@param {String} fullName
|
|
412
|
-
*/
|
|
413
|
-
typeInjection(type, property, fullName) {
|
|
414
|
-
assert('fullName must be a proper full name', this.isValidFullName(fullName));
|
|
415
|
-
let fullNameType = fullName.split(':')[0];
|
|
416
|
-
assert(`Cannot inject a '${fullName}' on other ${type}(s).`, fullNameType !== type);
|
|
417
|
-
let injections = this._typeInjections[type] || (this._typeInjections[type] = []);
|
|
418
|
-
injections.push({ property, specifier: fullName });
|
|
419
|
-
}
|
|
420
|
-
/**
|
|
421
|
-
Defines injection rules.
|
|
422
|
-
|
|
423
|
-
These rules are used to inject dependencies onto objects when they
|
|
424
|
-
are instantiated.
|
|
425
|
-
|
|
426
|
-
Two forms of injections are possible:
|
|
427
|
-
|
|
428
|
-
* Injecting one fullName on another fullName
|
|
429
|
-
* Injecting one fullName on a type
|
|
430
|
-
|
|
431
|
-
Example:
|
|
432
|
-
|
|
433
|
-
```javascript
|
|
434
|
-
let registry = new Registry();
|
|
435
|
-
let container = registry.container();
|
|
436
|
-
|
|
437
|
-
registry.register('source:main', Source);
|
|
438
|
-
registry.register('model:user', User);
|
|
439
|
-
registry.register('model:post', Post);
|
|
440
|
-
|
|
441
|
-
// injecting one fullName on another fullName
|
|
442
|
-
// eg. each user model gets a post model
|
|
443
|
-
registry.injection('model:user', 'post', 'model:post');
|
|
444
|
-
|
|
445
|
-
// injecting one fullName on another type
|
|
446
|
-
registry.injection('model', 'source', 'source:main');
|
|
447
|
-
|
|
448
|
-
let user = container.lookup('model:user');
|
|
449
|
-
let post = container.lookup('model:post');
|
|
450
|
-
|
|
451
|
-
user.source instanceof Source; //=> true
|
|
452
|
-
post.source instanceof Source; //=> true
|
|
453
|
-
|
|
454
|
-
user.post instanceof Post; //=> true
|
|
455
|
-
|
|
456
|
-
// and both models share the same source
|
|
457
|
-
user.source === post.source; //=> true
|
|
458
|
-
```
|
|
459
|
-
|
|
460
|
-
@private
|
|
461
|
-
@method injection
|
|
462
|
-
@param {String} factoryName
|
|
463
|
-
@param {String} property
|
|
464
|
-
@param {String} injectionName
|
|
465
|
-
*/
|
|
466
|
-
injection(fullName, property, injectionName) {
|
|
467
|
-
assert(`Invalid injectionName, expected: 'type:name' got: ${injectionName}`, this.isValidFullName(injectionName));
|
|
468
|
-
let normalizedInjectionName = this.normalize(injectionName);
|
|
469
|
-
if (fullName.indexOf(':') === -1) {
|
|
470
|
-
return this.typeInjection(fullName, property, normalizedInjectionName);
|
|
471
|
-
}
|
|
472
|
-
assert('fullName must be a proper full name', this.isValidFullName(fullName));
|
|
473
|
-
let normalizedName = this.normalize(fullName);
|
|
474
|
-
let injections = this._injections[normalizedName] || (this._injections[normalizedName] = []);
|
|
475
|
-
injections.push({ property, specifier: normalizedInjectionName });
|
|
476
|
-
}
|
|
477
|
-
/**
|
|
478
|
-
@private
|
|
479
|
-
@method knownForType
|
|
480
|
-
@param {String} type the type to iterate over
|
|
481
|
-
*/
|
|
482
|
-
knownForType(type) {
|
|
483
|
-
let localKnown = dictionary(null);
|
|
484
|
-
let registeredNames = Object.keys(this.registrations);
|
|
485
|
-
for (let index = 0; index < registeredNames.length; index++) {
|
|
486
|
-
let fullName = registeredNames[index];
|
|
487
|
-
let itemType = fullName.split(':')[0];
|
|
488
|
-
if (itemType === type) {
|
|
489
|
-
localKnown[fullName] = true;
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
let fallbackKnown, resolverKnown;
|
|
493
|
-
if (this.fallback !== null) {
|
|
494
|
-
fallbackKnown = this.fallback.knownForType(type);
|
|
495
|
-
}
|
|
496
|
-
if (this.resolver !== null && this.resolver.knownForType) {
|
|
497
|
-
resolverKnown = this.resolver.knownForType(type);
|
|
498
|
-
}
|
|
499
|
-
return assign({}, fallbackKnown, localKnown, resolverKnown);
|
|
500
|
-
}
|
|
501
|
-
isValidFullName(fullName) {
|
|
502
|
-
return VALID_FULL_NAME_REGEXP.test(fullName);
|
|
503
|
-
}
|
|
504
|
-
getInjections(fullName) {
|
|
505
|
-
let injections = this._injections[fullName];
|
|
506
|
-
if (this.fallback !== null) {
|
|
507
|
-
let fallbackInjections = this.fallback.getInjections(fullName);
|
|
508
|
-
if (fallbackInjections !== undefined) {
|
|
509
|
-
injections =
|
|
510
|
-
injections === undefined ? fallbackInjections : injections.concat(fallbackInjections);
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
return injections;
|
|
514
|
-
}
|
|
515
|
-
getTypeInjections(type) {
|
|
516
|
-
let injections = this._typeInjections[type];
|
|
517
|
-
if (this.fallback !== null) {
|
|
518
|
-
let fallbackInjections = this.fallback.getTypeInjections(type);
|
|
519
|
-
if (fallbackInjections !== undefined) {
|
|
520
|
-
injections =
|
|
521
|
-
injections === undefined ? fallbackInjections : injections.concat(fallbackInjections);
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
return injections;
|
|
525
|
-
}
|
|
526
|
-
/**
|
|
527
|
-
Given a fullName and a source fullName returns the fully resolved
|
|
528
|
-
fullName. Used to allow for local lookup.
|
|
529
|
-
|
|
530
|
-
```javascript
|
|
531
|
-
let registry = new Registry();
|
|
532
|
-
|
|
533
|
-
// the twitter factory is added to the module system
|
|
534
|
-
registry.expandLocalLookup('component:post-title', { source: 'template:post' }) // => component:post/post-title
|
|
535
|
-
```
|
|
536
|
-
|
|
537
|
-
@private
|
|
538
|
-
@method expandLocalLookup
|
|
539
|
-
@param {String} fullName
|
|
540
|
-
@param {Object} [options]
|
|
541
|
-
@param {String} [options.source] the fullname of the request source (used for local lookups)
|
|
542
|
-
@return {String} fullName
|
|
543
|
-
*/
|
|
544
|
-
expandLocalLookup(fullName, options) {
|
|
545
|
-
if (this.resolver !== null && this.resolver.expandLocalLookup) {
|
|
546
|
-
assert('fullName must be a proper full name', this.isValidFullName(fullName));
|
|
547
|
-
assert('options.source must be a proper full name', !options.source || this.isValidFullName(options.source));
|
|
548
|
-
let normalizedFullName = this.normalize(fullName);
|
|
549
|
-
let normalizedSource = this.normalize(options.source);
|
|
550
|
-
return expandLocalLookup(this, normalizedFullName, normalizedSource, options.namespace);
|
|
551
|
-
}
|
|
552
|
-
else if (this.fallback !== null) {
|
|
553
|
-
return this.fallback.expandLocalLookup(fullName, options);
|
|
554
|
-
}
|
|
555
|
-
else {
|
|
556
|
-
return null;
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
if (DEBUG) {
|
|
561
|
-
const proto = Registry.prototype;
|
|
562
|
-
proto.normalizeInjectionsHash = function (hash) {
|
|
563
|
-
let injections = [];
|
|
564
|
-
for (let key in hash) {
|
|
565
|
-
if (hash.hasOwnProperty(key)) {
|
|
566
|
-
let { specifier, source, namespace } = hash[key];
|
|
567
|
-
assert(`Expected a proper full name, given '${specifier}'`, this.isValidFullName(specifier));
|
|
568
|
-
injections.push({
|
|
569
|
-
property: key,
|
|
570
|
-
specifier,
|
|
571
|
-
source,
|
|
572
|
-
namespace,
|
|
573
|
-
});
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
return injections;
|
|
577
|
-
};
|
|
578
|
-
proto.validateInjections = function (injections) {
|
|
579
|
-
if (!injections) {
|
|
580
|
-
return;
|
|
581
|
-
}
|
|
582
|
-
for (let i = 0; i < injections.length; i++) {
|
|
583
|
-
let { specifier, source, namespace } = injections[i];
|
|
584
|
-
assert(`Attempting to inject an unknown injection: '${specifier}'`, this.has(specifier, { source, namespace }));
|
|
585
|
-
}
|
|
586
|
-
};
|
|
587
|
-
}
|
|
588
|
-
function expandLocalLookup(registry, normalizedName, normalizedSource, namespace) {
|
|
589
|
-
let cache = registry._localLookupCache;
|
|
590
|
-
let normalizedNameCache = cache[normalizedName];
|
|
591
|
-
if (!normalizedNameCache) {
|
|
592
|
-
normalizedNameCache = cache[normalizedName] = Object.create(null);
|
|
593
|
-
}
|
|
594
|
-
let cacheKey = namespace || normalizedSource;
|
|
595
|
-
let cached = normalizedNameCache[cacheKey];
|
|
596
|
-
if (cached !== undefined) {
|
|
597
|
-
return cached;
|
|
598
|
-
}
|
|
599
|
-
let expanded = registry.resolver.expandLocalLookup(normalizedName, normalizedSource, namespace);
|
|
600
|
-
return (normalizedNameCache[cacheKey] = expanded);
|
|
601
|
-
}
|
|
602
|
-
function resolve(registry, _normalizedName, options) {
|
|
603
|
-
let normalizedName = _normalizedName;
|
|
604
|
-
// when `source` is provided expand normalizedName
|
|
605
|
-
// and source into the full normalizedName
|
|
606
|
-
if (options !== undefined && (options.source || options.namespace)) {
|
|
607
|
-
normalizedName = registry.expandLocalLookup(_normalizedName, options);
|
|
608
|
-
if (!normalizedName) {
|
|
609
|
-
return;
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
let cached = registry._resolveCache[normalizedName];
|
|
613
|
-
if (cached !== undefined) {
|
|
614
|
-
return cached;
|
|
615
|
-
}
|
|
616
|
-
if (registry._failSet.has(normalizedName)) {
|
|
617
|
-
return;
|
|
618
|
-
}
|
|
619
|
-
let resolved;
|
|
620
|
-
if (registry.resolver) {
|
|
621
|
-
resolved = registry.resolver.resolve(normalizedName);
|
|
622
|
-
}
|
|
623
|
-
if (resolved === undefined) {
|
|
624
|
-
resolved = registry.registrations[normalizedName];
|
|
625
|
-
}
|
|
626
|
-
if (resolved === undefined) {
|
|
627
|
-
registry._failSet.add(normalizedName);
|
|
628
|
-
}
|
|
629
|
-
else {
|
|
630
|
-
registry._resolveCache[normalizedName] = resolved;
|
|
631
|
-
}
|
|
632
|
-
return resolved;
|
|
633
|
-
}
|
|
634
|
-
function has(registry, fullName, source, namespace) {
|
|
635
|
-
return registry.resolve(fullName, { source, namespace }) !== undefined;
|
|
636
|
-
}
|
|
637
|
-
const privateNames = dictionary(null);
|
|
638
|
-
const privateSuffix = `${Math.random()}${Date.now()}`.replace('.', '');
|
|
639
|
-
export function privatize([fullName]) {
|
|
640
|
-
let name = privateNames[fullName];
|
|
641
|
-
if (name) {
|
|
642
|
-
return name;
|
|
643
|
-
}
|
|
644
|
-
let [type, rawName] = fullName.split(':');
|
|
645
|
-
return (privateNames[fullName] = intern(`${type}:${rawName}-${privateSuffix}`));
|
|
646
|
-
}
|