pst-extractor 1.9.0 → 1.10.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/dist/ColumnDescriptor.class.d.ts +26 -26
- package/dist/ColumnDescriptor.class.js +51 -51
- package/dist/DescriptorIndexNode.class.d.ts +25 -26
- package/dist/DescriptorIndexNode.class.js +53 -53
- package/dist/LZFu.class.d.ts +11 -12
- package/dist/LZFu.class.js +95 -95
- package/dist/NodeInfo.class.d.ts +33 -33
- package/dist/NodeInfo.class.js +52 -52
- package/dist/NodeMap.class.d.ts +35 -35
- package/dist/NodeMap.class.js +86 -86
- package/dist/OffsetIndexItem.class.d.ts +23 -24
- package/dist/OffsetIndexItem.class.js +45 -45
- package/dist/OutlookProperties.d.ts +275 -275
- package/dist/OutlookProperties.js +281 -281
- package/dist/PSTActivity.class.d.ts +103 -103
- package/dist/PSTActivity.class.js +144 -144
- package/dist/PSTAppointment.class.d.ts +270 -271
- package/dist/PSTAppointment.class.js +376 -376
- package/dist/PSTAttachment.class.d.ts +172 -172
- package/dist/PSTAttachment.class.js +317 -317
- package/dist/PSTContact.class.d.ts +884 -884
- package/dist/PSTContact.class.js +1227 -1227
- package/dist/PSTDescriptorItem.class.d.ts +45 -46
- package/dist/PSTDescriptorItem.class.js +99 -99
- package/dist/PSTFile.class.d.ts +215 -216
- package/dist/PSTFile.class.js +818 -818
- package/dist/PSTFolder.class.d.ts +129 -129
- package/dist/PSTFolder.class.js +318 -310
- package/dist/PSTMessage.class.d.ts +788 -789
- package/dist/PSTMessage.class.js +1321 -1321
- package/dist/PSTMessageStore.class.d.ts +13 -13
- package/dist/PSTMessageStore.class.js +17 -17
- package/dist/PSTNodeInputStream.class.d.ts +122 -123
- package/dist/PSTNodeInputStream.class.js +514 -514
- package/dist/PSTObject.class.d.ts +133 -134
- package/dist/PSTObject.class.js +326 -326
- package/dist/PSTRecipient.class.d.ts +65 -65
- package/dist/PSTRecipient.class.js +103 -103
- package/dist/PSTTable.class.d.ts +52 -52
- package/dist/PSTTable.class.js +175 -175
- package/dist/PSTTable7C.class.d.ts +45 -45
- package/dist/PSTTable7C.class.js +281 -281
- package/dist/PSTTableBC.class.d.ts +31 -31
- package/dist/PSTTableBC.class.js +111 -111
- package/dist/PSTTableItem.class.d.ts +47 -48
- package/dist/PSTTableItem.class.js +124 -124
- package/dist/PSTTask.class.d.ts +146 -146
- package/dist/PSTTask.class.js +205 -205
- package/dist/PSTUtil.class.d.ts +134 -135
- package/dist/PSTUtil.class.js +795 -795
- package/dist/RecurrencePattern.class.d.ts +49 -50
- package/dist/RecurrencePattern.class.js +120 -120
- package/dist/index.d.ts +6 -6
- package/dist/index.js +15 -15
- package/example/package.json +6 -6
- package/example/yarn.lock +95 -44
- package/junit.xml +68 -68
- package/package.json +26 -26
- package/readme.md +1 -3
package/dist/PSTTable.class.js
CHANGED
|
@@ -1,175 +1,175 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.PSTTable = void 0;
|
|
7
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
|
-
const long_1 = __importDefault(require("long"));
|
|
9
|
-
const NodeInfo_class_1 = require("./NodeInfo.class");
|
|
10
|
-
const PSTNodeInputStream_class_1 = require("./PSTNodeInputStream.class");
|
|
11
|
-
// The PST Table is the workhorse of the whole system.
|
|
12
|
-
// It allows for an item to be read and broken down into the individual properties that it consists of.
|
|
13
|
-
// For most PST Objects, it appears that only 7c and bc table types are used.
|
|
14
|
-
class PSTTable {
|
|
15
|
-
/**
|
|
16
|
-
* Creates an instance of PSTTable. The PST Table is the workhorse of the whole system.
|
|
17
|
-
* It allows for an item to be read and broken down into the individual properties that it consists of.
|
|
18
|
-
* For most PST Objects, it appears that only 7C and BC table types are used.
|
|
19
|
-
* @param {PSTNodeInputStream} pstNodeInputStream
|
|
20
|
-
* @param {Map<number, PSTDescriptorItem>} subNodeDescriptorItems
|
|
21
|
-
* @memberof PSTTable
|
|
22
|
-
*/
|
|
23
|
-
constructor(pstNodeInputStream, subNodeDescriptorItems) {
|
|
24
|
-
this.numberOfKeys = 0;
|
|
25
|
-
this.numberOfIndexLevels = 0;
|
|
26
|
-
this.subNodeDescriptorItems = new Map();
|
|
27
|
-
if (subNodeDescriptorItems) {
|
|
28
|
-
this.subNodeDescriptorItems = subNodeDescriptorItems;
|
|
29
|
-
}
|
|
30
|
-
this.pstNodeInputStream = pstNodeInputStream;
|
|
31
|
-
this.arrayBlocks = pstNodeInputStream.getBlockOffsets();
|
|
32
|
-
// the next two bytes should be the table type (bSig)
|
|
33
|
-
// 0xEC is HN (Heap-on-Node)
|
|
34
|
-
pstNodeInputStream.seek(long_1.default.ZERO);
|
|
35
|
-
const headdata = Buffer.alloc(4);
|
|
36
|
-
pstNodeInputStream.readCompletely(headdata);
|
|
37
|
-
this.tableTypeByte = headdata[3];
|
|
38
|
-
switch (this.tableTypeByte // bClientSig
|
|
39
|
-
) {
|
|
40
|
-
case 0x7c: // Table Context (TC/HN)
|
|
41
|
-
this.tableType = '7c';
|
|
42
|
-
break;
|
|
43
|
-
case 188:
|
|
44
|
-
this.tableType = 'bc'; // Property Context (PC/BTH)
|
|
45
|
-
break;
|
|
46
|
-
default:
|
|
47
|
-
throw new Error('PSTTable::constructor Unable to parse table, bad table type. Unknown identifier: 0x' +
|
|
48
|
-
headdata[3].toString(16));
|
|
49
|
-
}
|
|
50
|
-
this.hidUserRoot = pstNodeInputStream
|
|
51
|
-
.seekAndReadLong(long_1.default.fromValue(4), 4)
|
|
52
|
-
.toNumber(); // hidUserRoot
|
|
53
|
-
// all tables should have a BTHHEADER at hnid == 0x20
|
|
54
|
-
const headerNodeInfo = this.getNodeInfo(0x20);
|
|
55
|
-
if (!headerNodeInfo) {
|
|
56
|
-
throw new Error('PSTTable::constructor headerNodeInfo is null');
|
|
57
|
-
}
|
|
58
|
-
headerNodeInfo.pstNodeInputStream.seek(long_1.default.fromValue(headerNodeInfo.startOffset));
|
|
59
|
-
let headerByte = headerNodeInfo.pstNodeInputStream.read() & 0xff;
|
|
60
|
-
if (headerByte != 0xb5) {
|
|
61
|
-
headerNodeInfo.pstNodeInputStream.seek(long_1.default.fromValue(headerNodeInfo.startOffset));
|
|
62
|
-
headerByte = headerNodeInfo.pstNodeInputStream.read() & 0xff;
|
|
63
|
-
headerNodeInfo.pstNodeInputStream.seek(long_1.default.fromValue(headerNodeInfo.startOffset));
|
|
64
|
-
const tmp = Buffer.alloc(1024);
|
|
65
|
-
headerNodeInfo.pstNodeInputStream.readCompletely(tmp);
|
|
66
|
-
throw new Error("PSTTable::constructor Unable to parse table, can't find BTHHEADER header information: " +
|
|
67
|
-
headerByte);
|
|
68
|
-
}
|
|
69
|
-
this.sizeOfItemKey = headerNodeInfo.pstNodeInputStream.read() & 0xff; // Size of key in key table
|
|
70
|
-
this.sizeOfItemValue = headerNodeInfo.pstNodeInputStream.read() & 0xff; // Size of value in key table
|
|
71
|
-
this.numberOfIndexLevels = headerNodeInfo.pstNodeInputStream.read() & 0xff;
|
|
72
|
-
this.hidRoot = headerNodeInfo
|
|
73
|
-
.seekAndReadLong(long_1.default.fromValue(4), 4)
|
|
74
|
-
.toNumber();
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Release data.
|
|
78
|
-
* @protected
|
|
79
|
-
* @memberof PSTTable
|
|
80
|
-
*/
|
|
81
|
-
releaseRawData() {
|
|
82
|
-
this.subNodeDescriptorItems.clear();
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Number of items in table.
|
|
86
|
-
* @readonly
|
|
87
|
-
* @type {number}
|
|
88
|
-
* @memberof PSTTable
|
|
89
|
-
*/
|
|
90
|
-
get rowCount() {
|
|
91
|
-
return this.numberOfKeys;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Get information for the node in the b-tree.
|
|
95
|
-
* @param {number} hnid
|
|
96
|
-
* @returns {NodeInfo}
|
|
97
|
-
* @memberof PSTTable
|
|
98
|
-
*/
|
|
99
|
-
getNodeInfo(hnid) {
|
|
100
|
-
// Zero-length node?
|
|
101
|
-
if (hnid == 0) {
|
|
102
|
-
return new NodeInfo_class_1.NodeInfo(0, 0, this.pstNodeInputStream);
|
|
103
|
-
}
|
|
104
|
-
// Is it a subnode ID?
|
|
105
|
-
if (this.subNodeDescriptorItems && this.subNodeDescriptorItems.has(hnid)) {
|
|
106
|
-
const item = this.subNodeDescriptorItems.get(hnid);
|
|
107
|
-
let subNodeInfo = null;
|
|
108
|
-
try {
|
|
109
|
-
const subNodeIn = new PSTNodeInputStream_class_1.PSTNodeInputStream(this.pstNodeInputStream.pstFile, item);
|
|
110
|
-
subNodeInfo = new NodeInfo_class_1.NodeInfo(0, subNodeIn.length.toNumber(), subNodeIn);
|
|
111
|
-
}
|
|
112
|
-
catch (err) {
|
|
113
|
-
throw new Error('PSTTable::getNodeInfo: IOException reading subNode:\n' + err);
|
|
114
|
-
}
|
|
115
|
-
// return new NodeInfo(0, data.length, data);
|
|
116
|
-
return subNodeInfo;
|
|
117
|
-
}
|
|
118
|
-
if ((hnid & 0x1f) != 0) {
|
|
119
|
-
// Some kind of external node
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
|
-
const whichBlock = hnid >>> 16;
|
|
123
|
-
if (whichBlock > this.arrayBlocks.length) {
|
|
124
|
-
throw new Error("PSTTable::getNodeInfo: block doesn't exist: " +
|
|
125
|
-
hnid +
|
|
126
|
-
', ' +
|
|
127
|
-
whichBlock +
|
|
128
|
-
', ' +
|
|
129
|
-
this.arrayBlocks.length);
|
|
130
|
-
}
|
|
131
|
-
// A normal node in a local heap
|
|
132
|
-
const index = (hnid & 0xffff) >> 5;
|
|
133
|
-
let blockOffset = 0;
|
|
134
|
-
if (whichBlock > 0) {
|
|
135
|
-
blockOffset = this.arrayBlocks[whichBlock - 1].toNumber();
|
|
136
|
-
}
|
|
137
|
-
// Get offset of HN page map
|
|
138
|
-
let iHeapNodePageMap = this.pstNodeInputStream
|
|
139
|
-
.seekAndReadLong(long_1.default.fromValue(blockOffset), 2)
|
|
140
|
-
.toNumber() + blockOffset;
|
|
141
|
-
const cAlloc = this.pstNodeInputStream
|
|
142
|
-
.seekAndReadLong(long_1.default.fromValue(iHeapNodePageMap), 2)
|
|
143
|
-
.toNumber();
|
|
144
|
-
if (index >= cAlloc + 1) {
|
|
145
|
-
throw new Error("PSTTable::getNodeInfo: node index doesn't exist! nid = " + hnid);
|
|
146
|
-
}
|
|
147
|
-
iHeapNodePageMap += 2 * index + 2;
|
|
148
|
-
const start = this.pstNodeInputStream
|
|
149
|
-
.seekAndReadLong(long_1.default.fromValue(iHeapNodePageMap), 2)
|
|
150
|
-
.toNumber() + blockOffset;
|
|
151
|
-
const end = this.pstNodeInputStream
|
|
152
|
-
.seekAndReadLong(long_1.default.fromValue(iHeapNodePageMap + 2), 2)
|
|
153
|
-
.toNumber() + blockOffset;
|
|
154
|
-
return new NodeInfo_class_1.NodeInfo(start, end, this.pstNodeInputStream);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* JSON stringify the object properties.
|
|
158
|
-
* @returns {string}
|
|
159
|
-
* @memberof PSTTable
|
|
160
|
-
*/
|
|
161
|
-
toJSON() {
|
|
162
|
-
const clone = Object.assign({
|
|
163
|
-
tableType: this.tableType,
|
|
164
|
-
tableTypeByte: this.tableTypeByte,
|
|
165
|
-
hidUserRoot: this.hidUserRoot,
|
|
166
|
-
sizeOfItemKey: this.sizeOfItemKey,
|
|
167
|
-
sizeOfItemValue: this.sizeOfItemValue,
|
|
168
|
-
hidRoot: this.hidRoot,
|
|
169
|
-
numberOfKeys: this.numberOfKeys,
|
|
170
|
-
numberOfIndexLevels: this.numberOfIndexLevels,
|
|
171
|
-
}, this);
|
|
172
|
-
return clone;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
exports.PSTTable = PSTTable;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PSTTable = void 0;
|
|
7
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
|
+
const long_1 = __importDefault(require("long"));
|
|
9
|
+
const NodeInfo_class_1 = require("./NodeInfo.class");
|
|
10
|
+
const PSTNodeInputStream_class_1 = require("./PSTNodeInputStream.class");
|
|
11
|
+
// The PST Table is the workhorse of the whole system.
|
|
12
|
+
// It allows for an item to be read and broken down into the individual properties that it consists of.
|
|
13
|
+
// For most PST Objects, it appears that only 7c and bc table types are used.
|
|
14
|
+
class PSTTable {
|
|
15
|
+
/**
|
|
16
|
+
* Creates an instance of PSTTable. The PST Table is the workhorse of the whole system.
|
|
17
|
+
* It allows for an item to be read and broken down into the individual properties that it consists of.
|
|
18
|
+
* For most PST Objects, it appears that only 7C and BC table types are used.
|
|
19
|
+
* @param {PSTNodeInputStream} pstNodeInputStream
|
|
20
|
+
* @param {Map<number, PSTDescriptorItem>} subNodeDescriptorItems
|
|
21
|
+
* @memberof PSTTable
|
|
22
|
+
*/
|
|
23
|
+
constructor(pstNodeInputStream, subNodeDescriptorItems) {
|
|
24
|
+
this.numberOfKeys = 0;
|
|
25
|
+
this.numberOfIndexLevels = 0;
|
|
26
|
+
this.subNodeDescriptorItems = new Map();
|
|
27
|
+
if (subNodeDescriptorItems) {
|
|
28
|
+
this.subNodeDescriptorItems = subNodeDescriptorItems;
|
|
29
|
+
}
|
|
30
|
+
this.pstNodeInputStream = pstNodeInputStream;
|
|
31
|
+
this.arrayBlocks = pstNodeInputStream.getBlockOffsets();
|
|
32
|
+
// the next two bytes should be the table type (bSig)
|
|
33
|
+
// 0xEC is HN (Heap-on-Node)
|
|
34
|
+
pstNodeInputStream.seek(long_1.default.ZERO);
|
|
35
|
+
const headdata = Buffer.alloc(4);
|
|
36
|
+
pstNodeInputStream.readCompletely(headdata);
|
|
37
|
+
this.tableTypeByte = headdata[3];
|
|
38
|
+
switch (this.tableTypeByte // bClientSig
|
|
39
|
+
) {
|
|
40
|
+
case 0x7c: // Table Context (TC/HN)
|
|
41
|
+
this.tableType = '7c';
|
|
42
|
+
break;
|
|
43
|
+
case 188:
|
|
44
|
+
this.tableType = 'bc'; // Property Context (PC/BTH)
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
throw new Error('PSTTable::constructor Unable to parse table, bad table type. Unknown identifier: 0x' +
|
|
48
|
+
headdata[3].toString(16));
|
|
49
|
+
}
|
|
50
|
+
this.hidUserRoot = pstNodeInputStream
|
|
51
|
+
.seekAndReadLong(long_1.default.fromValue(4), 4)
|
|
52
|
+
.toNumber(); // hidUserRoot
|
|
53
|
+
// all tables should have a BTHHEADER at hnid == 0x20
|
|
54
|
+
const headerNodeInfo = this.getNodeInfo(0x20);
|
|
55
|
+
if (!headerNodeInfo) {
|
|
56
|
+
throw new Error('PSTTable::constructor headerNodeInfo is null');
|
|
57
|
+
}
|
|
58
|
+
headerNodeInfo.pstNodeInputStream.seek(long_1.default.fromValue(headerNodeInfo.startOffset));
|
|
59
|
+
let headerByte = headerNodeInfo.pstNodeInputStream.read() & 0xff;
|
|
60
|
+
if (headerByte != 0xb5) {
|
|
61
|
+
headerNodeInfo.pstNodeInputStream.seek(long_1.default.fromValue(headerNodeInfo.startOffset));
|
|
62
|
+
headerByte = headerNodeInfo.pstNodeInputStream.read() & 0xff;
|
|
63
|
+
headerNodeInfo.pstNodeInputStream.seek(long_1.default.fromValue(headerNodeInfo.startOffset));
|
|
64
|
+
const tmp = Buffer.alloc(1024);
|
|
65
|
+
headerNodeInfo.pstNodeInputStream.readCompletely(tmp);
|
|
66
|
+
throw new Error("PSTTable::constructor Unable to parse table, can't find BTHHEADER header information: " +
|
|
67
|
+
headerByte);
|
|
68
|
+
}
|
|
69
|
+
this.sizeOfItemKey = headerNodeInfo.pstNodeInputStream.read() & 0xff; // Size of key in key table
|
|
70
|
+
this.sizeOfItemValue = headerNodeInfo.pstNodeInputStream.read() & 0xff; // Size of value in key table
|
|
71
|
+
this.numberOfIndexLevels = headerNodeInfo.pstNodeInputStream.read() & 0xff;
|
|
72
|
+
this.hidRoot = headerNodeInfo
|
|
73
|
+
.seekAndReadLong(long_1.default.fromValue(4), 4)
|
|
74
|
+
.toNumber();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Release data.
|
|
78
|
+
* @protected
|
|
79
|
+
* @memberof PSTTable
|
|
80
|
+
*/
|
|
81
|
+
releaseRawData() {
|
|
82
|
+
this.subNodeDescriptorItems.clear();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Number of items in table.
|
|
86
|
+
* @readonly
|
|
87
|
+
* @type {number}
|
|
88
|
+
* @memberof PSTTable
|
|
89
|
+
*/
|
|
90
|
+
get rowCount() {
|
|
91
|
+
return this.numberOfKeys;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get information for the node in the b-tree.
|
|
95
|
+
* @param {number} hnid
|
|
96
|
+
* @returns {NodeInfo}
|
|
97
|
+
* @memberof PSTTable
|
|
98
|
+
*/
|
|
99
|
+
getNodeInfo(hnid) {
|
|
100
|
+
// Zero-length node?
|
|
101
|
+
if (hnid == 0) {
|
|
102
|
+
return new NodeInfo_class_1.NodeInfo(0, 0, this.pstNodeInputStream);
|
|
103
|
+
}
|
|
104
|
+
// Is it a subnode ID?
|
|
105
|
+
if (this.subNodeDescriptorItems && this.subNodeDescriptorItems.has(hnid)) {
|
|
106
|
+
const item = this.subNodeDescriptorItems.get(hnid);
|
|
107
|
+
let subNodeInfo = null;
|
|
108
|
+
try {
|
|
109
|
+
const subNodeIn = new PSTNodeInputStream_class_1.PSTNodeInputStream(this.pstNodeInputStream.pstFile, item);
|
|
110
|
+
subNodeInfo = new NodeInfo_class_1.NodeInfo(0, subNodeIn.length.toNumber(), subNodeIn);
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
throw new Error('PSTTable::getNodeInfo: IOException reading subNode:\n' + err);
|
|
114
|
+
}
|
|
115
|
+
// return new NodeInfo(0, data.length, data);
|
|
116
|
+
return subNodeInfo;
|
|
117
|
+
}
|
|
118
|
+
if ((hnid & 0x1f) != 0) {
|
|
119
|
+
// Some kind of external node
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
const whichBlock = hnid >>> 16;
|
|
123
|
+
if (whichBlock > this.arrayBlocks.length) {
|
|
124
|
+
throw new Error("PSTTable::getNodeInfo: block doesn't exist: " +
|
|
125
|
+
hnid +
|
|
126
|
+
', ' +
|
|
127
|
+
whichBlock +
|
|
128
|
+
', ' +
|
|
129
|
+
this.arrayBlocks.length);
|
|
130
|
+
}
|
|
131
|
+
// A normal node in a local heap
|
|
132
|
+
const index = (hnid & 0xffff) >> 5;
|
|
133
|
+
let blockOffset = 0;
|
|
134
|
+
if (whichBlock > 0) {
|
|
135
|
+
blockOffset = this.arrayBlocks[whichBlock - 1].toNumber();
|
|
136
|
+
}
|
|
137
|
+
// Get offset of HN page map
|
|
138
|
+
let iHeapNodePageMap = this.pstNodeInputStream
|
|
139
|
+
.seekAndReadLong(long_1.default.fromValue(blockOffset), 2)
|
|
140
|
+
.toNumber() + blockOffset;
|
|
141
|
+
const cAlloc = this.pstNodeInputStream
|
|
142
|
+
.seekAndReadLong(long_1.default.fromValue(iHeapNodePageMap), 2)
|
|
143
|
+
.toNumber();
|
|
144
|
+
if (index >= cAlloc + 1) {
|
|
145
|
+
throw new Error("PSTTable::getNodeInfo: node index doesn't exist! nid = " + hnid);
|
|
146
|
+
}
|
|
147
|
+
iHeapNodePageMap += 2 * index + 2;
|
|
148
|
+
const start = this.pstNodeInputStream
|
|
149
|
+
.seekAndReadLong(long_1.default.fromValue(iHeapNodePageMap), 2)
|
|
150
|
+
.toNumber() + blockOffset;
|
|
151
|
+
const end = this.pstNodeInputStream
|
|
152
|
+
.seekAndReadLong(long_1.default.fromValue(iHeapNodePageMap + 2), 2)
|
|
153
|
+
.toNumber() + blockOffset;
|
|
154
|
+
return new NodeInfo_class_1.NodeInfo(start, end, this.pstNodeInputStream);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* JSON stringify the object properties.
|
|
158
|
+
* @returns {string}
|
|
159
|
+
* @memberof PSTTable
|
|
160
|
+
*/
|
|
161
|
+
toJSON() {
|
|
162
|
+
const clone = Object.assign({
|
|
163
|
+
tableType: this.tableType,
|
|
164
|
+
tableTypeByte: this.tableTypeByte,
|
|
165
|
+
hidUserRoot: this.hidUserRoot,
|
|
166
|
+
sizeOfItemKey: this.sizeOfItemKey,
|
|
167
|
+
sizeOfItemValue: this.sizeOfItemValue,
|
|
168
|
+
hidRoot: this.hidRoot,
|
|
169
|
+
numberOfKeys: this.numberOfKeys,
|
|
170
|
+
numberOfIndexLevels: this.numberOfIndexLevels,
|
|
171
|
+
}, this);
|
|
172
|
+
return clone;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.PSTTable = PSTTable;
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
import { PSTDescriptorItem } from './PSTDescriptorItem.class';
|
|
2
|
-
import { PSTNodeInputStream } from './PSTNodeInputStream.class';
|
|
3
|
-
import { PSTTable } from './PSTTable.class';
|
|
4
|
-
import { PSTTableItem } from './PSTTableItem.class';
|
|
5
|
-
export declare class PSTTable7C extends PSTTable {
|
|
6
|
-
private items;
|
|
7
|
-
private numberOfDataSets;
|
|
8
|
-
private BLOCK_SIZE;
|
|
9
|
-
private numColumns;
|
|
10
|
-
private TCI_bm;
|
|
11
|
-
private TCI_1b;
|
|
12
|
-
private columnDescriptors;
|
|
13
|
-
private overrideCol;
|
|
14
|
-
private rowNodeInfo;
|
|
15
|
-
private keyMap;
|
|
16
|
-
/**
|
|
17
|
-
* Creates an instance of PSTTable7C ("Table Context").
|
|
18
|
-
* @param {PSTNodeInputStream} pstNodeInputStream
|
|
19
|
-
* @param {Map<number, PSTDescriptorItem>} subNodeDescriptorItems
|
|
20
|
-
* @param {number} [entityToExtract]
|
|
21
|
-
* @memberof PSTTable7C
|
|
22
|
-
*/
|
|
23
|
-
constructor(pstNodeInputStream: PSTNodeInputStream, subNodeDescriptorItems?: Map<number, PSTDescriptorItem>, entityToExtract?: number);
|
|
24
|
-
/**
|
|
25
|
-
* Get items from the table.
|
|
26
|
-
* @param {number} [startAtRecord]
|
|
27
|
-
* @param {number} [numberOfRecordsToReturn]
|
|
28
|
-
* @returns {Map<number, PSTTableItem>[]}
|
|
29
|
-
* @memberof PSTTable7C
|
|
30
|
-
*/
|
|
31
|
-
getItems(startAtRecord?: number, numberOfRecordsToReturn?: number): Map<number, PSTTableItem>[];
|
|
32
|
-
/**
|
|
33
|
-
* Get the number of rows.
|
|
34
|
-
* @readonly
|
|
35
|
-
* @type {number}
|
|
36
|
-
* @memberof PSTTable7C
|
|
37
|
-
*/
|
|
38
|
-
get rowCount(): number;
|
|
39
|
-
/**
|
|
40
|
-
* JSON stringify the object properties.
|
|
41
|
-
* @returns {string}
|
|
42
|
-
* @memberof PSTTable7C
|
|
43
|
-
*/
|
|
44
|
-
toJSON(): any;
|
|
45
|
-
}
|
|
1
|
+
import { PSTDescriptorItem } from './PSTDescriptorItem.class';
|
|
2
|
+
import { PSTNodeInputStream } from './PSTNodeInputStream.class';
|
|
3
|
+
import { PSTTable } from './PSTTable.class';
|
|
4
|
+
import { PSTTableItem } from './PSTTableItem.class';
|
|
5
|
+
export declare class PSTTable7C extends PSTTable {
|
|
6
|
+
private items;
|
|
7
|
+
private numberOfDataSets;
|
|
8
|
+
private BLOCK_SIZE;
|
|
9
|
+
private numColumns;
|
|
10
|
+
private TCI_bm;
|
|
11
|
+
private TCI_1b;
|
|
12
|
+
private columnDescriptors;
|
|
13
|
+
private overrideCol;
|
|
14
|
+
private rowNodeInfo;
|
|
15
|
+
private keyMap;
|
|
16
|
+
/**
|
|
17
|
+
* Creates an instance of PSTTable7C ("Table Context").
|
|
18
|
+
* @param {PSTNodeInputStream} pstNodeInputStream
|
|
19
|
+
* @param {Map<number, PSTDescriptorItem>} subNodeDescriptorItems
|
|
20
|
+
* @param {number} [entityToExtract]
|
|
21
|
+
* @memberof PSTTable7C
|
|
22
|
+
*/
|
|
23
|
+
constructor(pstNodeInputStream: PSTNodeInputStream, subNodeDescriptorItems?: Map<number, PSTDescriptorItem>, entityToExtract?: number);
|
|
24
|
+
/**
|
|
25
|
+
* Get items from the table.
|
|
26
|
+
* @param {number} [startAtRecord]
|
|
27
|
+
* @param {number} [numberOfRecordsToReturn]
|
|
28
|
+
* @returns {Map<number, PSTTableItem>[]}
|
|
29
|
+
* @memberof PSTTable7C
|
|
30
|
+
*/
|
|
31
|
+
getItems(startAtRecord?: number, numberOfRecordsToReturn?: number): Map<number, PSTTableItem>[];
|
|
32
|
+
/**
|
|
33
|
+
* Get the number of rows.
|
|
34
|
+
* @readonly
|
|
35
|
+
* @type {number}
|
|
36
|
+
* @memberof PSTTable7C
|
|
37
|
+
*/
|
|
38
|
+
get rowCount(): number;
|
|
39
|
+
/**
|
|
40
|
+
* JSON stringify the object properties.
|
|
41
|
+
* @returns {string}
|
|
42
|
+
* @memberof PSTTable7C
|
|
43
|
+
*/
|
|
44
|
+
toJSON(): any;
|
|
45
|
+
}
|