@cjser/jsdoc-type-pratt-parser 9.2.1-cjser.2 → 9.2.2-cjser.2

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/dist/index.mjs CHANGED
@@ -1501,6 +1501,9 @@ var Lexer = class Lexer {
1501
1501
  const next = Lexer.read(this.lexerRules, this.text);
1502
1502
  return new Lexer(this.lexerRules, next.text, this.current, this.next, next.token);
1503
1503
  }
1504
+ clone() {
1505
+ return new Lexer(this.lexerRules, this.text, this.previous, this.current, this.next);
1506
+ }
1504
1507
  };
1505
1508
  //#endregion
1506
1509
  //#region src/parslets/ObjectSquaredPropertyParslet.ts
@@ -1511,7 +1514,15 @@ const objectSquaredPropertyParslet = composeParslet({
1511
1514
  if (parser.baseParser === void 0) throw new Error("Only allowed inside object grammar");
1512
1515
  parser.consume("[");
1513
1516
  let innerBracketType;
1514
- if (parser.externalParsers?.computedPropertyParser === void 0) try {
1517
+ let isIndexSignatureOrMappedType = false;
1518
+ if (parser.externalParsers?.computedPropertyParser !== void 0) try {
1519
+ const tryLexer = parser.lexer.clone();
1520
+ const tryParser = new Parser(parser.grammar, tryLexer, parser.baseParser, { externalParsers: parser.externalParsers });
1521
+ const parsedType = tryParser.parseIntermediateType(2);
1522
+ const isMapped = parsedType?.type === "JsdocTypeName" && tryParser.consume("in");
1523
+ if (parsedType?.type === "JsdocTypeObjectField" && typeof parsedType.key === "string" && !parsedType.optional && !parsedType.readonly && parsedType.right !== void 0 || isMapped) isIndexSignatureOrMappedType = true;
1524
+ } catch (err) {}
1525
+ if (isIndexSignatureOrMappedType || parser.externalParsers?.computedPropertyParser === void 0) try {
1515
1526
  innerBracketType = parser.parseIntermediateType(2);
1516
1527
  } catch (err) {
1517
1528
  throw new Error("Error parsing value inside square bracketed property.", { cause: err });
@@ -1620,7 +1631,10 @@ const objectSquaredPropertyParslet = composeParslet({
1620
1631
  type = "JsdocTypeComputedMethod";
1621
1632
  checkMiddle();
1622
1633
  parser.consume(":");
1623
- const nextValue = parser.parseType(4);
1634
+ const parentParser = parser.baseParser;
1635
+ parentParser.acceptLexerState(parser);
1636
+ const nextValue = parentParser.parseType(4);
1637
+ parser.acceptLexerState(parentParser);
1624
1638
  key = {
1625
1639
  type,
1626
1640
  optional,
@@ -1633,7 +1647,10 @@ const objectSquaredPropertyParslet = composeParslet({
1633
1647
  type = "JsdocTypeComputedProperty";
1634
1648
  checkMiddle();
1635
1649
  if (!parser.consume(":")) throw new Error("Incomplete computed property: missing colon");
1636
- right = parser.parseType(4);
1650
+ const parentParser = parser.baseParser;
1651
+ parentParser.acceptLexerState(parser);
1652
+ right = parentParser.parseType(4);
1653
+ parser.acceptLexerState(parentParser);
1637
1654
  key = {
1638
1655
  type,
1639
1656
  value: innerBracketType
@@ -16,7 +16,7 @@ var __copyProps = (to, from, except, desc) => {
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
18
 
19
- // packages/@cjser/jsdoc-type-pratt-parser.tmp-25-1788281970041/dist/index.mjs
19
+ // packages/@cjser/jsdoc-type-pratt-parser.tmp-27-1789662903248/dist/index.mjs
20
20
  var index_exports = {};
21
21
  __export(index_exports, {
22
22
  catharsisTransform: () => catharsisTransform,
@@ -1447,16 +1447,28 @@ var Lexer = class Lexer2 {
1447
1447
  const next = Lexer2.read(this.lexerRules, this.text);
1448
1448
  return new Lexer2(this.lexerRules, next.text, this.current, this.next, next.token);
1449
1449
  }
1450
+ clone() {
1451
+ return new Lexer2(this.lexerRules, this.text, this.previous, this.current, this.next);
1452
+ }
1450
1453
  };
1451
1454
  var objectSquaredPropertyParslet = composeParslet({
1452
1455
  name: "objectSquarePropertyParslet",
1453
1456
  accept: (type) => type === "[",
1454
1457
  parsePrefix: (parser) => {
1455
- var _a, _b;
1458
+ var _a, _b, _c;
1456
1459
  if (parser.baseParser === void 0) throw new Error("Only allowed inside object grammar");
1457
1460
  parser.consume("[");
1458
1461
  let innerBracketType;
1459
- if (((_a = parser.externalParsers) == null ? void 0 : _a.computedPropertyParser) === void 0) try {
1462
+ let isIndexSignatureOrMappedType = false;
1463
+ if (((_a = parser.externalParsers) == null ? void 0 : _a.computedPropertyParser) !== void 0) try {
1464
+ const tryLexer = parser.lexer.clone();
1465
+ const tryParser = new Parser(parser.grammar, tryLexer, parser.baseParser, { externalParsers: parser.externalParsers });
1466
+ const parsedType = tryParser.parseIntermediateType(2);
1467
+ const isMapped = (parsedType == null ? void 0 : parsedType.type) === "JsdocTypeName" && tryParser.consume("in");
1468
+ if ((parsedType == null ? void 0 : parsedType.type) === "JsdocTypeObjectField" && typeof parsedType.key === "string" && !parsedType.optional && !parsedType.readonly && parsedType.right !== void 0 || isMapped) isIndexSignatureOrMappedType = true;
1469
+ } catch (err) {
1470
+ }
1471
+ if (isIndexSignatureOrMappedType || ((_b = parser.externalParsers) == null ? void 0 : _b.computedPropertyParser) === void 0) try {
1460
1472
  innerBracketType = parser.parseIntermediateType(2);
1461
1473
  } catch (err) {
1462
1474
  throw new Error("Error parsing value inside square bracketed property.", { cause: err });
@@ -1501,7 +1513,7 @@ var objectSquaredPropertyParslet = composeParslet({
1501
1513
  };
1502
1514
  parser.acceptLexerState(parentParser);
1503
1515
  } else {
1504
- if (((_b = parser.externalParsers) == null ? void 0 : _b.computedPropertyParser) !== void 0) {
1516
+ if (((_c = parser.externalParsers) == null ? void 0 : _c.computedPropertyParser) !== void 0) {
1505
1517
  let remaining = parser.lexer.current.text + parser.lexer.remaining();
1506
1518
  let checkingText = remaining;
1507
1519
  while (checkingText !== "") {
@@ -1566,7 +1578,10 @@ var objectSquaredPropertyParslet = composeParslet({
1566
1578
  type = "JsdocTypeComputedMethod";
1567
1579
  checkMiddle();
1568
1580
  parser.consume(":");
1569
- const nextValue = parser.parseType(4);
1581
+ const parentParser = parser.baseParser;
1582
+ parentParser.acceptLexerState(parser);
1583
+ const nextValue = parentParser.parseType(4);
1584
+ parser.acceptLexerState(parentParser);
1570
1585
  key = {
1571
1586
  type,
1572
1587
  optional,
@@ -1579,7 +1594,10 @@ var objectSquaredPropertyParslet = composeParslet({
1579
1594
  type = "JsdocTypeComputedProperty";
1580
1595
  checkMiddle();
1581
1596
  if (!parser.consume(":")) throw new Error("Incomplete computed property: missing colon");
1582
- right = parser.parseType(4);
1597
+ const parentParser = parser.baseParser;
1598
+ parentParser.acceptLexerState(parser);
1599
+ right = parentParser.parseType(4);
1600
+ parser.acceptLexerState(parentParser);
1583
1601
  key = {
1584
1602
  type,
1585
1603
  value: innerBracketType
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cjser/jsdoc-type-pratt-parser",
3
- "version": "9.2.1-cjser.2",
3
+ "version": "9.2.2-cjser.2",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.mts",
@@ -64,7 +64,7 @@
64
64
  "eslint-plugin-promise": "^7.3.0",
65
65
  "espree": "^11.2.0",
66
66
  "jsdoctypeparser": "^9.0.0",
67
- "mocha": "^11.8.0",
67
+ "mocha": "^12.0.0",
68
68
  "npm-upgrade": "^3.3.0",
69
69
  "patch-package": "^8.0.1",
70
70
  "semantic-release": "^25.0.9",
@@ -120,11 +120,11 @@
120
120
  },
121
121
  "main": "./dist-cjser/index.cjs",
122
122
  "cjser": {
123
- "sourceVersion": "9.2.1",
123
+ "sourceVersion": "9.2.2",
124
124
  "cjserVersion": 2,
125
125
  "original": {
126
126
  "name": "jsdoc-type-pratt-parser",
127
- "version": "9.2.1",
127
+ "version": "9.2.2",
128
128
  "exports": {
129
129
  ".": "./dist/index.mjs",
130
130
  "./package.json": "./package.json"