@gmb/bitmark-parser-generator 3.38.0 → 4.0.0

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.
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8"/>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
- <title>@gmb/bitmark-parser-generator [29 Jul 2025 at 04:02]</title>
6
+ <title>@gmb/bitmark-parser-generator [30 Jul 2025 at 02:39]</title>
7
7
  <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
8
8
 
9
9
  <script>
@@ -31,7 +31,7 @@
31
31
  <body>
32
32
  <div id="app"></div>
33
33
  <script>
34
- window.chartData = [{"label":"bitmark-parser-generator.min.js","isAsset":true,"statSize":1135622,"parsedSize":492792,"gzipSize":96078,"groups":[{"label":"dist/browser/cjs","path":"./dist/browser/cjs","statSize":1128642,"groups":[{"id":922,"label":"index.cjs","path":"./dist/browser/cjs/index.cjs","statSize":1128642,"parsedSize":492688,"gzipSize":96078}],"parsedSize":492688,"gzipSize":96078},{"label":"node_modules/@ncoderz/superenum/dist/esm","path":"./node_modules/@ncoderz/superenum/dist/esm","statSize":6980,"groups":[{"id":718,"label":"superenum.js","path":"./node_modules/@ncoderz/superenum/dist/esm/superenum.js","statSize":6980}],"parsedSize":0,"gzipSize":0}],"isInitialByEntrypoint":{"main":true}}];
34
+ window.chartData = [{"label":"bitmark-parser-generator.min.js","isAsset":true,"statSize":1135433,"parsedSize":492513,"gzipSize":96061,"groups":[{"label":"dist/browser/cjs","path":"./dist/browser/cjs","statSize":1128453,"groups":[{"id":922,"label":"index.cjs","path":"./dist/browser/cjs/index.cjs","statSize":1128453,"parsedSize":492409,"gzipSize":96061}],"parsedSize":492409,"gzipSize":96061},{"label":"node_modules/@ncoderz/superenum/dist/esm","path":"./node_modules/@ncoderz/superenum/dist/esm","statSize":6980,"groups":[{"id":718,"label":"superenum.js","path":"./node_modules/@ncoderz/superenum/dist/esm/superenum.js","statSize":6980}],"parsedSize":0,"gzipSize":0}],"isInitialByEntrypoint":{"main":true}}];
35
35
  window.entrypoints = ["main"];
36
36
  window.defaultSizes = "stat";
37
37
  </script>
@@ -1508,12 +1508,12 @@ var StringUtils = class {
1508
1508
  subLength = width;
1509
1509
  rangeStartNext = rangeStart + width;
1510
1510
  }
1511
- subString = str.substr(rangeStart, subLength);
1511
+ subString = str.slice(rangeStart, rangeStart + subLength);
1512
1512
  rangeStart = rangeStartNext;
1513
1513
  result.push(subString.trim());
1514
1514
  }
1515
1515
  if (rangeStart < len) {
1516
- subString = str.substr(rangeStart);
1516
+ subString = str.slice(rangeStart);
1517
1517
  result.push(subString);
1518
1518
  }
1519
1519
  return result;
@@ -1525,6 +1525,7 @@ var StringUtils = class {
1525
1525
  * @returns the camelCase version of the string
1526
1526
  */
1527
1527
  kebabToCamel(str) {
1528
+ if (!str) return str;
1528
1529
  return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
1529
1530
  }
1530
1531
  };
@@ -8924,7 +8925,7 @@ var instance2 = new Config();
8924
8925
  // src/generated/package_info.ts
8925
8926
  var PACKAGE_INFO = {
8926
8927
  "name": "@gmb/bitmark-parser-generator",
8927
- "version": "3.38.0",
8928
+ "version": "4.0.0",
8928
8929
  "author": "Get More Brain Ltd",
8929
8930
  "license": "ISC",
8930
8931
  "description": "A bitmark parser and generator using Peggy.js"
@@ -20690,8 +20691,10 @@ var NodeValidator = class {
20690
20691
  if (!valid) {
20691
20692
  if (resource.type) {
20692
20693
  ret = {
20693
- type: resource.type
20694
- // __typeAlias: resource.type,
20694
+ type: resource.type,
20695
+ __typeAlias: resource.type,
20696
+ __configKey: resource.__configKey,
20697
+ __invalid: true
20695
20698
  };
20696
20699
  }
20697
20700
  }
@@ -24384,13 +24387,14 @@ var StringWriter = class {
24384
24387
  }
24385
24388
  writeLine(value) {
24386
24389
  if (!this._buffer) return this;
24390
+ let line;
24387
24391
  if (value != null) {
24388
- this._buffer.push(value + this.endOfLineString);
24389
- this.lastWrite = value + this.endOfLineString;
24392
+ line = value + this.endOfLineString;
24390
24393
  } else {
24391
- this._buffer.push(this.endOfLineString);
24392
- this.lastWrite = this.endOfLineString;
24394
+ line = this.endOfLineString;
24393
24395
  }
24396
+ this._buffer.push(line);
24397
+ this.lastWrite = line;
24394
24398
  return this;
24395
24399
  }
24396
24400
  writeLines(values, delimiter) {
@@ -31216,7 +31220,8 @@ function buildResources(context, resourceTypeAttachment, resources) {
31216
31220
  const countsMax = resourcesConfig.getCountsMax();
31217
31221
  if (resources) {
31218
31222
  for (const r of resources.reverse()) {
31219
- const configKey = resourceTypeToConfigKey(r.__typeAlias);
31223
+ if (r.__invalid) continue;
31224
+ const configKey = r.__configKey;
31220
31225
  let countMin = countsMin.get(configKey) ?? 0;
31221
31226
  let countMax = countsMax.get(configKey) ?? 0;
31222
31227
  countMin = Math.max(0, countMin - 1);
@@ -31237,7 +31242,7 @@ function buildResources(context, resourceTypeAttachment, resources) {
31237
31242
  context.addWarning(warningMsg);
31238
31243
  } else if (filteredResources.length === 0 && resourceTypeAttachment) {
31239
31244
  context.addWarning(
31240
- `Resource type [&${resourceTypeAttachment}] is specified in the bit header, but no such a resource is present`
31245
+ `Resource type [&${resourceTypeAttachment}] is specified in the bit header, but no such resource is present`
31241
31246
  );
31242
31247
  }
31243
31248
  if (excessResources.length > 0) {
@@ -35179,11 +35184,10 @@ var BitmarkParserGenerator = class {
35179
35184
  /**
35180
35185
  * Generate the new configuration for the bitmark parser.
35181
35186
  */
35182
- async generateConfig(options) {
35187
+ generateConfig(options) {
35183
35188
  const opts = Object.assign({}, options);
35184
35189
  const builder3 = new ConfigBuilder();
35185
- await builder3.build(opts);
35186
- return void 0;
35190
+ builder3.build(opts);
35187
35191
  }
35188
35192
  /**
35189
35193
  * Convert bitmark from bitmark to JSON, or JSON to bitmark.
@@ -35207,11 +35211,11 @@ var BitmarkParserGenerator = class {
35207
35211
  * @param input - bitmark or JSON or AST as a string, JSON or AST as plain JS object, or path to a file containing
35208
35212
  * bitmark, JSON, or AST.
35209
35213
  * @param options - the conversion options
35210
- * @returns Promise that resolves to string if converting to bitmark, a plain JS object if converting to JSON, or
35214
+ * @returns A string if converting to bitmark, a plain JS object if converting to JSON, or
35211
35215
  * void if writing to a file
35212
35216
  * @throws Error if any error occurs
35213
35217
  */
35214
- async convert(input, options) {
35218
+ convert(input, options) {
35215
35219
  let res;
35216
35220
  const opts = Object.assign({}, options);
35217
35221
  const jsonOptions = Object.assign({}, opts.jsonOptions);
@@ -35240,92 +35244,92 @@ var BitmarkParserGenerator = class {
35240
35244
  }
35241
35245
  const isJson = !!ast?.bits;
35242
35246
  const isBitmark = !isJson && !isAst;
35243
- const bitmarkToBitmark = async (bitmarkStr) => {
35244
- await bitmarkToAst(bitmarkStr);
35245
- await astToBitmark(res);
35247
+ const bitmarkToBitmark = (bitmarkStr) => {
35248
+ bitmarkToAst(bitmarkStr);
35249
+ astToBitmark(res);
35246
35250
  };
35247
- const bitmarkToAst = async (bitmarkStr) => {
35251
+ const bitmarkToAst = (bitmarkStr) => {
35248
35252
  res = this.bitmarkParser.toAst(bitmarkStr, {
35249
35253
  parserType: bitmarkParserType
35250
35254
  });
35251
35255
  };
35252
- const bitmarkToJson = async (bitmarkStr) => {
35256
+ const bitmarkToJson = (bitmarkStr) => {
35253
35257
  if (bitmarkParserType === BitmarkParserType.peggy) {
35254
35258
  ast = this.bitmarkParser.toAst(bitmarkStr, {
35255
35259
  parserType: bitmarkParserType
35256
35260
  });
35257
35261
  if (opts.outputFile) {
35258
35262
  const generator = new JsonFileGenerator(opts.outputFile, opts);
35259
- await generator.generate(ast);
35263
+ generator.generateSync(ast);
35260
35264
  } else {
35261
35265
  const generator = new JsonObjectGenerator(opts);
35262
- const json = await generator.generate(ast);
35266
+ const json = generator.generateSync(ast);
35263
35267
  res = this.jsonStringifyPrettify(json, jsonOptions);
35264
35268
  }
35265
35269
  }
35266
35270
  };
35267
- const astToBitmark = async (astJson) => {
35271
+ const astToBitmark = (astJson) => {
35268
35272
  if (opts.outputFile) {
35269
35273
  const generator = new BitmarkFileGenerator(opts.outputFile, opts);
35270
- await generator.generate(astJson);
35274
+ generator.generateSync(astJson);
35271
35275
  } else {
35272
35276
  const generator = new BitmarkStringGenerator(opts);
35273
- res = await generator.generate(astJson);
35277
+ res = generator.generateSync(astJson);
35274
35278
  }
35275
35279
  };
35276
- const astToAst = async (astJson) => {
35280
+ const astToAst = (astJson) => {
35277
35281
  res = this.jsonStringifyPrettify(astJson, jsonOptions);
35278
35282
  };
35279
- const astToJson = async (astJson) => {
35283
+ const astToJson = (astJson) => {
35280
35284
  if (opts.outputFile) {
35281
35285
  const generator = new JsonFileGenerator(opts.outputFile, opts);
35282
- await generator.generate(astJson);
35286
+ generator.generateSync(astJson);
35283
35287
  } else {
35284
35288
  const generator = new JsonObjectGenerator(opts);
35285
- const json = await generator.generate(astJson);
35289
+ const json = generator.generateSync(astJson);
35286
35290
  res = this.jsonStringifyPrettify(json, jsonOptions);
35287
35291
  }
35288
35292
  };
35289
- const jsonToBitmark = async (astJson) => {
35293
+ const jsonToBitmark = (astJson) => {
35290
35294
  if (opts.outputFile) {
35291
35295
  const generator = new BitmarkFileGenerator(opts.outputFile, opts);
35292
- await generator.generate(astJson);
35296
+ generator.generateSync(astJson);
35293
35297
  } else {
35294
35298
  const generator = new BitmarkStringGenerator(opts);
35295
- res = await generator.generate(astJson);
35299
+ res = generator.generateSync(astJson);
35296
35300
  }
35297
35301
  };
35298
- const jsonToAst = async (astJson) => {
35302
+ const jsonToAst = (astJson) => {
35299
35303
  res = this.jsonStringifyPrettify(astJson, jsonOptions);
35300
35304
  };
35301
- const jsonToJson = async (astJson) => {
35302
- await astToJson(astJson);
35305
+ const jsonToJson = (astJson) => {
35306
+ astToJson(astJson);
35303
35307
  };
35304
35308
  if (isBitmark) {
35305
35309
  if (outputBitmark) {
35306
- await bitmarkToBitmark(inStr);
35310
+ bitmarkToBitmark(inStr);
35307
35311
  } else if (outputAst) {
35308
- await bitmarkToAst(inStr);
35312
+ bitmarkToAst(inStr);
35309
35313
  } else {
35310
- await bitmarkToJson(inStr);
35314
+ bitmarkToJson(inStr);
35311
35315
  }
35312
35316
  } else if (isAst) {
35313
35317
  ast = ast;
35314
35318
  if (outputAst) {
35315
- await astToAst(ast);
35319
+ astToAst(ast);
35316
35320
  } else if (outputJson) {
35317
- await astToJson(ast);
35321
+ astToJson(ast);
35318
35322
  } else {
35319
- await astToBitmark(ast);
35323
+ astToBitmark(ast);
35320
35324
  }
35321
35325
  } else {
35322
35326
  ast = ast;
35323
35327
  if (outputJson) {
35324
- await jsonToJson(ast);
35328
+ jsonToJson(ast);
35325
35329
  } else if (outputAst) {
35326
- await jsonToAst(ast);
35330
+ jsonToAst(ast);
35327
35331
  } else {
35328
- await jsonToBitmark(ast);
35332
+ jsonToBitmark(ast);
35329
35333
  }
35330
35334
  }
35331
35335
  return res;
@@ -35355,7 +35359,7 @@ var BitmarkParserGenerator = class {
35355
35359
  * void if writing to a file
35356
35360
  * @throws Error if any error occurs
35357
35361
  */
35358
- async upgrade(input, options) {
35362
+ upgrade(input, options) {
35359
35363
  let res;
35360
35364
  const opts = Object.assign({}, options);
35361
35365
  const jsonOptions = Object.assign({}, opts.jsonOptions);
@@ -35376,33 +35380,33 @@ var BitmarkParserGenerator = class {
35376
35380
  let ast = this.jsonParser.toAst(inStr);
35377
35381
  const isJson = !!ast?.bits;
35378
35382
  const isBitmark = !isJson;
35379
- const bitmarkToBitmark = async (bitmarkStr) => {
35383
+ const bitmarkToBitmark = (bitmarkStr) => {
35380
35384
  const astJson = this.bitmarkParser.toAst(bitmarkStr, {
35381
35385
  parserType: bitmarkParserType
35382
35386
  });
35383
35387
  if (opts.outputFile) {
35384
35388
  const generator = new BitmarkFileGenerator(opts.outputFile, opts);
35385
- await generator.generate(astJson);
35389
+ generator.generateSync(astJson);
35386
35390
  } else {
35387
35391
  const generator = new BitmarkStringGenerator(opts);
35388
- res = await generator.generate(astJson);
35392
+ res = generator.generateSync(astJson);
35389
35393
  }
35390
35394
  };
35391
- const jsonToJson = async (astJson) => {
35395
+ const jsonToJson = (astJson) => {
35392
35396
  if (opts.outputFile) {
35393
35397
  const generator = new JsonFileGenerator(opts.outputFile, opts);
35394
- await generator.generate(astJson);
35398
+ generator.generateSync(astJson);
35395
35399
  } else {
35396
35400
  const generator = new JsonObjectGenerator(opts);
35397
- const json = await generator.generate(astJson);
35401
+ const json = generator.generateSync(astJson);
35398
35402
  res = this.jsonStringifyPrettify(json, jsonOptions);
35399
35403
  }
35400
35404
  };
35401
35405
  if (isBitmark) {
35402
- await bitmarkToBitmark(inStr);
35406
+ bitmarkToBitmark(inStr);
35403
35407
  } else {
35404
35408
  ast = ast;
35405
- await jsonToJson(ast);
35409
+ jsonToJson(ast);
35406
35410
  }
35407
35411
  return res;
35408
35412
  }
@@ -35466,7 +35470,7 @@ var BitmarkParserGenerator = class {
35466
35470
  * void if writing to a file
35467
35471
  * @throws Error if any error occurs
35468
35472
  */
35469
- async convertText(input, options) {
35473
+ convertText(input, options) {
35470
35474
  let res;
35471
35475
  let preRes;
35472
35476
  const opts = Object.assign({}, options);
@@ -35495,7 +35499,7 @@ var BitmarkParserGenerator = class {
35495
35499
  location: TextLocation.body
35496
35500
  });
35497
35501
  } else {
35498
- preRes = await this.textGenerator.generate(ast, textFormat, textLocation);
35502
+ preRes = this.textGenerator.generateSync(ast, textFormat, textLocation);
35499
35503
  }
35500
35504
  if (opts.outputFile) {
35501
35505
  const output = opts.outputFile.toString();