udic 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +1 -2
  2. package/index.d.ts +8 -9
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,10 +1,9 @@
1
1
  A dependency injection library.
2
-
3
- # Examples
4
2
  ```ts
5
3
  import * as di from 'udic';
6
4
  ```
7
5
 
6
+ # Examples
8
7
  Run code that depends on a service:
9
8
  ```ts
10
9
  // Create a service that generates random number
package/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  declare const _: unique symbol;
2
2
  type _ = typeof _;
3
3
  type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
4
+ type Prettify<T> = { [K in keyof T] : T[K] } & {};
4
5
  export interface Service<
5
6
  T extends string | symbol,
6
7
  K
@@ -16,11 +17,8 @@ export interface Compute<
16
17
  0: R;
17
18
  [_]: T;
18
19
  }
19
- export type AnyService = Service<string | symbol, any>;
20
- export type AnyCompute = Compute<any, any>;
21
- export type Dependency = AnyService | AnyCompute;
22
- export type InferDependencies<T extends Dependency[]> = { [K in keyof T] : T[K][0] };
23
- export type InferRecord<T extends Dependency[]> = UnionToIntersection<T[number][_]>;
20
+ export type Dependency = Service<any, any> | Compute<any, any>;
21
+ export type InferDependencies<T extends Dependency> = Prettify<UnionToIntersection<T[_]>>;
24
22
  /**
25
23
  * Create a service
26
24
  * @param name - The service name
@@ -34,14 +32,15 @@ export declare const service: <T extends string | symbol>(name: T) => (<K>() =>
34
32
  export declare const derive: <
35
33
  const T extends Dependency[],
36
34
  const R
37
- >(deps: T, f: (...args: InferDependencies<T>) => R) => Compute<InferRecord<T>, R>;
35
+ >(deps: T, f: (...args: { [K in keyof T] : T[K][0] }) => R) => Compute<InferDependencies<T[number]>, R>;
38
36
  /**
39
37
  * Inject some dependencies to the compute
40
38
  * @param compute
41
39
  * @param deps - Dependencies to inject
42
40
  */
43
41
  export declare const inject: <
44
- T extends AnyCompute,
45
- D extends Partial<T[_]>
46
- >(compute: T, d: D) => Compute<Omit<T[_], keyof D>, T[0]>;
42
+ T,
43
+ R,
44
+ D extends Partial<T>
45
+ >(compute: Compute<T, R>, d: D) => Compute<Prettify<Omit<T, keyof D>>, R>;
47
46
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "udic",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "A simple dependency injection library",
5
5
  "keywords": ["di"],
6
6
  "license": "MIT",