treedoc 0.3.49 → 0.3.50

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,378 @@
1
+ "use strict";
2
+ var __spreadArrays = (this && this.__spreadArrays) || function () {
3
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
4
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
5
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
6
+ r[k] = a[j];
7
+ return r;
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TDNode = exports.TransientData = exports.TDNodeType = void 0;
11
+ var TDPath_1 = require("./TDPath");
12
+ var StringUtil_1 = require("./core/StringUtil");
13
+ var LangUtil_1 = require("./core/LangUtil");
14
+ var TDNodeProxyHandler_1 = require("./TDNodeProxyHandler");
15
+ var TDNodeType;
16
+ (function (TDNodeType) {
17
+ TDNodeType[TDNodeType["MAP"] = 0] = "MAP";
18
+ TDNodeType[TDNodeType["ARRAY"] = 1] = "ARRAY";
19
+ TDNodeType[TDNodeType["SIMPLE"] = 2] = "SIMPLE";
20
+ })(TDNodeType = exports.TDNodeType || (exports.TDNodeType = {}));
21
+ var KEY_REF = '$ref';
22
+ var TransientData = /** @class */ (function () {
23
+ function TransientData() {
24
+ }
25
+ return TransientData;
26
+ }());
27
+ exports.TransientData = TransientData;
28
+ var TDNode = /** @class */ (function () {
29
+ // Create a root node if parent is undefined
30
+ function TDNode(doc, key) {
31
+ this.doc = doc;
32
+ this.key = key;
33
+ this.type = TDNodeType.SIMPLE;
34
+ /** The value of the node, only available for leave node */
35
+ this.mValue = null;
36
+ /** indicate this node is a deduped Array node for textproto which allows duplicated keys */
37
+ this.deduped = false;
38
+ // transient properties
39
+ this.tData = new TransientData();
40
+ }
41
+ TDNode.prototype.clone = function () {
42
+ var result = new TDNode(this.doc, this.key).setType(this.type).setValue(this.value);
43
+ result.parent = this.parent;
44
+ result.children = this.children;
45
+ result.start = this.start;
46
+ result.end = this.end;
47
+ result.deduped = this.deduped;
48
+ return result;
49
+ };
50
+ TDNode.prototype.cloneOfSimpleType = function (value) { return new TDNode(this.doc, this.key).setParent(this.parent).setType(TDNodeType.SIMPLE).setValue(value); };
51
+ TDNode.prototype.setParent = function (parent) { this.parent = parent; return this.touch(); };
52
+ TDNode.prototype.setKey = function (key) { this.key = key; return this.touch(); };
53
+ TDNode.prototype.setValue = function (val) { this.mValue = val; return this.touch(); };
54
+ Object.defineProperty(TDNode.prototype, "value", {
55
+ get: function () { return this.mValue; },
56
+ set: function (value) { this.mValue = value; },
57
+ enumerable: false,
58
+ configurable: true
59
+ });
60
+ TDNode.prototype.setType = function (type) { this.type = type; return this; };
61
+ TDNode.prototype.setStart = function (start) { this.start = start; return this; };
62
+ TDNode.prototype.setEnd = function (end) { this.end = end; return this; };
63
+ TDNode.prototype.createChild = function (name) {
64
+ var childIndex = this.indexOf(name);
65
+ if (childIndex < 0) {
66
+ var cnode = new TDNode(this.doc, name);
67
+ this.addChild(cnode);
68
+ return cnode;
69
+ }
70
+ // special handling for textproto due to its bad design that allows duplicated keys
71
+ var existNode = this.children[childIndex].clone();
72
+ if (!existNode.deduped) {
73
+ var listNode = new TDNode(this.doc, name);
74
+ listNode.parent = this;
75
+ listNode.deduped = true;
76
+ listNode.type = TDNodeType.ARRAY;
77
+ this.children[childIndex] = listNode;
78
+ existNode.key = '0';
79
+ listNode.addChild(existNode);
80
+ listNode.start = existNode.start; // Reuse first node's start and length
81
+ listNode.end = existNode.end;
82
+ existNode = listNode;
83
+ }
84
+ return existNode.createChild();
85
+ };
86
+ TDNode.prototype.addChild = function (node) {
87
+ if (!this.children)
88
+ this.children = [];
89
+ node.parent = this;
90
+ node.doc = this.doc;
91
+ if (node.key == null) // Assume it's array element
92
+ node.key = "" + this.getChildrenSize();
93
+ this.children.push(node);
94
+ if (this.tData.nameIndex != null)
95
+ this.tData.nameIndex.set(node.key, this.children.length - 1);
96
+ else if (this.children.length > TDNode.SIZE_TO_INIT_NAME_INDEX)
97
+ this.initNameIndex();
98
+ return this.touch();
99
+ };
100
+ TDNode.prototype.initNameIndex = function () {
101
+ this.tData.nameIndex = new Map();
102
+ for (var i = 0; i < this.children.length; i++) {
103
+ var child = this.children[i];
104
+ if (child.key != null)
105
+ this.tData.nameIndex.set(child.key, i);
106
+ }
107
+ };
108
+ TDNode.prototype.getChild = function (name) {
109
+ if (typeof name === 'string')
110
+ name = this.indexOf(name);
111
+ return this.hasChildren() && name >= 0 ? this.children[name] : null;
112
+ };
113
+ TDNode.prototype.indexOf = function (name) {
114
+ if (this.tData.nameIndex != null)
115
+ return LangUtil_1.LangUtil.orElse(this.tData.nameIndex.get(name), -1);
116
+ // VUETIPS: When VueJS instrument this object, it will generate getter to register the dep-graph.
117
+ // Every call to getter could be very heavy if the number of children is huge e.g. > 10000.
118
+ // If we put the this.children inside for loop, it will cause O(n^2) problem.
119
+ // so we have to cache it outside the for loop.
120
+ // Relevant code: reactiveGetter (vue.runtime.esm.js?2b0e:1031)
121
+ var children = this.children;
122
+ if (!children || name == null)
123
+ return -1;
124
+ for (var i = 0; i < children.length; i++)
125
+ if (name === children[i].key)
126
+ return i;
127
+ return -1;
128
+ };
129
+ TDNode.prototype.getChildValue = function (name) {
130
+ var cn = this.getChild(name);
131
+ return cn == null ? null : cn.value;
132
+ };
133
+ TDNode.prototype.hasChildren = function () {
134
+ return this.children && this.children.length > 0;
135
+ };
136
+ TDNode.prototype.getChildrenSize = function () {
137
+ return !this.children ? 0 : this.children.length;
138
+ };
139
+ TDNode.prototype.getValueByPath = function (path) {
140
+ var cn = this.getByPath(path);
141
+ return cn && cn.value;
142
+ };
143
+ /** If noNull is true, it will return the last matched node */
144
+ TDNode.prototype.getByPath = function (path, noNull, idx) {
145
+ if (noNull === void 0) { noNull = false; }
146
+ if (idx === void 0) { idx = 0; }
147
+ if (!(path instanceof TDPath_1.TDPath))
148
+ path = TDPath_1.TDPath.parse(path);
149
+ if (idx === path.parts.length)
150
+ return this;
151
+ var next = this.getNextNode(path.parts[idx]);
152
+ if (next == null)
153
+ return noNull ? this : null;
154
+ return next.getByPath(path, noNull, idx + 1);
155
+ };
156
+ TDNode.prototype.getNextNode = function (part) {
157
+ switch (part.type) {
158
+ case TDPath_1.PathPartType.ROOT:
159
+ return this.doc.root;
160
+ case TDPath_1.PathPartType.CHILD_OR_ID:
161
+ return this.getChild(part.key) || this.doc.idMap[part.id];
162
+ case TDPath_1.PathPartType.RELATIVE:
163
+ return this.getAncestor(part.level);
164
+ case TDPath_1.PathPartType.CHILD:
165
+ return this.getChild(part.key);
166
+ default:
167
+ return null; // Impossible
168
+ }
169
+ };
170
+ TDNode.prototype.getAncestor = function (level) {
171
+ var result = this;
172
+ for (var i = 0; i < level && result != null; i++, result = result.parent || null)
173
+ ;
174
+ return result;
175
+ };
176
+ TDNode.prototype.foreach = function (action) {
177
+ action(this);
178
+ if (this.children != null)
179
+ this.children.forEach(function (n) { return n.foreach(action); });
180
+ return this;
181
+ };
182
+ TDNode.prototype.isRoot = function () {
183
+ return !this.parent;
184
+ };
185
+ /** JS specific logic */
186
+ TDNode.prototype.toObject = function (includeTdNode, useCache) {
187
+ if (includeTdNode === void 0) { includeTdNode = false; }
188
+ if (useCache === void 0) { useCache = true; }
189
+ if (this.tData.obj !== undefined && useCache)
190
+ return this.tData.obj;
191
+ switch (this.type) {
192
+ case TDNodeType.SIMPLE:
193
+ return this.value;
194
+ case TDNodeType.MAP: {
195
+ var result = includeTdNode ? { $$tdNode: this } : {};
196
+ if (useCache)
197
+ this.tData.obj = result;
198
+ return this.toObjectMap(result, includeTdNode);
199
+ }
200
+ case TDNodeType.ARRAY: {
201
+ var result_1 = [];
202
+ if (useCache)
203
+ this.tData.obj = result_1;
204
+ if (includeTdNode)
205
+ result_1.$$tdNode = this;
206
+ if (this.children)
207
+ this.children.forEach(function (c) { return result_1.push(c.toObject(includeTdNode)); });
208
+ return result_1;
209
+ }
210
+ default:
211
+ throw new Error('Unknown type');
212
+ }
213
+ };
214
+ TDNode.prototype.toObjectMap = function (result, includeTdNode) {
215
+ var _a;
216
+ var refVal = this.getChildValue(KEY_REF);
217
+ if (typeof refVal === 'string') {
218
+ var target = this.getByPath(refVal);
219
+ if (target !== null)
220
+ return target.toObject(includeTdNode);
221
+ console.warn("Reference is not found: ref:" + refVal + "; current Node:" + this.pathAsString);
222
+ }
223
+ (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (c) { return c.key && (result[c.key] = c.toObject(includeTdNode)); });
224
+ return result;
225
+ };
226
+ TDNode.prototype.toProxy = function (useCache) {
227
+ if (useCache === void 0) { useCache = true; }
228
+ if (useCache && this.tData.proxy)
229
+ return this.tData.proxy;
230
+ var res = new Proxy(this, new TDNodeProxyHandler_1.TDNodeProxyHandler(useCache));
231
+ // res.toString = this.toString; // Without this, the proxy.toString will return
232
+ if (useCache)
233
+ this.tData.proxy = res;
234
+ return res;
235
+ };
236
+ Object.defineProperty(TDNode.prototype, "pathAsString", {
237
+ get: function () {
238
+ return '/' + this.path.join('/');
239
+ },
240
+ enumerable: false,
241
+ configurable: true
242
+ });
243
+ Object.defineProperty(TDNode.prototype, "path", {
244
+ get: function () {
245
+ return this.parent ? __spreadArrays(this.parent.path, [this.key]) : [];
246
+ },
247
+ enumerable: false,
248
+ configurable: true
249
+ });
250
+ TDNode.prototype.isLeaf = function () {
251
+ return this.getChildrenSize() === 0;
252
+ };
253
+ TDNode.prototype.touch = function () {
254
+ this.tData.hash = undefined;
255
+ this.tData.str = undefined;
256
+ this.tData.proxy = undefined;
257
+ this.tData.obj = undefined;
258
+ if (this.parent != null)
259
+ this.parent.touch();
260
+ return this;
261
+ };
262
+ TDNode.prototype.toString = function () {
263
+ if (this.tData.str === undefined)
264
+ this.tData.str = this.toStringInternal('', false);
265
+ return this.tData.str;
266
+ };
267
+ /** method specific for JSON.stringify() */
268
+ TDNode.prototype.toJSON = function () { return this.toStringInternal('', false); };
269
+ TDNode.prototype.toStringInternal = function (sb, includeRootKey, includeReservedKeys, limit) {
270
+ if (includeRootKey === void 0) { includeRootKey = true; }
271
+ if (includeReservedKeys === void 0) { includeReservedKeys = true; }
272
+ if (limit === void 0) { limit = 100000; }
273
+ if (this.parent != null && this.parent.type === TDNodeType.MAP && includeRootKey)
274
+ sb += this.key + ': ';
275
+ if (this.value !== null && this.value !== undefined) {
276
+ if (typeof this.value !== 'string' || !includeRootKey) {
277
+ sb += this.value;
278
+ }
279
+ else {
280
+ var str = StringUtil_1.StringUtil.cEscape(this.value, '\'');
281
+ var remainLen = limit - sb.length;
282
+ if (str.length > remainLen)
283
+ str = str.substring(0, remainLen) + "...";
284
+ sb += '\'' + str + '\'';
285
+ }
286
+ }
287
+ if (this.children == null)
288
+ return sb;
289
+ sb += this.type === TDNodeType.ARRAY ? '[' : '{';
290
+ for (var _i = 0, _a = this.children; _i < _a.length; _i++) {
291
+ var n = _a[_i];
292
+ if (!includeReservedKeys && n.key && n.key.startsWith("$"))
293
+ continue;
294
+ if (sb.length > limit) {
295
+ sb += '...';
296
+ break;
297
+ }
298
+ sb = n.toStringInternal(sb, true, includeReservedKeys, limit);
299
+ if (n !== this.children.slice(-1)[0])
300
+ sb += ", ";
301
+ }
302
+ sb += this.type === TDNodeType.ARRAY ? ']' : '}';
303
+ return sb;
304
+ };
305
+ TDNode.prototype.childrenValueAsList = function () {
306
+ return !this.children ? [] : this.children.map(function (c) { return c.value || c; });
307
+ };
308
+ TDNode.prototype.childrenValueAsListOfList = function () {
309
+ return !this.children ? [] : this.children.map(function (c) { return c.childrenValueAsList(); });
310
+ };
311
+ TDNode.prototype.childrenValueAsListWithKeys = function (keys, target) {
312
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
313
+ var k = keys_1[_i];
314
+ if (k === TDNode.COLUMN_KEY)
315
+ continue;
316
+ if (k === TDNode.COLUMN_VALUE && this.type === TDNodeType.SIMPLE)
317
+ target.push(this.value);
318
+ else {
319
+ var c = this.getChild(k);
320
+ target.push((c === null || c === void 0 ? void 0 : c.value) || c);
321
+ }
322
+ }
323
+ return target;
324
+ };
325
+ TDNode.prototype.childrenValueAsListOfListWithKeys = function (keys) {
326
+ return !this.children ? [] :
327
+ this.children.map(function (c) { return c.childrenValueAsListWithKeys(keys, keys[0] === TDNode.COLUMN_KEY ? [c.key] : []); });
328
+ };
329
+ /** Get union of keys for all children, it's used for represent children in a table view */
330
+ TDNode.prototype.getChildrenKeys = function () {
331
+ var result = [];
332
+ var keySet = new Set();
333
+ if (this.type === TDNodeType.SIMPLE || !this.children)
334
+ return result;
335
+ // Add the key column
336
+ result.push(TDNode.COLUMN_KEY);
337
+ keySet.add(TDNode.COLUMN_KEY);
338
+ var hasValue = false;
339
+ for (var _i = 0, _a = this.children; _i < _a.length; _i++) {
340
+ var c = _a[_i];
341
+ if (c.value != null)
342
+ hasValue = true;
343
+ if (c.children)
344
+ for (var _b = 0, _c = c.children; _b < _c.length; _b++) {
345
+ var cc = _c[_b];
346
+ if (!keySet.has(cc.key)) {
347
+ result.push(cc.key);
348
+ keySet.add(cc.key);
349
+ }
350
+ }
351
+ }
352
+ if (hasValue)
353
+ result.splice(1, 0, TDNode.COLUMN_VALUE);
354
+ return result;
355
+ };
356
+ // JS Specific
357
+ TDNode.prototype.freeze = function () {
358
+ var children = this.children;
359
+ if (children) {
360
+ for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
361
+ var c = children_1[_i];
362
+ c.freeze();
363
+ }
364
+ }
365
+ Object.freeze(this.start);
366
+ Object.freeze(this.end);
367
+ Object.freeze(this.doc);
368
+ Object.freeze(this);
369
+ };
370
+ TDNode.SIZE_TO_INIT_NAME_INDEX = 64;
371
+ TDNode.ID_KEY = "$id";
372
+ TDNode.REF_KEY = "$ref";
373
+ TDNode.COLUMN_KEY = "@key";
374
+ TDNode.COLUMN_VALUE = "@value";
375
+ return TDNode;
376
+ }());
377
+ exports.TDNode = TDNode;
378
+ //# sourceMappingURL=TDNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TDNode.js","sourceRoot":"","sources":["../../src/TDNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { TDNode } from ".";
2
+ export declare const TRANSIENT_DATA_KEY_EXTENDED_FIELDS = "$extendedFields";
3
+ export declare class TDNodeProxyHandler<T extends TDNode> implements ProxyHandler<T> {
4
+ useCache: boolean;
5
+ constructor(useCache: boolean);
6
+ get?(target: T, prop: string | symbol, receiver: any): any;
7
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TDNodeProxyHandler = exports.TRANSIENT_DATA_KEY_EXTENDED_FIELDS = void 0;
4
+ var LangUtil_1 = require("./core/LangUtil");
5
+ var TDNode_1 = require("./TDNode");
6
+ var TARGET = "$target";
7
+ var KEY = "$key";
8
+ exports.TRANSIENT_DATA_KEY_EXTENDED_FIELDS = "$extendedFields";
9
+ var TDNodeProxyHandler = /** @class */ (function () {
10
+ function TDNodeProxyHandler(useCache) {
11
+ this.useCache = useCache;
12
+ }
13
+ TDNodeProxyHandler.prototype.get = function (target, prop, receiver) {
14
+ // console.log(`prop: ${prop.toString()}`);
15
+ if (prop === Symbol.toPrimitive) {
16
+ return target.toString();
17
+ }
18
+ if (typeof (prop) !== 'string') {
19
+ console.log("Got unknown symbol prop: " + prop.toString());
20
+ return target[prop];
21
+ }
22
+ // console.log(`get: p=${p}, target=${target.pathAsString}`);
23
+ if (prop === 'length')
24
+ return target.getChildrenSize();
25
+ if (prop === TARGET)
26
+ return target;
27
+ if (prop === KEY)
28
+ return target.key;
29
+ var extendedFields = target.tData[exports.TRANSIENT_DATA_KEY_EXTENDED_FIELDS];
30
+ if (extendedFields && extendedFields[prop])
31
+ return extendedFields[prop](receiver);
32
+ var idx = Number(prop);
33
+ var c = LangUtil_1.LangUtil.isNumber(idx) ? target.getChild(idx) : target.getChild(prop);
34
+ if (c) {
35
+ if (c.type === TDNode_1.TDNodeType.SIMPLE)
36
+ return c.value;
37
+ // TODO: Support reference objects of $ref
38
+ return c.toProxy(this.useCache);
39
+ }
40
+ // Prevent: Function Proxy .toString() Errors
41
+ // https://stackoverflow.com/questions/38259885/function-proxy-tostring-errors
42
+ var res = target[prop];
43
+ // return res;
44
+ // console.log(`prop: ${prop}, res:${res}, typeof res=${typeof res}`);
45
+ return (typeof res === 'function') ? res.bind(target) : res;
46
+ };
47
+ return TDNodeProxyHandler;
48
+ }());
49
+ exports.TDNodeProxyHandler = TDNodeProxyHandler;
50
+ //# sourceMappingURL=TDNodeProxyHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TDNodeProxyHandler.js","sourceRoot":"","sources":["../../src/TDNodeProxyHandler.ts"],"names":[],"mappings":";;;AACA,4CAAiE;AACjE,mCAAsC;AAEtC,IAAM,MAAM,GAAG,SAAS,CAAC;AACzB,IAAM,GAAG,GAAG,MAAM,CAAC;AACN,QAAA,kCAAkC,GAAG,iBAAiB,CAAC;AAEpE;IACE,4BAAmB,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IAAG,CAAC;IAExC,gCAAG,GAAH,UAAK,MAAS,EAAE,IAAqB,EAAE,QAAa;QAClD,2CAA2C;QAE3C,IAAI,IAAI,KAAK,MAAM,CAAC,WAAW,EAAE;YAC/B,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;SAC1B;QAED,IAAI,OAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,8BAA4B,IAAI,CAAC,QAAQ,EAAI,CAAC,CAAC;YAC3D,OAAQ,MAAc,CAAC,IAAI,CAAC,CAAC;SAC9B;QAED,6DAA6D;QAC7D,IAAI,IAAI,KAAK,QAAQ;YACnB,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;QAElC,IAAI,IAAI,KAAK,MAAM;YACjB,OAAO,MAAM,CAAC;QAEhB,IAAI,IAAI,KAAK,GAAG;YACd,OAAO,MAAM,CAAC,GAAG,CAAC;QAEpB,IAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,0CAAkC,CAAmB,CAAC;QAC1F,IAAI,cAAc,IAAI,cAAc,CAAC,IAAI,CAAC;YACxC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,IAAM,CAAC,GAAG,mBAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChF,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAU,CAAC,MAAM;gBAC9B,OAAO,CAAC,CAAC,KAAK,CAAC;YACjB,0CAA0C;YAC1C,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjC;QAED,6CAA6C;QAC7C,8EAA8E;QAC9E,IAAM,GAAG,GAAI,MAAc,CAAC,IAAI,CAAC,CAAC;QAClC,cAAc;QACd,sEAAsE;QACtE,OAAO,CAAC,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IAC7D,CAAC;IAgBH,yBAAC;AAAD,CAAC,AA5DD,IA4DC;AA5DY,gDAAkB"}
@@ -0,0 +1,31 @@
1
+ export declare enum PathPartType {
2
+ ROOT = 0,
3
+ CHILD = 1,
4
+ RELATIVE = 2,
5
+ CHILD_OR_ID = 3
6
+ }
7
+ export declare class Part {
8
+ readonly type: PathPartType;
9
+ key?: string;
10
+ id?: string;
11
+ level?: number;
12
+ constructor(type: PathPartType);
13
+ setKey(key: string): this;
14
+ setId(id: string): this;
15
+ setLevel(level: number): this;
16
+ static ofChildOrId(key: string, id: string): Part;
17
+ static ofChild(key: string): Part;
18
+ static ofRelative(level: number): Part;
19
+ static ofRoot(): Part;
20
+ }
21
+ export declare class TDPath {
22
+ /** The TreeDoc file path or URL, it could absolution or relative */
23
+ docPath: string | null;
24
+ /** The path parts */
25
+ readonly parts: Part[];
26
+ addParts(...part: Part[]): TDPath;
27
+ constructor(
28
+ /** The TreeDoc file path or URL, it could absolution or relative */
29
+ docPath?: string | null);
30
+ static parse(str: string | string[]): TDPath;
31
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TDPath = exports.Part = exports.PathPartType = void 0;
4
+ var PathPartType;
5
+ (function (PathPartType) {
6
+ PathPartType[PathPartType["ROOT"] = 0] = "ROOT";
7
+ PathPartType[PathPartType["CHILD"] = 1] = "CHILD";
8
+ PathPartType[PathPartType["RELATIVE"] = 2] = "RELATIVE";
9
+ PathPartType[PathPartType["CHILD_OR_ID"] = 3] = "CHILD_OR_ID";
10
+ })(PathPartType = exports.PathPartType || (exports.PathPartType = {}));
11
+ var Part = /** @class */ (function () {
12
+ function Part(type) {
13
+ this.type = type;
14
+ }
15
+ Part.prototype.setKey = function (key) {
16
+ this.key = key;
17
+ return this;
18
+ };
19
+ Part.prototype.setId = function (id) {
20
+ this.id = id;
21
+ return this;
22
+ };
23
+ Part.prototype.setLevel = function (level) {
24
+ this.level = level;
25
+ return this;
26
+ };
27
+ Part.ofChildOrId = function (key, id) {
28
+ return new Part(PathPartType.CHILD_OR_ID).setKey(key).setId(id);
29
+ };
30
+ Part.ofChild = function (key) {
31
+ return new Part(PathPartType.CHILD).setKey(key);
32
+ };
33
+ Part.ofRelative = function (level) {
34
+ return new Part(PathPartType.RELATIVE).setLevel(level);
35
+ };
36
+ Part.ofRoot = function () {
37
+ return new Part(PathPartType.ROOT);
38
+ };
39
+ return Part;
40
+ }());
41
+ exports.Part = Part;
42
+ var TDPath = /** @class */ (function () {
43
+ function TDPath(
44
+ /** The TreeDoc file path or URL, it could absolution or relative */
45
+ docPath) {
46
+ if (docPath === void 0) { docPath = null; }
47
+ this.docPath = docPath;
48
+ /** The path parts */
49
+ this.parts = [];
50
+ }
51
+ TDPath.prototype.addParts = function () {
52
+ var _a;
53
+ var part = [];
54
+ for (var _i = 0; _i < arguments.length; _i++) {
55
+ part[_i] = arguments[_i];
56
+ }
57
+ (_a = this.parts).push.apply(_a, part);
58
+ return this;
59
+ };
60
+ TDPath.parse = function (str) {
61
+ if (typeof str === 'string') {
62
+ if (str.length > 1 && str.endsWith('/'))
63
+ str = str.substring(0, str.length - 1);
64
+ str = str.split('/');
65
+ }
66
+ if (str.length === 0)
67
+ return new TDPath().addParts(Part.ofRelative(0));
68
+ var path = new TDPath();
69
+ for (var _i = 0, str_1 = str; _i < str_1.length; _i++) {
70
+ var s = str_1[_i];
71
+ if ('.' === s)
72
+ path.addParts(Part.ofRelative(0));
73
+ else if ('..' === s)
74
+ path.addParts(Part.ofRelative(1));
75
+ else if (s === '' || s === '#')
76
+ path.addParts(Part.ofRoot());
77
+ else if (s.startsWith('#') && s.length > 0)
78
+ path.addParts(Part.ofChildOrId(s, s.substring(1)));
79
+ else
80
+ path.addParts(Part.ofChild(s));
81
+ }
82
+ return path;
83
+ };
84
+ return TDPath;
85
+ }());
86
+ exports.TDPath = TDPath;
87
+ //# sourceMappingURL=TDPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TDPath.js","sourceRoot":"","sources":["../../src/TDPath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { TDNode } from './TDNode';
2
+ export declare class TreeDoc {
3
+ readonly uri: string | null;
4
+ idMap: {
5
+ [key: string]: TDNode;
6
+ };
7
+ root: TDNode;
8
+ constructor(rootKey?: string, uri?: string | null);
9
+ static ofArray(): TreeDoc;
10
+ /** Retrain only the sub-tree under the input node. */
11
+ retain(node: TDNode): this;
12
+ /**
13
+ * Create a TreeDoc with array root node contains the input nodes. This method will mutate the input nodes without
14
+ * copying them. So the original Treedoc and parent associated with nodes will be obsoleted.
15
+ * For idMap merge, all the id will be reassigned as id + "_" + docId to avoid collision.
16
+ */
17
+ static merge(nodes: TDNode[]): TreeDoc;
18
+ /**
19
+ * Build a tree node with exiting node as root node. This method will mutate input node so that the original doc and
20
+ * parent associated with that node will be obsoleted. The that node is still associated with original doc, the original
21
+ * doc will be in invalid state.
22
+ */
23
+ static ofNode(node: TDNode): TreeDoc;
24
+ }
25
+ export declare function TreeDoc_ofArray(): TreeDoc;
26
+ export declare function TreeDoc_merge(nodes: TDNode[]): TreeDoc;
27
+ export declare function TreeDoc_ofNode(node: TDNode): TreeDoc;