Skip to content

Commit

Permalink
WIP ugggghhhhh .create()
Browse files Browse the repository at this point in the history
  • Loading branch information
chriskrycho committed Jun 29, 2023
1 parent 1efc0dc commit 6d08306
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 14 deletions.
18 changes: 6 additions & 12 deletions packages/@ember/-internals/container/lib/registry.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import type {
Factory,
FactoryClass,
FullName,
InternalFactory,
Expand All @@ -18,18 +19,11 @@ export interface Injection {
specifier: FullName;
}

interface ResolverClassFromConstructor {
new (...args: any): Resolver;
}

interface ResolverClassFromCreate {
create(...args: unknown[]): Resolver;
}

export type ResolverClass =
| ResolverClassFromConstructor
| ResolverClassFromCreate
| (ResolverClassFromConstructor & ResolverClassFromCreate);
export interface ResolverClass
extends Factory<Resolver>,
Partial<{
new (...args: any): Resolver;
}> {}

export interface RegistryOptions {
fallback?: Registry;
Expand Down
11 changes: 9 additions & 2 deletions packages/@ember/object/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -763,14 +763,21 @@ class CoreObject {
@param [arguments]*
@public
*/
static create<C extends typeof CoreObject>(this: C): InstanceType<C>;
static create<
C extends typeof CoreObject,
I extends InstanceType<C>,
K extends keyof I,
Args extends Array<Partial<Record<K, I[K]>>>
Args extends Array<Partial<{ [Key in K]: I[Key] }>>
>(this: C, ...args: Args): InstanceType<C> & MergeArray<Args>;
static create<
C extends typeof CoreObject,
I extends InstanceType<C>,
K extends keyof I,
Args extends Array<Partial<{ [Key in K]: I[Key] }>>
>(this: C, ...args: Args): InstanceType<C> & MergeArray<Args> {
let props = args[0];
let instance;
let instance: InstanceType<C>;

if (props !== undefined) {
instance = new this(getOwner(props)) as InstanceType<C>;
Expand Down

0 comments on commit 6d08306

Please sign in to comment.