mirror of
https://github.com/luxfi/consensus.git
synced 2026-09-24 00:26:58 +00:00
- Removed all Snow consensus code and dependencies - Replaced snow.Context with consensuscontext.Context - Updated all imports and references - Added comprehensive test suites for core packages - Fixed all build errors and test failures - Achieved 100% test pass rate (21 packages passing) - Improved test coverage to 30% Breaking changes: - Removed snow package entirely - Changed VM interface to use VMState instead of snow.State - Updated ChainContext structure Tests added: - core/app_error_test.go: 100% coverage - core/bootstrap_test.go: comprehensive concurrent tests - core/health_test.go: full integration tests - validators/validators_test.go: complete interface tests - version/version_test.go: 100% coverage - codec/codec_test.go: marshal/unmarshal tests - context/context_test.go: all functions tested
88 lines
2.9 KiB
TypeScript
88 lines
2.9 KiB
TypeScript
/**
|
|
* Splits an input string into lexical tokens, i.e. smaller strings that are
|
|
* easily identifiable by `tokens.tokenType()`.
|
|
*
|
|
* Lexing starts always in a "stream" context. Incomplete input may be buffered
|
|
* until a complete token can be emitted.
|
|
*
|
|
* In addition to slices of the original input, the following control characters
|
|
* may also be emitted:
|
|
*
|
|
* - `\x02` (Start of Text): A document starts with the next token
|
|
* - `\x18` (Cancel): Unexpected end of flow-mode (indicates an error)
|
|
* - `\x1f` (Unit Separator): Next token is a scalar value
|
|
* - `\u{FEFF}` (Byte order mark): Emitted separately outside documents
|
|
*/
|
|
export declare class Lexer {
|
|
/**
|
|
* Flag indicating whether the end of the current buffer marks the end of
|
|
* all input
|
|
*/
|
|
private atEnd;
|
|
/**
|
|
* Explicit indent set in block scalar header, as an offset from the current
|
|
* minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not
|
|
* explicitly set.
|
|
*/
|
|
private blockScalarIndent;
|
|
/**
|
|
* Block scalars that include a + (keep) chomping indicator in their header
|
|
* include trailing empty lines, which are otherwise excluded from the
|
|
* scalar's contents.
|
|
*/
|
|
private blockScalarKeep;
|
|
/** Current input */
|
|
private buffer;
|
|
/**
|
|
* Flag noting whether the map value indicator : can immediately follow this
|
|
* node within a flow context.
|
|
*/
|
|
private flowKey;
|
|
/** Count of surrounding flow collection levels. */
|
|
private flowLevel;
|
|
/**
|
|
* Minimum level of indentation required for next lines to be parsed as a
|
|
* part of the current scalar value.
|
|
*/
|
|
private indentNext;
|
|
/** Indentation level of the current line. */
|
|
private indentValue;
|
|
/** Position of the next \n character. */
|
|
private lineEndPos;
|
|
/** Stores the state of the lexer if reaching the end of incpomplete input */
|
|
private next;
|
|
/** A pointer to `buffer`; the current position of the lexer. */
|
|
private pos;
|
|
/**
|
|
* Generate YAML tokens from the `source` string. If `incomplete`,
|
|
* a part of the last line may be left as a buffer for the next call.
|
|
*
|
|
* @returns A generator of lexical tokens
|
|
*/
|
|
lex(source: string, incomplete?: boolean): Generator<string, void>;
|
|
private atLineEnd;
|
|
private charAt;
|
|
private continueScalar;
|
|
private getLine;
|
|
private hasChars;
|
|
private setNext;
|
|
private peek;
|
|
private parseNext;
|
|
private parseStream;
|
|
private parseLineStart;
|
|
private parseBlockStart;
|
|
private parseDocument;
|
|
private parseFlowCollection;
|
|
private parseQuotedScalar;
|
|
private parseBlockScalarHeader;
|
|
private parseBlockScalar;
|
|
private parsePlainScalar;
|
|
private pushCount;
|
|
private pushToIndex;
|
|
private pushIndicators;
|
|
private pushTag;
|
|
private pushNewline;
|
|
private pushSpaces;
|
|
private pushUntil;
|
|
}
|