I'm submitting a feature request
Please tell us about your environment:
Current behavior:
During intial configuration when modules are included, the module configuration argument is of type any:
aurelia.use.plugin("my-module", options?: any)
It is currently not possible for module authors to improve typings for their module, as aurelia.use is of type FrameworkConfiguration, and it is not possible to extend classes with typings in typescript.
Expected/desired behavior:
It would be really neat if the FramworkConfiguration implemented an interface, say IFramworkConfiguration for the builder api instead of the FrameworkConfiguration itself.
The interface should of cause contain all all the properties/methods of FramworkConfiguration, and the return type for the methods should be changed to IFrameworkConfiguration.
This change would enable module authors to include typing aided configuration. Say for example:
import { IFrameworkConfiguration } from "aurelia-framework";
import { CacheOptions } from "./cache-options";
declare module "aurelia-framework" {
interface IFrameworkConfiguration {
plugin(plugin: "aurelia-workbox-cachecontrol", configureAction?: (options: CacheOptions) => unknown): FrameworkConfiguration;
}
}
To make this work with PLATFORM.moduleName() in webpack environments, its typing definitation should be changed from:
moduleName(moduleName: string, options?: ModuleNameOptions): string;
moduleName(moduleName: string, chunk?: string): string;
to:
moduleName<T extends string>(moduleName: T, options?: ModuleNameOptions): T;
moduleName<T extends string>(moduleName: T, chunk?: string): T;
to specifically tell typescript that the same module name is returned.

- What is the motivation / use case for changing the behavior?
To make for a more robust plugin experience where configuration is typed.
I'm submitting a feature request
1.3.1
Please tell us about your environment:
Operating System:
Windows 10
Node Version:
12.8.0
NPM Version:
6.11.3
Aurelia CLI OR JSPM OR Webpack AND Version
none
Browser:
all
Language:
TypeScript
Current behavior:
During intial configuration when modules are included, the module configuration argument is of type any:
It is currently not possible for module authors to improve typings for their module, as
aurelia.useis of typeFrameworkConfiguration, and it is not possible to extend classes with typings in typescript.Expected/desired behavior:
It would be really neat if the
FramworkConfigurationimplemented an interface, sayIFramworkConfigurationfor the builder api instead of theFrameworkConfigurationitself.The interface should of cause contain all all the properties/methods of
FramworkConfiguration, and the return type for the methods should be changed toIFrameworkConfiguration.This change would enable module authors to include typing aided configuration. Say for example:
To make this work with
PLATFORM.moduleName()in webpack environments, its typing definitation should be changed from:to:
to specifically tell typescript that the same module name is returned.
To make for a more robust plugin experience where configuration is typed.