@gmb/bitmark-parser-generator 3.38.0 → 4.0.1

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 05:53]</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":1135506,"parsedSize":492579,"gzipSize":96068,"groups":[{"label":"dist/browser/cjs","path":"./dist/browser/cjs","statSize":1128526,"groups":[{"id":922,"label":"index.cjs","path":"./dist/browser/cjs/index.cjs","statSize":1128526,"parsedSize":492475,"gzipSize":96068}],"parsedSize":492475,"gzipSize":96068},{"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.1",
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) {
@@ -26678,6 +26682,7 @@ var JsonGenerator = class extends AstWalkerGenerator {
26678
26682
  this.resetState();
26679
26683
  this.writer.openSync();
26680
26684
  this.walkAndWrite(ast);
26685
+ this.write(JSON.stringify(this.json, null, this.jsonPrettifySpace));
26681
26686
  this.writer.closeSync();
26682
26687
  }
26683
26688
  resetState() {
@@ -31216,7 +31221,8 @@ function buildResources(context, resourceTypeAttachment, resources) {
31216
31221
  const countsMax = resourcesConfig.getCountsMax();
31217
31222
  if (resources) {
31218
31223
  for (const r of resources.reverse()) {
31219
- const configKey = resourceTypeToConfigKey(r.__typeAlias);
31224
+ if (r.__invalid) continue;
31225
+ const configKey = r.__configKey;
31220
31226
  let countMin = countsMin.get(configKey) ?? 0;
31221
31227
  let countMax = countsMax.get(configKey) ?? 0;
31222
31228
  countMin = Math.max(0, countMin - 1);
@@ -31237,7 +31243,7 @@ function buildResources(context, resourceTypeAttachment, resources) {
31237
31243
  context.addWarning(warningMsg);
31238
31244
  } else if (filteredResources.length === 0 && resourceTypeAttachment) {
31239
31245
  context.addWarning(
31240
- `Resource type [&${resourceTypeAttachment}] is specified in the bit header, but no such a resource is present`
31246
+ `Resource type [&${resourceTypeAttachment}] is specified in the bit header, but no such resource is present`
31241
31247
  );
31242
31248
  }
31243
31249
  if (excessResources.length > 0) {
@@ -35179,11 +35185,10 @@ var BitmarkParserGenerator = class {
35179
35185
  /**
35180
35186
  * Generate the new configuration for the bitmark parser.
35181
35187
  */
35182
- async generateConfig(options) {
35188
+ generateConfig(options) {
35183
35189
  const opts = Object.assign({}, options);
35184
35190
  const builder3 = new ConfigBuilder();
35185
- await builder3.build(opts);
35186
- return void 0;
35191
+ builder3.build(opts);
35187
35192
  }
35188
35193
  /**
35189
35194
  * Convert bitmark from bitmark to JSON, or JSON to bitmark.
@@ -35207,11 +35212,11 @@ var BitmarkParserGenerator = class {
35207
35212
  * @param input - bitmark or JSON or AST as a string, JSON or AST as plain JS object, or path to a file containing
35208
35213
  * bitmark, JSON, or AST.
35209
35214
  * @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
35215
+ * @returns A string if converting to bitmark, a plain JS object if converting to JSON, or
35211
35216
  * void if writing to a file
35212
35217
  * @throws Error if any error occurs
35213
35218
  */
35214
- async convert(input, options) {
35219
+ convert(input, options) {
35215
35220
  let res;
35216
35221
  const opts = Object.assign({}, options);
35217
35222
  const jsonOptions = Object.assign({}, opts.jsonOptions);
@@ -35240,92 +35245,92 @@ var BitmarkParserGenerator = class {
35240
35245
  }
35241
35246
  const isJson = !!ast?.bits;
35242
35247
  const isBitmark = !isJson && !isAst;
35243
- const bitmarkToBitmark = async (bitmarkStr) => {
35244
- await bitmarkToAst(bitmarkStr);
35245
- await astToBitmark(res);
35248
+ const bitmarkToBitmark = (bitmarkStr) => {
35249
+ bitmarkToAst(bitmarkStr);
35250
+ astToBitmark(res);
35246
35251
  };
35247
- const bitmarkToAst = async (bitmarkStr) => {
35252
+ const bitmarkToAst = (bitmarkStr) => {
35248
35253
  res = this.bitmarkParser.toAst(bitmarkStr, {
35249
35254
  parserType: bitmarkParserType
35250
35255
  });
35251
35256
  };
35252
- const bitmarkToJson = async (bitmarkStr) => {
35257
+ const bitmarkToJson = (bitmarkStr) => {
35253
35258
  if (bitmarkParserType === BitmarkParserType.peggy) {
35254
35259
  ast = this.bitmarkParser.toAst(bitmarkStr, {
35255
35260
  parserType: bitmarkParserType
35256
35261
  });
35257
35262
  if (opts.outputFile) {
35258
35263
  const generator = new JsonFileGenerator(opts.outputFile, opts);
35259
- await generator.generate(ast);
35264
+ generator.generateSync(ast);
35260
35265
  } else {
35261
35266
  const generator = new JsonObjectGenerator(opts);
35262
- const json = await generator.generate(ast);
35267
+ const json = generator.generateSync(ast);
35263
35268
  res = this.jsonStringifyPrettify(json, jsonOptions);
35264
35269
  }
35265
35270
  }
35266
35271
  };
35267
- const astToBitmark = async (astJson) => {
35272
+ const astToBitmark = (astJson) => {
35268
35273
  if (opts.outputFile) {
35269
35274
  const generator = new BitmarkFileGenerator(opts.outputFile, opts);
35270
- await generator.generate(astJson);
35275
+ generator.generateSync(astJson);
35271
35276
  } else {
35272
35277
  const generator = new BitmarkStringGenerator(opts);
35273
- res = await generator.generate(astJson);
35278
+ res = generator.generateSync(astJson);
35274
35279
  }
35275
35280
  };
35276
- const astToAst = async (astJson) => {
35281
+ const astToAst = (astJson) => {
35277
35282
  res = this.jsonStringifyPrettify(astJson, jsonOptions);
35278
35283
  };
35279
- const astToJson = async (astJson) => {
35284
+ const astToJson = (astJson) => {
35280
35285
  if (opts.outputFile) {
35281
35286
  const generator = new JsonFileGenerator(opts.outputFile, opts);
35282
- await generator.generate(astJson);
35287
+ generator.generateSync(astJson);
35283
35288
  } else {
35284
35289
  const generator = new JsonObjectGenerator(opts);
35285
- const json = await generator.generate(astJson);
35290
+ const json = generator.generateSync(astJson);
35286
35291
  res = this.jsonStringifyPrettify(json, jsonOptions);
35287
35292
  }
35288
35293
  };
35289
- const jsonToBitmark = async (astJson) => {
35294
+ const jsonToBitmark = (astJson) => {
35290
35295
  if (opts.outputFile) {
35291
35296
  const generator = new BitmarkFileGenerator(opts.outputFile, opts);
35292
- await generator.generate(astJson);
35297
+ generator.generateSync(astJson);
35293
35298
  } else {
35294
35299
  const generator = new BitmarkStringGenerator(opts);
35295
- res = await generator.generate(astJson);
35300
+ res = generator.generateSync(astJson);
35296
35301
  }
35297
35302
  };
35298
- const jsonToAst = async (astJson) => {
35303
+ const jsonToAst = (astJson) => {
35299
35304
  res = this.jsonStringifyPrettify(astJson, jsonOptions);
35300
35305
  };
35301
- const jsonToJson = async (astJson) => {
35302
- await astToJson(astJson);
35306
+ const jsonToJson = (astJson) => {
35307
+ astToJson(astJson);
35303
35308
  };
35304
35309
  if (isBitmark) {
35305
35310
  if (outputBitmark) {
35306
- await bitmarkToBitmark(inStr);
35311
+ bitmarkToBitmark(inStr);
35307
35312
  } else if (outputAst) {
35308
- await bitmarkToAst(inStr);
35313
+ bitmarkToAst(inStr);
35309
35314
  } else {
35310
- await bitmarkToJson(inStr);
35315
+ bitmarkToJson(inStr);
35311
35316
  }
35312
35317
  } else if (isAst) {
35313
35318
  ast = ast;
35314
35319
  if (outputAst) {
35315
- await astToAst(ast);
35320
+ astToAst(ast);
35316
35321
  } else if (outputJson) {
35317
- await astToJson(ast);
35322
+ astToJson(ast);
35318
35323
  } else {
35319
- await astToBitmark(ast);
35324
+ astToBitmark(ast);
35320
35325
  }
35321
35326
  } else {
35322
35327
  ast = ast;
35323
35328
  if (outputJson) {
35324
- await jsonToJson(ast);
35329
+ jsonToJson(ast);
35325
35330
  } else if (outputAst) {
35326
- await jsonToAst(ast);
35331
+ jsonToAst(ast);
35327
35332
  } else {
35328
- await jsonToBitmark(ast);
35333
+ jsonToBitmark(ast);
35329
35334
  }
35330
35335
  }
35331
35336
  return res;
@@ -35355,7 +35360,7 @@ var BitmarkParserGenerator = class {
35355
35360
  * void if writing to a file
35356
35361
  * @throws Error if any error occurs
35357
35362
  */
35358
- async upgrade(input, options) {
35363
+ upgrade(input, options) {
35359
35364
  let res;
35360
35365
  const opts = Object.assign({}, options);
35361
35366
  const jsonOptions = Object.assign({}, opts.jsonOptions);
@@ -35376,33 +35381,33 @@ var BitmarkParserGenerator = class {
35376
35381
  let ast = this.jsonParser.toAst(inStr);
35377
35382
  const isJson = !!ast?.bits;
35378
35383
  const isBitmark = !isJson;
35379
- const bitmarkToBitmark = async (bitmarkStr) => {
35384
+ const bitmarkToBitmark = (bitmarkStr) => {
35380
35385
  const astJson = this.bitmarkParser.toAst(bitmarkStr, {
35381
35386
  parserType: bitmarkParserType
35382
35387
  });
35383
35388
  if (opts.outputFile) {
35384
35389
  const generator = new BitmarkFileGenerator(opts.outputFile, opts);
35385
- await generator.generate(astJson);
35390
+ generator.generateSync(astJson);
35386
35391
  } else {
35387
35392
  const generator = new BitmarkStringGenerator(opts);
35388
- res = await generator.generate(astJson);
35393
+ res = generator.generateSync(astJson);
35389
35394
  }
35390
35395
  };
35391
- const jsonToJson = async (astJson) => {
35396
+ const jsonToJson = (astJson) => {
35392
35397
  if (opts.outputFile) {
35393
35398
  const generator = new JsonFileGenerator(opts.outputFile, opts);
35394
- await generator.generate(astJson);
35399
+ generator.generateSync(astJson);
35395
35400
  } else {
35396
35401
  const generator = new JsonObjectGenerator(opts);
35397
- const json = await generator.generate(astJson);
35402
+ const json = generator.generateSync(astJson);
35398
35403
  res = this.jsonStringifyPrettify(json, jsonOptions);
35399
35404
  }
35400
35405
  };
35401
35406
  if (isBitmark) {
35402
- await bitmarkToBitmark(inStr);
35407
+ bitmarkToBitmark(inStr);
35403
35408
  } else {
35404
35409
  ast = ast;
35405
- await jsonToJson(ast);
35410
+ jsonToJson(ast);
35406
35411
  }
35407
35412
  return res;
35408
35413
  }
@@ -35466,7 +35471,7 @@ var BitmarkParserGenerator = class {
35466
35471
  * void if writing to a file
35467
35472
  * @throws Error if any error occurs
35468
35473
  */
35469
- async convertText(input, options) {
35474
+ convertText(input, options) {
35470
35475
  let res;
35471
35476
  let preRes;
35472
35477
  const opts = Object.assign({}, options);
@@ -35495,7 +35500,7 @@ var BitmarkParserGenerator = class {
35495
35500
  location: TextLocation.body
35496
35501
  });
35497
35502
  } else {
35498
- preRes = await this.textGenerator.generate(ast, textFormat, textLocation);
35503
+ preRes = this.textGenerator.generateSync(ast, textFormat, textLocation);
35499
35504
  }
35500
35505
  if (opts.outputFile) {
35501
35506
  const output = opts.outputFile.toString();