ember-source 4.8.0-alpha.5 → 4.8.0-beta.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.
- package/CHANGELOG.md +11 -2
- package/blueprints/helper/files/__root__/{__collection__ → helpers}/__name__.ts +0 -0
- package/blueprints/helper/index.js +0 -15
- package/blueprints/helper-test/index.js +0 -3
- package/blueprints/helper-test/mocha-0.12-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints/helper-test/mocha-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints/helper-test/mocha-rfc-232-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.ts +0 -0
- package/blueprints/helper-test/qunit-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints/helper-test/qunit-rfc-232-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.ts +0 -0
- package/blueprints-js/helper/files/__root__/{__collection__ → helpers}/__name__.js +0 -0
- package/blueprints-js/helper-test/mocha-0.12-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints-js/helper-test/mocha-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints-js/helper-test/mocha-rfc-232-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints-js/helper-test/qunit-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/blueprints-js/helper-test/qunit-rfc-232-files/__root__/__testType__/{__collection__ → helpers}/__name__-test.js +0 -0
- package/build-metadata.json +3 -3
- package/dist/dependencies/router_js.js +1 -1
- package/dist/ember-template-compiler.js +675 -18
- package/dist/ember-template-compiler.map +1 -1
- package/dist/ember-testing.js +11 -11
- package/dist/ember-testing.map +1 -1
- package/dist/ember.debug.js +19576 -20510
- package/dist/ember.debug.map +1 -1
- package/dist/header/license.js +1 -1
- package/dist/packages/@ember/-internals/glimmer/index.js +4 -2
- package/dist/packages/@ember/-internals/metal/index.js +214 -1094
- package/dist/packages/@ember/-internals/routing/index.js +1 -17
- package/dist/packages/@ember/-internals/runtime/index.js +3 -16
- package/dist/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +2 -1
- package/dist/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +4 -3
- package/dist/packages/@ember/-internals/runtime/lib/mixins/comparable.js +1 -1
- package/dist/packages/@ember/-internals/runtime/lib/mixins/container_proxy.js +1 -1
- package/dist/packages/@ember/-internals/runtime/lib/mixins/registry_proxy.js +1 -8
- package/dist/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +2 -1
- package/dist/packages/@ember/-internals/utils/index.js +3 -3
- package/dist/packages/@ember/-internals/views/lib/component_lookup.js +1 -1
- package/dist/packages/@ember/-internals/views/lib/mixins/action_support.js +2 -1
- package/dist/packages/@ember/-internals/views/lib/mixins/child_views_support.js +2 -1
- package/dist/packages/@ember/-internals/views/lib/mixins/class_names_support.js +2 -1
- package/dist/packages/@ember/-internals/views/lib/mixins/view_state_support.js +1 -1
- package/dist/packages/@ember/-internals/views/lib/mixins/view_support.js +2 -1
- package/dist/packages/@ember/-internals/views/lib/system/event_dispatcher.js +1 -1
- package/dist/packages/@ember/-internals/views/lib/views/core_view.js +3 -1
- package/dist/packages/@ember/application/index.js +876 -2
- package/dist/packages/@ember/application/instance.js +2 -2
- package/dist/packages/@ember/application/namespace.js +70 -1
- package/dist/packages/@ember/array/index.js +1503 -2
- package/dist/packages/@ember/array/mutable.js +1 -1
- package/dist/packages/@ember/array/proxy.js +307 -1
- package/dist/packages/@ember/canary-features/index.js +2 -2
- package/dist/packages/@ember/controller/index.js +260 -3
- package/dist/packages/@ember/debug/container-debug-adapter.js +99 -1
- package/dist/packages/@ember/debug/data-adapter.js +574 -1
- package/dist/packages/@ember/engine/index.js +5 -5
- package/dist/packages/@ember/engine/instance.js +4 -4
- package/dist/packages/@ember/enumerable/index.js +3 -1
- package/dist/packages/@ember/enumerable/mutable.js +4 -0
- package/dist/packages/@ember/{-internals/runtime/lib/system/object.js → object/-internals.js} +4 -17
- package/dist/packages/@ember/object/core.js +731 -1
- package/dist/packages/@ember/object/evented.js +93 -2
- package/dist/packages/@ember/object/index.js +76 -4
- package/dist/packages/@ember/object/internals.js +3 -2
- package/dist/packages/@ember/object/lib/computed/computed_macros.js +3 -1
- package/dist/packages/@ember/object/lib/computed/reduce_computed_macros.js +4 -3
- package/dist/packages/@ember/object/mixin.js +659 -1
- package/dist/packages/@ember/object/observable.js +341 -1
- package/dist/packages/@ember/object/promise-proxy-mixin.js +150 -1
- package/dist/packages/@ember/object/proxy.js +10 -1
- package/dist/packages/@ember/routing/-internals.js +7 -0
- package/dist/packages/@ember/routing/auto-location.js +249 -1
- package/dist/packages/@ember/routing/hash-location.js +169 -1
- package/dist/packages/@ember/routing/history-location.js +289 -1
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/cache.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/controller_for.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/dsl.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/engines.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/generate_controller.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/location/util.js → routing/lib/location-utils.js} +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/query_params.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/route-info.js +0 -0
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/router_state.js +1 -1
- package/dist/packages/@ember/{-internals/routing/lib/services/routing.js → routing/lib/routing-service.js} +2 -2
- package/dist/packages/@ember/{-internals/routing/lib/system → routing/lib}/transition.js +0 -0
- package/dist/packages/@ember/{-internals/routing → routing}/lib/utils.js +0 -0
- package/dist/packages/@ember/routing/location.js +104 -1
- package/dist/packages/@ember/routing/none-location.js +123 -1
- package/dist/packages/@ember/routing/route.js +1700 -1
- package/dist/packages/@ember/routing/router-service.js +510 -1
- package/dist/packages/@ember/routing/router.js +1666 -1
- package/dist/packages/@ember/service/index.js +1 -1
- package/dist/packages/@ember/utils/index.js +7 -2
- package/dist/packages/@ember/{-internals/runtime → utils}/lib/compare.js +2 -2
- package/dist/packages/@ember/{-internals/runtime → utils}/lib/is-equal.js +0 -0
- package/dist/packages/@ember/utils/lib/is_blank.js +35 -0
- package/dist/packages/@ember/utils/lib/is_empty.js +68 -0
- package/dist/packages/@ember/utils/lib/is_none.js +27 -0
- package/dist/packages/@ember/utils/lib/is_present.js +38 -0
- package/dist/packages/@ember/{-internals/runtime → utils}/lib/type-of.js +2 -2
- package/dist/packages/ember/index.js +47 -28
- package/dist/packages/ember/version.js +1 -1
- package/dist/packages/ember-testing/lib/adapters/adapter.js +1 -1
- package/dist/packages/ember-testing/lib/helpers/current_path.js +2 -2
- package/dist/packages/ember-testing/lib/helpers/current_route_name.js +2 -2
- package/dist/packages/ember-testing/lib/helpers/current_url.js +1 -1
- package/docs/data.json +9428 -9189
- package/package.json +23 -8
- package/types/preview/@ember/-internals/resolver.d.ts +35 -0
- package/types/preview/@ember/application/-private/event-dispatcher.d.ts +18 -0
- package/types/preview/@ember/application/-private/registry.d.ts +15 -0
- package/types/preview/@ember/application/deprecations.d.ts +24 -0
- package/types/preview/@ember/application/index.d.ts +153 -0
- package/types/preview/@ember/application/instance.d.ts +9 -0
- package/types/preview/@ember/application/tsconfig.json +3 -0
- package/types/preview/@ember/application/types.d.ts +29 -0
- package/types/preview/@ember/array/-private/enumerable.d.ts +13 -0
- package/types/preview/@ember/array/-private/mutable-enumerable.d.ts +13 -0
- package/types/preview/@ember/array/-private/native-array.d.ts +23 -0
- package/types/preview/@ember/array/index.d.ts +243 -0
- package/types/preview/@ember/array/mutable.d.ts +94 -0
- package/types/preview/@ember/array/proxy.d.ts +29 -0
- package/types/preview/@ember/array/tsconfig.json +3 -0
- package/types/preview/@ember/component/-private/class-names-support.d.ts +27 -0
- package/types/preview/@ember/component/-private/core-view.d.ts +14 -0
- package/types/preview/@ember/component/-private/glimmer-interfaces.d.ts +45 -0
- package/types/preview/@ember/component/-private/signature-utils.d.ts +107 -0
- package/types/preview/@ember/component/-private/view-mixin.d.ts +59 -0
- package/types/preview/@ember/component/helper.d.ts +122 -0
- package/types/preview/@ember/component/index.d.ts +132 -0
- package/types/preview/@ember/component/template-only.d.ts +47 -0
- package/types/preview/@ember/component/tsconfig.json +3 -0
- package/types/preview/@ember/controller/index.d.ts +48 -0
- package/types/preview/@ember/controller/tsconfig.json +3 -0
- package/types/preview/@ember/debug/container-debug-adapter.d.ts +13 -0
- package/types/preview/@ember/debug/data-adapter.d.ts +64 -0
- package/types/preview/@ember/debug/index.d.ts +98 -0
- package/types/preview/@ember/debug/tsconfig.json +3 -0
- package/types/preview/@ember/destroyable/index.d.ts +23 -0
- package/types/preview/@ember/destroyable/tsconfig.json +3 -0
- package/types/preview/@ember/engine/-private/container-proxy-mixin.d.ts +17 -0
- package/types/preview/@ember/engine/-private/registry-proxy-mixin.d.ts +54 -0
- package/types/preview/@ember/engine/-private/types/initializer.d.ts +8 -0
- package/types/preview/@ember/engine/index.d.ts +45 -0
- package/types/preview/@ember/engine/instance.d.ts +24 -0
- package/types/preview/@ember/engine/tsconfig.json +3 -0
- package/types/preview/@ember/error/index.d.ts +6 -0
- package/types/preview/@ember/error/tsconfig.json +3 -0
- package/types/preview/@ember/helper/index.d.ts +49 -0
- package/types/preview/@ember/helper/tsconfig.json +3 -0
- package/types/preview/@ember/modifier/index.d.ts +33 -0
- package/types/preview/@ember/modifier/tsconfig.json +3 -0
- package/types/preview/@ember/object/-private/action-handler.d.ts +31 -0
- package/types/preview/@ember/object/-private/types.d.ts +63 -0
- package/types/preview/@ember/object/compat.d.ts +9 -0
- package/types/preview/@ember/object/computed.d.ts +263 -0
- package/types/preview/@ember/object/core.d.ts +89 -0
- package/types/preview/@ember/object/evented.d.ts +45 -0
- package/types/preview/@ember/object/events.d.ts +47 -0
- package/types/preview/@ember/object/index.d.ts +126 -0
- package/types/preview/@ember/object/internals.d.ts +17 -0
- package/types/preview/@ember/object/mixin.d.ts +19 -0
- package/types/preview/@ember/object/observable.d.ts +89 -0
- package/types/preview/@ember/object/observers.d.ts +34 -0
- package/types/preview/@ember/object/promise-proxy-mixin.d.ts +37 -0
- package/types/preview/@ember/object/proxy.d.ts +27 -0
- package/types/preview/@ember/object/tsconfig.json +3 -0
- package/types/preview/@ember/owner/index.d.ts +102 -0
- package/types/preview/@ember/owner/tsconfig.json +3 -0
- package/types/preview/@ember/polyfills/index.d.ts +23 -0
- package/types/preview/@ember/polyfills/tsconfig.json +3 -0
- package/types/preview/@ember/polyfills/types.d.ts +6 -0
- package/types/preview/@ember/routing/-private/router-dsl.d.ts +20 -0
- package/types/preview/@ember/routing/auto-location.d.ts +8 -0
- package/types/preview/@ember/routing/hash-location.d.ts +10 -0
- package/types/preview/@ember/routing/history-location.d.ts +9 -0
- package/types/preview/@ember/routing/index.d.ts +20 -0
- package/types/preview/@ember/routing/none-location.d.ts +11 -0
- package/types/preview/@ember/routing/route-info.d.ts +74 -0
- package/types/preview/@ember/routing/route.d.ts +533 -0
- package/types/preview/@ember/routing/router-service.d.ts +351 -0
- package/types/preview/@ember/routing/router.d.ts +49 -0
- package/types/preview/@ember/routing/transition.d.ts +126 -0
- package/types/preview/@ember/routing/tsconfig.json +3 -0
- package/types/preview/@ember/routing/types.d.ts +15 -0
- package/types/preview/@ember/runloop/-private/backburner.d.ts +43 -0
- package/types/preview/@ember/runloop/-private/types.d.ts +9 -0
- package/types/preview/@ember/runloop/index.d.ts +175 -0
- package/types/preview/@ember/runloop/tsconfig.json +3 -0
- package/types/preview/@ember/runloop/types.d.ts +5 -0
- package/types/preview/@ember/service/index.d.ts +25 -0
- package/types/preview/@ember/service/tsconfig.json +3 -0
- package/types/preview/@ember/string/index.d.ts +9 -0
- package/types/preview/@ember/string/tsconfig.json +3 -0
- package/types/preview/@ember/template/-private/handlebars.d.ts +7 -0
- package/types/preview/@ember/template/index.d.ts +5 -0
- package/types/preview/@ember/template/tsconfig.json +3 -0
- package/types/preview/@ember/test/adapter.d.ts +22 -0
- package/types/preview/@ember/test/index.d.ts +49 -0
- package/types/preview/@ember/test/tsconfig.json +3 -0
- package/types/preview/@ember/utils/-private/types.d.ts +39 -0
- package/types/preview/@ember/utils/index.d.ts +42 -0
- package/types/preview/@ember/utils/tsconfig.json +3 -0
- package/types/preview/ember/-private/type-utils.d.ts +54 -0
- package/types/preview/ember/index.d.ts +381 -0
- package/types/preview/ember/tsconfig.json +3 -0
- package/types/preview/index.d.ts +120 -0
- package/types/preview/tsconfig.json +6 -0
- package/blueprints/helper/mu-files/__root__/__collection__/__name__.js +0 -7
- package/blueprints-js/helper/mu-files/__root__/__collection__/__name__.js +0 -7
- package/dist/packages/@ember/-internals/extension-support/index.js +0 -2
- package/dist/packages/@ember/-internals/extension-support/lib/container_debug_adapter.js +0 -96
- package/dist/packages/@ember/-internals/extension-support/lib/data_adapter.js +0 -576
- package/dist/packages/@ember/-internals/routing/lib/ext/controller.js +0 -224
- package/dist/packages/@ember/-internals/routing/lib/location/api.js +0 -104
- package/dist/packages/@ember/-internals/routing/lib/location/auto_location.js +0 -250
- package/dist/packages/@ember/-internals/routing/lib/location/hash_location.js +0 -170
- package/dist/packages/@ember/-internals/routing/lib/location/history_location.js +0 -290
- package/dist/packages/@ember/-internals/routing/lib/location/none_location.js +0 -124
- package/dist/packages/@ember/-internals/routing/lib/services/router.js +0 -506
- package/dist/packages/@ember/-internals/routing/lib/system/route.js +0 -1696
- package/dist/packages/@ember/-internals/routing/lib/system/router.js +0 -1662
- package/dist/packages/@ember/-internals/runtime/lib/mixins/array.js +0 -1501
- package/dist/packages/@ember/-internals/runtime/lib/mixins/enumerable.js +0 -3
- package/dist/packages/@ember/-internals/runtime/lib/mixins/evented.js +0 -91
- package/dist/packages/@ember/-internals/runtime/lib/mixins/mutable_enumerable.js +0 -4
- package/dist/packages/@ember/-internals/runtime/lib/mixins/observable.js +0 -339
- package/dist/packages/@ember/-internals/runtime/lib/mixins/promise_proxy.js +0 -149
- package/dist/packages/@ember/-internals/runtime/lib/system/array_proxy.js +0 -305
- package/dist/packages/@ember/-internals/runtime/lib/system/core_object.js +0 -730
- package/dist/packages/@ember/-internals/runtime/lib/system/namespace.js +0 -69
- package/dist/packages/@ember/-internals/runtime/lib/system/object_proxy.js +0 -7
- package/dist/packages/@ember/application/lib/application.js +0 -870
- package/dist/packages/@ember/controller/lib/controller_mixin.js +0 -42
- package/dist/packages/@ember/runloop/type-tests.ts/begin-end.test.js +0 -5
- package/dist/packages/@ember/runloop/type-tests.ts/bind.test.js +0 -59
- package/dist/packages/@ember/runloop/type-tests.ts/cancel.test.js +0 -5
- package/dist/packages/@ember/runloop/type-tests.ts/debounce.test.js +0 -77
- package/dist/packages/@ember/runloop/type-tests.ts/join.test.js +0 -38
- package/dist/packages/@ember/runloop/type-tests.ts/later.test.js +0 -38
- package/dist/packages/@ember/runloop/type-tests.ts/next.test.js +0 -38
- package/dist/packages/@ember/runloop/type-tests.ts/once.test.js +0 -38
- package/dist/packages/@ember/runloop/type-tests.ts/run.test.js +0 -38
- package/dist/packages/@ember/runloop/type-tests.ts/schedule-once.test.js +0 -39
- package/dist/packages/@ember/runloop/type-tests.ts/schedule.test.js +0 -39
- package/dist/packages/@ember/runloop/type-tests.ts/throttle.test.js +0 -77
|
@@ -1 +1,574 @@
|
|
|
1
|
-
|
|
1
|
+
import { getOwner } from '@ember/-internals/owner';
|
|
2
|
+
import { _backburner } from '@ember/runloop';
|
|
3
|
+
import { get } from '@ember/object';
|
|
4
|
+
import { dasherize } from '@ember/string';
|
|
5
|
+
import Namespace from '@ember/application/namespace';
|
|
6
|
+
import EmberObject from '@ember/object';
|
|
7
|
+
import { A as emberA } from '@ember/array';
|
|
8
|
+
import { consumeTag, createCache, getValue, tagFor, untrack } from '@glimmer/validator';
|
|
9
|
+
|
|
10
|
+
function iterate(arr, fn) {
|
|
11
|
+
if (Symbol.iterator in arr) {
|
|
12
|
+
for (let item of arr) {
|
|
13
|
+
fn(item);
|
|
14
|
+
}
|
|
15
|
+
} else {
|
|
16
|
+
arr.forEach(fn);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
class RecordsWatcher {
|
|
21
|
+
constructor(records, recordsAdded, recordsUpdated, recordsRemoved, wrapRecord, release) {
|
|
22
|
+
this.wrapRecord = wrapRecord;
|
|
23
|
+
this.release = release;
|
|
24
|
+
this.recordCaches = new Map();
|
|
25
|
+
this.added = [];
|
|
26
|
+
this.updated = [];
|
|
27
|
+
this.removed = [];
|
|
28
|
+
this.recordArrayCache = createCache(() => {
|
|
29
|
+
let seen = new Set(); // Track `[]` for legacy support
|
|
30
|
+
|
|
31
|
+
consumeTag(tagFor(records, '[]'));
|
|
32
|
+
iterate(records, record => {
|
|
33
|
+
getValue(this.getCacheForItem(record));
|
|
34
|
+
seen.add(record);
|
|
35
|
+
}); // Untrack this operation because these records are being removed, they
|
|
36
|
+
// should not be polled again in the future
|
|
37
|
+
|
|
38
|
+
untrack(() => {
|
|
39
|
+
this.recordCaches.forEach((_cache, record) => {
|
|
40
|
+
if (!seen.has(record)) {
|
|
41
|
+
this.removed.push(wrapRecord(record));
|
|
42
|
+
this.recordCaches.delete(record);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
if (this.added.length > 0) {
|
|
48
|
+
recordsAdded(this.added);
|
|
49
|
+
this.added = [];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (this.updated.length > 0) {
|
|
53
|
+
recordsUpdated(this.updated);
|
|
54
|
+
this.updated = [];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (this.removed.length > 0) {
|
|
58
|
+
recordsRemoved(this.removed);
|
|
59
|
+
this.removed = [];
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
getCacheForItem(record) {
|
|
65
|
+
let recordCache = this.recordCaches.get(record);
|
|
66
|
+
|
|
67
|
+
if (!recordCache) {
|
|
68
|
+
let hasBeenAdded = false;
|
|
69
|
+
recordCache = createCache(() => {
|
|
70
|
+
if (!hasBeenAdded) {
|
|
71
|
+
this.added.push(this.wrapRecord(record));
|
|
72
|
+
hasBeenAdded = true;
|
|
73
|
+
} else {
|
|
74
|
+
this.updated.push(this.wrapRecord(record));
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
this.recordCaches.set(record, recordCache);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return recordCache;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
revalidate() {
|
|
84
|
+
getValue(this.recordArrayCache);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
class TypeWatcher {
|
|
90
|
+
constructor(records, onChange, release) {
|
|
91
|
+
this.release = release;
|
|
92
|
+
let hasBeenAccessed = false;
|
|
93
|
+
this.cache = createCache(() => {
|
|
94
|
+
// Empty iteration, we're doing this just
|
|
95
|
+
// to track changes to the records array
|
|
96
|
+
iterate(records, () => {}); // Also track `[]` for legacy support
|
|
97
|
+
|
|
98
|
+
consumeTag(tagFor(records, '[]'));
|
|
99
|
+
|
|
100
|
+
if (hasBeenAccessed === true) {
|
|
101
|
+
onChange();
|
|
102
|
+
} else {
|
|
103
|
+
hasBeenAccessed = true;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
this.release = release;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
revalidate() {
|
|
110
|
+
getValue(this.cache);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
The `DataAdapter` helps a data persistence library
|
|
116
|
+
interface with tools that debug Ember such
|
|
117
|
+
as the [Ember Inspector](https://github.com/emberjs/ember-inspector)
|
|
118
|
+
for Chrome and Firefox.
|
|
119
|
+
|
|
120
|
+
This class will be extended by a persistence library
|
|
121
|
+
which will override some of the methods with
|
|
122
|
+
library-specific code.
|
|
123
|
+
|
|
124
|
+
The methods likely to be overridden are:
|
|
125
|
+
|
|
126
|
+
* `getFilters`
|
|
127
|
+
* `detect`
|
|
128
|
+
* `columnsForType`
|
|
129
|
+
* `getRecords`
|
|
130
|
+
* `getRecordColumnValues`
|
|
131
|
+
* `getRecordKeywords`
|
|
132
|
+
* `getRecordFilterValues`
|
|
133
|
+
* `getRecordColor`
|
|
134
|
+
|
|
135
|
+
The adapter will need to be registered
|
|
136
|
+
in the application's container as `dataAdapter:main`.
|
|
137
|
+
|
|
138
|
+
Example:
|
|
139
|
+
|
|
140
|
+
```javascript
|
|
141
|
+
Application.initializer({
|
|
142
|
+
name: "data-adapter",
|
|
143
|
+
|
|
144
|
+
initialize: function(application) {
|
|
145
|
+
application.register('data-adapter:main', DS.DataAdapter);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
@class DataAdapter
|
|
151
|
+
@extends EmberObject
|
|
152
|
+
@public
|
|
153
|
+
*/
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
export default class DataAdapter extends EmberObject {
|
|
157
|
+
constructor(owner) {
|
|
158
|
+
super(owner);
|
|
159
|
+
this.releaseMethods = emberA();
|
|
160
|
+
this.recordsWatchers = new Map();
|
|
161
|
+
this.typeWatchers = new Map();
|
|
162
|
+
this.flushWatchers = null;
|
|
163
|
+
/**
|
|
164
|
+
The container-debug-adapter which is used
|
|
165
|
+
to list all models.
|
|
166
|
+
@property containerDebugAdapter
|
|
167
|
+
@default undefined
|
|
168
|
+
@since 1.5.0
|
|
169
|
+
@public
|
|
170
|
+
**/
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
The number of attributes to send
|
|
174
|
+
as columns. (Enough to make the record
|
|
175
|
+
identifiable).
|
|
176
|
+
@private
|
|
177
|
+
@property attributeLimit
|
|
178
|
+
@default 3
|
|
179
|
+
@since 1.3.0
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
this.attributeLimit = 3;
|
|
183
|
+
/**
|
|
184
|
+
Ember Data > v1.0.0-beta.18
|
|
185
|
+
requires string model names to be passed
|
|
186
|
+
around instead of the actual factories.
|
|
187
|
+
This is a stamp for the Ember Inspector
|
|
188
|
+
to differentiate between the versions
|
|
189
|
+
to be able to support older versions too.
|
|
190
|
+
@public
|
|
191
|
+
@property acceptsModelName
|
|
192
|
+
*/
|
|
193
|
+
|
|
194
|
+
this.acceptsModelName = true;
|
|
195
|
+
this.containerDebugAdapter = getOwner(this).lookup('container-debug-adapter:main');
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
Map from records arrays to RecordsWatcher instances
|
|
199
|
+
@private
|
|
200
|
+
@property recordsWatchers
|
|
201
|
+
@since 3.26.0
|
|
202
|
+
*/
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
Map from records arrays to TypeWatcher instances
|
|
206
|
+
@private
|
|
207
|
+
@property typeWatchers
|
|
208
|
+
@since 3.26.0
|
|
209
|
+
*/
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
Callback that is currently scheduled on backburner end to flush and check
|
|
213
|
+
all active watchers.
|
|
214
|
+
@private
|
|
215
|
+
@property flushWatchers
|
|
216
|
+
@since 3.26.0
|
|
217
|
+
*/
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
Stores all methods that clear observers.
|
|
221
|
+
These methods will be called on destruction.
|
|
222
|
+
@private
|
|
223
|
+
@property releaseMethods
|
|
224
|
+
@since 1.3.0
|
|
225
|
+
*/
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
Specifies how records can be filtered.
|
|
229
|
+
Records returned will need to have a `filterValues`
|
|
230
|
+
property with a key for every name in the returned array.
|
|
231
|
+
@public
|
|
232
|
+
@method getFilters
|
|
233
|
+
@return {Array} List of objects defining filters.
|
|
234
|
+
The object should have a `name` and `desc` property.
|
|
235
|
+
*/
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
getFilters() {
|
|
239
|
+
return emberA();
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
Fetch the model types and observe them for changes.
|
|
243
|
+
@public
|
|
244
|
+
@method watchModelTypes
|
|
245
|
+
@param {Function} typesAdded Callback to call to add types.
|
|
246
|
+
Takes an array of objects containing wrapped types (returned from `wrapModelType`).
|
|
247
|
+
@param {Function} typesUpdated Callback to call when a type has changed.
|
|
248
|
+
Takes an array of objects containing wrapped types.
|
|
249
|
+
@return {Function} Method to call to remove all observers
|
|
250
|
+
*/
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
watchModelTypes(typesAdded, typesUpdated) {
|
|
254
|
+
let modelTypes = this.getModelTypes();
|
|
255
|
+
let releaseMethods = emberA();
|
|
256
|
+
let typesToSend;
|
|
257
|
+
typesToSend = modelTypes.map(type => {
|
|
258
|
+
let klass = type.klass;
|
|
259
|
+
let wrapped = this.wrapModelType(klass, type.name);
|
|
260
|
+
releaseMethods.push(this.observeModelType(type.name, typesUpdated));
|
|
261
|
+
return wrapped;
|
|
262
|
+
});
|
|
263
|
+
typesAdded(typesToSend);
|
|
264
|
+
|
|
265
|
+
let release = () => {
|
|
266
|
+
releaseMethods.forEach(fn => fn());
|
|
267
|
+
this.releaseMethods.removeObject(release);
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
this.releaseMethods.pushObject(release);
|
|
271
|
+
return release;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
_nameToClass(type) {
|
|
275
|
+
if (typeof type === 'string') {
|
|
276
|
+
let owner = getOwner(this);
|
|
277
|
+
let Factory = owner.factoryFor(`model:${type}`);
|
|
278
|
+
type = Factory && Factory.class;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
return type;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
Fetch the records of a given type and observe them for changes.
|
|
285
|
+
@public
|
|
286
|
+
@method watchRecords
|
|
287
|
+
@param {String} modelName The model name.
|
|
288
|
+
@param {Function} recordsAdded Callback to call to add records.
|
|
289
|
+
Takes an array of objects containing wrapped records.
|
|
290
|
+
The object should have the following properties:
|
|
291
|
+
columnValues: {Object} The key and value of a table cell.
|
|
292
|
+
object: {Object} The actual record object.
|
|
293
|
+
@param {Function} recordsUpdated Callback to call when a record has changed.
|
|
294
|
+
Takes an array of objects containing wrapped records.
|
|
295
|
+
@param {Function} recordsRemoved Callback to call when a record has removed.
|
|
296
|
+
Takes an array of objects containing wrapped records.
|
|
297
|
+
@return {Function} Method to call to remove all observers.
|
|
298
|
+
*/
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
watchRecords(modelName, recordsAdded, recordsUpdated, recordsRemoved) {
|
|
302
|
+
let klass = this._nameToClass(modelName);
|
|
303
|
+
|
|
304
|
+
let records = this.getRecords(klass, modelName);
|
|
305
|
+
let {
|
|
306
|
+
recordsWatchers
|
|
307
|
+
} = this;
|
|
308
|
+
let recordsWatcher = recordsWatchers.get(records);
|
|
309
|
+
|
|
310
|
+
if (!recordsWatcher) {
|
|
311
|
+
recordsWatcher = new RecordsWatcher(records, recordsAdded, recordsUpdated, recordsRemoved, record => this.wrapRecord(record), () => {
|
|
312
|
+
recordsWatchers.delete(records);
|
|
313
|
+
this.updateFlushWatchers();
|
|
314
|
+
});
|
|
315
|
+
recordsWatchers.set(records, recordsWatcher);
|
|
316
|
+
this.updateFlushWatchers();
|
|
317
|
+
recordsWatcher.revalidate();
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
return recordsWatcher.release;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
updateFlushWatchers() {
|
|
324
|
+
if (this.flushWatchers === null) {
|
|
325
|
+
if (this.typeWatchers.size > 0 || this.recordsWatchers.size > 0) {
|
|
326
|
+
this.flushWatchers = () => {
|
|
327
|
+
this.typeWatchers.forEach(watcher => watcher.revalidate());
|
|
328
|
+
this.recordsWatchers.forEach(watcher => watcher.revalidate());
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
_backburner.on('end', this.flushWatchers);
|
|
332
|
+
}
|
|
333
|
+
} else if (this.typeWatchers.size === 0 && this.recordsWatchers.size === 0) {
|
|
334
|
+
_backburner.off('end', this.flushWatchers);
|
|
335
|
+
|
|
336
|
+
this.flushWatchers = null;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
Clear all observers before destruction
|
|
341
|
+
@private
|
|
342
|
+
@method willDestroy
|
|
343
|
+
*/
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
willDestroy() {
|
|
347
|
+
this._super(...arguments);
|
|
348
|
+
|
|
349
|
+
this.typeWatchers.forEach(watcher => watcher.release());
|
|
350
|
+
this.recordsWatchers.forEach(watcher => watcher.release());
|
|
351
|
+
this.releaseMethods.forEach(fn => fn());
|
|
352
|
+
|
|
353
|
+
if (this.flushWatchers) {
|
|
354
|
+
_backburner.off('end', this.flushWatchers);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
Detect whether a class is a model.
|
|
359
|
+
Test that against the model class
|
|
360
|
+
of your persistence library.
|
|
361
|
+
@public
|
|
362
|
+
@method detect
|
|
363
|
+
@return boolean Whether the class is a model class or not.
|
|
364
|
+
*/
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
detect(_klass) {
|
|
368
|
+
return false;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
Get the columns for a given model type.
|
|
372
|
+
@public
|
|
373
|
+
@method columnsForType
|
|
374
|
+
@return {Array} An array of columns of the following format:
|
|
375
|
+
name: {String} The name of the column.
|
|
376
|
+
desc: {String} Humanized description (what would show in a table column name).
|
|
377
|
+
*/
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
columnsForType(_klass) {
|
|
381
|
+
return emberA();
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
Adds observers to a model type class.
|
|
385
|
+
@private
|
|
386
|
+
@method observeModelType
|
|
387
|
+
@param {String} modelName The model type name.
|
|
388
|
+
@param {Function} typesUpdated Called when a type is modified.
|
|
389
|
+
@return {Function} The function to call to remove observers.
|
|
390
|
+
*/
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
observeModelType(modelName, typesUpdated) {
|
|
394
|
+
let klass = this._nameToClass(modelName);
|
|
395
|
+
|
|
396
|
+
let records = this.getRecords(klass, modelName);
|
|
397
|
+
|
|
398
|
+
let onChange = () => {
|
|
399
|
+
typesUpdated([this.wrapModelType(klass, modelName)]);
|
|
400
|
+
};
|
|
401
|
+
|
|
402
|
+
let {
|
|
403
|
+
typeWatchers
|
|
404
|
+
} = this;
|
|
405
|
+
let typeWatcher = typeWatchers.get(records);
|
|
406
|
+
|
|
407
|
+
if (!typeWatcher) {
|
|
408
|
+
typeWatcher = new TypeWatcher(records, onChange, () => {
|
|
409
|
+
typeWatchers.delete(records);
|
|
410
|
+
this.updateFlushWatchers();
|
|
411
|
+
});
|
|
412
|
+
typeWatchers.set(records, typeWatcher);
|
|
413
|
+
this.updateFlushWatchers();
|
|
414
|
+
typeWatcher.revalidate();
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
return typeWatcher.release;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
Wraps a given model type and observes changes to it.
|
|
421
|
+
@private
|
|
422
|
+
@method wrapModelType
|
|
423
|
+
@param {Class} klass A model class.
|
|
424
|
+
@param {String} modelName Name of the class.
|
|
425
|
+
@return {Object} The wrapped type has the following format:
|
|
426
|
+
name: {String} The name of the type.
|
|
427
|
+
count: {Integer} The number of records available.
|
|
428
|
+
columns: {Columns} An array of columns to describe the record.
|
|
429
|
+
object: {Class} The actual Model type class.
|
|
430
|
+
*/
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
wrapModelType(klass, name) {
|
|
434
|
+
let records = this.getRecords(klass, name);
|
|
435
|
+
return {
|
|
436
|
+
name,
|
|
437
|
+
count: get(records, 'length'),
|
|
438
|
+
columns: this.columnsForType(klass),
|
|
439
|
+
object: klass
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
Fetches all models defined in the application.
|
|
444
|
+
@private
|
|
445
|
+
@method getModelTypes
|
|
446
|
+
@return {Array} Array of model types.
|
|
447
|
+
*/
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
getModelTypes() {
|
|
451
|
+
let containerDebugAdapter = this.containerDebugAdapter;
|
|
452
|
+
let stringTypes = containerDebugAdapter.canCatalogEntriesByType('model') ? containerDebugAdapter.catalogEntriesByType('model') : this._getObjectsOnNamespaces(); // New adapters return strings instead of classes.
|
|
453
|
+
|
|
454
|
+
let klassTypes = emberA(stringTypes).map(name => {
|
|
455
|
+
return {
|
|
456
|
+
klass: this._nameToClass(name),
|
|
457
|
+
name
|
|
458
|
+
};
|
|
459
|
+
});
|
|
460
|
+
return emberA(klassTypes).filter(type => this.detect(type.klass));
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
Loops over all namespaces and all objects
|
|
464
|
+
attached to them.
|
|
465
|
+
@private
|
|
466
|
+
@method _getObjectsOnNamespaces
|
|
467
|
+
@return {Array} Array of model type strings.
|
|
468
|
+
*/
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
_getObjectsOnNamespaces() {
|
|
472
|
+
let namespaces = emberA(Namespace.NAMESPACES);
|
|
473
|
+
let types = emberA();
|
|
474
|
+
namespaces.forEach(namespace => {
|
|
475
|
+
for (let key in namespace) {
|
|
476
|
+
if (!Object.prototype.hasOwnProperty.call(namespace, key)) {
|
|
477
|
+
continue;
|
|
478
|
+
} // Even though we will filter again in `getModelTypes`,
|
|
479
|
+
// we should not call `lookupFactory` on non-models
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
if (!this.detect(namespace[key])) {
|
|
483
|
+
continue;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
let name = dasherize(key);
|
|
487
|
+
types.push(name);
|
|
488
|
+
}
|
|
489
|
+
});
|
|
490
|
+
return types;
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
Fetches all loaded records for a given type.
|
|
494
|
+
@public
|
|
495
|
+
@method getRecords
|
|
496
|
+
@return {Array} An array of records.
|
|
497
|
+
This array will be observed for changes,
|
|
498
|
+
so it should update when new records are added/removed.
|
|
499
|
+
*/
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
getRecords(_klass, _name) {
|
|
503
|
+
return emberA();
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
Wraps a record and observers changes to it.
|
|
507
|
+
@private
|
|
508
|
+
@method wrapRecord
|
|
509
|
+
@param {Object} record The record instance.
|
|
510
|
+
@return {Object} The wrapped record. Format:
|
|
511
|
+
columnValues: {Array}
|
|
512
|
+
searchKeywords: {Array}
|
|
513
|
+
*/
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
wrapRecord(record) {
|
|
517
|
+
return {
|
|
518
|
+
object: record,
|
|
519
|
+
columnValues: this.getRecordColumnValues(record),
|
|
520
|
+
searchKeywords: this.getRecordKeywords(record),
|
|
521
|
+
filterValues: this.getRecordFilterValues(record),
|
|
522
|
+
color: this.getRecordColor(record)
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
Gets the values for each column.
|
|
527
|
+
@public
|
|
528
|
+
@method getRecordColumnValues
|
|
529
|
+
@return {Object} Keys should match column names defined
|
|
530
|
+
by the model type.
|
|
531
|
+
*/
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
getRecordColumnValues(_record) {
|
|
535
|
+
return {};
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
Returns keywords to match when searching records.
|
|
539
|
+
@public
|
|
540
|
+
@method getRecordKeywords
|
|
541
|
+
@return {Array} Relevant keywords for search.
|
|
542
|
+
*/
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
getRecordKeywords(_record) {
|
|
546
|
+
return emberA();
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
Returns the values of filters defined by `getFilters`.
|
|
550
|
+
@public
|
|
551
|
+
@method getRecordFilterValues
|
|
552
|
+
@param {Object} record The record instance.
|
|
553
|
+
@return {Object} The filter values.
|
|
554
|
+
*/
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
getRecordFilterValues(_record) {
|
|
558
|
+
return {};
|
|
559
|
+
}
|
|
560
|
+
/**
|
|
561
|
+
Each record can have a color that represents its state.
|
|
562
|
+
@public
|
|
563
|
+
@method getRecordColor
|
|
564
|
+
@param {Object} record The record instance
|
|
565
|
+
@return {String} The records color.
|
|
566
|
+
Possible options: black, red, blue, green.
|
|
567
|
+
*/
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
getRecordColor(_record) {
|
|
571
|
+
return null;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
export { getEngineParent, setEngineParent } from './lib/engine-parent';
|
|
2
2
|
import { canInvoke } from '@ember/-internals/utils';
|
|
3
3
|
import Controller from '@ember/controller';
|
|
4
|
-
import
|
|
4
|
+
import Namespace from '@ember/application/namespace';
|
|
5
5
|
import { Registry } from '@ember/-internals/container';
|
|
6
6
|
import DAG from 'dag-map';
|
|
7
7
|
import { assert } from '@ember/debug';
|
|
8
|
-
import
|
|
8
|
+
import ContainerDebugAdapter from '@ember/debug/container-debug-adapter';
|
|
9
|
+
import { get, set } from '@ember/object';
|
|
9
10
|
import EngineInstance from '@ember/engine/instance';
|
|
10
|
-
import { RoutingService } from '@ember/-internals
|
|
11
|
-
import { ContainerDebugAdapter } from '@ember/-internals/extension-support';
|
|
11
|
+
import { RoutingService } from '@ember/routing/-internals';
|
|
12
12
|
import { ComponentLookup } from '@ember/-internals/views';
|
|
13
13
|
import { setupEngineRegistry } from '@ember/-internals/glimmer';
|
|
14
|
-
import RegistryProxyMixin from '@ember/-internals/runtime
|
|
14
|
+
import { RegistryProxyMixin } from '@ember/-internals/runtime';
|
|
15
15
|
|
|
16
16
|
function props(obj) {
|
|
17
17
|
let properties = [];
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
@module @ember/engine
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
4
|
+
import EmberObject from '@ember/object';
|
|
5
|
+
import { RSVP } from '@ember/-internals/runtime';
|
|
5
6
|
import { assert } from '@ember/debug';
|
|
6
7
|
import EmberError from '@ember/error';
|
|
7
8
|
import { Registry, privatize as P } from '@ember/-internals/container';
|
|
8
9
|
import { guidFor } from '@ember/-internals/utils';
|
|
9
10
|
import { ENGINE_PARENT, getEngineParent, setEngineParent } from './lib/engine-parent';
|
|
10
|
-
import RegistryProxyMixin from '@ember/-internals/runtime
|
|
11
|
-
import ContainerProxyMixin from '@ember/-internals/runtime/lib/mixins/container_proxy';
|
|
11
|
+
import { ContainerProxyMixin, RegistryProxyMixin } from '@ember/-internals/runtime';
|
|
12
12
|
import { isFactory } from '@ember/-internals/owner';
|
|
13
|
-
import Engine from '
|
|
13
|
+
import Engine from '@ember/engine';
|
|
14
14
|
const CEngine = Engine;
|
|
15
15
|
|
|
16
16
|
class EngineInstance extends EmberObject.extend(RegistryProxyMixin, ContainerProxyMixin) {
|
package/dist/packages/@ember/{-internals/runtime/lib/system/object.js → object/-internals.js}
RENAMED
|
@@ -1,25 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
@module @ember/object
|
|
3
|
-
*/
|
|
4
1
|
var _a;
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
export { getCachedValueFor as cacheFor } from '@ember/-internals/metal';
|
|
4
|
+
export { guidFor } from '@ember/-internals/utils';
|
|
8
5
|
import { addListener } from '@ember/-internals/metal';
|
|
9
|
-
import CoreObject from './core_object';
|
|
10
|
-
import Observable from '../mixins/observable';
|
|
11
6
|
import { assert } from '@ember/debug';
|
|
7
|
+
import { symbol } from '@ember/-internals/utils';
|
|
12
8
|
import { DEBUG } from '@glimmer/env';
|
|
13
|
-
|
|
14
|
-
class EmberObject extends CoreObject.extend(Observable) {
|
|
15
|
-
get _debugContainerKey() {
|
|
16
|
-
let factory = getFactoryFor(this);
|
|
17
|
-
return factory !== undefined && factory.fullName;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default EmberObject;
|
|
9
|
+
import EmberObject from '.';
|
|
23
10
|
let FrameworkObject = class FrameworkObject extends EmberObject {};
|
|
24
11
|
|
|
25
12
|
if (DEBUG) {
|