From f4ddacb85a0b1a8e0d5b2b28ce2e8d94f150f7ba Mon Sep 17 00:00:00 2001 From: notaphplover Date: Sun, 2 Feb 2025 11:06:57 +0100 Subject: [PATCH] Bump version (#1720) * docs: update changelog * docs: remove old docs from the readme in favor of new docs link * chore: bump version --- CHANGELOG.md | 5 + README.md | 233 +--------------------------------------------- package-lock.json | 4 +- package.json | 2 +- 4 files changed, 11 insertions(+), 233 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71a1614b9..82c63ab45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to this project from 5.0.0 forward will be documented in thi The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [7.0.0-alpha.3] + +### Changed +- Updated `BindToFluentSyntax` with `.toResolvedValue`. + ## [7.0.0-alpha.2] ### Changed diff --git a/README.md b/README.md index e34a123c8..d54245821 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ InversifyJS has been developed with 4 main goals: 3. Add as little runtime overhead as possible. -4. Provide a [state of the art development experience](https://github.com/inversify/InversifyJS/blob/master/wiki/ecosystem.md). +4. Provide a state of the art development experience. ## Testimonies @@ -56,235 +56,8 @@ InversifyJS has been developed with 4 main goals: [](https://opensource.microsoft.com/)[](https://code.facebook.com/projects/1021334114569758/nuclide/)[](https://aws.github.io/aws-amplify/)[](https://www.plainconcepts.com/)[](https://api.slack.com/)[](http://acia.aon.com/index.php/home/) [](https://www.lonelyplanet.com/) [](https://jincor.com/) [](https://www.web-computing.de/) [](https://dcos.io/) [](https://typefox.io/) [](https://code4.ro/) [](http://www.baidu.com/) [](https://www.imdada.cn/) [](https://www.ato.gov.au/) [](https://www.kaneoh.com/) [](https://particl.io/) [](https://slackmap.com/) [](https://www.go1.com/) [](http://www.stellwagengroup.com/stellwagen-technology/) [](https://www.edrlab.org/) [](https://www.goodgamestudios.com/) [](https://freshfox.at/) [](https://schubergphilis.com/) -## πŸ“¦ Installation - -You can get the latest release and the type definitions using your preferred package manager: - -```sh -> npm install inversify reflect-metadata --save -> yarn add inversify reflect-metadata -> pnpm add inversify reflect-metadata -``` - -`reflect-metadata` will be automatically imported by inversify. - -The InversifyJS type definitions are included in the inversify npm package. - -> :warning: **Important!** InversifyJS requires TypeScript >= 4.4 and the `experimentalDecorators`, `emitDecoratorMetadata`, compilation options in your `tsconfig.json` file. - -```json -{ - "compilerOptions": { - "experimentalDecorators": true, - "emitDecoratorMetadata": true - } -} -``` - -InversifyJS requires a modern JavaScript engine with support for: - -- [Reflect metadata](https://rbuckton.github.io/reflect-metadata/) -- [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) -- [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) (Only required if using [provider injection](https://github.com/inversify/InversifyJS/blob/master/wiki/provider_injection.md)) -- [Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) (Only required if using [activation handlers](https://github.com/inversify/InversifyJS/blob/master/wiki/activation_handler.md)) - -If your environment doesn't support one of these you will need to import a shim or polyfill. - -Check out the [Environment support and polyfills](https://github.com/inversify/InversifyJS/blob/master/wiki/environment.md) -page in the wiki and the [Basic example](https://github.com/inversify/inversify-basic-example) to learn more. - -## The Basics -Let’s take a look at the basic usage and APIs of InversifyJS with TypeScript: - -### Step 1: Declare your interfaces and types - -Our goal is to write code that adheres to the [dependency inversion principle](https://en.wikipedia.org/wiki/Dependency_inversion_principle). -This means that we should "depend upon Abstractions and do not depend upon concretions". -Let's start by declaring some interfaces (abstractions). - -```ts -// file interfaces.ts - -export interface Warrior { - fight(): string; - sneak(): string; -} - -export interface Weapon { - hit(): string; -} - -export interface ThrowableWeapon { - throw(): string; -} -``` - -InversifyJS needs to use the type as identifiers at runtime. We use symbols as identifiers but you can also use classes and or string literals. - -PLEASE MAKE SURE TO PLACE THIS TYPES DECLARATION IN A SEPARATE FILE. (see bug #1455) - -```ts -// file types.ts - -const TYPES = { - Warrior: Symbol.for("Warrior"), - Weapon: Symbol.for("Weapon"), - ThrowableWeapon: Symbol.for("ThrowableWeapon") -}; - -export { TYPES }; - -``` - -> **Note**: It is recommended to use Symbols but InversifyJS also support the usage of Classes and string literals (please refer to the features section to learn more). - -### Step 2: Declare dependencies using the `@injectable` & `@inject` decorators -Let's continue by declaring some classes (concretions). The classes are implementations of the interfaces that we just declared. We will annotate them with the `@injectable` decorator. - -When a class has a dependency on an interface we also need to use the `@inject` decorator to define an identifier for the interface that will be available at runtime. In this case we will use the Symbols `Symbol.for("Weapon")` and `Symbol.for("ThrowableWeapon")` as runtime identifiers. - -```ts -// file entities.ts - -import { injectable, inject } from "inversify"; -import { Weapon, ThrowableWeapon, Warrior } from "./interfaces"; -import { TYPES } from "./types"; - -@injectable() -class Katana implements Weapon { - public hit() { - return "cut!"; - } -} - -@injectable() -class Shuriken implements ThrowableWeapon { - public throw() { - return "hit!"; - } -} - -@injectable() -class Ninja implements Warrior { - - private _katana: Weapon; - private _shuriken: ThrowableWeapon; - - constructor( - @inject(TYPES.Weapon) katana: Weapon, - @inject(TYPES.ThrowableWeapon) shuriken: ThrowableWeapon - ) { - this._katana = katana; - this._shuriken = shuriken; - } - - public fight() { return this._katana.hit(); } - public sneak() { return this._shuriken.throw(); } - -} - -export { Ninja, Katana, Shuriken }; -``` - -If you prefer it you can use property injection instead of constructor injection so you don't have to declare the class constructor: - -```ts -@injectable() -class Ninja implements Warrior { - @inject(TYPES.Weapon) private _katana: Weapon; - @inject(TYPES.ThrowableWeapon) private _shuriken: ThrowableWeapon; - public fight() { return this._katana.hit(); } - public sneak() { return this._shuriken.throw(); } -} -``` - -### Step 3: Create and configure a Container -We recommend to do this in a file named `inversify.config.ts`. This is the only place in which there is some coupling. -In the rest of your application your classes should be free of references to other classes. -```ts -// file inversify.config.ts - -import { Container } from "inversify"; -import { TYPES } from "./types"; -import { Warrior, Weapon, ThrowableWeapon } from "./interfaces"; -import { Ninja, Katana, Shuriken } from "./entities"; - -const myContainer = new Container(); -myContainer.bind(TYPES.Warrior).to(Ninja); -myContainer.bind(TYPES.Weapon).to(Katana); -myContainer.bind(TYPES.ThrowableWeapon).to(Shuriken); - -export { myContainer }; -``` - -### Step 4: Resolve dependencies -You can use the method `get` from the `Container` class to resolve a dependency. -Remember that you should do this only in your [composition root](http://blog.ploeh.dk/2011/07/28/CompositionRoot/) -to avoid the [service locator anti-pattern](http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/). - -```ts -import { myContainer } from "./inversify.config"; -import { TYPES } from "./types"; -import { Warrior } from "./interfaces"; - -const ninja = myContainer.get(TYPES.Warrior); - -expect(ninja.fight()).eql("cut!"); // true -expect(ninja.sneak()).eql("hit!"); // true -``` - -As we can see the `Katana` and `Shuriken` were successfully resolved and injected into `Ninja`. - -InversifyJS supports ES5 and ES6 and can work without TypeScript. -Head to the [**JavaScript example**](https://github.com/inversify/InversifyJS/blob/master/wiki/basic_js_example.md) to learn more! - -## πŸš€ The InversifyJS Features and API -Let's take a look to the InversifyJS features! - -- [Support for classes](https://github.com/inversify/InversifyJS/blob/master/wiki/classes_as_id.md) -- [Support for Symbols](https://github.com/inversify/InversifyJS/blob/master/wiki/symbols_as_id.md) -- [Container API](https://github.com/inversify/InversifyJS/blob/master/wiki/container_api.md) -- [Declaring container modules](https://github.com/inversify/InversifyJS/blob/master/wiki/container_modules.md) -- [Container snapshots](https://github.com/inversify/InversifyJS/blob/master/wiki/container_snapshots.md) -- [Controlling the scope of the dependencies](https://github.com/inversify/InversifyJS/blob/master/wiki/scope.md) -- [Declaring optional dependencies](https://github.com/inversify/InversifyJS/blob/master/wiki/optional_dependencies.md) -- [Injecting a constant or dynamic value](https://github.com/inversify/InversifyJS/blob/master/wiki/value_injection.md) -- [Injecting a class constructor](https://github.com/inversify/InversifyJS/blob/master/wiki/constructor_injection.md) -- [Injecting a Factory](https://github.com/inversify/InversifyJS/blob/master/wiki/factory_injection.md) -- [Auto factory](https://github.com/inversify/InversifyJS/blob/master/wiki/auto_factory.md) -- [Auto named factory](https://github.com/inversify/InversifyJS/blob/master/wiki/auto_named_factory.md) -- [Injecting a Provider (asynchronous Factory)](https://github.com/inversify/InversifyJS/blob/master/wiki/provider_injection.md) -- [Activation handler](https://github.com/inversify/InversifyJS/blob/master/wiki/activation_handler.md) -- [Deactivation handler](https://github.com/inversify/InversifyJS/blob/master/wiki/deactivation_handler.md) -- [Post Construct decorator](https://github.com/inversify/InversifyJS/blob/master/wiki/post_construct.md) -- [Middleware](https://github.com/inversify/InversifyJS/blob/master/wiki/middleware.md) -- [Multi-injection](https://github.com/inversify/InversifyJS/blob/master/wiki/multi_injection.md) -- [Tagged bindings](https://github.com/inversify/InversifyJS/blob/master/wiki/tagged_bindings.md) -- [Create your own tag decorators](https://github.com/inversify/InversifyJS/blob/master/wiki/custom_tag_decorators.md) -- [Named bindings](https://github.com/inversify/InversifyJS/blob/master/wiki/named_bindings.md) -- [Default target](https://github.com/inversify/InversifyJS/blob/master/wiki/default_targets.md) -- [Support for hierarchical DI systems](https://github.com/inversify/InversifyJS/blob/master/wiki/hierarchical_di.md) -- [Contextual bindings & @targetName](https://github.com/inversify/InversifyJS/blob/master/wiki/contextual_bindings.md) -- [Property injection](https://github.com/inversify/InversifyJS/blob/master/wiki/property_injection.md) -- [Circular dependencies](https://github.com/inversify/InversifyJS/blob/master/wiki/circular_dependencies.md) -- [Inheritance](https://github.com/inversify/InversifyJS/blob/master/wiki/inheritance.md) - -Please refer to the [wiki](https://github.com/inversify/InversifyJS/blob/master/wiki/readme.md) for additional details. - -## 🧩 Ecosystem -In order to provide a state of the art development experience we are also working on: - -- [Middleware extensions](https://github.com/inversify/InversifyJS/blob/master/wiki/ecosystem.md#extensions). -- [Development tools](https://github.com/inversify/InversifyJS/blob/master/wiki/ecosystem.md#development-tools). -- [Examples](https://github.com/inversify/InversifyJS/blob/master/wiki/ecosystem.md#examples). - -Please refer to the [ecosystem wiki page](https://github.com/inversify/InversifyJS/blob/master/wiki/ecosystem.md) to learn more. - -## Support -If you are experience any kind of issues we will be happy to help. You can report an issue using the [issues page](https://github.com/inversify/InversifyJS/issues) or the [chat](https://gitter.im/inversify/InversifyJS). You can also ask questions at [Stack overflow](http://stackoverflow.com/tags/inversifyjs) using the `inversifyjs` tag. - -If you want to share your thoughts with the development team or join us you will be able to do so using the [official the mailing list](https://groups.google.com/forum/#!forum/inversifyjs). You can check out the -[wiki](https://github.com/inversify/InversifyJS/blob/master/wiki/readme.md) to learn more about InversifyJS internals. +## πŸ“• Documentation +Documentation is available at https://inversify.io ## Acknowledgements diff --git a/package-lock.json b/package-lock.json index 1f8c85d2c..55e190fe8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "inversify", - "version": "7.0.0-alpha.2", + "version": "7.0.0-alpha.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "inversify", - "version": "7.0.0-alpha.2", + "version": "7.0.0-alpha.3", "license": "MIT", "dependencies": { "@inversifyjs/common": "1.5.0", diff --git a/package.json b/package.json index 9eee0528a..7911476d3 100644 --- a/package.json +++ b/package.json @@ -77,5 +77,5 @@ "test:cjs": "nyc --reporter=lcov mocha lib/cjs/test/*.test.js lib/cjs/test/**/*.test.js --reporter spec" }, "sideEffects": false, - "version": "7.0.0-alpha.2" + "version": "7.0.0-alpha.3" }