mirror of
https://github.com/chenasraf/DefinitelyTyped.git
synced 2026-05-18 01:49:01 +00:00
🤖 Merge PR #65769 @ember/modifier: cover missing Ember 3.x/4.x APIs by @chriskrycho
This commit is contained in:
@@ -1,8 +1,24 @@
|
||||
import { setModifierManager, capabilities, on } from '@ember/modifier';
|
||||
import Owner from '@ember/owner';
|
||||
|
||||
declare let owner: Owner;
|
||||
import {
|
||||
setModifierManager,
|
||||
capabilities,
|
||||
on,
|
||||
ModifierCapabilities,
|
||||
OnModifier,
|
||||
ModifierCapabilitiesVersions,
|
||||
} from '@ember/modifier';
|
||||
|
||||
on; // $ExpectType OnModifier
|
||||
setModifierManager((owner) => {}, {}); // $ExpectType {}
|
||||
capabilities('3.24'); // $ExpectType unknown
|
||||
setModifierManager(owner => {}, {}); // $ExpectType {}
|
||||
const capabilitiesFor3_22 = capabilities('3.22'); // $ExpectType ModifierCapabilities
|
||||
capabilitiesFor3_22.disableAutoTracking; // $ExpectType boolean
|
||||
|
||||
declare let x: ModifierCapabilitiesVersions;
|
||||
x['3.22'].disableAutoTracking;
|
||||
// @ts-expect-error
|
||||
x['1.23'];
|
||||
|
||||
// We can name the type of `OnModifier`.
|
||||
declare function takesOn(on: OnModifier): void;
|
||||
|
||||
// We can name the type of capabilities:
|
||||
declare function takesCapabilities(caps: ModifierCapabilities): void;
|
||||
|
||||
22
types/ember__modifier/index.d.ts
vendored
22
types/ember__modifier/index.d.ts
vendored
@@ -31,13 +31,25 @@ export const on: OnModifier;
|
||||
* manager](https://emberjs.github.io/rfcs/0373-Element-Modifier-Managers.html).
|
||||
* @param modifier The modifier definition to associate with the manager.
|
||||
*/
|
||||
export function setModifierManager<T>(
|
||||
factory: (owner: Owner) => unknown,
|
||||
modifier: T
|
||||
): T;
|
||||
export function setModifierManager<T>(factory: (owner: Owner) => unknown, modifier: T): T;
|
||||
|
||||
export interface ModifierCapabilitiesVersions {
|
||||
// passes factoryFor(...).class to `.createModifier`
|
||||
// uses args proxy, does not provide a way to opt-out
|
||||
'3.22': {
|
||||
disableAutoTracking?: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
export interface ModifierCapabilities {
|
||||
disableAutoTracking: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a target version of Ember, return an opaque token which Ember can use
|
||||
* to determine what a given modifier manager supports.
|
||||
*/
|
||||
export function capabilities(version: string): unknown;
|
||||
export function capabilities<Version extends keyof ModifierCapabilitiesVersions>(
|
||||
managerAPI: Version,
|
||||
optionalFeatures?: ModifierCapabilitiesVersions[Version],
|
||||
): ModifierCapabilities;
|
||||
|
||||
Reference in New Issue
Block a user