@office-open/xlsx 0.10.2 → 0.10.4
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/{comments-CIu-wLTT.mjs → comments-BTMAAMY4.mjs} +56 -43
- package/dist/comments-BTMAAMY4.mjs.map +1 -0
- package/dist/{context-Btk-2AKp.mjs → context-D_9UIEwJ.mjs} +72 -77
- package/dist/context-D_9UIEwJ.mjs.map +1 -0
- package/dist/{file-ATgsKghI.d.mts → file-Clpwutq2.d.mts} +85 -11
- package/dist/file-Clpwutq2.d.mts.map +1 -0
- package/dist/{generate-CNllwVqo.mjs → generate-Dsk7XzIC.mjs} +16 -17
- package/dist/generate-Dsk7XzIC.mjs.map +1 -0
- package/dist/generate.d.mts +1 -1
- package/dist/generate.mjs +1 -1
- package/dist/index.d.mts +169 -66
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -14
- package/dist/index.mjs.map +1 -1
- package/dist/parse.d.mts +1 -1
- package/dist/parse.d.mts.map +1 -1
- package/dist/parse.mjs +11 -18
- package/dist/parse.mjs.map +1 -1
- package/dist/patch.d.mts +1 -1
- package/dist/patch.d.mts.map +1 -1
- package/dist/patch.mjs +12 -28
- package/dist/patch.mjs.map +1 -1
- package/dist/{worksheet-DgjBJg_S.d.mts → worksheet-C9CP2B97.d.mts} +9 -9
- package/dist/worksheet-C9CP2B97.d.mts.map +1 -0
- package/package.json +3 -3
- package/dist/comments-CIu-wLTT.mjs.map +0 -1
- package/dist/context-Btk-2AKp.mjs.map +0 -1
- package/dist/file-ATgsKghI.d.mts.map +0 -1
- package/dist/generate-CNllwVqo.mjs.map +0 -1
- package/dist/worksheet-DgjBJg_S.d.mts.map +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,24 +1,13 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
import { A as
|
|
1
|
+
import { $ as DxfOptions, A as TableColumnOptions, B as PivotAreaOptions, C as SheetBackgroundImageOptions, D as WorksheetOptions, E as WorksheetContext, F as tableDesc, G as PivotSourceData, H as PivotDataField, I as SharedStrings, J as BorderOptions, K as PivotTableOptions, L as SharedStringsDocOptions, M as TableStyleInfoOptions, N as TableType, O as stringifyWorksheet, P as TotalsRowFunction, Q as CustomTableStyleOptions, R as sharedStringsDesc, S as ScenarioOptions, T as WorksheetChartOptions, U as PivotFilterOptions, W as PivotFilterType, Y as BorderSideOptions, Z as CustomCellStyleOptions, _ as PhoneticPropertiesOptions, a as ColumnOptions, at as StylesDocOptions, b as ScenarioCellOptions, c as ConditionalFormatRule, d as FormulaOptions, et as FillOptions, f as FreezePaneOptions, g as MergeCellOptions, h as IgnoredErrorOptions, i as ColorScaleOptions, it as Styles, j as TableOptions, k as worksheetDesc, l as DataBarOptions, m as IconSetType, n as CfvoOptions, nt as StyleExtensionOptions, o as CommentOptions, ot as StylesParseResult, p as IconSetOptions, q as AlignmentOptions, r as CfvoType, rt as StyleOptions, s as ConditionalFormatOptions, st as stylesDesc, t as CellOptions, tt as FontOptions, u as DataValidationOptions, v as ProtectedRangeOptions, w as SheetProtectionOptions, x as ScenarioDefinition, y as RowOptions, z as ConsolidateFunction } from "./worksheet-C9CP2B97.mjs";
|
|
2
|
+
import { A as ChartsheetProtectionOptions, B as buildExternalReferencesXml, C as OleLinkOptions, D as ChartsheetOptions, E as ChartsheetHeaderFooterOptions, F as FileRecoveryPropertiesOptions, H as workbookDesc, I as FileSharingOptions, L as PivotCacheReference, M as CalcChainOptions, N as calcChainDesc, O as ChartsheetPageMargins, P as CustomWorkbookViewOptions, R as WebPublishingOptions, S as OleItemOptions, T as ChartsheetDescriptorOptions, V as buildTablePartsXml, _ as ExternalCellOptions, a as RevisionEntry, b as ExternalRowOptions, c as RevisionHeadersOptions, d as RevisionMoveOptions, f as RevisionRowColumnOptions, g as ExternalBookOptions, h as pivotCacheRecordsDesc, i as RevisionDefinedNameOptions, j as chartsheetDesc, k as ChartsheetPageSetup, l as RevisionInsertSheetOptions, m as pivotCacheDefDesc, n as RevisionCellChangeOptions, o as RevisionFormattingOptions, p as PivotCacheDefDescriptorOptions, r as RevisionCommentOptions, s as RevisionHeaderEntry, t as WorkbookOptions, u as RevisionLogOptions, v as ExternalDefinedNameOptions, w as externalLinkDesc, x as ExternalSheetDataOptions, y as ExternalLinkOptions, z as WorkbookProtectionOptions } from "./file-Clpwutq2.mjs";
|
|
3
3
|
import { generateWorkbook, generateWorkbookStream, generateWorkbookSync } from "./generate.mjs";
|
|
4
4
|
import { XlsxDocument, XlsxPartRefs, parseWorkbook, parseXlsx } from "./parse.mjs";
|
|
5
5
|
import { Patch, PatchWorkbookOptions, ScalarValue, patchWorkbook } from "./patch.mjs";
|
|
6
6
|
import { Element } from "@office-open/xml";
|
|
7
|
-
import { ChartCollection, CompressionOptions, CorePropertiesOptions, OutputByType, OutputType, PackerOptions, RelationshipType, Relationships, XmlifyedFile, Zippable } from "@office-open/core";
|
|
7
|
+
import { ChartCollection, CompressionOptions, CorePropertiesOptions, Media, OutputByType, OutputType, PackerOptions, RelationshipType, Relationships, UniversalMeasure, XmlifyedFile, Zippable } from "@office-open/core";
|
|
8
8
|
import { createThemeXml } from "@office-open/core/theme";
|
|
9
9
|
import { CustomDescriptor, ReadContext, WriteContext } from "@office-open/core/descriptor";
|
|
10
10
|
|
|
11
|
-
//#region src/parts/calc-chain.d.ts
|
|
12
|
-
interface CalcCell {
|
|
13
|
-
reference: string;
|
|
14
|
-
sheetIndex: number;
|
|
15
|
-
array?: boolean;
|
|
16
|
-
}
|
|
17
|
-
interface CalcChainOptions {
|
|
18
|
-
cells: CalcCell[];
|
|
19
|
-
}
|
|
20
|
-
declare const calcChainDesc: CustomDescriptor<CalcChainOptions>;
|
|
21
|
-
//#endregion
|
|
22
11
|
//#region src/parts/comments.d.ts
|
|
23
12
|
interface CommentsDocOptions {
|
|
24
13
|
comments: CommentOptions[];
|
|
@@ -41,28 +30,28 @@ declare const EDIT_AS_TYPES: {
|
|
|
41
30
|
type EditAsType = (typeof EDIT_AS_TYPES)[keyof typeof EDIT_AS_TYPES];
|
|
42
31
|
interface DrawingImageOptions {
|
|
43
32
|
col: number;
|
|
44
|
-
colOffset?: number;
|
|
33
|
+
colOffset?: number | UniversalMeasure;
|
|
45
34
|
row: number;
|
|
46
|
-
rowOffset?: number;
|
|
35
|
+
rowOffset?: number | UniversalMeasure;
|
|
47
36
|
toCol?: number;
|
|
48
37
|
toRow?: number;
|
|
49
|
-
toColOffset?: number;
|
|
50
|
-
toRowOffset?: number;
|
|
38
|
+
toColOffset?: number | UniversalMeasure;
|
|
39
|
+
toRowOffset?: number | UniversalMeasure;
|
|
51
40
|
rId: string;
|
|
52
41
|
anchorType?: AnchorType;
|
|
53
42
|
editAs?: EditAsType;
|
|
54
|
-
absoluteX?: number;
|
|
55
|
-
absoluteY?: number;
|
|
56
|
-
extentCx?: number;
|
|
57
|
-
extentCy?: number;
|
|
43
|
+
absoluteX?: number | UniversalMeasure;
|
|
44
|
+
absoluteY?: number | UniversalMeasure;
|
|
45
|
+
extentCx?: number | UniversalMeasure;
|
|
46
|
+
extentCy?: number | UniversalMeasure;
|
|
58
47
|
locksWithSheet?: boolean;
|
|
59
48
|
printsWithSheet?: boolean;
|
|
60
49
|
}
|
|
61
50
|
interface DrawingChartOptions {
|
|
62
51
|
col: number;
|
|
63
|
-
colOffset?: number;
|
|
52
|
+
colOffset?: number | UniversalMeasure;
|
|
64
53
|
row: number;
|
|
65
|
-
rowOffset?: number;
|
|
54
|
+
rowOffset?: number | UniversalMeasure;
|
|
66
55
|
rId: string;
|
|
67
56
|
locksWithSheet?: boolean;
|
|
68
57
|
printsWithSheet?: boolean;
|
|
@@ -79,31 +68,164 @@ interface PivotTableDescriptorOptions {
|
|
|
79
68
|
sourceData: PivotSourceData;
|
|
80
69
|
cacheId: number;
|
|
81
70
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
71
|
+
interface PivotFieldParseResult {
|
|
72
|
+
axis?: string;
|
|
73
|
+
showAll?: boolean;
|
|
74
|
+
dataField?: boolean;
|
|
75
|
+
hierarchy?: string;
|
|
76
|
+
dragToRow?: boolean;
|
|
77
|
+
dragToCol?: boolean;
|
|
78
|
+
dragToPage?: boolean;
|
|
79
|
+
dragToData?: boolean;
|
|
80
|
+
dragOff?: boolean;
|
|
81
|
+
showDropDowns?: boolean;
|
|
82
|
+
insertBlankRow?: boolean;
|
|
83
|
+
showPropCell?: boolean;
|
|
84
|
+
showPropTip?: boolean;
|
|
85
|
+
showPropAsCaption?: boolean;
|
|
86
|
+
compact?: boolean;
|
|
87
|
+
outline?: boolean;
|
|
88
|
+
subtotalTop?: boolean;
|
|
89
|
+
includeNewItemsInFilter?: boolean;
|
|
90
|
+
}
|
|
91
|
+
interface DataFieldParseResult {
|
|
92
|
+
name?: string;
|
|
93
|
+
fld?: number;
|
|
94
|
+
subtotal?: string;
|
|
95
|
+
showDataAs?: string;
|
|
96
|
+
baseField?: number;
|
|
97
|
+
baseItem?: number;
|
|
98
|
+
numFmtId?: string;
|
|
99
|
+
}
|
|
100
|
+
interface PageFieldParseResult {
|
|
101
|
+
fld?: number;
|
|
102
|
+
hier?: number;
|
|
103
|
+
cap?: string;
|
|
104
|
+
}
|
|
105
|
+
interface PivotFormatParseResult {
|
|
106
|
+
action?: string;
|
|
107
|
+
dxfId?: number;
|
|
108
|
+
pivotArea?: Partial<PivotAreaOptions>;
|
|
109
|
+
}
|
|
110
|
+
interface ChartFormatParseResult {
|
|
111
|
+
chart?: number;
|
|
112
|
+
format?: number;
|
|
113
|
+
series?: boolean;
|
|
114
|
+
pivotArea?: Partial<PivotAreaOptions>;
|
|
115
|
+
}
|
|
116
|
+
interface PivotHierarchyParseResult {
|
|
117
|
+
outline?: boolean;
|
|
118
|
+
multipleItemSelectionAllowed?: boolean;
|
|
119
|
+
subtotalTop?: boolean;
|
|
120
|
+
showInFieldList?: boolean;
|
|
121
|
+
dragToRow?: boolean;
|
|
122
|
+
dragToCol?: boolean;
|
|
123
|
+
dragToPage?: boolean;
|
|
124
|
+
dragToData?: boolean;
|
|
125
|
+
dragOff?: boolean;
|
|
126
|
+
includeNewItemsInFilter?: boolean;
|
|
127
|
+
caption?: string;
|
|
128
|
+
}
|
|
129
|
+
interface PivotFilterParseResult {
|
|
130
|
+
fld?: number;
|
|
131
|
+
type?: string;
|
|
132
|
+
id?: number;
|
|
133
|
+
mpFld?: number;
|
|
134
|
+
evalOrder?: number;
|
|
135
|
+
}
|
|
136
|
+
interface HierarchyUsageParseResult {
|
|
137
|
+
hierarchyUsage: number;
|
|
138
|
+
}
|
|
139
|
+
interface CalculatedItemParseResult {
|
|
140
|
+
field?: number;
|
|
141
|
+
formula?: string;
|
|
142
|
+
pivotArea?: Partial<PivotAreaOptions>;
|
|
143
|
+
}
|
|
144
|
+
interface CalculatedMemberParseResult {
|
|
145
|
+
name?: string;
|
|
146
|
+
mdx?: string;
|
|
147
|
+
memberName?: string;
|
|
148
|
+
hierarchy?: string;
|
|
149
|
+
parent?: string;
|
|
150
|
+
solveOrder?: number;
|
|
151
|
+
set?: boolean;
|
|
152
|
+
}
|
|
153
|
+
interface PivotTableParseResult {
|
|
154
|
+
name?: string;
|
|
155
|
+
cacheId?: number;
|
|
156
|
+
dataOnRows?: boolean;
|
|
157
|
+
showHeaders?: boolean;
|
|
158
|
+
showEmptyRow?: boolean;
|
|
159
|
+
showEmptyCol?: boolean;
|
|
160
|
+
grandTotalCaption?: string;
|
|
161
|
+
errorCaption?: string;
|
|
162
|
+
showError?: boolean;
|
|
163
|
+
missingCaption?: string;
|
|
164
|
+
showMissing?: boolean;
|
|
165
|
+
pageStyle?: string;
|
|
166
|
+
pivotTableStyle?: string;
|
|
167
|
+
tag?: string;
|
|
168
|
+
showItems?: boolean;
|
|
169
|
+
editData?: boolean;
|
|
170
|
+
disableFieldList?: boolean;
|
|
171
|
+
showCalcMbrs?: boolean;
|
|
172
|
+
visualTotals?: boolean;
|
|
173
|
+
showMultipleLabel?: boolean;
|
|
174
|
+
showDataDropDown?: boolean;
|
|
175
|
+
showDrill?: boolean;
|
|
176
|
+
printDrill?: boolean;
|
|
177
|
+
showMemberPropertyTips?: boolean;
|
|
178
|
+
showDataTips?: boolean;
|
|
179
|
+
enableWizard?: boolean;
|
|
180
|
+
enableDrill?: boolean;
|
|
181
|
+
enableFieldProperties?: boolean;
|
|
182
|
+
pageWrap?: number;
|
|
183
|
+
pageOverThenDown?: boolean;
|
|
184
|
+
subtotalHiddenItems?: boolean;
|
|
185
|
+
fieldPrintTitles?: boolean;
|
|
186
|
+
mergeItem?: boolean;
|
|
187
|
+
showDropZones?: boolean;
|
|
188
|
+
published?: boolean;
|
|
189
|
+
gridDropZones?: boolean;
|
|
190
|
+
multipleFieldFilters?: boolean;
|
|
191
|
+
rowHeaderCaption?: string;
|
|
192
|
+
colHeaderCaption?: string;
|
|
193
|
+
fieldListSortAscending?: boolean;
|
|
194
|
+
mdxSubqueries?: boolean;
|
|
195
|
+
customListSort?: boolean;
|
|
196
|
+
asteriskTotals?: boolean;
|
|
197
|
+
dataPosition?: number;
|
|
198
|
+
immersive?: boolean;
|
|
199
|
+
vacatedStyle?: string;
|
|
200
|
+
dataCaption?: string;
|
|
201
|
+
location?: string;
|
|
202
|
+
locationRowPageCount?: number;
|
|
203
|
+
locationColPageCount?: number;
|
|
204
|
+
pivotFields?: PivotFieldParseResult[];
|
|
205
|
+
dataFields?: DataFieldParseResult[];
|
|
206
|
+
rowFields?: number[];
|
|
207
|
+
colFields?: number[];
|
|
208
|
+
pageFields?: PageFieldParseResult[];
|
|
209
|
+
formats?: PivotFormatParseResult[];
|
|
210
|
+
chartFormats?: ChartFormatParseResult[];
|
|
211
|
+
pivotHierarchies?: PivotHierarchyParseResult[];
|
|
212
|
+
filters?: PivotFilterParseResult[];
|
|
213
|
+
rowHierarchiesUsage?: HierarchyUsageParseResult[];
|
|
214
|
+
colHierarchiesUsage?: HierarchyUsageParseResult[];
|
|
215
|
+
calculatedItems?: CalculatedItemParseResult[];
|
|
216
|
+
calculatedMembers?: CalculatedMemberParseResult[];
|
|
217
|
+
style?: string;
|
|
218
|
+
}
|
|
219
|
+
declare const pivotTableDesc: CustomDescriptor<PivotTableDescriptorOptions, WriteContext, PivotTableParseResult>;
|
|
98
220
|
//#endregion
|
|
99
221
|
//#region src/parts/dialogsheet.d.ts
|
|
100
222
|
interface DialogsheetPageMargins {
|
|
101
|
-
left?: number;
|
|
102
|
-
right?: number;
|
|
103
|
-
top?: number;
|
|
104
|
-
bottom?: number;
|
|
105
|
-
header?: number;
|
|
106
|
-
footer?: number;
|
|
223
|
+
left?: number | UniversalMeasure;
|
|
224
|
+
right?: number | UniversalMeasure;
|
|
225
|
+
top?: number | UniversalMeasure;
|
|
226
|
+
bottom?: number | UniversalMeasure;
|
|
227
|
+
header?: number | UniversalMeasure;
|
|
228
|
+
footer?: number | UniversalMeasure;
|
|
107
229
|
}
|
|
108
230
|
interface DialogsheetPageSetup {
|
|
109
231
|
paperSize?: number;
|
|
@@ -408,11 +530,6 @@ interface MediaData {
|
|
|
408
530
|
width: number;
|
|
409
531
|
height: number;
|
|
410
532
|
}
|
|
411
|
-
declare class Media {
|
|
412
|
-
private map;
|
|
413
|
-
addImage(key: string, data: MediaData): void;
|
|
414
|
-
get array(): MediaData[];
|
|
415
|
-
}
|
|
416
533
|
//#endregion
|
|
417
534
|
//#region src/util/index.d.ts
|
|
418
535
|
declare function columnToLetter(col: number): string;
|
|
@@ -450,25 +567,11 @@ declare class ContentTypes {
|
|
|
450
567
|
serialize(): string;
|
|
451
568
|
}
|
|
452
569
|
//#endregion
|
|
453
|
-
//#region src/parts/media.d.ts
|
|
454
|
-
interface MediaData$1 {
|
|
455
|
-
fileName: string;
|
|
456
|
-
type: string;
|
|
457
|
-
data: Uint8Array;
|
|
458
|
-
width: number;
|
|
459
|
-
height: number;
|
|
460
|
-
}
|
|
461
|
-
declare class Media$1 {
|
|
462
|
-
private map;
|
|
463
|
-
addImage(key: string, data: MediaData$1): void;
|
|
464
|
-
get array(): MediaData$1[];
|
|
465
|
-
}
|
|
466
|
-
//#endregion
|
|
467
570
|
//#region src/context.d.ts
|
|
468
571
|
declare class XlsxWriteContext implements WriteContext {
|
|
469
572
|
sharedStrings: SharedStrings;
|
|
470
573
|
styles: Styles;
|
|
471
|
-
media: Media
|
|
574
|
+
media: Media<MediaData>;
|
|
472
575
|
charts: ChartCollection;
|
|
473
576
|
contentTypes: ContentTypes;
|
|
474
577
|
workbookRels: Relationships;
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/parts/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/parts/comments.ts","../src/parts/drawing.ts","../src/parts/pivot-table.ts","../src/parts/dialogsheet.ts","../src/parts/query-table.ts","../src/parts/metadata.ts","../src/parts/connection.ts","../src/parts/xml-mapping.ts","../src/shared/media.ts","../src/util/index.ts","../src/compiler.ts","../src/parts/content-types.ts","../src/context.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
import { a as SharedStrings, i as worksheetDesc, n as vmlNotesDesc, o as sharedStringsDesc, r as stringifyWorksheet, t as commentsDesc } from "./comments-
|
|
2
|
-
import { C as
|
|
1
|
+
import { a as SharedStrings, i as worksheetDesc, n as vmlNotesDesc, o as sharedStringsDesc, r as stringifyWorksheet, t as commentsDesc } from "./comments-BTMAAMY4.mjs";
|
|
2
|
+
import { C as Styles, S as calcChainDesc, b as drawingDesc, c as buildTablePartsXml, d as TotalsRowFunction, f as tableDesc, g as PivotFilterType, h as pivotTableDesc, l as workbookDesc, m as pivotCacheRecordsDesc, n as XlsxWriteContext, o as Media, p as pivotCacheDefDesc, s as buildExternalReferencesXml, t as XlsxReadContext, u as TableType, w as stylesDesc, x as chartsheetDesc, y as externalLinkDesc } from "./context-D_9UIEwJ.mjs";
|
|
3
3
|
import { parseWorkbook, parseXlsx } from "./parse.mjs";
|
|
4
4
|
import { patchWorkbook } from "./patch.mjs";
|
|
5
|
-
import { i as compileWorkbook, n as generateWorkbookStream, r as generateWorkbookSync, t as generateWorkbook } from "./generate-
|
|
5
|
+
import { i as compileWorkbook, n as generateWorkbookStream, r as generateWorkbookSync, t as generateWorkbook } from "./generate-Dsk7XzIC.mjs";
|
|
6
6
|
import { createThemeXml } from "@office-open/core/theme";
|
|
7
|
-
//#region src/shared/media.ts
|
|
8
|
-
var Media = class {
|
|
9
|
-
map = /* @__PURE__ */ new Map();
|
|
10
|
-
addImage(key, data) {
|
|
11
|
-
this.map.set(key, data);
|
|
12
|
-
}
|
|
13
|
-
get array() {
|
|
14
|
-
return [...this.map.values()];
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
//#endregion
|
|
18
7
|
//#region src/util/index.ts
|
|
19
8
|
/**
|
|
20
9
|
* Convert a 1-based column number to Excel column letter(s).
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/util/index.ts"],"sourcesContent":["/**\n * Convert a 1-based column number to Excel column letter(s).\n * 1 → \"A\", 26 → \"Z\", 27 → \"AA\", 28 → \"AB\"\n */\nexport function columnToLetter(col: number): string {\n let result = \"\";\n let n = col;\n while (n > 0) {\n const remainder = (n - 1) % 26;\n result = String.fromCharCode(65 + remainder) + result;\n n = Math.floor((n - 1) / 26);\n }\n return result;\n}\n\n/**\n * Convert a JavaScript Date to an Excel serial number.\n * Excel epoch: January 1, 1900 = 1 (with the 1900 leap year bug).\n */\nexport function dateToSerialNumber(date: Date): number {\n // Excel treats 1900 as a leap year (bug inherited from Lotus 1-2-3).\n // The epoch is effectively December 30, 1899 = 0.\n const epoch = new Date(1899, 11, 30);\n const msPerDay = 86400000;\n const diff = date.getTime() - epoch.getTime();\n return diff / msPerDay;\n}\n"],"mappings":";;;;;;;;;;;AAIA,SAAgB,eAAe,KAAqB;CAClD,IAAI,SAAS;CACb,IAAI,IAAI;CACR,OAAO,IAAI,GAAG;EACZ,MAAM,aAAa,IAAI,KAAK;EAC5B,SAAS,OAAO,aAAa,KAAK,SAAS,IAAI;EAC/C,IAAI,KAAK,OAAO,IAAI,KAAK,EAAE;CAC7B;CACA,OAAO;AACT;;;;;AAMA,SAAgB,mBAAmB,MAAoB;CAGrD,MAAM,QAAQ,IAAI,KAAK,MAAM,IAAI,EAAE;CAGnC,QADa,KAAK,QAAQ,IAAI,MAAM,QAAQ,KAC9B;AAChB"}
|
package/dist/parse.d.mts
CHANGED
package/dist/parse.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.mts","names":[],"sources":["../src/parse.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"parse.d.mts","names":[],"sources":["../src/parse.ts"],"mappings":";;;;;UAuDiB,YAAA;EACf,UAAA;EACA,MAAA;EACA,KAAA;EACA,QAAA;AAAA;AAAA,UAGe,YAAA;EACf,GAAA,EAAK,aAAA;EAEL,QAAA,GAAW,OAAA;EAEX,UAAA;EAEA,MAAA,GAAS,OAAA;EAET,aAAA,GAAgB,OAAA;EAChB,QAAA,EAAU,YAAA;EAEV,SAAA;EAEA,QAAA;EAEA,WAAA;AAAA;AAAA,iBAwBc,SAAA,CAAU,IAAA,EAAM,QAAA,GAAW,YAAY;AAAA,iBAsFvC,aAAA,CAAc,IAAA,EAAM,QAAA,GAAW,eAAe"}
|
package/dist/parse.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as worksheetDesc, o as sharedStringsDesc, t as commentsDesc } from "./comments-
|
|
2
|
-
import {
|
|
1
|
+
import { i as worksheetDesc, o as sharedStringsDesc, t as commentsDesc } from "./comments-BTMAAMY4.mjs";
|
|
2
|
+
import { S as calcChainDesc, a as usersDesc, b as drawingDesc, f as tableDesc, h as pivotTableDesc, i as revisionLogDesc, l as workbookDesc, m as pivotCacheRecordsDesc, p as pivotCacheDefDesc, r as revisionHeadersDesc, t as XlsxReadContext, w as stylesDesc, x as chartsheetDesc, y as externalLinkDesc } from "./context-D_9UIEwJ.mjs";
|
|
3
3
|
import { attr } from "@office-open/xml";
|
|
4
4
|
import { appPropertiesDesc, customPropertiesDesc, parseArchive, parseCorePropsElement, toUint8Array } from "@office-open/core";
|
|
5
5
|
//#region src/parse.ts
|
|
@@ -79,10 +79,7 @@ function parseXlsx(data) {
|
|
|
79
79
|
function extractStringsFromEntries(parsed) {
|
|
80
80
|
const strings = [];
|
|
81
81
|
for (const entry of parsed.entries) if (typeof entry === "string") strings.push(entry);
|
|
82
|
-
else
|
|
83
|
-
const runs = entry.runs;
|
|
84
|
-
if (runs && runs.length > 0) strings.push(runs.map((r) => r.text).join(""));
|
|
85
|
-
}
|
|
82
|
+
else if (entry.runs && entry.runs.length > 0) strings.push(entry.runs.map((r) => r.text).join(""));
|
|
86
83
|
return strings;
|
|
87
84
|
}
|
|
88
85
|
/**
|
|
@@ -133,14 +130,12 @@ function parseWorkbook(data) {
|
|
|
133
130
|
if (parsedStyles.colors) opts.colors = parsedStyles.colors;
|
|
134
131
|
if (parsedStyles.customCellStyles) opts.cellStyles = parsedStyles.customCellStyles;
|
|
135
132
|
if (parsedStyles.styleExtensions) opts.styleExtensions = parsedStyles.styleExtensions;
|
|
136
|
-
|
|
137
|
-
if (tableStylesInfo?.tableStyles) opts.tableStyles = tableStylesInfo.tableStyles;
|
|
133
|
+
if (parsedStyles.tableStylesInfo?.tableStyles) opts.tableStyles = parsedStyles.tableStylesInfo.tableStyles;
|
|
138
134
|
}
|
|
139
135
|
let sheetNames = [];
|
|
140
136
|
if (xlsx.workbook) {
|
|
141
137
|
const wbData = workbookDesc.parse(xlsx.workbook, readContext);
|
|
142
|
-
|
|
143
|
-
if (sheets) sheetNames = sheets.map((s) => s.name);
|
|
138
|
+
if (wbData.sheets) sheetNames = wbData.sheets.map((s) => s.name);
|
|
144
139
|
if (wbData.protection) opts.workbookProtection = wbData.protection;
|
|
145
140
|
if (wbData.bookView) opts.bookView = wbData.bookView;
|
|
146
141
|
if (wbData.calcPr) opts.calcPr = wbData.calcPr;
|
|
@@ -202,11 +197,10 @@ function parseWorkbook(data) {
|
|
|
202
197
|
if (pivotTables.length > 0) wsOpts.pivotTables = pivotTables;
|
|
203
198
|
}
|
|
204
199
|
const hyperlinks = wsOpts.hyperlinks;
|
|
205
|
-
if (hyperlinks)
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
if (resolved) target.url = resolved;
|
|
200
|
+
if (hyperlinks) {
|
|
201
|
+
for (const hl of hyperlinks) if (hl.target.type === "external") {
|
|
202
|
+
const resolved = readContext.resolveWorksheetRel(wsPath, hl.target.url);
|
|
203
|
+
if (resolved) hl.target.url = resolved;
|
|
210
204
|
}
|
|
211
205
|
}
|
|
212
206
|
worksheets.push(wsOpts);
|
|
@@ -258,8 +252,7 @@ function parseWorkbook(data) {
|
|
|
258
252
|
const elEl = xlsx.doc.get(elPath);
|
|
259
253
|
if (!elEl) continue;
|
|
260
254
|
const elData = externalLinkDesc.parse(elEl, readContext);
|
|
261
|
-
|
|
262
|
-
if (elData2.externalBook) {
|
|
255
|
+
if (elData.externalBook) {
|
|
263
256
|
const relsPath = externalLinkRelsPath(elPath);
|
|
264
257
|
const relsEl = xlsx.doc.get(relsPath);
|
|
265
258
|
if (relsEl) for (const child of relsEl.elements ?? []) {
|
|
@@ -267,7 +260,7 @@ function parseWorkbook(data) {
|
|
|
267
260
|
if (!(attr(child, "Type") ?? "").includes("/externalLinkPath")) continue;
|
|
268
261
|
const target = attr(child, "Target");
|
|
269
262
|
if (target) {
|
|
270
|
-
|
|
263
|
+
elData.externalBook.target = target;
|
|
271
264
|
break;
|
|
272
265
|
}
|
|
273
266
|
}
|
package/dist/parse.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.mjs","names":[],"sources":["../src/parse.ts"],"sourcesContent":["/**\n * XLSX parsing — parse .xlsx files into structured data.\n *\n * @module\n */\nimport {\n appPropertiesDesc,\n customPropertiesDesc,\n parseArchive,\n parseCorePropsElement,\n} from \"@office-open/core\";\nimport type { ParsedArchive } from \"@office-open/core\";\nimport { toUint8Array } from \"@office-open/core\";\nimport type { DataType } from \"@office-open/core\";\nimport type { ReadContext } from \"@office-open/core/descriptor\";\nimport type { Element } from \"@office-open/xml\";\nimport { attr } from \"@office-open/xml\";\nimport { calcChainDesc } from \"@parts/calc-chain\";\nimport { chartsheetDesc } from \"@parts/chartsheet\";\nimport type { ChartsheetOptions } from \"@parts/chartsheet\";\nimport { commentsDesc } from \"@parts/comments\";\nimport { drawingDesc } from \"@parts/drawing\";\nimport { externalLinkDesc } from \"@parts/external-link\";\nimport type { SharedWorkbookOptions, WorkbookOptions } from \"@parts/file\";\nimport { pivotCacheDefDesc, pivotCacheRecordsDesc } from \"@parts/pivot-cache\";\nimport { pivotTableDesc } from \"@parts/pivot-table\";\nimport {\n revisionHeadersDesc,\n revisionLogDesc,\n usersDesc,\n type RevisionLogOptions,\n} from \"@parts/revision-log\";\nimport { sharedStringsDesc } from \"@parts/shared-strings\";\nimport { stylesDesc } from \"@parts/styles\";\nimport { tableDesc } from \"@parts/table\";\nimport { workbookDesc } from \"@parts/workbook\";\nimport { worksheetDesc } from \"@parts/worksheet\";\nimport type { WorksheetOptions } from \"@parts/worksheet\";\n\nimport { XlsxReadContext } from \"./context\";\n\nexport { parseArchive };\n\n// ── Low-level parse result ──\n\nexport interface XlsxPartRefs {\n worksheets: string[];\n charts: string[];\n media: string[];\n drawings: string[];\n}\n\nexport interface XlsxDocument {\n doc: ParsedArchive;\n /** xl/workbook.xml root element */\n workbook?: Element;\n /** Worksheet paths (xl/worksheets/sheet{n}.xml) */\n worksheets: string[];\n /** xl/styles.xml root element */\n styles?: Element;\n /** xl/sharedStrings.xml root element */\n sharedStrings?: Element;\n partRefs: XlsxPartRefs;\n /** docProps/core.xml path */\n coreProps?: string;\n /** docProps/app.xml path */\n appProps?: string;\n /** docProps/custom.xml path */\n customProps?: string;\n}\n\nfunction sortByNumber(paths: string[]): string[] {\n return paths.sort((a, b) => {\n const numA = parseInt(a.match(/(\\d+)/)?.[1] ?? \"0\", 10);\n const numB = parseInt(b.match(/(\\d+)/)?.[1] ?? \"0\", 10);\n return numA - numB;\n });\n}\n\n/** Derive the sibling rels path for an external link part.\n * \"xl/externalLinks/externalLink1.xml\" → \"xl/externalLinks/_rels/externalLink1.xml.rels\"\n */\nfunction externalLinkRelsPath(elPath: string): string {\n const idx = elPath.lastIndexOf(\"/\");\n const dir = elPath.substring(0, idx);\n const file = elPath.substring(idx + 1);\n return `${dir}/_rels/${file}.rels`;\n}\n\n/**\n * Parse raw .xlsx data into a low-level XlsxDocument.\n */\nexport function parseXlsx(data: DataType): XlsxDocument {\n const uint8 = toUint8Array(data);\n const doc = parseArchive(uint8);\n\n const workbook = doc.get(\"xl/workbook.xml\");\n const styles = doc.get(\"xl/styles.xml\");\n const sharedStrings = doc.get(\"xl/sharedStrings.xml\");\n\n // Resolve worksheet paths from workbook rels\n const worksheets: string[] = [];\n const charts: string[] = [];\n const drawings: string[] = [];\n const media: string[] = [];\n\n const wbRels = doc.get(\"xl/_rels/workbook.xml.rels\");\n if (wbRels) {\n for (const child of wbRels.elements ?? []) {\n if (child.name !== \"Relationship\") continue;\n const type = attr(child, \"Type\") ?? \"\";\n const target = attr(child, \"Target\") ?? \"\";\n if (!target) continue;\n\n if (type.includes(\"/worksheet\")) {\n worksheets.push(target.startsWith(\"/\") ? target.slice(1) : `xl/${target}`);\n }\n }\n }\n sortByNumber(worksheets);\n\n // Scan for drawings, charts, media\n drawings.push(...doc.keys(\"xl/drawings/\").filter((k) => k.endsWith(\".xml\")));\n charts.push(...doc.keys(\"xl/charts/\").filter((k) => k.endsWith(\".xml\")));\n media.push(...doc.keys(\"xl/media/\"));\n sortByNumber(drawings);\n sortByNumber(charts);\n\n // Root rels → core/app props\n let coreProps: string | undefined;\n let appProps: string | undefined;\n let customProps: string | undefined;\n const rootRels = doc.get(\"_rels/.rels\");\n if (rootRels) {\n for (const child of rootRels.elements ?? []) {\n if (child.name !== \"Relationship\") continue;\n const type = attr(child, \"Type\") ?? \"\";\n const target = attr(child, \"Target\") ?? \"\";\n if (type.includes(\"/core-properties\")) coreProps = target;\n else if (type.includes(\"/extended-properties\")) appProps = target;\n else if (type.includes(\"/custom-properties\")) customProps = target;\n }\n }\n\n return {\n doc,\n workbook,\n worksheets,\n styles,\n sharedStrings,\n partRefs: { worksheets, charts, media, drawings },\n coreProps,\n appProps,\n customProps,\n };\n}\n\n// ── Shared strings helper ──\n\n/** Extract plain string array from sharedStringsDesc.parse() result. */\nfunction extractStringsFromEntries(parsed: {\n entries: (string | Record<string, unknown>)[];\n}): string[] {\n const strings: string[] = [];\n for (const entry of parsed.entries) {\n if (typeof entry === \"string\") {\n strings.push(entry);\n } else {\n // Rich text: concatenate run texts\n const runs = entry.runs as { text: string }[] | undefined;\n if (runs && runs.length > 0) {\n strings.push(runs.map((r) => r.text).join(\"\"));\n }\n }\n }\n return strings;\n}\n\n/**\n * Parse a .xlsx file and convert it into WorkbookOptions.\n *\n * The returned options can be passed to `new Workbook(parsed)`.\n */\nexport function parseWorkbook(data: DataType): WorkbookOptions {\n const xlsx = parseXlsx(data);\n\n const opts: Record<string, unknown> = {};\n\n // Core properties\n if (xlsx.coreProps) {\n const corePropsEl = xlsx.doc.get(xlsx.coreProps);\n if (corePropsEl) {\n const cp = parseCorePropsElement(corePropsEl);\n if (cp.title) opts.title = cp.title;\n if (cp.subject) opts.subject = cp.subject;\n if (cp.creator) opts.creator = cp.creator;\n if (cp.keywords) opts.keywords = cp.keywords;\n if (cp.description) opts.description = cp.description;\n if (cp.lastModifiedBy) opts.lastModifiedBy = cp.lastModifiedBy;\n if (cp.revision !== undefined) opts.revision = cp.revision;\n if (cp.lastPrinted) opts.lastPrinted = cp.lastPrinted;\n if (cp.created) opts.created = cp.created;\n if (cp.modified) opts.modified = cp.modified;\n }\n }\n\n // Extended (app) properties\n if (xlsx.appProps) {\n const appPropsEl = xlsx.doc.get(xlsx.appProps);\n if (appPropsEl) {\n const ap = appPropertiesDesc.parse(appPropsEl, {} as ReadContext);\n if (ap && Object.keys(ap).length > 0) opts.appProperties = ap;\n }\n }\n\n // Custom properties\n if (xlsx.customProps) {\n const customPropsEl = xlsx.doc.get(xlsx.customProps);\n if (customPropsEl) {\n const cp = customPropertiesDesc.parse(customPropsEl, {} as ReadContext);\n if (cp.properties?.length) opts.customProperties = cp.properties;\n }\n }\n\n // Shared strings — use descriptor.parse() for richer data, then extract strings for lookup\n let strings: string[] = [];\n if (xlsx.sharedStrings) {\n const parsed = sharedStringsDesc.parse(xlsx.sharedStrings, {} as never) as {\n entries: (string | Record<string, unknown>)[];\n };\n strings = extractStringsFromEntries(parsed);\n }\n\n // Create read context for descriptor pipeline\n const readContext = new XlsxReadContext(xlsx, strings);\n\n // Parse styles (fonts, fills, borders, cellXfs)\n if (xlsx.styles) {\n const parsedStyles = stylesDesc.parse(xlsx.styles, readContext) as unknown as Record<\n string,\n unknown\n >;\n readContext.parsedStyles = parsedStyles;\n\n // Expose styles sections onto the returned opts for round-trip. compiler.ts\n // re-emits dxfs from options; colors/tableStyles/cellStyles/styleExtensions\n // are surfaced here even though the compiler currently only consumes dxfs,\n // so callers retain the parsed data and the fields stay documented.\n if (parsedStyles.dxfs) opts.dxfs = parsedStyles.dxfs;\n if (parsedStyles.colors) opts.colors = parsedStyles.colors;\n if (parsedStyles.customCellStyles) opts.cellStyles = parsedStyles.customCellStyles;\n if (parsedStyles.styleExtensions) opts.styleExtensions = parsedStyles.styleExtensions;\n const tableStylesInfo = parsedStyles.tableStylesInfo as { tableStyles?: unknown[] } | undefined;\n if (tableStylesInfo?.tableStyles) opts.tableStyles = tableStylesInfo.tableStyles;\n }\n\n // Parse workbook via descriptor for richer data\n let sheetNames: string[] = [];\n if (xlsx.workbook) {\n const wbData = workbookDesc.parse(xlsx.workbook, readContext) as unknown as Record<\n string,\n unknown\n >;\n const sheets = wbData.sheets as\n | { name: string; sheetId: number; rId: string; state?: string }[]\n | undefined;\n if (sheets) sheetNames = sheets.map((s) => s.name);\n\n // Workbook-level properties\n if (wbData.protection) opts.workbookProtection = wbData.protection;\n if (wbData.bookView) opts.bookView = wbData.bookView;\n if (wbData.calcPr) opts.calcPr = wbData.calcPr;\n if (wbData.customViews) opts.customWorkbookViews = wbData.customViews;\n if (wbData.fileRecoveryPr) opts.fileRecoveryPr = wbData.fileRecoveryPr;\n if (wbData.functionGroups) opts.functionGroups = wbData.functionGroups;\n if (wbData.webPublishing) opts.webPublishing = wbData.webPublishing;\n if (wbData.fileSharing) opts.fileSharing = wbData.fileSharing;\n if (wbData.workbookPr) opts.workbookPr = wbData.workbookPr;\n if (wbData.volTypes) opts.volTypes = wbData.volTypes;\n if (wbData.webPublishObjects) opts.webPublishObjects = wbData.webPublishObjects;\n }\n\n // Parse worksheets using descriptor pipeline\n const worksheets: WorksheetOptions[] = [];\n for (let i = 0; i < xlsx.worksheets.length; i++) {\n const wsPath = xlsx.worksheets[i];\n const wsEl = xlsx.doc.get(wsPath);\n if (!wsEl) continue;\n\n const wsOpts = worksheetDesc.parse(wsEl, readContext) as Record<string, unknown>;\n if (sheetNames[i]) wsOpts.name = sheetNames[i];\n\n // ── Resolve sub-parts via worksheet relationships ──\n\n // Comments\n const commentRels = readContext.getWorksheetRelsByType(wsPath, \"/comments\");\n for (const cr of commentRels) {\n const commentEl = xlsx.doc.get(cr.target);\n if (!commentEl) continue;\n const commentData = commentsDesc.parse(commentEl, readContext) as unknown as Record<\n string,\n unknown\n >;\n if (commentData.comments) {\n wsOpts.comments = commentData.comments;\n break; // one comments file per worksheet\n }\n }\n\n // Drawings (images + charts)\n const drawingRels = readContext.getWorksheetRelsByType(wsPath, \"/drawing\");\n for (const dr of drawingRels) {\n const drawingEl = xlsx.doc.get(dr.target);\n if (!drawingEl) continue;\n const drawingData = drawingDesc.parse(drawingEl, readContext);\n if (drawingData.images) wsOpts.images = drawingData.images;\n if (drawingData.charts) wsOpts.charts = drawingData.charts;\n break;\n }\n\n // Tables\n const tableRels = readContext.getWorksheetRelsByType(wsPath, \"/table\");\n if (tableRels.length > 0) {\n const tables: Record<string, unknown>[] = [];\n for (const tr of tableRels) {\n const tableEl = xlsx.doc.get(tr.target);\n if (!tableEl) continue;\n const tableData = tableDesc.parse(tableEl, readContext) as unknown as Record<\n string,\n unknown\n >;\n tables.push(tableData);\n }\n if (tables.length > 0) wsOpts.tables = tables;\n }\n\n // Pivot tables\n const pivotRels = readContext.getWorksheetRelsByType(wsPath, \"/pivotTable\");\n if (pivotRels.length > 0) {\n const pivotTables: Record<string, unknown>[] = [];\n for (const pr of pivotRels) {\n const pivotEl = xlsx.doc.get(pr.target);\n if (!pivotEl) continue;\n const pivotData = pivotTableDesc.parse(pivotEl, readContext) as unknown as Record<\n string,\n unknown\n >;\n pivotTables.push(pivotData);\n }\n if (pivotTables.length > 0) wsOpts.pivotTables = pivotTables;\n }\n\n // Resolve external hyperlink URLs\n const hyperlinks = wsOpts.hyperlinks as Record<string, unknown>[] | undefined;\n if (hyperlinks) {\n for (const hl of hyperlinks) {\n const target = hl.target as Record<string, unknown> | undefined;\n if (target?.type === \"external\" && typeof target.url === \"string\") {\n const resolved = readContext.resolveWorksheetRel(wsPath, target.url);\n if (resolved) target.url = resolved;\n }\n }\n }\n\n worksheets.push(wsOpts as WorksheetOptions);\n }\n\n opts.worksheets = worksheets;\n\n // Chartsheets — parse chartsheet parts\n const chartsheetPaths = xlsx.doc.keys(\"xl/chartsheets/\").filter((k) => k.endsWith(\".xml\"));\n if (chartsheetPaths.length > 0) {\n const chartsheets: ChartsheetOptions[] = [];\n for (let i = 0; i < chartsheetPaths.length; i++) {\n const csEl = xlsx.doc.get(chartsheetPaths[i]);\n if (!csEl) continue;\n const csData = chartsheetDesc.parse(csEl, readContext) as unknown as Record<string, unknown>;\n if (sheetNames[worksheets.length + i]) csData.name = sheetNames[worksheets.length + i];\n chartsheets.push(csData as unknown as ChartsheetOptions);\n }\n if (chartsheets.length > 0) opts.chartsheets = chartsheets;\n }\n\n // Pivot cache definitions and records\n const pivotCacheDefPaths = xlsx.doc\n .keys(\"xl/pivotCache/\")\n .filter((k) => k.includes(\"pivotCacheDefinition\"));\n if (pivotCacheDefPaths.length > 0) {\n const pivotCaches: Record<string, unknown>[] = [];\n for (const pcdPath of pivotCacheDefPaths) {\n const pcdEl = xlsx.doc.get(pcdPath);\n if (!pcdEl) continue;\n const pcdData = pivotCacheDefDesc.parse(pcdEl, readContext) as unknown as Record<\n string,\n unknown\n >;\n pivotCaches.push(pcdData);\n }\n if (pivotCaches.length > 0) opts.pivotCaches = pivotCaches;\n }\n\n const pivotCacheRecPaths = xlsx.doc\n .keys(\"xl/pivotCache/\")\n .filter((k) => k.includes(\"pivotCacheRecords\"));\n if (pivotCacheRecPaths.length > 0) {\n const pivotCacheRecords: Record<string, unknown>[] = [];\n for (const pcrPath of pivotCacheRecPaths) {\n const pcrEl = xlsx.doc.get(pcrPath);\n if (!pcrEl) continue;\n const pcrData = pivotCacheRecordsDesc.parse(pcrEl, readContext) as unknown as Record<\n string,\n unknown\n >;\n pivotCacheRecords.push(pcrData);\n }\n if (pivotCacheRecords.length > 0) opts.pivotCacheRecords = pivotCacheRecords;\n }\n\n // Calculation chain\n const calcChainEl = xlsx.doc.get(\"xl/calcChain.xml\");\n if (calcChainEl) {\n const calcData = calcChainDesc.parse(calcChainEl, readContext) as unknown as Record<\n string,\n unknown\n >;\n if (calcData.cells) opts.calcChain = calcData.cells;\n }\n\n // External links\n const extLinkPaths = xlsx.doc.keys(\"xl/externalLinks/\").filter((k) => k.endsWith(\".xml\"));\n if (extLinkPaths.length > 0) {\n const externalLinks: Record<string, unknown>[] = [];\n for (const elPath of extLinkPaths) {\n const elEl = xlsx.doc.get(elPath);\n if (!elEl) continue;\n const elData = externalLinkDesc.parse(elEl, readContext) as Record<string, unknown>;\n\n // Resolve the external book target from the sibling rels file\n // (xl/externalLinks/_rels/externalLinkN.xml.rels), which compiler.ts writes.\n const elData2 = elData as { externalBook?: { target?: string } };\n if (elData2.externalBook) {\n const relsPath = externalLinkRelsPath(elPath);\n const relsEl = xlsx.doc.get(relsPath);\n if (relsEl) {\n for (const child of relsEl.elements ?? []) {\n if (child.name !== \"Relationship\") continue;\n const type = attr(child, \"Type\") ?? \"\";\n if (!type.includes(\"/externalLinkPath\")) continue;\n const target = attr(child, \"Target\");\n if (target) {\n elData2.externalBook.target = target;\n break;\n }\n }\n }\n }\n\n externalLinks.push(elData);\n }\n if (externalLinks.length > 0) opts.externalLinks = externalLinks;\n }\n\n // Shared-workbook revisions: workbook.xml.rels → revisionHeaders/users;\n // revisionHeaders.xml.rels → per-header revision logs.\n const wbRelsEl2 = xlsx.doc.get(\"xl/_rels/workbook.xml.rels\");\n let revHeadersTarget: string | undefined;\n let usersTarget: string | undefined;\n if (wbRelsEl2) {\n for (const child of wbRelsEl2.elements ?? []) {\n if (child.name !== \"Relationship\") continue;\n const type = attr(child, \"Type\") ?? \"\";\n const target = attr(child, \"Target\") ?? \"\";\n if (type.includes(\"/revisionHeaders\")) revHeadersTarget = target;\n else if (type.includes(\"/users\")) usersTarget = target;\n }\n }\n if (revHeadersTarget) {\n const headersPath = revHeadersTarget.startsWith(\"/\")\n ? revHeadersTarget.slice(1)\n : `xl/${revHeadersTarget}`;\n const headersEl = xlsx.doc.get(headersPath);\n if (headersEl) {\n const headers = revisionHeadersDesc.parse(headersEl, readContext);\n const logs: RevisionLogOptions[] = [];\n const slash = headersPath.lastIndexOf(\"/\");\n const revHeadersRelsEl = xlsx.doc.get(\n `${headersPath.slice(0, slash)}/_rels/${headersPath.slice(slash + 1)}.rels`,\n );\n if (revHeadersRelsEl) {\n for (const child of revHeadersRelsEl.elements ?? []) {\n if (child.name !== \"Relationship\") continue;\n if (!(attr(child, \"Type\") ?? \"\").includes(\"/revisionLog\")) continue;\n const t = attr(child, \"Target\");\n if (!t) continue;\n const logEl = xlsx.doc.get(t.startsWith(\"/\") ? t.slice(1) : `xl/${t}`);\n if (logEl) logs.push(revisionLogDesc.parse(logEl, readContext));\n }\n }\n const revisionLog: SharedWorkbookOptions = { headers, logs };\n if (usersTarget) {\n const usersEl = xlsx.doc.get(\n usersTarget.startsWith(\"/\") ? usersTarget.slice(1) : `xl/${usersTarget}`,\n );\n if (usersEl) {\n const users = usersDesc.parse(usersEl, readContext);\n if (users.users) revisionLog.users = users;\n }\n }\n opts.revisionLog = revisionLog;\n }\n }\n\n return opts as WorkbookOptions;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse.mjs","names":[],"sources":["../src/parse.ts"],"sourcesContent":["/**\n * XLSX parsing — parse .xlsx files into structured data.\n *\n * @module\n */\nimport {\n appPropertiesDesc,\n customPropertiesDesc,\n parseArchive,\n parseCorePropsElement,\n} from \"@office-open/core\";\nimport type { ParsedArchive } from \"@office-open/core\";\nimport { toUint8Array } from \"@office-open/core\";\nimport type { DataType } from \"@office-open/core\";\nimport type { ReadContext } from \"@office-open/core/descriptor\";\nimport type { Element } from \"@office-open/xml\";\nimport { attr } from \"@office-open/xml\";\nimport { calcChainDesc } from \"@parts/calc-chain\";\nimport { chartsheetDesc } from \"@parts/chartsheet\";\nimport type { ChartsheetOptions } from \"@parts/chartsheet\";\nimport { commentsDesc } from \"@parts/comments\";\nimport { drawingDesc } from \"@parts/drawing\";\nimport { externalLinkDesc } from \"@parts/external-link\";\nimport type { ExternalLinkOptions } from \"@parts/external-link\";\nimport type { SharedWorkbookOptions, WorkbookOptions } from \"@parts/file\";\nimport { pivotCacheDefDesc, pivotCacheRecordsDesc } from \"@parts/pivot-cache\";\nimport type { PivotCacheDefParseResult, PivotCacheRecordsParseResult } from \"@parts/pivot-cache\";\nimport { pivotTableDesc } from \"@parts/pivot-table\";\nimport type { PivotTableParseResult } from \"@parts/pivot-table\";\nimport type { PivotTableOptions } from \"@parts/pivot/pivot-utils\";\nimport {\n revisionHeadersDesc,\n revisionLogDesc,\n usersDesc,\n type RevisionLogOptions,\n} from \"@parts/revision-log\";\nimport { sharedStringsDesc } from \"@parts/shared-strings\";\nimport type { SharedStringsDocOptions } from \"@parts/shared-strings\";\nimport { stylesDesc } from \"@parts/styles\";\nimport { tableDesc } from \"@parts/table\";\nimport type { TableOptions } from \"@parts/table\";\nimport { workbookDesc } from \"@parts/workbook\";\nimport { worksheetDesc } from \"@parts/worksheet\";\nimport type {\n WorksheetChartOptions,\n WorksheetImageOptions,\n WorksheetOptions,\n} from \"@parts/worksheet\";\n\nimport { XlsxReadContext } from \"./context\";\n\nexport { parseArchive };\n\n// ── Low-level parse result ──\n\nexport interface XlsxPartRefs {\n worksheets: string[];\n charts: string[];\n media: string[];\n drawings: string[];\n}\n\nexport interface XlsxDocument {\n doc: ParsedArchive;\n /** xl/workbook.xml root element */\n workbook?: Element;\n /** Worksheet paths (xl/worksheets/sheet{n}.xml) */\n worksheets: string[];\n /** xl/styles.xml root element */\n styles?: Element;\n /** xl/sharedStrings.xml root element */\n sharedStrings?: Element;\n partRefs: XlsxPartRefs;\n /** docProps/core.xml path */\n coreProps?: string;\n /** docProps/app.xml path */\n appProps?: string;\n /** docProps/custom.xml path */\n customProps?: string;\n}\n\nfunction sortByNumber(paths: string[]): string[] {\n return paths.sort((a, b) => {\n const numA = parseInt(a.match(/(\\d+)/)?.[1] ?? \"0\", 10);\n const numB = parseInt(b.match(/(\\d+)/)?.[1] ?? \"0\", 10);\n return numA - numB;\n });\n}\n\n/** Derive the sibling rels path for an external link part.\n * \"xl/externalLinks/externalLink1.xml\" → \"xl/externalLinks/_rels/externalLink1.xml.rels\"\n */\nfunction externalLinkRelsPath(elPath: string): string {\n const idx = elPath.lastIndexOf(\"/\");\n const dir = elPath.substring(0, idx);\n const file = elPath.substring(idx + 1);\n return `${dir}/_rels/${file}.rels`;\n}\n\n/**\n * Parse raw .xlsx data into a low-level XlsxDocument.\n */\nexport function parseXlsx(data: DataType): XlsxDocument {\n const uint8 = toUint8Array(data);\n const doc = parseArchive(uint8);\n\n const workbook = doc.get(\"xl/workbook.xml\");\n const styles = doc.get(\"xl/styles.xml\");\n const sharedStrings = doc.get(\"xl/sharedStrings.xml\");\n\n // Resolve worksheet paths from workbook rels\n const worksheets: string[] = [];\n const charts: string[] = [];\n const drawings: string[] = [];\n const media: string[] = [];\n\n const wbRels = doc.get(\"xl/_rels/workbook.xml.rels\");\n if (wbRels) {\n for (const child of wbRels.elements ?? []) {\n if (child.name !== \"Relationship\") continue;\n const type = attr(child, \"Type\") ?? \"\";\n const target = attr(child, \"Target\") ?? \"\";\n if (!target) continue;\n\n if (type.includes(\"/worksheet\")) {\n worksheets.push(target.startsWith(\"/\") ? target.slice(1) : `xl/${target}`);\n }\n }\n }\n sortByNumber(worksheets);\n\n // Scan for drawings, charts, media\n drawings.push(...doc.keys(\"xl/drawings/\").filter((k) => k.endsWith(\".xml\")));\n charts.push(...doc.keys(\"xl/charts/\").filter((k) => k.endsWith(\".xml\")));\n media.push(...doc.keys(\"xl/media/\"));\n sortByNumber(drawings);\n sortByNumber(charts);\n\n // Root rels → core/app props\n let coreProps: string | undefined;\n let appProps: string | undefined;\n let customProps: string | undefined;\n const rootRels = doc.get(\"_rels/.rels\");\n if (rootRels) {\n for (const child of rootRels.elements ?? []) {\n if (child.name !== \"Relationship\") continue;\n const type = attr(child, \"Type\") ?? \"\";\n const target = attr(child, \"Target\") ?? \"\";\n if (type.includes(\"/core-properties\")) coreProps = target;\n else if (type.includes(\"/extended-properties\")) appProps = target;\n else if (type.includes(\"/custom-properties\")) customProps = target;\n }\n }\n\n return {\n doc,\n workbook,\n worksheets,\n styles,\n sharedStrings,\n partRefs: { worksheets, charts, media, drawings },\n coreProps,\n appProps,\n customProps,\n };\n}\n\n// ── Shared strings helper ──\n\n/** Extract plain string array from sharedStringsDesc.parse() result. */\nfunction extractStringsFromEntries(parsed: SharedStringsDocOptions): string[] {\n const strings: string[] = [];\n for (const entry of parsed.entries) {\n if (typeof entry === \"string\") {\n strings.push(entry);\n } else if (entry.runs && entry.runs.length > 0) {\n // Rich text: concatenate run texts\n strings.push(entry.runs.map((r) => r.text).join(\"\"));\n }\n }\n return strings;\n}\n\n/**\n * Parse a .xlsx file and convert it into WorkbookOptions.\n *\n * The returned options can be passed to `new Workbook(parsed)`.\n */\nexport function parseWorkbook(data: DataType): WorkbookOptions {\n const xlsx = parseXlsx(data);\n\n const opts: Partial<WorkbookOptions> = {};\n\n // Core properties\n if (xlsx.coreProps) {\n const corePropsEl = xlsx.doc.get(xlsx.coreProps);\n if (corePropsEl) {\n const cp = parseCorePropsElement(corePropsEl);\n if (cp.title) opts.title = cp.title;\n if (cp.subject) opts.subject = cp.subject;\n if (cp.creator) opts.creator = cp.creator;\n if (cp.keywords) opts.keywords = cp.keywords;\n if (cp.description) opts.description = cp.description;\n if (cp.lastModifiedBy) opts.lastModifiedBy = cp.lastModifiedBy;\n if (cp.revision !== undefined) opts.revision = cp.revision;\n if (cp.lastPrinted) opts.lastPrinted = cp.lastPrinted;\n if (cp.created) opts.created = cp.created;\n if (cp.modified) opts.modified = cp.modified;\n }\n }\n\n // Extended (app) properties\n if (xlsx.appProps) {\n const appPropsEl = xlsx.doc.get(xlsx.appProps);\n if (appPropsEl) {\n const ap = appPropertiesDesc.parse(appPropsEl, {} as ReadContext);\n if (ap && Object.keys(ap).length > 0) opts.appProperties = ap;\n }\n }\n\n // Custom properties\n if (xlsx.customProps) {\n const customPropsEl = xlsx.doc.get(xlsx.customProps);\n if (customPropsEl) {\n const cp = customPropertiesDesc.parse(customPropsEl, {} as ReadContext);\n if (cp.properties?.length) opts.customProperties = cp.properties;\n }\n }\n\n // Shared strings — use descriptor.parse() for richer data, then extract strings for lookup\n let strings: string[] = [];\n if (xlsx.sharedStrings) {\n const parsed = sharedStringsDesc.parse(xlsx.sharedStrings, {} as never);\n strings = extractStringsFromEntries(parsed);\n }\n\n // Create read context for descriptor pipeline\n const readContext = new XlsxReadContext(xlsx, strings);\n\n // Parse styles (fonts, fills, borders, cellXfs)\n if (xlsx.styles) {\n const parsedStyles = stylesDesc.parse(xlsx.styles, readContext);\n readContext.parsedStyles = parsedStyles;\n\n // Expose styles sections onto the returned opts for round-trip. compiler.ts\n // re-emits dxfs from options; colors/tableStyles/cellStyles/styleExtensions\n // are surfaced here even though the compiler currently only consumes dxfs,\n // so callers retain the parsed data and the fields stay documented.\n if (parsedStyles.dxfs) opts.dxfs = parsedStyles.dxfs;\n if (parsedStyles.colors) opts.colors = parsedStyles.colors;\n if (parsedStyles.customCellStyles) opts.cellStyles = parsedStyles.customCellStyles;\n if (parsedStyles.styleExtensions) opts.styleExtensions = parsedStyles.styleExtensions;\n if (parsedStyles.tableStylesInfo?.tableStyles)\n opts.tableStyles = parsedStyles.tableStylesInfo.tableStyles;\n }\n\n // Parse workbook via descriptor for richer data\n let sheetNames: string[] = [];\n if (xlsx.workbook) {\n const wbData = workbookDesc.parse(xlsx.workbook, readContext);\n if (wbData.sheets) sheetNames = wbData.sheets.map((s) => s.name);\n\n // Workbook-level properties\n if (wbData.protection) opts.workbookProtection = wbData.protection;\n if (wbData.bookView) opts.bookView = wbData.bookView;\n if (wbData.calcPr) opts.calcPr = wbData.calcPr;\n if (wbData.customViews) opts.customWorkbookViews = wbData.customViews;\n if (wbData.fileRecoveryPr) opts.fileRecoveryPr = wbData.fileRecoveryPr;\n if (wbData.functionGroups) opts.functionGroups = wbData.functionGroups;\n if (wbData.webPublishing) opts.webPublishing = wbData.webPublishing;\n if (wbData.fileSharing) opts.fileSharing = wbData.fileSharing;\n if (wbData.workbookPr) opts.workbookPr = wbData.workbookPr;\n if (wbData.volTypes) opts.volTypes = wbData.volTypes;\n if (wbData.webPublishObjects) opts.webPublishObjects = wbData.webPublishObjects;\n }\n\n // Parse worksheets using descriptor pipeline\n const worksheets: WorksheetOptions[] = [];\n for (let i = 0; i < xlsx.worksheets.length; i++) {\n const wsPath = xlsx.worksheets[i];\n const wsEl = xlsx.doc.get(wsPath);\n if (!wsEl) continue;\n\n const wsOpts = worksheetDesc.parse(wsEl, readContext);\n if (sheetNames[i]) wsOpts.name = sheetNames[i];\n\n // ── Resolve sub-parts via worksheet relationships ──\n\n // Comments\n const commentRels = readContext.getWorksheetRelsByType(wsPath, \"/comments\");\n for (const cr of commentRels) {\n const commentEl = xlsx.doc.get(cr.target);\n if (!commentEl) continue;\n const commentData = commentsDesc.parse(commentEl, readContext);\n if (commentData.comments) {\n wsOpts.comments = commentData.comments;\n break; // one comments file per worksheet\n }\n }\n\n // Drawings (images + charts)\n const drawingRels = readContext.getWorksheetRelsByType(wsPath, \"/drawing\");\n for (const dr of drawingRels) {\n const drawingEl = xlsx.doc.get(dr.target);\n if (!drawingEl) continue;\n const drawingData = drawingDesc.parse(drawingEl, readContext);\n // drawingDesc.parse yields CT-layer shapes (rId-anchored DrawingImage/\n // DrawingChart), while WorksheetOptions.images/charts are the user-layer\n // shapes (data bytes / ChartSpace content). The shapes are not\n // interchangeable — round-trip drawings are lossy — these casts mark the\n // known impedance, same as wsOpts.pivotTables above.\n if (drawingData.images)\n wsOpts.images = drawingData.images as unknown as WorksheetImageOptions[];\n if (drawingData.charts)\n wsOpts.charts = drawingData.charts as unknown as WorksheetChartOptions[];\n break;\n }\n\n // Tables\n const tableRels = readContext.getWorksheetRelsByType(wsPath, \"/table\");\n if (tableRels.length > 0) {\n const tables: TableOptions[] = [];\n for (const tr of tableRels) {\n const tableEl = xlsx.doc.get(tr.target);\n if (!tableEl) continue;\n const tableData = tableDesc.parse(tableEl, readContext);\n tables.push(tableData);\n }\n if (tables.length > 0) wsOpts.tables = tables;\n }\n\n // Pivot tables\n const pivotRels = readContext.getWorksheetRelsByType(wsPath, \"/pivotTable\");\n if (pivotRels.length > 0) {\n const pivotTables: PivotTableParseResult[] = [];\n for (const pr of pivotRels) {\n const pivotEl = xlsx.doc.get(pr.target);\n if (!pivotEl) continue;\n const pivotData = pivotTableDesc.parse(pivotEl, readContext);\n pivotTables.push(pivotData);\n }\n // WorksheetOptions.pivotTables is PivotTableOptions[] (user-layer) for the\n // compiler's stringify; parse yields the CT-layer PivotTableParseResult.\n // The shapes are not interchangeable (index-based vs name-based), so\n // round-trip pivot tables are lossy — this cast marks the known impedance.\n if (pivotTables.length > 0)\n wsOpts.pivotTables = pivotTables as unknown as PivotTableOptions[];\n }\n\n // Resolve external hyperlink URLs\n const hyperlinks = wsOpts.hyperlinks;\n if (hyperlinks) {\n for (const hl of hyperlinks) {\n if (hl.target.type === \"external\") {\n const resolved = readContext.resolveWorksheetRel(wsPath, hl.target.url);\n if (resolved) hl.target.url = resolved;\n }\n }\n }\n\n worksheets.push(wsOpts as WorksheetOptions);\n }\n\n opts.worksheets = worksheets;\n\n // Chartsheets — parse chartsheet parts\n const chartsheetPaths = xlsx.doc.keys(\"xl/chartsheets/\").filter((k) => k.endsWith(\".xml\"));\n if (chartsheetPaths.length > 0) {\n const chartsheets: ChartsheetOptions[] = [];\n for (let i = 0; i < chartsheetPaths.length; i++) {\n const csEl = xlsx.doc.get(chartsheetPaths[i]);\n if (!csEl) continue;\n const csData = chartsheetDesc.parse(csEl, readContext);\n if (sheetNames[worksheets.length + i]) csData.name = sheetNames[worksheets.length + i];\n chartsheets.push(csData);\n }\n if (chartsheets.length > 0) opts.chartsheets = chartsheets;\n }\n\n // Pivot cache definitions and records\n const pivotCacheDefPaths = xlsx.doc\n .keys(\"xl/pivotCache/\")\n .filter((k) => k.includes(\"pivotCacheDefinition\"));\n if (pivotCacheDefPaths.length > 0) {\n const pivotCaches: PivotCacheDefParseResult[] = [];\n for (const pcdPath of pivotCacheDefPaths) {\n const pcdEl = xlsx.doc.get(pcdPath);\n if (!pcdEl) continue;\n const pcdData = pivotCacheDefDesc.parse(pcdEl, readContext);\n pivotCaches.push(pcdData);\n }\n if (pivotCaches.length > 0) opts.pivotCaches = pivotCaches;\n }\n\n const pivotCacheRecPaths = xlsx.doc\n .keys(\"xl/pivotCache/\")\n .filter((k) => k.includes(\"pivotCacheRecords\"));\n if (pivotCacheRecPaths.length > 0) {\n const pivotCacheRecords: PivotCacheRecordsParseResult[] = [];\n for (const pcrPath of pivotCacheRecPaths) {\n const pcrEl = xlsx.doc.get(pcrPath);\n if (!pcrEl) continue;\n const pcrData = pivotCacheRecordsDesc.parse(pcrEl, readContext);\n pivotCacheRecords.push(pcrData);\n }\n if (pivotCacheRecords.length > 0) opts.pivotCacheRecords = pivotCacheRecords;\n }\n\n // Calculation chain\n const calcChainEl = xlsx.doc.get(\"xl/calcChain.xml\");\n if (calcChainEl) {\n const calcData = calcChainDesc.parse(calcChainEl, readContext);\n if (calcData.cells) opts.calcChain = calcData.cells;\n }\n\n // External links\n const extLinkPaths = xlsx.doc.keys(\"xl/externalLinks/\").filter((k) => k.endsWith(\".xml\"));\n if (extLinkPaths.length > 0) {\n const externalLinks: ExternalLinkOptions[] = [];\n for (const elPath of extLinkPaths) {\n const elEl = xlsx.doc.get(elPath);\n if (!elEl) continue;\n const elData = externalLinkDesc.parse(elEl, readContext);\n\n // Resolve the external book target from the sibling rels file\n // (xl/externalLinks/_rels/externalLinkN.xml.rels), which compiler.ts writes.\n if (elData.externalBook) {\n const relsPath = externalLinkRelsPath(elPath);\n const relsEl = xlsx.doc.get(relsPath);\n if (relsEl) {\n for (const child of relsEl.elements ?? []) {\n if (child.name !== \"Relationship\") continue;\n const type = attr(child, \"Type\") ?? \"\";\n if (!type.includes(\"/externalLinkPath\")) continue;\n const target = attr(child, \"Target\");\n if (target) {\n elData.externalBook.target = target;\n break;\n }\n }\n }\n }\n\n externalLinks.push(elData);\n }\n if (externalLinks.length > 0) opts.externalLinks = externalLinks;\n }\n\n // Shared-workbook revisions: workbook.xml.rels → revisionHeaders/users;\n // revisionHeaders.xml.rels → per-header revision logs.\n const wbRelsEl2 = xlsx.doc.get(\"xl/_rels/workbook.xml.rels\");\n let revHeadersTarget: string | undefined;\n let usersTarget: string | undefined;\n if (wbRelsEl2) {\n for (const child of wbRelsEl2.elements ?? []) {\n if (child.name !== \"Relationship\") continue;\n const type = attr(child, \"Type\") ?? \"\";\n const target = attr(child, \"Target\") ?? \"\";\n if (type.includes(\"/revisionHeaders\")) revHeadersTarget = target;\n else if (type.includes(\"/users\")) usersTarget = target;\n }\n }\n if (revHeadersTarget) {\n const headersPath = revHeadersTarget.startsWith(\"/\")\n ? revHeadersTarget.slice(1)\n : `xl/${revHeadersTarget}`;\n const headersEl = xlsx.doc.get(headersPath);\n if (headersEl) {\n const headers = revisionHeadersDesc.parse(headersEl, readContext);\n const logs: RevisionLogOptions[] = [];\n const slash = headersPath.lastIndexOf(\"/\");\n const revHeadersRelsEl = xlsx.doc.get(\n `${headersPath.slice(0, slash)}/_rels/${headersPath.slice(slash + 1)}.rels`,\n );\n if (revHeadersRelsEl) {\n for (const child of revHeadersRelsEl.elements ?? []) {\n if (child.name !== \"Relationship\") continue;\n if (!(attr(child, \"Type\") ?? \"\").includes(\"/revisionLog\")) continue;\n const t = attr(child, \"Target\");\n if (!t) continue;\n const logEl = xlsx.doc.get(t.startsWith(\"/\") ? t.slice(1) : `xl/${t}`);\n if (logEl) logs.push(revisionLogDesc.parse(logEl, readContext));\n }\n }\n const revisionLog: SharedWorkbookOptions = { headers, logs };\n if (usersTarget) {\n const usersEl = xlsx.doc.get(\n usersTarget.startsWith(\"/\") ? usersTarget.slice(1) : `xl/${usersTarget}`,\n );\n if (usersEl) {\n const users = usersDesc.parse(usersEl, readContext);\n if (users.users) revisionLog.users = users;\n }\n }\n opts.revisionLog = revisionLog;\n }\n }\n\n return opts as WorkbookOptions;\n}\n"],"mappings":"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"}
|
package/dist/patch.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as WorksheetOptions, o as CommentOptions } from "./worksheet-
|
|
1
|
+
import { D as WorksheetOptions, o as CommentOptions } from "./worksheet-C9CP2B97.mjs";
|
|
2
2
|
import { BasePatchOptions, CorePropertiesOptions, OutputByType, OutputType } from "@office-open/core";
|
|
3
3
|
|
|
4
4
|
//#region src/patch.d.ts
|
package/dist/patch.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch.d.mts","names":[],"sources":["../src/patch.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"patch.d.mts","names":[],"sources":["../src/patch.ts"],"mappings":";;;;KA6CY,WAAA,+BAA0C,IAAI;AAAA,KAG9C,KAAA,GAAQ,WAAW;AAAA,UAEd,oBAAA,WACL,UAAA,GAAa,UAAA,UACf,gBAAA,CAAiB,CAAA;EAEzB,YAAA,GAAe,QAAA,CAAS,MAAA,SAAe,WAAA;EAEvC,WAAA,GAAc,QAAA,CAAS,MAAA,SAAe,WAAA;EAEtC,cAAA,GAAiB,OAAA,CAAQ,qBAAA;EAOzB,UAAA;IAEE,OAAA,GAAU,QAAA,CAAS,MAAA,SAAe,gBAAA;IAElC,MAAA,GAAS,QAAA,CAAS,gBAAA;EAAA;EAOpB,QAAA,GAAW,QAAA,CAAS,MAAA,SAAe,cAAA;AAAA;AAAA,cA4CxB,aAAA,aAAiC,UAAA,GAAa,UAAA;EAAY,UAAA;EAAA,IAAA;EAAA,YAAA;EAAA,WAAA;EAAA,cAAA;EAAA,UAAA;EAAA,QAAA;EAAA;AAAA,GASpE,oBAAA,CAAqB,CAAA,MAAK,OAAA,CAAQ,YAAA,CAAa,CAAA"}
|