@udt/parser-utils 0.1.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/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # @udt/parser-utils
2
+
3
+ ## 0.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - aa0e5ce: Initial release of `@udt/parser-utils` package.
8
+
9
+ ### Patch Changes
10
+
11
+ - aa0e5ce: Added `extractProperties()` function for extracting specified properties and their values from an obejct.
12
+ - aa0e5ce: Added `parseData()` function for parsing design token data
13
+ - aa0e5ce: Added `isPlainObject()` function for checking if a value is a plain object.
package/README.md ADDED
@@ -0,0 +1,78 @@
1
+ # Design Token Parser Utilities
2
+
3
+ Low-level logic and utilities to help build parsers for DTCG and DTCG-like files. Will be used by [`@udt/dtcg-parser`](../dtcg-parser/) to parse DTCG to a Token Object Model (TOM), but also suitable for building libraries or tools that parse DTCG(-like) files to other representations, or need to traverse tokens and/or groups.
4
+
5
+ ## Usage
6
+
7
+ ```js
8
+ import { parseData } from "@udt/parser-utils";
9
+
10
+ // Given a nested object structure representing groups
11
+ // and design tokens (e.g. the result of reading a DTCG file
12
+ // and running it through JSON.parse())...
13
+ const fileData = { /* ... */ };
14
+
15
+ // ...parseData() will traverse through it and pass the
16
+ // relevant properties of each group and design token
17
+ // object it encounters to the functions you provide in
18
+ // the config:
19
+ const parsedData = parseData(fileData, {
20
+ /* Parser config */
21
+
22
+ // A function that checks whether an object is
23
+ // a design token or not (if not, it is assumed
24
+ // to be a group).
25
+ //
26
+ // E.g. for DTCG data, this could check for the
27
+ // presence of a $value property.
28
+ isDesignTokenData: (data) => {
29
+ /* ... */
30
+ return /* true for tokens, false otherwise */;
31
+ },
32
+
33
+ // Array of strings and/or RegExp which match
34
+ // properties of group objects that are NOT
35
+ // names of child design tokens or groups.
36
+ //
37
+ // E.g. for DTCG data, this could be a RegEx
38
+ // like /^$/ which would match all $-prefixed
39
+ // format properties
40
+ groupPropsToExtract: [ /* ... */ ];
41
+
42
+ // Function which is called for each group data object
43
+ // that is encountered.
44
+ //
45
+ // Is given the extracted properties of that group and its
46
+ // path, and should parse that data into whatever structure
47
+ // is desired.
48
+ parseGroupData: (data, path, contextFromParent) => {
49
+ /* ... */
50
+ return {
51
+ group: parsedGroup,
52
+
53
+ // optional:
54
+ addChild: (childName, childGroupOrToken) => { /*... */ },
55
+
56
+ // optional:
57
+ contextForChildren: /* anything you like */,
58
+ }
59
+ },
60
+
61
+ // Function which is called for each design token
62
+ // data object that is encountered.
63
+ //
64
+ // Is given the design token data and its path, and
65
+ // should parse that data into whatever structure is
66
+ // desired.
67
+ parseDesignTokenData: (data, path, contextFromParent) => {
68
+ /* ... */
69
+ return parsedDesignToken;
70
+ },
71
+ });
72
+ ```
73
+
74
+ Note, this package contains TypeScript typings, which are annotated with doc blocks. Please refer to those for more
75
+ detail about the parameters and return values of the config
76
+ functions. Many popular IDEs (e.g. VSCode) will surface that
77
+ info via auto-completions and tooltips as you code, even if
78
+ you're writing plain JavaScript.
@@ -0,0 +1,224 @@
1
+ body, html {
2
+ margin:0; padding: 0;
3
+ height: 100%;
4
+ }
5
+ body {
6
+ font-family: Helvetica Neue, Helvetica, Arial;
7
+ font-size: 14px;
8
+ color:#333;
9
+ }
10
+ .small { font-size: 12px; }
11
+ *, *:after, *:before {
12
+ -webkit-box-sizing:border-box;
13
+ -moz-box-sizing:border-box;
14
+ box-sizing:border-box;
15
+ }
16
+ h1 { font-size: 20px; margin: 0;}
17
+ h2 { font-size: 14px; }
18
+ pre {
19
+ font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
20
+ margin: 0;
21
+ padding: 0;
22
+ -moz-tab-size: 2;
23
+ -o-tab-size: 2;
24
+ tab-size: 2;
25
+ }
26
+ a { color:#0074D9; text-decoration:none; }
27
+ a:hover { text-decoration:underline; }
28
+ .strong { font-weight: bold; }
29
+ .space-top1 { padding: 10px 0 0 0; }
30
+ .pad2y { padding: 20px 0; }
31
+ .pad1y { padding: 10px 0; }
32
+ .pad2x { padding: 0 20px; }
33
+ .pad2 { padding: 20px; }
34
+ .pad1 { padding: 10px; }
35
+ .space-left2 { padding-left:55px; }
36
+ .space-right2 { padding-right:20px; }
37
+ .center { text-align:center; }
38
+ .clearfix { display:block; }
39
+ .clearfix:after {
40
+ content:'';
41
+ display:block;
42
+ height:0;
43
+ clear:both;
44
+ visibility:hidden;
45
+ }
46
+ .fl { float: left; }
47
+ @media only screen and (max-width:640px) {
48
+ .col3 { width:100%; max-width:100%; }
49
+ .hide-mobile { display:none!important; }
50
+ }
51
+
52
+ .quiet {
53
+ color: #7f7f7f;
54
+ color: rgba(0,0,0,0.5);
55
+ }
56
+ .quiet a { opacity: 0.7; }
57
+
58
+ .fraction {
59
+ font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
60
+ font-size: 10px;
61
+ color: #555;
62
+ background: #E8E8E8;
63
+ padding: 4px 5px;
64
+ border-radius: 3px;
65
+ vertical-align: middle;
66
+ }
67
+
68
+ div.path a:link, div.path a:visited { color: #333; }
69
+ table.coverage {
70
+ border-collapse: collapse;
71
+ margin: 10px 0 0 0;
72
+ padding: 0;
73
+ }
74
+
75
+ table.coverage td {
76
+ margin: 0;
77
+ padding: 0;
78
+ vertical-align: top;
79
+ }
80
+ table.coverage td.line-count {
81
+ text-align: right;
82
+ padding: 0 5px 0 20px;
83
+ }
84
+ table.coverage td.line-coverage {
85
+ text-align: right;
86
+ padding-right: 10px;
87
+ min-width:20px;
88
+ }
89
+
90
+ table.coverage td span.cline-any {
91
+ display: inline-block;
92
+ padding: 0 5px;
93
+ width: 100%;
94
+ }
95
+ .missing-if-branch {
96
+ display: inline-block;
97
+ margin-right: 5px;
98
+ border-radius: 3px;
99
+ position: relative;
100
+ padding: 0 4px;
101
+ background: #333;
102
+ color: yellow;
103
+ }
104
+
105
+ .skip-if-branch {
106
+ display: none;
107
+ margin-right: 10px;
108
+ position: relative;
109
+ padding: 0 4px;
110
+ background: #ccc;
111
+ color: white;
112
+ }
113
+ .missing-if-branch .typ, .skip-if-branch .typ {
114
+ color: inherit !important;
115
+ }
116
+ .coverage-summary {
117
+ border-collapse: collapse;
118
+ width: 100%;
119
+ }
120
+ .coverage-summary tr { border-bottom: 1px solid #bbb; }
121
+ .keyline-all { border: 1px solid #ddd; }
122
+ .coverage-summary td, .coverage-summary th { padding: 10px; }
123
+ .coverage-summary tbody { border: 1px solid #bbb; }
124
+ .coverage-summary td { border-right: 1px solid #bbb; }
125
+ .coverage-summary td:last-child { border-right: none; }
126
+ .coverage-summary th {
127
+ text-align: left;
128
+ font-weight: normal;
129
+ white-space: nowrap;
130
+ }
131
+ .coverage-summary th.file { border-right: none !important; }
132
+ .coverage-summary th.pct { }
133
+ .coverage-summary th.pic,
134
+ .coverage-summary th.abs,
135
+ .coverage-summary td.pct,
136
+ .coverage-summary td.abs { text-align: right; }
137
+ .coverage-summary td.file { white-space: nowrap; }
138
+ .coverage-summary td.pic { min-width: 120px !important; }
139
+ .coverage-summary tfoot td { }
140
+
141
+ .coverage-summary .sorter {
142
+ height: 10px;
143
+ width: 7px;
144
+ display: inline-block;
145
+ margin-left: 0.5em;
146
+ background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
147
+ }
148
+ .coverage-summary .sorted .sorter {
149
+ background-position: 0 -20px;
150
+ }
151
+ .coverage-summary .sorted-desc .sorter {
152
+ background-position: 0 -10px;
153
+ }
154
+ .status-line { height: 10px; }
155
+ /* yellow */
156
+ .cbranch-no { background: yellow !important; color: #111; }
157
+ /* dark red */
158
+ .red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
159
+ .low .chart { border:1px solid #C21F39 }
160
+ .highlighted,
161
+ .highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
162
+ background: #C21F39 !important;
163
+ }
164
+ /* medium red */
165
+ .cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
166
+ /* light red */
167
+ .low, .cline-no { background:#FCE1E5 }
168
+ /* light green */
169
+ .high, .cline-yes { background:rgb(230,245,208) }
170
+ /* medium green */
171
+ .cstat-yes { background:rgb(161,215,106) }
172
+ /* dark green */
173
+ .status-line.high, .high .cover-fill { background:rgb(77,146,33) }
174
+ .high .chart { border:1px solid rgb(77,146,33) }
175
+ /* dark yellow (gold) */
176
+ .status-line.medium, .medium .cover-fill { background: #f9cd0b; }
177
+ .medium .chart { border:1px solid #f9cd0b; }
178
+ /* light yellow */
179
+ .medium { background: #fff4c2; }
180
+
181
+ .cstat-skip { background: #ddd; color: #111; }
182
+ .fstat-skip { background: #ddd; color: #111 !important; }
183
+ .cbranch-skip { background: #ddd !important; color: #111; }
184
+
185
+ span.cline-neutral { background: #eaeaea; }
186
+
187
+ .coverage-summary td.empty {
188
+ opacity: .5;
189
+ padding-top: 4px;
190
+ padding-bottom: 4px;
191
+ line-height: 1;
192
+ color: #888;
193
+ }
194
+
195
+ .cover-fill, .cover-empty {
196
+ display:inline-block;
197
+ height: 12px;
198
+ }
199
+ .chart {
200
+ line-height: 0;
201
+ }
202
+ .cover-empty {
203
+ background: white;
204
+ }
205
+ .cover-full {
206
+ border-right: none !important;
207
+ }
208
+ pre.prettyprint {
209
+ border: none !important;
210
+ padding: 0 !important;
211
+ margin: 0 !important;
212
+ }
213
+ .com { color: #999 !important; }
214
+ .ignore-none { color: #999; font-weight: normal; }
215
+
216
+ .wrapper {
217
+ min-height: 100%;
218
+ height: auto !important;
219
+ height: 100%;
220
+ margin: 0 auto -48px;
221
+ }
222
+ .footer, .push {
223
+ height: 48px;
224
+ }
@@ -0,0 +1,87 @@
1
+ /* eslint-disable */
2
+ var jumpToCode = (function init() {
3
+ // Classes of code we would like to highlight in the file view
4
+ var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
5
+
6
+ // Elements to highlight in the file listing view
7
+ var fileListingElements = ['td.pct.low'];
8
+
9
+ // We don't want to select elements that are direct descendants of another match
10
+ var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
11
+
12
+ // Selecter that finds elements on the page to which we can jump
13
+ var selector =
14
+ fileListingElements.join(', ') +
15
+ ', ' +
16
+ notSelector +
17
+ missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
18
+
19
+ // The NodeList of matching elements
20
+ var missingCoverageElements = document.querySelectorAll(selector);
21
+
22
+ var currentIndex;
23
+
24
+ function toggleClass(index) {
25
+ missingCoverageElements
26
+ .item(currentIndex)
27
+ .classList.remove('highlighted');
28
+ missingCoverageElements.item(index).classList.add('highlighted');
29
+ }
30
+
31
+ function makeCurrent(index) {
32
+ toggleClass(index);
33
+ currentIndex = index;
34
+ missingCoverageElements.item(index).scrollIntoView({
35
+ behavior: 'smooth',
36
+ block: 'center',
37
+ inline: 'center'
38
+ });
39
+ }
40
+
41
+ function goToPrevious() {
42
+ var nextIndex = 0;
43
+ if (typeof currentIndex !== 'number' || currentIndex === 0) {
44
+ nextIndex = missingCoverageElements.length - 1;
45
+ } else if (missingCoverageElements.length > 1) {
46
+ nextIndex = currentIndex - 1;
47
+ }
48
+
49
+ makeCurrent(nextIndex);
50
+ }
51
+
52
+ function goToNext() {
53
+ var nextIndex = 0;
54
+
55
+ if (
56
+ typeof currentIndex === 'number' &&
57
+ currentIndex < missingCoverageElements.length - 1
58
+ ) {
59
+ nextIndex = currentIndex + 1;
60
+ }
61
+
62
+ makeCurrent(nextIndex);
63
+ }
64
+
65
+ return function jump(event) {
66
+ if (
67
+ document.getElementById('fileSearch') === document.activeElement &&
68
+ document.activeElement != null
69
+ ) {
70
+ // if we're currently focused on the search input, we don't want to navigate
71
+ return;
72
+ }
73
+
74
+ switch (event.which) {
75
+ case 78: // n
76
+ case 74: // j
77
+ goToNext();
78
+ break;
79
+ case 66: // b
80
+ case 75: // k
81
+ case 80: // p
82
+ goToPrevious();
83
+ break;
84
+ }
85
+ };
86
+ })();
87
+ window.addEventListener('keydown', jumpToCode);
@@ -0,0 +1,123 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <coverage generated="1732239781599" clover="3.2.0">
3
+ <project timestamp="1732239781599" name="All files">
4
+ <metrics statements="105" coveredstatements="102" conditionals="28" coveredconditionals="27" methods="7" coveredmethods="6" elements="140" coveredelements="135" complexity="0" loc="105" ncloc="105" packages="1" files="4" classes="4"/>
5
+ <file name="extractProperties.ts" path="/home/runner/work/udt/udt/packages/parser-utils/src/extractProperties.ts">
6
+ <metrics statements="31" coveredstatements="31" conditionals="9" coveredconditionals="9" methods="1" coveredmethods="1"/>
7
+ <line num="20" count="1" type="cond" truecount="1" falsecount="0"/>
8
+ <line num="21" count="38" type="stmt"/>
9
+ <line num="22" count="38" type="stmt"/>
10
+ <line num="35" count="38" type="stmt"/>
11
+ <line num="36" count="38" type="stmt"/>
12
+ <line num="37" count="38" type="cond" truecount="1" falsecount="0"/>
13
+ <line num="38" count="38" type="stmt"/>
14
+ <line num="39" count="38" type="stmt"/>
15
+ <line num="40" count="38" type="cond" truecount="1" falsecount="0"/>
16
+ <line num="41" count="38" type="stmt"/>
17
+ <line num="43" count="38" type="stmt"/>
18
+ <line num="44" count="38" type="stmt"/>
19
+ <line num="45" count="38" type="cond" truecount="1" falsecount="0"/>
20
+ <line num="46" count="67" type="stmt"/>
21
+ <line num="47" count="67" type="stmt"/>
22
+ <line num="48" count="67" type="cond" truecount="1" falsecount="0"/>
23
+ <line num="49" count="67" type="cond" truecount="1" falsecount="0"/>
24
+ <line num="50" count="59" type="cond" truecount="1" falsecount="0"/>
25
+ <line num="51" count="4" type="stmt"/>
26
+ <line num="52" count="59" type="stmt"/>
27
+ <line num="53" count="67" type="cond" truecount="1" falsecount="0"/>
28
+ <line num="54" count="10" type="stmt"/>
29
+ <line num="55" count="67" type="cond" truecount="1" falsecount="0"/>
30
+ <line num="56" count="57" type="stmt"/>
31
+ <line num="57" count="57" type="stmt"/>
32
+ <line num="58" count="38" type="stmt"/>
33
+ <line num="60" count="38" type="stmt"/>
34
+ <line num="61" count="38" type="stmt"/>
35
+ <line num="62" count="38" type="stmt"/>
36
+ <line num="63" count="38" type="stmt"/>
37
+ <line num="64" count="38" type="stmt"/>
38
+ </file>
39
+ <file name="index.ts" path="/home/runner/work/udt/udt/packages/parser-utils/src/index.ts">
40
+ <metrics statements="3" coveredstatements="0" conditionals="1" coveredconditionals="0" methods="1" coveredmethods="0"/>
41
+ <line num="1" count="0" type="cond" truecount="0" falsecount="1"/>
42
+ <line num="2" count="0" type="stmt"/>
43
+ <line num="3" count="0" type="stmt"/>
44
+ </file>
45
+ <file name="isJsonObject.ts" path="/home/runner/work/udt/udt/packages/parser-utils/src/isJsonObject.ts">
46
+ <metrics statements="3" coveredstatements="3" conditionals="3" coveredconditionals="3" methods="1" coveredmethods="1"/>
47
+ <line num="17" count="1" type="cond" truecount="1" falsecount="0"/>
48
+ <line num="18" count="79" type="cond" truecount="2" falsecount="0"/>
49
+ <line num="19" count="79" type="stmt"/>
50
+ </file>
51
+ <file name="parseData.ts" path="/home/runner/work/udt/udt/packages/parser-utils/src/parseData.ts">
52
+ <metrics statements="68" coveredstatements="68" conditionals="15" coveredconditionals="15" methods="4" coveredmethods="4"/>
53
+ <line num="1" count="1" type="stmt"/>
54
+ <line num="152" count="1" type="cond" truecount="1" falsecount="0"/>
55
+ <line num="156" count="3" type="stmt"/>
56
+ <line num="161" count="3" type="stmt"/>
57
+ <line num="163" count="3" type="cond" truecount="1" falsecount="0"/>
58
+ <line num="164" count="3" type="stmt"/>
59
+ <line num="165" count="3" type="stmt"/>
60
+ <line num="166" count="3" type="stmt"/>
61
+ <line num="167" count="3" type="stmt"/>
62
+ <line num="168" count="3" type="stmt"/>
63
+ <line num="169" count="3" type="stmt"/>
64
+ <line num="170" count="3" type="stmt"/>
65
+ <line num="171" count="3" type="stmt"/>
66
+ <line num="172" count="3" type="stmt"/>
67
+ <line num="173" count="3" type="stmt"/>
68
+ <line num="190" count="72" type="cond" truecount="1" falsecount="0"/>
69
+ <line num="191" count="72" type="stmt"/>
70
+ <line num="192" count="72" type="stmt"/>
71
+ <line num="193" count="72" type="stmt"/>
72
+ <line num="194" count="72" type="stmt"/>
73
+ <line num="195" count="72" type="stmt"/>
74
+ <line num="196" count="72" type="stmt"/>
75
+ <line num="197" count="72" type="cond" truecount="1" falsecount="0"/>
76
+ <line num="198" count="3" type="stmt"/>
77
+ <line num="199" count="3" type="cond" truecount="1" falsecount="0"/>
78
+ <line num="201" count="69" type="stmt"/>
79
+ <line num="202" count="69" type="stmt"/>
80
+ <line num="203" count="69" type="stmt"/>
81
+ <line num="204" count="69" type="stmt"/>
82
+ <line num="205" count="69" type="stmt"/>
83
+ <line num="206" count="69" type="stmt"/>
84
+ <line num="208" count="69" type="stmt"/>
85
+ <line num="209" count="72" type="cond" truecount="1" falsecount="0"/>
86
+ <line num="211" count="35" type="stmt"/>
87
+ <line num="212" count="35" type="cond" truecount="2" falsecount="0"/>
88
+ <line num="213" count="8" type="stmt"/>
89
+ <line num="214" count="8" type="stmt"/>
90
+ <line num="215" count="72" type="cond" truecount="1" falsecount="0"/>
91
+ <line num="217" count="34" type="stmt"/>
92
+ <line num="218" count="34" type="stmt"/>
93
+ <line num="219" count="34" type="stmt"/>
94
+ <line num="220" count="34" type="stmt"/>
95
+ <line num="221" count="34" type="stmt"/>
96
+ <line num="222" count="34" type="stmt"/>
97
+ <line num="223" count="34" type="stmt"/>
98
+ <line num="225" count="34" type="stmt"/>
99
+ <line num="227" count="34" type="cond" truecount="2" falsecount="0"/>
100
+ <line num="228" count="2" type="stmt"/>
101
+ <line num="229" count="2" type="stmt"/>
102
+ <line num="231" count="34" type="cond" truecount="1" falsecount="0"/>
103
+ <line num="232" count="50" type="stmt"/>
104
+ <line num="233" count="50" type="stmt"/>
105
+ <line num="234" count="50" type="stmt"/>
106
+ <line num="235" count="50" type="stmt"/>
107
+ <line num="236" count="50" type="stmt"/>
108
+ <line num="237" count="50" type="stmt"/>
109
+ <line num="238" count="50" type="stmt"/>
110
+ <line num="239" count="50" type="cond" truecount="1" falsecount="0"/>
111
+ <line num="240" count="32" type="cond" truecount="1" falsecount="0"/>
112
+ <line num="242" count="67" type="stmt"/>
113
+ <line num="243" count="67" type="stmt"/>
114
+ <line num="265" count="1" type="cond" truecount="1" falsecount="0"/>
115
+ <line num="266" count="22" type="stmt"/>
116
+ <line num="267" count="22" type="stmt"/>
117
+ <line num="268" count="22" type="stmt"/>
118
+ <line num="269" count="22" type="stmt"/>
119
+ <line num="270" count="22" type="stmt"/>
120
+ <line num="271" count="22" type="stmt"/>
121
+ </file>
122
+ </project>
123
+ </coverage>
@@ -0,0 +1,5 @@
1
+ {"/home/runner/work/udt/udt/packages/parser-utils/src/extractProperties.ts": {"path":"/home/runner/work/udt/udt/packages/parser-utils/src/extractProperties.ts","all":false,"statementMap":{"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":34}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":37}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":51}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":38}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":4}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":53}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":36}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":4}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":36}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":38}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":56}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":8}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":30}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":57}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":10}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":55}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":37}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":7}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":7}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":37}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":12}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":32}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":5}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":5}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":10}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":14}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":19}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":4}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":1}}},"s":{"19":1,"20":38,"21":38,"34":38,"35":38,"36":38,"37":38,"38":38,"39":38,"40":38,"42":38,"43":38,"44":38,"45":67,"46":67,"47":67,"48":67,"49":59,"50":4,"51":59,"52":67,"53":10,"54":67,"55":57,"56":57,"57":38,"59":38,"60":38,"61":38,"62":38,"63":38},"branchMap":{"0":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":7},"end":{"line":64,"column":1}},"locations":[{"start":{"line":20,"column":7},"end":{"line":64,"column":1}}]},"1":{"type":"branch","line":37,"loc":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":38}}]},"2":{"type":"branch","line":40,"loc":{"start":{"line":40,"column":4},"end":{"line":40,"column":36}},"locations":[{"start":{"line":40,"column":4},"end":{"line":40,"column":36}}]},"3":{"type":"branch","line":45,"loc":{"start":{"line":45,"column":45},"end":{"line":58,"column":3}},"locations":[{"start":{"line":45,"column":45},"end":{"line":58,"column":3}}]},"4":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":6},"end":{"line":52,"column":7}},"locations":[{"start":{"line":49,"column":6},"end":{"line":52,"column":7}}]},"5":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":6},"end":{"line":55,"column":11}},"locations":[{"start":{"line":53,"column":6},"end":{"line":55,"column":11}}]},"6":{"type":"branch","line":55,"loc":{"start":{"line":55,"column":4},"end":{"line":57,"column":5}},"locations":[{"start":{"line":55,"column":4},"end":{"line":57,"column":5}}]},"7":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":8},"end":{"line":48,"column":57}},"locations":[{"start":{"line":48,"column":8},"end":{"line":48,"column":57}}]},"8":{"type":"branch","line":50,"loc":{"start":{"line":50,"column":32},"end":{"line":51,"column":37}},"locations":[{"start":{"line":50,"column":32},"end":{"line":51,"column":37}}]}},"b":{"0":[38],"1":[22],"2":[22],"3":[67],"4":[59],"5":[10],"6":[57],"7":[51],"8":[4]},"fnMap":{"0":{"name":"extractProperties","decl":{"start":{"line":20,"column":7},"end":{"line":64,"column":1}},"loc":{"start":{"line":20,"column":7},"end":{"line":64,"column":1}},"line":20}},"f":{"0":38}}
2
+ ,"/home/runner/work/udt/udt/packages/parser-utils/src/index.ts": {"path":"/home/runner/work/udt/udt/packages/parser-utils/src/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":34}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":39}}},"s":{"0":0,"1":0,"2":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":106},"end":{"line":3,"column":39}},"locations":[{"start":{"line":1,"column":106},"end":{"line":3,"column":39}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":106},"end":{"line":3,"column":39}},"loc":{"start":{"line":1,"column":106},"end":{"line":3,"column":39}},"line":1}},"f":{"0":0}}
3
+ ,"/home/runner/work/udt/udt/packages/parser-utils/src/isJsonObject.ts": {"path":"/home/runner/work/udt/udt/packages/parser-utils/src/isJsonObject.ts","all":false,"statementMap":{"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":69}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":78}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}}},"s":{"16":1,"17":79,"18":79},"branchMap":{"0":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":7},"end":{"line":19,"column":1}},"locations":[{"start":{"line":17,"column":7},"end":{"line":19,"column":1}}]},"1":{"type":"branch","line":18,"loc":{"start":{"line":18,"column":26},"end":{"line":18,"column":56}},"locations":[{"start":{"line":18,"column":26},"end":{"line":18,"column":56}}]},"2":{"type":"branch","line":18,"loc":{"start":{"line":18,"column":48},"end":{"line":18,"column":78}},"locations":[{"start":{"line":18,"column":48},"end":{"line":18,"column":78}}]}},"b":{"0":[79],"1":[72],"2":[71]},"fnMap":{"0":{"name":"isPlainObject","decl":{"start":{"line":17,"column":7},"end":{"line":19,"column":1}},"loc":{"start":{"line":17,"column":7},"end":{"line":19,"column":1}},"line":17}},"f":{"0":79}}
4
+ ,"/home/runner/work/udt/udt/packages/parser-utils/src/parseData.ts": {"path":"/home/runner/work/udt/udt/packages/parser-utils/src/parseData.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":68}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":45}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":24}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":23}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":46}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":10}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":44}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":11}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":42}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":6}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":35}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":21}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":21}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":3}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":1}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":58}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":16}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":58}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":24}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":22}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":58}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":36}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":29}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":43}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":3}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":9}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":22}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":24}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":19}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":25}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":13}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":52}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":32}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":71}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":41}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":55}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":5}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":10}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":64}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":51}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":67}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":16}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":11}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":23}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":6}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":25}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":41}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":55}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":5}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":41}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":20}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":24}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":15}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":27}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":29}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":16}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":8}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":5}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":3}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":22}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":1}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":61}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":16}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":58}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":23}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":36}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":56}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":1}}},"s":{"0":1,"151":1,"155":3,"160":3,"162":3,"163":3,"164":3,"165":3,"166":3,"167":3,"168":3,"169":3,"170":3,"171":3,"172":3,"189":72,"190":72,"191":72,"192":72,"193":72,"194":72,"195":72,"196":72,"197":3,"198":3,"200":69,"201":69,"202":69,"203":69,"204":69,"205":69,"207":69,"208":72,"210":35,"211":35,"212":8,"213":8,"214":72,"216":34,"217":34,"218":34,"219":34,"220":34,"221":34,"222":34,"224":34,"226":34,"227":2,"228":2,"230":34,"231":50,"232":50,"233":50,"234":50,"235":50,"236":50,"237":50,"238":50,"239":32,"241":67,"242":67,"264":1,"265":22,"266":22,"267":22,"268":22,"269":22,"270":22},"branchMap":{"0":{"type":"branch","line":152,"loc":{"start":{"line":152,"column":7},"end":{"line":173,"column":1}},"locations":[{"start":{"line":152,"column":7},"end":{"line":173,"column":1}}]},"1":{"type":"branch","line":163,"loc":{"start":{"line":163,"column":2},"end":{"line":172,"column":3}},"locations":[{"start":{"line":163,"column":2},"end":{"line":172,"column":3}}]},"2":{"type":"branch","line":190,"loc":{"start":{"line":190,"column":0},"end":{"line":243,"column":1}},"locations":[{"start":{"line":190,"column":0},"end":{"line":243,"column":1}}]},"3":{"type":"branch","line":197,"loc":{"start":{"line":197,"column":28},"end":{"line":199,"column":3}},"locations":[{"start":{"line":197,"column":28},"end":{"line":199,"column":3}}]},"4":{"type":"branch","line":199,"loc":{"start":{"line":199,"column":2},"end":{"line":209,"column":31}},"locations":[{"start":{"line":199,"column":2},"end":{"line":209,"column":31}}]},"5":{"type":"branch","line":209,"loc":{"start":{"line":209,"column":31},"end":{"line":215,"column":9}},"locations":[{"start":{"line":209,"column":31},"end":{"line":215,"column":9}}]},"6":{"type":"branch","line":212,"loc":{"start":{"line":212,"column":8},"end":{"line":212,"column":40}},"locations":[{"start":{"line":212,"column":8},"end":{"line":212,"column":40}}]},"7":{"type":"branch","line":212,"loc":{"start":{"line":212,"column":40},"end":{"line":214,"column":5}},"locations":[{"start":{"line":212,"column":40},"end":{"line":214,"column":5}}]},"8":{"type":"branch","line":215,"loc":{"start":{"line":215,"column":2},"end":{"line":240,"column":3}},"locations":[{"start":{"line":215,"column":2},"end":{"line":240,"column":3}}]},"9":{"type":"branch","line":227,"loc":{"start":{"line":227,"column":8},"end":{"line":227,"column":40}},"locations":[{"start":{"line":227,"column":8},"end":{"line":227,"column":40}}]},"10":{"type":"branch","line":227,"loc":{"start":{"line":227,"column":40},"end":{"line":229,"column":5}},"locations":[{"start":{"line":227,"column":40},"end":{"line":229,"column":5}}]},"11":{"type":"branch","line":231,"loc":{"start":{"line":231,"column":40},"end":{"line":239,"column":5}},"locations":[{"start":{"line":231,"column":40},"end":{"line":239,"column":5}}]},"12":{"type":"branch","line":239,"loc":{"start":{"line":239,"column":4},"end":{"line":240,"column":3}},"locations":[{"start":{"line":239,"column":4},"end":{"line":240,"column":3}}]},"13":{"type":"branch","line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":243,"column":1}},"locations":[{"start":{"line":240,"column":2},"end":{"line":243,"column":1}}]},"14":{"type":"branch","line":265,"loc":{"start":{"line":265,"column":7},"end":{"line":271,"column":1}},"locations":[{"start":{"line":265,"column":7},"end":{"line":271,"column":1}}]}},"b":{"0":[3],"1":[3],"2":[72],"3":[3],"4":[69],"5":[35],"6":[8],"7":[8],"8":[34],"9":[2],"10":[2],"11":[50],"12":[32],"13":[67],"14":[22]},"fnMap":{"0":{"name":"<instance_members_initializer>","decl":{"start":{"line":152,"column":7},"end":{"line":173,"column":1}},"loc":{"start":{"line":152,"column":7},"end":{"line":173,"column":1}},"line":152},"1":{"name":"InvalidDataError","decl":{"start":{"line":163,"column":2},"end":{"line":172,"column":3}},"loc":{"start":{"line":163,"column":2},"end":{"line":172,"column":3}},"line":163},"2":{"name":"parseDataImpl","decl":{"start":{"line":190,"column":0},"end":{"line":243,"column":1}},"loc":{"start":{"line":190,"column":0},"end":{"line":243,"column":1}},"line":190},"3":{"name":"parseData","decl":{"start":{"line":265,"column":7},"end":{"line":271,"column":1}},"loc":{"start":{"line":265,"column":7},"end":{"line":271,"column":1}},"line":265}},"f":{"0":3,"1":3,"2":72,"3":22}}
5
+ }