Reaction Api Core @types
This package contains type definitions for Reaction API Core. Use for help you to make plugins and to check types of common used Reaction API params types like, Context
, Collection
, ReactionAPICore
and others. You DON'T need to use Typescript to get these features. We will use jsdocs and VSCode for implement types in your .js
code.
Installation
npm install --save -D @carimflex/reaction-api-types
How to use (VSCode)?
- Enable type checking in VSCode:
"javascript.implicitProjectConfig.checkJs": true
. - Import this package using jsdoc comment (See Examples)
- Enjoy!!!
Examples
1. In Register function
You can import ReactionApiCore
from this package to check typing in API definition
/** @typedef {import("@carimflex/reaction-api-types").ReactionApiCore} ReactionApiCore */
/**
* @param {ReactionApiCore} app Reaction Api app
* @returns {Promise<void>} Returns a promise that resolves in void
*/
export default async function register(app) {}
2. In Query/Mutation function
You can import Context
to know all objects that have inside context to help you check and make your code.
/** @typedef @typedef {import("@carimflex/reaction-api-types").Context} Context */
/**
* Add a example
* @param {Context} context - an object containing the per-request state
* @param {Object} input - mutation input
* @returns {Promise<void>} ...
*/
export default async function addExample(context, input) {}
3. Extending types and insert Schemas in Collection
3.1 Create a schema type
Create the schema. I recommend to create in simpleSchemas.js
file, but you can create in any file.
/**
* @typedef Example
* @property {ObjectID} [_id] ID
* @property {String} shopId Shop Id
* @property {String} displayName display name
*/
type.ts
file
3.1 Create Import you schema and reaction api types. Extend Context Files and import Collection from "mongodb".
import { Context as ReactionContext } from "@carimflex/reaction-api-types";
import { Collection } from "mongodb";
import { Example } from "./simpleSchemas";
export interface Context extends ReactionContext {
collections: {
Examples: Collection<Example>;
};
}
type.ts
in other files
3.2 Import Since you created a schema, you can import your new Context
(with the schema) and the schema itself for use in params. Example:
/** @typedef {import("../types").Context} Context */
/** @typedef {import("../simpleSchemas").Example} Example */
/**
* Add a example
* @param {Context} context - an object containing the per-request state
* @param {Example} input - mutation input
* @returns {Promise<Example>} ...
*/
export default async function addExample(context, input) {}