Skip to content

Commit

Permalink
update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
molszanski committed Oct 8, 2022
1 parent 5e5be60 commit 26840dc
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 24 deletions.
4 changes: 2 additions & 2 deletions examples/node-cli/src/server.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import _ from "lodash"
import { createContainer, createContainer } from "iti"
import { createContainer } from "iti"

// Step 1: Your application logic stays clean
class Oven {
Expand All @@ -19,7 +19,7 @@ let root = createContainer().add({
})
root.get("oven")

// Step 3: Add a usefull async provider / container
// Step 3: Add a useful async provider / container
const kitchenContainer = async ({ oven, userManual }) => {
await oven.preheat()
return {
Expand Down
41 changes: 20 additions & 21 deletions iti/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@

# Iti

<h4>1kB Dependency Injection Library for Typescript and React with a unique support of <strong>async flow</strong></h4>
<h4>~1kB Dependency Injection Library for Typescript and React with a unique <strong>async flow</strong> support</h4>

<p align="center">
<a href="https://github.com/molszanski/iti/actions?query=branch%3Amaster"><img src="https://github.com/molszanski/iti/actions/workflows/lib-test.yml/badge.svg" alt="CI Status"></a>
<a href="https://www.npmjs.org/package/iti"><img src="https://img.shields.io/npm/v/iti.svg" alt="npm version"></a>
<a href="https://unpkg.com/iti/dist/iti.modern.js"><img src="https://img.badgesize.io/https://unpkg.com/iti/dist/iti.modern.js?compression=gzip" alt="gzip"></a>
<!-- Manually checked at b1683832 on OCT 8 2022-->
<a href="https://dashboard.stryker-mutator.io/reports/github.com/molszanski/iti/master"><img src="https://img.shields.io/badge/coverage-98.6%25-brightgreen" alt="Coverage"></a>
<a href="https://dashboard.stryker-mutator.io/reports/github.com/molszanski/iti/master"><img src="https://img.shields.io/endpoint?style=flat&url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.51.al%2Fmolszanski%2Fiti%2Fmaster" alt="Mutation Score"></a>
</p>

Expand Down Expand Up @@ -330,35 +332,32 @@ Plainly removes token and value from an instance

### `dispose`

Related toa a conversation with @moltar
https://github.com/molszanski/iti/issues/21
Please check a full [documentation](https://itijs.org/docs/api#disposing) on disposing.

Short version:

```ts
class DatabaseConnection {
disconnect(): Promise<void> {
// ... disconnect
}
connect(): Promise<void> {}
disconnect(): Promise<void> {}
}

let node = createContainer()
.add({
db: () => new DatabaseConnection(),
})
const container = createContainer()
.add(() => ({
dbConnection: async () => {
const db = new DatabaseConnection()
await db.connect()
return db
},
}))
.addDisposer({
// Note that for convenience we provide an instance of the cached value as an argument
db: (db) => db.disconnect(),
// ↓ `db` is a resolved value of a `dbConnection` token. Pretty handy
dbConnection: (db) => db.disconnect(),
})

// We can dispose nodes individually
await node.dispose("db")

// dispose all resources
await node.disposeAll()
const db = await container.get("dbConnection")
await container.disposeAll()
```

please note that `.dispose('token')` doesn't dispose child elements. This would be risky to implement due to reasons explained in
[dispose-graph.ts.api.spec.ts](./iti/tests/dispose-graph.ts.api.spec.ts.)

# Alternatives

## No async support
Expand Down
2 changes: 1 addition & 1 deletion website/docs/1.intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ _This library doesn't try be scientifically correct. I just want to go home earl

- **strongly typed:** has great IDE autocomplete and compile time check. Without any [manual type casting](https://github.com/inversify/InversifyJS/blob/master/wiki/container_api.md#containergettserviceidentifier-interfacesserviceidentifiert-t)
- **non-invasive:** does not require imported `@decorators` or framework `extends` in your application business logic
- **lazy:** initialises your app modules and containers on demand
- **lazy:** initializes your app modules and containers on demand
- **split chunks:** enables **[dynamic imports](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#dynamic_imports)** via a [one liner](#dynamic-imports) thanks to a fully async core
- **React friendly:** has useful **[React](https://github.com/molszanski/iti/tree/master/iti-react)** bindings to help you separate application business logic and a React view layer
- **starter friendly:** works with starters like [Create React App](https://create-React-app.dev/) or [Next.js](https://nextjs.org/docs/getting-started) unlike existing libraries
Expand Down

0 comments on commit 26840dc

Please sign in to comment.