@coze-editor/parser-json 0.1.0-alpha.0fd19e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/esm/index.js +778 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/index.d.mts +108 -0
- package/dist/index.d.ts +108 -0
- package/dist/index.js +816 -0
- package/dist/index.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/parser.ts","../src/scanner.ts","../src/is.ts","../src/types.ts","../src/helpers.ts"],"sourcesContent":["// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n// Modified from\n// vscode-json-languageservice\n// - Tag: 5.4.1\n// - commit SHA: 493010da9dc2cd1cc139d403d4709d97064b17e9\n// node-jsonc-parser\n// - Tag: 3.3.1\n// - commit SHA: 3c9b4203d663061d87d4d34dd0004690aef94db5\nexport { parse } from './parser';\n\nexport { findNodeAtOffset } from './helpers';\n\nexport { ErrorCode } from './types';\n\nexport type {\n IRange,\n IProblem,\n // ast nodes\n ASTNode,\n ObjectASTNode,\n PropertyASTNode,\n ArrayASTNode,\n StringASTNode,\n NumberASTNode,\n BooleanASTNode,\n NullASTNode,\n} from './types';\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n/* eslint-disable */\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n *--------------------------------------------------------------------------------------------*/\n\nimport { TextDocument } from 'vscode-languageserver-textdocument';\nimport { Diagnostic, Range, DiagnosticSeverity } from 'vscode-languageserver-types';\nimport * as l10n from '@vscode/l10n';\n\nimport * as Json from './scanner';\nimport { isNumber, isObject } from './is';\n\nimport {\n ASTNode,\n NullASTNode,\n BooleanASTNode,\n ArrayASTNode,\n NumberASTNode,\n StringASTNode,\n PropertyASTNode,\n ObjectASTNode,\n SchemaDraft,\n ErrorCode,\n} from './types';\n\nexport abstract class ASTNodeImpl {\n\n public readonly abstract type: 'object' | 'property' | 'array' | 'number' | 'boolean' | 'null' | 'string';\n\n public offset: number;\n public length: number;\n public readonly parent: ASTNode | undefined;\n\n constructor(parent: ASTNode | undefined, offset: number, length: number = 0) {\n this.offset = offset;\n this.length = length;\n this.parent = parent;\n }\n\n public get children(): ASTNode[] {\n return [];\n }\n\n public toString(): string {\n return 'type: ' + this.type + ' (' + this.offset + '/' + this.length + ')' + (this.parent ? ' parent: {' + this.parent.toString() + '}' : '');\n }\n}\n\nexport class NullASTNodeImpl extends ASTNodeImpl implements NullASTNode {\n\n public type: 'null' = 'null';\n public value: null = null;\n constructor(parent: ASTNode | undefined, offset: number) {\n super(parent, offset);\n }\n}\n\nexport class BooleanASTNodeImpl extends ASTNodeImpl implements BooleanASTNode {\n\n public type: 'boolean' = 'boolean';\n public value: boolean;\n\n constructor(parent: ASTNode | undefined, boolValue: boolean, offset: number) {\n super(parent, offset);\n this.value = boolValue;\n }\n}\n\nexport class ArrayASTNodeImpl extends ASTNodeImpl implements ArrayASTNode {\n\n public type: 'array' = 'array';\n public items: ASTNode[];\n\n constructor(parent: ASTNode | undefined, offset: number) {\n super(parent, offset);\n this.items = [];\n }\n\n public get children(): ASTNode[] {\n return this.items;\n }\n}\n\nexport class NumberASTNodeImpl extends ASTNodeImpl implements NumberASTNode {\n\n public type: 'number' = 'number';\n public isInteger: boolean;\n public value: number;\n\n constructor(parent: ASTNode | undefined, offset: number) {\n super(parent, offset);\n this.isInteger = true;\n this.value = Number.NaN;\n }\n}\n\nexport class StringASTNodeImpl extends ASTNodeImpl implements StringASTNode {\n public type: 'string' = 'string';\n public value: string;\n\n constructor(parent: ASTNode | undefined, offset: number, length?: number) {\n super(parent, offset, length);\n this.value = '';\n }\n}\n\nexport class PropertyASTNodeImpl extends ASTNodeImpl implements PropertyASTNode {\n public type: 'property' = 'property';\n public keyNode: StringASTNode;\n public valueNode?: ASTNode;\n public colonOffset: number;\n\n constructor(parent: ObjectASTNode | undefined, offset: number, keyNode: StringASTNode) {\n super(parent, offset);\n this.colonOffset = -1;\n this.keyNode = keyNode;\n }\n\n public get children(): ASTNode[] {\n return this.valueNode ? [this.keyNode, this.valueNode] : [this.keyNode];\n }\n}\n\nexport class ObjectASTNodeImpl extends ASTNodeImpl implements ObjectASTNode {\n public type: 'object' = 'object';\n public properties: PropertyASTNode[];\n\n constructor(parent: ASTNode | undefined, offset: number) {\n super(parent, offset);\n\n this.properties = [];\n }\n\n public get children(): ASTNode[] {\n return this.properties;\n }\n\n}\n\nexport interface JSONDocumentConfig {\n collectComments?: boolean;\n schemaDraft?: SchemaDraft;\n}\n\nfunction parse(textDocument: TextDocument, config?: JSONDocumentConfig) {\n const problems: Diagnostic[] = [];\n let lastProblemOffset = -1;\n const text = textDocument.getText();\n const scanner = Json.createScanner(text, false);\n\n const commentRanges: Range[] | undefined = config && config.collectComments ? [] : undefined;\n\n function _scanNext(): Json.SyntaxKind {\n while (true) {\n const token = scanner.scan();\n _checkScanError();\n switch (token) {\n case Json.SyntaxKind.LineCommentTrivia:\n case Json.SyntaxKind.BlockCommentTrivia:\n if (Array.isArray(commentRanges)) {\n commentRanges.push(Range.create(textDocument.positionAt(scanner.getTokenOffset()), textDocument.positionAt(scanner.getTokenOffset() + scanner.getTokenLength())));\n }\n break;\n case Json.SyntaxKind.Trivia:\n case Json.SyntaxKind.LineBreakTrivia:\n break;\n default:\n return token;\n }\n }\n }\n\n function _accept(token: Json.SyntaxKind): boolean {\n if (scanner.getToken() === token) {\n _scanNext();\n return true;\n }\n return false;\n }\n\n function _errorAtRange<T extends ASTNode>(message: string, code: ErrorCode, startOffset: number, endOffset: number, severity: DiagnosticSeverity = DiagnosticSeverity.Error): void {\n\n if (problems.length === 0 || startOffset !== lastProblemOffset) {\n const range = Range.create(textDocument.positionAt(startOffset), textDocument.positionAt(endOffset));\n problems.push(Diagnostic.create(range, message, severity, code, textDocument.languageId));\n lastProblemOffset = startOffset;\n }\n }\n\n function _error<T extends ASTNodeImpl>(message: string, code: ErrorCode, node: T | undefined = undefined, skipUntilAfter: Json.SyntaxKind[] = [], skipUntil: Json.SyntaxKind[] = []): T | undefined {\n let start = scanner.getTokenOffset();\n let end = scanner.getTokenOffset() + scanner.getTokenLength();\n if (start === end && start > 0) {\n start--;\n while (start > 0 && /\\s/.test(text.charAt(start))) {\n start--;\n }\n end = start + 1;\n }\n _errorAtRange(message, code, start, end);\n\n if (node) {\n _finalize(node, false);\n }\n if (skipUntilAfter.length + skipUntil.length > 0) {\n let token = scanner.getToken();\n while (token !== Json.SyntaxKind.EOF) {\n if (skipUntilAfter.indexOf(token) !== -1) {\n _scanNext();\n break;\n } else if (skipUntil.indexOf(token) !== -1) {\n break;\n }\n token = _scanNext();\n }\n }\n return node;\n }\n\n function _checkScanError(): boolean {\n switch (scanner.getTokenError()) {\n case Json.ScanError.InvalidUnicode:\n _error(l10n.t('Invalid unicode sequence in string.'), ErrorCode.InvalidUnicode);\n return true;\n case Json.ScanError.InvalidEscapeCharacter:\n _error(l10n.t('Invalid escape character in string.'), ErrorCode.InvalidEscapeCharacter);\n return true;\n case Json.ScanError.UnexpectedEndOfNumber:\n _error(l10n.t('Unexpected end of number.'), ErrorCode.UnexpectedEndOfNumber);\n return true;\n case Json.ScanError.UnexpectedEndOfComment:\n _error(l10n.t('Unexpected end of comment.'), ErrorCode.UnexpectedEndOfComment);\n return true;\n case Json.ScanError.UnexpectedEndOfString:\n _error(l10n.t('Unexpected end of string.'), ErrorCode.UnexpectedEndOfString);\n return true;\n case Json.ScanError.InvalidCharacter:\n _error(l10n.t('Invalid characters in string. Control characters must be escaped.'), ErrorCode.InvalidCharacter);\n return true;\n }\n return false;\n }\n\n function _finalize<T extends ASTNodeImpl>(node: T, scanNext: boolean): T {\n node.length = scanner.getTokenOffset() + scanner.getTokenLength() - node.offset;\n\n if (scanNext) {\n _scanNext();\n }\n\n return node;\n }\n\n function _parseArray(parent: ASTNode | undefined): ArrayASTNode | undefined {\n if (scanner.getToken() !== Json.SyntaxKind.OpenBracketToken) {\n return undefined;\n }\n const node = new ArrayASTNodeImpl(parent, scanner.getTokenOffset());\n _scanNext(); // consume OpenBracketToken\n\n const count = 0;\n let needsComma = false;\n while (scanner.getToken() !== Json.SyntaxKind.CloseBracketToken && scanner.getToken() !== Json.SyntaxKind.EOF) {\n if (scanner.getToken() === Json.SyntaxKind.CommaToken) {\n if (!needsComma) {\n _error(l10n.t('Value expected'), ErrorCode.ValueExpected);\n }\n const commaOffset = scanner.getTokenOffset();\n _scanNext(); // consume comma\n if (scanner.getToken() === Json.SyntaxKind.CloseBracketToken) {\n if (needsComma) {\n _errorAtRange(l10n.t('Trailing comma'), ErrorCode.TrailingComma, commaOffset, commaOffset + 1);\n }\n continue;\n }\n } else if (needsComma) {\n _error(l10n.t('Expected comma'), ErrorCode.CommaExpected);\n }\n const item = _parseValue(node);\n if (!item) {\n _error(l10n.t('Value expected'), ErrorCode.ValueExpected, undefined, [], [Json.SyntaxKind.CloseBracketToken, Json.SyntaxKind.CommaToken]);\n } else {\n node.items.push(item);\n }\n needsComma = true;\n }\n\n if (scanner.getToken() !== Json.SyntaxKind.CloseBracketToken) {\n return _error(l10n.t('Expected comma or closing bracket'), ErrorCode.CommaOrCloseBacketExpected, node);\n }\n\n return _finalize(node, true);\n }\n\n const keyPlaceholder = new StringASTNodeImpl(undefined, 0, 0);\n\n function _parseProperty(parent: ObjectASTNode | undefined, keysSeen: { [key: string]: (PropertyASTNode | boolean) }): PropertyASTNode | undefined {\n const node = new PropertyASTNodeImpl(parent, scanner.getTokenOffset(), keyPlaceholder);\n let key = _parseString(node);\n if (!key) {\n if (scanner.getToken() === Json.SyntaxKind.Unknown) {\n // give a more helpful error message\n _error(l10n.t('Property keys must be doublequoted'), ErrorCode.PropertyKeysMustBeDoublequoted);\n const keyNode = new StringASTNodeImpl(node, scanner.getTokenOffset(), scanner.getTokenLength());\n keyNode.value = scanner.getTokenValue();\n key = keyNode;\n _scanNext(); // consume Unknown\n } else {\n return undefined;\n }\n }\n node.keyNode = key;\n\n // For JSON files that forbid code comments, there is a convention to use the key name \"//\" to add comments.\n // Multiple instances of \"//\" are okay.\n if (key.value !== \"//\") {\n const seen = keysSeen[key.value];\n if (seen) {\n _errorAtRange(l10n.t(\"Duplicate object key\"), ErrorCode.DuplicateKey, node.keyNode.offset, node.keyNode.offset + node.keyNode.length, DiagnosticSeverity.Warning);\n if (isObject(seen)) {\n _errorAtRange(l10n.t(\"Duplicate object key\"), ErrorCode.DuplicateKey, seen.keyNode.offset, seen.keyNode.offset + seen.keyNode.length, DiagnosticSeverity.Warning);\n }\n keysSeen[key.value] = true; // if the same key is duplicate again, avoid duplicate error reporting\n } else {\n keysSeen[key.value] = node;\n }\n }\n\n if (scanner.getToken() === Json.SyntaxKind.ColonToken) {\n node.colonOffset = scanner.getTokenOffset();\n _scanNext(); // consume ColonToken\n } else {\n _error(l10n.t('Colon expected'), ErrorCode.ColonExpected);\n if (\n (\n scanner.getToken() === Json.SyntaxKind.SingleQuoteStringLiteral ||\n scanner.getToken() === Json.SyntaxKind.DoubleQuoteStringLiteral\n ) &&\n textDocument.positionAt(key.offset + key.length).line < textDocument.positionAt(scanner.getTokenOffset()).line\n ) {\n node.length = key.length;\n return node;\n }\n }\n const value = _parseValue(node);\n\n if (!value) {\n return _error(l10n.t('Value expected'), ErrorCode.ValueExpected, node, [], [Json.SyntaxKind.CloseBraceToken, Json.SyntaxKind.CommaToken]);\n }\n node.valueNode = value;\n node.length = value.offset + value.length - node.offset;\n return node;\n }\n\n function _parseObject(parent: ASTNode | undefined): ObjectASTNode | undefined {\n if (scanner.getToken() !== Json.SyntaxKind.OpenBraceToken) {\n return undefined;\n }\n const node = new ObjectASTNodeImpl(parent, scanner.getTokenOffset());\n const keysSeen: any = Object.create(null);\n _scanNext(); // consume OpenBraceToken\n let needsComma = false;\n\n while (scanner.getToken() !== Json.SyntaxKind.CloseBraceToken && scanner.getToken() !== Json.SyntaxKind.EOF) {\n if (scanner.getToken() === Json.SyntaxKind.CommaToken) {\n if (!needsComma) {\n _error(l10n.t('Property expected'), ErrorCode.PropertyExpected);\n }\n const commaOffset = scanner.getTokenOffset();\n _scanNext(); // consume comma\n if (scanner.getToken() === Json.SyntaxKind.CloseBraceToken) {\n if (needsComma) {\n _errorAtRange(l10n.t('Trailing comma'), ErrorCode.TrailingComma, commaOffset, commaOffset + 1);\n }\n continue;\n }\n } else if (needsComma) {\n _error(l10n.t('Expected comma'), ErrorCode.CommaExpected);\n }\n const property = _parseProperty(node, keysSeen);\n if (!property) {\n _error(l10n.t('Property expected'), ErrorCode.PropertyExpected, undefined, [], [Json.SyntaxKind.CloseBraceToken, Json.SyntaxKind.CommaToken]);\n } else {\n node.properties.push(property);\n }\n needsComma = true;\n }\n\n if (scanner.getToken() !== Json.SyntaxKind.CloseBraceToken) {\n return _error(l10n.t('Expected comma or closing brace'), ErrorCode.CommaOrCloseBraceExpected, node);\n }\n return _finalize(node, true);\n }\n\n function _parseString(parent: ASTNode | undefined): StringASTNode | undefined {\n if (\n scanner.getToken() !== Json.SyntaxKind.SingleQuoteStringLiteral &&\n scanner.getToken() !== Json.SyntaxKind.DoubleQuoteStringLiteral\n ) {\n return undefined;\n }\n\n if (scanner.getToken() === Json.SyntaxKind.SingleQuoteStringLiteral) {\n _error(l10n.t('String value must be doublequoted'), ErrorCode.StringValueMustBeDoublequoted);\n }\n\n const node = new StringASTNodeImpl(parent, scanner.getTokenOffset());\n node.value = scanner.getTokenValue();\n\n return _finalize(node, true);\n }\n\n function _parseNumber(parent: ASTNode | undefined): NumberASTNode | undefined {\n if (scanner.getToken() !== Json.SyntaxKind.NumericLiteral) {\n return undefined;\n }\n\n const node = new NumberASTNodeImpl(parent, scanner.getTokenOffset());\n if (scanner.getTokenError() === Json.ScanError.None) {\n const tokenValue = scanner.getTokenValue();\n try {\n const numberValue = JSON.parse(tokenValue);\n if (!isNumber(numberValue)) {\n return _error(l10n.t('Invalid number format.'), ErrorCode.Undefined, node);\n }\n node.value = numberValue;\n } catch (e) {\n return _error(l10n.t('Invalid number format.'), ErrorCode.Undefined, node);\n }\n node.isInteger = tokenValue.indexOf('.') === -1;\n }\n return _finalize(node, true);\n }\n\n function _parseLiteral(parent: ASTNode | undefined): ASTNode | undefined {\n let node: ASTNodeImpl;\n switch (scanner.getToken()) {\n case Json.SyntaxKind.NullKeyword:\n return _finalize(new NullASTNodeImpl(parent, scanner.getTokenOffset()), true);\n case Json.SyntaxKind.TrueKeyword:\n return _finalize(new BooleanASTNodeImpl(parent, true, scanner.getTokenOffset()), true);\n case Json.SyntaxKind.FalseKeyword:\n return _finalize(new BooleanASTNodeImpl(parent, false, scanner.getTokenOffset()), true);\n default:\n return undefined;\n }\n }\n\n function _parseValue(parent: ASTNode | undefined): ASTNode | undefined {\n return _parseArray(parent) || _parseObject(parent) || _parseString(parent) || _parseNumber(parent) || _parseLiteral(parent);\n }\n\n let _root: ASTNode | undefined = undefined;\n const token = _scanNext();\n if (token !== Json.SyntaxKind.EOF) {\n _root = _parseValue(_root);\n if (!_root) {\n _error(l10n.t('Expected a JSON object, array or literal.'), ErrorCode.Undefined);\n } else if (scanner.getToken() !== Json.SyntaxKind.EOF) {\n _error(l10n.t('End of file expected.'), ErrorCode.Undefined);\n }\n }\n return {\n // _root is undefined is source is empty string\n ast: _root as ASTNode | undefined,\n problems,\n commentRanges,\n };\n}\n\nexport {\n parse,\n}","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n/* eslint-disable */\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n\nexport const enum ScanError {\n None = 0,\n UnexpectedEndOfComment = 1,\n UnexpectedEndOfString = 2,\n UnexpectedEndOfNumber = 3,\n InvalidUnicode = 4,\n InvalidEscapeCharacter = 5,\n InvalidCharacter = 6\n}\n\nexport const enum SyntaxKind {\n OpenBraceToken = 1,\n CloseBraceToken = 2,\n OpenBracketToken = 3,\n CloseBracketToken = 4,\n CommaToken = 5,\n ColonToken = 6,\n NullKeyword = 7,\n TrueKeyword = 8,\n FalseKeyword = 9,\n StringLiteral = 10,\n NumericLiteral = 11,\n LineCommentTrivia = 12,\n BlockCommentTrivia = 13,\n LineBreakTrivia = 14,\n Trivia = 15,\n Unknown = 16,\n EOF = 17,\n SingleQuoteStringLiteral = 18,\n DoubleQuoteStringLiteral = 19,\n}\n\n/**\n * The scanner object, representing a JSON scanner at a position in the input string.\n */\nexport interface JSONScanner {\n /**\n * Sets the scan position to a new offset. A call to 'scan' is needed to get the first token.\n */\n setPosition(pos: number): void;\n /**\n * Read the next token. Returns the token code.\n */\n scan(): SyntaxKind;\n /**\n * Returns the zero-based current scan position, which is after the last read token.\n */\n getPosition(): number;\n /**\n * Returns the last read token.\n */\n getToken(): SyntaxKind;\n /**\n * Returns the last read token value. The value for strings is the decoded string content. For numbers it's of type number, for boolean it's true or false.\n */\n getTokenValue(): string;\n /**\n * The zero-based start offset of the last read token.\n */\n getTokenOffset(): number;\n /**\n * The length of the last read token.\n */\n getTokenLength(): number;\n /**\n * The zero-based start line number of the last read token.\n */\n getTokenStartLine(): number;\n /**\n * The zero-based start character (column) of the last read token.\n */\n getTokenStartCharacter(): number;\n /**\n * An error code of the last scan.\n */\n getTokenError(): ScanError;\n}\n\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport function createScanner(text: string, ignoreTrivia: boolean = false): JSONScanner {\n\n const len = text.length;\n let pos = 0,\n value: string = '',\n tokenOffset = 0,\n token: SyntaxKind = SyntaxKind.Unknown,\n lineNumber = 0,\n lineStartOffset = 0,\n tokenLineStartOffset = 0,\n prevTokenLineStartOffset = 0,\n scanError: ScanError = ScanError.None;\n\n function scanHexDigits(count: number, exact?: boolean): number {\n let digits = 0;\n let value = 0;\n while (digits < count || !exact) {\n const ch = text.charCodeAt(pos);\n if (ch >= CharacterCodes._0 && ch <= CharacterCodes._9) {\n value = value * 16 + ch - CharacterCodes._0;\n }\n else if (ch >= CharacterCodes.A && ch <= CharacterCodes.F) {\n value = value * 16 + ch - CharacterCodes.A + 10;\n }\n else if (ch >= CharacterCodes.a && ch <= CharacterCodes.f) {\n value = value * 16 + ch - CharacterCodes.a + 10;\n }\n else {\n break;\n }\n pos++;\n digits++;\n }\n if (digits < count) {\n value = -1;\n }\n return value;\n }\n\n function setPosition(newPosition: number) {\n pos = newPosition;\n value = '';\n tokenOffset = 0;\n token = SyntaxKind.Unknown;\n scanError = ScanError.None;\n }\n\n function scanNumber(): string {\n const start = pos;\n if (text.charCodeAt(pos) === CharacterCodes._0) {\n pos++;\n } else {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n if (pos < text.length && text.charCodeAt(pos) === CharacterCodes.dot) {\n pos++;\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n } else {\n scanError = ScanError.UnexpectedEndOfNumber;\n return text.substring(start, pos);\n }\n }\n let end = pos;\n if (pos < text.length && (text.charCodeAt(pos) === CharacterCodes.E || text.charCodeAt(pos) === CharacterCodes.e)) {\n pos++;\n if (pos < text.length && text.charCodeAt(pos) === CharacterCodes.plus || text.charCodeAt(pos) === CharacterCodes.minus) {\n pos++;\n }\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n end = pos;\n } else {\n scanError = ScanError.UnexpectedEndOfNumber;\n }\n }\n return text.substring(start, end);\n }\n\n function scanString(endQuote: number): string {\n\n let result = '',\n start = pos;\n\n while (true) {\n if (pos >= len) {\n result += text.substring(start, pos);\n scanError = ScanError.UnexpectedEndOfString;\n break;\n }\n const ch = text.charCodeAt(pos);\n if (ch === endQuote) {\n result += text.substring(start, pos);\n pos++;\n break;\n }\n if (ch === CharacterCodes.backslash) {\n result += text.substring(start, pos);\n pos++;\n if (pos >= len) {\n scanError = ScanError.UnexpectedEndOfString;\n break;\n }\n const ch2 = text.charCodeAt(pos++);\n switch (ch2) {\n case CharacterCodes.doubleQuote:\n result += '\\\"';\n break;\n case CharacterCodes.singleQuote:\n result += `\\'`;\n break;\n case CharacterCodes.backslash:\n result += '\\\\';\n break;\n case CharacterCodes.slash:\n result += '/';\n break;\n case CharacterCodes.b:\n result += '\\b';\n break;\n case CharacterCodes.f:\n result += '\\f';\n break;\n case CharacterCodes.n:\n result += '\\n';\n break;\n case CharacterCodes.r:\n result += '\\r';\n break;\n case CharacterCodes.t:\n result += '\\t';\n break;\n case CharacterCodes.u:\n const ch3 = scanHexDigits(4, true);\n if (ch3 >= 0) {\n result += String.fromCharCode(ch3);\n } else {\n scanError = ScanError.InvalidUnicode;\n }\n break;\n default:\n scanError = ScanError.InvalidEscapeCharacter;\n }\n start = pos;\n continue;\n }\n if (ch >= 0 && ch <= 0x1f) {\n if (isLineBreak(ch)) {\n result += text.substring(start, pos);\n scanError = ScanError.UnexpectedEndOfString;\n break;\n } else {\n scanError = ScanError.InvalidCharacter;\n // mark as error but continue with string\n }\n }\n pos++;\n }\n return result;\n }\n\n function scanNext(): SyntaxKind {\n\n value = '';\n scanError = ScanError.None;\n\n tokenOffset = pos;\n lineStartOffset = lineNumber;\n prevTokenLineStartOffset = tokenLineStartOffset;\n\n if (pos >= len) {\n // at the end\n tokenOffset = len;\n return token = SyntaxKind.EOF;\n }\n\n let code = text.charCodeAt(pos);\n // trivia: whitespace\n if (isWhiteSpace(code)) {\n do {\n pos++;\n value += String.fromCharCode(code);\n code = text.charCodeAt(pos);\n } while (isWhiteSpace(code));\n\n return token = SyntaxKind.Trivia;\n }\n\n // trivia: newlines\n if (isLineBreak(code)) {\n pos++;\n value += String.fromCharCode(code);\n if (code === CharacterCodes.carriageReturn && text.charCodeAt(pos) === CharacterCodes.lineFeed) {\n pos++;\n value += '\\n';\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n return token = SyntaxKind.LineBreakTrivia;\n }\n\n switch (code) {\n // tokens: []{}:,\n case CharacterCodes.openBrace:\n pos++;\n return token = SyntaxKind.OpenBraceToken;\n case CharacterCodes.closeBrace:\n pos++;\n return token = SyntaxKind.CloseBraceToken;\n case CharacterCodes.openBracket:\n pos++;\n return token = SyntaxKind.OpenBracketToken;\n case CharacterCodes.closeBracket:\n pos++;\n return token = SyntaxKind.CloseBracketToken;\n case CharacterCodes.colon:\n pos++;\n return token = SyntaxKind.ColonToken;\n case CharacterCodes.comma:\n pos++;\n return token = SyntaxKind.CommaToken;\n\n // strings\n case CharacterCodes.doubleQuote:\n pos++;\n value = scanString(CharacterCodes.doubleQuote);\n return token = SyntaxKind.DoubleQuoteStringLiteral;\n case CharacterCodes.singleQuote:\n pos++;\n value = scanString(CharacterCodes.singleQuote);\n return token = SyntaxKind.SingleQuoteStringLiteral;\n\n // comments\n case CharacterCodes.slash:\n const start = pos - 1;\n // Single-line comment\n if (text.charCodeAt(pos + 1) === CharacterCodes.slash) {\n pos += 2;\n\n while (pos < len) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n pos++;\n\n }\n value = text.substring(start, pos);\n return token = SyntaxKind.LineCommentTrivia;\n }\n\n // Multi-line comment\n if (text.charCodeAt(pos + 1) === CharacterCodes.asterisk) {\n pos += 2;\n\n const safeLength = len - 1; // For lookahead.\n let commentClosed = false;\n while (pos < safeLength) {\n const ch = text.charCodeAt(pos);\n\n if (ch === CharacterCodes.asterisk && text.charCodeAt(pos + 1) === CharacterCodes.slash) {\n pos += 2;\n commentClosed = true;\n break;\n }\n\n pos++;\n\n if (isLineBreak(ch)) {\n if (ch === CharacterCodes.carriageReturn && text.charCodeAt(pos) === CharacterCodes.lineFeed) {\n pos++;\n }\n\n lineNumber++;\n tokenLineStartOffset = pos;\n }\n }\n\n if (!commentClosed) {\n pos++;\n scanError = ScanError.UnexpectedEndOfComment;\n }\n\n value = text.substring(start, pos);\n return token = SyntaxKind.BlockCommentTrivia;\n }\n // just a single slash\n value += String.fromCharCode(code);\n pos++;\n return token = SyntaxKind.Unknown;\n\n // numbers\n // @ts-ignore\n case CharacterCodes.minus:\n value += String.fromCharCode(code);\n pos++;\n if (pos === len || !isDigit(text.charCodeAt(pos))) {\n return token = SyntaxKind.Unknown;\n }\n // found a minus, followed by a number so\n // we fall through to proceed with scanning\n // numbers\n case CharacterCodes._0:\n case CharacterCodes._1:\n case CharacterCodes._2:\n case CharacterCodes._3:\n case CharacterCodes._4:\n case CharacterCodes._5:\n case CharacterCodes._6:\n case CharacterCodes._7:\n case CharacterCodes._8:\n case CharacterCodes._9:\n value += scanNumber();\n return token = SyntaxKind.NumericLiteral;\n // literals and unknown symbols\n default:\n // is a literal? Read the full word.\n while (pos < len && isUnknownContentCharacter(code)) {\n pos++;\n code = text.charCodeAt(pos);\n }\n if (tokenOffset !== pos) {\n value = text.substring(tokenOffset, pos);\n // keywords: true, false, null\n switch (value) {\n case 'true': return token = SyntaxKind.TrueKeyword;\n case 'false': return token = SyntaxKind.FalseKeyword;\n case 'null': return token = SyntaxKind.NullKeyword;\n }\n return token = SyntaxKind.Unknown;\n }\n // some\n value += String.fromCharCode(code);\n pos++;\n return token = SyntaxKind.Unknown;\n }\n }\n\n function isUnknownContentCharacter(code: CharacterCodes) {\n if (isWhiteSpace(code) || isLineBreak(code)) {\n return false;\n }\n switch (code) {\n case CharacterCodes.closeBrace:\n case CharacterCodes.closeBracket:\n case CharacterCodes.openBrace:\n case CharacterCodes.openBracket:\n case CharacterCodes.doubleQuote:\n case CharacterCodes.colon:\n case CharacterCodes.comma:\n case CharacterCodes.slash:\n return false;\n }\n return true;\n }\n\n\n function scanNextNonTrivia(): SyntaxKind {\n let result: SyntaxKind;\n do {\n result = scanNext();\n } while (result >= SyntaxKind.LineCommentTrivia && result <= SyntaxKind.Trivia);\n return result;\n }\n\n return {\n setPosition: setPosition,\n getPosition: () => pos,\n scan: ignoreTrivia ? scanNextNonTrivia : scanNext,\n getToken: () => token,\n getTokenValue: () => value,\n getTokenOffset: () => tokenOffset,\n getTokenLength: () => pos - tokenOffset,\n getTokenStartLine: () => lineStartOffset,\n getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,\n getTokenError: () => scanError,\n };\n}\n\nfunction isWhiteSpace(ch: number): boolean {\n return ch === CharacterCodes.space || ch === CharacterCodes.tab;\n}\n\nfunction isLineBreak(ch: number): boolean {\n return ch === CharacterCodes.lineFeed || ch === CharacterCodes.carriageReturn;\n}\n\nfunction isDigit(ch: number): boolean {\n return ch >= CharacterCodes._0 && ch <= CharacterCodes._9;\n}\n\nconst enum CharacterCodes {\n lineFeed = 0x0A, // \\n\n carriageReturn = 0x0D, // \\r\n\n space = 0x0020, // \" \"\n\n _0 = 0x30,\n _1 = 0x31,\n _2 = 0x32,\n _3 = 0x33,\n _4 = 0x34,\n _5 = 0x35,\n _6 = 0x36,\n _7 = 0x37,\n _8 = 0x38,\n _9 = 0x39,\n\n a = 0x61,\n b = 0x62,\n c = 0x63,\n d = 0x64,\n e = 0x65,\n f = 0x66,\n g = 0x67,\n h = 0x68,\n i = 0x69,\n j = 0x6A,\n k = 0x6B,\n l = 0x6C,\n m = 0x6D,\n n = 0x6E,\n o = 0x6F,\n p = 0x70,\n q = 0x71,\n r = 0x72,\n s = 0x73,\n t = 0x74,\n u = 0x75,\n v = 0x76,\n w = 0x77,\n x = 0x78,\n y = 0x79,\n z = 0x7A,\n\n A = 0x41,\n B = 0x42,\n C = 0x43,\n D = 0x44,\n E = 0x45,\n F = 0x46,\n G = 0x47,\n H = 0x48,\n I = 0x49,\n J = 0x4A,\n K = 0x4B,\n L = 0x4C,\n M = 0x4D,\n N = 0x4E,\n O = 0x4F,\n P = 0x50,\n Q = 0x51,\n R = 0x52,\n S = 0x53,\n T = 0x54,\n U = 0x55,\n V = 0x56,\n W = 0x57,\n X = 0x58,\n Y = 0x59,\n Z = 0x5a,\n\n asterisk = 0x2A, // *\n backslash = 0x5C, // \\\n closeBrace = 0x7D, // }\n closeBracket = 0x5D, // ]\n colon = 0x3A, // :\n comma = 0x2C, // ,\n dot = 0x2E, // .\n doubleQuote = 0x22, // \"\n singleQuote = 0x27, // '\n minus = 0x2D, // -\n openBrace = 0x7B, // {\n openBracket = 0x5B, // [\n plus = 0x2B, // +\n slash = 0x2F, // /\n\n formFeed = 0x0C, // \\f\n tab = 0x09, // \\t\n}","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nexport function equals(one: any, other: any): boolean {\n if (one === other) {\n return true;\n }\n if (\n one === null ||\n one === undefined ||\n other === null ||\n other === undefined\n ) {\n return false;\n }\n if (typeof one !== typeof other) {\n return false;\n }\n if (typeof one !== 'object') {\n return false;\n }\n if (Array.isArray(one) !== Array.isArray(other)) {\n return false;\n }\n\n let i: number, key: string;\n\n if (Array.isArray(one)) {\n if (one.length !== other.length) {\n return false;\n }\n for (i = 0; i < one.length; i++) {\n if (!equals(one[i], other[i])) {\n return false;\n }\n }\n } else {\n const oneKeys: string[] = [];\n\n for (key in one) {\n oneKeys.push(key);\n }\n oneKeys.sort();\n const otherKeys: string[] = [];\n for (key in other) {\n otherKeys.push(key);\n }\n otherKeys.sort();\n if (!equals(oneKeys, otherKeys)) {\n return false;\n }\n for (i = 0; i < oneKeys.length; i++) {\n if (!equals(one[oneKeys[i]], other[oneKeys[i]])) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport function isNumber(val: any): val is number {\n return typeof val === 'number';\n}\n\nexport function isDefined(val: any): val is object {\n return typeof val !== 'undefined';\n}\n\nexport function isBoolean(val: any): val is boolean {\n return typeof val === 'boolean';\n}\n\nexport function isString(val: any): val is string {\n return typeof val === 'string';\n}\n\nexport function isObject(val: any): val is object {\n return typeof val === 'object' && val !== null && !Array.isArray(val);\n}\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n *--------------------------------------------------------------------------------------------*/\nimport { type DiagnosticSeverity } from 'vscode-languageserver-types';\n\nexport enum SchemaDraft {\n v3 = 3,\n v4 = 4,\n v6 = 6,\n v7 = 7,\n v2019_09 = 19,\n v2020_12 = 20,\n}\n\n/**\n * Error codes used by diagnostics\n */\nexport enum ErrorCode {\n Undefined = 0,\n EnumValueMismatch = 1,\n Deprecated = 2,\n UnexpectedEndOfComment = 0x101,\n UnexpectedEndOfString = 0x102,\n UnexpectedEndOfNumber = 0x103,\n InvalidUnicode = 0x104,\n InvalidEscapeCharacter = 0x105,\n InvalidCharacter = 0x106,\n PropertyExpected = 0x201,\n CommaExpected = 0x202,\n ColonExpected = 0x203,\n ValueExpected = 0x204,\n CommaOrCloseBacketExpected = 0x205,\n CommaOrCloseBraceExpected = 0x206,\n TrailingComma = 0x207,\n DuplicateKey = 0x208,\n CommentNotPermitted = 0x209,\n PropertyKeysMustBeDoublequoted = 0x210,\n StringValueMustBeDoublequoted = 0x211,\n SchemaResolveError = 0x300,\n SchemaUnsupportedFeature = 0x301,\n}\n\nexport interface IRange {\n offset: number;\n length: number;\n}\n\nexport interface IProblem {\n location: IRange;\n severity?: DiagnosticSeverity;\n code?: ErrorCode;\n message: string;\n}\n\nexport type ASTNode =\n | ObjectASTNode\n | PropertyASTNode\n | ArrayASTNode\n | StringASTNode\n | NumberASTNode\n | BooleanASTNode\n | NullASTNode;\n\nexport interface BaseASTNode {\n readonly type:\n | 'object'\n | 'array'\n | 'property'\n | 'string'\n | 'number'\n | 'boolean'\n | 'null';\n readonly parent?: ASTNode;\n readonly offset: number;\n readonly length: number;\n readonly children?: ASTNode[];\n readonly value?: string | boolean | number | null;\n}\nexport interface ObjectASTNode extends BaseASTNode {\n readonly type: 'object';\n readonly properties: PropertyASTNode[];\n readonly children: ASTNode[];\n}\nexport interface PropertyASTNode extends BaseASTNode {\n readonly type: 'property';\n readonly keyNode: StringASTNode;\n readonly valueNode?: ASTNode;\n readonly colonOffset?: number;\n readonly children: ASTNode[];\n}\nexport interface ArrayASTNode extends BaseASTNode {\n readonly type: 'array';\n readonly items: ASTNode[];\n readonly children: ASTNode[];\n}\nexport interface StringASTNode extends BaseASTNode {\n readonly type: 'string';\n readonly value: string;\n}\nexport interface NumberASTNode extends BaseASTNode {\n readonly type: 'number';\n readonly value: number;\n readonly isInteger: boolean;\n}\nexport interface BooleanASTNode extends BaseASTNode {\n readonly type: 'boolean';\n readonly value: boolean;\n}\nexport interface NullASTNode extends BaseASTNode {\n readonly type: 'null';\n readonly value: null;\n}\n","// Copyright (c) 2025 coze-dev\n// SPDX-License-Identifier: MIT\n\n// Extracted from https://github.com/microsoft/node-jsonc-parser/blob/3c9b4203d663061d87d4d34dd0004690aef94db5/src/main.ts#L362-L380\n\nimport { type ASTNode } from './types';\n\nfunction contains(\n node: ASTNode,\n offset: number,\n includeRightBound = false,\n): boolean {\n return (\n (offset >= node.offset && offset < node.offset + node.length) ||\n (includeRightBound && offset === node.offset + node.length)\n );\n}\n\n/**\n * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport function findNodeAtOffset(\n node: ASTNode,\n offset: number,\n includeRightBound = false,\n): ASTNode | undefined {\n if (contains(node, offset, includeRightBound)) {\n const { children } = node;\n if (Array.isArray(children)) {\n for (\n let i = 0;\n i < children.length && children[i].offset <= offset;\n i++\n ) {\n const item = findNodeAtOffset(children[i], offset, includeRightBound);\n if (item) {\n return item;\n }\n }\n }\n return node;\n }\n return undefined;\n}\n"],"mappings":"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","names":["value","ErrorCode","token"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@coze-editor/parser-json",
|
|
3
|
+
"version": "0.1.0-alpha.0fd19e",
|
|
4
|
+
"description": "parser-json",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "fengzilong",
|
|
7
|
+
"maintainers": [],
|
|
8
|
+
"sideEffects": [
|
|
9
|
+
"**/*.css",
|
|
10
|
+
"**/*.less",
|
|
11
|
+
"**/*.sass",
|
|
12
|
+
"**/*.scss"
|
|
13
|
+
],
|
|
14
|
+
"main": "./dist/esm/index.js",
|
|
15
|
+
"module": "./dist/esm/index.js",
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsup",
|
|
22
|
+
"lint": "eslint && tsc --noEmit"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@vscode/l10n": "^0.0.18",
|
|
26
|
+
"vscode-languageserver-textdocument": "^1.0.12",
|
|
27
|
+
"vscode-languageserver-types": "^3.17.5"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@coze-arch/ts-config": "workspace:*",
|
|
31
|
+
"@coze-editor/eslint-config": "workspace:*",
|
|
32
|
+
"@types/node": "^22",
|
|
33
|
+
"eslint": "9.14.0",
|
|
34
|
+
"tsup": "^8.0.1",
|
|
35
|
+
"typescript": "^5.8.2"
|
|
36
|
+
},
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public",
|
|
39
|
+
"registry": "https://registry.npmjs.org"
|
|
40
|
+
},
|
|
41
|
+
"test:main": "./src/index.ts"
|
|
42
|
+
}
|