ember-source 4.3.0-alpha.1 → 4.3.0-beta.1
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 +6 -2
- package/blueprints/component-addon/index.js +2 -3
- package/blueprints/component-class-addon/index.js +2 -3
- package/blueprints/controller/files/__root__/__path__/__name__.js +2 -2
- package/blueprints/controller/index.js +2 -4
- package/blueprints/route/files/__root__/__path__/__name__.js +3 -3
- package/blueprints/route/index.js +2 -3
- package/blueprints/service/files/__root__/__path__/__name__.js +2 -2
- package/blueprints/service/index.js +2 -4
- package/build-metadata.json +3 -3
- package/dist/dependencies/router_js.js +66 -31
- package/dist/ember-template-compiler.js +1250 -861
- package/dist/ember-template-compiler.map +1 -1
- package/dist/ember-testing.js +88 -56
- package/dist/ember-testing.map +1 -1
- package/dist/ember.debug.js +3712 -3159
- package/dist/ember.debug.map +1 -1
- package/dist/header/license.js +1 -1
- package/dist/header/loader.js +0 -1
- package/dist/packages/@ember/-internals/bootstrap/index.js +0 -2
- package/dist/packages/@ember/-internals/container/index.js +16 -11
- package/dist/packages/@ember/-internals/extension-support/lib/container_debug_adapter.js +3 -3
- package/dist/packages/@ember/-internals/extension-support/lib/data_adapter.js +52 -52
- package/dist/packages/@ember/-internals/glimmer/index.js +161 -125
- package/dist/packages/@ember/-internals/meta/lib/meta.js +67 -11
- package/dist/packages/@ember/-internals/metal/index.js +95 -121
- package/dist/packages/@ember/-internals/routing/lib/ext/controller.js +24 -12
- package/dist/packages/@ember/-internals/routing/lib/location/api.js +1 -0
- package/dist/packages/@ember/-internals/routing/lib/location/auto_location.js +3 -1
- package/dist/packages/@ember/-internals/routing/lib/services/router.js +117 -197
- package/dist/packages/@ember/-internals/routing/lib/services/routing.js +3 -1
- package/dist/packages/@ember/-internals/routing/lib/system/route-info.js +2 -2
- package/dist/packages/@ember/-internals/routing/lib/system/route.js +147 -402
- package/dist/packages/@ember/-internals/routing/lib/system/router.js +82 -40
- package/dist/packages/@ember/-internals/routing/lib/utils.js +48 -25
- package/dist/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +1 -1
- package/dist/packages/@ember/-internals/runtime/lib/mixins/array.js +1 -0
- package/dist/packages/@ember/-internals/runtime/lib/mixins/comparable.js +4 -4
- package/dist/packages/@ember/-internals/runtime/lib/mixins/container_proxy.js +29 -29
- package/dist/packages/@ember/-internals/runtime/lib/mixins/promise_proxy.js +16 -16
- package/dist/packages/@ember/-internals/runtime/lib/mixins/registry_proxy.js +48 -48
- package/dist/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +8 -8
- package/dist/packages/@ember/-internals/runtime/lib/system/namespace.js +1 -2
- package/dist/packages/@ember/-internals/runtime/lib/type-of.js +1 -1
- package/dist/packages/@ember/-internals/utils/index.js +11 -9
- package/dist/packages/@ember/-internals/views/lib/mixins/view_support.js +2 -4
- package/dist/packages/@ember/-internals/views/lib/system/utils.js +2 -0
- package/dist/packages/@ember/application/lib/application.js +0 -2
- package/dist/packages/@ember/array/index.js +1 -1
- package/dist/packages/@ember/canary-features/index.js +2 -2
- package/dist/packages/@ember/controller/index.js +3 -54
- package/dist/packages/@ember/debug/index.js +1 -1
- package/dist/packages/@ember/debug/lib/deprecate.js +12 -10
- package/dist/packages/@ember/instrumentation/index.js +9 -13
- package/dist/packages/@ember/object/compat.js +16 -7
- package/dist/packages/@ember/polyfills/lib/assign.js +1 -0
- package/dist/packages/@ember/routing/router-service.js +1 -0
- package/dist/packages/@ember/runloop/index.js +9 -9
- package/dist/packages/@ember/service/index.js +6 -73
- package/dist/packages/@ember/string/index.js +1 -0
- package/dist/packages/ember/index.js +1 -2
- package/dist/packages/ember/version.js +1 -1
- package/docs/data.json +2588 -1839
- package/package.json +27 -27
- package/blueprints/component-addon/native-files/__root__/__path__/__name__.js +0 -1
- package/blueprints/component-class-addon/native-files/__root__/__path__/__name__.js +0 -1
- package/blueprints/controller/native-files/__root__/__path__/__name__.js +0 -4
- package/blueprints/edition-detector.js +0 -13
- package/blueprints/route/native-files/__root__/__path__/__name__.js +0 -11
- package/blueprints/route/native-files/__root__/__templatepath__/__templatename__.hbs +0 -2
- package/blueprints/service/native-files/__root__/__path__/__name__.js +0 -4
|
@@ -36,9 +36,16 @@ export const UNDEFINED = symbol('undefined');
|
|
|
36
36
|
let currentListenerVersion = 1;
|
|
37
37
|
export class Meta {
|
|
38
38
|
// DEBUG
|
|
39
|
+
|
|
40
|
+
/** @internal */
|
|
39
41
|
constructor(obj) {
|
|
42
|
+
/** @internal */
|
|
40
43
|
this._listenersVersion = 1;
|
|
44
|
+
/** @internal */
|
|
45
|
+
|
|
41
46
|
this._inheritedEnd = -1;
|
|
47
|
+
/** @internal */
|
|
48
|
+
|
|
42
49
|
this._flattenedVersion = 0;
|
|
43
50
|
|
|
44
51
|
if (DEBUG) {
|
|
@@ -59,6 +66,8 @@ export class Meta {
|
|
|
59
66
|
this.proto = obj.constructor === undefined ? undefined : obj.constructor.prototype;
|
|
60
67
|
this._listeners = undefined;
|
|
61
68
|
}
|
|
69
|
+
/** @internal */
|
|
70
|
+
|
|
62
71
|
|
|
63
72
|
get parent() {
|
|
64
73
|
let parent = this._parent;
|
|
@@ -74,26 +83,38 @@ export class Meta {
|
|
|
74
83
|
setInitializing() {
|
|
75
84
|
this._isInit = true;
|
|
76
85
|
}
|
|
86
|
+
/** @internal */
|
|
87
|
+
|
|
77
88
|
|
|
78
89
|
unsetInitializing() {
|
|
79
90
|
this._isInit = false;
|
|
80
91
|
}
|
|
92
|
+
/** @internal */
|
|
93
|
+
|
|
81
94
|
|
|
82
95
|
isInitializing() {
|
|
83
96
|
return this._isInit;
|
|
84
97
|
}
|
|
98
|
+
/** @internal */
|
|
99
|
+
|
|
85
100
|
|
|
86
101
|
isPrototypeMeta(obj) {
|
|
87
102
|
return this.proto === this.source && this.source === obj;
|
|
88
103
|
}
|
|
104
|
+
/** @internal */
|
|
105
|
+
|
|
89
106
|
|
|
90
107
|
_getOrCreateOwnMap(key) {
|
|
91
108
|
return this[key] || (this[key] = Object.create(null));
|
|
92
109
|
}
|
|
110
|
+
/** @internal */
|
|
111
|
+
|
|
93
112
|
|
|
94
113
|
_getOrCreateOwnSet(key) {
|
|
95
114
|
return this[key] || (this[key] = new Set());
|
|
96
115
|
}
|
|
116
|
+
/** @internal */
|
|
117
|
+
|
|
97
118
|
|
|
98
119
|
_findInheritedMap(key, subkey) {
|
|
99
120
|
let pointer = this;
|
|
@@ -112,6 +133,8 @@ export class Meta {
|
|
|
112
133
|
pointer = pointer.parent;
|
|
113
134
|
}
|
|
114
135
|
}
|
|
136
|
+
/** @internal */
|
|
137
|
+
|
|
115
138
|
|
|
116
139
|
_hasInInheritedSet(key, value) {
|
|
117
140
|
let pointer = this;
|
|
@@ -128,28 +151,38 @@ export class Meta {
|
|
|
128
151
|
|
|
129
152
|
return false;
|
|
130
153
|
}
|
|
154
|
+
/** @internal */
|
|
155
|
+
|
|
131
156
|
|
|
132
157
|
valueFor(key) {
|
|
133
158
|
let values = this._values;
|
|
134
159
|
return values !== undefined ? values[key] : undefined;
|
|
135
160
|
}
|
|
161
|
+
/** @internal */
|
|
162
|
+
|
|
136
163
|
|
|
137
164
|
setValueFor(key, value) {
|
|
138
165
|
let values = this._getOrCreateOwnMap('_values');
|
|
139
166
|
|
|
140
167
|
values[key] = value;
|
|
141
168
|
}
|
|
169
|
+
/** @internal */
|
|
170
|
+
|
|
142
171
|
|
|
143
172
|
revisionFor(key) {
|
|
144
173
|
let revisions = this._revisions;
|
|
145
174
|
return revisions !== undefined ? revisions[key] : undefined;
|
|
146
175
|
}
|
|
176
|
+
/** @internal */
|
|
177
|
+
|
|
147
178
|
|
|
148
179
|
setRevisionFor(key, revision) {
|
|
149
180
|
let revisions = this._getOrCreateOwnMap('_revisions');
|
|
150
181
|
|
|
151
182
|
revisions[key] = revision;
|
|
152
183
|
}
|
|
184
|
+
/** @internal */
|
|
185
|
+
|
|
153
186
|
|
|
154
187
|
writableLazyChainsFor(key) {
|
|
155
188
|
if (DEBUG) {
|
|
@@ -166,6 +199,8 @@ export class Meta {
|
|
|
166
199
|
|
|
167
200
|
return chains;
|
|
168
201
|
}
|
|
202
|
+
/** @internal */
|
|
203
|
+
|
|
169
204
|
|
|
170
205
|
readableLazyChainsFor(key) {
|
|
171
206
|
if (DEBUG) {
|
|
@@ -180,6 +215,8 @@ export class Meta {
|
|
|
180
215
|
|
|
181
216
|
return undefined;
|
|
182
217
|
}
|
|
218
|
+
/** @internal */
|
|
219
|
+
|
|
183
220
|
|
|
184
221
|
addMixin(mixin) {
|
|
185
222
|
assert(isDestroyed(this.source) ? `Cannot add mixins of \`${toString(mixin)}\` on \`${toString(this.source)}\` call addMixin after it has been destroyed.` : '', !isDestroyed(this.source));
|
|
@@ -188,10 +225,14 @@ export class Meta {
|
|
|
188
225
|
|
|
189
226
|
set.add(mixin);
|
|
190
227
|
}
|
|
228
|
+
/** @internal */
|
|
229
|
+
|
|
191
230
|
|
|
192
231
|
hasMixin(mixin) {
|
|
193
232
|
return this._hasInInheritedSet('_mixins', mixin);
|
|
194
233
|
}
|
|
234
|
+
/** @internal */
|
|
235
|
+
|
|
195
236
|
|
|
196
237
|
forEachMixins(fn) {
|
|
197
238
|
let pointer = this;
|
|
@@ -214,22 +255,30 @@ export class Meta {
|
|
|
214
255
|
pointer = pointer.parent;
|
|
215
256
|
}
|
|
216
257
|
}
|
|
258
|
+
/** @internal */
|
|
259
|
+
|
|
217
260
|
|
|
218
261
|
writeDescriptors(subkey, value) {
|
|
219
262
|
assert(isDestroyed(this.source) ? `Cannot update descriptors for \`${subkey}\` on \`${toString(this.source)}\` after it has been destroyed.` : '', !isDestroyed(this.source));
|
|
220
263
|
let map = this._descriptors || (this._descriptors = new Map());
|
|
221
264
|
map.set(subkey, value);
|
|
222
265
|
}
|
|
266
|
+
/** @internal */
|
|
267
|
+
|
|
223
268
|
|
|
224
269
|
peekDescriptors(subkey) {
|
|
225
270
|
let possibleDesc = this._findInheritedMap('_descriptors', subkey);
|
|
226
271
|
|
|
227
272
|
return possibleDesc === UNDEFINED ? undefined : possibleDesc;
|
|
228
273
|
}
|
|
274
|
+
/** @internal */
|
|
275
|
+
|
|
229
276
|
|
|
230
277
|
removeDescriptors(subkey) {
|
|
231
278
|
this.writeDescriptors(subkey, UNDEFINED);
|
|
232
279
|
}
|
|
280
|
+
/** @internal */
|
|
281
|
+
|
|
233
282
|
|
|
234
283
|
forEachDescriptors(fn) {
|
|
235
284
|
let pointer = this;
|
|
@@ -254,6 +303,8 @@ export class Meta {
|
|
|
254
303
|
pointer = pointer.parent;
|
|
255
304
|
}
|
|
256
305
|
}
|
|
306
|
+
/** @internal */
|
|
307
|
+
|
|
257
308
|
|
|
258
309
|
addToListeners(eventName, target, method, once, sync) {
|
|
259
310
|
if (DEBUG) {
|
|
@@ -266,6 +317,8 @@ export class Meta {
|
|
|
266
317
|
/* ADD */
|
|
267
318
|
, sync);
|
|
268
319
|
}
|
|
320
|
+
/** @internal */
|
|
321
|
+
|
|
269
322
|
|
|
270
323
|
removeFromListeners(eventName, target, method) {
|
|
271
324
|
if (DEBUG) {
|
|
@@ -303,7 +356,8 @@ export class Meta {
|
|
|
303
356
|
sync
|
|
304
357
|
});
|
|
305
358
|
} else {
|
|
306
|
-
let listener = listeners[i];
|
|
359
|
+
let listener = listeners[i];
|
|
360
|
+
assert('has listener', listener); // If the listener is our own listener and we are trying to remove it, we
|
|
307
361
|
// want to splice it out entirely so we don't hold onto a reference.
|
|
308
362
|
|
|
309
363
|
if (kind === 2
|
|
@@ -311,8 +365,8 @@ export class Meta {
|
|
|
311
365
|
&& listener.kind !== 2
|
|
312
366
|
/* REMOVE */
|
|
313
367
|
) {
|
|
314
|
-
|
|
315
|
-
|
|
368
|
+
listeners.splice(i, 1);
|
|
369
|
+
} else {
|
|
316
370
|
assert(`You attempted to add an observer for the same method on '${event.split(':')[0]}' twice to ${target} as both sync and async. Observers must be either sync or async, they cannot be both. This is likely a mistake, you should either remove the code that added the observer a second time, or update it to always be sync or async. The method was ${method}.`, !(listener.kind === 0
|
|
317
371
|
/* ADD */
|
|
318
372
|
&& kind === 0
|
|
@@ -394,8 +448,7 @@ export class Meta {
|
|
|
394
448
|
this._inheritedEnd = 0;
|
|
395
449
|
}
|
|
396
450
|
|
|
397
|
-
for (let
|
|
398
|
-
let listener = parentListeners[i];
|
|
451
|
+
for (let listener of parentListeners) {
|
|
399
452
|
let index = indexOfListener(listeners, listener.event, listener.target, listener.method);
|
|
400
453
|
|
|
401
454
|
if (index === -1) {
|
|
@@ -416,6 +469,8 @@ export class Meta {
|
|
|
416
469
|
|
|
417
470
|
return this._listeners;
|
|
418
471
|
}
|
|
472
|
+
/** @internal */
|
|
473
|
+
|
|
419
474
|
|
|
420
475
|
matchingListeners(eventName) {
|
|
421
476
|
let listeners = this.flattenedListeners();
|
|
@@ -426,10 +481,9 @@ export class Meta {
|
|
|
426
481
|
}
|
|
427
482
|
|
|
428
483
|
if (listeners !== undefined) {
|
|
429
|
-
for (let
|
|
430
|
-
|
|
484
|
+
for (let listener of listeners) {
|
|
485
|
+
// REMOVE listeners are placeholders that tell us not to
|
|
431
486
|
// inherit, so they never match. Only ADD and ONCE can match.
|
|
432
|
-
|
|
433
487
|
if (listener.event === eventName && (listener.kind === 0
|
|
434
488
|
/* ADD */
|
|
435
489
|
|| listener.kind === 1
|
|
@@ -450,6 +504,8 @@ export class Meta {
|
|
|
450
504
|
|
|
451
505
|
return result;
|
|
452
506
|
}
|
|
507
|
+
/** @internal */
|
|
508
|
+
|
|
453
509
|
|
|
454
510
|
observerEvents() {
|
|
455
511
|
let listeners = this.flattenedListeners();
|
|
@@ -460,10 +516,9 @@ export class Meta {
|
|
|
460
516
|
}
|
|
461
517
|
|
|
462
518
|
if (listeners !== undefined) {
|
|
463
|
-
for (let
|
|
464
|
-
|
|
519
|
+
for (let listener of listeners) {
|
|
520
|
+
// REMOVE listeners are placeholders that tell us not to
|
|
465
521
|
// inherit, so they never match. Only ADD and ONCE can match.
|
|
466
|
-
|
|
467
522
|
if ((listener.kind === 0
|
|
468
523
|
/* ADD */
|
|
469
524
|
|| listener.kind === 1
|
|
@@ -585,6 +640,7 @@ export { counters };
|
|
|
585
640
|
function indexOfListener(listeners, event, target, method) {
|
|
586
641
|
for (let i = listeners.length - 1; i >= 0; i--) {
|
|
587
642
|
let listener = listeners[i];
|
|
643
|
+
assert('has listener', listener);
|
|
588
644
|
|
|
589
645
|
if (listener.event === event && listener.target === target && listener.method === method) {
|
|
590
646
|
return i;
|