joi-to-json
Advanced tools
Comparing version 3.1.0 to 3.1.1
@@ -0,1 +1,5 @@ | ||
### 3.1.1 | ||
- Fix Typescript definition. | ||
### 3.1.0 | ||
@@ -2,0 +6,0 @@ |
import Joi from 'joi-17'; | ||
declare module Joi2Json { | ||
/** | ||
* @type {string} | ||
*/ | ||
export type Mode = 'json' | 'open-api' | 'json-draft-2019-09' | 'json-draft-04'; | ||
/** | ||
* @type {string} | ||
*/ | ||
export type Mode = 'json' | 'open-api' | 'json-draft-2019-09' | 'json-draft-04'; | ||
/** | ||
* @param {string} joi - A Joi schema. | ||
* @param {string} [mode='json'] - json / open-api / json-draft-2019-09 / json-draft-04 | ||
* @param {Record} [sharedSchema={}] - Passed-in object storing shared schemas | ||
* @returns {any} Converted JSON schema object. | ||
*/ | ||
export function parse(joi: Joi.Schema, mode?: Mode, sharedSchema?: Record<string, any>): any; | ||
} | ||
/** | ||
* The parser function modifies the schema in-place. | ||
* @param {any} schema - JSON schema object | ||
* @param {any} dependency - JOI dependency object | ||
*/ | ||
export type LogicalOpParserFn = (schema, dependency) => void; | ||
export default Joi2Json.parse; | ||
export interface LogicalOpParserOpts { | ||
and?: LogicalOpParserFn, | ||
nand?: LogicalOpParserFn, | ||
or?: LogicalOpParserFn, | ||
xor?: LogicalOpParserFn, | ||
oxor?: LogicalOpParserFn, | ||
with?: LogicalOpParserFn, | ||
without?: LogicalOpParserFn | ||
}; | ||
export type ParserOptions = false | { logicalOpParser?: LogicalOpParserOpts }; | ||
/** | ||
* @param {Joi.Schema} joi - A Joi schema. | ||
* @param {string} [mode='json'] - json / open-api / json-draft-2019-09 / json-draft-04 | ||
* @param {Record} [sharedSchema={}] - Passed-in object storing shared schemas | ||
* @param {ParserOptions} [parserOptions={}] - Passed-in options for parser | ||
* @returns {any} Converted JSON schema object. | ||
*/ | ||
export function parse(joi: typeof Joi.Schema, mode?: Mode, sharedSchema?: Record<string, any>, parserOptions?: ParserOptions): any; | ||
export default parse; |
{ | ||
"name": "joi-to-json", | ||
"version": "3.1.0", | ||
"version": "3.1.1", | ||
"description": "joi to JSON / OpenAPI Schema Converter", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -245,2 +245,6 @@ # joi-to-json | ||
## Special Joi Operator Support | ||
* [Logical Relation Operator](./docs/logical_rel_support.md) | ||
## Browser support | ||
@@ -253,6 +257,18 @@ For generating JSON Schema in a browser you should use below import syntax for `joi` library in order to work because the `joi` browser minimized build does not have `describe` api which the `joi-to-json` relies on. | ||
## Special Joi Operator Support | ||
## TypeScript support | ||
* [Logical Relation Operator](./docs/logical_rel_support.md) | ||
```typescript | ||
import joi from 'joi'; | ||
import * as Joi2Json from 'joi-to-json'; | ||
import parse from 'joi-to-json'; | ||
const logicalOpParser: Joi2Json.LogicalOpParserOpts = { | ||
with: function (a) {} | ||
}; | ||
parse(joi.string()); // Default call | ||
parse(joi.string(), 'json', {}, false); // Completely disable Logical Relation Operator | ||
parse(joi.string(), 'open-api', {}, { logicalOpParser }); // Partially override Logical Relation Operator | ||
``` | ||
## Test | ||
@@ -259,0 +275,0 @@ |
48972
1031
293