@qubit-ltd/json 1.2.1 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/json.cjs +188 -20
  2. package/dist/json.cjs.map +1 -1
  3. package/dist/json.min.cjs +1 -1
  4. package/dist/json.min.cjs.map +1 -1
  5. package/dist/json.min.mjs +1 -1
  6. package/dist/json.min.mjs.map +1 -1
  7. package/dist/json.mjs +188 -20
  8. package/dist/json.mjs.map +1 -1
  9. package/doc/api/Json.html +42 -0
  10. package/doc/api/LosslessNumber.html +3 -610
  11. package/doc/api/data/search.json +1 -0
  12. package/doc/api/fonts/Inconsolata-Regular.ttf +0 -0
  13. package/doc/api/fonts/OpenSans-Regular.ttf +0 -0
  14. package/doc/api/fonts/WorkSans-Bold.ttf +0 -0
  15. package/doc/api/global.html +3 -1274
  16. package/doc/api/index.html +63 -264
  17. package/doc/api/scripts/core.js +719 -0
  18. package/doc/api/scripts/core.min.js +23 -0
  19. package/doc/api/scripts/resize.js +90 -0
  20. package/doc/api/scripts/search.js +267 -0
  21. package/doc/api/scripts/search.min.js +6 -0
  22. package/doc/api/scripts/third-party/fuse.js +1749 -0
  23. package/doc/api/scripts/third-party/hljs-line-num-original.js +367 -0
  24. package/doc/api/scripts/third-party/hljs-line-num.js +1 -0
  25. package/doc/api/scripts/third-party/hljs-original.js +5260 -0
  26. package/doc/api/scripts/third-party/hljs.js +1 -0
  27. package/doc/api/scripts/third-party/popper.js +1287 -0
  28. package/doc/api/scripts/third-party/tippy.js +1499 -0
  29. package/doc/api/scripts/third-party/tocbot.js +757 -0
  30. package/doc/api/scripts/third-party/tocbot.min.js +1 -0
  31. package/doc/api/styles/clean-jsdoc-theme-base.css +1257 -0
  32. package/doc/api/styles/clean-jsdoc-theme-dark.css +412 -0
  33. package/doc/api/styles/clean-jsdoc-theme-light.css +482 -0
  34. package/doc/api/styles/clean-jsdoc-theme-scrollbar.css +30 -0
  35. package/doc/api/styles/clean-jsdoc-theme-without-scrollbar.min.css +1 -0
  36. package/doc/api/styles/clean-jsdoc-theme.min.css +1 -0
  37. package/doc/json.min.visualization.html +15 -15
  38. package/doc/json.visualization.html +15 -15
  39. package/package.json +20 -19
  40. package/doc/api/fonts/OpenSans-Bold-webfont.eot +0 -0
  41. package/doc/api/fonts/OpenSans-Bold-webfont.svg +0 -1838
  42. package/doc/api/fonts/OpenSans-Bold-webfont.woff +0 -0
  43. package/doc/api/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  44. package/doc/api/fonts/OpenSans-BoldItalic-webfont.svg +0 -1838
  45. package/doc/api/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  46. package/doc/api/fonts/OpenSans-Italic-webfont.eot +0 -0
  47. package/doc/api/fonts/OpenSans-Italic-webfont.svg +0 -1838
  48. package/doc/api/fonts/OpenSans-Italic-webfont.woff +0 -0
  49. package/doc/api/fonts/OpenSans-Light-webfont.eot +0 -0
  50. package/doc/api/fonts/OpenSans-Light-webfont.svg +0 -1839
  51. package/doc/api/fonts/OpenSans-Light-webfont.woff +0 -0
  52. package/doc/api/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  53. package/doc/api/fonts/OpenSans-LightItalic-webfont.svg +0 -1843
  54. package/doc/api/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  55. package/doc/api/fonts/OpenSans-Regular-webfont.eot +0 -0
  56. package/doc/api/fonts/OpenSans-Regular-webfont.svg +0 -1839
  57. package/doc/api/fonts/OpenSans-Regular-webfont.woff +0 -0
  58. package/doc/api/fonts/OpenSans-Semibold-webfont.eot +0 -0
  59. package/doc/api/fonts/OpenSans-Semibold-webfont.svg +0 -1838
  60. package/doc/api/fonts/OpenSans-Semibold-webfont.ttf +0 -0
  61. package/doc/api/fonts/OpenSans-Semibold-webfont.woff +0 -0
  62. package/doc/api/fonts/OpenSans-SemiboldItalic-webfont.eot +0 -0
  63. package/doc/api/fonts/OpenSans-SemiboldItalic-webfont.svg +0 -1838
  64. package/doc/api/fonts/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  65. package/doc/api/fonts/OpenSans-SemiboldItalic-webfont.woff +0 -0
  66. package/doc/api/scripts/linenumber.js +0 -34
  67. package/doc/api/scripts/prettify/lang-css.js +0 -2
  68. package/doc/api/scripts/prettify/prettify.js +0 -28
  69. package/doc/api/styles/jsdoc-default.css +0 -699
  70. package/doc/api/styles/prettify-jsdoc.css +0 -120
  71. package/doc/api/styles/prettify-tomorrow.css +0 -141
  72. /package/doc/api/scripts/{prettify → third-party}/Apache-License-2.0.txt +0 -0
@@ -0,0 +1,367 @@
1
+ // jshint multistr:true
2
+
3
+ (function (w, d) {
4
+ var TABLE_NAME = "hljs-ln",
5
+ LINE_NAME = "hljs-ln-line",
6
+ CODE_BLOCK_NAME = "hljs-ln-code",
7
+ NUMBERS_BLOCK_NAME = "hljs-ln-numbers",
8
+ NUMBER_LINE_NAME = "hljs-ln-n",
9
+ DATA_ATTR_NAME = "data-line-number",
10
+ BREAK_LINE_REGEXP = /\r\n|\r|\n/g;
11
+
12
+ if (w.hljs) {
13
+ w.hljs.initLineNumbersOnLoad = initLineNumbersOnLoad;
14
+ w.hljs.lineNumbersBlock = lineNumbersBlock;
15
+ w.hljs.lineNumbersValue = lineNumbersValue;
16
+
17
+ addStyles();
18
+ } else {
19
+ w.console.error("highlight.js not detected!");
20
+ }
21
+
22
+ function isHljsLnCodeDescendant(domElt) {
23
+ var curElt = domElt;
24
+ while (curElt) {
25
+ if (curElt.className && curElt.className.indexOf("hljs-ln-code") !== -1) {
26
+ return true;
27
+ }
28
+ curElt = curElt.parentNode;
29
+ }
30
+ return false;
31
+ }
32
+
33
+ function getHljsLnTable(hljsLnDomElt) {
34
+ var curElt = hljsLnDomElt;
35
+ while (curElt.nodeName !== "TABLE") {
36
+ curElt = curElt.parentNode;
37
+ }
38
+ return curElt;
39
+ }
40
+
41
+ // Function to workaround a copy issue with Microsoft Edge.
42
+ // Due to hljs-ln wrapping the lines of code inside a <table> element,
43
+ // itself wrapped inside a <pre> element, window.getSelection().toString()
44
+ // does not contain any line breaks. So we need to get them back using the
45
+ // rendered code in the DOM as reference.
46
+ function edgeGetSelectedCodeLines(selection) {
47
+ // current selected text without line breaks
48
+ var selectionText = selection.toString();
49
+
50
+ // get the <td> element wrapping the first line of selected code
51
+ var tdAnchor = selection.anchorNode;
52
+ while (tdAnchor.nodeName !== "TD") {
53
+ tdAnchor = tdAnchor.parentNode;
54
+ }
55
+
56
+ // get the <td> element wrapping the last line of selected code
57
+ var tdFocus = selection.focusNode;
58
+ while (tdFocus.nodeName !== "TD") {
59
+ tdFocus = tdFocus.parentNode;
60
+ }
61
+
62
+ // extract line numbers
63
+ var firstLineNumber = parseInt(tdAnchor.dataset.lineNumber);
64
+ var lastLineNumber = parseInt(tdFocus.dataset.lineNumber);
65
+
66
+ // multi-lines copied case
67
+ if (firstLineNumber != lastLineNumber) {
68
+ var firstLineText = tdAnchor.textContent;
69
+ var lastLineText = tdFocus.textContent;
70
+
71
+ // if the selection was made backward, swap values
72
+ if (firstLineNumber > lastLineNumber) {
73
+ var tmp = firstLineNumber;
74
+ firstLineNumber = lastLineNumber;
75
+ lastLineNumber = tmp;
76
+ tmp = firstLineText;
77
+ firstLineText = lastLineText;
78
+ lastLineText = tmp;
79
+ }
80
+
81
+ // discard not copied characters in first line
82
+ while (selectionText.indexOf(firstLineText) !== 0) {
83
+ firstLineText = firstLineText.slice(1);
84
+ }
85
+
86
+ // discard not copied characters in last line
87
+ while (selectionText.lastIndexOf(lastLineText) === -1) {
88
+ lastLineText = lastLineText.slice(0, -1);
89
+ }
90
+
91
+ // reconstruct and return the real copied text
92
+ var selectedText = firstLineText;
93
+ var hljsLnTable = getHljsLnTable(tdAnchor);
94
+ for (var i = firstLineNumber + 1; i < lastLineNumber; ++i) {
95
+ var codeLineSel = format('.{0}[{1}="{2}"]', [
96
+ CODE_BLOCK_NAME,
97
+ DATA_ATTR_NAME,
98
+ i,
99
+ ]);
100
+ var codeLineElt = hljsLnTable.querySelector(codeLineSel);
101
+ selectedText += "\n" + codeLineElt.textContent;
102
+ }
103
+ selectedText += "\n" + lastLineText;
104
+ return selectedText;
105
+ // single copied line case
106
+ } else {
107
+ return selectionText;
108
+ }
109
+ }
110
+
111
+ // ensure consistent code copy/paste behavior across all browsers
112
+ // (see https://github.com/wcoder/highlightjs-line-numbers.js/issues/51)
113
+ document.addEventListener("copy", function (e) {
114
+ // get current selection
115
+ var selection = window.getSelection();
116
+ // override behavior when one wants to copy line of codes
117
+ if (isHljsLnCodeDescendant(selection.anchorNode)) {
118
+ var selectionText;
119
+ // workaround an issue with Microsoft Edge as copied line breaks
120
+ // are removed otherwise from the selection string
121
+ if (window.navigator.userAgent.indexOf("Edge") !== -1) {
122
+ selectionText = edgeGetSelectedCodeLines(selection);
123
+ } else {
124
+ // other browsers can directly use the selection string
125
+ selectionText = selection.toString();
126
+ }
127
+ e.clipboardData.setData(
128
+ "text/plain",
129
+ selectionText.replace(/(^\t)/gm, "")
130
+ );
131
+ e.preventDefault();
132
+ }
133
+ });
134
+
135
+ function addStyles() {
136
+ var css = d.createElement("style");
137
+ css.type = "text/css";
138
+ css.innerHTML = format(
139
+ ".{0}{border-collapse:collapse}" +
140
+ ".{0} td{padding:0}" +
141
+ ".{1}:before{content:attr({2})}",
142
+ [TABLE_NAME, NUMBER_LINE_NAME, DATA_ATTR_NAME]
143
+ );
144
+ d.getElementsByTagName("head")[0].appendChild(css);
145
+ }
146
+
147
+ function initLineNumbersOnLoad(options) {
148
+ if (d.readyState === "interactive" || d.readyState === "complete") {
149
+ documentReady(options);
150
+ } else {
151
+ w.addEventListener("DOMContentLoaded", function () {
152
+ documentReady(options);
153
+ });
154
+ }
155
+ }
156
+
157
+ function documentReady(options) {
158
+ try {
159
+ var blocks = d.querySelectorAll("code.hljs,code.nohighlight");
160
+
161
+ for (var i in blocks) {
162
+ if (blocks.hasOwnProperty(i)) {
163
+ if (!isPluginDisabledForBlock(blocks[i])) {
164
+ lineNumbersBlock(blocks[i], options);
165
+ }
166
+ }
167
+ }
168
+ } catch (e) {
169
+ w.console.error("LineNumbers error: ", e);
170
+ }
171
+ }
172
+
173
+ function isPluginDisabledForBlock(element) {
174
+ return element.classList.contains("nohljsln");
175
+ }
176
+
177
+ function lineNumbersBlock(element, options) {
178
+ if (typeof element !== "object") return;
179
+
180
+ async(function () {
181
+ element.innerHTML = lineNumbersInternal(element, options);
182
+ });
183
+ }
184
+
185
+ function lineNumbersValue(value, options) {
186
+ if (typeof value !== "string") return;
187
+
188
+ var element = document.createElement("code");
189
+ element.innerHTML = value;
190
+
191
+ return lineNumbersInternal(element, options);
192
+ }
193
+
194
+ function lineNumbersInternal(element, options) {
195
+ var internalOptions = mapOptions(element, options);
196
+
197
+ duplicateMultilineNodes(element);
198
+
199
+ return addLineNumbersBlockFor(element.innerHTML, internalOptions);
200
+ }
201
+
202
+ function addLineNumbersBlockFor(inputHtml, options) {
203
+ var lines = getLines(inputHtml);
204
+
205
+ // if last line contains only carriage return remove it
206
+ if (lines[lines.length - 1].trim() === "") {
207
+ lines.pop();
208
+ }
209
+
210
+ if (lines.length > 1 || options.singleLine) {
211
+ var html = "";
212
+
213
+ for (var i = 0, l = lines.length; i < l; i++) {
214
+ html += format(
215
+ "<tr>" +
216
+ '<td class="{0} {1}" {3}="{5}">' +
217
+ "</td>" +
218
+ '<td class="{0} {4}" {3}="{5}">' +
219
+ "{6}" +
220
+ "</td>" +
221
+ "</tr>",
222
+ [
223
+ LINE_NAME,
224
+ NUMBERS_BLOCK_NAME,
225
+ NUMBER_LINE_NAME,
226
+ DATA_ATTR_NAME,
227
+ CODE_BLOCK_NAME,
228
+ i + options.startFrom,
229
+ lines[i].length > 0 ? lines[i] : " ",
230
+ ]
231
+ );
232
+ }
233
+
234
+ return format('<table class="{0}">{1}</table>', [TABLE_NAME, html]);
235
+ }
236
+
237
+ return inputHtml;
238
+ }
239
+
240
+ /**
241
+ * @param {HTMLElement} element Code block.
242
+ * @param {Object} options External API options.
243
+ * @returns {Object} Internal API options.
244
+ */
245
+ function mapOptions(element, options) {
246
+ options = options || {};
247
+ return {
248
+ singleLine: getSingleLineOption(options),
249
+ startFrom: getStartFromOption(element, options),
250
+ };
251
+ }
252
+
253
+ function getSingleLineOption(options) {
254
+ var defaultValue = false;
255
+ if (options.singleLine) {
256
+ return options.singleLine;
257
+ }
258
+ return defaultValue;
259
+ }
260
+
261
+ function getStartFromOption(element, options) {
262
+ var defaultValue = 1;
263
+ var startFrom = defaultValue;
264
+
265
+ if (isFinite(options.startFrom)) {
266
+ startFrom = options.startFrom;
267
+ }
268
+
269
+ // can be overridden because local option is priority
270
+ var value = getAttribute(element, "data-ln-start-from");
271
+ if (value !== null) {
272
+ startFrom = toNumber(value, defaultValue);
273
+ }
274
+
275
+ return startFrom;
276
+ }
277
+
278
+ /**
279
+ * Recursive method for fix multi-line elements implementation in highlight.js
280
+ * Doing deep passage on child nodes.
281
+ * @param {HTMLElement} element
282
+ */
283
+ function duplicateMultilineNodes(element) {
284
+ var nodes = element.childNodes;
285
+ for (var node in nodes) {
286
+ if (nodes.hasOwnProperty(node)) {
287
+ var child = nodes[node];
288
+ if (getLinesCount(child.textContent) > 0) {
289
+ if (child.childNodes.length > 0) {
290
+ duplicateMultilineNodes(child);
291
+ } else {
292
+ duplicateMultilineNode(child.parentNode);
293
+ }
294
+ }
295
+ }
296
+ }
297
+ }
298
+
299
+ /**
300
+ * Method for fix multi-line elements implementation in highlight.js
301
+ * @param {HTMLElement} element
302
+ */
303
+ function duplicateMultilineNode(element) {
304
+ var className = element.className;
305
+
306
+ if (!/hljs-/.test(className)) return;
307
+
308
+ var lines = getLines(element.innerHTML);
309
+
310
+ for (var i = 0, result = ""; i < lines.length; i++) {
311
+ var lineText = lines[i].length > 0 ? lines[i] : " ";
312
+ result += format('<span class="{0}">{1}</span>\n', [className, lineText]);
313
+ }
314
+
315
+ element.innerHTML = result.trim();
316
+ }
317
+
318
+ function getLines(text) {
319
+ if (text.length === 0) return [];
320
+ return text.split(BREAK_LINE_REGEXP);
321
+ }
322
+
323
+ function getLinesCount(text) {
324
+ return (text.trim().match(BREAK_LINE_REGEXP) || []).length;
325
+ }
326
+
327
+ ///
328
+ /// HELPERS
329
+ ///
330
+
331
+ function async(func) {
332
+ w.setTimeout(func, 0);
333
+ }
334
+
335
+ /**
336
+ * {@link https://wcoder.github.io/notes/string-format-for-string-formating-in-javascript}
337
+ * @param {string} format
338
+ * @param {array} args
339
+ */
340
+ function format(format, args) {
341
+ return format.replace(/\{(\d+)\}/g, function (m, n) {
342
+ return args[n] !== undefined ? args[n] : m;
343
+ });
344
+ }
345
+
346
+ /**
347
+ * @param {HTMLElement} element Code block.
348
+ * @param {String} attrName Attribute name.
349
+ * @returns {String} Attribute value or empty.
350
+ */
351
+ function getAttribute(element, attrName) {
352
+ return element.hasAttribute(attrName)
353
+ ? element.getAttribute(attrName)
354
+ : null;
355
+ }
356
+
357
+ /**
358
+ * @param {String} str Source string.
359
+ * @param {Number} fallback Fallback value.
360
+ * @returns Parsed number or fallback value.
361
+ */
362
+ function toNumber(str, fallback) {
363
+ if (!str) return fallback;
364
+ var number = Number(str);
365
+ return isFinite(number) ? number : fallback;
366
+ }
367
+ })(window, document);
@@ -0,0 +1 @@
1
+ ((r,o)=>{var e,l="hljs-ln",s="hljs-ln-line",f="hljs-ln-code",c="hljs-ln-numbers",d="hljs-ln-n",h="data-line-number",t=/\r\n|\r|\n/g;function n(e){for(var t=e.toString(),n=e.anchorNode;"TD"!==n.nodeName;)n=n.parentNode;for(var r=e.focusNode;"TD"!==r.nodeName;)r=r.parentNode;var e=parseInt(n.dataset.lineNumber),o=parseInt(r.dataset.lineNumber);if(e==o)return t;var a,i=n.textContent,l=r.textContent;for(o<e&&(a=e,e=o,o=a,a=i,i=l,l=a);0!==t.indexOf(i);)i=i.slice(1);for(;-1===t.lastIndexOf(l);)l=l.slice(0,-1);for(var s=i,c=(e=>{for(var t=e;"TABLE"!==t.nodeName;)t=t.parentNode;return t})(n),d=e+1;d<o;++d){var u=v('.{0}[{1}="{2}"]',[f,h,d]);s+="\n"+c.querySelector(u).textContent}return s+="\n"+l}function a(e){try{var t,n=o.querySelectorAll("code.hljs,code.nohighlight");for(t in n)!n.hasOwnProperty(t)||n[t].classList.contains("nohljsln")||i(n[t],e)}catch(e){r.console.error("LineNumbers error: ",e)}}function i(e,t){"object"==typeof e&&r.setTimeout(function(){e.innerHTML=u(e,t)},0)}function u(e,t){var t={singleLine:(e=>e.singleLine||!1)(t=(t=t)||{}),startFrom:((e,t)=>{var n=1;return isFinite(t.startFrom)&&(n=t.startFrom),t=((e,t)=>e.hasAttribute(t)?e.getAttribute(t):null)(e,"data-ln-start-from"),n=null!==t?((e,t)=>e&&(e=Number(e),isFinite(e))?e:t)(t,1):n})(e,t)},e=(!function e(t){var n=t.childNodes;for(var r in n)n.hasOwnProperty(r)&&0<p((r=n[r]).textContent)&&(0<r.childNodes.length?e(r):m(r.parentNode))}(e),e.innerHTML),n=t,r=g(e);if(""===r[r.length-1].trim()&&r.pop(),1<r.length||n.singleLine){for(var o="",a=0,i=r.length;a<i;a++)o+=v('<tr><td class="{0} {1}" {3}="{5}"></td><td class="{0} {4}" {3}="{5}">{6}</td></tr>',[s,c,d,h,f,a+n.startFrom,0<r[a].length?r[a]:" "]);return v('<table class="{0}">{1}</table>',[l,o])}return e}function m(e){var t=e.className;if(/hljs-/.test(t)){for(var n=g(e.innerHTML),r=0,o="";r<n.length;r++)o+=v('<span class="{0}">{1}</span>\n',[t,0<n[r].length?n[r]:" "]);e.innerHTML=o.trim()}}function g(e){return 0===e.length?[]:e.split(t)}function p(e){return(e.trim().match(t)||[]).length}function v(e,n){return e.replace(/\{(\d+)\}/g,function(e,t){return void 0!==n[t]?n[t]:e})}r.hljs?(r.hljs.initLineNumbersOnLoad=function(e){"interactive"===o.readyState||"complete"===o.readyState?a(e):r.addEventListener("DOMContentLoaded",function(){a(e)})},r.hljs.lineNumbersBlock=i,r.hljs.lineNumbersValue=function(e,t){var n;if("string"==typeof e)return(n=document.createElement("code")).innerHTML=e,u(n,t)},(e=o.createElement("style")).type="text/css",e.innerHTML=v(".{0}{border-collapse:collapse}.{0} td{padding:0}.{1}:before{content:attr({2})}",[l,d,h]),o.getElementsByTagName("head")[0].appendChild(e)):r.console.error("highlight.js not detected!"),document.addEventListener("copy",function(e){var t=window.getSelection();(e=>{for(var t=e;t;){if(t.className&&-1!==t.className.indexOf("hljs-ln-code"))return 1;t=t.parentNode}})(t.anchorNode)&&(t=-1!==window.navigator.userAgent.indexOf("Edge")?n(t):t.toString(),e.clipboardData.setData("text/plain",t.replace(/(^\t)/gm,"")),e.preventDefault())})})(window,document);