@humanwhocodes/momoa
Advanced tools
Comparing version 3.3.6 to 3.3.7
@@ -1,271 +0,2 @@ | ||
/** | ||
* @fileoverview Type definitions for the Momoa JSON parser. | ||
* @author Nicholas C. Zakas | ||
*/ | ||
//----------------------------------------------------------------------------- | ||
// Options | ||
//----------------------------------------------------------------------------- | ||
/** | ||
* The mode that Momoa runs in: | ||
* - "json" for regular JSON | ||
* - "jsonc" for JSON with C-style comments | ||
*/ | ||
type Mode$1 = "json" | "jsonc" | "json5"; | ||
/** | ||
* The phase of the traversal step. | ||
*/ | ||
type TraversalPhase$1 = "enter" | "exit"; | ||
/** | ||
* The type of a JSON5 Infinity or NaN value. | ||
* - "+" for positive Infinity or postive NaN | ||
* - "-" for negative Infinity or negative NaN | ||
* - "" for Infinity or NaN without a sign | ||
*/ | ||
type Sign$1 = "+" | "-" | ""; | ||
/** | ||
* Tokenization options. | ||
*/ | ||
interface TokenizeOptions$1 { | ||
/** | ||
* The mode to tokenize in. | ||
*/ | ||
readonly mode?: Mode$1; | ||
/** | ||
* When true, includes the `range` key on each token. | ||
*/ | ||
readonly ranges?: boolean; | ||
} | ||
/** | ||
* Parse options. | ||
*/ | ||
interface ParseOptions$1 { | ||
/** | ||
* The mode to parse in. | ||
*/ | ||
readonly mode?: Mode$1; | ||
/** | ||
* When true, includes the `range` key on each node and token. | ||
*/ | ||
readonly ranges?: boolean; | ||
/** | ||
* When true, includes the `tokens` key on the document node containing | ||
* all of the tokens used during parsing. | ||
*/ | ||
readonly tokens?: boolean; | ||
/** | ||
* When true, allows trailing commas in arrays and objects. Defaults to | ||
* false for JSON and JSONC modes, and true for JSON5 mode. | ||
*/ | ||
readonly allowTrailingCommas?: boolean; | ||
} | ||
//----------------------------------------------------------------------------- | ||
// Nodes | ||
//----------------------------------------------------------------------------- | ||
interface Node$1 { | ||
type: string; | ||
loc: LocationRange; | ||
range?: Range$1; | ||
} | ||
/** | ||
* The root node of a JSON document. | ||
*/ | ||
interface DocumentNode$1 extends Node$1 { | ||
type: "Document"; | ||
body: ValueNode$1; | ||
tokens?: Array<Token$1>; | ||
} | ||
interface NullNode$1 extends Node$1 { | ||
type: "Null"; | ||
} | ||
interface LiteralNode<T> extends Node$1 { | ||
value: T; | ||
} | ||
/** | ||
* Represents a JSON5 NaN value. | ||
*/ | ||
interface NaNNode$1 extends Node$1 { | ||
type: "NaN"; | ||
sign: Sign$1; | ||
} | ||
/** | ||
* Represents a JSON5 Infinity value. | ||
*/ | ||
interface InfinityNode$1 extends Node$1 { | ||
type: "Infinity"; | ||
sign: Sign$1; | ||
} | ||
/** | ||
* Represents a JSON identifier. | ||
*/ | ||
interface IdentifierNode$1 extends Node$1 { | ||
type: "Identifier"; | ||
name: string; | ||
} | ||
/** | ||
* Represents a JSON string. | ||
*/ | ||
interface StringNode$1 extends LiteralNode<string> { | ||
type: "String"; | ||
} | ||
/** | ||
* Represents a JSON number. | ||
*/ | ||
interface NumberNode$1 extends LiteralNode<number> { | ||
type: "Number"; | ||
} | ||
/** | ||
* Represents a JSON boolean. | ||
*/ | ||
interface BooleanNode$1 extends LiteralNode<boolean> { | ||
type: "Boolean"; | ||
} | ||
/** | ||
* Represents an element of a JSON array. | ||
*/ | ||
interface ElementNode$1 extends Node$1 { | ||
type: "Element"; | ||
value: ValueNode$1; | ||
} | ||
/** | ||
* Represents a JSON array. | ||
*/ | ||
interface ArrayNode$1 extends Node$1 { | ||
type: "Array"; | ||
elements: Array<ElementNode$1>; | ||
} | ||
/** | ||
* Represents a member of a JSON object. | ||
*/ | ||
interface MemberNode$1 extends Node$1 { | ||
type: "Member"; | ||
name: StringNode$1 | IdentifierNode$1; | ||
value: ValueNode$1; | ||
} | ||
/** | ||
* Represents a JSON object. | ||
*/ | ||
interface ObjectNode$1 extends Node$1 { | ||
type: "Object"; | ||
members: Array<MemberNode$1>; | ||
} | ||
/** | ||
* Any node that represents a JSON value. | ||
*/ | ||
type ValueNode$1 = ArrayNode$1 | ObjectNode$1 | | ||
BooleanNode$1 | StringNode$1 | NumberNode$1 | NullNode$1 | | ||
NaNNode$1 | InfinityNode$1; | ||
/** | ||
* Any node that represents the container for a JSON value. | ||
*/ | ||
type ContainerNode = DocumentNode$1 | MemberNode$1 | ElementNode$1; | ||
/** | ||
* Any node that represents a JSON5 extension. | ||
*/ | ||
type JSON5ExtensionNode = NaNNode$1 | InfinityNode$1 | IdentifierNode$1; | ||
/** | ||
* Any valid AST node. | ||
*/ | ||
type AnyNode$1 = ValueNode$1 | ContainerNode | JSON5ExtensionNode; | ||
/** | ||
* Additional information about an AST node. | ||
*/ | ||
interface NodeParts$1 { | ||
loc?: LocationRange; | ||
range?: Range$1; | ||
} | ||
//----------------------------------------------------------------------------- | ||
// Values | ||
//----------------------------------------------------------------------------- | ||
/** | ||
* Values that can be represented in JSON. | ||
*/ | ||
type JSONValue$1 = | ||
| Array<JSONValue$1> | ||
| boolean | ||
| number | ||
| string | ||
| { [property: string]: JSONValue$1 } | ||
| null; | ||
//----------------------------------------------------------------------------- | ||
// Tokens | ||
//----------------------------------------------------------------------------- | ||
/** | ||
* A token used to during JSON parsing. | ||
*/ | ||
interface Token$1 { | ||
type: TokenType$1; | ||
loc: LocationRange; | ||
range?: Range$1; | ||
} | ||
/** | ||
* The type of token. | ||
*/ | ||
type TokenType$1 = "Number" | "String" | "Boolean" | "Colon" | "LBrace" | | ||
"RBrace" | "RBracket" | "LBracket" | "Comma" | "Null" | "LineComment" | | ||
"BlockComment" | "NaN" | "Infinity" | "Identifier"; | ||
//----------------------------------------------------------------------------- | ||
// Location Related | ||
//----------------------------------------------------------------------------- | ||
/** | ||
* The start and stop location for a token or node inside the source text. | ||
*/ | ||
interface LocationRange { | ||
start: Location$1; | ||
end: Location$1; | ||
} | ||
/** | ||
* A cursor location inside the source text. | ||
*/ | ||
interface Location$1 { | ||
line: number; | ||
column: number; | ||
offset: number; | ||
} | ||
/** | ||
* The start and stop offset for a given node or token inside the source text. | ||
*/ | ||
type Range$1 = [number, number]; | ||
type FilterPredicate = (item: { | ||
export type FilterPredicate = (item: { | ||
node: Node; | ||
@@ -279,29 +10,29 @@ parent?: Node; | ||
}>) => boolean; | ||
type AnyNode = AnyNode$1; | ||
type JSONValue = JSONValue$1; | ||
type TokenType = TokenType$1; | ||
type Location = Location$1; | ||
type Token = Token$1; | ||
type Range = Range$1; | ||
type TokenizeOptions = TokenizeOptions$1; | ||
type NodeParts = NodeParts$1; | ||
type DocumentNode = DocumentNode$1; | ||
type StringNode = StringNode$1; | ||
type NumberNode = NumberNode$1; | ||
type BooleanNode = BooleanNode$1; | ||
type MemberNode = MemberNode$1; | ||
type ObjectNode = ObjectNode$1; | ||
type ElementNode = ElementNode$1; | ||
type ArrayNode = ArrayNode$1; | ||
type NullNode = NullNode$1; | ||
type ValueNode = ValueNode$1; | ||
type IdentifierNode = IdentifierNode$1; | ||
type NaNNode = NaNNode$1; | ||
type InfinityNode = InfinityNode$1; | ||
type Sign = Sign$1; | ||
type Node = Node$1; | ||
type Mode = Mode$1; | ||
type ParseOptions = ParseOptions$1; | ||
type TraversalPhase = TraversalPhase$1; | ||
type TraversalVisitor = { | ||
export type AnyNode = import("./typedefs.js").AnyNode; | ||
export type JSONValue = import("./typedefs.js").JSONValue; | ||
export type TokenType = import("./typedefs.js").TokenType; | ||
export type Location = import("./typedefs.js").Location; | ||
export type Token = import("./typedefs.js").Token; | ||
export type Range = import("./typedefs.js").Range; | ||
export type TokenizeOptions = import("./typedefs.js").TokenizeOptions; | ||
export type NodeParts = import("./typedefs.js").NodeParts; | ||
export type DocumentNode = import("./typedefs.js").DocumentNode; | ||
export type StringNode = import("./typedefs.js").StringNode; | ||
export type NumberNode = import("./typedefs.js").NumberNode; | ||
export type BooleanNode = import("./typedefs.js").BooleanNode; | ||
export type MemberNode = import("./typedefs.js").MemberNode; | ||
export type ObjectNode = import("./typedefs.js").ObjectNode; | ||
export type ElementNode = import("./typedefs.js").ElementNode; | ||
export type ArrayNode = import("./typedefs.js").ArrayNode; | ||
export type NullNode = import("./typedefs.js").NullNode; | ||
export type ValueNode = import("./typedefs.js").ValueNode; | ||
export type IdentifierNode = import("./typedefs.js").IdentifierNode; | ||
export type NaNNode = import("./typedefs.js").NaNNode; | ||
export type InfinityNode = import("./typedefs.js").InfinityNode; | ||
export type Sign = import("./typedefs.js").Sign; | ||
export type Node = import("./typedefs.js").Node; | ||
export type Mode = import("./typedefs.js").Mode; | ||
export type ParseOptions = import("./typedefs.js").ParseOptions; | ||
export type TraversalPhase = import("./typedefs.js").TraversalPhase; | ||
export type TraversalVisitor = { | ||
enter?: (node: Node, parent?: Node) => void; | ||
@@ -314,4 +45,4 @@ exit?: (node: Node, parent?: Node) => void; | ||
*/ | ||
/** @typedef {import("./typedefs.ts").AnyNode} AnyNode */ | ||
/** @typedef {import("./typedefs.ts").JSONValue} JSONValue */ | ||
/** @typedef {import("./typedefs.js").AnyNode} AnyNode */ | ||
/** @typedef {import("./typedefs.js").JSONValue} JSONValue */ | ||
/** | ||
@@ -322,3 +53,3 @@ * Evaluates a Momoa AST node into a JavaScript value. | ||
*/ | ||
declare function evaluate(node: AnyNode): JSONValue; | ||
export function evaluate(node: AnyNode): JSONValue; | ||
/** | ||
@@ -338,3 +69,3 @@ * @callback FilterPredicate | ||
*/ | ||
declare function iterator(root: Node, filter?: FilterPredicate): IterableIterator<{ | ||
export function iterator(root: Node, filter?: FilterPredicate): IterableIterator<{ | ||
node: Node; | ||
@@ -351,3 +82,3 @@ parent?: Node; | ||
*/ | ||
declare function parse(text: string, options?: ParseOptions): DocumentNode; | ||
export function parse(text: string, options?: ParseOptions): DocumentNode; | ||
/** | ||
@@ -361,3 +92,3 @@ * Converts a Momoa AST back into a JSON string. | ||
*/ | ||
declare function print(node: AnyNode, { indent }?: { | ||
export function print(node: AnyNode, { indent }?: { | ||
indent?: number; | ||
@@ -371,3 +102,3 @@ }): string; | ||
*/ | ||
declare function tokenize(text: string, options?: TokenizeOptions): Array<Token>; | ||
export function tokenize(text: string, options?: TokenizeOptions): Array<Token>; | ||
/** | ||
@@ -378,4 +109,4 @@ * Traverses an AST from the given node. | ||
*/ | ||
declare function traverse(root: Node, visitor: TraversalVisitor): void; | ||
declare namespace types { | ||
export function traverse(root: Node, visitor: TraversalVisitor): void; | ||
export namespace types { | ||
/** | ||
@@ -471,3 +202,3 @@ * Creates a document node. | ||
*/ | ||
/** @typedef {import("./typedefs.ts").TraversalPhase} TraversalPhase */ | ||
/** @typedef {import("./typedefs.js").TraversalPhase} TraversalPhase */ | ||
/** | ||
@@ -479,4 +210,2 @@ * @typedef {Object} TraversalVisitor | ||
declare const childKeys: Map<string, string[]>; | ||
export { type AnyNode, type ArrayNode, type BooleanNode, type DocumentNode, type ElementNode, type FilterPredicate, type IdentifierNode, type InfinityNode, type JSONValue, type Location, type MemberNode, type Mode, type NaNNode, type Node, type NodeParts, type NullNode, type NumberNode, type ObjectNode, type ParseOptions, type Range, type Sign, type StringNode, type Token, type TokenType, type TokenizeOptions, type TraversalPhase, type TraversalVisitor, type ValueNode, evaluate, iterator, parse, print, tokenize, traverse, types, childKeys as visitorKeys }; | ||
export type { ContainerNode, LocationRange }; | ||
export { childKeys as visitorKeys }; |
{ | ||
"name": "@humanwhocodes/momoa", | ||
"version": "3.3.6", | ||
"version": "3.3.7", | ||
"description": "JSON AST parser, tokenizer, printer, traverser.", | ||
@@ -11,10 +11,15 @@ "author": "Nicholas C. Zakas", | ||
"exports": { | ||
"require": "./dist/momoa.cjs", | ||
"import": "./dist/momoa.js" | ||
".": { | ||
"require": { | ||
"types": "./dist/momoa.d.cts", | ||
"default": "./dist/momoa.cjs" | ||
}, | ||
"import": { | ||
"types": "./dist/momoa.d.ts", | ||
"default": "./dist/momoa.js" | ||
} | ||
} | ||
}, | ||
"files": [ | ||
"dist/momoa.js", | ||
"dist/momoa.cjs", | ||
"dist/momoa.d.ts", | ||
"dist/momoa.d.cts" | ||
"dist" | ||
], | ||
@@ -30,3 +35,4 @@ "repository": { | ||
"scripts": { | ||
"build": "rollup -c && npm run fixup && tsc --project tsconfig.build.json && rollup -c rollup.types.js", | ||
"build": "rollup -c && npm run fixup && tsc -p tsconfig.build.json && npm run copy-dts", | ||
"copy-dts": "node -e \"fs.copyFileSync('dist/momoa.d.ts', 'dist/momoa.d.cts')\"", | ||
"fixup": "node tools/strip-typedef-aliases.js", | ||
@@ -39,3 +45,4 @@ "lint": "eslint *.js src/*.js tests/*.js", | ||
"test": "mocha tests/*.test.js && npm run test:types", | ||
"test:types": "tsc --noEmit --project tests/types/tsconfig.json" | ||
"test:types": "tsc --noEmit --project tests/types/tsconfig.json", | ||
"test:attw": "attw --pack" | ||
}, | ||
@@ -53,2 +60,3 @@ "keywords": [ | ||
"devDependencies": { | ||
"@arethetypeswrong/cli": "^0.17.4", | ||
"beautify-benchmark": "0.2.4", | ||
@@ -55,0 +63,0 @@ "benchmark": "2.1.4", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
8
5119
224528
15