index.ts 799 B

1234567891011121314151617181920212223242526272829303132
  1. import type Ajv from "ajv"
  2. import type {Plugin} from "ajv"
  3. import plugins from "./keywords"
  4. export {AjvKeywordsError} from "./definitions"
  5. const ajvKeywords: Plugin<string | string[]> = (ajv: Ajv, keyword?: string | string[]): Ajv => {
  6. if (Array.isArray(keyword)) {
  7. for (const k of keyword) get(k)(ajv)
  8. return ajv
  9. }
  10. if (keyword) {
  11. get(keyword)(ajv)
  12. return ajv
  13. }
  14. for (keyword in plugins) get(keyword)(ajv)
  15. return ajv
  16. }
  17. ajvKeywords.get = get
  18. function get(keyword: string): Plugin<any> {
  19. const defFunc = plugins[keyword]
  20. if (!defFunc) throw new Error("Unknown keyword " + keyword)
  21. return defFunc
  22. }
  23. export default ajvKeywords
  24. module.exports = ajvKeywords
  25. // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
  26. module.exports.default = ajvKeywords