@mezzanine-stack/cms-core 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/README.md +26 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +563 -0
- package/coverage/coverage-final.json +4 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +131 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/src/index.html +116 -0
- package/coverage/src/index.ts.html +160 -0
- package/coverage/src/serializer/index.html +131 -0
- package/coverage/src/serializer/json.ts.html +679 -0
- package/coverage/src/serializer/markdown.ts.html +1597 -0
- package/package.json +29 -0
- package/src/index.test.ts +11 -0
- package/src/index.ts +25 -0
- package/src/serializer/json.test.ts +165 -0
- package/src/serializer/json.ts +198 -0
- package/src/serializer/markdown.test.ts +222 -0
- package/src/serializer/markdown.ts +504 -0
- package/src/types.ts +110 -0
- package/tsconfig.json +5 -0
- package/vitest.config.ts +11 -0
|
@@ -0,0 +1,679 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/serializer/json.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/serializer</a> json.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>151/151</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">90.81% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>89/98</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>5/5</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>151/151</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
265
|
+
<span class="cline-any cline-neutral"> </span>
|
|
266
|
+
<span class="cline-any cline-neutral"> </span>
|
|
267
|
+
<span class="cline-any cline-neutral"> </span>
|
|
268
|
+
<span class="cline-any cline-neutral"> </span>
|
|
269
|
+
<span class="cline-any cline-neutral"> </span>
|
|
270
|
+
<span class="cline-any cline-neutral"> </span>
|
|
271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
272
|
+
<span class="cline-any cline-neutral"> </span>
|
|
273
|
+
<span class="cline-any cline-neutral"> </span>
|
|
274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-neutral"> </span>
|
|
284
|
+
<span class="cline-any cline-yes">1x</span>
|
|
285
|
+
<span class="cline-any cline-yes">2x</span>
|
|
286
|
+
<span class="cline-any cline-yes">2x</span>
|
|
287
|
+
<span class="cline-any cline-yes">26x</span>
|
|
288
|
+
<span class="cline-any cline-yes">26x</span>
|
|
289
|
+
<span class="cline-any cline-yes">14x</span>
|
|
290
|
+
<span class="cline-any cline-yes">14x</span>
|
|
291
|
+
<span class="cline-any cline-yes">26x</span>
|
|
292
|
+
<span class="cline-any cline-yes">2x</span>
|
|
293
|
+
<span class="cline-any cline-yes">2x</span>
|
|
294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
295
|
+
<span class="cline-any cline-yes">18x</span>
|
|
296
|
+
<span class="cline-any cline-yes">18x</span>
|
|
297
|
+
<span class="cline-any cline-yes">18x</span>
|
|
298
|
+
<span class="cline-any cline-yes">18x</span>
|
|
299
|
+
<span class="cline-any cline-yes">18x</span>
|
|
300
|
+
<span class="cline-any cline-yes">18x</span>
|
|
301
|
+
<span class="cline-any cline-yes">18x</span>
|
|
302
|
+
<span class="cline-any cline-yes">18x</span>
|
|
303
|
+
<span class="cline-any cline-yes">9x</span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-yes">18x</span>
|
|
306
|
+
<span class="cline-any cline-yes">2x</span>
|
|
307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
308
|
+
<span class="cline-any cline-yes">18x</span>
|
|
309
|
+
<span class="cline-any cline-yes">2x</span>
|
|
310
|
+
<span class="cline-any cline-yes">2x</span>
|
|
311
|
+
<span class="cline-any cline-yes">1x</span>
|
|
312
|
+
<span class="cline-any cline-yes">1x</span>
|
|
313
|
+
<span class="cline-any cline-yes">2x</span>
|
|
314
|
+
<span class="cline-any cline-yes">2x</span>
|
|
315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
316
|
+
<span class="cline-any cline-yes">18x</span>
|
|
317
|
+
<span class="cline-any cline-yes">2x</span>
|
|
318
|
+
<span class="cline-any cline-yes">2x</span>
|
|
319
|
+
<span class="cline-any cline-yes">2x</span>
|
|
320
|
+
<span class="cline-any cline-yes">1x</span>
|
|
321
|
+
<span class="cline-any cline-yes">2x</span>
|
|
322
|
+
<span class="cline-any cline-yes">1x</span>
|
|
323
|
+
<span class="cline-any cline-yes">1x</span>
|
|
324
|
+
<span class="cline-any cline-yes">4x</span>
|
|
325
|
+
<span class="cline-any cline-yes">4x</span>
|
|
326
|
+
<span class="cline-any cline-yes">4x</span>
|
|
327
|
+
<span class="cline-any cline-yes">1x</span>
|
|
328
|
+
<span class="cline-any cline-yes">1x</span>
|
|
329
|
+
<span class="cline-any cline-yes">1x</span>
|
|
330
|
+
<span class="cline-any cline-yes">1x</span>
|
|
331
|
+
<span class="cline-any cline-yes">1x</span>
|
|
332
|
+
<span class="cline-any cline-yes">1x</span>
|
|
333
|
+
<span class="cline-any cline-yes">1x</span>
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
335
|
+
<span class="cline-any cline-yes">18x</span>
|
|
336
|
+
<span class="cline-any cline-yes">2x</span>
|
|
337
|
+
<span class="cline-any cline-yes">2x</span>
|
|
338
|
+
<span class="cline-any cline-yes">2x</span>
|
|
339
|
+
<span class="cline-any cline-yes">1x</span>
|
|
340
|
+
<span class="cline-any cline-yes">1x</span>
|
|
341
|
+
<span class="cline-any cline-yes">2x</span>
|
|
342
|
+
<span class="cline-any cline-yes">2x</span>
|
|
343
|
+
<span class="cline-any cline-yes">6x</span>
|
|
344
|
+
<span class="cline-any cline-yes">6x</span>
|
|
345
|
+
<span class="cline-any cline-yes">6x</span>
|
|
346
|
+
<span class="cline-any cline-yes">2x</span>
|
|
347
|
+
<span class="cline-any cline-yes">2x</span>
|
|
348
|
+
<span class="cline-any cline-neutral"> </span>
|
|
349
|
+
<span class="cline-any cline-yes">18x</span>
|
|
350
|
+
<span class="cline-any cline-yes">1x</span>
|
|
351
|
+
<span class="cline-any cline-yes">18x</span>
|
|
352
|
+
<span class="cline-any cline-yes">18x</span>
|
|
353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
355
|
+
<span class="cline-any cline-neutral"> </span>
|
|
356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
359
|
+
<span class="cline-any cline-neutral"> </span>
|
|
360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
365
|
+
<span class="cline-any cline-neutral"> </span>
|
|
366
|
+
<span class="cline-any cline-neutral"> </span>
|
|
367
|
+
<span class="cline-any cline-yes">1x</span>
|
|
368
|
+
<span class="cline-any cline-yes">4x</span>
|
|
369
|
+
<span class="cline-any cline-yes">4x</span>
|
|
370
|
+
<span class="cline-any cline-yes">4x</span>
|
|
371
|
+
<span class="cline-any cline-yes">39x</span>
|
|
372
|
+
<span class="cline-any cline-yes">39x</span>
|
|
373
|
+
<span class="cline-any cline-yes">39x</span>
|
|
374
|
+
<span class="cline-any cline-yes">26x</span>
|
|
375
|
+
<span class="cline-any cline-yes">13x</span>
|
|
376
|
+
<span class="cline-any cline-yes">39x</span>
|
|
377
|
+
<span class="cline-any cline-yes">3x</span>
|
|
378
|
+
<span class="cline-any cline-yes">3x</span>
|
|
379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
380
|
+
<span class="cline-any cline-yes">19x</span>
|
|
381
|
+
<span class="cline-any cline-yes">19x</span>
|
|
382
|
+
<span class="cline-any cline-yes">19x</span>
|
|
383
|
+
<span class="cline-any cline-yes">19x</span>
|
|
384
|
+
<span class="cline-any cline-yes">19x</span>
|
|
385
|
+
<span class="cline-any cline-yes">19x</span>
|
|
386
|
+
<span class="cline-any cline-yes">19x</span>
|
|
387
|
+
<span class="cline-any cline-yes">19x</span>
|
|
388
|
+
<span class="cline-any cline-yes">9x</span>
|
|
389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
390
|
+
<span class="cline-any cline-yes">19x</span>
|
|
391
|
+
<span class="cline-any cline-yes">3x</span>
|
|
392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
393
|
+
<span class="cline-any cline-yes">19x</span>
|
|
394
|
+
<span class="cline-any cline-yes">2x</span>
|
|
395
|
+
<span class="cline-any cline-yes">2x</span>
|
|
396
|
+
<span class="cline-any cline-yes">1x</span>
|
|
397
|
+
<span class="cline-any cline-yes">1x</span>
|
|
398
|
+
<span class="cline-any cline-yes">2x</span>
|
|
399
|
+
<span class="cline-any cline-yes">2x</span>
|
|
400
|
+
<span class="cline-any cline-neutral"> </span>
|
|
401
|
+
<span class="cline-any cline-yes">19x</span>
|
|
402
|
+
<span class="cline-any cline-yes">2x</span>
|
|
403
|
+
<span class="cline-any cline-yes">2x</span>
|
|
404
|
+
<span class="cline-any cline-yes">2x</span>
|
|
405
|
+
<span class="cline-any cline-yes">1x</span>
|
|
406
|
+
<span class="cline-any cline-yes">2x</span>
|
|
407
|
+
<span class="cline-any cline-yes">1x</span>
|
|
408
|
+
<span class="cline-any cline-yes">1x</span>
|
|
409
|
+
<span class="cline-any cline-yes">4x</span>
|
|
410
|
+
<span class="cline-any cline-yes">4x</span>
|
|
411
|
+
<span class="cline-any cline-yes">4x</span>
|
|
412
|
+
<span class="cline-any cline-yes">1x</span>
|
|
413
|
+
<span class="cline-any cline-yes">1x</span>
|
|
414
|
+
<span class="cline-any cline-yes">1x</span>
|
|
415
|
+
<span class="cline-any cline-yes">1x</span>
|
|
416
|
+
<span class="cline-any cline-yes">1x</span>
|
|
417
|
+
<span class="cline-any cline-yes">1x</span>
|
|
418
|
+
<span class="cline-any cline-yes">1x</span>
|
|
419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
420
|
+
<span class="cline-any cline-yes">19x</span>
|
|
421
|
+
<span class="cline-any cline-yes">2x</span>
|
|
422
|
+
<span class="cline-any cline-yes">2x</span>
|
|
423
|
+
<span class="cline-any cline-yes">2x</span>
|
|
424
|
+
<span class="cline-any cline-yes">1x</span>
|
|
425
|
+
<span class="cline-any cline-yes">1x</span>
|
|
426
|
+
<span class="cline-any cline-yes">2x</span>
|
|
427
|
+
<span class="cline-any cline-yes">2x</span>
|
|
428
|
+
<span class="cline-any cline-yes">6x</span>
|
|
429
|
+
<span class="cline-any cline-yes">6x</span>
|
|
430
|
+
<span class="cline-any cline-yes">6x</span>
|
|
431
|
+
<span class="cline-any cline-yes">2x</span>
|
|
432
|
+
<span class="cline-any cline-yes">2x</span>
|
|
433
|
+
<span class="cline-any cline-neutral"> </span>
|
|
434
|
+
<span class="cline-any cline-yes">19x</span>
|
|
435
|
+
<span class="cline-any cline-yes">1x</span>
|
|
436
|
+
<span class="cline-any cline-yes">19x</span>
|
|
437
|
+
<span class="cline-any cline-yes">19x</span>
|
|
438
|
+
<span class="cline-any cline-neutral"> </span>
|
|
439
|
+
<span class="cline-any cline-yes">36x</span>
|
|
440
|
+
<span class="cline-any cline-yes">36x</span>
|
|
441
|
+
<span class="cline-any cline-yes">36x</span>
|
|
442
|
+
<span class="cline-any cline-yes">36x</span>
|
|
443
|
+
<span class="cline-any cline-yes">36x</span>
|
|
444
|
+
<span class="cline-any cline-yes">36x</span>
|
|
445
|
+
<span class="cline-any cline-yes">36x</span>
|
|
446
|
+
<span class="cline-any cline-yes">36x</span>
|
|
447
|
+
<span class="cline-any cline-yes">18x</span>
|
|
448
|
+
<span class="cline-any cline-yes">36x</span>
|
|
449
|
+
<span class="cline-any cline-yes">5x</span>
|
|
450
|
+
<span class="cline-any cline-yes">36x</span>
|
|
451
|
+
<span class="cline-any cline-yes">6x</span>
|
|
452
|
+
<span class="cline-any cline-yes">2x</span>
|
|
453
|
+
<span class="cline-any cline-yes">4x</span>
|
|
454
|
+
<span class="cline-any cline-yes">36x</span>
|
|
455
|
+
<span class="cline-any cline-yes">4x</span>
|
|
456
|
+
<span class="cline-any cline-yes">36x</span>
|
|
457
|
+
<span class="cline-any cline-yes">1x</span>
|
|
458
|
+
<span class="cline-any cline-yes">36x</span>
|
|
459
|
+
<span class="cline-any cline-yes">2x</span>
|
|
460
|
+
<span class="cline-any cline-yes">36x</span>
|
|
461
|
+
<span class="cline-any cline-yes">36x</span>
|
|
462
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
463
|
+
* JSON file のシリアライザ / デシリアライザ。
|
|
464
|
+
* file collection (profile など固定 JSON ファイル) の読み書きに使う。
|
|
465
|
+
*
|
|
466
|
+
* JSON ファイルは frontmatter を持たないため、
|
|
467
|
+
* ファイル全体が JSON オブジェクトとなる。
|
|
468
|
+
* MezzField 定義を使って型強制を行う。
|
|
469
|
+
*/
|
|
470
|
+
|
|
471
|
+
import type { MezzField, MezzListField, MezzObjectField, MezzSelectField } from "@mezzanine/content-schema";
|
|
472
|
+
import type { FieldValues } from "../types.js";
|
|
473
|
+
|
|
474
|
+
// ---------------------------------------------------------------------------
|
|
475
|
+
// Serialization: FieldValues → JSON string
|
|
476
|
+
// ---------------------------------------------------------------------------
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* フィールド値を JSON 文字列にシリアライズする。
|
|
480
|
+
* rich-text フィールドも JSON に含める (file collection は body を持たない)。
|
|
481
|
+
*/
|
|
482
|
+
export function serializeJson(values: FieldValues, fields: MezzField[]): string {
|
|
483
|
+
const obj: Record<string, unknown> = {};
|
|
484
|
+
for (const field of fields) {
|
|
485
|
+
const value = values[field.name];
|
|
486
|
+
if (value !== undefined) {
|
|
487
|
+
obj[field.name] = normalizeForJson(field, value);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
return JSON.stringify(obj, null, 2) + "\n";
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
function normalizeForJson(field: MezzField, value: unknown): unknown {
|
|
494
|
+
switch (field.type) {
|
|
495
|
+
case "text":
|
|
496
|
+
case "rich-text":
|
|
497
|
+
case "date":
|
|
498
|
+
case "image":
|
|
499
|
+
case "file":
|
|
500
|
+
case "relation":
|
|
501
|
+
return value === null || value === undefined ? "" : String(value);
|
|
502
|
+
|
|
503
|
+
case "boolean":
|
|
504
|
+
return Boolean(value);
|
|
505
|
+
|
|
506
|
+
case "select": {
|
|
507
|
+
const sf = field as MezzSelectField;
|
|
508
|
+
if (sf.multiple) {
|
|
509
|
+
return Array.isArray(value<span class="branch-0 cbranch-no" title="branch not covered" >) ? value.map(String) : [</span>];
|
|
510
|
+
}
|
|
511
|
+
return value === <span class="branch-0 cbranch-no" title="branch not covered" >null || value === undefined ? <span class="branch-0 cbranch-no" title="branch not covered" >"</span>" : String(value);</span>
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
case "list": {
|
|
515
|
+
const lf = field as MezzListField;
|
|
516
|
+
const arr = Array.isArray(value) ? <span class="branch-0 cbranch-no" title="branch not covered" >value : [];</span>
|
|
517
|
+
if (lf.fields && lf.fields.length > 0) {
|
|
518
|
+
return arr.map((item) => {
|
|
519
|
+
if (typeof item === "object" && item !== null && !Array.isArray(item)) {
|
|
520
|
+
const obj: Record<string, unknown> = {};
|
|
521
|
+
for (const sf of lf.fields!) {
|
|
522
|
+
const sv = (item as Record<string, unknown>)[sf.name];
|
|
523
|
+
obj[sf.name] = sv !== undefined ? normalizeForJson(sf, sv) : defaultValue(sf);
|
|
524
|
+
}
|
|
525
|
+
return obj;
|
|
526
|
+
}
|
|
527
|
+
return String(item);
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
return arr.map(String);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
case "object": {
|
|
534
|
+
const of_ = field as MezzObjectField;
|
|
535
|
+
const obj =
|
|
536
|
+
typeof value === "object" && !Array.isArray(value) && value !== null
|
|
537
|
+
? (value as Record<string, unknown>)
|
|
538
|
+
: {};
|
|
539
|
+
const result: Record<string, unknown> = {};
|
|
540
|
+
for (const sf of of_.fields) {
|
|
541
|
+
const sv = obj[sf.name];
|
|
542
|
+
result[sf.name] = sv !== undefined ? normalizeForJson(sf, sv) : defaultValue(sf);
|
|
543
|
+
}
|
|
544
|
+
return result;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
default:
|
|
548
|
+
return value;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// ---------------------------------------------------------------------------
|
|
553
|
+
// Deserialization: JSON string → FieldValues
|
|
554
|
+
// ---------------------------------------------------------------------------
|
|
555
|
+
|
|
556
|
+
export interface JsonParseResult {
|
|
557
|
+
values: FieldValues;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* JSON 文字列をフィールド値にデシリアライズする。
|
|
562
|
+
* MezzField 定義を使って型変換を行う。
|
|
563
|
+
* @throws {SyntaxError} JSON パースエラー時
|
|
564
|
+
*/
|
|
565
|
+
export function deserializeJson(content: string, fields: MezzField[]): JsonParseResult {
|
|
566
|
+
const raw = JSON.parse(content) as Record<string, unknown>;
|
|
567
|
+
const values: FieldValues = {};
|
|
568
|
+
for (const field of fields) {
|
|
569
|
+
const rawVal = raw[field.name];
|
|
570
|
+
values[field.name] =
|
|
571
|
+
rawVal === undefined || rawVal === null
|
|
572
|
+
? defaultValue(field)
|
|
573
|
+
: coerceField(field, rawVal);
|
|
574
|
+
}
|
|
575
|
+
return { values };
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
function coerceField(field: MezzField, value: unknown): unknown {
|
|
579
|
+
switch (field.type) {
|
|
580
|
+
case "text":
|
|
581
|
+
case "rich-text":
|
|
582
|
+
case "date":
|
|
583
|
+
case "image":
|
|
584
|
+
case "file":
|
|
585
|
+
case "relation":
|
|
586
|
+
return value === null || value === undefined ? "" : String(value);
|
|
587
|
+
|
|
588
|
+
case "boolean":
|
|
589
|
+
return Boolean(value);
|
|
590
|
+
|
|
591
|
+
case "select": {
|
|
592
|
+
const sf = field as MezzSelectField;
|
|
593
|
+
if (sf.multiple) {
|
|
594
|
+
return Array.isArray(value<span class="branch-0 cbranch-no" title="branch not covered" >) ? value.map(String) : [</span>];
|
|
595
|
+
}
|
|
596
|
+
return value === null || value === <span class="branch-0 cbranch-no" title="branch not covered" >undefined ? "" : S</span>tring(value);
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
case "list": {
|
|
600
|
+
const lf = field as MezzListField;
|
|
601
|
+
if (!Array.isArray(value)) <span class="branch-0 cbranch-no" title="branch not covered" >return [];</span>
|
|
602
|
+
if (lf.fields && lf.fields.length > 0) {
|
|
603
|
+
return value.map((item) => {
|
|
604
|
+
if (typeof item === "object" && item !== null && !Array.isArray(item)) {
|
|
605
|
+
const obj: Record<string, unknown> = {};
|
|
606
|
+
for (const sf of lf.fields!) {
|
|
607
|
+
const sv = (item as Record<string, unknown>)[sf.name];
|
|
608
|
+
obj[sf.name] = sv !== undefined ? coerceField(sf, sv) : defaultValue(sf);
|
|
609
|
+
}
|
|
610
|
+
return obj;
|
|
611
|
+
}
|
|
612
|
+
return String(item);
|
|
613
|
+
});
|
|
614
|
+
}
|
|
615
|
+
return value.map(String);
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
case "object": {
|
|
619
|
+
const of_ = field as MezzObjectField;
|
|
620
|
+
const obj =
|
|
621
|
+
typeof value === "object" && !Array.isArray(value) && value !== null
|
|
622
|
+
? (value as Record<string, unknown>)
|
|
623
|
+
: {};
|
|
624
|
+
const result: Record<string, unknown> = {};
|
|
625
|
+
for (const sf of of_.fields) {
|
|
626
|
+
const sv = obj[sf.name];
|
|
627
|
+
result[sf.name] = sv !== undefined ? coerceField(sf, sv) : defaultValue(sf);
|
|
628
|
+
}
|
|
629
|
+
return result;
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
default:
|
|
633
|
+
return value;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
function defaultValue(field: MezzField): unknown {
|
|
638
|
+
switch (field.type) {
|
|
639
|
+
case "text":
|
|
640
|
+
case "rich-text":
|
|
641
|
+
case "date":
|
|
642
|
+
case "image":
|
|
643
|
+
case "file":
|
|
644
|
+
case "relation":
|
|
645
|
+
return (field as { default?: string }).default ?? "";
|
|
646
|
+
case "boolean":
|
|
647
|
+
return (field as { default?: boolean }).<span class="branch-0 cbranch-no" title="branch not covered" >default ?? false;</span>
|
|
648
|
+
case "select":
|
|
649
|
+
return (field as MezzSelectField).multiple
|
|
650
|
+
? []
|
|
651
|
+
: ((field as { default?: string }).<span class="branch-0 cbranch-no" title="branch not covered" >default ?? "");</span>
|
|
652
|
+
case "list":
|
|
653
|
+
return [];
|
|
654
|
+
case "object":
|
|
655
|
+
return {};
|
|
656
|
+
default:
|
|
657
|
+
return null;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
</pre></td></tr></table></pre>
|
|
661
|
+
|
|
662
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
663
|
+
</div><!-- /wrapper -->
|
|
664
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
665
|
+
Code coverage generated by
|
|
666
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
667
|
+
at 2026-03-22T04:18:27.591Z
|
|
668
|
+
</div>
|
|
669
|
+
<script src="../../prettify.js"></script>
|
|
670
|
+
<script>
|
|
671
|
+
window.onload = function () {
|
|
672
|
+
prettyPrint();
|
|
673
|
+
};
|
|
674
|
+
</script>
|
|
675
|
+
<script src="../../sorter.js"></script>
|
|
676
|
+
<script src="../../block-navigation.js"></script>
|
|
677
|
+
</body>
|
|
678
|
+
</html>
|
|
679
|
+
|