Skip to content

Commit

Permalink
feat: add TypeScript delcarations for module files
Browse files Browse the repository at this point in the history
  • Loading branch information
jordanbtucker committed Jan 31, 2021
1 parent eef0999 commit 8d940b0
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 75 deletions.
78 changes: 3 additions & 75 deletions lib/index.d.ts
@@ -1,76 +1,4 @@
declare type StringifyOptions = Partial<{
/**
* A function that alters the behavior of the stringification process, or an
* array of String and Number objects that serve as a whitelist for
* selecting/filtering the properties of the value object to be included in
* the JSON5 string. If this value is null or not provided, all properties
* of the object are included in the resulting JSON5 string.
*/
replacer: ((this: any, key: string, value: any) => any) | (string | number)[];
import parse = require('./parse')
import stringify = require('./stringify')

/**
* A String or Number object that's used to insert white space into the
* output JSON5 string for readability purposes. If this is a Number, it
* indicates the number of space characters to use as white space; this
* number is capped at 10 (if it is greater, the value is just 10). Values
* less than 1 indicate that no space should be used. If this is a String,
* the string (or the first 10 characters of the string, if it's longer than
* that) is used as white space. If this parameter is not provided (or is
* null), no white space is used. If white space is used, trailing commas
* will be used in objects and arrays.
*/
space: string | number;

/**
* A String representing the quote character to use when serializing strings.
*/
quote: string;
}>

/**
* Parses a JSON5 string, constructing the JavaScript value or object described
* by the string. An optional reviver function can be provided to perform a
* transformation on the resulting object before it is returned.
* @param text The string to parse as JSON5.
* @param reviver If a function, this prescribes how the value originally
* produced by parsing is transformed, before being returned.
*/
export function parse(text: string, reviver?: (this: any, key: string, value: any) => any): any;

/**
* Converts a JavaScript value to a JSON5 string, optionally replacing values
* if a replacer function is specified, or optionally including only the
* specified properties if a replacer array is specified.
* @param value The value to convert to a JSON5 string.
* @param replacer A function that alters the behavior of the stringification
* process, or an array of String and Number objects that serve as a whitelist
* for selecting/filtering the properties of the value object to be included in
* the JSON5 string. If this value is null or not provided, all properties of
* the object are included in the resulting JSON5 string.
* @param space A String or Number object that's used to insert white space
* into the output JSON5 string for readability purposes. If this is a Number,
* it indicates the number of space characters to use as white space; this
* number is capped at 10 (if it is greater, the value is just 10). Values less
* than 1 indicate that no space should be used. If this is a String, the
* string (or the first 10 characters of the string, if it's longer than that)
* is used as white space. If this parameter is not provided (or is null), no
* white space is used. If white space is used, trailing commas will be used in
* objects and arrays.
*/
export function stringify(value: any, replacer?: ((this: any, key: string, value: any) => any) | (string | number)[], space?: string | number): string;

/**
* Converts a JavaScript value to a JSON5 string, optionally replacing values
* if a replacer function is specified, or optionally including only the
* specified properties if a replacer array is specified.
* @param value The value to convert to a JSON5 string.
* @param options An object with the following properties:
*
* `replacer`: Same as the `replacer` parameter.
*
* `space`: Same as the `space` parameter.
*
* `quote`: A String representing the quote character to use when serializing
* strings.
*/
export function stringify(value: any, options?: StringifyOptions): string;
export {parse, stringify}
15 changes: 15 additions & 0 deletions lib/parse.d.ts
@@ -0,0 +1,15 @@
/**
* Parses a JSON5 string, constructing the JavaScript value or object described
* by the string.
* @template T The type of the return value.
* @param text The string to parse as JSON5.
* @param reviver A function that prescribes how the value originally produced
* by parsing is transformed before being returned.
* @returns The JavaScript value converted from the JSON5 string.
*/
declare function parse<T = any>(
text: string,
reviver?: ((this: any, key: string, value: any) => any) | null,
): T

export = parse
89 changes: 89 additions & 0 deletions lib/stringify.d.ts
@@ -0,0 +1,89 @@
declare type StringifyOptions = {
/**
* A function that alters the behavior of the stringification process, or an
* array of String and Number objects that serve as a allowlist for
* selecting/filtering the properties of the value object to be included in
* the JSON5 string. If this value is null or not provided, all properties
* of the object are included in the resulting JSON5 string.
*/
replacer?:
| ((this: any, key: string, value: any) => any)
| (string | number)[]
| null

/**
* A String or Number object that's used to insert white space into the
* output JSON5 string for readability purposes. If this is a Number, it
* indicates the number of space characters to use as white space; this
* number is capped at 10 (if it is greater, the value is just 10). Values
* less than 1 indicate that no space should be used. If this is a String,
* the string (or the first 10 characters of the string, if it's longer than
* that) is used as white space. If this parameter is not provided (or is
* null), no white space is used. If white space is used, trailing commas
* will be used in objects and arrays.
*/
space?: string | number | null

/**
* A String representing the quote character to use when serializing
* strings.
*/
quote?: string | null
}

/**
* Converts a JavaScript value to a JSON5 string.
* @param value The value to convert to a JSON5 string.
* @param replacer A function that alters the behavior of the stringification
* process. If this value is null or not provided, all properties of the object
* are included in the resulting JSON5 string.
* @param space A String or Number object that's used to insert white space into
* the output JSON5 string for readability purposes. If this is a Number, it
* indicates the number of space characters to use as white space; this number
* is capped at 10 (if it is greater, the value is just 10). Values less than 1
* indicate that no space should be used. If this is a String, the string (or
* the first 10 characters of the string, if it's longer than that) is used as
* white space. If this parameter is not provided (or is null), no white space
* is used. If white space is used, trailing commas will be used in objects and
* arrays.
* @returns The JSON5 string converted from the JavaScript value.
*/
declare function stringify(
value: any,
replacer?: ((this: any, key: string, value: any) => any) | null,
space?: string | number | null,
): string

/**
* Converts a JavaScript value to a JSON5 string.
* @param value The value to convert to a JSON5 string.
* @param replacer An array of String and Number objects that serve as a
* allowlist for selecting/filtering the properties of the value object to be
* included in the JSON5 string. If this value is null or not provided, all
* properties of the object are included in the resulting JSON5 string.
* @param space A String or Number object that's used to insert white space into
* the output JSON5 string for readability purposes. If this is a Number, it
* indicates the number of space characters to use as white space; this number
* is capped at 10 (if it is greater, the value is just 10). Values less than 1
* indicate that no space should be used. If this is a String, the string (or
* the first 10 characters of the string, if it's longer than that) is used as
* white space. If this parameter is not provided (or is null), no white space
* is used. If white space is used, trailing commas will be used in objects and
* arrays.
* @returns The JSON5 string converted from the JavaScript value.
*/
declare function stringify(
value: any,
replacer: (string | number)[],
space?: string | number | null,
): string

/**
* Converts a JavaScript value to a JSON5 string.
* @param value The value to convert to a JSON5 string.
* @param options An object specifying options.
* @returns The JSON5 string converted from the JavaScript value.
*/
declare function stringify(value: any, options: StringifyOptions): string

export = stringify
3 changes: 3 additions & 0 deletions lib/unicode.d.ts
@@ -0,0 +1,3 @@
export declare const Space_Separator: RegExp
export declare const ID_Start: RegExp
export declare const ID_Continue: RegExp
5 changes: 5 additions & 0 deletions lib/util.d.ts
@@ -0,0 +1,5 @@
export declare function isSpaceSeparator(c?: string): boolean
export declare function isIdStartChar(c?: string): boolean
export declare function isIdContinueChar(c?: string): boolean
export declare function isDigit(c?: string): boolean
export declare function isHexDigit(c?: string): boolean
1 change: 1 addition & 0 deletions package.json5
Expand Up @@ -7,6 +7,7 @@
module: 'dist/index.mjs',
bin: 'lib/cli.js',
browser: 'dist/index.js',
types: 'lib/index.d.ts',
files: [
'lib/',
'dist/',
Expand Down

0 comments on commit 8d940b0

Please sign in to comment.