# yorjs

> [![NPM version](https://img.shields.io/npm/v/@yorjs/core)](https://www.npmjs.com/package/@yorjs/core)

Latest version **1.0.0** (published 2022-09-27) · ISC license · 0 weekly downloads

## Install

```sh
npm install yorjs
pnpm add yorjs
yarn add yorjs
bun add yorjs
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2022-09-27 |
| First published | 2022-09-27 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 80.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | tamagooooo |

## Links

- npm: https://www.npmjs.com/package/yorjs
- npm.io page: https://npm.io/package/yorjs

## Recent versions

- 1.0.0 (latest) — 2022-09-27

## README

# Yorjs

[![NPM version](https://img.shields.io/npm/v/@yorjs/core)](https://www.npmjs.com/package/@yorjs/core)

A DI framework for frontend.

## Installation

import package

```
# use npm
npm install @yorjs/core

# use pnpm
pnpm add @yorjs/core
```

import module

```
import { } from '@yorjs/core'
```

## Usage

### `defineProvider`

Define a injectable module.

#### Basic Usage

```
import { defineProvider } from '@yorjs/core'

interface Provider {
  do: () => void
}

const providerImpl = defineProvider<Provider>(() => ({
  do() { return 'done' }
}))
```

### `defineController`

Define a controller for view.

#### Basic Usage

```
import { defineController } from '@yorjs/core'

interface Controller {
  message: string
  doSth: () => void
}

const controllerImpl = defineController<Controller>((provider: Provider) => {
  const message = ''

  const doSth = () => {
    message = provider.do()
  }

  return { message, doSth }
})
```

### `defineModule`

Define a module for controller dependencies relationship.

#### Basic Usage

```
import { defineModule } from '@yorjs/core'

const module = defineModule({
  controller: controllerImpl.dependencies(providerImpl),
  providers: [providerImpl]
})
```

### `useModule`

Use a module implement in view.

#### Basic Usage

```
import { useModule } from '@yorjs/core'

const { message } = useModule(module)
```

### `defineGuard`

Define a guard for a controller or provider.

Basic Usage

```
import { defineGuard } from '@yorjs/core'

export const randomGuard = defineGuard(() => {
  return Math.random() <= 0.5
}).error((context) => {
  // ...
})
```

Binding guards

```
import { providerImpl } from '../'

providerImpl.useGuards(randomGuard, otherGuard)
```

### `defineInterceptor`

Define a interceptor for a controller or provider.

Basic Usage

```
import { defineInterceptor } from '@yorjs/core'

export const loggingInterceptor = defineInterceptor((context) => {
  // before...

  return () => {
    // after...
  }
})
```

Binding interceptors

```
import { providerImpl } from '../'

providerImpl.useGuards(loggingInterceptor, otherInterceptor)
```

## License
[MIT](./LICENSE)

---
_Source: https://npm.io/package/yorjs · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
