treedoc 0.3.49 → 0.3.51

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 (176) hide show
  1. package/lib/Bookmark.js +1 -1
  2. package/lib/Bookmark.js.map +1 -1
  3. package/lib/TD.d.ts +2 -2
  4. package/lib/TD.js +8 -6
  5. package/lib/TD.js.map +1 -1
  6. package/lib/TDNode.d.ts +1 -1
  7. package/lib/TDNode.js +11 -9
  8. package/lib/TDNode.js.map +1 -1
  9. package/lib/TDNodeProxyHandler.js +1 -1
  10. package/lib/TDNodeProxyHandler.js.map +1 -1
  11. package/lib/TDPath.js +1 -1
  12. package/lib/TDPath.js.map +1 -1
  13. package/lib/TreeDoc.js +4 -4
  14. package/lib/TreeDoc.js.map +1 -1
  15. package/lib/core/CharSource.js +1 -1
  16. package/lib/core/CharSource.js.map +1 -1
  17. package/lib/core/ClassUtil.js.map +1 -1
  18. package/lib/core/EOFRuntimeException.js +2 -0
  19. package/lib/core/EOFRuntimeException.js.map +1 -1
  20. package/lib/core/LangUtil.d.ts +8 -8
  21. package/lib/core/LangUtil.js +11 -9
  22. package/lib/core/LangUtil.js.map +1 -1
  23. package/lib/core/ParseRuntimeException.js +2 -0
  24. package/lib/core/ParseRuntimeException.js.map +1 -1
  25. package/lib/core/StringBuilder.js.map +1 -1
  26. package/lib/core/StringCharSource.js +2 -0
  27. package/lib/core/StringCharSource.js.map +1 -1
  28. package/lib/core/StringUtil.js.map +1 -1
  29. package/lib/csv/CSVParser.js.map +1 -1
  30. package/lib/csv/CSVWriter.js.map +1 -1
  31. package/lib/index.js +5 -1
  32. package/lib/index.js.map +1 -1
  33. package/lib/json/JSONPointer.js.map +1 -1
  34. package/lib/json/NodeFilter.js +12 -8
  35. package/lib/json/NodeFilter.js.map +1 -1
  36. package/lib/json/TDJSONOption.js.map +1 -1
  37. package/lib/json/TDJSONParser.js +5 -5
  38. package/lib/json/TDJSONParser.js.map +1 -1
  39. package/lib/json/TDJSONParserOption.js +2 -0
  40. package/lib/json/TDJSONParserOption.js.map +1 -1
  41. package/lib/json/TDJSONWriter.js.map +1 -1
  42. package/lib/json/TDJSONWriterOption.js +3 -1
  43. package/lib/json/TDJSONWriterOption.js.map +1 -1
  44. package/lib/objcoder/TDObjectCoder.d.ts +1 -1
  45. package/lib/objcoder/TDObjectCoder.js +2 -2
  46. package/lib/objcoder/TDObjectCoder.js.map +1 -1
  47. package/lib/src/Bookmark.d.ts +9 -0
  48. package/lib/src/Bookmark.js +31 -0
  49. package/lib/src/Bookmark.js.map +1 -0
  50. package/lib/src/TD.d.ts +20 -0
  51. package/lib/src/TD.js +53 -0
  52. package/lib/src/TD.js.map +1 -0
  53. package/lib/src/TDNode.d.ts +84 -0
  54. package/lib/src/TDNode.js +378 -0
  55. package/lib/src/TDNode.js.map +1 -0
  56. package/lib/src/TDNodeProxyHandler.d.ts +7 -0
  57. package/lib/src/TDNodeProxyHandler.js +50 -0
  58. package/lib/src/TDNodeProxyHandler.js.map +1 -0
  59. package/lib/src/TDPath.d.ts +31 -0
  60. package/lib/src/TDPath.js +87 -0
  61. package/lib/src/TDPath.js.map +1 -0
  62. package/lib/src/TreeDoc.d.ts +27 -0
  63. package/lib/src/TreeDoc.js +93 -0
  64. package/lib/src/TreeDoc.js.map +1 -0
  65. package/lib/src/__tests__/TD.spec.d.ts +1 -0
  66. package/lib/src/__tests__/TD.spec.js +90 -0
  67. package/lib/src/__tests__/TD.spec.js.map +1 -0
  68. package/lib/src/__tests__/TDNode.spec.d.ts +1 -0
  69. package/lib/src/__tests__/TDNode.spec.js +49 -0
  70. package/lib/src/__tests__/TDNode.spec.js.map +1 -0
  71. package/lib/src/__tests__/TDPath.spec.d.ts +1 -0
  72. package/lib/src/__tests__/TDPath.spec.js +15 -0
  73. package/lib/src/__tests__/TDPath.spec.js.map +1 -0
  74. package/lib/src/core/Appendable.d.ts +3 -0
  75. package/lib/src/core/Appendable.js +3 -0
  76. package/lib/src/core/Appendable.js.map +1 -0
  77. package/lib/src/core/CharSource.d.ts +47 -0
  78. package/lib/src/core/CharSource.js +199 -0
  79. package/lib/src/core/CharSource.js.map +1 -0
  80. package/lib/src/core/ClassUtil.d.ts +9 -0
  81. package/lib/src/core/ClassUtil.js +34 -0
  82. package/lib/src/core/ClassUtil.js.map +1 -0
  83. package/lib/src/core/EOFRuntimeException.d.ts +5 -0
  84. package/lib/src/core/EOFRuntimeException.js +32 -0
  85. package/lib/src/core/EOFRuntimeException.js.map +1 -0
  86. package/lib/src/core/LangUtil.d.ts +38 -0
  87. package/lib/src/core/LangUtil.js +110 -0
  88. package/lib/src/core/LangUtil.js.map +1 -0
  89. package/lib/src/core/ListUtil.d.ts +19 -0
  90. package/lib/src/core/ListUtil.js +38 -0
  91. package/lib/src/core/ListUtil.js.map +1 -0
  92. package/lib/src/core/ParseRuntimeException.d.ts +11 -0
  93. package/lib/src/core/ParseRuntimeException.js +40 -0
  94. package/lib/src/core/ParseRuntimeException.js.map +1 -0
  95. package/lib/src/core/StringBuilder.d.ts +9 -0
  96. package/lib/src/core/StringBuilder.js +30 -0
  97. package/lib/src/core/StringBuilder.js.map +1 -0
  98. package/lib/src/core/StringCharSource.d.ts +11 -0
  99. package/lib/src/core/StringCharSource.js +60 -0
  100. package/lib/src/core/StringCharSource.js.map +1 -0
  101. package/lib/src/core/StringUtil.d.ts +16 -0
  102. package/lib/src/core/StringUtil.js +75 -0
  103. package/lib/src/core/StringUtil.js.map +1 -0
  104. package/lib/src/core/__test__/ClassUtil.spec.d.ts +1 -0
  105. package/lib/src/core/__test__/ClassUtil.spec.js +16 -0
  106. package/lib/src/core/__test__/ClassUtil.spec.js.map +1 -0
  107. package/lib/src/core/__test__/StringCharSource.spec.d.ts +1 -0
  108. package/lib/src/core/__test__/StringCharSource.spec.js +18 -0
  109. package/lib/src/core/__test__/StringCharSource.spec.js.map +1 -0
  110. package/lib/src/core/__test__/StringUtil.spec.d.ts +1 -0
  111. package/lib/src/core/__test__/StringUtil.spec.js +23 -0
  112. package/lib/src/core/__test__/StringUtil.spec.js.map +1 -0
  113. package/lib/src/csv/CSV.spec.d.ts +1 -0
  114. package/lib/src/csv/CSV.spec.js +45 -0
  115. package/lib/src/csv/CSV.spec.js.map +1 -0
  116. package/lib/src/csv/CSVOption.d.ts +12 -0
  117. package/lib/src/csv/CSVOption.js +23 -0
  118. package/lib/src/csv/CSVOption.js.map +1 -0
  119. package/lib/src/csv/CSVParser.d.ts +13 -0
  120. package/lib/src/csv/CSVParser.js +133 -0
  121. package/lib/src/csv/CSVParser.js.map +1 -0
  122. package/lib/src/csv/CSVWriter.d.ts +14 -0
  123. package/lib/src/csv/CSVWriter.js +77 -0
  124. package/lib/src/csv/CSVWriter.js.map +1 -0
  125. package/lib/src/index.d.ts +21 -0
  126. package/lib/src/index.js +34 -0
  127. package/lib/src/index.js.map +1 -0
  128. package/lib/src/json/JSONPointer.d.ts +30 -0
  129. package/lib/src/json/JSONPointer.js +87 -0
  130. package/lib/src/json/JSONPointer.js.map +1 -0
  131. package/lib/src/json/NodeFilter.d.ts +25 -0
  132. package/lib/src/json/NodeFilter.js +115 -0
  133. package/lib/src/json/NodeFilter.js.map +1 -0
  134. package/lib/src/json/TDJSONOption.d.ts +26 -0
  135. package/lib/src/json/TDJSONOption.js +56 -0
  136. package/lib/src/json/TDJSONOption.js.map +1 -0
  137. package/lib/src/json/TDJSONParser.d.ts +19 -0
  138. package/lib/src/json/TDJSONParser.js +233 -0
  139. package/lib/src/json/TDJSONParser.js.map +1 -0
  140. package/lib/src/json/TDJSONParserOption.d.ts +24 -0
  141. package/lib/src/json/TDJSONParserOption.js +50 -0
  142. package/lib/src/json/TDJSONParserOption.js.map +1 -0
  143. package/lib/src/json/TDJSONWriter.d.ts +17 -0
  144. package/lib/src/json/TDJSONWriter.js +143 -0
  145. package/lib/src/json/TDJSONWriter.js.map +1 -0
  146. package/lib/src/json/TDJSONWriterOption.d.ts +36 -0
  147. package/lib/src/json/TDJSONWriterOption.js +88 -0
  148. package/lib/src/json/TDJSONWriterOption.js.map +1 -0
  149. package/lib/src/json/__test__/CharSource.spec.d.ts +1 -0
  150. package/lib/src/json/__test__/CharSource.spec.js +58 -0
  151. package/lib/src/json/__test__/CharSource.spec.js.map +1 -0
  152. package/lib/src/json/__test__/JSONPointer.spec.d.ts +1 -0
  153. package/lib/src/json/__test__/JSONPointer.spec.js +16 -0
  154. package/lib/src/json/__test__/JSONPointer.spec.js.map +1 -0
  155. package/lib/src/json/__test__/TDJsonParser.spec.d.ts +1 -0
  156. package/lib/src/json/__test__/TDJsonParser.spec.js +183 -0
  157. package/lib/src/json/__test__/TDJsonParser.spec.js.map +1 -0
  158. package/lib/src/json/__test__/TDJsonWriter.spec.d.ts +1 -0
  159. package/lib/src/json/__test__/TDJsonWriter.spec.js +71 -0
  160. package/lib/src/json/__test__/TDJsonWriter.spec.js.map +1 -0
  161. package/lib/src/json/__test__/TDNode.spec.d.ts +1 -0
  162. package/lib/src/json/__test__/TDNode.spec.js +17 -0
  163. package/lib/src/json/__test__/TDNode.spec.js.map +1 -0
  164. package/lib/src/json/__test__/TestData.d.ts +7 -0
  165. package/lib/src/json/__test__/TestData.js +15 -0
  166. package/lib/src/json/__test__/TestData.js.map +1 -0
  167. package/lib/src/objcoder/CustomCoder.d.ts +7 -0
  168. package/lib/src/objcoder/CustomCoder.js +27 -0
  169. package/lib/src/objcoder/CustomCoder.js.map +1 -0
  170. package/lib/src/objcoder/TDObjectCoder.d.ts +35 -0
  171. package/lib/src/objcoder/TDObjectCoder.js +141 -0
  172. package/lib/src/objcoder/TDObjectCoder.js.map +1 -0
  173. package/lib/vitest.config.d.ts +2 -0
  174. package/lib/vitest.config.js +10 -0
  175. package/lib/vitest.config.js.map +1 -0
  176. package/package.json +10 -12
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.TreeDoc_ofNode = exports.TreeDoc_merge = exports.TreeDoc_ofArray = exports.TreeDoc = void 0;
15
+ var _1 = require(".");
16
+ var ListUtil_1 = require("./core/ListUtil");
17
+ var LangUtil_1 = require("./core/LangUtil");
18
+ var TDNode_1 = require("./TDNode");
19
+ var TreeDoc = /** @class */ (function () {
20
+ function TreeDoc(rootKey, uri) {
21
+ if (rootKey === void 0) { rootKey = 'root'; }
22
+ if (uri === void 0) { uri = null; }
23
+ this.uri = uri;
24
+ this.idMap = {};
25
+ this.root = new TDNode_1.TDNode(this, "root");
26
+ this.root.key = rootKey;
27
+ }
28
+ TreeDoc.ofArray = function () {
29
+ var result = new TreeDoc();
30
+ result.root.setType(_1.TDNodeType.ARRAY);
31
+ return result;
32
+ };
33
+ /** Retrain only the sub-tree under the input node. */
34
+ TreeDoc.prototype.retain = function (node) {
35
+ node.setKey(this.root.key);
36
+ this.root = node;
37
+ node.parent = undefined;
38
+ return this;
39
+ };
40
+ /**
41
+ * Create a TreeDoc with array root node contains the input nodes. This method will mutate the input nodes without
42
+ * copying them. So the original Treedoc and parent associated with nodes will be obsoleted.
43
+ * For idMap merge, all the id will be reassigned as id + "_" + docId to avoid collision.
44
+ */
45
+ TreeDoc.merge = function (nodes) {
46
+ var result = new TreeDoc();
47
+ result.root.type = _1.TDNodeType.ARRAY;
48
+ var docId = 0;
49
+ for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
50
+ var node = nodes_1[_i];
51
+ node.setKey(undefined);
52
+ result.idMap = __assign(__assign({}, result.idMap), ListUtil_1.ListUtil.mapKeys(node.doc.idMap, function (k) { return k + "_" + docId; }));
53
+ node.foreach(function (n) {
54
+ n.doc = result;
55
+ LangUtil_1.LangUtil.doIfNotNull(n.getChild(TDNode_1.TDNode.REF_KEY), function (nRef) { return nRef.value += "_" + docId; });
56
+ LangUtil_1.LangUtil.doIfNotNull(n.getChild(TDNode_1.TDNode.ID_KEY), function (nRef) { return nRef.value += "_" + docId; });
57
+ });
58
+ result.root.addChild(node);
59
+ docId++;
60
+ }
61
+ return result;
62
+ };
63
+ /**
64
+ * Build a tree node with exiting node as root node. This method will mutate input node so that the original doc and
65
+ * parent associated with that node will be obsoleted. The that node is still associated with original doc, the original
66
+ * doc will be in invalid state.
67
+ */
68
+ TreeDoc.ofNode = function (node) {
69
+ var key = node.doc.root.key;
70
+ var result = new TreeDoc(node.doc.root.key, node.doc.uri);
71
+ result.root = node.setKey(key);
72
+ result.idMap = __assign({}, node.doc.idMap);
73
+ node.doc = result;
74
+ node.parent = undefined;
75
+ return result;
76
+ };
77
+ return TreeDoc;
78
+ }());
79
+ exports.TreeDoc = TreeDoc;
80
+ // Jest has problem to access static method. We have to define global method for Jest spec to access
81
+ function TreeDoc_ofArray() {
82
+ return TreeDoc.ofArray();
83
+ }
84
+ exports.TreeDoc_ofArray = TreeDoc_ofArray;
85
+ function TreeDoc_merge(nodes) {
86
+ return TreeDoc.merge(nodes);
87
+ }
88
+ exports.TreeDoc_merge = TreeDoc_merge;
89
+ function TreeDoc_ofNode(node) {
90
+ return TreeDoc.ofNode(node);
91
+ }
92
+ exports.TreeDoc_ofNode = TreeDoc_ofNode;
93
+ //# sourceMappingURL=TreeDoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeDoc.js","sourceRoot":"","sources":["../../src/TreeDoc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var TDJSONParser_1 = require("../json/TDJSONParser");
4
+ var TD_1 = require("../TD");
5
+ var TDNode_1 = require("../TDNode");
6
+ var TestObject = /** @class */ (function () {
7
+ function TestObject(title) {
8
+ this.title = title;
9
+ this.nullObj = null;
10
+ }
11
+ TestObject.prototype.functionObj = function (num) {
12
+ console.log(num);
13
+ };
14
+ return TestObject;
15
+ }());
16
+ var commonObj = new TestObject('common');
17
+ var obj = {
18
+ num: 10,
19
+ obj: {
20
+ str: '123',
21
+ bool: true,
22
+ date: new Date('2019-12-16T17:34:45.024Z'),
23
+ nestObj: commonObj,
24
+ cyclic: null,
25
+ specialArray: [10, undefined, function (a) { ; }, Symbol('')],
26
+ },
27
+ obj1: commonObj,
28
+ };
29
+ var commonObjStr = "{\n $type:'TestObject',\n title:'common'\n}";
30
+ // ES6 doesn't work
31
+ var commonObjConstructorEs5 = "{\n $type:'TestObject',\n functionObj:'function (num) {\\n console.log(num);\\n }'\n}";
32
+ var commonObjConstructorEs6 = "{\n $type:'TestObject'\n}";
33
+ var objStr = "{\n \"num\":10,\n \"obj\":{\n \"str\":\"123\",\n \"bool\":true,\n \"date\":\"2019-12-16T17:34:45.024Z\",\n \"nestObj\":{\n \"title\":\"common\",\n \"$id\":1\n },\n \"cyclic\":{\n \"$ref\":\"../../\"\n },\n \"specialArray\":[\n 10,\n null,\n null,\n null\n ]\n },\n \"obj1\":{\n \"$ref\":\"#1\"\n },\n \"arrayRef\":{\n \"$ref\":\"/obj/specialArray\"\n }\n}";
34
+ obj.obj.cyclic = obj;
35
+ obj.arrayRef = obj.obj.specialArray;
36
+ describe('TD', function () {
37
+ test('stringify with Options', function () {
38
+ expect(TD_1.TD.stringify(commonObj, {
39
+ coderOption: {
40
+ showType: true
41
+ },
42
+ jsonOption: {
43
+ alwaysQuoteKey: false,
44
+ quoteChars: "'",
45
+ indentFactor: 2
46
+ }
47
+ })).toBe(commonObjStr);
48
+ });
49
+ test('stringify with showFunction', function () {
50
+ var opt = new TD_1.TDEncodeOption();
51
+ opt.jsonOption
52
+ .setAlwaysQuoteKey(false)
53
+ .setQuoteChars("'")
54
+ .setIndentFactor(2);
55
+ opt.coderOption
56
+ .setShowType(true)
57
+ .setShowFunction(true);
58
+ // Not sure why Object.keys doesn't return any keys for this particular test case for ES6
59
+ expect(TD_1.TD.stringify(commonObj.constructor.prototype, opt)).toBe(commonObjConstructorEs5);
60
+ });
61
+ test('stringify cyclic without options', function () {
62
+ var str = TD_1.TD.stringify(obj, " ");
63
+ console.log(str);
64
+ expect(str).toBe(objStr);
65
+ });
66
+ test('parse', function () {
67
+ var o = TD_1.TD.parse(objStr);
68
+ var str = TD_1.TD.stringify(o, " ");
69
+ expect(str).toEqual(objStr);
70
+ console.log(str);
71
+ expect(o.obj1).toBe(o.obj.nestObj);
72
+ expect(o.obj.cyclic).toBe(o);
73
+ expect(o.arrayRef).toBe(o.obj.specialArray);
74
+ });
75
+ test('parseWithOption', function () {
76
+ var o = TD_1.TD.parse("a,b,c", { defaultRootType: TDNode_1.TDNodeType.ARRAY });
77
+ expect(o).toEqual(["a", "b", "c"]);
78
+ });
79
+ test('parseObjectWithoutStart', function () {
80
+ var o = TD_1.TD.parse("a:1,b:c", { defaultRootType: TDNode_1.TDNodeType.MAP });
81
+ expect(TD_1.TD.stringify(o, { jsonOption: { quoteChars: "'" } })).toEqual("{'a':1,'b':'c'}");
82
+ });
83
+ test('stringifyTDNode', function () {
84
+ var td = TDJSONParser_1.TDJSONParser.get().parse("{a:1, b:2}");
85
+ var encodeOpt = new TD_1.TDEncodeOption();
86
+ encodeOpt.coderOption.coders = []; // remote default coder which will use `toJSON()` method
87
+ expect(TD_1.TD.stringify(td, encodeOpt)).toMatchSnapshot();
88
+ });
89
+ });
90
+ //# sourceMappingURL=TD.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TD.spec.js","sourceRoot":"","sources":["../../../src/__tests__/TD.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var __1 = require("..");
4
+ var TDJSONParser_1 = require("../json/TDJSONParser");
5
+ describe('TDNode', function () {
6
+ var testData = "\n {\n \"a\": 1\n \"b\": [1,2,3]\n \"c\": \"str\",\n \"validRef\": {$ref: /a},\n \"invalidRef\": {$ref: abc}\n }\n ";
7
+ var testData1 = "\n {\n \"log\": {\n \"version\": \"1.2\",\n \"creator\": {\n \"name\": \"WebInspector\",\n \"version\": \"537.36\"\n }\n }\n }";
8
+ var testJson = __1.TD.parse(testData);
9
+ test('testToObject', function () {
10
+ var node = TDJSONParser_1.TDJSONParser.get().parse(testData);
11
+ var obj = node.toObject(true);
12
+ var str = __1.TD.stringify(obj, { jsonOption: { quoteChars: "'" } });
13
+ expect(__1.TD.stringify(obj, { jsonOption: { quoteChars: "'" } })).toMatchSnapshot();
14
+ }),
15
+ test('testToProxy', function () {
16
+ var node = TDJSONParser_1.TDJSONParser.get().parse(testData);
17
+ var proxy = node.toProxy();
18
+ expect(proxy.length).toBe(5);
19
+ expect(proxy.a).toBe(1);
20
+ expect(proxy.b.length).toBe(testJson.b.length);
21
+ expect(proxy.b[2]).toBe(3);
22
+ expect(proxy.c).toBe('str');
23
+ expect(proxy.toString()).toMatchInlineSnapshot("\"{a: 1, b: [1, 2, 3], c: 'str', validRef: {$ref: '/a'}, invalidRef: {$ref: 'abc'}}\"");
24
+ // expect(Object.keys(proxy.b)).toBe(["@target"]);
25
+ expect(__1.TD.stringify(proxy, { jsonOption: { quoteChars: "'" } })).toMatchSnapshot();
26
+ });
27
+ test('testToProxy1', function () {
28
+ var node = TDJSONParser_1.TDJSONParser.get().parse(testData1);
29
+ var proxy = node.getByPath('log/creator').toProxy();
30
+ expect(proxy.toString()).toMatchInlineSnapshot("\"{name: 'WebInspector', version: '537.36'}\"");
31
+ expect(proxy.toJSON()).toMatchInlineSnapshot("\"{name: 'WebInspector', version: '537.36'}\"");
32
+ // TODO: fix, the string should be "{'creator': {'name':'WebInspector','version':'537.36'}}"
33
+ expect(__1.TD.stringify(proxy, { jsonOption: { quoteChars: "'" } })).toMatchInlineSnapshot("\"{'name':'WebInspector','version':'537.36'}\"");
34
+ });
35
+ test('testCreateLargeNumberOfChildren', function () {
36
+ var node = new __1.TreeDoc().root.setType(__1.TDNodeType.ARRAY);
37
+ var start = new Date().getTime();
38
+ for (var i = 0; i < 500000; i++) {
39
+ node.createChild("name_" + i).setType(__1.TDNodeType.MAP).createChild("name_" + i + "_1").setValue("value_" + i + "_1");
40
+ }
41
+ expect(node.getChild("name_1")).not.toBeNull();
42
+ expect(node.getChild("name_1000")).not.toBeNull();
43
+ node.getChildrenKeys();
44
+ var time = new Date().getTime() - start;
45
+ console.log(time);
46
+ expect(time).toBeLessThan(2000);
47
+ });
48
+ });
49
+ //# sourceMappingURL=TDNode.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TDNode.spec.js","sourceRoot":"","sources":["../../../src/__tests__/TDNode.spec.ts"],"names":[],"mappings":";;AAAA,wBAA6C;AAC7C,qDAAoD;AAEpD,QAAQ,CAAC,QAAQ,EAAE;IACjB,IAAM,QAAQ,GAAG,uIAQhB,CAAC;IAEF,IAAM,SAAS,GAAG,qKAShB,CAAC;IAEH,IAAM,QAAQ,GAAG,MAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,CAAC,cAAc,EAAE;QACnB,IAAM,IAAI,GAAG,2BAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,IAAM,GAAG,GAAG,MAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,MAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IACnF,CAAC,CAAC;QACA,IAAI,CAAC,aAAa,EAAE;YAClB,IAAM,IAAI,GAAG,2BAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAS,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,CAC5C,uFAAqF,CACtF,CAAC;YAEF,kDAAkD;YAClD,MAAM,CAAC,MAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;QACrF,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,cAAc,EAAE;QACnB,IAAM,IAAI,GAAG,2BAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAE,CAAC,OAAO,EAAS,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,CAAC,+CAA6C,CAAC,CAAC;QAC9F,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,qBAAqB,CAAC,+CAA6C,CAAC,CAAC;QAC5F,4FAA4F;QAC5F,MAAM,CAAC,MAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CACpF,gDAA8C,CAC/C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE;QACtC,IAAM,IAAI,GAAG,IAAI,WAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAU,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,cAAU,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;SACrH;QACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AAEL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var TDPath_1 = require("../TDPath");
4
+ var __1 = require("..");
5
+ describe('TDPath', function () {
6
+ test('parse', function () {
7
+ expect(TDPath_1.TDPath.parse('/p1/p2')).toEqual(new TDPath_1.TDPath().addParts(__1.Part.ofRoot(), __1.Part.ofChild('p1'), __1.Part.ofChild('p2')));
8
+ expect(TDPath_1.TDPath.parse('../p1/p2')).toEqual(new TDPath_1.TDPath().addParts(__1.Part.ofRelative(1), __1.Part.ofChild('p1'), __1.Part.ofChild('p2')));
9
+ expect(TDPath_1.TDPath.parse('./p1/p2')).toEqual(new TDPath_1.TDPath().addParts(__1.Part.ofRelative(0), __1.Part.ofChild('p1'), __1.Part.ofChild('p2')));
10
+ expect(TDPath_1.TDPath.parse('#100/p1/p2')).toEqual(new TDPath_1.TDPath().addParts(__1.Part.ofChildOrId('#100', '100'), __1.Part.ofChild('p1'), __1.Part.ofChild('p2')));
11
+ expect(TDPath_1.TDPath.parse('#/p1/p2')).toEqual(new TDPath_1.TDPath().addParts(__1.Part.ofRoot(), __1.Part.ofChild('p1'), __1.Part.ofChild('p2')));
12
+ expect(TDPath_1.TDPath.parse('../')).toEqual(new TDPath_1.TDPath().addParts(__1.Part.ofRelative(1)));
13
+ });
14
+ });
15
+ //# sourceMappingURL=TDPath.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TDPath.spec.js","sourceRoot":"","sources":["../../../src/__tests__/TDPath.spec.ts"],"names":[],"mappings":";;AAIA,oCAAmC;AACnC,wBAA0B;AAE1B,QAAQ,CAAC,QAAQ,EAAE;IACjB,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CACpC,IAAI,eAAM,EAAE,CAAC,QAAQ,CAAC,QAAI,CAAC,MAAM,EAAE,EAAE,QAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAC7E,CAAC;QACF,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CACtC,IAAI,eAAM,EAAE,CAAC,QAAQ,CAAC,QAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAClF,CAAC;QACF,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CACrC,IAAI,eAAM,EAAE,CAAC,QAAQ,CAAC,QAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAClF,CAAC;QACF,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CACxC,IAAI,eAAM,EAAE,CAAC,QAAQ,CAAC,QAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,QAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAC/F,CAAC;QACF,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CACrC,IAAI,eAAM,EAAE,CAAC,QAAQ,CAAC,QAAI,CAAC,MAAM,EAAE,EAAE,QAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAC7E,CAAC;QACF,MAAM,CAAC,eAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CACjC,IAAI,eAAM,EAAE,CAAC,QAAQ,CAAC,QAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export interface Appendable {
2
+ append(str: string): Appendable;
3
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Appendable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Appendable.js","sourceRoot":"","sources":["../../../src/core/Appendable.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import { Bookmark } from '../Bookmark';
2
+ import { Predicate } from './LangUtil';
3
+ import { StringBuilder } from './StringBuilder';
4
+ import { ParseRuntimeException } from './ParseRuntimeException';
5
+ export declare abstract class CharSource {
6
+ private static readonly MAX_STRING_LEN;
7
+ private static readonly SPACE_RETURN_CHARS;
8
+ private static readonly SPACE_RETURN_COMMA_CHARS;
9
+ readonly bookmark: Bookmark;
10
+ abstract read(): string;
11
+ peek(i?: number): string;
12
+ isEof(i?: number): boolean;
13
+ getBookmark(): Bookmark;
14
+ /**
15
+ * Skip chars until eof or length or predicate condition matches
16
+ * If target is set, the skipped the chars will be saved in the target
17
+ *
18
+ * @return true The terminate condition matches. otherwise, could be EOF or length matches
19
+ */
20
+ abstract readUntil(target: StringBuilder | null, predicate: Predicate<CharSource>, minLen?: number, maxLen?: number): boolean;
21
+ skipUntil(predicate: Predicate<CharSource>): boolean;
22
+ /** @return true Terminal conditions matches */
23
+ readUntilTerminatorToString(target: StringBuilder | null, chars: string, strs?: string[] | null, include?: boolean, minLen?: number, maxLen?: number): boolean;
24
+ /** @return true Terminal conditions matches */
25
+ readUntilTerminator(chars: string, strs?: string[] | null, minLen?: number, maxLen?: number): string;
26
+ /** @return true Terminal conditions matches */
27
+ skipUntilTerminator(chars: string, include?: boolean): boolean;
28
+ /** @return true Indicates more character in the stream */
29
+ skipSpacesAndReturns(): boolean;
30
+ skipSpacesAndReturnsAndCommas(): boolean;
31
+ /** @return true Indicates more character in the stream */
32
+ skipChars(chars: string): boolean;
33
+ readToString(target: StringBuilder | null, len: number): boolean;
34
+ readString(len: number): string;
35
+ skip(len?: number): boolean;
36
+ readUntilMatch(target: StringBuilder | null, str: string, skipStr: boolean, minLen?: number, maxLen?: number): boolean;
37
+ skipUntilMatch(str: string, skipStr: boolean): boolean;
38
+ peekString(len: number): string;
39
+ startsWithAny(strs: string[] | null): boolean;
40
+ startsWith(str: string): boolean;
41
+ private getTermStrWithQuoteAndEscape;
42
+ readQuotedString(quote: string): string;
43
+ readQuotedToString(sb: StringBuilder, quote: string): StringBuilder;
44
+ private readOctNumber;
45
+ private isOctDigit;
46
+ createParseRuntimeException(message: string, partialObj?: any, cause?: Error): ParseRuntimeException;
47
+ }
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CharSource = void 0;
4
+ var Bookmark_1 = require("../Bookmark");
5
+ var StringBuilder_1 = require("./StringBuilder");
6
+ var EOFRuntimeException_1 = require("./EOFRuntimeException");
7
+ var ParseRuntimeException_1 = require("./ParseRuntimeException");
8
+ var CharSource = /** @class */ (function () {
9
+ function CharSource() {
10
+ this.bookmark = new Bookmark_1.Bookmark();
11
+ }
12
+ CharSource.prototype.peek = function (i) {
13
+ if (i === void 0) { i = 0; }
14
+ return '';
15
+ };
16
+ CharSource.prototype.isEof = function (i) {
17
+ if (i === void 0) { i = 0; }
18
+ return false;
19
+ };
20
+ CharSource.prototype.getBookmark = function () {
21
+ return this.bookmark.clone();
22
+ };
23
+ CharSource.prototype.skipUntil = function (predicate) {
24
+ return this.readUntil(null, predicate);
25
+ };
26
+ /** @return true Terminal conditions matches */
27
+ CharSource.prototype.readUntilTerminatorToString = function (target, chars, strs, include, minLen, maxLen) {
28
+ var _this = this;
29
+ if (strs === void 0) { strs = null; }
30
+ if (include === void 0) { include = true; }
31
+ if (minLen === void 0) { minLen = 0; }
32
+ if (maxLen === void 0) { maxLen = Number.MAX_VALUE; }
33
+ return this.readUntil(target, function (s) { return (chars.indexOf(s.peek(0)) >= 0 || _this.startsWithAny(strs)) === include; }, minLen, maxLen);
34
+ };
35
+ /** @return true Terminal conditions matches */
36
+ CharSource.prototype.readUntilTerminator = function (chars, strs, minLen, maxLen) {
37
+ if (strs === void 0) { strs = null; }
38
+ if (minLen === void 0) { minLen = 0; }
39
+ if (maxLen === void 0) { maxLen = Number.MAX_VALUE; }
40
+ var sb = new StringBuilder_1.StringBuilder();
41
+ this.readUntilTerminatorToString(sb, chars, strs, true, minLen, maxLen);
42
+ return sb.toString();
43
+ };
44
+ /** @return true Terminal conditions matches */
45
+ CharSource.prototype.skipUntilTerminator = function (chars, include) {
46
+ if (include === void 0) { include = true; }
47
+ return this.readUntilTerminatorToString(null, chars, null, include);
48
+ };
49
+ /** @return true Indicates more character in the stream */
50
+ CharSource.prototype.skipSpacesAndReturns = function () { return this.skipUntilTerminator(CharSource.SPACE_RETURN_CHARS, false); };
51
+ CharSource.prototype.skipSpacesAndReturnsAndCommas = function () { return this.skipUntilTerminator(CharSource.SPACE_RETURN_COMMA_CHARS, false); };
52
+ /** @return true Indicates more character in the stream */
53
+ CharSource.prototype.skipChars = function (chars) { return this.skipUntilTerminator(chars, false); };
54
+ CharSource.prototype.readToString = function (target, len) {
55
+ return this.readUntil(target, function (s) { return false; }, len, len);
56
+ };
57
+ CharSource.prototype.readString = function (len) {
58
+ var sb = new StringBuilder_1.StringBuilder();
59
+ this.readToString(sb, len);
60
+ return sb.toString();
61
+ };
62
+ CharSource.prototype.skip = function (len) {
63
+ if (len === void 0) { len = 1; }
64
+ return this.readToString(null, len);
65
+ };
66
+ CharSource.prototype.readUntilMatch = function (target, str, skipStr, minLen, maxLen) {
67
+ if (minLen === void 0) { minLen = 0; }
68
+ if (maxLen === void 0) { maxLen = CharSource.MAX_STRING_LEN; }
69
+ var matches = this.readUntil(target, function (s) { return s.startsWith(str); }, minLen, maxLen);
70
+ if (matches && skipStr)
71
+ this.skip(str.length);
72
+ return matches;
73
+ };
74
+ CharSource.prototype.skipUntilMatch = function (str, skipStr) {
75
+ return this.readUntilMatch(null, str, skipStr);
76
+ };
77
+ // TODO: performance optimization with string.substr()
78
+ CharSource.prototype.peekString = function (len) {
79
+ var sb = new StringBuilder_1.StringBuilder();
80
+ for (var i = 0; i < len; i++) {
81
+ if (this.isEof(i))
82
+ break;
83
+ sb.append(this.peek(i));
84
+ }
85
+ return sb.toString();
86
+ };
87
+ CharSource.prototype.startsWithAny = function (strs) {
88
+ if (strs != null) {
89
+ for (var _i = 0, strs_1 = strs; _i < strs_1.length; _i++) {
90
+ var s = strs_1[_i];
91
+ if (this.startsWith(s))
92
+ return true;
93
+ }
94
+ }
95
+ return false;
96
+ };
97
+ CharSource.prototype.startsWith = function (str) {
98
+ if (this.isEof(str.length - 1))
99
+ return false;
100
+ for (var i = 0; i < str.length; i++) {
101
+ if (this.peek(i) !== str.charAt(i))
102
+ return false;
103
+ }
104
+ return true;
105
+ };
106
+ // For performance, avoid creating String object every time
107
+ CharSource.prototype.getTermStrWithQuoteAndEscape = function (quote) {
108
+ switch (quote) {
109
+ case "'":
110
+ return "\\'";
111
+ case '"':
112
+ return '\\"';
113
+ case '`':
114
+ return '\\`';
115
+ default:
116
+ return '\\';
117
+ }
118
+ };
119
+ CharSource.prototype.readQuotedString = function (quote) {
120
+ return this.readQuotedToString(new StringBuilder_1.StringBuilder(), quote).toString();
121
+ };
122
+ CharSource.prototype.readQuotedToString = function (sb, quote) {
123
+ var terminator = this.getTermStrWithQuoteAndEscape(quote);
124
+ // Not calling getBookmark() to avoid clone an object
125
+ var pos = this.bookmark.pos;
126
+ var line = this.bookmark.line;
127
+ var col = this.bookmark.col;
128
+ while (true) {
129
+ if (!this.readUntilTerminatorToString(sb, terminator))
130
+ throw new EOFRuntimeException_1.EOFRuntimeException("Can't find matching quote at position:" + pos + ";line:" + line + ";col:" + col);
131
+ var c = this.read();
132
+ if (c === quote)
133
+ break;
134
+ // c should be '/', it's a escape sequence
135
+ c = this.read();
136
+ switch (c) {
137
+ case 'b':
138
+ sb.append('\b');
139
+ break;
140
+ case 't':
141
+ sb.append('\t');
142
+ break;
143
+ case 'n':
144
+ sb.append('\n');
145
+ break;
146
+ case 'f':
147
+ sb.append('\f');
148
+ break;
149
+ case 'r':
150
+ sb.append('\r');
151
+ break;
152
+ case 'v':
153
+ sb.append('\u000B');
154
+ break;
155
+ case 'u':
156
+ var code = parseInt(this.readString(4), 16);
157
+ if (Number.isNaN(code))
158
+ throw this.createParseRuntimeException('Escaped unicode with invalid number: ' + code);
159
+ sb.append(String.fromCharCode(code));
160
+ break;
161
+ case '\n':
162
+ case '\r':
163
+ break; // Assume it's a line continuation
164
+ default:
165
+ if (this.isOctDigit(c))
166
+ sb.append(String.fromCharCode(this.readOctNumber(Number(c))));
167
+ else
168
+ sb.append(c);
169
+ }
170
+ }
171
+ return sb;
172
+ };
173
+ CharSource.prototype.readOctNumber = function (num) {
174
+ for (var i = 0; i < 2; i++) {
175
+ var d = this.peek();
176
+ if (!this.isOctDigit(d))
177
+ break;
178
+ var newNum = num * 8 + Number(d);
179
+ if (newNum > 255)
180
+ break;
181
+ num = newNum;
182
+ this.read();
183
+ }
184
+ return num;
185
+ };
186
+ CharSource.prototype.isOctDigit = function (c) {
187
+ return '0' <= c && c <= '8';
188
+ };
189
+ CharSource.prototype.createParseRuntimeException = function (message, partialObj, cause) {
190
+ return new ParseRuntimeException_1.ParseRuntimeException(message, this.getBookmark(), this.peekString(10), cause, partialObj);
191
+ };
192
+ CharSource.MAX_STRING_LEN = 20000;
193
+ // HTML &nbsp; will be converted to \u00a0, that's why it need to be supported here
194
+ CharSource.SPACE_RETURN_CHARS = ' \n\r\t\u00a0';
195
+ CharSource.SPACE_RETURN_COMMA_CHARS = CharSource.SPACE_RETURN_CHARS + ",";
196
+ return CharSource;
197
+ }());
198
+ exports.CharSource = CharSource;
199
+ //# sourceMappingURL=CharSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CharSource.js","sourceRoot":"","sources":["../../../src/core/CharSource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class ClassUtil {
2
+ /**
3
+ * To Simple Object without type. It will to convert str into null, boolean, double, long or Integer.
4
+ * For number, it supports Hex number with prefix of "0x". If conversion fails. It will return the original str.
5
+ */
6
+ static toSimpleObject(str: string): number | boolean | string | null;
7
+ private static tryToNumber;
8
+ private static parseNumber;
9
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClassUtil = void 0;
4
+ var ClassUtil = /** @class */ (function () {
5
+ function ClassUtil() {
6
+ }
7
+ /**
8
+ * To Simple Object without type. It will to convert str into null, boolean, double, long or Integer.
9
+ * For number, it supports Hex number with prefix of "0x". If conversion fails. It will return the original str.
10
+ */
11
+ ClassUtil.toSimpleObject = function (str) {
12
+ if ("null" === str)
13
+ return null;
14
+ if ("true" === str)
15
+ return true;
16
+ if ("false" === str)
17
+ return false;
18
+ return this.tryToNumber(str);
19
+ };
20
+ ClassUtil.tryToNumber = function (str) {
21
+ if (str.length > 0) {
22
+ return this.parseNumber(str);
23
+ }
24
+ return str;
25
+ };
26
+ ClassUtil.parseNumber = function (str) {
27
+ var isDouble = str.indexOf('.') >= 0;
28
+ var num = Number(str);
29
+ return Number.isNaN(num) || (!isDouble && num > Number.MAX_SAFE_INTEGER) ? str : num;
30
+ };
31
+ return ClassUtil;
32
+ }());
33
+ exports.ClassUtil = ClassUtil;
34
+ //# sourceMappingURL=ClassUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassUtil.js","sourceRoot":"","sources":["../../../src/core/ClassUtil.ts"],"names":[],"mappings":";;;AAAA;IAAA;IA2BA,CAAC;IA1BA;;;OAGG;IACY,wBAAc,GAA5B,UAA6B,GAAW;QACtC,IAAI,MAAM,KAAK,GAAG;YAChB,OAAO,IAAI,CAAC;QACd,IAAI,MAAM,KAAK,GAAG;YAChB,OAAO,IAAI,CAAC;QACd,IAAI,OAAO,KAAK,GAAG;YACjB,OAAO,KAAK,CAAC;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEc,qBAAW,GAA1B,UAA2B,GAAW;QACpC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SAC9B;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEc,qBAAW,GAA1B,UAA2B,GAAW;QACpC,IAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACvF,CAAC;IACH,gBAAC;AAAD,CAAC,AA3BD,IA2BC;AA3BY,8BAAS"}
@@ -0,0 +1,5 @@
1
+ export declare class EOFRuntimeException extends Error {
2
+ readonly _type = "EOFRuntimeException";
3
+ constructor(message?: string);
4
+ static is(e: any): e is EOFRuntimeException;
5
+ }