@odata/parser
Version:
OData(V4) Parser
716 lines • 25.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fractionalSeconds = exports.second = exports.minute = exports.hour = exports.day = exports.month = exports.year = exports.zeroToFiftyNine = exports.oneToNine = exports.nanInfinity = exports.base64b8 = exports.base64b16 = exports.base64char = exports.qcharNoAMPDQUOTE = exports.qcharNoAMP = exports.pcharNoSQUOTE = exports.pchar = exports.pctEncodedUnescaped = exports.pctEncodedNoSQUOTE = exports.pctEncoded = exports.subDelims = exports.otherDelims = exports.unreserved = exports.CLOSE = exports.OPEN = exports.SQUOTE = exports.STAR = exports.SEMI = exports.SIGN = exports.EQ = exports.COMMA = exports.COLON = exports.AT = exports.BWS = exports.RWS = exports.OWS = exports.whitespaceLength = exports.VCHAR = exports.HTAB = exports.SP = exports.DQUOTE = exports.AtoF = exports.HEXDIG = exports.DIGIT = exports.ALPHA = exports.clone = exports.tokenize = exports.Token = exports.LexerTokenType = exports.TokenType = void 0;
exports.escape = exports.valueSeparator = exports.nameSeparator = exports.quotationMark = exports.endArray = exports.beginArray = exports.endObject = exports.beginObject = exports.identifierCharacter = exports.identifierLeadingCharacter = exports.geometryPrefix = exports.geographyPrefix = void 0;
const utils_1 = require("./utils");
var TokenType;
(function (TokenType) {
TokenType["Literal"] = "Literal";
TokenType["ArrayOrObject"] = "ArrayOrObject";
TokenType["Array"] = "Array";
TokenType["Object"] = "Object";
TokenType["Property"] = "Property";
TokenType["Annotation"] = "Annotation";
TokenType["Enum"] = "Enum";
TokenType["EnumValue"] = "EnumValue";
TokenType["EnumMemberValue"] = "EnumMemberValue";
TokenType["Identifier"] = "Identifier";
TokenType["QualifiedEntityTypeName"] = "QualifiedEntityTypeName";
TokenType["QualifiedComplexTypeName"] = "QualifiedComplexTypeName";
TokenType["ODataIdentifier"] = "ODataIdentifier";
TokenType["Collection"] = "Collection";
TokenType["NamespacePart"] = "NamespacePart";
TokenType["EntitySetName"] = "EntitySetName";
TokenType["SingletonEntity"] = "SingletonEntity";
TokenType["EntityTypeName"] = "EntityTypeName";
TokenType["ComplexTypeName"] = "ComplexTypeName";
TokenType["TypeDefinitionName"] = "TypeDefinitionName";
TokenType["EnumerationTypeName"] = "EnumerationTypeName";
TokenType["EnumerationMember"] = "EnumerationMember";
TokenType["TermName"] = "TermName";
TokenType["PrimitiveProperty"] = "PrimitiveProperty";
TokenType["PrimitiveKeyProperty"] = "PrimitiveKeyProperty";
TokenType["PrimitiveNonKeyProperty"] = "PrimitiveNonKeyProperty";
TokenType["PrimitiveCollectionProperty"] = "PrimitiveCollectionProperty";
TokenType["ComplexProperty"] = "ComplexProperty";
TokenType["ComplexCollectionProperty"] = "ComplexCollectionProperty";
TokenType["StreamProperty"] = "StreamProperty";
TokenType["NavigationProperty"] = "NavigationProperty";
TokenType["EntityNavigationProperty"] = "EntityNavigationProperty";
TokenType["EntityCollectionNavigationProperty"] = "EntityCollectionNavigationProperty";
TokenType["Action"] = "Action";
TokenType["ActionImport"] = "ActionImport";
TokenType["Function"] = "Function";
TokenType["EntityFunction"] = "EntityFunction";
TokenType["EntityCollectionFunction"] = "EntityCollectionFunction";
TokenType["ComplexFunction"] = "ComplexFunction";
TokenType["ComplexCollectionFunction"] = "ComplexCollectionFunction";
TokenType["PrimitiveFunction"] = "PrimitiveFunction";
TokenType["PrimitiveCollectionFunction"] = "PrimitiveCollectionFunction";
TokenType["EntityFunctionImport"] = "EntityFunctionImport";
TokenType["EntityCollectionFunctionImport"] = "EntityCollectionFunctionImport";
TokenType["ComplexFunctionImport"] = "ComplexFunctionImport";
TokenType["ComplexCollectionFunctionImport"] = "ComplexCollectionFunctionImport";
TokenType["PrimitiveFunctionImport"] = "PrimitiveFunctionImport";
TokenType["PrimitiveCollectionFunctionImport"] = "PrimitiveCollectionFunctionImport";
TokenType["CommonExpression"] = "CommonExpression";
TokenType["AndExpression"] = "AndExpression";
TokenType["OrExpression"] = "OrExpression";
TokenType["EqualsExpression"] = "EqualsExpression";
TokenType["NotEqualsExpression"] = "NotEqualsExpression";
TokenType["LesserThanExpression"] = "LesserThanExpression";
TokenType["LesserOrEqualsExpression"] = "LesserOrEqualsExpression";
TokenType["GreaterThanExpression"] = "GreaterThanExpression";
TokenType["GreaterOrEqualsExpression"] = "GreaterOrEqualsExpression";
TokenType["HasExpression"] = "HasExpression";
TokenType["AddExpression"] = "AddExpression";
TokenType["SubExpression"] = "SubExpression";
TokenType["MulExpression"] = "MulExpression";
TokenType["DivExpression"] = "DivExpression";
TokenType["ModExpression"] = "ModExpression";
TokenType["NotExpression"] = "NotExpression";
TokenType["BoolParenExpression"] = "BoolParenExpression";
TokenType["ParenExpression"] = "ParenExpression";
TokenType["MethodCallExpression"] = "MethodCallExpression";
TokenType["IsOfExpression"] = "IsOfExpression";
TokenType["CastExpression"] = "CastExpression";
TokenType["NegateExpression"] = "NegateExpression";
TokenType["FirstMemberExpression"] = "FirstMemberExpression";
TokenType["MemberExpression"] = "MemberExpression";
TokenType["PropertyPathExpression"] = "PropertyPathExpression";
TokenType["ImplicitVariableExpression"] = "ImplicitVariableExpression";
TokenType["LambdaVariable"] = "LambdaVariable";
TokenType["LambdaVariableExpression"] = "LambdaVariableExpression";
TokenType["LambdaPredicateExpression"] = "LambdaPredicateExpression";
TokenType["AnyExpression"] = "AnyExpression";
TokenType["AllExpression"] = "AllExpression";
TokenType["CollectionNavigationExpression"] = "CollectionNavigationExpression";
TokenType["SimpleKey"] = "SimpleKey";
TokenType["CompoundKey"] = "CompoundKey";
TokenType["KeyValuePair"] = "KeyValuePair";
TokenType["KeyPropertyValue"] = "KeyPropertyValue";
TokenType["KeyPropertyAlias"] = "KeyPropertyAlias";
TokenType["SingleNavigationExpression"] = "SingleNavigationExpression";
TokenType["CollectionPathExpression"] = "CollectionPathExpression";
TokenType["ComplexPathExpression"] = "ComplexPathExpression";
TokenType["SinglePathExpression"] = "SinglePathExpression";
TokenType["FunctionExpression"] = "FunctionExpression";
TokenType["FunctionExpressionParameters"] = "FunctionExpressionParameters";
TokenType["FunctionExpressionParameter"] = "FunctionExpressionParameter";
TokenType["ParameterName"] = "ParameterName";
TokenType["ParameterAlias"] = "ParameterAlias";
TokenType["ParameterValue"] = "ParameterValue";
TokenType["CountExpression"] = "CountExpression";
TokenType["RefExpression"] = "RefExpression";
TokenType["ValueExpression"] = "ValueExpression";
TokenType["RootExpression"] = "RootExpression";
TokenType["QueryOptions"] = "QueryOptions";
TokenType["CustomQueryOption"] = "CustomQueryOption";
TokenType["Expand"] = "Expand";
TokenType["ExpandItem"] = "ExpandItem";
TokenType["ExpandPath"] = "ExpandPath";
TokenType["ExpandCountOption"] = "ExpandCountOption";
TokenType["ExpandRefOption"] = "ExpandRefOption";
TokenType["ExpandOption"] = "ExpandOption";
TokenType["Levels"] = "Levels";
TokenType["Search"] = "Search";
TokenType["SearchExpression"] = "SearchExpression";
TokenType["SearchParenExpression"] = "SearchParenExpression";
TokenType["SearchNotExpression"] = "SearchNotExpression";
TokenType["SearchOrExpression"] = "SearchOrExpression";
TokenType["SearchAndExpression"] = "SearchAndExpression";
TokenType["SearchTerm"] = "SearchTerm";
TokenType["SearchPhrase"] = "SearchPhrase";
TokenType["SearchWord"] = "SearchWord";
TokenType["Filter"] = "Filter";
TokenType["OrderBy"] = "OrderBy";
TokenType["OrderByItem"] = "OrderByItem";
TokenType["Skip"] = "Skip";
TokenType["Top"] = "Top";
TokenType["Format"] = "Format";
TokenType["InlineCount"] = "InlineCount";
TokenType["Select"] = "Select";
TokenType["SelectItem"] = "SelectItem";
TokenType["SelectPath"] = "SelectPath";
TokenType["AliasAndValue"] = "AliasAndValue";
TokenType["SkipToken"] = "SkipToken";
TokenType["Id"] = "Id";
TokenType["Crossjoin"] = "Crossjoin";
TokenType["AllResource"] = "AllResource";
TokenType["ActionImportCall"] = "ActionImportCall";
TokenType["FunctionImportCall"] = "FunctionImportCall";
TokenType["EntityCollectionFunctionImportCall"] = "EntityCollectionFunctionImportCall";
TokenType["EntityFunctionImportCall"] = "EntityFunctionImportCall";
TokenType["ComplexCollectionFunctionImportCall"] = "ComplexCollectionFunctionImportCall";
TokenType["ComplexFunctionImportCall"] = "ComplexFunctionImportCall";
TokenType["PrimitiveCollectionFunctionImportCall"] = "PrimitiveCollectionFunctionImportCall";
TokenType["PrimitiveFunctionImportCall"] = "PrimitiveFunctionImportCall";
TokenType["FunctionParameters"] = "FunctionParameters";
TokenType["FunctionParameter"] = "FunctionParameter";
TokenType["ResourcePath"] = "ResourcePath";
TokenType["CollectionNavigation"] = "CollectionNavigation";
TokenType["CollectionNavigationPath"] = "CollectionNavigationPath";
TokenType["SingleNavigation"] = "SingleNavigation";
TokenType["PropertyPath"] = "PropertyPath";
TokenType["ComplexPath"] = "ComplexPath";
TokenType["BoundOperation"] = "BoundOperation";
TokenType["BoundActionCall"] = "BoundActionCall";
TokenType["BoundEntityFunctionCall"] = "BoundEntityFunctionCall";
TokenType["BoundEntityCollectionFunctionCall"] = "BoundEntityCollectionFunctionCall";
TokenType["BoundComplexFunctionCall"] = "BoundComplexFunctionCall";
TokenType["BoundComplexCollectionFunctionCall"] = "BoundComplexCollectionFunctionCall";
TokenType["BoundPrimitiveFunctionCall"] = "BoundPrimitiveFunctionCall";
TokenType["BoundPrimitiveCollectionFunctionCall"] = "BoundPrimitiveCollectionFunctionCall";
TokenType["ODataUri"] = "ODataUri";
TokenType["Batch"] = "Batch";
TokenType["Entity"] = "Entity";
TokenType["Metadata"] = "Metadata";
})(TokenType = exports.TokenType || (exports.TokenType = {}));
exports.LexerTokenType = TokenType;
class Token {
constructor(token) {
this.position = token.position;
this.next = token.next;
this.value = token.value;
this.type = token.type;
this.raw = token.raw;
if (token.metadata) {
this.metadata = token.metadata;
}
}
}
exports.Token = Token;
function tokenize(value, index, next, tokenValue, tokenType, metadataContextContainer) {
const token = new Token({
position: index,
next,
value: tokenValue,
type: tokenType,
raw: utils_1.default.stringify(value, index, next)
});
if (metadataContextContainer && metadataContextContainer.metadata) {
token.metadata = metadataContextContainer.metadata;
delete metadataContextContainer.metadata;
}
return token;
}
exports.tokenize = tokenize;
function clone(token) {
return new Token({
position: token.position,
next: token.next,
value: token.value,
type: token.type,
raw: token.raw
});
}
exports.clone = clone;
// core definitions
function ALPHA(value) {
return ((value >= 0x41 && value <= 0x5a) ||
(value >= 0x61 && value <= 0x7a) ||
value >= 0x80);
}
exports.ALPHA = ALPHA;
function DIGIT(value) {
return value >= 0x30 && value <= 0x39;
}
exports.DIGIT = DIGIT;
function HEXDIG(value) {
return DIGIT(value) || AtoF(value);
}
exports.HEXDIG = HEXDIG;
function AtoF(value) {
return (value >= 0x41 && value <= 0x46) || (value >= 0x61 && value <= 0x66);
}
exports.AtoF = AtoF;
function DQUOTE(value) {
return value === 0x22;
}
exports.DQUOTE = DQUOTE;
function SP(value) {
return value === 0x20;
}
exports.SP = SP;
function HTAB(value) {
return value === 0x09;
}
exports.HTAB = HTAB;
function VCHAR(value) {
return value >= 0x21 && value <= 0x7e;
}
exports.VCHAR = VCHAR;
// punctuation
function whitespaceLength(value, index) {
if (utils_1.default.equals(value, index, '%20') || utils_1.default.equals(value, index, '%09')) {
return 3;
}
else if (SP(value[index]) ||
HTAB(value[index]) ||
value[index] === 0x20 ||
value[index] === 0x09) {
return 1;
}
}
exports.whitespaceLength = whitespaceLength;
function OWS(value, index) {
index = index || 0;
let inc = whitespaceLength(value, index);
while (inc) {
index += inc;
inc = whitespaceLength(value, index);
}
return index;
}
exports.OWS = OWS;
function RWS(value, index) {
return OWS(value, index);
}
exports.RWS = RWS;
function BWS(value, index) {
return OWS(value, index);
}
exports.BWS = BWS;
function AT(value, index) {
if (value[index] === 0x40) {
return index + 1;
}
else if (utils_1.default.equals(value, index, '%40')) {
return index + 3;
}
}
exports.AT = AT;
function COLON(value, index) {
if (value[index] === 0x3a) {
return index + 1;
}
else if (utils_1.default.equals(value, index, '%3A')) {
return index + 3;
}
}
exports.COLON = COLON;
function COMMA(value, index) {
if (value[index] === 0x2c) {
return index + 1;
}
else if (utils_1.default.equals(value, index, '%2C')) {
return index + 3;
}
}
exports.COMMA = COMMA;
function EQ(value, index) {
if (value[index] === 0x3d) {
return index + 1;
}
}
exports.EQ = EQ;
function SIGN(value, index) {
if (value[index] === 0x2b || value[index] === 0x2d) {
return index + 1;
}
else if (utils_1.default.equals(value, index, '%2B')) {
return index + 3;
}
}
exports.SIGN = SIGN;
function SEMI(value, index) {
if (value[index] === 0x3b) {
return index + 1;
}
else if (utils_1.default.equals(value, index, '%3B')) {
return index + 3;
}
}
exports.SEMI = SEMI;
function STAR(value, index) {
if (value[index] === 0x2a) {
return index + 1;
}
else if (utils_1.default.equals(value, index, '%2A')) {
return index + 3;
}
}
exports.STAR = STAR;
function SQUOTE(value, index) {
if (value[index] === 0x27) {
return index + 1;
}
else if (utils_1.default.equals(value, index, '%27')) {
return index + 3;
}
}
exports.SQUOTE = SQUOTE;
function OPEN(value, index) {
if (value[index] === 0x28) {
return index + 1;
}
else if (utils_1.default.equals(value, index, '%28')) {
return index + 3;
}
}
exports.OPEN = OPEN;
function CLOSE(value, index) {
if (value[index] === 0x29) {
return index + 1;
}
else if (utils_1.default.equals(value, index, '%29')) {
return index + 3;
}
}
exports.CLOSE = CLOSE;
// unreserved ALPHA / DIGIT / "-" / "." / "_" / "~"
function unreserved(value) {
return (ALPHA(value) ||
DIGIT(value) ||
value === 0x2d ||
value === 0x2e ||
value === 0x5f ||
value === 0x7e);
}
exports.unreserved = unreserved;
// other-delims "!" / "(" / ")" / "*" / "+" / "," / ";"
function otherDelims(value, index) {
if (value[index] === 0x21 || value[index] === 0x2b) {
return index + 1;
}
return (OPEN(value, index) ||
CLOSE(value, index) ||
STAR(value, index) ||
COMMA(value, index) ||
SEMI(value, index));
}
exports.otherDelims = otherDelims;
// sub-delims = "$" / "&" / "'" / "=" / other-delims
function subDelims(value, index) {
if (value[index] === 0x24 || value[index] === 0x26) {
return index + 1;
}
return SQUOTE(value, index) || EQ(value, index) || otherDelims(value, index);
}
exports.subDelims = subDelims;
function pctEncoded(value, index) {
if (value[index] !== 0x25 ||
!HEXDIG(value[index + 1]) ||
!HEXDIG(value[index + 2])) {
return index;
}
return index + 3;
}
exports.pctEncoded = pctEncoded;
// pct-encoded-no-SQUOTE = "%" ( "0" / "1" / "3" / "4" / "5" / "6" / "8" / "9" / A-to-F ) HEXDIG
// / "%" "2" ( "0" / "1" / "2" / "3" / "4" / "5" / "6" / "8" / "9" / A-to-F )
function pctEncodedNoSQUOTE(value, index) {
if (utils_1.default.equals(value, index, '%27')) {
return index;
}
return pctEncoded(value, index);
}
exports.pctEncodedNoSQUOTE = pctEncodedNoSQUOTE;
function pctEncodedUnescaped(value, index) {
if (utils_1.default.equals(value, index, '%22') ||
utils_1.default.equals(value, index, '%3') ||
utils_1.default.equals(value, index, '%4') ||
utils_1.default.equals(value, index, '%5C')) {
return index;
}
return pctEncoded(value, index);
}
exports.pctEncodedUnescaped = pctEncodedUnescaped;
function pchar(value, index) {
if (unreserved(value[index])) {
return index + 1;
}
return (subDelims(value, index) ||
COLON(value, index) ||
AT(value, index) ||
pctEncoded(value, index) ||
index);
}
exports.pchar = pchar;
function pcharNoSQUOTE(value, index) {
if (unreserved(value[index]) ||
value[index] === 0x24 ||
value[index] === 0x26) {
return index + 1;
}
return VCHAR(value[index]) === true ? index + 1 : index;
}
exports.pcharNoSQUOTE = pcharNoSQUOTE;
function qcharNoAMP(value, index) {
if (unreserved(value[index]) ||
value[index] === 0x3a ||
value[index] === 0x40 ||
value[index] === 0x2f ||
value[index] === 0x3f ||
value[index] === 0x24 ||
value[index] === 0x27 ||
value[index] === 0x3d) {
return index + 1;
}
return pctEncoded(value, index) || otherDelims(value, index) || index;
}
exports.qcharNoAMP = qcharNoAMP;
function qcharNoAMPDQUOTE(value, index) {
index = BWS(value, index);
if (unreserved(value[index]) ||
value[index] === 0x3a ||
value[index] === 0x40 ||
value[index] === 0x2f ||
value[index] === 0x3f ||
value[index] === 0x24 ||
value[index] === 0x27 ||
value[index] === 0x3d) {
return index + 1;
}
return otherDelims(value, index) || pctEncodedUnescaped(value, index);
}
exports.qcharNoAMPDQUOTE = qcharNoAMPDQUOTE;
// export function pchar(value:number):boolean { return unreserved(value) || otherDelims(value) || value == 0x24 || value == 0x26 || EQ(value) || COLON(value) || AT(value); }
function base64char(value) {
return ALPHA(value) || DIGIT(value) || value === 0x2d || value === 0x5f;
}
exports.base64char = base64char;
function base64b16(value, index) {
const start = index;
if (!base64char(value[index]) && !base64char(value[index + 1])) {
return start;
}
index += 2;
if (!utils_1.default.is(value[index], 'AEIMQUYcgkosw048')) {
return start;
}
index++;
if (value[index] === 0x3d) {
index++;
}
return index;
}
exports.base64b16 = base64b16;
function base64b8(value, index) {
const start = index;
if (!base64char(value[index])) {
return start;
}
index++;
if (value[index] !== 0x41 ||
value[index] !== 0x51 ||
value[index] !== 0x67 ||
value[index] !== 0x77) {
return start;
}
index++;
if (value[index] === 0x3d && value[index + 1] === 0x3d) {
index += 2;
}
return index;
}
exports.base64b8 = base64b8;
function nanInfinity(value, index) {
return (utils_1.default.equals(value, index, 'NaN') ||
utils_1.default.equals(value, index, '-INF') ||
utils_1.default.equals(value, index, 'INF'));
}
exports.nanInfinity = nanInfinity;
function oneToNine(value) {
return value !== 0x30 && DIGIT(value);
}
exports.oneToNine = oneToNine;
function zeroToFiftyNine(value, index) {
if (value[index] >= 0x30 && value[index] <= 0x35 && DIGIT(value[index + 1])) {
return index + 2;
}
return index;
}
exports.zeroToFiftyNine = zeroToFiftyNine;
function year(value, index) {
const start = index;
let end = index;
if (value[index] === 0x2d) {
index++;
}
if ((value[index] === 0x30 &&
(end = utils_1.default.required(value, index + 1, DIGIT, 3, 3))) ||
(oneToNine(value[index]) &&
(end = utils_1.default.required(value, index + 1, DIGIT, 3)))) {
return end;
}
return start;
}
exports.year = year;
function month(value, index) {
if ((value[index] === 0x30 && oneToNine(value[index + 1])) ||
(value[index] === 0x31 &&
value[index + 1] >= 0x30 &&
value[index + 1] <= 0x32)) {
return index + 2;
}
return index;
}
exports.month = month;
function day(value, index) {
if ((value[index] === 0x30 && oneToNine(value[index + 1])) ||
((value[index] === 0x31 || value[index] === 0x32) &&
DIGIT(value[index + 1])) ||
(value[index] === 0x33 &&
(value[index + 1] === 0x30 || value[index + 1] === 0x31))) {
return index + 2;
}
return index;
}
exports.day = day;
function hour(value, index) {
if (((value[index] === 0x30 || value[index] === 0x31) &&
DIGIT(value[index + 1])) ||
(value[index] === 0x32 &&
(value[index + 1] === 0x30 ||
value[index + 1] === 0x31 ||
value[index + 1] === 0x32 ||
value[index + 1] === 0x33))) {
return index + 2;
}
return index;
}
exports.hour = hour;
function minute(value, index) {
return zeroToFiftyNine(value, index);
}
exports.minute = minute;
function second(value, index) {
return zeroToFiftyNine(value, index);
}
exports.second = second;
function fractionalSeconds(value, index) {
return utils_1.default.required(value, index, DIGIT, 1, 12);
}
exports.fractionalSeconds = fractionalSeconds;
function geographyPrefix(value, index) {
return utils_1.default.equals(value, index, 'geography') ? index + 9 : index;
}
exports.geographyPrefix = geographyPrefix;
function geometryPrefix(value, index) {
return utils_1.default.equals(value, index, 'geometry') ? index + 8 : index;
}
exports.geometryPrefix = geometryPrefix;
function identifierLeadingCharacter(value) {
return ALPHA(value) || value === 0x5f;
}
exports.identifierLeadingCharacter = identifierLeadingCharacter;
function identifierCharacter(value) {
return identifierLeadingCharacter(value) || DIGIT(value);
}
exports.identifierCharacter = identifierCharacter;
function beginObject(value, index) {
let bws = BWS(value, index);
const start = index;
index = bws;
if (utils_1.default.equals(value, index, '{')) {
index++;
}
else if (utils_1.default.equals(value, index, '%7B')) {
index += 3;
}
if (index === bws) {
return start;
}
bws = BWS(value, index);
return bws;
}
exports.beginObject = beginObject;
function endObject(value, index) {
let bws = BWS(value, index);
const start = index;
index = bws;
if (utils_1.default.equals(value, index, '}')) {
index++;
}
else if (utils_1.default.equals(value, index, '%7D')) {
index += 3;
}
if (index === bws) {
return start;
}
bws = BWS(value, index);
return bws;
}
exports.endObject = endObject;
function beginArray(value, index) {
let bws = BWS(value, index);
const start = index;
index = bws;
if (utils_1.default.equals(value, index, '[')) {
index++;
}
else if (utils_1.default.equals(value, index, '%5B')) {
index += 3;
}
if (index === bws) {
return start;
}
bws = BWS(value, index);
return bws;
}
exports.beginArray = beginArray;
function endArray(value, index) {
let bws = BWS(value, index);
const start = index;
index = bws;
if (utils_1.default.equals(value, index, ']')) {
index++;
}
else if (utils_1.default.equals(value, index, '%5D')) {
index += 3;
}
if (index === bws) {
return start;
}
bws = BWS(value, index);
return bws;
}
exports.endArray = endArray;
function quotationMark(value, index) {
if (DQUOTE(value[index])) {
return index + 1;
}
if (utils_1.default.equals(value, index, '%22')) {
return index + 3;
}
return index;
}
exports.quotationMark = quotationMark;
function nameSeparator(value, index) {
let bws = BWS(value, index);
const start = index;
index = bws;
const colon = COLON(value, index);
if (!colon) {
return start;
}
index = colon;
bws = BWS(value, index);
return bws;
}
exports.nameSeparator = nameSeparator;
function valueSeparator(value, index) {
let bws = BWS(value, index);
const start = index;
index = bws;
const comma = COMMA(value, index);
if (!comma) {
return start;
}
index = comma;
bws = BWS(value, index);
return bws;
}
exports.valueSeparator = valueSeparator;
function escape(value, index) {
if (utils_1.default.equals(value, index, '\\')) {
return index + 1;
}
if (utils_1.default.equals(value, index, '%5C')) {
return index + 3;
}
return index;
}
exports.escape = escape;
//# sourceMappingURL=lexer.js.map