From b00148deb86ab43ccea59544ee0951208ad0a29f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Federico=20V=C3=A1zquez?= Date: Tue, 14 Dec 2021 00:14:43 -0300 Subject: [PATCH] fix lint-staged and slint --- Binding.d.ts | 15 +++++++++++++++ Container.d.ts | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ index.d.ts | 10 ++++++++++ package.json | 6 +++--- src/Binding.ts | 3 +-- src/Container.ts | 2 +- src/index.ts | 14 ++++++++++++++ src/types.d.ts | 11 ----------- 8 files changed, 92 insertions(+), 17 deletions(-) create mode 100644 Binding.d.ts create mode 100644 Container.d.ts create mode 100644 index.d.ts delete mode 100644 src/types.d.ts diff --git a/Binding.d.ts b/Binding.d.ts new file mode 100644 index 0000000..c411e8e --- /dev/null +++ b/Binding.d.ts @@ -0,0 +1,15 @@ +import type { Container, Resolvable } from '.'; +interface BindingContract { + resolvable: Resolvable; + shared: boolean; +} +declare class Binding implements BindingContract { + resolvable: Resolvable; + shared: boolean; + constructor(resolvable: Resolvable, shared?: boolean); + resolveInjectables(container: Container): unknown[]; + resolve(container: Container, params?: unknown[]): any; + static isResolvable(binding: unknown): boolean; + static once(resolvable: Resolvable, container: Container, params: unknown[]): any; +} +export default Binding; diff --git a/Container.d.ts b/Container.d.ts new file mode 100644 index 0000000..487be78 --- /dev/null +++ b/Container.d.ts @@ -0,0 +1,48 @@ +import type { Key, Resolvable } from '.'; +export default class Container { + protected bindings: Map; + protected instances: Map; + protected aliases: Map; + /** + * Checks if anything has been bound or aliased into the Container + */ + has(key: Key): boolean; + /** + * Binds a resolvable function into the Container + * + * If it is the only param, the object reference works as the reference key + */ + bind(key: Key | Resolvable, resolvable?: unknown | Resolvable, shared?: boolean): this; + private resolve; + /** + * Resolves a Binding reference from the Container + * + * If the given key is a Resolvable function, + * it is resolved from the Container on the fly + */ + make(key: unknown, ...params: unknown[]): any; + /** + * Resolves a Binding reference from the Container + */ + get InstanceType>(key: T): InstanceType; + get(key: T): T extends new () => infer I ? I : unknown; + /** + * Set an object or primitive value into the Container + * + * When resolved, it returns the same value and reference + */ + instance(key: Key, value: unknown): void; + /** + * Bind a Resolvable function into the Container. + * + * The function is resolved once. Its result is stored + * and returned on subsequent calls to `get` or `make`. + */ + singleton(key: Key, resolvable: unknown): this; + private getInstance; + /** + * Apply an alias to an already-bound binding + */ + alias(alias: unknown, key: Key | Resolvable): void; + private getAlias; +} diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..3888e89 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,10 @@ +export { default as Container } from './Container'; +export declare type Key = unknown; +export declare type Injectable = { + injects: Array>; +}; +export declare type Resolvable = { + (...params: unknown[]): T; +} & { + new (...params: unknown[]): T; +} & T & Injectable; diff --git a/package.json b/package.json index 820b318..400b19e 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ }, "module": "dist/binder.module.js", "unpkg": "dist/binder.umd.js", - "types": "dist/index.d.ts", + "types": "dist/types", "sideEffects": false, "files": [ "dist" @@ -26,7 +26,7 @@ "node": ">=10.13.0" }, "scripts": { - "lint": "eslint . --ext .js,.ts --cache --fix", + "lint": "eslint src/**/*.ts --cache --fix", "prettier:fix": "prettier --write src", "build": "microbundle src/index.ts", "test:ci": "jest", @@ -67,7 +67,7 @@ }, "homepage": "https://github.com/Frondor/binder#readme", "lint-staged": { - "*.{js,ts}": [ + "src/**/*.{js,ts}": [ "npm run prettier:fix", "npm run lint" ] diff --git a/src/Binding.ts b/src/Binding.ts index 17338fc..a2fde98 100644 --- a/src/Binding.ts +++ b/src/Binding.ts @@ -1,5 +1,4 @@ -import { Container } from '.' -import { Resolvable } from './types.d' +import type { Container, Resolvable } from '.' interface BindingContract { resolvable: Resolvable diff --git a/src/Container.ts b/src/Container.ts index 68aea99..b3af79e 100644 --- a/src/Container.ts +++ b/src/Container.ts @@ -1,6 +1,6 @@ /* eslint-disable no-dupe-class-members */ import Binding from './Binding' -import { Key, Resolvable } from './types.d' +import type { Key, Resolvable } from '.' export default class Container { protected bindings = new Map() diff --git a/src/index.ts b/src/index.ts index 6b1e163..5552a93 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1 +1,15 @@ +/* eslint-disable no-use-before-define */ export { default as Container } from './Container' + +export const a = 2 + +export type Key = unknown + +export type Injectable = { + injects: Array> +} + +export type Resolvable = { (...params: unknown[]): T } & { + new (...params: unknown[]): T +} & T & + Injectable diff --git a/src/types.d.ts b/src/types.d.ts deleted file mode 100644 index 9fc1f5a..0000000 --- a/src/types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable no-use-before-define */ -export type Key = unknown - -export type Injectable = { - injects: Array> -} - -export type Resolvable = { (...params: unknown[]): T } & { - new (...params: unknown[]): T -} & T & - Injectable