jaid-core
TypeScript icon, indicating that this package has built-in type declarations

8.1.0 • Public • Published

jaid-core

License Sponsor jaid-core
Build status Commits since v8.1.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.1.0

jaid-core on Yarn

yarn add jaid-core@^8.1.0

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

npm install --save @jaid/jaid-core@^8.1.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)

Package Sidebar

Install

npm i jaid-core

Weekly Downloads

16

Version

8.1.0

License

none

Unpacked Size

36.7 kB

Total Files

6

Last publish

Collaborators

  • jaid