Skip to content

Commit

Permalink
Fix types for ember v5.6 (#786)
Browse files Browse the repository at this point in the history
  • Loading branch information
gossi authored Jan 26, 2024
1 parent 084c26f commit b23120b
Show file tree
Hide file tree
Showing 16 changed files with 3,759 additions and 2,116 deletions.
8 changes: 1 addition & 7 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,7 +1 @@
{
"eslint.packageManager": "pnpm",
"eslint.workingDirectories": [
"ember-link",
"test-app"
]
}
{}
53 changes: 26 additions & 27 deletions ember-link/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,43 +48,42 @@
"api": "typedoc"
},
"dependencies": {
"@embroider/addon-shim": "^1.8.5",
"@embroider/macros": "^1.11.1",
"@embroider/addon-shim": "^1.8.7",
"@embroider/macros": "^1.13.4",
"@glimmer/env": "^0.1.7"
},
"peerDependencies": {
"@ember/test-helpers": "^2.9.3 || ^3.0.0",
"@glimmer/tracking": "^1.1.2"
},
"devDependencies": {
"@babel/core": "^7.22.5",
"@babel/core": "^7.23.7",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-proposal-decorators": "^7.22.5",
"@babel/preset-typescript": "^7.22.5",
"@babel/runtime": "^7.22.5",
"@ember/test-helpers": "^3.1.0",
"@embroider/addon-dev": "^3.1.1",
"@glint/template": "^1.0.2",
"@gossi/config-eslint": "^0.4.0",
"@gossi/config-prettier": "^0.4.0",
"@release-it-plugins/lerna-changelog": "^6.0.0",
"@tsconfig/ember": "^2.0.0",
"@types/qunit": "^2.19.6",
"@babel/plugin-proposal-decorators": "^7.23.7",
"@babel/preset-typescript": "^7.23.3",
"@babel/runtime": "^7.23.8",
"@ember/test-helpers": "^3.2.1",
"@embroider/addon-dev": "^4.1.3",
"@glint/template": "^1.3.0",
"@gossi/config-eslint": "^0.6.0",
"@gossi/config-prettier": "^0.6.0",
"@release-it-plugins/lerna-changelog": "^6.1.0",
"@tsconfig/ember": "^3.0.3",
"@types/qunit": "^2.19.10",
"@typescript-eslint/eslint-plugin": "^5.60.0",
"@typescript-eslint/parser": "^5.60.0",
"concurrently": "^8.2.0",
"ember-source": "^4.12.0",
"eslint": "^8.43.0",
"eslint-plugin-ember": "^11.8.0",
"eslint-plugin-storybook": "^0.6.12",
"prettier": "^2.8.8",
"release-it": "^16.1.3",
"rollup": "3.25.1",
"rollup-plugin-copy": "^3.4.0",
"rollup-plugin-ts": "^3.2.0",
"typedoc": "^0.24.8",
"typedoc-plugin-markdown": "^3.15.3",
"typescript": "^5.1.3"
"concurrently": "^8.2.2",
"ember-source": "^5.6.0",
"eslint": "^8.56.0",
"eslint-plugin-ember": "^12.0.0",
"prettier": "^3.2.4",
"release-it": "^17.0.3",
"rollup": "4.9.6",
"rollup-plugin-copy": "^3.5.0",
"rollup-plugin-ts": "^3.4.5",
"typedoc": "^0.25.7",
"typedoc-plugin-markdown": "^3.17.1",
"typescript": "^5.3.3"
},
"engines": {
"node": ">= 16.*"
Expand Down
15 changes: 8 additions & 7 deletions ember-link/src/helpers/link.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,14 @@ export default class LinkHelper extends Helper<LinkSignature> {

const namedQueryParameters = named.query ?? {};
const positionalQueryParameters =
positional.length > 0 && isQueryParams(positional[positional.length - 1])
positional.length > 0 &&
isQueryParams(positional?.[positional.length - 1] as PositionalParams)
? (positional[positional.length - 1] as QueryParams)
: undefined;

assert(
`Query parameters either need to be specified as the last positional parameter or as the named 'query' parameter.`,
!positional.slice(0, -1).some((argument) => isQueryParams(argument))
!positional.slice(0, -1).some((argument) => isQueryParams(argument as PositionalParams))
);

assert(
Expand All @@ -95,7 +96,7 @@ export default class LinkHelper extends Helper<LinkSignature> {
`Either specify models as positional parameters, as the named 'models' parameter, or as the named 'model' parameter as a short hand for a single model.`,
!(
positional.length > 1 &&
!isQueryParams(positional[positional.length - 1]) &&
!isQueryParams(positional?.[positional.length - 1] as PositionalParams) &&
(named.models || named.model)
)
);
Expand All @@ -110,10 +111,10 @@ export default class LinkHelper extends Helper<LinkSignature> {
models: Array.isArray(named.models)
? named.models
: named.model
? [named.model]
: positional.length > 1
? (positional.slice(1, positionalQueryParameters ? -1 : undefined) as RouteModel[])
: undefined,
? [named.model]
: positional.length > 1
? (positional.slice(1, positionalQueryParameters ? -1 : undefined) as RouteModel[])
: undefined,
query: named.query ?? positionalQueryParameters,
onTransitionTo: named.onTransitionTo,
onReplaceWith: named.onReplaceWith,
Expand Down
10 changes: 5 additions & 5 deletions ember-link/src/services/link-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import { getOwner } from '../-owner';
import Link from '../link';

import type { Behavior } from '../-behavior';
import type { RouteModel } from '../-models';
import type { LinkParams } from '../-params';
import type Owner from '@ember/owner';
import type RouteInfo from '@ember/routing/route-info';
import type RouterService from '@ember/routing/router-service';
import type Transition from '@ember/routing/transition';
Expand Down Expand Up @@ -95,8 +97,7 @@ export default class LinkManagerService extends Service {
* Converts a `RouteInfo` object into `LinkParams`.
*/
static getLinkParamsFromRouteInfo(routeInfo: RouteInfo): LinkParams {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const models = routeInfo.paramNames.map((name) => routeInfo.params[name]!);
const models = routeInfo.paramNames.map((name) => routeInfo.params?.[name]) as RouteModel[];

return {
route: routeInfo.name,
Expand All @@ -105,9 +106,8 @@ export default class LinkManagerService extends Service {
};
}

// eslint-disable-next-line @typescript-eslint/ban-types
constructor(properties?: object) {
super(properties);
constructor(owner?: Owner) {
super(owner);

// Ignore `Argument of type '"routeWillChange"' is not assignable to parameter of type ...`

Expand Down
4 changes: 4 additions & 0 deletions ember-link/src/test-support/setup-link.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,14 @@ export default function setupLink(hooks: Hooks /* NestedHooks */) {
hooks.beforeEach(function (this: TestContext) {
assert(
'ember-link.setupLink: You have already called `setupLink` once',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
!this.owner.hasRegistration('service:link-manager') ||
!(this.owner.lookup('service:link-manager') instanceof TestInstrumentedLinkManagerService)
);

// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
this.owner.unregister('service:link-manager');
this.owner.register('service:link-manager', TestInstrumentedLinkManagerService);
});
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"vitepress": "^1.0.0-beta.3"
},
"volta": {
"node": "16.20.0"
"node": "20.11.0"
},
"pnpm": {
"peerDependencyRules": {
Expand Down
Loading

0 comments on commit b23120b

Please sign in to comment.