Skip to content

Commit 6c3ac7c

Browse files
chancancoderwjblue
authored and
Robert Jackson
committed
Fix types due to owner.lookup type changes
We explicitly added `| undefined` to the return type in the previous commit Co-authored-by: Robert Jackson <[email protected]>
1 parent 1158414 commit 6c3ac7c

File tree

6 files changed

+60
-48
lines changed

6 files changed

+60
-48
lines changed

packages/@ember/-internals/glimmer/lib/component-managers/curly.ts

+12-11
Original file line numberDiff line numberDiff line change
@@ -119,27 +119,28 @@ export default class CurlyComponentManager
119119
};
120120
}
121121

122-
templateFor(component: Component): OwnedTemplate {
123-
let { layout: _layout, layoutName } = component;
122+
protected templateFor(component: Component): OwnedTemplate {
123+
let { layout, layoutName } = component;
124124
let owner = getOwner(component);
125125

126-
let layout: TemplateFactory;
126+
let factory: TemplateFactory;
127127

128-
if (_layout === undefined) {
128+
if (layout === undefined) {
129129
if (layoutName !== undefined) {
130-
layout = owner.lookup<TemplateFactory>(`template:${layoutName}`);
131-
assert(`Layout \`${layoutName}\` not found!`, layout !== undefined);
130+
let _factory = owner.lookup<TemplateFactory>(`template:${layoutName}`);
131+
assert(`Layout \`${layoutName}\` not found!`, _factory !== undefined);
132+
factory = _factory!;
132133
} else {
133-
layout = owner.lookup(DEFAULT_LAYOUT);
134+
factory = owner.lookup<TemplateFactory>(DEFAULT_LAYOUT)!;
134135
}
135-
} else if (isTemplateFactory(_layout)) {
136-
layout = _layout;
136+
} else if (isTemplateFactory(layout)) {
137+
factory = layout;
137138
} else {
138139
// we were provided an instance already
139-
return _layout;
140+
return layout;
140141
}
141142

142-
return layout(owner);
143+
return factory(owner);
143144
}
144145

145146
getDynamicLayout({ component }: ComponentStateBucket): Invocation {

packages/@ember/-internals/routing/lib/location/auto_location.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,11 @@ export default class AutoLocation extends EmberObject implements EmberLocation {
9999
implementation = 'none';
100100
}
101101

102-
let concrete = getOwner(this).lookup(`location:${implementation}`);
103-
set(concrete, 'rootURL', rootURL);
102+
let concrete = getOwner(this).lookup<EmberLocation>(`location:${implementation}`);
103+
assert(`Could not find location '${implementation}'.`, concrete !== undefined);
104104

105-
assert(`Could not find location '${implementation}'.`, Boolean(concrete));
106-
107-
set(this, 'concreteImplementation', concrete);
105+
set(concrete!, 'rootURL', rootURL);
106+
set(this, 'concreteImplementation', concrete!);
108107
}
109108

110109
willDestroy() {

packages/@ember/-internals/routing/lib/system/generate_controller.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { get } from '@ember/-internals/metal';
22
import { Factory, Owner } from '@ember/-internals/owner';
3+
import Controller from '@ember/controller';
34
import { info } from '@ember/debug';
45
import { DEBUG } from '@glimmer/env';
56
/**
@@ -39,11 +40,11 @@ export function generateControllerFactory(owner: Owner, controllerName: string):
3940
@private
4041
@since 1.3.0
4142
*/
42-
export default function generateController(owner: Owner, controllerName: string) {
43+
export default function generateController(owner: Owner, controllerName: string): Controller {
4344
generateControllerFactory(owner, controllerName);
4445

4546
let fullName = `controller:${controllerName}`;
46-
let instance = owner.lookup(fullName);
47+
let instance = owner.lookup<Controller>(fullName)!;
4748

4849
if (DEBUG) {
4950
if (get(instance, 'namespace.LOG_ACTIVE_GENERATION')) {

packages/@ember/-internals/routing/lib/system/route.ts

+27-24
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
typeOf,
1919
} from '@ember/-internals/runtime';
2020
import { EMBER_FRAMEWORK_OBJECT_OWNER_ARGUMENT } from '@ember/canary-features';
21+
import Controller from '@ember/controller';
2122
import { assert, deprecate, info, isTesting } from '@ember/debug';
2223
import { ROUTER_EVENTS } from '@ember/deprecated-features';
2324
import { assign } from '@ember/polyfills';
@@ -235,9 +236,9 @@ class Route extends EmberObject implements IRoute {
235236
@public
236237
*/
237238
paramsFor(name: string) {
238-
let route: Route = getOwner(this).lookup(`route:${name}`);
239+
let route = getOwner(this).lookup<Route>(`route:${name}`);
239240

240-
if (!route) {
241+
if (route === undefined) {
241242
return {};
242243
}
243244

@@ -1272,7 +1273,7 @@ class Route extends EmberObject implements IRoute {
12721273
@since 1.0.0
12731274
@public
12741275
*/
1275-
setupController(controller: any, context: {}, _transition: Transition) {
1276+
setupController(controller: Controller, context: {}, _transition: Transition) {
12761277
// eslint-disable-line no-unused-vars
12771278
if (controller && context !== undefined) {
12781279
set(controller, 'model', context);
@@ -1303,26 +1304,25 @@ class Route extends EmberObject implements IRoute {
13031304
@since 1.0.0
13041305
@public
13051306
*/
1306-
controllerFor(name: string, _skipAssert: boolean) {
1307+
controllerFor(name: string, _skipAssert: boolean): Controller {
13071308
let owner = getOwner(this);
1308-
let route: Route = owner.lookup(`route:${name}`);
1309-
let controller: string;
1309+
let route = owner.lookup<Route>(`route:${name}`);
13101310

13111311
if (route && route.controllerName) {
13121312
name = route.controllerName;
13131313
}
13141314

1315-
controller = owner.lookup(`controller:${name}`);
1315+
let controller = owner.lookup<Controller>(`controller:${name}`);
13161316

13171317
// NOTE: We're specifically checking that skipAssert is true, because according
13181318
// to the old API the second parameter was model. We do not want people who
13191319
// passed a model to skip the assertion.
13201320
assert(
13211321
`The controller named '${name}' could not be found. Make sure that this route exists and has already been entered at least once. If you are accessing a controller not associated with a route, make sure the controller class is explicitly defined.`,
1322-
Boolean(controller) || _skipAssert === true
1322+
controller !== undefined || _skipAssert === true
13231323
);
13241324

1325-
return controller;
1325+
return controller!;
13261326
}
13271327

13281328
/**
@@ -1408,7 +1408,7 @@ class Route extends EmberObject implements IRoute {
14081408
name = _name;
14091409
}
14101410

1411-
let route: Route = owner.lookup(`route:${name}`);
1411+
let route = owner.lookup<Route>(`route:${name}`);
14121412
// If we are mid-transition, we want to try and look up
14131413
// resolved parent contexts on the current transitionEvent.
14141414
if (transition !== undefined && transition !== null) {
@@ -1812,7 +1812,9 @@ function buildRenderOptions(
18121812
);
18131813

18141814
let owner = getOwner(route);
1815-
let name, templateName, into, outlet, controller: string | {}, model;
1815+
let name, templateName, into, outlet, model;
1816+
let controller: Controller | string | undefined = undefined;
1817+
18161818
if (options) {
18171819
into = options.into && options.into.replace(/\//g, '.');
18181820
outlet = options.outlet;
@@ -1829,31 +1831,32 @@ function buildRenderOptions(
18291831
templateName = name;
18301832
}
18311833

1832-
if (!controller!) {
1834+
if (controller === undefined) {
18331835
if (isDefaultRender) {
1834-
controller = route.controllerName || owner.lookup(`controller:${name}`);
1836+
controller = route.controllerName || owner.lookup<Controller>(`controller:${name}`);
18351837
} else {
1836-
controller = owner.lookup(`controller:${name}`) || route.controllerName || route.routeName;
1838+
controller =
1839+
owner.lookup<Controller>(`controller:${name}`) || route.controllerName || route.routeName;
18371840
}
18381841
}
18391842

1840-
if (typeof controller! === 'string') {
1841-
let controllerName = controller!;
1842-
controller = owner.lookup(`controller:${controllerName}`);
1843+
if (typeof controller === 'string') {
1844+
let controllerName = controller;
1845+
controller = owner.lookup<Controller>(`controller:${controllerName}`);
18431846
assert(
18441847
`You passed \`controller: '${controllerName}'\` into the \`render\` method, but no such controller could be found.`,
1845-
isDefaultRender || Boolean(controller)
1848+
isDefaultRender || controller !== undefined
18461849
);
18471850
}
18481851

18491852
if (model) {
18501853
(controller! as any).set('model', model);
18511854
}
18521855

1853-
let template: TemplateFactory = owner.lookup(`template:${templateName}`);
1856+
let template = owner.lookup<TemplateFactory>(`template:${templateName}`);
18541857
assert(
18551858
`Could not find "${templateName}" template, view, or component.`,
1856-
isDefaultRender || Boolean(template)
1859+
isDefaultRender || template !== undefined
18571860
);
18581861

18591862
let parent: any;
@@ -1866,7 +1869,7 @@ function buildRenderOptions(
18661869
into,
18671870
outlet,
18681871
name,
1869-
controller: controller! as any,
1872+
controller,
18701873
template: template !== undefined ? template(owner) : route._topLevelViewTemplate(owner),
18711874
};
18721875

@@ -2228,7 +2231,7 @@ Route.reopen(ActionHandler, Evented, {
22282231

22292232
let controllerName = this.controllerName || this.routeName;
22302233
let owner = getOwner(this);
2231-
let controller = owner.lookup(`controller:${controllerName}`);
2234+
let controller = owner.lookup<Controller>(`controller:${controllerName}`);
22322235
let queryParameterConfiguraton = get(this, 'queryParams');
22332236
let hasRouterDefinedQueryParams = Object.keys(queryParameterConfiguraton).length > 0;
22342237

@@ -2278,7 +2281,7 @@ Route.reopen(ActionHandler, Evented, {
22782281
}
22792282

22802283
let urlKey = desc.as || this.serializeQueryParamKey(propName);
2281-
let defaultValue = get(controller, propName);
2284+
let defaultValue = get(controller!, propName);
22822285

22832286
defaultValue = copyDefaultValue(defaultValue);
22842287

@@ -2287,7 +2290,7 @@ Route.reopen(ActionHandler, Evented, {
22872290
let defaultValueSerialized = this.serializeQueryParam(defaultValue, urlKey, type);
22882291
let scopedPropertyName = `${controllerName}:${propName}`;
22892292
let qp = {
2290-
undecoratedDefaultValue: get(controller, propName),
2293+
undecoratedDefaultValue: get(controller!, propName),
22912294
defaultValue,
22922295
serializedDefaultValue: defaultValueSerialized,
22932296
serializedValue: defaultValueSerialized,

packages/@ember/-internals/routing/lib/system/router.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class EmberRouter extends EmberObject {
150150
let seen = Object.create(null);
151151

152152
class PrivateRouter extends Router<Route> {
153-
getRoute(name: string) {
153+
getRoute(name: string): Route {
154154
let routeName = name;
155155
let routeOwner = owner;
156156
let engineInfo = router._engineInfoByRoute[routeName];
@@ -164,10 +164,10 @@ class EmberRouter extends EmberObject {
164164

165165
let fullRouteName = `route:${routeName}`;
166166

167-
let route: Route = routeOwner.lookup(fullRouteName);
167+
let route = routeOwner.lookup<Route>(fullRouteName);
168168

169169
if (seen[name]) {
170-
return route;
170+
return route!;
171171
}
172172

173173
seen[name] = true;
@@ -184,15 +184,15 @@ class EmberRouter extends EmberObject {
184184
}
185185
}
186186

187-
route._setRouteName(routeName);
187+
route!._setRouteName(routeName);
188188

189-
if (engineInfo && !hasDefaultSerialize(route)) {
189+
if (engineInfo && !hasDefaultSerialize(route!)) {
190190
throw new Error(
191191
'Defining a custom serialize method on an Engine route is not supported.'
192192
);
193193
}
194194

195-
return route;
195+
return route!;
196196
}
197197

198198
getSerializer(name: string) {

packages/@ember/controller/index.d.ts

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export default interface Controller {
2+
isController: true;
3+
target?: unknown;
4+
store?: unknown;
5+
model?: unknown;
6+
}
7+
8+
export function inject(name?: string): Controller;

0 commit comments

Comments
 (0)