Ghost/ghost/api-framework/index.js
Daniel Lockyer c298db912c Added JSDoc types for API controllers
- this adds a simple set of types to the @tryghost/api-framework
  package that should describe all of the keys available on a
  controller, and then rolls it out to all API controllers
- unfortunately, due to https://github.com/microsoft/TypeScript/issues/47107, we have
  to split apart `module.exports` into a variable assignment in order for type-checking
  to be done
- the main benefit of this is that `frame` is now typed, and editors understand what keys
  are available, so intellisense works properly
2024-05-07 10:49:44 +02:00

28 lines
911 B
JavaScript

/** @typedef {object} PermissionsObject */
/** @typedef {boolean} PermissionsBoolean */
/** @typedef {number} StatusCodeNumber */
/** @typedef {(result: any) => number} StatusCodeFunction */
/** @typedef {object} ValidationObject */
/**
* @typedef {object} ControllerMethod
* @property {object} headers
* @property {PermissionsBoolean | PermissionsObject} permissions
* @property {string[]} [options]
* @property {ValidationObject} [validation]
* @property {string[]} [data]
* @property {StatusCodeFunction | StatusCodeNumber} [statusCode]
* @property {object} [response]
* @property {function} [cache]
* @property {(frame: import('./lib/Frame')) => object} [generateCacheKeyData]
* @property {(frame: import('./lib/Frame')) => any} query
*/
/**
* @typedef {Record<string, ControllerMethod | string> & Record<'docName', string>} Controller
*/
module.exports = require('./lib/api-framework');