@cj-tech-master/excelts 4.2.1-canary.20260111102127.f808a37 → 4.2.1-canary.20260112134913.a3cecdd
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/browser/modules/archive/io/archive-sink.d.ts +0 -1
- package/dist/browser/modules/archive/io/archive-sink.js +6 -38
- package/dist/browser/modules/archive/io/archive-source.d.ts +0 -2
- package/dist/browser/modules/archive/io/archive-source.js +1 -8
- package/dist/browser/modules/excel/utils/ooxml-validator.d.ts +48 -0
- package/dist/browser/modules/excel/utils/ooxml-validator.js +469 -0
- package/dist/browser/modules/excel/worksheet.js +5 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/sp-xform.d.ts +18 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/sp-xform.js +112 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +6 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -0
- package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
- package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +110 -12
- package/dist/browser/modules/stream/base-transform.d.ts +3 -0
- package/dist/browser/modules/stream/base-transform.js +34 -20
- package/dist/browser/modules/stream/buffered-stream.d.ts +2 -12
- package/dist/browser/modules/stream/chunked-builder.js +4 -4
- package/dist/browser/modules/stream/index.browser.d.ts +13 -19
- package/dist/browser/modules/stream/index.browser.js +10 -22
- package/dist/browser/modules/stream/index.d.ts +18 -41
- package/dist/browser/modules/stream/index.js +15 -44
- package/dist/browser/modules/stream/internal/event-utils.d.ts +17 -0
- package/dist/browser/modules/stream/internal/event-utils.js +40 -0
- package/dist/browser/modules/stream/internal/type-guards.d.ts +9 -0
- package/dist/browser/modules/stream/internal/type-guards.js +24 -0
- package/dist/browser/modules/stream/pull-stream.d.ts +5 -6
- package/dist/browser/modules/stream/pull-stream.js +107 -43
- package/dist/browser/modules/stream/shared.d.ts +1 -1
- package/dist/browser/modules/stream/shared.js +7 -4
- package/dist/browser/modules/stream/streams.browser.d.ts +4 -14
- package/dist/browser/modules/stream/streams.browser.js +129 -164
- package/dist/browser/modules/stream/streams.d.ts +4 -20
- package/dist/browser/modules/stream/streams.js +6 -37
- package/dist/browser/modules/stream/utils.js +5 -38
- package/dist/cjs/modules/archive/io/archive-sink.js +7 -40
- package/dist/cjs/modules/archive/io/archive-source.js +3 -12
- package/dist/cjs/modules/excel/utils/ooxml-validator.js +475 -0
- package/dist/cjs/modules/excel/worksheet.js +5 -2
- package/dist/cjs/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/sp-xform.js +115 -0
- package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
- package/dist/cjs/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
- package/dist/cjs/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
- package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +110 -12
- package/dist/cjs/modules/stream/base-transform.js +34 -20
- package/dist/cjs/modules/stream/chunked-builder.js +4 -4
- package/dist/cjs/modules/stream/index.browser.js +10 -17
- package/dist/cjs/modules/stream/index.js +15 -39
- package/dist/cjs/modules/stream/internal/event-utils.js +43 -0
- package/dist/cjs/modules/stream/internal/type-guards.js +30 -0
- package/dist/cjs/modules/stream/pull-stream.js +107 -43
- package/dist/cjs/modules/stream/shared.js +7 -4
- package/dist/cjs/modules/stream/streams.browser.js +135 -175
- package/dist/cjs/modules/stream/streams.js +16 -49
- package/dist/cjs/modules/stream/utils.js +3 -36
- package/dist/esm/modules/archive/io/archive-sink.js +6 -38
- package/dist/esm/modules/archive/io/archive-source.js +1 -8
- package/dist/esm/modules/excel/utils/ooxml-validator.js +469 -0
- package/dist/esm/modules/excel/worksheet.js +5 -2
- package/dist/esm/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.js +13 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/sp-xform.js +112 -0
- package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +30 -2
- package/dist/esm/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +11 -0
- package/dist/esm/modules/excel/xlsx/xform/sheet/page-setup-xform.js +16 -2
- package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +110 -12
- package/dist/esm/modules/stream/base-transform.js +34 -20
- package/dist/esm/modules/stream/chunked-builder.js +4 -4
- package/dist/esm/modules/stream/index.browser.js +10 -22
- package/dist/esm/modules/stream/index.js +15 -44
- package/dist/esm/modules/stream/internal/event-utils.js +40 -0
- package/dist/esm/modules/stream/internal/type-guards.js +24 -0
- package/dist/esm/modules/stream/pull-stream.js +107 -43
- package/dist/esm/modules/stream/shared.js +7 -4
- package/dist/esm/modules/stream/streams.browser.js +129 -164
- package/dist/esm/modules/stream/streams.js +6 -37
- package/dist/esm/modules/stream/utils.js +5 -38
- package/dist/iife/excelts.iife.js +325 -60
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +25 -25
- package/dist/types/modules/archive/io/archive-sink.d.ts +0 -1
- package/dist/types/modules/archive/io/archive-source.d.ts +0 -2
- package/dist/types/modules/excel/utils/ooxml-validator.d.ts +48 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/sp-xform.d.ts +18 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +6 -1
- package/dist/types/modules/excel/xlsx/xform/sheet/page-setup-xform.d.ts +1 -0
- package/dist/types/modules/stream/base-transform.d.ts +3 -0
- package/dist/types/modules/stream/buffered-stream.d.ts +2 -12
- package/dist/types/modules/stream/index.browser.d.ts +13 -19
- package/dist/types/modules/stream/index.d.ts +18 -41
- package/dist/types/modules/stream/internal/event-utils.d.ts +17 -0
- package/dist/types/modules/stream/internal/type-guards.d.ts +9 -0
- package/dist/types/modules/stream/pull-stream.d.ts +5 -6
- package/dist/types/modules/stream/shared.d.ts +1 -1
- package/dist/types/modules/stream/streams.browser.d.ts +4 -14
- package/dist/types/modules/stream/streams.d.ts +4 -20
- package/package.json +10 -10
|
@@ -8,36 +8,41 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.PullStream = void 0;
|
|
10
10
|
const event_emitter_1 = require("./event-emitter.js");
|
|
11
|
-
const
|
|
11
|
+
const EMPTY_U8 = new Uint8Array(0);
|
|
12
12
|
/**
|
|
13
13
|
* Browser-compatible Pull Stream - Read data from buffer on demand with pattern matching
|
|
14
14
|
*/
|
|
15
15
|
class PullStream extends event_emitter_1.EventEmitter {
|
|
16
16
|
constructor(_options = {}) {
|
|
17
17
|
super();
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
// Single growable buffer with read/write cursors.
|
|
19
|
+
// IMPORTANT: never mutate bytes that have already been returned via subarray
|
|
20
|
+
// (to keep views stable). When we need to reclaim prefix space, we allocate
|
|
21
|
+
// a new buffer and copy the remaining bytes.
|
|
22
|
+
this._buffer = new Uint8Array(0);
|
|
23
|
+
this._bufferReadIndex = 0;
|
|
24
|
+
this._bufferWriteIndex = 0;
|
|
21
25
|
this.finished = false;
|
|
22
26
|
this._destroyed = false;
|
|
23
27
|
}
|
|
24
|
-
//
|
|
28
|
+
// Maintain legacy protected accessor for subclasses.
|
|
29
|
+
// Returned value is a view of the readable region.
|
|
25
30
|
get buffer() {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return new Uint8Array(0);
|
|
31
|
+
if (this._bufferReadIndex === this._bufferWriteIndex) {
|
|
32
|
+
return EMPTY_U8;
|
|
29
33
|
}
|
|
30
|
-
|
|
31
|
-
return this._bufferChunks[0];
|
|
32
|
-
}
|
|
33
|
-
// Consolidate multiple chunks
|
|
34
|
-
const buf = (0, shared_1.concatUint8Arrays)(this._bufferChunks);
|
|
35
|
-
this._bufferChunks = [buf];
|
|
36
|
-
return buf;
|
|
34
|
+
return this._buffer.subarray(this._bufferReadIndex, this._bufferWriteIndex);
|
|
37
35
|
}
|
|
38
36
|
set buffer(buf) {
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
if (buf.length === 0) {
|
|
38
|
+
this._buffer = EMPTY_U8;
|
|
39
|
+
this._bufferReadIndex = 0;
|
|
40
|
+
this._bufferWriteIndex = 0;
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this._buffer = buf;
|
|
44
|
+
this._bufferReadIndex = 0;
|
|
45
|
+
this._bufferWriteIndex = buf.length;
|
|
41
46
|
}
|
|
42
47
|
/**
|
|
43
48
|
* Write data to the stream
|
|
@@ -47,8 +52,38 @@ class PullStream extends event_emitter_1.EventEmitter {
|
|
|
47
52
|
this.emit("error", new Error("Cannot write to destroyed stream"));
|
|
48
53
|
return false;
|
|
49
54
|
}
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
const chunkLen = chunk.length;
|
|
56
|
+
if (chunkLen === 0) {
|
|
57
|
+
this.emit("chunk");
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
// Fast path: first write can reuse caller buffer without copy.
|
|
61
|
+
if (this._buffer.length === 0) {
|
|
62
|
+
this._buffer = chunk;
|
|
63
|
+
this._bufferReadIndex = 0;
|
|
64
|
+
this._bufferWriteIndex = chunkLen;
|
|
65
|
+
this.emit("chunk");
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
const required = this._bufferWriteIndex + chunkLen;
|
|
69
|
+
if (required <= this._buffer.length) {
|
|
70
|
+
this._buffer.set(chunk, this._bufferWriteIndex);
|
|
71
|
+
this._bufferWriteIndex += chunkLen;
|
|
72
|
+
this.emit("chunk");
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
// Need a new buffer. We keep previously returned views stable by allocating.
|
|
76
|
+
const remaining = this._bufferWriteIndex - this._bufferReadIndex;
|
|
77
|
+
const nextLength = remaining + chunkLen;
|
|
78
|
+
const prevCap = this._buffer.length;
|
|
79
|
+
// Grow exponentially to avoid O(n^2) copying on many small writes.
|
|
80
|
+
const nextCap = Math.max(nextLength, prevCap > 0 ? prevCap * 2 : 1024);
|
|
81
|
+
const next = new Uint8Array(nextCap);
|
|
82
|
+
next.set(this._buffer.subarray(this._bufferReadIndex, this._bufferWriteIndex), 0);
|
|
83
|
+
next.set(chunk, remaining);
|
|
84
|
+
this._buffer = next;
|
|
85
|
+
this._bufferReadIndex = 0;
|
|
86
|
+
this._bufferWriteIndex = nextLength;
|
|
52
87
|
this.emit("chunk");
|
|
53
88
|
return true;
|
|
54
89
|
}
|
|
@@ -72,8 +107,9 @@ class PullStream extends event_emitter_1.EventEmitter {
|
|
|
72
107
|
return;
|
|
73
108
|
}
|
|
74
109
|
this._destroyed = true;
|
|
75
|
-
this.
|
|
76
|
-
this.
|
|
110
|
+
this._buffer = EMPTY_U8;
|
|
111
|
+
this._bufferReadIndex = 0;
|
|
112
|
+
this._bufferWriteIndex = 0;
|
|
77
113
|
if (error) {
|
|
78
114
|
this.emit("error", error);
|
|
79
115
|
}
|
|
@@ -98,19 +134,32 @@ class PullStream extends event_emitter_1.EventEmitter {
|
|
|
98
134
|
reject(new Error("Stream destroyed"));
|
|
99
135
|
return;
|
|
100
136
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
137
|
+
if (size === 0) {
|
|
138
|
+
resolve(this._buffer.subarray(this._bufferReadIndex, this._bufferReadIndex));
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const available = this._bufferWriteIndex - this._bufferReadIndex;
|
|
142
|
+
if (available >= size) {
|
|
143
|
+
const start = this._bufferReadIndex;
|
|
144
|
+
const end = start + size;
|
|
145
|
+
const result = this._buffer.subarray(start, end);
|
|
146
|
+
this._bufferReadIndex = end;
|
|
147
|
+
if (this._bufferReadIndex === this._bufferWriteIndex) {
|
|
148
|
+
this._buffer = EMPTY_U8;
|
|
149
|
+
this._bufferReadIndex = 0;
|
|
150
|
+
this._bufferWriteIndex = 0;
|
|
151
|
+
}
|
|
106
152
|
resolve(result);
|
|
107
153
|
return;
|
|
108
154
|
}
|
|
109
155
|
if (this.finished) {
|
|
110
156
|
// Return whatever we have
|
|
111
|
-
const result = this.
|
|
112
|
-
|
|
113
|
-
|
|
157
|
+
const result = this._bufferReadIndex === this._bufferWriteIndex
|
|
158
|
+
? EMPTY_U8
|
|
159
|
+
: this._buffer.subarray(this._bufferReadIndex, this._bufferWriteIndex);
|
|
160
|
+
this._buffer = EMPTY_U8;
|
|
161
|
+
this._bufferReadIndex = 0;
|
|
162
|
+
this._bufferWriteIndex = 0;
|
|
114
163
|
resolve(result);
|
|
115
164
|
return;
|
|
116
165
|
}
|
|
@@ -127,21 +176,36 @@ class PullStream extends event_emitter_1.EventEmitter {
|
|
|
127
176
|
reject(new Error("Stream destroyed"));
|
|
128
177
|
return;
|
|
129
178
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
this.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
179
|
+
// Match empty pattern without consuming anything.
|
|
180
|
+
if (pattern.length === 0) {
|
|
181
|
+
this._match = 0;
|
|
182
|
+
resolve(this._buffer.subarray(this._bufferReadIndex, this._bufferReadIndex));
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
const matchIndexAbs = this._indexOf(this._buffer, this._bufferReadIndex, this._bufferWriteIndex, pattern);
|
|
186
|
+
if (matchIndexAbs !== -1) {
|
|
187
|
+
this._match = matchIndexAbs - this._bufferReadIndex;
|
|
188
|
+
const patternLen = pattern.length;
|
|
189
|
+
const resultEndAbs = includePattern ? matchIndexAbs + patternLen : matchIndexAbs;
|
|
190
|
+
const consumeTo = matchIndexAbs + patternLen;
|
|
191
|
+
const result = this._buffer.subarray(this._bufferReadIndex, resultEndAbs);
|
|
192
|
+
this._bufferReadIndex = consumeTo;
|
|
193
|
+
if (this._bufferReadIndex === this._bufferWriteIndex) {
|
|
194
|
+
this._buffer = EMPTY_U8;
|
|
195
|
+
this._bufferReadIndex = 0;
|
|
196
|
+
this._bufferWriteIndex = 0;
|
|
197
|
+
}
|
|
137
198
|
resolve(result);
|
|
138
199
|
return;
|
|
139
200
|
}
|
|
140
201
|
if (this.finished) {
|
|
141
202
|
// Pattern not found, return everything
|
|
142
|
-
const result =
|
|
143
|
-
|
|
144
|
-
|
|
203
|
+
const result = this._bufferReadIndex === this._bufferWriteIndex
|
|
204
|
+
? EMPTY_U8
|
|
205
|
+
: this._buffer.subarray(this._bufferReadIndex, this._bufferWriteIndex);
|
|
206
|
+
this._buffer = EMPTY_U8;
|
|
207
|
+
this._bufferReadIndex = 0;
|
|
208
|
+
this._bufferWriteIndex = 0;
|
|
145
209
|
resolve(result);
|
|
146
210
|
return;
|
|
147
211
|
}
|
|
@@ -161,7 +225,7 @@ class PullStream extends event_emitter_1.EventEmitter {
|
|
|
161
225
|
* Get remaining buffer length
|
|
162
226
|
*/
|
|
163
227
|
get length() {
|
|
164
|
-
return this.
|
|
228
|
+
return this._bufferWriteIndex - this._bufferReadIndex;
|
|
165
229
|
}
|
|
166
230
|
/**
|
|
167
231
|
* Check if stream is finished
|
|
@@ -178,13 +242,13 @@ class PullStream extends event_emitter_1.EventEmitter {
|
|
|
178
242
|
/**
|
|
179
243
|
* Find pattern in Uint8Array (like Buffer.indexOf)
|
|
180
244
|
*/
|
|
181
|
-
_indexOf(haystack,
|
|
245
|
+
_indexOf(haystack, start, end, needle) {
|
|
182
246
|
const needleLen = needle.length;
|
|
183
247
|
if (needleLen === 0) {
|
|
184
248
|
return start;
|
|
185
249
|
}
|
|
186
|
-
const haystackLen =
|
|
187
|
-
if (needleLen > haystackLen) {
|
|
250
|
+
const haystackLen = end;
|
|
251
|
+
if (needleLen > haystackLen - start) {
|
|
188
252
|
return -1;
|
|
189
253
|
}
|
|
190
254
|
const first = needle[0];
|
|
@@ -66,7 +66,7 @@ function uint8ArrayToString(arr, encoding) {
|
|
|
66
66
|
/**
|
|
67
67
|
* Concatenate multiple Uint8Arrays efficiently
|
|
68
68
|
*/
|
|
69
|
-
function concatUint8Arrays(arrays) {
|
|
69
|
+
function concatUint8Arrays(arrays, totalLength) {
|
|
70
70
|
const len = arrays.length;
|
|
71
71
|
if (len === 0) {
|
|
72
72
|
return new Uint8Array(0);
|
|
@@ -75,9 +75,12 @@ function concatUint8Arrays(arrays) {
|
|
|
75
75
|
return arrays[0];
|
|
76
76
|
}
|
|
77
77
|
// Calculate total length with for loop for better performance
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
if (totalLength === undefined) {
|
|
79
|
+
let sum = 0;
|
|
80
|
+
for (let i = 0; i < len; i++) {
|
|
81
|
+
sum += arrays[i].length;
|
|
82
|
+
}
|
|
83
|
+
totalLength = sum;
|
|
81
84
|
}
|
|
82
85
|
const result = new Uint8Array(totalLength);
|
|
83
86
|
let offset = 0;
|