Skip to content

Latest commit

 

History

History
206 lines (138 loc) · 5.21 KB

readme.md

File metadata and controls

206 lines (138 loc) · 5.21 KB

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

npm install --save jaid-core@^8.2.0

jaid-core on Yarn

yarn add jaid-core@^8.2.0

@jaid/jaid-core on GitHub Packages
(if configured properly)

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<string, {default: Model, schema: 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:

import {JaidCorePlugin} from "jaid-core"

export default class Plugin extends JaidCorePlugin {

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

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

}

Sequelize model example:

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):

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<string, import("sequelize").Model>} 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:

git clone git@github.com:jaid/jaid-core.git
cd jaid-core
npm install

Testing:

npm run test:dev

Testing in production environment:

npm run test

License

MIT License
Copyright © 2020, Jaid <jaid.jsx@gmail.com> (https://github.com/jaid)