@gmb/bitmark-parser-generator 1.5.15 → 1.5.17

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.
Files changed (138) hide show
  1. package/dist/browser/bitmark-parser-generator.min.js +1 -1
  2. package/dist/browser/bundle-report.html +2 -2
  3. package/dist/cjs/ast/BaseBuilder.js +8 -1
  4. package/dist/cjs/ast/BaseBuilder.js.map +1 -1
  5. package/dist/cjs/ast/Builder.js +50 -7
  6. package/dist/cjs/ast/Builder.js.map +1 -1
  7. package/dist/cjs/config/raw/bits.js +115 -15
  8. package/dist/cjs/config/raw/bits.js.map +1 -1
  9. package/dist/cjs/config/raw/cardSets.js +32 -0
  10. package/dist/cjs/config/raw/cardSets.js.map +1 -1
  11. package/dist/cjs/config/raw/groups.js +39 -1
  12. package/dist/cjs/config/raw/groups.js.map +1 -1
  13. package/dist/cjs/config/raw/properties.js +86 -0
  14. package/dist/cjs/config/raw/properties.js.map +1 -1
  15. package/dist/cjs/generated/build-info.js +1 -1
  16. package/dist/cjs/generator/bitmark/BitmarkGenerator.js +69 -6
  17. package/dist/cjs/generator/bitmark/BitmarkGenerator.js.map +1 -1
  18. package/dist/cjs/generator/json/JsonGenerator.js +123 -12
  19. package/dist/cjs/generator/json/JsonGenerator.js.map +1 -1
  20. package/dist/cjs/model/ast/NodeType.js +35 -2
  21. package/dist/cjs/model/ast/NodeType.js.map +1 -1
  22. package/dist/cjs/model/config/enum/CardSetConfigKey.js +1 -0
  23. package/dist/cjs/model/config/enum/CardSetConfigKey.js.map +1 -1
  24. package/dist/cjs/model/config/enum/GroupConfigKey.js +2 -1
  25. package/dist/cjs/model/config/enum/GroupConfigKey.js.map +1 -1
  26. package/dist/cjs/model/config/enum/PropertyConfigKey.js +18 -1
  27. package/dist/cjs/model/config/enum/PropertyConfigKey.js.map +1 -1
  28. package/dist/cjs/model/enum/BitType.js +3 -0
  29. package/dist/cjs/model/enum/BitType.js.map +1 -1
  30. package/dist/cjs/model/enum/PropertyTag.js +18 -1
  31. package/dist/cjs/model/enum/PropertyTag.js.map +1 -1
  32. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserTypes.js.map +1 -1
  33. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserValidator.js +1 -1
  34. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserValidator.js.map +1 -1
  35. package/dist/cjs/parser/bitmark/peg/contentProcessors/CardContentProcessor.js +33 -0
  36. package/dist/cjs/parser/bitmark/peg/contentProcessors/CardContentProcessor.js.map +1 -1
  37. package/dist/cjs/parser/bitmark/peg/contentProcessors/{PartnerChainContentProcessor.js → PersonChainContentProcessor.js} +13 -10
  38. package/dist/cjs/parser/bitmark/peg/contentProcessors/PersonChainContentProcessor.js.map +1 -0
  39. package/dist/cjs/parser/bitmark/peg/contentProcessors/PropertyContentProcessor.js +14 -4
  40. package/dist/cjs/parser/bitmark/peg/contentProcessors/PropertyContentProcessor.js.map +1 -1
  41. package/dist/cjs/parser/bitmark/peg/contentProcessors/TechnicalTermChainContentProcessor.js +25 -0
  42. package/dist/cjs/parser/bitmark/peg/contentProcessors/TechnicalTermChainContentProcessor.js.map +1 -0
  43. package/dist/cjs/parser/json/JsonParser.js +55 -13
  44. package/dist/cjs/parser/json/JsonParser.js.map +1 -1
  45. package/dist/cjs/utils/NumberUtils.js +40 -4
  46. package/dist/cjs/utils/NumberUtils.js.map +1 -1
  47. package/dist/esm/ast/BaseBuilder.js +8 -1
  48. package/dist/esm/ast/BaseBuilder.js.map +1 -1
  49. package/dist/esm/ast/Builder.js +50 -7
  50. package/dist/esm/ast/Builder.js.map +1 -1
  51. package/dist/esm/config/raw/bits.js +115 -15
  52. package/dist/esm/config/raw/bits.js.map +1 -1
  53. package/dist/esm/config/raw/cardSets.js +32 -0
  54. package/dist/esm/config/raw/cardSets.js.map +1 -1
  55. package/dist/esm/config/raw/groups.js +39 -1
  56. package/dist/esm/config/raw/groups.js.map +1 -1
  57. package/dist/esm/config/raw/properties.js +86 -0
  58. package/dist/esm/config/raw/properties.js.map +1 -1
  59. package/dist/esm/generated/build-info.js +1 -1
  60. package/dist/esm/generator/bitmark/BitmarkGenerator.js +69 -6
  61. package/dist/esm/generator/bitmark/BitmarkGenerator.js.map +1 -1
  62. package/dist/esm/generator/json/JsonGenerator.js +123 -12
  63. package/dist/esm/generator/json/JsonGenerator.js.map +1 -1
  64. package/dist/esm/model/ast/NodeType.js +35 -2
  65. package/dist/esm/model/ast/NodeType.js.map +1 -1
  66. package/dist/esm/model/config/enum/CardSetConfigKey.js +1 -0
  67. package/dist/esm/model/config/enum/CardSetConfigKey.js.map +1 -1
  68. package/dist/esm/model/config/enum/GroupConfigKey.js +2 -1
  69. package/dist/esm/model/config/enum/GroupConfigKey.js.map +1 -1
  70. package/dist/esm/model/config/enum/PropertyConfigKey.js +18 -1
  71. package/dist/esm/model/config/enum/PropertyConfigKey.js.map +1 -1
  72. package/dist/esm/model/enum/BitType.js +3 -0
  73. package/dist/esm/model/enum/BitType.js.map +1 -1
  74. package/dist/esm/model/enum/PropertyTag.js +18 -1
  75. package/dist/esm/model/enum/PropertyTag.js.map +1 -1
  76. package/dist/esm/parser/bitmark/peg/BitmarkPegParserTypes.js.map +1 -1
  77. package/dist/esm/parser/bitmark/peg/BitmarkPegParserValidator.js +1 -1
  78. package/dist/esm/parser/bitmark/peg/BitmarkPegParserValidator.js.map +1 -1
  79. package/dist/esm/parser/bitmark/peg/contentProcessors/CardContentProcessor.js +33 -0
  80. package/dist/esm/parser/bitmark/peg/contentProcessors/CardContentProcessor.js.map +1 -1
  81. package/dist/esm/parser/bitmark/peg/contentProcessors/{PartnerChainContentProcessor.js → PersonChainContentProcessor.js} +12 -9
  82. package/dist/esm/parser/bitmark/peg/contentProcessors/PersonChainContentProcessor.js.map +1 -0
  83. package/dist/esm/parser/bitmark/peg/contentProcessors/PropertyContentProcessor.js +14 -4
  84. package/dist/esm/parser/bitmark/peg/contentProcessors/PropertyContentProcessor.js.map +1 -1
  85. package/dist/esm/parser/bitmark/peg/contentProcessors/TechnicalTermChainContentProcessor.js +22 -0
  86. package/dist/esm/parser/bitmark/peg/contentProcessors/TechnicalTermChainContentProcessor.js.map +1 -0
  87. package/dist/esm/parser/json/JsonParser.js +55 -13
  88. package/dist/esm/parser/json/JsonParser.js.map +1 -1
  89. package/dist/esm/utils/NumberUtils.js +40 -4
  90. package/dist/esm/utils/NumberUtils.js.map +1 -1
  91. package/dist/types/ast/BaseBuilder.d.ts.map +1 -1
  92. package/dist/types/ast/Builder.d.ts +43 -5
  93. package/dist/types/ast/Builder.d.ts.map +1 -1
  94. package/dist/types/config/raw/bits.d.ts.map +1 -1
  95. package/dist/types/config/raw/cardSets.d.ts.map +1 -1
  96. package/dist/types/config/raw/groups.d.ts.map +1 -1
  97. package/dist/types/config/raw/properties.d.ts.map +1 -1
  98. package/dist/types/generator/bitmark/BitmarkGenerator.d.ts +6 -1
  99. package/dist/types/generator/bitmark/BitmarkGenerator.d.ts.map +1 -1
  100. package/dist/types/generator/json/JsonGenerator.d.ts +5 -2
  101. package/dist/types/generator/json/JsonGenerator.d.ts.map +1 -1
  102. package/dist/types/index.d.ts +1 -1
  103. package/dist/types/index.d.ts.map +1 -1
  104. package/dist/types/model/ast/NodeType.d.ts +66 -2
  105. package/dist/types/model/ast/NodeType.d.ts.map +1 -1
  106. package/dist/types/model/ast/Nodes.d.ts +28 -2
  107. package/dist/types/model/ast/Nodes.d.ts.map +1 -1
  108. package/dist/types/model/config/enum/CardSetConfigKey.d.ts +2 -0
  109. package/dist/types/model/config/enum/CardSetConfigKey.d.ts.map +1 -1
  110. package/dist/types/model/config/enum/ConfigKey.d.ts +38 -2
  111. package/dist/types/model/config/enum/ConfigKey.d.ts.map +1 -1
  112. package/dist/types/model/config/enum/GroupConfigKey.d.ts +6 -3
  113. package/dist/types/model/config/enum/GroupConfigKey.d.ts.map +1 -1
  114. package/dist/types/model/config/enum/PropertyConfigKey.d.ts +51 -0
  115. package/dist/types/model/config/enum/PropertyConfigKey.d.ts.map +1 -1
  116. package/dist/types/model/enum/BitType.d.ts +6 -0
  117. package/dist/types/model/enum/BitType.d.ts.map +1 -1
  118. package/dist/types/model/enum/PropertyTag.d.ts +34 -0
  119. package/dist/types/model/enum/PropertyTag.d.ts.map +1 -1
  120. package/dist/types/model/json/BitJson.d.ts +29 -2
  121. package/dist/types/model/json/BitJson.d.ts.map +1 -1
  122. package/dist/types/parser/bitmark/peg/BitmarkPegParserTypes.d.ts +9 -2
  123. package/dist/types/parser/bitmark/peg/BitmarkPegParserTypes.d.ts.map +1 -1
  124. package/dist/types/parser/bitmark/peg/contentProcessors/CardContentProcessor.d.ts.map +1 -1
  125. package/dist/types/parser/bitmark/peg/contentProcessors/PersonChainContentProcessor.d.ts +7 -0
  126. package/dist/types/parser/bitmark/peg/contentProcessors/PersonChainContentProcessor.d.ts.map +1 -0
  127. package/dist/types/parser/bitmark/peg/contentProcessors/PropertyContentProcessor.d.ts.map +1 -1
  128. package/dist/types/parser/bitmark/peg/contentProcessors/TechnicalTermChainContentProcessor.d.ts +7 -0
  129. package/dist/types/parser/bitmark/peg/contentProcessors/TechnicalTermChainContentProcessor.d.ts.map +1 -0
  130. package/dist/types/parser/json/JsonParser.d.ts +3 -1
  131. package/dist/types/parser/json/JsonParser.d.ts.map +1 -1
  132. package/dist/types/utils/NumberUtils.d.ts +33 -2
  133. package/dist/types/utils/NumberUtils.d.ts.map +1 -1
  134. package/package.json +1 -1
  135. package/dist/cjs/parser/bitmark/peg/contentProcessors/PartnerChainContentProcessor.js.map +0 -1
  136. package/dist/esm/parser/bitmark/peg/contentProcessors/PartnerChainContentProcessor.js.map +0 -1
  137. package/dist/types/parser/bitmark/peg/contentProcessors/PartnerChainContentProcessor.d.ts +0 -7
  138. package/dist/types/parser/bitmark/peg/contentProcessors/PartnerChainContentProcessor.d.ts.map +0 -1
@@ -33,6 +33,7 @@ import { TextFormat } from '../../model/enum/TextFormat';
33
33
  import { TextParser } from '../../parser/text/TextParser';
34
34
  import { ArrayUtils } from '../../utils/ArrayUtils';
35
35
  import { BooleanUtils } from '../../utils/BooleanUtils';
36
+ import { NumberUtils } from '../../utils/NumberUtils';
36
37
  import { StringUtils } from '../../utils/StringUtils';
37
38
  import { UrlUtils } from '../../utils/UrlUtils';
38
39
  import { AstWalkerGenerator } from '../AstWalkerGenerator';
@@ -211,24 +212,33 @@ class JsonGenerator extends AstWalkerGenerator {
211
212
  this.addProperty(imageSourceJson, 'trim', BooleanUtils.isBoolean(trim) ? trim : null, true);
212
213
  this.bitJson.imageSource = imageSourceJson;
213
214
  }
214
- // bitmarkAst -> bits -> bitsValue -> partner
215
- enter_partner(node, route) {
216
- const partner = node.value;
215
+ // bitmarkAst -> bits -> bitsValue -> person
216
+ enter_person(node, route) {
217
+ const person = node.value;
217
218
  const bitType = this.getBitType(route);
218
219
  // Ignore values that are not at the bit level as they might be handled elsewhere
219
220
  const parent = this.getParentNode(route);
220
221
  if ((parent === null || parent === void 0 ? void 0 : parent.key) !== NodeType.bitsValue || !bitType)
221
222
  return;
222
- const { name, avatarImage } = partner;
223
- const partnerJson = {};
224
- this.addProperty(partnerJson, 'name', name !== null && name !== void 0 ? name : '', true);
223
+ const { name, title, avatarImage } = person;
224
+ const personJson = {};
225
+ this.addProperty(personJson, 'name', name !== null && name !== void 0 ? name : '', true);
226
+ if (title) {
227
+ this.addProperty(personJson, 'title', title, true);
228
+ }
225
229
  if (avatarImage) {
226
230
  const res = this.parseResourceToJson(bitType, avatarImage);
227
231
  if (res && res.type === ResourceTag.image) {
228
- partnerJson.avatarImage = res.image;
232
+ personJson.avatarImage = res.image;
229
233
  }
230
234
  }
231
- this.bitJson.partner = partnerJson;
235
+ if (Config.isOfBitType(bitType, BitType.conversationLeft1)) {
236
+ // Use the legacy partner property in the JSON for conversation bits, so change to person is backwards compatible
237
+ this.bitJson.partner = personJson;
238
+ }
239
+ else {
240
+ this.bitJson.person = personJson;
241
+ }
232
242
  }
233
243
  // bitmarkAst -> bits -> bitsValue -> markConfig -> markConfigValue
234
244
  enter_markConfigValue(node, route) {
@@ -278,6 +288,32 @@ class JsonGenerator extends AstWalkerGenerator {
278
288
  this.bitJson.marginNumber = this.convertBreakscapedStringToJsonText(marginNumber, TextFormat.bitmarkMinusMinus);
279
289
  }
280
290
  }
291
+ // bitmarkAst -> bits -> bitsValue -> width
292
+ enter_width(node, route) {
293
+ var _a;
294
+ let value = node.value;
295
+ const bitType = this.getBitType(route);
296
+ const parent = this.getParentNode(route);
297
+ if ((parent === null || parent === void 0 ? void 0 : parent.key) === NodeType.bitsValue && Config.isOfBitType(bitType, BitType.extractorBlock)) {
298
+ value = (_a = NumberUtils.asNumber(value, 0)) !== null && _a !== void 0 ? _a : 0;
299
+ }
300
+ // Add the property
301
+ this.addProperty(this.bitJson, 'width', value, true);
302
+ return false;
303
+ }
304
+ // bitmarkAst -> bits -> bitsValue -> height
305
+ enter_height(node, route) {
306
+ var _a;
307
+ let value = node.value;
308
+ const bitType = this.getBitType(route);
309
+ const parent = this.getParentNode(route);
310
+ if ((parent === null || parent === void 0 ? void 0 : parent.key) === NodeType.bitsValue && Config.isOfBitType(bitType, BitType.extractorBlock)) {
311
+ value = (_a = NumberUtils.asNumber(value, 0)) !== null && _a !== void 0 ? _a : 0;
312
+ }
313
+ // Add the property
314
+ this.addProperty(this.bitJson, 'height', value, true);
315
+ return false;
316
+ }
281
317
  // bitmarkAst -> bits -> bitsValue -> extraProperties
282
318
  enter_extraProperties(node, _route) {
283
319
  const extraProperties = node.value;
@@ -833,6 +869,37 @@ class JsonGenerator extends AstWalkerGenerator {
833
869
  this.bitJson.responses = responsesJson;
834
870
  }
835
871
  }
872
+ // bitmarkAst -> bits -> bitsValue -> cardNode -> ingredients -> ingredientsValue
873
+ enter_ingredients(node, route) {
874
+ var _a, _b, _c, _d, _e, _f;
875
+ const ingredients = node.value;
876
+ // Ignore statements that are not at the card node level as they are handled elsewhere
877
+ const parent = this.getParentNode(route);
878
+ if ((parent === null || parent === void 0 ? void 0 : parent.key) !== NodeType.cardNode)
879
+ return;
880
+ const ingredientsJson = [];
881
+ if (ingredients) {
882
+ for (const i of ingredients) {
883
+ // Create the ingredient
884
+ const ingredientJson = {
885
+ checked: (_a = i.checked) !== null && _a !== void 0 ? _a : false,
886
+ item: (_b = Breakscape.unbreakscape(i.item)) !== null && _b !== void 0 ? _b : '',
887
+ quantity: (_c = i.quantity) !== null && _c !== void 0 ? _c : 0,
888
+ unit: (_d = Breakscape.unbreakscape(i.unit)) !== null && _d !== void 0 ? _d : '',
889
+ unitAbbr: (_e = Breakscape.unbreakscape(i.unitAbbr)) !== null && _e !== void 0 ? _e : '',
890
+ disableCalculation: (_f = i.disableCalculation) !== null && _f !== void 0 ? _f : false,
891
+ };
892
+ // Delete unwanted properties
893
+ if ((i === null || i === void 0 ? void 0 : i.unitAbbr) == null)
894
+ delete ingredientJson.unitAbbr;
895
+ // if (i?.instruction == null) delete ingredientJson.instruction;
896
+ ingredientsJson.push(ingredientJson);
897
+ }
898
+ }
899
+ if (ingredientsJson.length > 0) {
900
+ this.bitJson.ingredients = ingredientsJson;
901
+ }
902
+ }
836
903
  // bitmarkAst -> bits -> bitsValue -> resources
837
904
  enter_resources(node, route) {
838
905
  var _a;
@@ -900,7 +967,11 @@ class JsonGenerator extends AstWalkerGenerator {
900
967
  // Terminal nodes (leaves)
901
968
  //
902
969
  // bitmarkAst -> bits -> bitsValue -> title
903
- leaf_title(node, _route) {
970
+ leaf_title(node, route) {
971
+ // Ignore title that are not at the bit or card node level as they are handled elsewhere
972
+ const parent = this.getParentNode(route);
973
+ if ((parent === null || parent === void 0 ? void 0 : parent.key) !== NodeType.bitsValue && (parent === null || parent === void 0 ? void 0 : parent.key) !== NodeType.cardNode)
974
+ return;
904
975
  this.bitJson.title = this.convertBreakscapedStringToJsonText(node.value, TextFormat.bitmarkMinusMinus);
905
976
  }
906
977
  // bitmarkAst -> bits -> bitsValue -> subtitle
@@ -1034,7 +1105,11 @@ class JsonGenerator extends AstWalkerGenerator {
1034
1105
  continue;
1035
1106
  if (astKey === PropertyTag.imageSource)
1036
1107
  continue;
1037
- if (astKey === PropertyTag.partner)
1108
+ if (astKey === PropertyTag.person)
1109
+ continue;
1110
+ if (astKey === PropertyTag.width)
1111
+ continue;
1112
+ if (astKey === PropertyTag.height)
1038
1113
  continue;
1039
1114
  if (astKey === PropertyAstKey.markConfig)
1040
1115
  continue;
@@ -1909,6 +1984,8 @@ class JsonGenerator extends AstWalkerGenerator {
1909
1984
  jupyterExecutionCount: undefined,
1910
1985
  AIGenerated: undefined,
1911
1986
  releaseVersion: undefined,
1987
+ releaseKind: undefined,
1988
+ releaseDate: undefined,
1912
1989
  book: undefined,
1913
1990
  ageRange: undefined,
1914
1991
  lang: undefined,
@@ -1932,8 +2009,15 @@ class JsonGenerator extends AstWalkerGenerator {
1932
2009
  location: undefined,
1933
2010
  kind: undefined,
1934
2011
  action: undefined,
2012
+ blockId: undefined,
2013
+ pageNo: undefined,
2014
+ x: undefined,
2015
+ y: undefined,
1935
2016
  width: undefined,
1936
2017
  height: undefined,
2018
+ index: undefined,
2019
+ classification: undefined,
2020
+ availableClassifications: undefined,
1937
2021
  thumbImage: undefined,
1938
2022
  scormSource: undefined,
1939
2023
  posterImage: undefined,
@@ -1947,6 +2031,7 @@ class JsonGenerator extends AstWalkerGenerator {
1947
2031
  externalLinkText: undefined,
1948
2032
  videoCallLink: undefined,
1949
2033
  vendorUrl: undefined,
2034
+ search: undefined,
1950
2035
  duration: undefined,
1951
2036
  list: undefined,
1952
2037
  textReference: undefined,
@@ -1967,6 +2052,8 @@ class JsonGenerator extends AstWalkerGenerator {
1967
2052
  product: undefined,
1968
2053
  productVideo: undefined,
1969
2054
  productFolder: undefined,
2055
+ technicalTerm: undefined,
2056
+ portions: undefined,
1970
2057
  // Book data
1971
2058
  title: undefined,
1972
2059
  subtitle: undefined,
@@ -1986,8 +2073,8 @@ class JsonGenerator extends AstWalkerGenerator {
1986
2073
  // Example
1987
2074
  isExample: undefined,
1988
2075
  example: undefined,
1989
- // Partner .conversion-xxx only
1990
- partner: undefined,
2076
+ // Person .conversion-xxx, page-person, etc
2077
+ person: undefined,
1991
2078
  // Marks (config)
1992
2079
  marks: undefined,
1993
2080
  // Extra Properties
@@ -2294,6 +2381,10 @@ class JsonGenerator extends AstWalkerGenerator {
2294
2381
  delete bitJson.AIGenerated;
2295
2382
  if (bitJson.releaseVersion == null)
2296
2383
  delete bitJson.releaseVersion;
2384
+ if (bitJson.releaseKind == null)
2385
+ delete bitJson.releaseKind;
2386
+ if (bitJson.releaseDate == null)
2387
+ delete bitJson.releaseDate;
2297
2388
  if (bitJson.book == null)
2298
2389
  delete bitJson.book;
2299
2390
  if (bitJson.ageRange == null)
@@ -2340,10 +2431,24 @@ class JsonGenerator extends AstWalkerGenerator {
2340
2431
  delete bitJson.kind;
2341
2432
  if (bitJson.action == null)
2342
2433
  delete bitJson.action;
2434
+ if (bitJson.blockId == null)
2435
+ delete bitJson.blockId;
2436
+ if (bitJson.pageNo == null)
2437
+ delete bitJson.pageNo;
2438
+ if (bitJson.x == null)
2439
+ delete bitJson.x;
2440
+ if (bitJson.y == null)
2441
+ delete bitJson.y;
2343
2442
  if (bitJson.width == null)
2344
2443
  delete bitJson.width;
2345
2444
  if (bitJson.height == null)
2346
2445
  delete bitJson.height;
2446
+ if (bitJson.index == null)
2447
+ delete bitJson.index;
2448
+ if (bitJson.classification == null)
2449
+ delete bitJson.classification;
2450
+ if (bitJson.availableClassifications == null)
2451
+ delete bitJson.availableClassifications;
2347
2452
  if (bitJson.thumbImage == null)
2348
2453
  delete bitJson.thumbImage;
2349
2454
  if (bitJson.scormSource == null)
@@ -2370,6 +2475,8 @@ class JsonGenerator extends AstWalkerGenerator {
2370
2475
  delete bitJson.videoCallLink;
2371
2476
  if (bitJson.vendorUrl == null)
2372
2477
  delete bitJson.vendorUrl;
2478
+ if (bitJson.search == null)
2479
+ delete bitJson.search;
2373
2480
  if (bitJson.duration == null)
2374
2481
  delete bitJson.duration;
2375
2482
  if (bitJson.list == null)
@@ -2408,6 +2515,10 @@ class JsonGenerator extends AstWalkerGenerator {
2408
2515
  delete bitJson.productVideo;
2409
2516
  if (bitJson.productFolder == null)
2410
2517
  delete bitJson.productFolder;
2518
+ if (bitJson.technicalTerm == null)
2519
+ delete bitJson.technicalTerm;
2520
+ if (bitJson.portions == null)
2521
+ delete bitJson.portions;
2411
2522
  // Book data
2412
2523
  if (bitJson.title == null)
2413
2524
  delete bitJson.title;