Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jaid/jaid-core

Combines jaid-logger, essential-config, got, koa and sequelize.
https://github.com/jaid/jaid-core

core framework jaid-core jaid-logger javascript javascript-framework javascript-frameworks js-framework koa lib library orm personal sequelize util utility winston

Last synced: 22 days ago
JSON representation

Combines jaid-logger, essential-config, got, koa and sequelize.

Awesome Lists containing this project

README

        

# jaid-core

License Sponsor jaid-core
Build status Commits since v8.2.0 Last commit Issues
Latest version on npm Dependents Downloads

**Combines jaid-logger, essential-config, got, koa and sequelize.**

## Installation

jaid-core on npm

```bash
npm install --save jaid-core@^8.2.0
```

jaid-core on Yarn

```bash
yarn add jaid-core@^8.2.0
```

@jaid/jaid-core on GitHub Packages
(if [configured properly](https://help.github.com/en/github/managing-packages-with-github-packages/configuring-npm-for-use-with-github-packages))

```bash
npm install --save @jaid/jaid-core@^8.2.0
```

## Usage

### Plugins

These optional plugin properties may be called by `jaid-core`:

Name|Parameters|Return value
---|---|---
`constructor`|`JaidCore core`
`setCoreReference`|`JaidCore core`
`getConfigSetup`||`Object additionalConfigSetup`
`preInit`||`boolean shouldRemovePlugin`
`handleConfig`|`Object config`|`boolean shouldRemovePlugin`
`handleKoa`|`Koa koa`
`handleGot`|`Got got`
`collectModels`||`Object`
`init`||`boolean shouldRemovePlugin`
`postInit`||`boolean shouldRemovePlugin`
`ready`|
`handleLog`|`string level`, `string[] fragments`|

### JaidCorePlugin

Plugins can inherit from any superclass. When they inherit from JaidCorePlugin, some fields for the instance are automatically set:

- `.core`
- `.logger` (has `.info`, `.warn`, `.error`, `.debug`)
- `.config` (Object of the loaded config)

Plugin example:

```js
import {JaidCorePlugin} from "jaid-core"

export default class Plugin extends JaidCorePlugin {

constructor(options = {}) {
super()
this.options = {
...options
}
}

ready() {
this.log("Hello!")
}

}
```

Sequelize model example:

```js
import Sequelize from "sequelize"

class PluginModel extends Sequelize.Model {

/**
* @return {string}
*/
getTitle() {
return this.title
}

}

/**
* @type {import("sequelize").ModelAttributes}
*/
export const schema = {
title: {
type: Sequelize.STRING,
allowNull: false
}
}

export default PluginModel
```

Advanced Sequelize model (dynamically generated):

```js
import Sequelize from "sequelize"

/**
* @param {typeof import("sequelize").Model} Model
* @param {import("jaid-core").ModelDefinitionContext} context
* @return {{default, schema}}
*/
export default (Model, {models}) => {

class AdvancedModel extends Model {

/**
* @param {Object} models
*/
static associate() {
AdvancedModel.belongsTo(models.AnotherModel, {
foreignKey: {
allowNull: false,
},
})
}

/**
* @return {string}
*/
getTitle() {
return this.title
}

}

/**
* @type {import("sequelize").ModelAttributes}
*/
const schema = {
title: {
type: Sequelize.STRING,
allowNull: false
}
}

return {
default: AdvancedModel,
schema,
}

}
```

## Development

Setting up:
```bash
git clone [email protected]:jaid/jaid-core.git
cd jaid-core
npm install
```
Testing:
```bash
npm run test:dev
```
Testing in production environment:
```bash
npm run test
```

## License
[MIT License](https://raw.githubusercontent.com/jaid/jaid-core/master/license.txt)
Copyright © 2020, Jaid \ (https://github.com/jaid)