From 0f5febb90ad8f9064ca9db93b054b274eb9a1b49 Mon Sep 17 00:00:00 2001 From: Uzlopak Date: Mon, 5 Dec 2022 01:19:34 +0100 Subject: [PATCH] nodenext compatibility (#87) --- index.js | 10 ++--- types/index.d.ts | 95 ++++++++++++++++++++++++++---------------------- 2 files changed, 57 insertions(+), 48 deletions(-) diff --git a/index.js b/index.js index bf55ca7..99113a1 100755 --- a/index.js +++ b/index.js @@ -105,8 +105,8 @@ function safeParse (text, reviver) { } } -module.exports = { - parse, - scan: filter, - safeParse -} +module.exports = parse +module.exports.default = parse +module.exports.parse = parse +module.exports.safeParse = safeParse +module.exports.scan = filter diff --git a/types/index.d.ts b/types/index.d.ts index fee2eb9..82e1dfe 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,48 +1,57 @@ -export type ParseOptions = { +type Parse = typeof parse + +declare namespace parse { + export type ParseOptions = { + /** + * What to do when a `__proto__` key is found. + * - `'error'` - throw a `SyntaxError` when a `__proto__` key is found. This is the default value. + * - `'remove'` - deletes any `__proto__` keys from the result object. + * - `'ignore'` - skips all validation (same as calling `JSON.parse()` directly). + */ + protoAction?: 'error' | 'remove' | 'ignore'; + /** + * What to do when a `constructor` key is found. + * - `'error'` - throw a `SyntaxError` when a `constructor.prototype` key is found. This is the default value. + * - `'remove'` - deletes any `constructor` keys from the result object. + * - `'ignore'` - skips all validation (same as calling `JSON.parse()` directly). + */ + constructorAction?: 'error' | 'remove' | 'ignore'; + } + + export type ScanOptions = ParseOptions + + export type Reviver = (this: any, key: string, value: any) => any + + /** + * Parses a given JSON-formatted text into an object. + * + * @param text The JSON text string. + * @param reviver The `JSON.parse()` optional `reviver` argument. + * @param options Optional configuration object. + * @returns The parsed object. + */ + export const parse: Parse + /** - * What to do when a `__proto__` key is found. - * - `'error'` - throw a `SyntaxError` when a `__proto__` key is found. This is the default value. - * - `'remove'` - deletes any `__proto__` keys from the result object. - * - `'ignore'` - skips all validation (same as calling `JSON.parse()` directly). - */ - protoAction?: 'error' | 'remove' | 'ignore'; + * Parses a given JSON-formatted text into an object. + * + * @param text The JSON text string. + * @param reviver The `JSON.parse()` optional `reviver` argument. + * @returns The parsed object, or `null` if there was an error or if the JSON contained possibly insecure properties. + */ + export function safeParse(text: string | Buffer, reviver?: Reviver | null): any + /** - * What to do when a `constructor` key is found. - * - `'error'` - throw a `SyntaxError` when a `constructor.prototype` key is found. This is the default value. - * - `'remove'` - deletes any `constructor` keys from the result object. - * - `'ignore'` - skips all validation (same as calling `JSON.parse()` directly). + * Scans a given object for prototype properties. + * + * @param obj The object being scanned. + * @param options Optional configuration object. + * @returns The object, or `null` if onError is set to `nullify` */ - constructorAction?: 'error' | 'remove' | 'ignore'; + export function scan(obj: { [key: string | number]: any }, options?: ParseOptions): any + + export { parse as default} } -export type ScanOptions = ParseOptions - -type Reviver = (this: any, key: string, value: any) => any - -/** - * Parses a given JSON-formatted text into an object. - * - * @param text The JSON text string. - * @param reviver The `JSON.parse()` optional `reviver` argument. - * @param options Optional configuration object. - * @returns The parsed object. - */ -export function parse(text: string | Buffer, reviver?: Reviver | null, options?: ParseOptions): any - -/** - * Parses a given JSON-formatted text into an object. - * - * @param text The JSON text string. - * @param reviver The `JSON.parse()` optional `reviver` argument. - * @returns The parsed object, or `null` if there was an error or if the JSON contained possibly insecure properties. - */ -export function safeParse(text: string | Buffer, reviver?: Reviver | null): any - -/** - * Scans a given object for prototype properties. - * - * @param obj The object being scanned. - * @param options Optional configuration object. - * @returns The object, or `null` if onError is set to `nullify` - */ -export function scan(obj: {[key: string | number]: any }, options?: ParseOptions): any +declare function parse(text: string | Buffer, reviver?: parse.Reviver | null, options?: parse.ParseOptions): any +export = parse