@gmb/bitmark-parser-generator 5.34.0 → 5.36.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.
- package/dist/browser/bitmark-parser-generator.min.js +1 -1
- package/dist/browser/bundle-report.html +2 -2
- package/dist/browser/cjs/index.cjs +493 -61
- package/dist/browser/cjs/index.cjs.map +1 -1
- package/dist/browser/cjs/index.d.cts +19 -0
- package/dist/browser/esm/index.d.ts +19 -0
- package/dist/browser/esm/index.js +493 -61
- package/dist/browser/esm/index.js.map +1 -1
- package/dist/cli/main.js +639 -156
- package/dist/cli/main.js.map +1 -1
- package/dist/index.cjs +639 -156
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +19 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +639 -156
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -267,6 +267,7 @@ var BitType = {
|
|
|
267
267
|
extractorPageNumberCollapsible: "extractor-page-number-collapsible",
|
|
268
268
|
extractorPageWithBlocks: "extractor-page-with-blocks",
|
|
269
269
|
extractorPageWithBlocksCollapsible: "extractor-page-with-blocks-collapsible",
|
|
270
|
+
extractorReconcile: "extractor-reconcile",
|
|
270
271
|
extractorRepeatedText: "extractor-repeated-text",
|
|
271
272
|
extractorRule: "extractor-rule",
|
|
272
273
|
extractorTheme: "extractor-theme",
|
|
@@ -1350,6 +1351,7 @@ var propertyKeys = {
|
|
|
1350
1351
|
property_dateEnd: "@dateEnd",
|
|
1351
1352
|
property_decimalPlaces: "@decimalPlaces",
|
|
1352
1353
|
property_deeplink: "@deeplink",
|
|
1354
|
+
property_displayName: "@displayName",
|
|
1353
1355
|
property_diffContext: "@diffContext",
|
|
1354
1356
|
property_diffOp: "@diffOp",
|
|
1355
1357
|
property_diffRef: "@diffRef",
|
|
@@ -1505,6 +1507,7 @@ var propertyKeys = {
|
|
|
1505
1507
|
property_revealSolutions: "@revealSolutions",
|
|
1506
1508
|
property_reviewTag: "@reviewTag",
|
|
1507
1509
|
property_reviewerTag: "@reviewerTag",
|
|
1510
|
+
property_rightsPolicy: "@rightsPolicy",
|
|
1508
1511
|
property_sampleSolution: "@sampleSolution",
|
|
1509
1512
|
property_scormSource: "@scormSource",
|
|
1510
1513
|
property_search: "@search",
|
|
@@ -2498,9 +2501,30 @@ var CARDSETS = {
|
|
|
2498
2501
|
[CardSetConfigKey.definitionList]: {
|
|
2499
2502
|
jsonKey: "definitions",
|
|
2500
2503
|
exportJsonKey: { definitions: "$" },
|
|
2504
|
+
// PLAN-141 F1 (NISO import): each <def-item> is one card; the sides
|
|
2505
|
+
// read <term>/<def>; the enclosing <legend>'s <title> lands on the
|
|
2506
|
+
// term side's heading tag ([#Key] header card).
|
|
2507
|
+
// PLAN-141 F3: a <tbx:langSet> is ALSO one card (a terminology entry —
|
|
2508
|
+
// its enclosing <tbx:termEntry> is a transparent claim wrapper); its
|
|
2509
|
+
// children compose the term/definition sides via the side rules below.
|
|
2510
|
+
mappingKeys: {
|
|
2511
|
+
"xml-niso-iec": [
|
|
2512
|
+
{ "@el": "def-item", "@children": "$" },
|
|
2513
|
+
{ "@el": "tbx:langSet", "@children": "$" }
|
|
2514
|
+
]
|
|
2515
|
+
},
|
|
2501
2516
|
sides: [
|
|
2502
2517
|
{
|
|
2503
2518
|
name: "term",
|
|
2519
|
+
// F3: every <tbx:tig>'s <tbx:term> STACKS one-per-line onto the
|
|
2520
|
+
// single term side (the "$\n" template's authored separator; the
|
|
2521
|
+
// trailing one is trimmed) — the PDF's Maus/Mus/M/Müsli stack.
|
|
2522
|
+
mappingKeys: {
|
|
2523
|
+
"xml-niso-iec": [
|
|
2524
|
+
{ "@el": "term", "@text": "$" },
|
|
2525
|
+
{ "@el": "tbx:tig", "@children": { "@el": "tbx:term", "@text": "$\n" } }
|
|
2526
|
+
]
|
|
2527
|
+
},
|
|
2504
2528
|
variants: [
|
|
2505
2529
|
{
|
|
2506
2530
|
jsonKey: "term.text",
|
|
@@ -2514,8 +2538,10 @@ var CARDSETS = {
|
|
|
2514
2538
|
key: ConfigKey.tag_title,
|
|
2515
2539
|
description: "Title of the definition.",
|
|
2516
2540
|
format: TagFormat.plainText,
|
|
2541
|
+
nullable: true,
|
|
2517
2542
|
jsonKey: "^heading.forKeys",
|
|
2518
|
-
exportJsonKey: { "@bit": { heading: { forKeys: "$" } } }
|
|
2543
|
+
exportJsonKey: { "@bit": { heading: { forKeys: "$" } } },
|
|
2544
|
+
mappingKeys: { "xml-niso-iec": { "@el": "title", "@text": "$" } }
|
|
2519
2545
|
},
|
|
2520
2546
|
{
|
|
2521
2547
|
key: ConfigKey.group_resourceIcon,
|
|
@@ -2541,6 +2567,24 @@ var CARDSETS = {
|
|
|
2541
2567
|
},
|
|
2542
2568
|
{
|
|
2543
2569
|
name: "definition",
|
|
2570
|
+
// F3: the definition side COMPOSES from the entry's fields in
|
|
2571
|
+
// document order, with the ES-rendered locale affixes AUTHORED as
|
|
2572
|
+
// value-position templates (never engine text): the subject field
|
|
2573
|
+
// in ⟨⟩ glues (trailing space) onto the definition line; example /
|
|
2574
|
+
// notes / source follow as blank-line-separated lines. The TBX
|
|
2575
|
+
// grammar flags (normativeAuthorization, termType, partOfSpeech,
|
|
2576
|
+
// grammaticalNumber) are unrendered machine-only data — dropped and
|
|
2577
|
+
// recorded (catalog R-2, reviewed under D7 max-preservation).
|
|
2578
|
+
mappingKeys: {
|
|
2579
|
+
"xml-niso-iec": [
|
|
2580
|
+
{ "@el": "def", "@children": "$" },
|
|
2581
|
+
{ "@el": "tbx:subjectField", "@text": "\u27E8$\u27E9 " },
|
|
2582
|
+
{ "@el": "tbx:definition", "@children": "$" },
|
|
2583
|
+
{ "@el": "tbx:example", "@children": "BEISPIEL $" },
|
|
2584
|
+
{ "@el": "tbx:note", "@children": "Anmerkung zu Begriff: $" },
|
|
2585
|
+
{ "@el": "tbx:source", "@text": "[QUELLE: $]" }
|
|
2586
|
+
]
|
|
2587
|
+
},
|
|
2544
2588
|
variants: [
|
|
2545
2589
|
{
|
|
2546
2590
|
jsonKey: "definition.text",
|
|
@@ -2554,6 +2598,7 @@ var CARDSETS = {
|
|
|
2554
2598
|
key: ConfigKey.tag_title,
|
|
2555
2599
|
description: "Title of the definition.",
|
|
2556
2600
|
format: TagFormat.plainText,
|
|
2601
|
+
nullable: true,
|
|
2557
2602
|
jsonKey: "^heading.forValues",
|
|
2558
2603
|
exportJsonKey: { "@bit": { heading: { forValues: "$" } } }
|
|
2559
2604
|
},
|
|
@@ -2632,6 +2677,7 @@ var CARDSETS = {
|
|
|
2632
2677
|
key: ConfigKey.tag_title,
|
|
2633
2678
|
description: "Title of the definition.",
|
|
2634
2679
|
format: TagFormat.plainText,
|
|
2680
|
+
nullable: true,
|
|
2635
2681
|
jsonKey: "^heading.forKeys",
|
|
2636
2682
|
exportJsonKey: { "@bit": { heading: { forKeys: "$" } } }
|
|
2637
2683
|
},
|
|
@@ -2673,6 +2719,7 @@ var CARDSETS = {
|
|
|
2673
2719
|
key: ConfigKey.tag_title,
|
|
2674
2720
|
description: "Title of the definition.",
|
|
2675
2721
|
format: TagFormat.plainText,
|
|
2722
|
+
nullable: true,
|
|
2676
2723
|
jsonKey: "^heading.forValues",
|
|
2677
2724
|
exportJsonKey: { "@bit": { heading: { forValues: "$" } } }
|
|
2678
2725
|
},
|
|
@@ -2786,6 +2833,7 @@ var CARDSETS = {
|
|
|
2786
2833
|
key: ConfigKey.tag_title,
|
|
2787
2834
|
description: "Title of the match pair.",
|
|
2788
2835
|
format: TagFormat.plainText,
|
|
2836
|
+
nullable: true,
|
|
2789
2837
|
jsonKey: "^heading.forKeys",
|
|
2790
2838
|
exportJsonKey: { "@bit": { heading: { forKeys: "$" } } }
|
|
2791
2839
|
},
|
|
@@ -2915,6 +2963,7 @@ var CARDSETS = {
|
|
|
2915
2963
|
key: ConfigKey.tag_title,
|
|
2916
2964
|
description: "Title of the match pair.",
|
|
2917
2965
|
format: TagFormat.plainText,
|
|
2966
|
+
nullable: true,
|
|
2918
2967
|
jsonKey: "^heading.forValues",
|
|
2919
2968
|
exportJsonKey: { "@bit": { heading: { forValues: "$" } } }
|
|
2920
2969
|
},
|
|
@@ -2961,6 +3010,7 @@ var CARDSETS = {
|
|
|
2961
3010
|
key: ConfigKey.tag_title,
|
|
2962
3011
|
description: "Title of the audio match pair.",
|
|
2963
3012
|
format: TagFormat.plainText,
|
|
3013
|
+
nullable: true,
|
|
2964
3014
|
jsonKey: "^heading.forKeys",
|
|
2965
3015
|
exportJsonKey: { "@bit": { heading: { forKeys: "$" } } }
|
|
2966
3016
|
},
|
|
@@ -2992,6 +3042,7 @@ var CARDSETS = {
|
|
|
2992
3042
|
key: ConfigKey.tag_title,
|
|
2993
3043
|
description: "Title of the audio match pair.",
|
|
2994
3044
|
format: TagFormat.plainText,
|
|
3045
|
+
nullable: true,
|
|
2995
3046
|
jsonKey: "^heading.forValues",
|
|
2996
3047
|
exportJsonKey: { "@bit": { heading: { forValues: "$" } } }
|
|
2997
3048
|
},
|
|
@@ -3029,6 +3080,7 @@ var CARDSETS = {
|
|
|
3029
3080
|
key: ConfigKey.tag_title,
|
|
3030
3081
|
description: "Title of the image match pair.",
|
|
3031
3082
|
format: TagFormat.plainText,
|
|
3083
|
+
nullable: true,
|
|
3032
3084
|
jsonKey: "^heading.forKeys",
|
|
3033
3085
|
exportJsonKey: { "@bit": { heading: { forKeys: "$" } } }
|
|
3034
3086
|
},
|
|
@@ -3060,6 +3112,7 @@ var CARDSETS = {
|
|
|
3060
3112
|
key: ConfigKey.tag_title,
|
|
3061
3113
|
description: "Title of the image match pair.",
|
|
3062
3114
|
format: TagFormat.plainText,
|
|
3115
|
+
nullable: true,
|
|
3063
3116
|
jsonKey: "^heading.forValues",
|
|
3064
3117
|
exportJsonKey: { "@bit": { heading: { forValues: "$" } } }
|
|
3065
3118
|
},
|
|
@@ -3135,6 +3188,7 @@ var CARDSETS = {
|
|
|
3135
3188
|
key: ConfigKey.tag_title,
|
|
3136
3189
|
description: "Title of the match matrix.",
|
|
3137
3190
|
format: TagFormat.plainText,
|
|
3191
|
+
nullable: true,
|
|
3138
3192
|
jsonKey: "^heading.forKeys",
|
|
3139
3193
|
exportJsonKey: { "@bit": { heading: { forKeys: "$" } } }
|
|
3140
3194
|
},
|
|
@@ -3247,6 +3301,7 @@ var CARDSETS = {
|
|
|
3247
3301
|
key: ConfigKey.tag_title,
|
|
3248
3302
|
description: "Title of the match matrix.",
|
|
3249
3303
|
format: TagFormat.plainText,
|
|
3304
|
+
nullable: true,
|
|
3250
3305
|
jsonKey: "^heading.forValues",
|
|
3251
3306
|
exportJsonKey: [
|
|
3252
3307
|
{ "@keyonly": { "@bit": { heading: { forValues: [""] } } } },
|
|
@@ -3529,6 +3584,7 @@ var CARDSETS = {
|
|
|
3529
3584
|
key: ConfigKey.tag_title,
|
|
3530
3585
|
description: "Title of the feedback.",
|
|
3531
3586
|
format: TagFormat.plainText,
|
|
3587
|
+
nullable: true,
|
|
3532
3588
|
jsonKey: "^heading.forKeys",
|
|
3533
3589
|
exportJsonKey: { "@bit": { heading: { forKeys: "$" } } }
|
|
3534
3590
|
}
|
|
@@ -3611,6 +3667,7 @@ var CARDSETS = {
|
|
|
3611
3667
|
key: ConfigKey.tag_title,
|
|
3612
3668
|
description: "Title of the feedback.",
|
|
3613
3669
|
format: TagFormat.plainText,
|
|
3670
|
+
nullable: true,
|
|
3614
3671
|
jsonKey: "^heading.forValues",
|
|
3615
3672
|
exportJsonKey: { "@bit": { heading: { forValues: "$" } } }
|
|
3616
3673
|
}
|
|
@@ -3918,6 +3975,11 @@ var CARDSETS = {
|
|
|
3918
3975
|
{ table: { header: { rows: ["$"] } } }
|
|
3919
3976
|
],
|
|
3920
3977
|
htmlKey: { "@el": "thead", "@children": { "@el": "tr", "@children": "$" } },
|
|
3978
|
+
// PLAN-141 F2 (NISO import): the XHTML table model NISO uses — a
|
|
3979
|
+
// <thead> SECTION whose <tr> rows are the header cards.
|
|
3980
|
+
mappingKeys: {
|
|
3981
|
+
"xml-niso-iec": { "@el": "thead", "@children": { "@el": "tr", "@children": "$" } }
|
|
3982
|
+
},
|
|
3921
3983
|
sideJsonKey: "cells[{s}]|set(title=true)",
|
|
3922
3984
|
sideExportJsonKey: { cells: { $s: { title: true, $: "$" } } },
|
|
3923
3985
|
// Header cells are `<th>`. The `width` attribute is contributed by the
|
|
@@ -3929,12 +3991,21 @@ var CARDSETS = {
|
|
|
3929
3991
|
jsonKey: "table.body.rows",
|
|
3930
3992
|
exportJsonKey: { table: { body: { rows: "$" } } },
|
|
3931
3993
|
htmlKey: { "@el": "tbody", "@children": { "@el": "tr", "@children": "$" } },
|
|
3994
|
+
// PLAN-141 F2 (NISO import): <tbody> rows are the (default) data cards.
|
|
3995
|
+
mappingKeys: {
|
|
3996
|
+
"xml-niso-iec": { "@el": "tbody", "@children": { "@el": "tr", "@children": "$" } }
|
|
3997
|
+
},
|
|
3932
3998
|
isDefault: true
|
|
3933
3999
|
},
|
|
3934
4000
|
"table-footer": {
|
|
3935
4001
|
jsonKey: "table.footer.rows",
|
|
3936
4002
|
exportJsonKey: { table: { footer: { rows: "$" } } },
|
|
3937
4003
|
htmlKey: { "@el": "tfoot", "@children": { "@el": "tr", "@children": "$" } },
|
|
4004
|
+
// PLAN-141 F2 (NISO import): NISO has no <tfoot> — the footer card's
|
|
4005
|
+
// source is the <table-wrap-foot> block (CONTENT-shaped: no rows; its
|
|
4006
|
+
// prose/notes flatten into one footer card — catalog table-wrap-foot
|
|
4007
|
+
// row; a contained <def-list> promotes as a sibling legend bit).
|
|
4008
|
+
mappingKeys: { "xml-niso-iec": { "@el": "table-wrap-foot", "@children": "$" } },
|
|
3938
4009
|
sideJsonKey: "cells[{s}]|set(title=true)",
|
|
3939
4010
|
sideExportJsonKey: { cells: { $s: { title: true, $: "$" } } },
|
|
3940
4011
|
// Footer cells render as `<th>` (mirrors the header `title: true`
|
|
@@ -3951,6 +4022,8 @@ var CARDSETS = {
|
|
|
3951
4022
|
// Default (body) cell → `<td>`; the header/footer sections override the
|
|
3952
4023
|
// side to `<th>` via their sideHtmlKey (HTML.md §8).
|
|
3953
4024
|
htmlKey: { "@el": "td", "@children": "$" },
|
|
4025
|
+
// PLAN-141 F2 (NISO import): a <td> row child is a body cell side.
|
|
4026
|
+
mappingKeys: { "xml-niso-iec": { "@el": "td", "@children": "$" } },
|
|
3954
4027
|
variants: [
|
|
3955
4028
|
{
|
|
3956
4029
|
jsonKey: "content",
|
|
@@ -3968,7 +4041,11 @@ var CARDSETS = {
|
|
|
3968
4041
|
// cell with `title: true` automatically.
|
|
3969
4042
|
jsonKey: "content",
|
|
3970
4043
|
exportJsonKey: { content: "$" },
|
|
3971
|
-
description: "Title text of the table cell (header rows)."
|
|
4044
|
+
description: "Title text of the table cell (header rows).",
|
|
4045
|
+
// PLAN-141 F2 (NISO import): a <th> row child is a TITLE cell —
|
|
4046
|
+
// its content lands in the `[#…]` tag (an empty <th> keeps its
|
|
4047
|
+
// slot as a bare `[#]`).
|
|
4048
|
+
mappingKeys: { "xml-niso-iec": { "@el": "th", "@children": "$" } }
|
|
3972
4049
|
},
|
|
3973
4050
|
{
|
|
3974
4051
|
key: ConfigKey.property_tableCellType,
|
|
@@ -3987,6 +4064,9 @@ var CARDSETS = {
|
|
|
3987
4064
|
// HTML-C2: contribute a `rowspan` attribute onto the enclosing
|
|
3988
4065
|
// cell element (`<th>`/`<td>`).
|
|
3989
4066
|
htmlKey: { "@el": { "@attr": { rowspan: "$" } } },
|
|
4067
|
+
// PLAN-141 F2 (NISO import): recover the source cell's own
|
|
4068
|
+
// `rowspan` attribute (element-scope attr form).
|
|
4069
|
+
mappingKeys: { "xml-niso-iec": { "@el": { "@attr": { rowspan: "$" } } } },
|
|
3990
4070
|
description: "Number of rows the cell spans.",
|
|
3991
4071
|
format: TagFormat.number
|
|
3992
4072
|
},
|
|
@@ -3997,6 +4077,9 @@ var CARDSETS = {
|
|
|
3997
4077
|
// HTML-C2: contribute a `colspan` attribute onto the enclosing
|
|
3998
4078
|
// cell element (`<th>`/`<td>`).
|
|
3999
4079
|
htmlKey: { "@el": { "@attr": { colspan: "$" } } },
|
|
4080
|
+
// PLAN-141 F2 (NISO import): recover the source cell's own
|
|
4081
|
+
// `colspan` attribute (element-scope attr form).
|
|
4082
|
+
mappingKeys: { "xml-niso-iec": { "@el": { "@attr": { colspan: "$" } } } },
|
|
4000
4083
|
description: "Number of columns the cell spans.",
|
|
4001
4084
|
format: TagFormat.number
|
|
4002
4085
|
},
|
|
@@ -4018,6 +4101,13 @@ var CARDSETS = {
|
|
|
4018
4101
|
// HTML.md §8 + HTML-C2: contribute a `width` attribute onto the
|
|
4019
4102
|
// enclosing cell element (`<th>`/`<td>`).
|
|
4020
4103
|
htmlKey: { "@el": { "@attr": { width: "$" } } },
|
|
4104
|
+
// PLAN-141 F2 (NISO import): NISO carries widths as PER-COLUMN
|
|
4105
|
+
// <col width="…"> descriptors at container level, not on cells.
|
|
4106
|
+
// The matched values distribute positionally onto the first
|
|
4107
|
+
// (header) card's sides. Number format ⇒ only an integral
|
|
4108
|
+
// percentage survives ("20.0000%" → 20); a fractional one
|
|
4109
|
+
// (renderer-equalised "4.7619%") is dropped — catalog `col` row.
|
|
4110
|
+
mappingKeys: { "xml-niso-iec": { "@el": "col", "@attr": { width: "$" } } },
|
|
4021
4111
|
description: "Width for the column.",
|
|
4022
4112
|
format: TagFormat.number
|
|
4023
4113
|
}
|
|
@@ -4391,13 +4481,44 @@ var GROUPS = {
|
|
|
4391
4481
|
key: ConfigKey.property_externalId,
|
|
4392
4482
|
description: "The external identifier for the bit",
|
|
4393
4483
|
format: TagFormat.plainText,
|
|
4394
|
-
maxCount: Count.infinity
|
|
4484
|
+
maxCount: Count.infinity,
|
|
4485
|
+
// PLAN-140 refs family (NISO import): the machine identifier of a
|
|
4486
|
+
// referenced standard. NESTED content slot — the tag reads (and
|
|
4487
|
+
// consumes) ONLY the <std-id> inside a <std> child; the remaining
|
|
4488
|
+
// designation/title text stays bit body. A <std> without <std-id>
|
|
4489
|
+
// does not fire the key.
|
|
4490
|
+
// PLAN-141 F5: on the [.book] bit, the DATED <std-ref> designation
|
|
4491
|
+
// is the document's external id. Safe rule order: <std-ref> is a
|
|
4492
|
+
// direct bit-element child only under <std-meta> (everywhere else
|
|
4493
|
+
// it nests inside <std>, which the tag spine never reaches).
|
|
4494
|
+
mappingKeys: {
|
|
4495
|
+
"xml-niso-iec": [
|
|
4496
|
+
{ "@el": "std", "@children": { "@el": "std-id", "@text": "$" } },
|
|
4497
|
+
{ "@el": "std-ref", "@attr": { type: "dated" }, "@text": "$" }
|
|
4498
|
+
]
|
|
4499
|
+
}
|
|
4395
4500
|
},
|
|
4396
4501
|
{
|
|
4397
4502
|
key: ConfigKey.property_sourceRL,
|
|
4398
4503
|
description: "The original location of the information in the original source material",
|
|
4399
4504
|
format: TagFormat.plainText
|
|
4400
4505
|
},
|
|
4506
|
+
{
|
|
4507
|
+
key: ConfigKey.property_copyright,
|
|
4508
|
+
description: "The copyright information for the bit",
|
|
4509
|
+
format: TagFormat.plainText
|
|
4510
|
+
},
|
|
4511
|
+
{
|
|
4512
|
+
key: ConfigKey.property_license,
|
|
4513
|
+
description: "The license for the bit",
|
|
4514
|
+
format: TagFormat.plainText
|
|
4515
|
+
},
|
|
4516
|
+
{
|
|
4517
|
+
key: ConfigKey.property_rightsPolicy,
|
|
4518
|
+
description: "The rights policy or policies for the bit",
|
|
4519
|
+
format: TagFormat.plainText,
|
|
4520
|
+
maxCount: Count.infinity
|
|
4521
|
+
},
|
|
4401
4522
|
{
|
|
4402
4523
|
key: ConfigKey.property_isTemplate,
|
|
4403
4524
|
description: "If true, the bit is a template",
|
|
@@ -4424,7 +4545,8 @@ var GROUPS = {
|
|
|
4424
4545
|
{
|
|
4425
4546
|
key: ConfigKey.property_aiGenerated,
|
|
4426
4547
|
description: "If true, the bit is AI-generated",
|
|
4427
|
-
format: TagFormat.boolean
|
|
4548
|
+
format: TagFormat.boolean,
|
|
4549
|
+
nullable: true
|
|
4428
4550
|
},
|
|
4429
4551
|
{
|
|
4430
4552
|
key: ConfigKey.property_machineTranslated,
|
|
@@ -4439,7 +4561,8 @@ var GROUPS = {
|
|
|
4439
4561
|
{
|
|
4440
4562
|
key: ConfigKey.property_spansPageBreak,
|
|
4441
4563
|
description: "If true, the bit spans a page break",
|
|
4442
|
-
format: TagFormat.boolean
|
|
4564
|
+
format: TagFormat.boolean,
|
|
4565
|
+
nullable: true
|
|
4443
4566
|
},
|
|
4444
4567
|
{
|
|
4445
4568
|
key: ConfigKey.property_searchIndex,
|
|
@@ -4514,7 +4637,8 @@ var GROUPS = {
|
|
|
4514
4637
|
{
|
|
4515
4638
|
key: ConfigKey.property_diffTime,
|
|
4516
4639
|
description: "The diff time for the bit",
|
|
4517
|
-
format: TagFormat.number
|
|
4640
|
+
format: TagFormat.number,
|
|
4641
|
+
nullable: true
|
|
4518
4642
|
},
|
|
4519
4643
|
{
|
|
4520
4644
|
key: ConfigKey.property_ageRange,
|
|
@@ -4525,7 +4649,18 @@ var GROUPS = {
|
|
|
4525
4649
|
{
|
|
4526
4650
|
key: ConfigKey.property_lang,
|
|
4527
4651
|
description: "The language for the bit",
|
|
4528
|
-
format: TagFormat.plainText
|
|
4652
|
+
format: TagFormat.plainText,
|
|
4653
|
+
// PLAN-141 F3 (NISO import): a term-sec's language rides
|
|
4654
|
+
// <tbx:termEntry><tbx:langSet xml:lang> — a nested content slot
|
|
4655
|
+
// whose leaf is a $-in-ATTR-position slot (the nested counterpart
|
|
4656
|
+
// of the value-attr slot). Only termEntry elements match, so the
|
|
4657
|
+
// shared tag is inert everywhere else.
|
|
4658
|
+
mappingKeys: {
|
|
4659
|
+
"xml-niso-iec": {
|
|
4660
|
+
"@el": "tbx:termEntry",
|
|
4661
|
+
"@children": { "@el": "tbx:langSet", "@attr": { "xml:lang": "$" } }
|
|
4662
|
+
}
|
|
4663
|
+
}
|
|
4529
4664
|
},
|
|
4530
4665
|
{
|
|
4531
4666
|
key: ConfigKey.property_publisher,
|
|
@@ -4542,6 +4677,7 @@ var GROUPS = {
|
|
|
4542
4677
|
key: ConfigKey.property_theme,
|
|
4543
4678
|
description: "The theme(s) for the bit",
|
|
4544
4679
|
format: TagFormat.plainText,
|
|
4680
|
+
nullable: true,
|
|
4545
4681
|
maxCount: Count.infinity
|
|
4546
4682
|
},
|
|
4547
4683
|
{
|
|
@@ -4560,6 +4696,7 @@ var GROUPS = {
|
|
|
4560
4696
|
key: ConfigKey.property_tag,
|
|
4561
4697
|
description: "The tag(s) for the bit",
|
|
4562
4698
|
format: TagFormat.plainText,
|
|
4699
|
+
nullable: true,
|
|
4563
4700
|
maxCount: Count.infinity
|
|
4564
4701
|
},
|
|
4565
4702
|
{
|
|
@@ -4579,6 +4716,7 @@ var GROUPS = {
|
|
|
4579
4716
|
exportJsonKey: { tags: ["$"] },
|
|
4580
4717
|
description: "The tag(s) for the group",
|
|
4581
4718
|
format: TagFormat.plainText,
|
|
4719
|
+
nullable: true,
|
|
4582
4720
|
maxCount: Count.infinity
|
|
4583
4721
|
}
|
|
4584
4722
|
]
|
|
@@ -4696,6 +4834,20 @@ var GROUPS = {
|
|
|
4696
4834
|
description: "The layer role(s) for the bit",
|
|
4697
4835
|
format: TagFormat.plainText,
|
|
4698
4836
|
maxCount: Count.infinity
|
|
4837
|
+
},
|
|
4838
|
+
{
|
|
4839
|
+
// Universal @internalComment — declares in config what Config.ts also
|
|
4840
|
+
// injects programmatically into every bit (its push runs last and wins
|
|
4841
|
+
// the keyed merge, so runtime behaviour is unchanged). Declared here so
|
|
4842
|
+
// the config export (ConfigBuilder → assets/config → configurator →
|
|
4843
|
+
// bitmark.json) carries the tag for downstream parsers. Empty
|
|
4844
|
+
// exportJsonKey: consumed but never emitted to the bit JSON (the value
|
|
4845
|
+
// is routed to parser.internalComments).
|
|
4846
|
+
key: ConfigKey.property_internalComment,
|
|
4847
|
+
description: "Internal comment for the bit.",
|
|
4848
|
+
format: TagFormat.plainText,
|
|
4849
|
+
maxCount: Count.infinity,
|
|
4850
|
+
exportJsonKey: {}
|
|
4699
4851
|
}
|
|
4700
4852
|
]
|
|
4701
4853
|
},
|
|
@@ -4707,6 +4859,9 @@ var GROUPS = {
|
|
|
4707
4859
|
key: ConfigKey.tag_item,
|
|
4708
4860
|
jsonKey: "item",
|
|
4709
4861
|
exportJsonKey: { item: "$" },
|
|
4862
|
+
// PLAN-140 W3 (NISO import): the clause/note label of a mapped
|
|
4863
|
+
// source element ([%1], [%ANMERKUNG 1]).
|
|
4864
|
+
mappingKeys: { "xml-niso-iec": { "@el": "label", "@text": "$" } },
|
|
4710
4865
|
description: "The item for the bit",
|
|
4711
4866
|
chain: [
|
|
4712
4867
|
{
|
|
@@ -4852,7 +5007,8 @@ var GROUPS = {
|
|
|
4852
5007
|
{
|
|
4853
5008
|
key: ConfigKey.property_size,
|
|
4854
5009
|
description: "The size of the image",
|
|
4855
|
-
format: TagFormat.number
|
|
5010
|
+
format: TagFormat.number,
|
|
5011
|
+
nullable: true
|
|
4856
5012
|
},
|
|
4857
5013
|
{
|
|
4858
5014
|
key: ConfigKey.property_format,
|
|
@@ -5668,7 +5824,20 @@ var GROUPS = {
|
|
|
5668
5824
|
key: ConfigKey.property_language,
|
|
5669
5825
|
description: "The language of the book",
|
|
5670
5826
|
format: TagFormat.plainText,
|
|
5671
|
-
maxCount: Count.infinity
|
|
5827
|
+
maxCount: Count.infinity,
|
|
5828
|
+
// PLAN-141 F5 (NISO import): only the PRIMARY (first)
|
|
5829
|
+
// <content-language> survives — the maxEmits cap realises the
|
|
5830
|
+
// catalog's document-language rule (extras drop, R-4).
|
|
5831
|
+
mappingKeys: {
|
|
5832
|
+
"xml-niso-iec": [
|
|
5833
|
+
{ predicates: [], maxEmits: 1, rule: { "@el": "content-language", "@text": "$" } }
|
|
5834
|
+
]
|
|
5835
|
+
}
|
|
5836
|
+
},
|
|
5837
|
+
{
|
|
5838
|
+
key: ConfigKey.property_displayName,
|
|
5839
|
+
description: "The display name of the book",
|
|
5840
|
+
format: TagFormat.plainText
|
|
5672
5841
|
},
|
|
5673
5842
|
{
|
|
5674
5843
|
key: ConfigKey.property_customerExternalId,
|
|
@@ -5744,7 +5913,18 @@ var GROUPS = {
|
|
|
5744
5913
|
description: "The title of the book",
|
|
5745
5914
|
maxCount: 2,
|
|
5746
5915
|
jsonKey: "title|multi(count=2, key=subtitle)",
|
|
5747
|
-
exportJsonKey: [{ "@level=1": { title: "$" } }, { "@level=2": { subtitle: "$" } }]
|
|
5916
|
+
exportJsonKey: [{ "@level=1": { title: "$" } }, { "@level=2": { subtitle: "$" } }],
|
|
5917
|
+
// PLAN-141 F5 (NISO import): the PRIMARY (first) <title-wrap>'s
|
|
5918
|
+
// assembled <full> title → [#]; the per-language extras drop (R-4).
|
|
5919
|
+
mappingKeys: {
|
|
5920
|
+
"xml-niso-iec": [
|
|
5921
|
+
{
|
|
5922
|
+
predicates: [],
|
|
5923
|
+
maxEmits: 1,
|
|
5924
|
+
rule: { "@el": "title-wrap", "@children": { "@el": "full", "@text": "$" } }
|
|
5925
|
+
}
|
|
5926
|
+
]
|
|
5927
|
+
}
|
|
5748
5928
|
},
|
|
5749
5929
|
{
|
|
5750
5930
|
key: ConfigKey.property_subtype,
|
|
@@ -5755,6 +5935,7 @@ var GROUPS = {
|
|
|
5755
5935
|
key: ConfigKey.property_coverImage,
|
|
5756
5936
|
description: "The cover image(s) of the book",
|
|
5757
5937
|
format: TagFormat.plainText,
|
|
5938
|
+
nullable: true,
|
|
5758
5939
|
maxCount: Count.infinity
|
|
5759
5940
|
},
|
|
5760
5941
|
{
|
|
@@ -6056,22 +6237,26 @@ var GROUPS = {
|
|
|
6056
6237
|
{
|
|
6057
6238
|
key: ConfigKey.property_platformMargin,
|
|
6058
6239
|
description: "The platform margin",
|
|
6059
|
-
format: TagFormat.number
|
|
6240
|
+
format: TagFormat.number,
|
|
6241
|
+
nullable: true
|
|
6060
6242
|
},
|
|
6061
6243
|
{
|
|
6062
6244
|
key: ConfigKey.property_platformBorderRadius,
|
|
6063
6245
|
description: "The platform border radius",
|
|
6064
|
-
format: TagFormat.number
|
|
6246
|
+
format: TagFormat.number,
|
|
6247
|
+
nullable: true
|
|
6065
6248
|
},
|
|
6066
6249
|
{
|
|
6067
6250
|
key: ConfigKey.property_platformSelectionBorderRadius,
|
|
6068
6251
|
description: "The platform selection border radius",
|
|
6069
|
-
format: TagFormat.number
|
|
6252
|
+
format: TagFormat.number,
|
|
6253
|
+
nullable: true
|
|
6070
6254
|
},
|
|
6071
6255
|
{
|
|
6072
6256
|
key: ConfigKey.property_platformNeedsShadow,
|
|
6073
6257
|
description: "If true, the platform needs shadow",
|
|
6074
|
-
format: TagFormat.boolean
|
|
6258
|
+
format: TagFormat.boolean,
|
|
6259
|
+
nullable: true
|
|
6075
6260
|
}
|
|
6076
6261
|
]
|
|
6077
6262
|
},
|
|
@@ -6082,7 +6267,8 @@ var GROUPS = {
|
|
|
6082
6267
|
{
|
|
6083
6268
|
key: ConfigKey.property_revealSolutions,
|
|
6084
6269
|
description: "If true, the quiz solutions are revealed",
|
|
6085
|
-
format: TagFormat.boolean
|
|
6270
|
+
format: TagFormat.boolean,
|
|
6271
|
+
nullable: true
|
|
6086
6272
|
// defaultValue: 'false',
|
|
6087
6273
|
},
|
|
6088
6274
|
{
|
|
@@ -6171,7 +6357,13 @@ var GROUPS = {
|
|
|
6171
6357
|
{
|
|
6172
6358
|
key: ConfigKey.property_caption,
|
|
6173
6359
|
description: "The caption for the resource",
|
|
6174
|
-
format: TagFormat.bitmarkText
|
|
6360
|
+
format: TagFormat.bitmarkText,
|
|
6361
|
+
// PLAN-141 F1 (NISO import): a figure's <caption><title> — the
|
|
6362
|
+
// nested content slot reads the title text; the caption rides the
|
|
6363
|
+
// resource chain ([&image:…][@caption:…], catalog D5).
|
|
6364
|
+
mappingKeys: {
|
|
6365
|
+
"xml-niso-iec": { "@el": "caption", "@children": { "@el": "title", "@text": "$" } }
|
|
6366
|
+
}
|
|
6175
6367
|
},
|
|
6176
6368
|
{
|
|
6177
6369
|
key: ConfigKey.property_showInIndex,
|
|
@@ -6229,12 +6421,14 @@ var GROUPS = {
|
|
|
6229
6421
|
{
|
|
6230
6422
|
key: ConfigKey.property_width,
|
|
6231
6423
|
description: "The width of the image",
|
|
6232
|
-
format: TagFormat.number
|
|
6424
|
+
format: TagFormat.number,
|
|
6425
|
+
nullable: true
|
|
6233
6426
|
},
|
|
6234
6427
|
{
|
|
6235
6428
|
key: ConfigKey.property_height,
|
|
6236
6429
|
description: "The height of the image",
|
|
6237
|
-
format: TagFormat.number
|
|
6430
|
+
format: TagFormat.number,
|
|
6431
|
+
nullable: true
|
|
6238
6432
|
},
|
|
6239
6433
|
{
|
|
6240
6434
|
key: ConfigKey.property_alt,
|
|
@@ -6279,12 +6473,14 @@ var GROUPS = {
|
|
|
6279
6473
|
{
|
|
6280
6474
|
key: ConfigKey.property_width,
|
|
6281
6475
|
description: "The width of the image",
|
|
6282
|
-
format: TagFormat.number
|
|
6476
|
+
format: TagFormat.number,
|
|
6477
|
+
nullable: true
|
|
6283
6478
|
},
|
|
6284
6479
|
{
|
|
6285
6480
|
key: ConfigKey.property_height,
|
|
6286
6481
|
description: "The height of the image",
|
|
6287
|
-
format: TagFormat.number
|
|
6482
|
+
format: TagFormat.number,
|
|
6483
|
+
nullable: true
|
|
6288
6484
|
},
|
|
6289
6485
|
{
|
|
6290
6486
|
key: ConfigKey.property_alt,
|
|
@@ -6336,12 +6532,14 @@ var GROUPS = {
|
|
|
6336
6532
|
{
|
|
6337
6533
|
key: ConfigKey.property_width,
|
|
6338
6534
|
description: "The width of the video",
|
|
6339
|
-
format: TagFormat.number
|
|
6535
|
+
format: TagFormat.number,
|
|
6536
|
+
nullable: true
|
|
6340
6537
|
},
|
|
6341
6538
|
{
|
|
6342
6539
|
key: ConfigKey.property_height,
|
|
6343
6540
|
description: "The height of the video",
|
|
6344
|
-
format: TagFormat.number
|
|
6541
|
+
format: TagFormat.number,
|
|
6542
|
+
nullable: true
|
|
6345
6543
|
},
|
|
6346
6544
|
{
|
|
6347
6545
|
key: ConfigKey.property_duration,
|
|
@@ -6439,6 +6637,10 @@ var GROUPS = {
|
|
|
6439
6637
|
{
|
|
6440
6638
|
key: ConfigKey.resource_image,
|
|
6441
6639
|
exportJsonKey: { resource: { type: "image", image: { src: "$" } } },
|
|
6640
|
+
// PLAN-141 F1 (NISO import): the image URL rides the `$`-in-attr
|
|
6641
|
+
// value slot — a <graphic xlink:href> child of the mapped bit
|
|
6642
|
+
// element roots the [&image:URL] chain.
|
|
6643
|
+
mappingKeys: { "xml-niso-iec": { "@el": "graphic", "@attr": { "xlink:href": "$" } } },
|
|
6442
6644
|
description: "The image resource",
|
|
6443
6645
|
chain: [
|
|
6444
6646
|
{
|
|
@@ -7313,6 +7515,8 @@ var BITS = {
|
|
|
7313
7515
|
maxCount: 2,
|
|
7314
7516
|
jsonKey: "title|multi(count=2, key=subtitle)",
|
|
7315
7517
|
exportJsonKey: [{ "@level=1": { title: "$" } }, { "@level=2": { subtitle: "$" } }],
|
|
7518
|
+
// PLAN-140 W3 (NISO import): the title of a mapped source element.
|
|
7519
|
+
mappingKeys: { "xml-niso-iec": { "@el": "title", "@text": "$" } },
|
|
7316
7520
|
key: ConfigKey.tag_title,
|
|
7317
7521
|
description: "The title of the article"
|
|
7318
7522
|
}
|
|
@@ -7354,12 +7558,56 @@ var BITS = {
|
|
|
7354
7558
|
[BitType.smartStandardArticleNormative]: {
|
|
7355
7559
|
since: "1.28.0",
|
|
7356
7560
|
baseBitType: BitType.standardArticleNormative,
|
|
7357
|
-
description: "Smart standard normative article bit"
|
|
7561
|
+
description: "Smart standard normative article bit",
|
|
7562
|
+
// PLAN-140 W3 (NISO import, tranche 1): one article bit per NISO
|
|
7563
|
+
// paragraph (catalog D1). CONTENT keys (@children): the subtree is the
|
|
7564
|
+
// bit's body; nothing inside it promotes. (Ancestor-context normativity
|
|
7565
|
+
// is the non-normative sibling's @ancestor key — plan Q4, resolved.)
|
|
7566
|
+
//
|
|
7567
|
+
// Second rule (catalog D1 push-down): a NUMBERED-PARAGRAPH sec is an
|
|
7568
|
+
// article, not a chapter — the sec-type literal outranks the chapter
|
|
7569
|
+
// key's plain sec|app rule (most-specific-wins). Content key: the sec's
|
|
7570
|
+
// label rides [%] via the label tag key, its inner <p> is the body, its
|
|
7571
|
+
// id is the bit's customerId, and the anchor slot marks it
|
|
7572
|
+
// anchor-bearing.
|
|
7573
|
+
mappingKeys: {
|
|
7574
|
+
"xml-niso-iec": [
|
|
7575
|
+
{ "@el": "p", "@attr": { id: "$customerId" }, "@children": "$" },
|
|
7576
|
+
{
|
|
7577
|
+
"@el": "sec",
|
|
7578
|
+
"@attr": { "sec-type": "numbered-paragraph", id: "$customerId" },
|
|
7579
|
+
"@children": "$",
|
|
7580
|
+
"\u25BC": "$anchor"
|
|
7581
|
+
}
|
|
7582
|
+
]
|
|
7583
|
+
}
|
|
7358
7584
|
},
|
|
7359
7585
|
[BitType.smartStandardArticleNonNormative]: {
|
|
7360
7586
|
since: "1.28.0",
|
|
7361
7587
|
baseBitType: BitType.standardArticleNonNormative,
|
|
7362
|
-
description: "Smart standard non-normative article bit"
|
|
7588
|
+
description: "Smart standard non-normative article bit",
|
|
7589
|
+
// PLAN-140 Q4 (normativity inheritance): a <p> is non-normative because
|
|
7590
|
+
// of an ANCESTOR element — a foreword/intro sec or an informative annex.
|
|
7591
|
+
// @ancestor is a reverse-match-only constraint (forward emission ignores
|
|
7592
|
+
// it); the rules are alternatives, first-satisfied wins, and the
|
|
7593
|
+
// @ancestor literals give this key higher specificity than the plain
|
|
7594
|
+
// normative-article <p> key wherever the context applies.
|
|
7595
|
+
mappingKeys: {
|
|
7596
|
+
"xml-niso-iec": [
|
|
7597
|
+
{
|
|
7598
|
+
"@el": "p",
|
|
7599
|
+
"@attr": { id: "$customerId" },
|
|
7600
|
+
"@ancestor": { "@attr": { "sec-type": "foreword|intro" } },
|
|
7601
|
+
"@children": "$"
|
|
7602
|
+
},
|
|
7603
|
+
{
|
|
7604
|
+
"@el": "p",
|
|
7605
|
+
"@attr": { id: "$customerId" },
|
|
7606
|
+
"@ancestor": { "@attr": { "content-type": "informative" } },
|
|
7607
|
+
"@children": "$"
|
|
7608
|
+
}
|
|
7609
|
+
]
|
|
7610
|
+
}
|
|
7363
7611
|
},
|
|
7364
7612
|
[BitType.smartStandardArticleNormativeCollapsible]: {
|
|
7365
7613
|
since: "1.28.0",
|
|
@@ -7426,7 +7674,8 @@ var BITS = {
|
|
|
7426
7674
|
{
|
|
7427
7675
|
key: ConfigKey.property_coverImage,
|
|
7428
7676
|
description: "Cover image of the catalog item",
|
|
7429
|
-
format: TagFormat.plainText
|
|
7677
|
+
format: TagFormat.plainText,
|
|
7678
|
+
nullable: true
|
|
7430
7679
|
},
|
|
7431
7680
|
{
|
|
7432
7681
|
key: ConfigKey.resource_coverImage,
|
|
@@ -7590,7 +7839,8 @@ var BITS = {
|
|
|
7590
7839
|
{
|
|
7591
7840
|
key: ConfigKey.property_coverImage,
|
|
7592
7841
|
description: "Cover image of the catalog item",
|
|
7593
|
-
format: TagFormat.plainText
|
|
7842
|
+
format: TagFormat.plainText,
|
|
7843
|
+
nullable: true
|
|
7594
7844
|
},
|
|
7595
7845
|
{
|
|
7596
7846
|
key: ConfigKey.resource_coverImage,
|
|
@@ -7754,7 +8004,8 @@ var BITS = {
|
|
|
7754
8004
|
{
|
|
7755
8005
|
key: ConfigKey.property_coverImage,
|
|
7756
8006
|
description: "Cover image of the catalog item",
|
|
7757
|
-
format: TagFormat.plainText
|
|
8007
|
+
format: TagFormat.plainText,
|
|
8008
|
+
nullable: true
|
|
7758
8009
|
},
|
|
7759
8010
|
{
|
|
7760
8011
|
key: ConfigKey.property_content2Buy,
|
|
@@ -7987,7 +8238,8 @@ var BITS = {
|
|
|
7987
8238
|
{
|
|
7988
8239
|
key: ConfigKey.property_maxCreatedBits,
|
|
7989
8240
|
description: "The maximum number of bits that can be created from this bit",
|
|
7990
|
-
format: TagFormat.number
|
|
8241
|
+
format: TagFormat.number,
|
|
8242
|
+
nullable: true
|
|
7991
8243
|
}
|
|
7992
8244
|
],
|
|
7993
8245
|
textFormatDefault: TextFormat.plainText
|
|
@@ -8117,6 +8369,13 @@ var BITS = {
|
|
|
8117
8369
|
since: "1.3.0",
|
|
8118
8370
|
baseBitType: BitType._standard,
|
|
8119
8371
|
description: "Book bit, used to represent a book",
|
|
8372
|
+
// PLAN-141 F5 (NISO import): the <std-meta> front-matter container is
|
|
8373
|
+
// the [.book] bit (STRUCTURAL, first in document order): primary
|
|
8374
|
+
// title-wrap → [#], primary content-language → [@language], dated
|
|
8375
|
+
// std-ref → [@externalId] (tag keys with maxEmits caps — the NISO
|
|
8376
|
+
// convention puts the document language first). std-meta has no id, so
|
|
8377
|
+
// no anchor/customerId. Remaining leaves drop as recorded loss (R-4).
|
|
8378
|
+
mappingKeys: { "xml-niso-iec": { "@el": "std-meta" } },
|
|
8120
8379
|
tags: [
|
|
8121
8380
|
{
|
|
8122
8381
|
key: ConfigKey.group_bookCommon,
|
|
@@ -8403,12 +8662,14 @@ var BITS = {
|
|
|
8403
8662
|
{
|
|
8404
8663
|
key: ConfigKey.property_focusX,
|
|
8405
8664
|
description: "The X coordinate for focusing the image in the browser",
|
|
8406
|
-
format: TagFormat.number
|
|
8665
|
+
format: TagFormat.number,
|
|
8666
|
+
nullable: true
|
|
8407
8667
|
},
|
|
8408
8668
|
{
|
|
8409
8669
|
key: ConfigKey.property_focusY,
|
|
8410
8670
|
description: "The Y coordinate for focusing the image in the browser",
|
|
8411
|
-
format: TagFormat.number
|
|
8671
|
+
format: TagFormat.number,
|
|
8672
|
+
nullable: true
|
|
8412
8673
|
}
|
|
8413
8674
|
]
|
|
8414
8675
|
},
|
|
@@ -8439,6 +8700,15 @@ var BITS = {
|
|
|
8439
8700
|
since: "1.3.0",
|
|
8440
8701
|
baseBitType: BitType._standard,
|
|
8441
8702
|
description: "Chapter bit, used to define chapters in books or articles",
|
|
8703
|
+
// PLAN-140 W3 (NISO import, tranche 1): recover a chapter from a NISO
|
|
8704
|
+
// section or annex. STRUCTURAL key (no @children content slot): the
|
|
8705
|
+
// element carries no body of its own — tag children (label/title) map
|
|
8706
|
+
// via tag keys, every mapped descendant promotes to a following sibling
|
|
8707
|
+
// bit, and the chapter level derives from nesting depth (catalog D1).
|
|
8708
|
+
// The source id lands as [@customerId] (two-id model, D2).
|
|
8709
|
+
mappingKeys: {
|
|
8710
|
+
"xml-niso-iec": { "@el": "sec|app", "@attr": { id: "$customerId" }, "\u25BC": "$anchor" }
|
|
8711
|
+
},
|
|
8442
8712
|
tags: [
|
|
8443
8713
|
{
|
|
8444
8714
|
exportJsonKey: { anchor: "$" },
|
|
@@ -8450,7 +8720,10 @@ var BITS = {
|
|
|
8450
8720
|
key: ConfigKey.tag_title,
|
|
8451
8721
|
description: "The title of the chapter",
|
|
8452
8722
|
jsonKey: "title|setMulti(level)",
|
|
8453
|
-
exportJsonKey: { title: "$", level: "$level" }
|
|
8723
|
+
exportJsonKey: { title: "$", level: "$level" },
|
|
8724
|
+
// PLAN-140 W3 (NISO import): the section/annex title; the heading
|
|
8725
|
+
// level rides the normalizer-derived nesting depth (plan Q2).
|
|
8726
|
+
mappingKeys: { "xml-niso-iec": { "@el": "title", "@text": "$" } }
|
|
8454
8727
|
},
|
|
8455
8728
|
{
|
|
8456
8729
|
key: ConfigKey.property_toc,
|
|
@@ -8540,12 +8813,14 @@ var BITS = {
|
|
|
8540
8813
|
{
|
|
8541
8814
|
key: ConfigKey.property_quizCountItems,
|
|
8542
8815
|
description: "The number of items in the cloze quiz",
|
|
8543
|
-
format: TagFormat.boolean
|
|
8816
|
+
format: TagFormat.boolean,
|
|
8817
|
+
nullable: true
|
|
8544
8818
|
},
|
|
8545
8819
|
{
|
|
8546
8820
|
key: ConfigKey.property_quizStrikethroughSolutions,
|
|
8547
8821
|
description: "If the cloze solutions should be strikethrough",
|
|
8548
|
-
format: TagFormat.boolean
|
|
8822
|
+
format: TagFormat.boolean,
|
|
8823
|
+
nullable: true
|
|
8549
8824
|
},
|
|
8550
8825
|
{
|
|
8551
8826
|
key: ConfigKey.group_gap,
|
|
@@ -8654,11 +8929,28 @@ var BITS = {
|
|
|
8654
8929
|
since: "1.3.0",
|
|
8655
8930
|
baseBitType: BitType._standard,
|
|
8656
8931
|
description: "Code bit, used for code snippets in articles or documents",
|
|
8932
|
+
// PLAN-141 F4 (NISO import): a <code> block is a CONTENT bit with a
|
|
8933
|
+
// literal text body; @language recovers as [@computerLanguage] (absent
|
|
8934
|
+
// attr → no tag). Anchor = the source id (D2 revised).
|
|
8935
|
+
mappingKeys: {
|
|
8936
|
+
"xml-niso-iec": {
|
|
8937
|
+
"@el": "code",
|
|
8938
|
+
"@attr": { id: "$customerId", language: "$computerLanguage" },
|
|
8939
|
+
"\u25BC": "$anchor",
|
|
8940
|
+
"@text": "$"
|
|
8941
|
+
}
|
|
8942
|
+
},
|
|
8657
8943
|
tags: [
|
|
8658
8944
|
{
|
|
8659
8945
|
key: ConfigKey.property_computerLanguage,
|
|
8660
8946
|
description: "The programming language of the code snippet",
|
|
8661
|
-
format: TagFormat.plainText
|
|
8947
|
+
format: TagFormat.plainText,
|
|
8948
|
+
// PLAN-141 F4 (NISO import): the bit key's `language` sigil recovers
|
|
8949
|
+
// a present attr; this `@absent` rule supplies the AUTHORED default
|
|
8950
|
+
// when the source carries none (catalog code row — an untyped block
|
|
8951
|
+
// is `[@computerLanguage:text]`). Fires only on foreign imports,
|
|
8952
|
+
// never the carrier round-trip.
|
|
8953
|
+
mappingKeys: { "xml-niso-iec": [{ "@absent": "text" }] }
|
|
8662
8954
|
},
|
|
8663
8955
|
{
|
|
8664
8956
|
key: ConfigKey.property_codeLineNumbers,
|
|
@@ -8697,7 +8989,20 @@ var BITS = {
|
|
|
8697
8989
|
[BitType.smartStandardFormulaNormative]: {
|
|
8698
8990
|
since: "3.11.0",
|
|
8699
8991
|
baseBitType: BitType.formula,
|
|
8700
|
-
description: "Smart standard normative formula bit, used for mathematical formulas in smart standards that are normative"
|
|
8992
|
+
description: "Smart standard normative formula bit, used for mathematical formulas in smart standards that are normative",
|
|
8993
|
+
// PLAN-141 F4 (NISO import): a <disp-formula> is a CONTENT bit whose
|
|
8994
|
+
// latex-format body carries the <mml:math> subtree VERBATIM (G1 — no
|
|
8995
|
+
// MathML↔LaTeX transform; ids stripped); <label> → [%]; a contained
|
|
8996
|
+
// <legend> PROMOTES as a sibling legend bit (cards cannot nest in a
|
|
8997
|
+
// body). Anchor = the source id (D2 revised).
|
|
8998
|
+
mappingKeys: {
|
|
8999
|
+
"xml-niso-iec": {
|
|
9000
|
+
"@el": "disp-formula",
|
|
9001
|
+
"@attr": { id: "$customerId" },
|
|
9002
|
+
"\u25BC": "$anchor",
|
|
9003
|
+
"@children": "$"
|
|
9004
|
+
}
|
|
9005
|
+
}
|
|
8701
9006
|
},
|
|
8702
9007
|
[BitType.smartStandardRemarkFormula]: {
|
|
8703
9008
|
since: "3.11.0",
|
|
@@ -9224,7 +9529,8 @@ var BITS = {
|
|
|
9224
9529
|
{
|
|
9225
9530
|
key: ConfigKey.property_reasonableNumOfChars,
|
|
9226
9531
|
description: "The reasonable number of characters for the essay",
|
|
9227
|
-
format: TagFormat.number
|
|
9532
|
+
format: TagFormat.number,
|
|
9533
|
+
nullable: true
|
|
9228
9534
|
},
|
|
9229
9535
|
{
|
|
9230
9536
|
key: ConfigKey.property_sampleSolution,
|
|
@@ -9657,7 +9963,14 @@ var BITS = {
|
|
|
9657
9963
|
[BitType.smartStandardList]: {
|
|
9658
9964
|
since: "1.28.0",
|
|
9659
9965
|
baseBitType: BitType.standardList,
|
|
9660
|
-
description: "Smart standard list bit, used to create smart standard lists in articles or books"
|
|
9966
|
+
description: "Smart standard list bit, used to create smart standard lists in articles or books",
|
|
9967
|
+
// PLAN-140 refs family (NISO import): a reference list is a STRUCTURAL
|
|
9968
|
+
// bit (no @children — it takes a path ordinal anchor and its <ref>
|
|
9969
|
+
// children promote to sibling list-item bits); its <title> rides [#]
|
|
9970
|
+
// via the title tag key.
|
|
9971
|
+
mappingKeys: {
|
|
9972
|
+
"xml-niso-iec": { "@el": "ref-list", "@attr": { id: "$customerId" }, "\u25BC": "$anchor" }
|
|
9973
|
+
}
|
|
9661
9974
|
},
|
|
9662
9975
|
[BitType.smartStandardListCollapsible]: {
|
|
9663
9976
|
since: "1.28.0",
|
|
@@ -9702,7 +10015,17 @@ var BITS = {
|
|
|
9702
10015
|
[BitType.smartStandardNoteNonNormative]: {
|
|
9703
10016
|
since: "1.28.0",
|
|
9704
10017
|
baseBitType: BitType.standardNoteNonNormative,
|
|
9705
|
-
description: "Smart standard non-normative note bit, used to provide non-normative notes in smart standards"
|
|
10018
|
+
description: "Smart standard non-normative note bit, used to provide non-normative notes in smart standards",
|
|
10019
|
+
// PLAN-140 W3 (NISO import, tranche 1). CONTENT key (@children): a
|
|
10020
|
+
// note's inner paragraphs are note body, never separate bits.
|
|
10021
|
+
mappingKeys: {
|
|
10022
|
+
"xml-niso-iec": {
|
|
10023
|
+
"@el": "non-normative-note",
|
|
10024
|
+
"@attr": { id: "$customerId" },
|
|
10025
|
+
"@children": "$",
|
|
10026
|
+
"\u25BC": "$anchor"
|
|
10027
|
+
}
|
|
10028
|
+
}
|
|
9706
10029
|
},
|
|
9707
10030
|
[BitType.smartStandardNoteNormativeCollapsible]: {
|
|
9708
10031
|
since: "1.28.0",
|
|
@@ -9809,7 +10132,19 @@ var BITS = {
|
|
|
9809
10132
|
[BitType.smartStandardRemarkNonNormative]: {
|
|
9810
10133
|
since: "1.28.0",
|
|
9811
10134
|
baseBitType: BitType.standardRemarkNonNormative,
|
|
9812
|
-
description: "Smart standard non-normative remark bit, used to provide non-normative remarks in smart standards"
|
|
10135
|
+
description: "Smart standard non-normative remark bit, used to provide non-normative remarks in smart standards",
|
|
10136
|
+
// PLAN-140 Q4 rider: a warning/caution note routes to the remark bit —
|
|
10137
|
+
// the same element as the note key, distinguished by the content-type
|
|
10138
|
+
// attr literal (alias value: forward emits the first alternative,
|
|
10139
|
+
// reverse accepts any). Most-specific-wins beats the plain note key.
|
|
10140
|
+
mappingKeys: {
|
|
10141
|
+
"xml-niso-iec": {
|
|
10142
|
+
"@el": "non-normative-note",
|
|
10143
|
+
"@attr": { "content-type": "warning|caution", id: "$customerId" },
|
|
10144
|
+
"@children": "$",
|
|
10145
|
+
"\u25BC": "$anchor"
|
|
10146
|
+
}
|
|
10147
|
+
}
|
|
9813
10148
|
},
|
|
9814
10149
|
[BitType.smartStandardRemarkNormativeCollapsible]: {
|
|
9815
10150
|
since: "1.28.0",
|
|
@@ -10241,6 +10576,12 @@ var BITS = {
|
|
|
10241
10576
|
description: "Extractor theme bit, used to store design/theme JSON extracted from documents",
|
|
10242
10577
|
textFormatDefault: TextFormat.json
|
|
10243
10578
|
},
|
|
10579
|
+
[BitType.extractorReconcile]: {
|
|
10580
|
+
since: "5.35.0",
|
|
10581
|
+
baseBitType: BitType._standard,
|
|
10582
|
+
description: "Extractor reconcile bit, used to store PDF-compare reconciliation decisions (config and issues) in JSON",
|
|
10583
|
+
textFormatDefault: TextFormat.json
|
|
10584
|
+
},
|
|
10244
10585
|
[BitType.extractorAiChat]: {
|
|
10245
10586
|
since: "3.19.0",
|
|
10246
10587
|
baseBitType: BitType._standard,
|
|
@@ -10259,32 +10600,38 @@ var BITS = {
|
|
|
10259
10600
|
{
|
|
10260
10601
|
key: ConfigKey.property_pageNo,
|
|
10261
10602
|
description: "Page number for the block, used to indicate the page on which the block appears",
|
|
10262
|
-
format: TagFormat.number
|
|
10603
|
+
format: TagFormat.number,
|
|
10604
|
+
nullable: true
|
|
10263
10605
|
},
|
|
10264
10606
|
{
|
|
10265
10607
|
key: ConfigKey.property_x,
|
|
10266
10608
|
description: "X-coordinate for the block, used to position the block on the page",
|
|
10267
|
-
format: TagFormat.number
|
|
10609
|
+
format: TagFormat.number,
|
|
10610
|
+
nullable: true
|
|
10268
10611
|
},
|
|
10269
10612
|
{
|
|
10270
10613
|
key: ConfigKey.property_y,
|
|
10271
10614
|
description: "Y-coordinate for the block, used to position the block on the page",
|
|
10272
|
-
format: TagFormat.number
|
|
10615
|
+
format: TagFormat.number,
|
|
10616
|
+
nullable: true
|
|
10273
10617
|
},
|
|
10274
10618
|
{
|
|
10275
10619
|
key: ConfigKey.property_width,
|
|
10276
10620
|
description: "Width of the block, used to define the size of the block on the page",
|
|
10277
|
-
format: TagFormat.number
|
|
10621
|
+
format: TagFormat.number,
|
|
10622
|
+
nullable: true
|
|
10278
10623
|
},
|
|
10279
10624
|
{
|
|
10280
10625
|
key: ConfigKey.property_height,
|
|
10281
10626
|
description: "Height of the block, used to define the size of the block on the page",
|
|
10282
|
-
format: TagFormat.number
|
|
10627
|
+
format: TagFormat.number,
|
|
10628
|
+
nullable: true
|
|
10283
10629
|
},
|
|
10284
10630
|
{
|
|
10285
10631
|
key: ConfigKey.property_index,
|
|
10286
10632
|
description: "Index of the block, used to order blocks within the extractor page",
|
|
10287
|
-
format: TagFormat.number
|
|
10633
|
+
format: TagFormat.number,
|
|
10634
|
+
nullable: true
|
|
10288
10635
|
},
|
|
10289
10636
|
{
|
|
10290
10637
|
key: ConfigKey.property_classification,
|
|
@@ -10594,7 +10941,20 @@ var BITS = {
|
|
|
10594
10941
|
[BitType.smartStandardLegendNormative]: {
|
|
10595
10942
|
since: "3.12.0",
|
|
10596
10943
|
baseBitType: BitType.legend,
|
|
10597
|
-
description: "Smart standard normative legend bit, used to provide normative smart standard legends in articles or books"
|
|
10944
|
+
description: "Smart standard normative legend bit, used to provide normative smart standard legends in articles or books",
|
|
10945
|
+
// PLAN-141 F2 (NISO import): a free-standing <legend> (a formula's) or
|
|
10946
|
+
// bare <def-list> (a table footer's — no <legend> wrapper there) that is
|
|
10947
|
+
// NOT the claimed card content of its enclosing bit is a legend bit:
|
|
10948
|
+
// STRUCTURAL-shaped, its <title> and <def-item>s build the
|
|
10949
|
+
// definition-list cards via the card set's authored keys. A <legend>
|
|
10950
|
+
// inside a figure/table bit stays that bit's claimed card content and
|
|
10951
|
+
// never reaches this key. Anchor = the source id (D2 revised).
|
|
10952
|
+
mappingKeys: {
|
|
10953
|
+
"xml-niso-iec": [
|
|
10954
|
+
{ "@el": "legend", "@attr": { id: "$customerId" }, "\u25BC": "$anchor" },
|
|
10955
|
+
{ "@el": "def-list", "@attr": { id: "$customerId" }, "\u25BC": "$anchor" }
|
|
10956
|
+
]
|
|
10957
|
+
}
|
|
10598
10958
|
},
|
|
10599
10959
|
[BitType.smartStandardRemarkLegend]: {
|
|
10600
10960
|
since: "3.12.0",
|
|
@@ -10649,7 +11009,16 @@ var BITS = {
|
|
|
10649
11009
|
[BitType.smartStandardDefinitionListNormative]: {
|
|
10650
11010
|
since: "5.24.0",
|
|
10651
11011
|
baseBitType: BitType.standardDefinitionListNormative,
|
|
10652
|
-
description: "Smart standard normative definition list bit, used to create normative smart standard definition lists in articles or books"
|
|
11012
|
+
description: "Smart standard normative definition list bit, used to create normative smart standard definition lists in articles or books",
|
|
11013
|
+
// PLAN-141 F3 (NISO import): a terms-and-definitions clause. STRUCTURAL-
|
|
11014
|
+
// shaped: <label> → [%], the tbx:termEntry/langSet subtree builds the
|
|
11015
|
+
// definition-list card via the card set's authored keys (all tig terms
|
|
11016
|
+
// stacked on the term side; definition/example/notes/source composed on
|
|
11017
|
+
// the definition side with authored locale affixes), langSet @xml:lang →
|
|
11018
|
+
// [@lang] (nested attr slot on the tag key). Anchor = the source id.
|
|
11019
|
+
mappingKeys: {
|
|
11020
|
+
"xml-niso-iec": { "@el": "term-sec", "@attr": { id: "$customerId" }, "\u25BC": "$anchor" }
|
|
11021
|
+
}
|
|
10653
11022
|
},
|
|
10654
11023
|
[BitType.smartStandardDefinitionListNonNormative]: {
|
|
10655
11024
|
since: "5.24.0",
|
|
@@ -10718,12 +11087,14 @@ var BITS = {
|
|
|
10718
11087
|
{
|
|
10719
11088
|
key: ConfigKey.property_focusX,
|
|
10720
11089
|
description: "X-coordinate for the focus point, used to define the focus area in the image",
|
|
10721
|
-
format: TagFormat.number
|
|
11090
|
+
format: TagFormat.number,
|
|
11091
|
+
nullable: true
|
|
10722
11092
|
},
|
|
10723
11093
|
{
|
|
10724
11094
|
key: ConfigKey.property_focusY,
|
|
10725
11095
|
description: "Y-coordinate for the focus point, used to define the focus area in the image",
|
|
10726
|
-
format: TagFormat.number
|
|
11096
|
+
format: TagFormat.number,
|
|
11097
|
+
nullable: true
|
|
10727
11098
|
}
|
|
10728
11099
|
]
|
|
10729
11100
|
},
|
|
@@ -10830,7 +11201,15 @@ var BITS = {
|
|
|
10830
11201
|
[BitType.smartStandardImageFigureNormative]: {
|
|
10831
11202
|
since: "1.28.0",
|
|
10832
11203
|
baseBitType: BitType.standardImageFigureNormative,
|
|
10833
|
-
description: "Smart standard normative image figure bit, used to create smart standard normative image figures in articles or books"
|
|
11204
|
+
description: "Smart standard normative image figure bit, used to create smart standard normative image figures in articles or books",
|
|
11205
|
+
// PLAN-141 F1 (NISO import): a figure is STRUCTURAL-shaped (no
|
|
11206
|
+
// @children — no body): <label> → [%], <caption>/<graphic> ride the
|
|
11207
|
+
// [&image] resource chain, the <legend> def-list becomes the bit's
|
|
11208
|
+
// definition-list cards, and an inner note PROMOTES as a sibling bit.
|
|
11209
|
+
// Anchor = the source id (D2 revised).
|
|
11210
|
+
mappingKeys: {
|
|
11211
|
+
"xml-niso-iec": { "@el": "fig", "@attr": { id: "$customerId" }, "\u25BC": "$anchor" }
|
|
11212
|
+
}
|
|
10834
11213
|
},
|
|
10835
11214
|
[BitType.smartStandardImageFigureNonNormative]: {
|
|
10836
11215
|
since: "1.28.0",
|
|
@@ -11558,7 +11937,19 @@ var BITS = {
|
|
|
11558
11937
|
[BitType.smartStandardListItem]: {
|
|
11559
11938
|
since: "1.28.0",
|
|
11560
11939
|
baseBitType: BitType.standardListItem,
|
|
11561
|
-
description: "Smart standard list item bit, used to create smart standard list items in articles or books"
|
|
11940
|
+
description: "Smart standard list item bit, used to create smart standard list items in articles or books",
|
|
11941
|
+
// PLAN-140 refs family (NISO import): one list-item bit per <ref> —
|
|
11942
|
+
// CONTENT key (its citation subtree is the body), counter anchor scoped
|
|
11943
|
+
// to the containing list, <label> → [%], nested <std-id> → [@externalId]
|
|
11944
|
+
// (the externalId tag key's nested content slot).
|
|
11945
|
+
mappingKeys: {
|
|
11946
|
+
"xml-niso-iec": {
|
|
11947
|
+
"@el": "ref",
|
|
11948
|
+
"@attr": { id: "$customerId" },
|
|
11949
|
+
"@children": "$",
|
|
11950
|
+
"\u25BC": "$anchor"
|
|
11951
|
+
}
|
|
11952
|
+
}
|
|
11562
11953
|
},
|
|
11563
11954
|
[BitType.smartStandardListItemCollapsible]: {
|
|
11564
11955
|
since: "1.28.0",
|
|
@@ -12027,7 +12418,8 @@ var BITS = {
|
|
|
12027
12418
|
{
|
|
12028
12419
|
key: ConfigKey.property_product,
|
|
12029
12420
|
description: "Product reference for the product page, used to link to the product",
|
|
12030
|
-
format: TagFormat.plainText
|
|
12421
|
+
format: TagFormat.plainText,
|
|
12422
|
+
nullable: true
|
|
12031
12423
|
}
|
|
12032
12424
|
]
|
|
12033
12425
|
},
|
|
@@ -12046,6 +12438,7 @@ var BITS = {
|
|
|
12046
12438
|
key: ConfigKey.property_product,
|
|
12047
12439
|
description: "Product reference for the product list, used to link to the product",
|
|
12048
12440
|
format: TagFormat.plainText,
|
|
12441
|
+
nullable: true,
|
|
12049
12442
|
maxCount: Count.infinity
|
|
12050
12443
|
}
|
|
12051
12444
|
// {
|
|
@@ -12607,7 +13000,8 @@ var BITS = {
|
|
|
12607
13000
|
{
|
|
12608
13001
|
key: ConfigKey.property_ratingLevelSelected,
|
|
12609
13002
|
description: "Selected level for the rating survey, used to define the default rating",
|
|
12610
|
-
format: TagFormat.number
|
|
13003
|
+
format: TagFormat.number,
|
|
13004
|
+
nullable: true
|
|
12611
13005
|
},
|
|
12612
13006
|
{
|
|
12613
13007
|
key: ConfigKey.property_buttonCaption,
|
|
@@ -12662,7 +13056,13 @@ var BITS = {
|
|
|
12662
13056
|
// `<caption>` — placed inside the idiomatic `<table>` container as
|
|
12663
13057
|
// its first child. Outside a table context it falls back to the
|
|
12664
13058
|
// residual carrier.
|
|
12665
|
-
htmlKey: { "@el": "caption", "@children": "$" }
|
|
13059
|
+
htmlKey: { "@el": "caption", "@children": "$" },
|
|
13060
|
+
// PLAN-141 F2 (NISO import): a table-wrap's <caption><title> — the
|
|
13061
|
+
// nested content slot reads the title text (catalog D5: the caption
|
|
13062
|
+
// is a TOP-LEVEL bit property on table bits).
|
|
13063
|
+
mappingKeys: {
|
|
13064
|
+
"xml-niso-iec": { "@el": "caption", "@children": { "@el": "title", "@text": "$" } }
|
|
13065
|
+
}
|
|
12666
13066
|
},
|
|
12667
13067
|
{
|
|
12668
13068
|
key: ConfigKey.property_tableFixedHeader,
|
|
@@ -12835,7 +13235,16 @@ var BITS = {
|
|
|
12835
13235
|
[BitType.smartStandardTableExtendedNormative]: {
|
|
12836
13236
|
since: "1.28.0",
|
|
12837
13237
|
baseBitType: BitType.standardTableExtendedNormative,
|
|
12838
|
-
description: "Smart standard normative extended table bit, used to create smart standard normative extended tables in articles or books"
|
|
13238
|
+
description: "Smart standard normative extended table bit, used to create smart standard normative extended tables in articles or books",
|
|
13239
|
+
// PLAN-141 F2 (NISO import): a table-wrap is STRUCTURAL-shaped (no
|
|
13240
|
+
// @children — no body): <label> → [%], <caption><title> → the bit-level
|
|
13241
|
+
// [@caption] (D5), the inner <table>/<table-wrap-foot> build the
|
|
13242
|
+
// table-extended card grid via the card set's authored keys, and a
|
|
13243
|
+
// footer <def-list> PROMOTES as a sibling legend bit. Anchor = the
|
|
13244
|
+
// source id (D2 revised).
|
|
13245
|
+
mappingKeys: {
|
|
13246
|
+
"xml-niso-iec": { "@el": "table-wrap", "@attr": { id: "$customerId" }, "\u25BC": "$anchor" }
|
|
13247
|
+
}
|
|
12839
13248
|
},
|
|
12840
13249
|
[BitType.smartStandardTableExtendedNonNormative]: {
|
|
12841
13250
|
since: "1.28.0",
|
|
@@ -12910,7 +13319,8 @@ var BITS = {
|
|
|
12910
13319
|
{
|
|
12911
13320
|
key: ConfigKey.property_maxDisplayLevel,
|
|
12912
13321
|
description: "Maximum display level for the chapter in the table of contents",
|
|
12913
|
-
format: TagFormat.number
|
|
13322
|
+
format: TagFormat.number,
|
|
13323
|
+
nullable: true
|
|
12914
13324
|
}
|
|
12915
13325
|
]
|
|
12916
13326
|
},
|
|
@@ -12922,7 +13332,8 @@ var BITS = {
|
|
|
12922
13332
|
{
|
|
12923
13333
|
key: ConfigKey.property_maxTocChapterLevel,
|
|
12924
13334
|
description: "Maximum chapter level for the inline table of contents",
|
|
12925
|
-
format: TagFormat.number
|
|
13335
|
+
format: TagFormat.number,
|
|
13336
|
+
nullable: true
|
|
12926
13337
|
}
|
|
12927
13338
|
]
|
|
12928
13339
|
},
|
|
@@ -13345,13 +13756,15 @@ var BITS = {
|
|
|
13345
13756
|
key: ConfigKey.property_width,
|
|
13346
13757
|
// Same as image
|
|
13347
13758
|
description: "Width for the embedded content, used to define the width in pixels",
|
|
13348
|
-
format: TagFormat.number
|
|
13759
|
+
format: TagFormat.number,
|
|
13760
|
+
nullable: true
|
|
13349
13761
|
},
|
|
13350
13762
|
{
|
|
13351
13763
|
key: ConfigKey.property_height,
|
|
13352
13764
|
// Same as image
|
|
13353
13765
|
description: "Height for the embedded content, used to define the height in pixels",
|
|
13354
|
-
format: TagFormat.number
|
|
13766
|
+
format: TagFormat.number,
|
|
13767
|
+
nullable: true
|
|
13355
13768
|
},
|
|
13356
13769
|
{
|
|
13357
13770
|
key: ConfigKey.property_vendorUrl,
|
|
@@ -13389,7 +13802,8 @@ var BITS = {
|
|
|
13389
13802
|
{
|
|
13390
13803
|
key: ConfigKey.property_jupyterExecutionCount,
|
|
13391
13804
|
description: "Execution count for the Jupyter output, used to define the execution order",
|
|
13392
|
-
format: TagFormat.number
|
|
13805
|
+
format: TagFormat.number,
|
|
13806
|
+
nullable: true
|
|
13393
13807
|
}
|
|
13394
13808
|
],
|
|
13395
13809
|
textFormatDefault: TextFormat.plainText
|
|
@@ -13939,7 +14353,7 @@ var instance2 = new Config();
|
|
|
13939
14353
|
// src/generated/package_info.ts
|
|
13940
14354
|
var PACKAGE_INFO = {
|
|
13941
14355
|
"name": "@gmb/bitmark-parser-generator",
|
|
13942
|
-
"version": "5.
|
|
14356
|
+
"version": "5.36.0",
|
|
13943
14357
|
"author": "Get More Brain Ltd",
|
|
13944
14358
|
"license": "ISC",
|
|
13945
14359
|
"description": "A bitmark parser and generator using Peggy.js"
|
|
@@ -14468,6 +14882,8 @@ var NodeType = {
|
|
|
14468
14882
|
definition: "definition",
|
|
14469
14883
|
definitions: "definitions",
|
|
14470
14884
|
definitionsValue: "definitionsValue",
|
|
14885
|
+
displayName: "displayName",
|
|
14886
|
+
displayNameValue: "displayNameValue",
|
|
14471
14887
|
diffContext: "diffContext",
|
|
14472
14888
|
diffContextValue: "diffContextValue",
|
|
14473
14889
|
diffOp: "diffOp",
|
|
@@ -14864,6 +15280,8 @@ var NodeType = {
|
|
|
14864
15280
|
reviewTagValue: "reviewTagValue",
|
|
14865
15281
|
reviewerTag: "reviewerTag",
|
|
14866
15282
|
reviewerTagValue: "reviewerTagValue",
|
|
15283
|
+
rightsPolicy: "rightsPolicy",
|
|
15284
|
+
rightsPolicyValue: "rightsPolicyValue",
|
|
14867
15285
|
root: "root",
|
|
14868
15286
|
// bit type (root)
|
|
14869
15287
|
rows: "rows",
|
|
@@ -28233,6 +28651,14 @@ var Builder = class extends BaseBuilder {
|
|
|
28233
28651
|
data.jupyterExecutionCount,
|
|
28234
28652
|
options
|
|
28235
28653
|
),
|
|
28654
|
+
copyright: this.toAstProperty(bitType, ConfigKey.property_copyright, data.copyright, options),
|
|
28655
|
+
license: this.toAstProperty(bitType, ConfigKey.property_license, data.license, options),
|
|
28656
|
+
rightsPolicy: this.toAstProperty(
|
|
28657
|
+
bitType,
|
|
28658
|
+
ConfigKey.property_rightsPolicy,
|
|
28659
|
+
data.rightsPolicy,
|
|
28660
|
+
options
|
|
28661
|
+
),
|
|
28236
28662
|
sourceRL: this.toAstProperty(bitType, ConfigKey.property_sourceRL, data.sourceRL, options),
|
|
28237
28663
|
isPublic: this.toAstProperty(bitType, ConfigKey.property_isPublic, data.isPublic, options),
|
|
28238
28664
|
isTemplate: this.toAstProperty(
|
|
@@ -28380,6 +28806,12 @@ var Builder = class extends BaseBuilder {
|
|
|
28380
28806
|
data.publisherName,
|
|
28381
28807
|
options
|
|
28382
28808
|
),
|
|
28809
|
+
displayName: this.toAstProperty(
|
|
28810
|
+
bitType,
|
|
28811
|
+
ConfigKey.property_displayName,
|
|
28812
|
+
data.displayName,
|
|
28813
|
+
options
|
|
28814
|
+
),
|
|
28383
28815
|
theme: this.toAstProperty(bitType, ConfigKey.property_theme, data.theme, options),
|
|
28384
28816
|
rtl: this.toAstProperty(bitType, ConfigKey.property_rtl, data.rtl, options),
|
|
28385
28817
|
computerLanguage: this.toAstProperty(
|
|
@@ -44542,7 +44974,7 @@ var ConfigBuilder = class {
|
|
|
44542
44974
|
}
|
|
44543
44975
|
const outputFolder = opts.outputDir ?? "assets/config";
|
|
44544
44976
|
const outputFolderBits = path3.join(outputFolder, "bits");
|
|
44545
|
-
const outputFolderGroups = path3.join(outputFolder, "
|
|
44977
|
+
const outputFolderGroups = path3.join(outputFolder, "groups");
|
|
44546
44978
|
const outputFolderCards = path3.join(outputFolder, "cards");
|
|
44547
44979
|
fs3.ensureDirSync(outputFolderBits);
|
|
44548
44980
|
fs3.ensureDirSync(outputFolderGroups);
|
|
@@ -44577,6 +45009,15 @@ var ConfigBuilder = class {
|
|
|
44577
45009
|
}
|
|
44578
45010
|
return [{ key: groupKey }];
|
|
44579
45011
|
};
|
|
45012
|
+
const mappingKeysField = (base, json, html) => {
|
|
45013
|
+
const record = {};
|
|
45014
|
+
for (const [id, value] of Object.entries(base ?? {})) {
|
|
45015
|
+
if (value != null) record[id] = value;
|
|
45016
|
+
}
|
|
45017
|
+
if (json.present && json.value != null) record.json = json.value;
|
|
45018
|
+
if (html.present && html.value != null) record.html = html.value;
|
|
45019
|
+
return Object.keys(record).length > 0 ? { mappingKeys: record } : {};
|
|
45020
|
+
};
|
|
44580
45021
|
const bareKeyForProperty = (key) => {
|
|
44581
45022
|
if (key.startsWith("@") || key.startsWith("&")) return key.substring(1);
|
|
44582
45023
|
return void 0;
|
|
@@ -44597,22 +45038,20 @@ var ConfigBuilder = class {
|
|
|
44597
45038
|
if (tag.format === TagFormat.plainText) {
|
|
44598
45039
|
format = "string";
|
|
44599
45040
|
} else if (tag.format === TagFormat.boolean) {
|
|
44600
|
-
format = "
|
|
44601
|
-
} else if (tag.format === TagFormat.bitmarkText) {
|
|
44602
|
-
format = "bitmark";
|
|
45041
|
+
format = "boolean";
|
|
44603
45042
|
} else if (tag.format === TagFormat.number) {
|
|
44604
45043
|
format = "number";
|
|
44605
45044
|
} else {
|
|
44606
|
-
format = "bitmark
|
|
45045
|
+
format = "bitmark+";
|
|
44607
45046
|
}
|
|
44608
45047
|
} else if (tagType === BitTagConfigKeyType.property) {
|
|
44609
45048
|
tagName = tag.key;
|
|
44610
45049
|
if (tag.format === TagFormat.plainText) {
|
|
44611
45050
|
format = "string";
|
|
44612
45051
|
} else if (tag.format === TagFormat.boolean) {
|
|
44613
|
-
format = "
|
|
45052
|
+
format = "boolean";
|
|
44614
45053
|
} else if (tag.format === TagFormat.bitmarkText) {
|
|
44615
|
-
format = "bitmark";
|
|
45054
|
+
format = "bitmark+";
|
|
44616
45055
|
} else if (tag.format === TagFormat.number) {
|
|
44617
45056
|
format = "number";
|
|
44618
45057
|
} else if (tag.format === TagFormat.coordinates) {
|
|
@@ -44644,8 +45083,11 @@ var ConfigBuilder = class {
|
|
|
44644
45083
|
tags2.push({
|
|
44645
45084
|
type: "group",
|
|
44646
45085
|
key: ref.key,
|
|
44647
|
-
...
|
|
44648
|
-
|
|
45086
|
+
...mappingKeysField(
|
|
45087
|
+
{ ...ref.extraKeys ?? {}, ...tag.mappingKeys ?? {} },
|
|
45088
|
+
{ value: exportJsonKeyChosen, present: hasExportChosen },
|
|
45089
|
+
{ value: htmlKeyChosen, present: hasHtmlChosen }
|
|
45090
|
+
),
|
|
44649
45091
|
...min != null ? { min } : {},
|
|
44650
45092
|
...max != null ? { max } : {},
|
|
44651
45093
|
...description ? { description } : {}
|
|
@@ -44662,53 +45104,48 @@ var ConfigBuilder = class {
|
|
|
44662
45104
|
chain = chainTags;
|
|
44663
45105
|
}
|
|
44664
45106
|
const hasExport = Object.prototype.hasOwnProperty.call(tag, "exportJsonKey");
|
|
44665
|
-
|
|
44666
|
-
if (hasExport) {
|
|
44667
|
-
exportJsonKeyField = { jsonKey: tag.exportJsonKey };
|
|
44668
|
-
} else if (legacyIsTrivialDefault(tag)) {
|
|
44669
|
-
exportJsonKeyField = {};
|
|
44670
|
-
} else {
|
|
45107
|
+
if (!hasExport && !legacyIsTrivialDefault(tag)) {
|
|
44671
45108
|
const headingPath = [...pathStack, `tags.${tag.key}`].join(" / ");
|
|
44672
45109
|
exportJsonKeyErrors.push(
|
|
44673
45110
|
`Missing exportJsonKey for non-default jsonKey at ${headingPath}` + (tag.jsonKey ? ` (legacy: \`${tag.jsonKey}\`)` : ` (symbol-mapped tag \`${tag.key}\`)`)
|
|
44674
45111
|
);
|
|
44675
|
-
exportJsonKeyField = {};
|
|
44676
45112
|
}
|
|
44677
45113
|
const hasHtml = Object.prototype.hasOwnProperty.call(tag, "htmlKey");
|
|
44678
|
-
const htmlKeyField = hasHtml ? { htmlKey: tag.htmlKey } : {};
|
|
44679
45114
|
const t = {
|
|
44680
45115
|
type: "tag",
|
|
44681
45116
|
key: tagName,
|
|
44682
|
-
...
|
|
44683
|
-
|
|
44684
|
-
|
|
44685
|
-
|
|
45117
|
+
...mappingKeysField(
|
|
45118
|
+
tag.mappingKeys,
|
|
45119
|
+
{ value: tag.exportJsonKey, present: hasExport },
|
|
45120
|
+
{ value: tag.htmlKey, present: hasHtml }
|
|
45121
|
+
),
|
|
45122
|
+
...format && format !== "string" ? { format } : {},
|
|
45123
|
+
...tag.defaultValue != null ? { default: tag.defaultValue } : {},
|
|
44686
45124
|
...tag.nullable ? { nullable: true } : {},
|
|
44687
|
-
|
|
44688
|
-
|
|
45125
|
+
...tag.minCount != null && tag.minCount !== 0 ? { min: tag.minCount } : {},
|
|
45126
|
+
...tag.maxCount != null && tag.maxCount !== 1 ? { max: tag.maxCount } : {},
|
|
44689
45127
|
description: tag.description ?? "",
|
|
44690
45128
|
tags: chain
|
|
44691
45129
|
};
|
|
44692
45130
|
tags2.push(t);
|
|
44693
45131
|
return tags2;
|
|
44694
45132
|
};
|
|
44695
|
-
const
|
|
45133
|
+
const cardMappingKeysField = (container, base, legacyKey, exportKey, htmlExportKey, pathHeading) => {
|
|
44696
45134
|
const c = container;
|
|
44697
45135
|
const hasExport = Object.prototype.hasOwnProperty.call(c, exportKey);
|
|
44698
|
-
if (hasExport
|
|
44699
|
-
|
|
44700
|
-
|
|
44701
|
-
|
|
44702
|
-
`Missing exportJsonKey for non-default jsonKey at ${pathHeading} (legacy: \`${legacy}\`)`
|
|
44703
|
-
);
|
|
44704
|
-
return {};
|
|
44705
|
-
};
|
|
44706
|
-
const cardHtmlKeyField = (container, htmlExportKey) => {
|
|
44707
|
-
const c = container;
|
|
44708
|
-
if (Object.prototype.hasOwnProperty.call(c, htmlExportKey)) {
|
|
44709
|
-
return { htmlKey: c[htmlExportKey] };
|
|
45136
|
+
if (!hasExport && c[legacyKey] != null) {
|
|
45137
|
+
exportJsonKeyErrors.push(
|
|
45138
|
+
`Missing exportJsonKey for non-default jsonKey at ${pathHeading} (legacy: \`${c[legacyKey]}\`)`
|
|
45139
|
+
);
|
|
44710
45140
|
}
|
|
44711
|
-
return
|
|
45141
|
+
return mappingKeysField(
|
|
45142
|
+
base,
|
|
45143
|
+
{ value: c[exportKey], present: hasExport },
|
|
45144
|
+
{
|
|
45145
|
+
value: c[htmlExportKey],
|
|
45146
|
+
present: Object.prototype.hasOwnProperty.call(c, htmlExportKey)
|
|
45147
|
+
}
|
|
45148
|
+
);
|
|
44712
45149
|
};
|
|
44713
45150
|
const serializeCardSet = (cardSetKey) => {
|
|
44714
45151
|
const variantBodyFormat = (variant) => variant.format ?? TextFormat.bitmarkText;
|
|
@@ -44739,11 +45176,17 @@ var ConfigBuilder = class {
|
|
|
44739
45176
|
variantTags.push(...processTagEntries(variantTag, [variantPath]));
|
|
44740
45177
|
}
|
|
44741
45178
|
return {
|
|
44742
|
-
...
|
|
44743
|
-
|
|
44744
|
-
|
|
45179
|
+
...cardMappingKeysField(
|
|
45180
|
+
variant,
|
|
45181
|
+
void 0,
|
|
45182
|
+
"jsonKey",
|
|
45183
|
+
"exportJsonKey",
|
|
45184
|
+
"htmlKey",
|
|
45185
|
+
variantPath
|
|
45186
|
+
),
|
|
45187
|
+
bodyFormat: variantBodyFormat(variant),
|
|
44745
45188
|
tags: variantTags,
|
|
44746
|
-
repeatCount: variant.repeatCount
|
|
45189
|
+
...variant.repeatCount != null && variant.repeatCount !== 1 ? { repeatCount: variant.repeatCount } : {},
|
|
44747
45190
|
...variant.bodyRequired ? { bodyRequired: true } : {},
|
|
44748
45191
|
...variant.bodyAllowed === false ? { bodyForbidden: true } : {}
|
|
44749
45192
|
};
|
|
@@ -44751,8 +45194,14 @@ var ConfigBuilder = class {
|
|
|
44751
45194
|
return {
|
|
44752
45195
|
name: side.name,
|
|
44753
45196
|
...side.repeat ? { repeat: side.repeat } : {},
|
|
44754
|
-
...
|
|
44755
|
-
|
|
45197
|
+
...cardMappingKeysField(
|
|
45198
|
+
side,
|
|
45199
|
+
side.mappingKeys,
|
|
45200
|
+
"jsonKey",
|
|
45201
|
+
"exportJsonKey",
|
|
45202
|
+
"htmlKey",
|
|
45203
|
+
sidePath
|
|
45204
|
+
),
|
|
44756
45205
|
variants
|
|
44757
45206
|
};
|
|
44758
45207
|
});
|
|
@@ -44763,20 +45212,40 @@ var ConfigBuilder = class {
|
|
|
44763
45212
|
const hasSideHtml = Object.prototype.hasOwnProperty.call(section, "sideHtmlKey");
|
|
44764
45213
|
let cardSides = sides;
|
|
44765
45214
|
if (hasSideExport || section.sideJsonKey != null || hasSideHtml) {
|
|
44766
|
-
|
|
44767
|
-
|
|
44768
|
-
|
|
44769
|
-
|
|
44770
|
-
|
|
44771
|
-
)
|
|
44772
|
-
|
|
44773
|
-
|
|
45215
|
+
if (!hasSideExport && section.sideJsonKey != null) {
|
|
45216
|
+
exportJsonKeyErrors.push(
|
|
45217
|
+
`Missing exportJsonKey for non-default jsonKey at ${sectionPath} / sides.* (legacy: \`${section.sideJsonKey}\`)`
|
|
45218
|
+
);
|
|
45219
|
+
}
|
|
45220
|
+
cardSides = sides.map((s) => {
|
|
45221
|
+
const record = { ...s.mappingKeys ?? {} };
|
|
45222
|
+
if (hasSideExport) {
|
|
45223
|
+
if (section.sideExportJsonKey != null) record.json = section.sideExportJsonKey;
|
|
45224
|
+
else delete record.json;
|
|
45225
|
+
}
|
|
45226
|
+
if (hasSideHtml) {
|
|
45227
|
+
if (section.sideHtmlKey != null) record.html = section.sideHtmlKey;
|
|
45228
|
+
else delete record.html;
|
|
45229
|
+
}
|
|
45230
|
+
return {
|
|
45231
|
+
name: s.name,
|
|
45232
|
+
...s.repeat ? { repeat: s.repeat } : {},
|
|
45233
|
+
...Object.keys(record).length > 0 ? { mappingKeys: record } : {},
|
|
45234
|
+
variants: s.variants
|
|
45235
|
+
};
|
|
45236
|
+
});
|
|
44774
45237
|
}
|
|
44775
45238
|
return {
|
|
44776
45239
|
name: sectionName,
|
|
44777
45240
|
...section.isDefault ? { isDefault: true } : {},
|
|
44778
|
-
...
|
|
44779
|
-
|
|
45241
|
+
...cardMappingKeysField(
|
|
45242
|
+
section,
|
|
45243
|
+
section.mappingKeys,
|
|
45244
|
+
"jsonKey",
|
|
45245
|
+
"exportJsonKey",
|
|
45246
|
+
"htmlKey",
|
|
45247
|
+
sectionPath
|
|
45248
|
+
),
|
|
44780
45249
|
// PLAN-085: per-section cardinality. Emit only when non-default
|
|
44781
45250
|
// (treat `0` / undefined as "unbounded — omit").
|
|
44782
45251
|
...section.minCount != null && section.minCount !== 0 ? { min: section.minCount } : {},
|
|
@@ -44784,7 +45253,18 @@ var ConfigBuilder = class {
|
|
|
44784
45253
|
sides: cardSides
|
|
44785
45254
|
};
|
|
44786
45255
|
});
|
|
44787
|
-
return {
|
|
45256
|
+
return {
|
|
45257
|
+
name: normalizedKey,
|
|
45258
|
+
...mappingKeysField(
|
|
45259
|
+
void 0,
|
|
45260
|
+
{ present: false },
|
|
45261
|
+
{
|
|
45262
|
+
value: cardSetConfig.htmlKey,
|
|
45263
|
+
present: Object.prototype.hasOwnProperty.call(cardSetConfig, "htmlKey")
|
|
45264
|
+
}
|
|
45265
|
+
),
|
|
45266
|
+
cards
|
|
45267
|
+
};
|
|
44788
45268
|
}
|
|
44789
45269
|
const cardSetPath = `cardSets.${normalizedKey} / cards.default`;
|
|
44790
45270
|
return {
|
|
@@ -44793,8 +45273,14 @@ var ConfigBuilder = class {
|
|
|
44793
45273
|
{
|
|
44794
45274
|
name: "default",
|
|
44795
45275
|
isDefault: true,
|
|
44796
|
-
...
|
|
44797
|
-
|
|
45276
|
+
...cardMappingKeysField(
|
|
45277
|
+
cardSetConfig,
|
|
45278
|
+
cardSetConfig.mappingKeys,
|
|
45279
|
+
"jsonKey",
|
|
45280
|
+
"exportJsonKey",
|
|
45281
|
+
"htmlKey",
|
|
45282
|
+
cardSetPath
|
|
45283
|
+
),
|
|
44798
45284
|
sides
|
|
44799
45285
|
}
|
|
44800
45286
|
]
|
|
@@ -44830,14 +45316,19 @@ var ConfigBuilder = class {
|
|
|
44830
45316
|
...t.max != null ? { max: t.max } : {},
|
|
44831
45317
|
...t.description ? { description: t.description } : {}
|
|
44832
45318
|
};
|
|
44833
|
-
|
|
44834
|
-
|
|
45319
|
+
const record = t.mappingKeys ?? {};
|
|
45320
|
+
if (Object.prototype.hasOwnProperty.call(record, "json")) {
|
|
45321
|
+
ref.exportJsonKey = record.json;
|
|
44835
45322
|
ref.hasExportJsonKey = true;
|
|
44836
45323
|
}
|
|
44837
|
-
if (Object.prototype.hasOwnProperty.call(
|
|
44838
|
-
ref.htmlKey =
|
|
45324
|
+
if (Object.prototype.hasOwnProperty.call(record, "html")) {
|
|
45325
|
+
ref.htmlKey = record.html;
|
|
44839
45326
|
ref.hasHtmlKey = true;
|
|
44840
45327
|
}
|
|
45328
|
+
const extras = Object.fromEntries(
|
|
45329
|
+
Object.entries(record).filter(([id]) => id !== "json" && id !== "html")
|
|
45330
|
+
);
|
|
45331
|
+
if (Object.keys(extras).length > 0) ref.extraKeys = extras;
|
|
44841
45332
|
replacements.push(ref);
|
|
44842
45333
|
}
|
|
44843
45334
|
squashedGroups.set(groupKey, replacements);
|
|
@@ -44871,8 +45362,11 @@ var ConfigBuilder = class {
|
|
|
44871
45362
|
pushOrReplace({
|
|
44872
45363
|
type: "group",
|
|
44873
45364
|
key: ref.key,
|
|
44874
|
-
...
|
|
44875
|
-
|
|
45365
|
+
...mappingKeysField(
|
|
45366
|
+
ref.extraKeys,
|
|
45367
|
+
{ value: ref.exportJsonKey, present: !!ref.hasExportJsonKey },
|
|
45368
|
+
{ value: ref.htmlKey, present: !!ref.hasHtmlKey }
|
|
45369
|
+
),
|
|
44876
45370
|
...ref.min != null ? { min: ref.min } : {},
|
|
44877
45371
|
...ref.max != null ? { max: ref.max } : {},
|
|
44878
45372
|
...ref.description ? { description: ref.description } : {}
|
|
@@ -44885,8 +45379,11 @@ var ConfigBuilder = class {
|
|
|
44885
45379
|
pushOrReplace({
|
|
44886
45380
|
type: "group",
|
|
44887
45381
|
key: ref.key,
|
|
44888
|
-
...
|
|
44889
|
-
|
|
45382
|
+
...mappingKeysField(
|
|
45383
|
+
ref.extraKeys,
|
|
45384
|
+
{ value: ref.exportJsonKey, present: !!ref.hasExportJsonKey },
|
|
45385
|
+
{ value: ref.htmlKey, present: !!ref.hasHtmlKey }
|
|
45386
|
+
),
|
|
44890
45387
|
...ref.min != null ? { min: ref.min } : {},
|
|
44891
45388
|
...ref.max != null ? { max: ref.max } : {},
|
|
44892
45389
|
...ref.description ? { description: ref.description } : {}
|
|
@@ -44913,20 +45410,17 @@ var ConfigBuilder = class {
|
|
|
44913
45410
|
description: b.description ?? "",
|
|
44914
45411
|
since: resolvedBitConfig.since,
|
|
44915
45412
|
deprecated: resolvedBitConfig.deprecated,
|
|
44916
|
-
|
|
44917
|
-
|
|
44918
|
-
|
|
44919
|
-
|
|
44920
|
-
|
|
44921
|
-
|
|
44922
|
-
|
|
44923
|
-
|
|
44924
|
-
|
|
44925
|
-
footerRequired: resolvedBitConfig.footerRequired ?? false,
|
|
44926
|
-
footerForbidden: !(resolvedBitConfig.footerAllowed ?? true),
|
|
44927
|
-
resourceAttachmentAllowed: resolvedBitConfig.resourceAttachmentAllowed ?? true,
|
|
45413
|
+
bodyFormat: resolvedBitConfig.textFormatDefault ?? "bitmark--",
|
|
45414
|
+
...resolvedBitConfig.bodyRequired ? { bodyRequired: true } : {},
|
|
45415
|
+
...resolvedBitConfig.bodyAllowed === false ? { bodyForbidden: true } : {},
|
|
45416
|
+
...resolvedBitConfig.footerRequired ? { footerRequired: true } : {},
|
|
45417
|
+
...resolvedBitConfig.footerAllowed === false ? { footerForbidden: true } : {},
|
|
45418
|
+
...resolvedBitConfig.resourceAttachmentAllowed === false ? { resourceAttachmentAllowed: false } : {},
|
|
45419
|
+
// Bit-level named key mappings (element keys for markup import),
|
|
45420
|
+
// carried verbatim from the raw config.
|
|
45421
|
+
...mappingKeysField(b.mappingKeys, { present: false }, { present: false }),
|
|
44928
45422
|
tags: tags2,
|
|
44929
|
-
...cardRef ? {
|
|
45423
|
+
...cardRef ? { cardSet: cardRef } : {}
|
|
44930
45424
|
};
|
|
44931
45425
|
const output = path3.join(outputFolderBits, `${b.bitType}.jsonc`);
|
|
44932
45426
|
const str = JSON.stringify(bitJson, null, 2);
|
|
@@ -44954,14 +45448,7 @@ var ConfigBuilder = class {
|
|
|
44954
45448
|
const bitJson = {
|
|
44955
45449
|
name: groupKey,
|
|
44956
45450
|
description: g.description ?? "",
|
|
44957
|
-
since: "UNKNOWN",
|
|
44958
45451
|
deprecated: g.deprecated,
|
|
44959
|
-
history: [
|
|
44960
|
-
{
|
|
44961
|
-
version: "UNKNOWN",
|
|
44962
|
-
changes: ["Initial version"]
|
|
44963
|
-
}
|
|
44964
|
-
],
|
|
44965
45452
|
tags: tags2
|
|
44966
45453
|
// cards: [
|
|
44967
45454
|
// {
|
|
@@ -45015,8 +45502,11 @@ var ConfigBuilder = class {
|
|
|
45015
45502
|
tags2.push({
|
|
45016
45503
|
type: "group",
|
|
45017
45504
|
key: ref.key,
|
|
45018
|
-
...
|
|
45019
|
-
|
|
45505
|
+
...mappingKeysField(
|
|
45506
|
+
ref.extraKeys,
|
|
45507
|
+
{ value: ref.exportJsonKey, present: !!ref.hasExportJsonKey },
|
|
45508
|
+
{ value: ref.htmlKey, present: !!ref.hasHtmlKey }
|
|
45509
|
+
),
|
|
45020
45510
|
...ref.min != null ? { min: ref.min } : {},
|
|
45021
45511
|
...ref.max != null ? { max: ref.max } : {},
|
|
45022
45512
|
...ref.description ? { description: ref.description } : {}
|
|
@@ -45037,14 +45527,7 @@ var ConfigBuilder = class {
|
|
|
45037
45527
|
const bitJson = {
|
|
45038
45528
|
name: groupKey,
|
|
45039
45529
|
description: b.description ?? "",
|
|
45040
|
-
since: "UNKNOWN",
|
|
45041
45530
|
deprecated: b.deprecated,
|
|
45042
|
-
history: [
|
|
45043
|
-
{
|
|
45044
|
-
version: "UNKNOWN",
|
|
45045
|
-
changes: ["Initial version"]
|
|
45046
|
-
}
|
|
45047
|
-
],
|
|
45048
45531
|
tags: tags2
|
|
45049
45532
|
};
|
|
45050
45533
|
const output = path3.join(outputFolderGroups, `${groupKey}.jsonc`);
|
|
@@ -45085,7 +45568,7 @@ var ConfigBuilder = class {
|
|
|
45085
45568
|
validateConfigTree(outputFolder) {
|
|
45086
45569
|
const errors = [];
|
|
45087
45570
|
const outputFolderBits = path3.join(outputFolder, "bits");
|
|
45088
|
-
const outputFolderGroups = path3.join(outputFolder, "
|
|
45571
|
+
const outputFolderGroups = path3.join(outputFolder, "groups");
|
|
45089
45572
|
const outputFolderCards = path3.join(outputFolder, "cards");
|
|
45090
45573
|
const availableGroups = /* @__PURE__ */ new Set();
|
|
45091
45574
|
if (fs3.existsSync(outputFolderGroups)) {
|
|
@@ -45159,7 +45642,7 @@ var ConfigBuilder = class {
|
|
|
45159
45642
|
const content = fs3.readFileSync(filePath, "utf-8");
|
|
45160
45643
|
const config = JSON.parse(content);
|
|
45161
45644
|
if (config.tags && Array.isArray(config.tags)) {
|
|
45162
|
-
checkTags(config.tags, `
|
|
45645
|
+
checkTags(config.tags, `groups/${file}`, 15);
|
|
45163
45646
|
}
|
|
45164
45647
|
} catch (err) {
|
|
45165
45648
|
errors.push(`Failed to parse ${file}: ${err}`);
|