@office-open/xlsx 0.9.3 → 0.9.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/{context-BXK92u5G.mjs → context-ChKe3x0r.mjs} +89 -14
- package/dist/context-ChKe3x0r.mjs.map +1 -0
- package/dist/{worksheet--3Qbjk4x.d.mts → file-DQTBkYzl.d.mts} +25 -2
- package/dist/file-DQTBkYzl.d.mts.map +1 -0
- package/dist/{generate-BqlKnMiw.mjs → generate-DGqFsuiZ.mjs} +6 -2
- package/dist/generate-DGqFsuiZ.mjs.map +1 -0
- package/dist/generate.d.mts +10 -2
- package/dist/generate.d.mts.map +1 -0
- package/dist/generate.mjs +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/parse.d.mts +26 -2
- package/dist/parse.d.mts.map +1 -0
- package/dist/parse.mjs +32 -2
- package/dist/parse.mjs.map +1 -1
- package/package.json +3 -3
- package/dist/context-BXK92u5G.mjs.map +0 -1
- package/dist/generate-BqlKnMiw.mjs.map +0 -1
- package/dist/generate-DJhsIF31.d.mts +0 -26
- package/dist/generate-DJhsIF31.d.mts.map +0 -1
- package/dist/parse-DvLtpSVC.d.mts +0 -42
- package/dist/parse-DvLtpSVC.d.mts.map +0 -1
- package/dist/worksheet--3Qbjk4x.d.mts.map +0 -1
|
@@ -1297,6 +1297,7 @@ interface PageSetupOptions {
|
|
|
1297
1297
|
cellComments?: "none" | "asDisplayed" | "atEnd";
|
|
1298
1298
|
errors?: "displayed" | "blank" | "dash" | "NA";
|
|
1299
1299
|
autoPageBreaks?: boolean;
|
|
1300
|
+
fitToPage?: boolean;
|
|
1300
1301
|
}
|
|
1301
1302
|
interface TabColorOptions {
|
|
1302
1303
|
rgb?: string;
|
|
@@ -1497,6 +1498,8 @@ interface SheetPrOptions {
|
|
|
1497
1498
|
enableFormatConditionsCalculation?: boolean;
|
|
1498
1499
|
outlineApplyStyles?: boolean;
|
|
1499
1500
|
outlineShowSymbols?: boolean;
|
|
1501
|
+
outlineSummaryBelow?: boolean;
|
|
1502
|
+
outlineSummaryRight?: boolean;
|
|
1500
1503
|
}
|
|
1501
1504
|
interface IgnoredErrorOptions {
|
|
1502
1505
|
sqref: string;
|
|
@@ -1687,5 +1690,25 @@ interface WorksheetContext {
|
|
|
1687
1690
|
declare const worksheetDesc: CustomDescriptor<WorksheetOptions>;
|
|
1688
1691
|
declare function stringifyWorksheet(opts: WorksheetOptions, ctx: WorksheetContext): string;
|
|
1689
1692
|
//#endregion
|
|
1690
|
-
|
|
1691
|
-
|
|
1693
|
+
//#region src/parts/file.d.ts
|
|
1694
|
+
interface WorkbookOptions extends CorePropertiesOptions {
|
|
1695
|
+
worksheets?: WorksheetOptions[];
|
|
1696
|
+
chartsheets?: ChartsheetOptions[];
|
|
1697
|
+
dxfs?: DxfOptions[];
|
|
1698
|
+
colors?: ColorsOptions;
|
|
1699
|
+
tableStyles?: CustomTableStyleOptions[];
|
|
1700
|
+
cellStyles?: CustomCellStyleOptions[];
|
|
1701
|
+
styleExtensions?: StyleExtensionOptions[];
|
|
1702
|
+
workbookProtection?: WorkbookProtectionOptions;
|
|
1703
|
+
externalLinks?: ExternalLinkOptions[];
|
|
1704
|
+
customWorkbookViews?: CustomWorkbookViewOptions[];
|
|
1705
|
+
fileRecoveryPr?: FileRecoveryPrOptions;
|
|
1706
|
+
functionGroups?: string[];
|
|
1707
|
+
webPublishing?: WebPublishingOptions;
|
|
1708
|
+
fileSharing?: FileSharingOptions;
|
|
1709
|
+
volTypes?: VolTypeOptions[];
|
|
1710
|
+
webPublishObjects?: WebPublishObjectOptions[];
|
|
1711
|
+
}
|
|
1712
|
+
//#endregion
|
|
1713
|
+
export { OleItemOptions as $, worksheetDesc as A, ConsolidateFunction as B, ScenarioOptions as C, FontOptions as Ct, WorksheetContext as D, stylesDesc as Dt, WorksheetChartOptions as E, StylesDocOptions as Et, TotalsRowFunction as F, PivotSourceData as G, PivotDataField as H, tableDesc as I, ExternalCellOptions as J, PivotTableOptions as K, SharedStrings as L, TableOptions as M, TableStyleInfoOptions as N, WorksheetOptions as O, CorePropertiesOptions as Ot, TableType as P, ExternalSheetDataOptions as Q, SharedStringsDocOptions as R, ScenarioDefinition as S, FillOptions as St, SheetProtectionOptions as T, Styles as Tt, PivotFilterOptions as U, PivotCacheDefinitionOptions as V, PivotFilterType as W, ExternalLinkOptions as X, ExternalDefinedNameOptions as Y, ExternalRowOptions as Z, MergeCellOptions as _, workbookDesc as _t, ColorScaleOptions as a, ChartsheetPageMargins as at, RowOptions as b, BorderSideOptions as bt, ConditionalFormatOptions as c, chartsheetDesc as ct, DataValidationOptions as d, FileSharingOptions as dt, OleLinkOptions as et, FormulaOptions as f, PivotCacheReference as ft, IgnoredErrorOptions as g, buildTablePartsXml as gt, IconSetType as h, buildExternalReferencesXml as ht, CfvoType as i, ChartsheetOptions as it, TableColumnOptions as j, stringifyWorksheet as k, ConditionalFormatRule as l, CustomWorkbookViewOptions as lt, IconSetOptions as m, WorkbookProtectionOptions as mt, CellOptions as n, ChartsheetDescriptorOptions as nt, ColumnOptions as o, ChartsheetPageSetup as ot, FreezePaneOptions as p, WebPublishingOptions as pt, ExternalBookOptions as q, CfvoOptions as r, ChartsheetHeaderFooterOptions as rt, CommentOptions as s, ChartsheetProtectionOptions as st, WorkbookOptions as t, externalLinkDesc as tt, DataBarOptions as u, FileRecoveryPrOptions as ut, PhoneticPrOptions as v, AlignmentOptions as vt, SheetBackgroundImageOptions as w, StyleOptions as wt, ScenarioCellOptions as x, DxfOptions as xt, ProtectedRangeOptions as y, BorderOptions as yt, sharedStringsDesc as z };
|
|
1714
|
+
//# sourceMappingURL=file-DQTBkYzl.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-DQTBkYzl.d.mts","names":[],"sources":["../src/parts/core-properties.ts","../src/parts/styles.ts","../src/parts/workbook.ts","../src/parts/chartsheet.ts","../src/parts/external-link.ts","../src/parts/pivot/pivot-utils.ts","../src/parts/shared-strings.ts","../src/parts/table.ts","../src/parts/worksheet.ts","../src/parts/file.ts"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { E as sharedStringsDesc, _ as commentsDesc, a as workbookDesc, b as calcChainDesc, c as tableDesc, d as pivotTableDesc, g as drawingDesc, h as externalLinkDesc, i as buildTablePartsXml, l as pivotCacheDefDesc, m as collectUniqueValues, n as XlsxWriteContext, p as aggregate, r as buildExternalReferencesXml, u as pivotCacheRecordsDesc, v as vmlNotesDesc, w as stylesDesc, x as stringifyWorksheet, y as chartsheetDesc } from "./context-
|
|
1
|
+
import { E as sharedStringsDesc, _ as commentsDesc, a as workbookDesc, b as calcChainDesc, c as tableDesc, d as pivotTableDesc, g as drawingDesc, h as externalLinkDesc, i as buildTablePartsXml, l as pivotCacheDefDesc, m as collectUniqueValues, n as XlsxWriteContext, p as aggregate, r as buildExternalReferencesXml, u as pivotCacheRecordsDesc, v as vmlNotesDesc, w as stylesDesc, x as stringifyWorksheet, y as chartsheetDesc } from "./context-ChKe3x0r.mjs";
|
|
2
2
|
import { APP_PROPS_XML, OoxmlMimeType, Relationships, TargetModeType, buildCorePropertiesXmlString, compileMapping, createPacker } from "@office-open/core";
|
|
3
3
|
import { createThemeXml } from "@office-open/core/theme";
|
|
4
4
|
import { chartSpaceDesc } from "@office-open/core/chart";
|
|
@@ -37,6 +37,10 @@ function compileWorkbook(options, overrides = [], mediaLevel = 0) {
|
|
|
37
37
|
ctx.contentTypes.addSharedStrings();
|
|
38
38
|
ctx.contentTypes.addTheme();
|
|
39
39
|
for (const dxf of options.dxfs ?? []) ctx.registerDxf(dxf);
|
|
40
|
+
if (options.colors) ctx.styles.setColors(options.colors);
|
|
41
|
+
if (options.tableStyles) ctx.styles.setTableStyles(options.tableStyles);
|
|
42
|
+
if (options.cellStyles) ctx.styles.setCustomCellStyles(options.cellStyles);
|
|
43
|
+
if (options.styleExtensions) ctx.styles.setExtensions(options.styleExtensions);
|
|
40
44
|
buildWorkbookRelationships(ctx.workbookRels, worksheetConfigs.length, chartsheetConfigs.length);
|
|
41
45
|
const sheets = [];
|
|
42
46
|
let sheetId = 1;
|
|
@@ -793,4 +797,4 @@ function generateWorkbookStream(options, packerOptions) {
|
|
|
793
797
|
//#endregion
|
|
794
798
|
export { compileWorkbook as i, generateWorkbookStream as n, generateWorkbookSync as r, generateWorkbook as t };
|
|
795
799
|
|
|
796
|
-
//# sourceMappingURL=generate-
|
|
800
|
+
//# sourceMappingURL=generate-DGqFsuiZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-DGqFsuiZ.mjs","names":["buildWorksheetXml"],"sources":["../src/compiler.ts","../src/generate.ts"],"sourcesContent":["/**\n * XLSX Compiler — compiles WorkbookOptions into a Zippable structure.\n *\n * Accepts pure JSON WorkbookOptions — no intermediate File class needed.\n * Uses XlsxWriteContext for shared state (strings, styles, media, charts).\n *\n * @module\n */\n\nimport {\n APP_PROPS_XML,\n Relationships,\n TargetModeType,\n buildCorePropertiesXmlString,\n compileMapping,\n type XmlifyedFile,\n type Zippable,\n} from \"@office-open/core\";\nimport { chartSpaceDesc } from \"@office-open/core/chart\";\nimport type { CalcCell } from \"@parts/calc-chain\";\nimport { calcChainDesc } from \"@parts/calc-chain\";\nimport { chartsheetDesc } from \"@parts/chartsheet\";\nimport { commentsDesc, vmlNotesDesc } from \"@parts/comments\";\nimport type { ImageOptions, ChartAnchorOptions } from \"@parts/drawing\";\nimport { drawingDesc } from \"@parts/drawing\";\nimport { externalLinkDesc } from \"@parts/external-link\";\nimport type { WorkbookOptions } from \"@parts/file\";\nimport { aggregate, collectUniqueValues } from \"@parts/pivot\";\nimport type { PivotSourceData, PivotTableOptions } from \"@parts/pivot\";\nimport { pivotCacheDefDesc, pivotCacheRecordsDesc } from \"@parts/pivot-cache\";\nimport { pivotTableDesc } from \"@parts/pivot-table\";\nimport { sharedStringsDesc } from \"@parts/shared-strings\";\nimport type { SharedStrings } from \"@parts/shared-strings\";\nimport { stylesDesc } from \"@parts/styles\";\nimport { tableDesc } from \"@parts/table\";\nimport { createThemeXml } from \"@parts/theme\";\nimport type { TablePartReference, SheetDefinition } from \"@parts/workbook\";\nimport { workbookDesc, buildTablePartsXml, buildExternalReferencesXml } from \"@parts/workbook\";\nimport { buildWorksheetXml, type WorksheetContext } from \"@parts/worksheet\";\nimport type { RowOptions, WorksheetOptions } from \"@parts/worksheet\";\n\nimport { XlsxWriteContext } from \"./context\";\n\nconst XML_DECL = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>';\n\n/**\n * Compile workbook options into a Zippable structure.\n */\nexport function compileWorkbook(\n options: WorkbookOptions,\n overrides: XmlifyedFile[] = [],\n mediaLevel: number = 0,\n): Zippable {\n const ctx = new XlsxWriteContext();\n const mapping: Record<string, { data: string; path: string }> = {};\n\n const worksheetConfigs = options.worksheets ?? [];\n const chartsheetConfigs = options.chartsheets ?? [];\n\n // Core properties\n mapping[\"Properties\"] = {\n data: XML_DECL + buildCorePropertiesXmlString(options),\n path: \"docProps/core.xml\",\n };\n\n // App properties\n mapping[\"AppProperties\"] = {\n data: XML_DECL + APP_PROPS_XML,\n path: \"docProps/app.xml\",\n };\n\n // File-level relationships (_rels/.rels)\n const fileRels = buildFileRelationships();\n mapping[\"FileRelationships\"] = {\n data: XML_DECL + fileRels.serialize(),\n path: \"_rels/.rels\",\n };\n\n // Register base content types\n for (let i = 0; i < worksheetConfigs.length; i++) {\n ctx.contentTypes.addWorksheet(i + 1);\n }\n ctx.contentTypes.addStyles();\n ctx.contentTypes.addSharedStrings();\n ctx.contentTypes.addTheme();\n\n // Register predefined DXFs before worksheets use styles\n for (const dxf of options.dxfs ?? []) {\n ctx.registerDxf(dxf);\n }\n\n // Re-apply parsed style sections so a declarative round-trip preserves\n // them (colors, table/cell styles, extensions) alongside DXFs.\n if (options.colors) ctx.styles.setColors(options.colors);\n if (options.tableStyles) ctx.styles.setTableStyles(options.tableStyles);\n if (options.cellStyles) ctx.styles.setCustomCellStyles(options.cellStyles);\n if (options.styleExtensions) ctx.styles.setExtensions(options.styleExtensions);\n\n // Build workbook relationships\n buildWorkbookRelationships(ctx.workbookRels, worksheetConfigs.length, chartsheetConfigs.length);\n\n // Build sheet definitions for workbook XML\n const sheets: SheetDefinition[] = [];\n let sheetId = 1;\n let rId = 1;\n for (const ws of worksheetConfigs) {\n sheets.push({\n name: ws.name ?? `Sheet${sheetId}`,\n sheetId: sheetId++,\n rId: `rId${rId++}`,\n });\n }\n for (const cs of chartsheetConfigs) {\n sheets.push({\n name: cs.name ?? `Chart${sheetId}`,\n sheetId: sheetId++,\n rId: `rId${rId++}`,\n });\n }\n\n // Worksheets — formatted BEFORE SharedStrings so strings are registered\n let globalMediaIdx = 0;\n let globalChartIdx = 0;\n let globalPivotIdx = 0;\n let globalPivotCacheIdx = 0;\n let globalTableIdx = 0;\n const pivotCacheDataMap = new Map<string, { cacheId: number; cacheIdx: number }>();\n const calcCells: CalcCell[] = [];\n const allTableParts: TablePartReference[] = [];\n\n const wsContext: WorksheetContext = { sharedStrings: ctx.sharedStrings, styles: ctx.styles };\n\n for (let i = 0; i < worksheetConfigs.length; i++) {\n const wsOpts = worksheetConfigs[i];\n const imgOpts = wsOpts.images ?? [];\n const chartOpts = wsOpts.charts ?? [];\n const hlOpts = wsOpts.hyperlinks ?? [];\n const sheetName = wsOpts.name ?? `Sheet${i + 1}`;\n\n // Worksheet uses buildWorksheetXml fast path (zero-allocation string concat)\n let sheetXml = buildWorksheetXml(wsOpts, wsContext);\n\n // Collect formula cells for calcChain\n const sheetIdx = i + 1;\n const wsRows = wsOpts.rows ?? [];\n for (let ri = 0; ri < wsRows.length; ri++) {\n const rowOpts = wsRows[ri];\n const rowNumber = rowOpts.rowNumber ?? ri + 1;\n if (!rowOpts.cells) continue;\n for (let ci = 0; ci < rowOpts.cells.length; ci++) {\n const cell = rowOpts.cells[ci];\n if (!cell.formula) continue;\n const ref = cell.reference ?? columnToLetter(ci + 1) + rowNumber;\n calcCells.push({\n reference: ref,\n sheetIndex: sheetIdx,\n array: cell.formula.type === \"array\",\n });\n }\n }\n\n const hasMedia = imgOpts.length > 0 || chartOpts.length > 0;\n const hasExternalHyperlinks = hlOpts.some((h) => h.target.type === \"external\");\n const commentOpts = wsOpts.comments ?? [];\n const hasComments = commentOpts.length > 0;\n const pivotOpts = wsOpts.pivotTables ?? [];\n const hasPivots = pivotOpts.length > 0;\n const tableOpts = wsOpts.tables ?? [];\n const hasTables = tableOpts.length > 0;\n const bgImg = wsOpts.backgroundImage;\n\n // Worksheet-level relationships\n let wsRels: Relationships | undefined;\n let nextRid = 0;\n\n if (hasMedia || hasExternalHyperlinks || hasComments || hasPivots || hasTables || bgImg) {\n wsRels = new Relationships();\n }\n\n if (hasExternalHyperlinks) {\n for (const hl of hlOpts) {\n if (hl.target.type !== \"external\") continue;\n const rid = ++nextRid;\n wsRels!.addRelationship(\n rid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n hl.target.url,\n \"External\",\n );\n }\n }\n\n if (hasMedia) {\n const drawingImages: ImageOptions[] = [];\n const drawingCharts: ChartAnchorOptions[] = [];\n const drawingRels = new Relationships();\n let rid = 1;\n\n // Process images\n for (const img of imgOpts) {\n const mediaKey = `image_${globalMediaIdx}`;\n const ext = img.type === \"jpeg\" || img.type === \"jpg\" ? \"jpeg\" : \"png\";\n ctx.media.addImage(mediaKey, {\n fileName: `image${globalMediaIdx + 1}.${ext}`,\n type: ext,\n data: img.data,\n width: 0,\n height: 0,\n });\n\n drawingRels.addRelationship(\n rid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n `../media/image${globalMediaIdx + 1}.${ext}`,\n );\n\n drawingImages.push({\n col: img.col,\n row: img.row,\n rId: `rId${rid}`,\n });\n rid++;\n globalMediaIdx++;\n }\n\n // Process charts\n for (const chart of chartOpts) {\n const chartKey = `chart_${globalChartIdx}`;\n ctx.charts.addChart(chartKey, {\n key: chartKey,\n chartSpaceXml: chartSpaceDesc.stringify(chart, ctx) ?? \"\",\n });\n\n drawingRels.addRelationship(\n rid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n `../charts/chart${globalChartIdx + 1}.xml`,\n );\n\n drawingCharts.push({\n col: chart.col,\n row: chart.row,\n rId: `rId${rid}`,\n });\n rid++;\n globalChartIdx++;\n }\n\n // Generate drawing XML (via descriptor)\n const drawingXml = drawingDesc.stringify(\n { images: drawingImages, charts: drawingCharts },\n ctx,\n );\n const drawingIdx = i + 1;\n mapping[`Drawing${i}`] = {\n data: `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${drawingXml}`,\n path: `xl/drawings/drawing${drawingIdx}.xml`,\n };\n\n // Drawing relationships\n mapping[`DrawingRels${i}`] = {\n data: XML_DECL + drawingRels.serialize(),\n path: `xl/drawings/_rels/drawing${drawingIdx}.xml.rels`,\n };\n\n // Insert drawing reference before the closing </worksheet> tag.\n const drawingRid = ++nextRid;\n const closingTag = \"</worksheet>\";\n sheetXml =\n sheetXml.slice(0, -closingTag.length) + `<drawing r:id=\"rId${drawingRid}\"/>` + closingTag;\n\n // Add drawing relationship to worksheet rels\n wsRels!.addRelationship(\n drawingRid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n `../drawings/drawing${drawingIdx}.xml`,\n );\n\n ctx.contentTypes.addDrawing(drawingIdx);\n }\n\n // Comments\n if (hasComments) {\n const commentsIdx = i + 1;\n\n // Comments XML (via descriptor)\n const commentsXml = commentsDesc.stringify({ comments: commentOpts }, ctx);\n mapping[`Comments${i}`] = {\n data: `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${commentsXml}`,\n path: `xl/comments${commentsIdx}.xml`,\n };\n\n // VML drawing (via descriptor)\n const vmlXml = vmlNotesDesc.stringify({ comments: commentOpts }, ctx);\n mapping[`VmlDrawing${i}`] = {\n data: `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${vmlXml}`,\n path: `xl/drawings/vmlDrawing${commentsIdx}.vml`,\n };\n\n // Worksheet rels: comments → comments XML, legacyDrawing → VML file\n const commentsRid = ++nextRid;\n wsRels!.addRelationship(\n commentsRid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n `../comments${commentsIdx}.xml`,\n );\n\n const vmlRid = ++nextRid;\n wsRels!.addRelationship(\n vmlRid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n `../drawings/vmlDrawing${commentsIdx}.vml`,\n );\n\n // Insert legacyDrawing reference before closing </worksheet>\n const closingTag = \"</worksheet>\";\n sheetXml =\n sheetXml.slice(0, -closingTag.length) + `<legacyDrawing r:id=\"rId${vmlRid}\"/>` + closingTag;\n\n // Register content types\n ctx.contentTypes.addComments(commentsIdx);\n ctx.contentTypes.addVmlDrawing();\n }\n\n // Background picture\n if (bgImg) {\n const ext = bgImg.type === \"jpg\" ? \"jpeg\" : bgImg.type;\n const mediaKey = `bg_${i}`;\n const mediaIdx = globalMediaIdx + 1;\n ctx.media.addImage(mediaKey, {\n fileName: `image${mediaIdx}.${ext}`,\n type: ext,\n data: bgImg.data,\n width: 0,\n height: 0,\n });\n globalMediaIdx++;\n const bgRid = ++nextRid;\n wsRels!.addRelationship(\n bgRid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n `../media/image${mediaIdx}.${ext}`,\n );\n sheetXml = sheetXml.replace(\"<!--BACKGROUND_PICTURE-->\", `<picture r:id=\"rId${bgRid}\"/>`);\n }\n\n // Pivot tables\n if (hasPivots) {\n for (const pt of pivotOpts) {\n globalPivotIdx++;\n const pivotIdx = globalPivotIdx;\n\n // Extract source data from source sheet\n const sourceSheet = pt.sourceSheet ?? sheetName;\n const sourceWsIdx = worksheetConfigs.findIndex(\n (ws) => (ws.name ?? `Sheet${worksheetConfigs.indexOf(ws) + 1}`) === sourceSheet,\n );\n if (sourceWsIdx === -1) continue;\n\n const sourceRows = worksheetConfigs[sourceWsIdx].rows ?? [];\n const sourceData = extractPivotSourceData(sourceRows, pt.source);\n\n // Deduplicate pivot caches by source reference\n const cacheKey = `${sourceSheet}:${pt.source}`;\n let cacheId: number;\n let cacheIdx: number;\n const existing = pivotCacheDataMap.get(cacheKey);\n if (existing) {\n cacheId = existing.cacheId;\n cacheIdx = existing.cacheIdx;\n } else {\n globalPivotCacheIdx++;\n cacheIdx = globalPivotCacheIdx;\n cacheId = cacheIdx;\n pivotCacheDataMap.set(cacheKey, { cacheId, cacheIdx });\n\n // Generate pivotCacheDefinition\n const cacheDefRels = new Relationships();\n cacheDefRels.addRelationship(\n 1,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheRecords\",\n \"pivotCacheRecords1.xml\",\n );\n\n const cacheDefXml =\n '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n pivotCacheDefDesc.stringify(\n {\n sourceRef: pt.source.split(\":\")[0] ? pt.source : \"A1\",\n sourceSheet,\n sourceData,\n recordsRid: \"rId1\",\n },\n ctx,\n );\n\n mapping[`PivotCacheDef${cacheIdx}`] = {\n data: cacheDefXml,\n path: `xl/pivotCache/pivotCacheDefinition${cacheIdx}.xml`,\n };\n mapping[`PivotCacheDefRels${cacheIdx}`] = {\n data: XML_DECL + cacheDefRels.serialize(),\n path: `xl/pivotCache/_rels/pivotCacheDefinition${cacheIdx}.xml.rels`,\n };\n\n // Generate pivotCacheRecords\n const cacheRecordsXml =\n '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n pivotCacheRecordsDesc.stringify({ sourceData }, ctx);\n mapping[`PivotCacheRecords${cacheIdx}`] = {\n data: cacheRecordsXml,\n path: `xl/pivotCache/pivotCacheRecords${cacheIdx}.xml`,\n };\n\n // Content types\n ctx.contentTypes.addPivotCacheDefinition(cacheIdx);\n ctx.contentTypes.addPivotCacheRecords(cacheIdx);\n\n // Register in workbook\n const wbPivotRid = ctx.workbookRels.relationshipCount + 1;\n ctx.workbookRels.addRelationship(\n wbPivotRid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition\",\n `pivotCache/pivotCacheDefinition${cacheIdx}.xml`,\n );\n ctx.pivotCacheRefs.push({ cacheId, rId: `rId${wbPivotRid}` });\n }\n\n // Generate pivotTable\n const pivotTableXml =\n XML_DECL + pivotTableDesc.stringify({ options: pt, sourceData, cacheId }, ctx);\n mapping[`PivotTable${pivotIdx}`] = {\n data: pivotTableXml,\n path: `xl/pivotTables/pivotTable${pivotIdx}.xml`,\n };\n\n // pivotTable rels → cacheDefinition\n const ptRels = new Relationships();\n ptRels.addRelationship(\n 1,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition\",\n `../pivotCache/pivotCacheDefinition${cacheIdx}.xml`,\n );\n mapping[`PivotTableRels${pivotIdx}`] = {\n data: XML_DECL + ptRels.serialize(),\n path: `xl/pivotTables/_rels/pivotTable${pivotIdx}.xml.rels`,\n };\n\n // Worksheet rels → pivotTable\n const ptRid = ++nextRid;\n wsRels!.addRelationship(\n ptRid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable\",\n `../pivotTables/pivotTable${pivotIdx}.xml`,\n );\n\n ctx.contentTypes.addPivotTable(pivotIdx);\n }\n }\n\n // Tables (list objects)\n const wsTableParts: TablePartReference[] = [];\n if (hasTables) {\n for (const tbl of tableOpts) {\n globalTableIdx++;\n const tableIdx = globalTableIdx;\n\n // Generate table XML\n const tableXmlStr =\n '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n tableDesc.stringify({ ...tbl, id: tbl.id ?? tableIdx }, ctx);\n mapping[`Table${tableIdx}`] = {\n data: tableXmlStr,\n path: `xl/tables/table${tableIdx}.xml`,\n };\n\n // Worksheet rels → table\n const tblRid = ++nextRid;\n wsRels!.addRelationship(\n tblRid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table\",\n `../tables/table${tableIdx}.xml`,\n );\n\n wsTableParts.push({ rId: `rId${tblRid}` });\n allTableParts.push({ rId: `rId${tblRid}` });\n\n ctx.contentTypes.addTable(tableIdx);\n }\n }\n\n // Pre-render pivot table data into sheetData\n if (hasPivots) {\n const rendered = renderPivotSheetData(\n pivotOpts,\n worksheetConfigs,\n ctx.sharedStrings,\n sheetName,\n );\n if (rendered.sheetData.length > 0) {\n // Replace empty <sheetData/> or <sheetData></sheetData> with rendered data\n sheetXml = sheetXml.replace(/<sheetData\\/>|<sheetData><\\/sheetData>/, rendered.sheetData);\n // Inject <dimension> before <sheetViews> (XSD sequence order: dimension before sheetViews)\n if (!sheetXml.includes(\"<dimension\")) {\n sheetXml = sheetXml.replace(\n \"<sheetViews\",\n `<dimension ref=\"${rendered.dimensionRef}\"/><sheetViews`,\n );\n }\n }\n }\n\n // Insert tableParts before closing </worksheet> tag\n if (wsTableParts.length > 0) {\n const tablePartsXml = buildTablePartsXml(wsTableParts);\n const closingTag = \"</worksheet>\";\n sheetXml = sheetXml.slice(0, -closingTag.length) + tablePartsXml + closingTag;\n }\n\n // Write worksheet rels if needed\n if (wsRels) {\n mapping[`WorksheetRels${i}`] = {\n data: XML_DECL + wsRels.serialize(),\n path: `xl/worksheets/_rels/sheet${i + 1}.xml.rels`,\n };\n }\n\n mapping[`Worksheet${i}`] = {\n data: sheetXml,\n path: `xl/worksheets/sheet${i + 1}.xml`,\n };\n }\n\n // Chartsheets — chart-only sheets\n for (let i = 0; i < chartsheetConfigs.length; i++) {\n const csOpts = chartsheetConfigs[i];\n\n // Register chart in the charts collection\n const chartDef = csOpts.chart;\n const csChartGlobalIdx = ctx.charts.array.length;\n const csChartKey = `cs_chart_${csChartGlobalIdx}`;\n ctx.charts.addChart(csChartKey, {\n key: csChartKey,\n chartSpaceXml:\n chartSpaceDesc.stringify(\n {\n type: chartDef.type as\n | \"column\"\n | \"bar\"\n | \"line\"\n | \"pie\"\n | \"doughnut\"\n | \"area\"\n | \"scatter\"\n | \"bubble\",\n title: chartDef.title,\n categories: chartDef.categories,\n series: chartDef.series,\n },\n ctx,\n ) ?? \"\",\n });\n\n // Chartsheet relationships: drawing (required)\n const csRels = new Relationships();\n const csDrawingIdx = i + 1;\n csRels.addRelationship(\n 1,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n `../drawings/drawing${csDrawingIdx}.xml`,\n );\n\n // Drawing rels: chart reference\n const csDrawingRels = new Relationships();\n csDrawingRels.addRelationship(\n 1,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n `../charts/chart${csChartGlobalIdx + 1}.xml`,\n );\n\n // Minimal drawing XML with chart anchor\n const csDrawingXml =\n `<xdr:wsDr xmlns:xdr=\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">` +\n `<xdr:absoluteAnchor>` +\n `<xdr:pos x=\"0\" y=\"0\"/>` +\n `<xdr:ext cx=\"9308969\" cy=\"6096000\"/>` +\n `<xdr:graphicFrame>` +\n `<xdr:nvGraphicFramePr><xdr:cNvPr id=\"1\" name=\"Chart ${i + 1}\"/><xdr:cNvGraphicFramePr><a:graphicFrameLocks noGrp=\"1\"/></xdr:cNvGraphicFramePr></xdr:nvGraphicFramePr>` +\n `<xdr:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"9308969\" cy=\"6096000\"/></xdr:xfrm>` +\n `<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/chart\"><c:chart xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" r:id=\"rId1\"/></a:graphicData></a:graphic>` +\n `</xdr:graphicFrame>` +\n `<xdr:clientData/>` +\n `</xdr:absoluteAnchor>` +\n `</xdr:wsDr>`;\n\n mapping[`ChartsheetDrawing${i}`] = {\n data: csDrawingXml,\n path: `xl/drawings/drawing${csDrawingIdx}.xml`,\n };\n mapping[`ChartsheetDrawingRels${i}`] = {\n data: XML_DECL + csDrawingRels.serialize(),\n path: `xl/drawings/_rels/drawing${csDrawingIdx}.xml.rels`,\n };\n ctx.contentTypes.addDrawing(csDrawingIdx);\n\n mapping[`ChartsheetRels${i}`] = {\n data: XML_DECL + csRels.serialize(),\n path: `xl/chartsheets/_rels/sheet${i + 1}.xml.rels`,\n };\n mapping[`Chartsheet${i}`] = {\n data: XML_DECL + chartsheetDesc.stringify({ ...csOpts, drawingRId: \"rId1\" }, ctx),\n path: `xl/chartsheets/sheet${i + 1}.xml`,\n };\n ctx.contentTypes.addChartsheet(i + 1);\n }\n\n // Workbook XML (via descriptor)\n let wbXml =\n workbookDesc.stringify(\n {\n sheets,\n pivotCaches: ctx.pivotCacheRefs,\n protection: options.workbookProtection,\n customViews: options.customWorkbookViews,\n fileRecoveryPr: options.fileRecoveryPr,\n functionGroups: options.functionGroups,\n webPublishing: options.webPublishing,\n fileSharing: options.fileSharing,\n volTypes: options.volTypes,\n webPublishObjects: options.webPublishObjects,\n },\n ctx,\n ) ?? \"\";\n\n // External links — generate XML files and inject externalReferences into workbook\n const extLinks = options.externalLinks ?? [];\n if (extLinks.length > 0) {\n const extRefs: { rId: string }[] = [];\n for (let ei = 0; ei < extLinks.length; ei++) {\n const elIdx = ei + 1;\n const elRid = ctx.workbookRels.relationshipCount + 1;\n ctx.workbookRels.addRelationship(\n elRid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n `externalLinks/externalLink${elIdx}.xml`,\n );\n\n // Create the rels file for this external link\n const elOpts = extLinks[ei];\n let bookRId: string | undefined;\n if (elOpts.externalBook?.target) {\n const elRels = new Relationships();\n elRels.addRelationship(\n 1,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n elOpts.externalBook.target,\n TargetModeType.EXTERNAL,\n );\n bookRId = \"rId1\";\n mapping[`ExternalLinkRels${elIdx}`] = {\n data: XML_DECL + elRels.serialize(),\n path: `xl/externalLinks/_rels/externalLink${elIdx}.xml.rels`,\n };\n }\n\n // Generate the external link XML\n mapping[`ExternalLink${elIdx}`] = {\n data: XML_DECL + externalLinkDesc.stringify({ ...elOpts, bookRId }, ctx),\n path: `xl/externalLinks/externalLink${elIdx}.xml`,\n };\n\n extRefs.push({ rId: `rId${elRid}` });\n ctx.contentTypes.addExternalLink(elIdx);\n }\n\n // Inject externalReferences into workbook XML\n const extRefsXml = buildExternalReferencesXml(extRefs);\n wbXml = wbXml.replace(\"<!--EXTERNAL_REFS-->\", extRefsXml);\n } else {\n wbXml = wbXml.replace(\"<!--EXTERNAL_REFS-->\", \"\");\n }\n\n mapping[\"Workbook\"] = {\n data: `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${wbXml}`,\n path: \"xl/workbook.xml\",\n };\n\n // Workbook relationships\n mapping[\"WorkbookRelationships\"] = {\n data: XML_DECL + ctx.workbookRels.serialize(),\n path: \"xl/_rels/workbook.xml.rels\",\n };\n\n // Shared Strings — AFTER worksheets so all strings are collected\n if (ctx.sharedStrings.count > 0) {\n const ssXml = sharedStringsDesc.stringify(ctx.sharedStrings.toDescriptorOptions(), ctx);\n mapping[\"SharedStrings\"] = {\n data: `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${ssXml}`,\n path: \"xl/sharedStrings.xml\",\n };\n }\n\n // Styles (via descriptor — delegates to Styles.toXml internally)\n const stylesXml = stylesDesc.stringify({ styles: ctx.styles }, ctx);\n mapping[\"Styles\"] = {\n data: `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${stylesXml}`,\n path: \"xl/styles.xml\",\n };\n\n // Theme\n mapping[\"Theme\"] = {\n data: XML_DECL + createThemeXml(),\n path: \"xl/theme/theme1.xml\",\n };\n\n // Charts — AFTER worksheets so charts are registered\n for (let i = 0; i < ctx.charts.array.length; i++) {\n const chartData = ctx.charts.array[i];\n mapping[`Chart${i}`] = {\n data: XML_DECL + chartData.chartSpaceXml,\n path: `xl/charts/chart${i + 1}.xml`,\n };\n ctx.contentTypes.addChart(i + 1);\n }\n\n // Calculation chain — auto-generated from formula cells\n if (calcCells.length > 0) {\n mapping[\"CalcChain\"] = {\n data: calcChainDesc.stringify({ cells: calcCells }, ctx) ?? \"\",\n path: \"xl/calcChain.xml\",\n };\n ctx.contentTypes.addCalcChain();\n const calcChainRid = ctx.workbookRels.relationshipCount + 1;\n ctx.workbookRels.addRelationship(\n calcChainRid,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain\",\n \"calcChain.xml\",\n );\n }\n\n // Register image content types\n const imageExts = new Set<string>();\n for (const img of ctx.media.array) {\n const ext = img.fileName.endsWith(\".png\") ? \"png\" : \"jpeg\";\n if (!imageExts.has(ext)) {\n imageExts.add(ext);\n ctx.contentTypes.addImageType(ext as \"png\" | \"jpeg\");\n }\n }\n\n // Content Types — must be last\n mapping[\"ContentTypes\"] = {\n data: XML_DECL + ctx.contentTypes.serialize(),\n path: \"[Content_Types].xml\",\n };\n\n // Convert mapping to Zippable\n const mediaFiles: Array<{ data: Uint8Array; path: string }> = [];\n for (const img of ctx.media.array) {\n mediaFiles.push({ data: img.data, path: `xl/media/${img.fileName}` });\n }\n\n return compileMapping(mapping, overrides, mediaFiles, mediaLevel);\n}\n\n// ── Pure helper functions ──\n\nfunction buildFileRelationships(): Relationships {\n const rels = new Relationships();\n rels.addRelationship(\n 1,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n \"xl/workbook.xml\",\n );\n rels.addRelationship(\n 2,\n \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n \"docProps/core.xml\",\n );\n rels.addRelationship(\n 3,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\",\n \"docProps/app.xml\",\n );\n return rels;\n}\n\nfunction buildWorkbookRelationships(rels: Relationships, wsCount: number, csCount: number): void {\n let rid = 1;\n for (let i = 0; i < wsCount; i++) {\n rels.addRelationship(\n rid++,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n `worksheets/sheet${i + 1}.xml`,\n );\n }\n for (let i = 0; i < csCount; i++) {\n rels.addRelationship(\n rid++,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n `chartsheets/sheet${i + 1}.xml`,\n );\n }\n rels.addRelationship(\n rid++,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n \"styles.xml\",\n );\n rels.addRelationship(\n rid++,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n \"theme/theme1.xml\",\n );\n rels.addRelationship(\n rid++,\n \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n \"sharedStrings.xml\",\n );\n}\n\nfunction extractPivotSourceData(rows: RowOptions[], sourceRef: string): PivotSourceData {\n const parts = sourceRef.split(\":\");\n const startMatch = parts[0]?.match(/^([A-Z]+)(\\d+)$/);\n const endMatch = parts[1]?.match(/^([A-Z]+)(\\d+)$/);\n if (!startMatch) {\n return { fieldNames: [], records: [] };\n }\n\n const startRow = parseInt(startMatch[2], 10) - 1;\n const endRow = endMatch ? parseInt(endMatch[2], 10) - 1 : startRow;\n const startCol = colLetterToIndex(startMatch[1]);\n const endCol = endMatch ? colLetterToIndex(endMatch[1]) : startCol;\n const colCount = endCol - startCol + 1;\n\n // First row is headers\n const headerRow = rows[startRow];\n const fieldNames: string[] = [];\n if (headerRow?.cells) {\n for (let c = startCol; c <= endCol && c < headerRow.cells.length; c++) {\n const hv = headerRow.cells[c]?.value;\n fieldNames.push(\n typeof hv === \"string\"\n ? hv\n : typeof hv === \"number\" || typeof hv === \"boolean\"\n ? String(hv)\n : `Col${c}`,\n );\n }\n }\n\n // Remaining rows are data\n const records: (string | number)[][] = [];\n for (let r = startRow + 1; r <= endRow; r++) {\n const row = rows[r];\n if (!row?.cells) continue;\n const record: (string | number)[] = [];\n for (let c = startCol; c <= endCol; c++) {\n const val = row.cells[c]?.value;\n if (typeof val === \"number\") {\n record.push(val);\n } else if (val instanceof Date) {\n record.push(val.getTime());\n } else {\n record.push(typeof val === \"string\" ? val : typeof val === \"boolean\" ? String(val) : \"\");\n }\n }\n if (record.length === colCount) {\n records.push(record);\n }\n }\n\n return { fieldNames, records };\n}\n\nfunction colLetterToIndex(letters: string): number {\n let col = 0;\n for (let i = 0; i < letters.length; i++) {\n col = col * 26 + (letters.charCodeAt(i) - 64);\n }\n return col - 1;\n}\n\nfunction renderPivotSheetData(\n pivotOpts: PivotTableOptions[],\n worksheetConfigs: WorksheetOptions[],\n sharedStrings: SharedStrings,\n currentSheetName: string,\n): { sheetData: string; dimensionRef: string } {\n const rowCells = new Map<number, string[]>();\n let maxRow = 0;\n let maxCol = 0;\n let minRow = Infinity;\n let minCol = Infinity;\n\n for (const pt of pivotOpts) {\n const location = pt.location ?? \"A3\";\n const locMatch = location.match(/^([A-Z]+)(\\d+)$/);\n if (!locMatch) continue;\n\n const startCol = colLetterToIndex(locMatch[1]);\n const startRow = parseInt(locMatch[2], 10);\n const rowFieldNames = pt.rows;\n const dataFields = pt.data;\n\n const sourceSheetName = pt.sourceSheet ?? currentSheetName;\n const sourceWsIdx = worksheetConfigs.findIndex(\n (ws) => (ws.name ?? `Sheet${worksheetConfigs.indexOf(ws) + 1}`) === sourceSheetName,\n );\n if (sourceWsIdx === -1) continue;\n\n const sourceRows = worksheetConfigs[sourceWsIdx]?.rows ?? [];\n const sourceData = extractPivotSourceData(sourceRows, pt.source);\n if (sourceData.fieldNames.length === 0) continue;\n\n const fields = sourceData.fieldNames;\n const rowFieldIndices = rowFieldNames.map((n) => fields.indexOf(n));\n const dataFieldIndices = dataFields.map((df) => fields.indexOf(df.field));\n\n if (rowFieldIndices.some((idx) => idx === -1)) continue;\n if (dataFieldIndices.some((idx) => idx === -1)) continue;\n\n // Group records by row field values\n const groupMap = new Map<string, { keys: (string | number)[]; values: number[][] }>();\n for (const record of sourceData.records) {\n const groupKey = rowFieldIndices.map((fi) => String(record[fi])).join(\"|\");\n let group = groupMap.get(groupKey);\n if (!group) {\n group = {\n keys: rowFieldIndices.map((fi) => {\n const v = record[fi];\n return typeof v === \"string\" || typeof v === \"number\" ? v : String(v ?? \"\");\n }),\n values: dataFieldIndices.map(() => []),\n };\n groupMap.set(groupKey, group);\n }\n for (let di = 0; di < dataFieldIndices.length; di++) {\n const val = record[dataFieldIndices[di]];\n if (typeof val === \"number\") {\n group.values[di].push(val);\n }\n }\n }\n\n // Column field info for cross-tab layout\n const colFieldNames = pt.columns ?? [];\n const colFieldIndices = colFieldNames.map((n) => fields.indexOf(n));\n\n const addCells = (rowIdx: number, cells: string[]) => {\n let arr = rowCells.get(rowIdx);\n if (!arr) {\n arr = [];\n rowCells.set(rowIdx, arr);\n }\n arr.push(...cells);\n minRow = Math.min(minRow, rowIdx);\n maxRow = Math.max(maxRow, rowIdx);\n };\n\n if (colFieldIndices.length > 0 && !colFieldIndices.some((idx) => idx === -1)) {\n // --- Cross-tab layout (with column fields) ---\n // Unique column values for the first column field\n const colUniqueVals = collectUniqueValues(sourceData.records, colFieldIndices[0]).map((v) =>\n typeof v === \"string\" || typeof v === \"number\" ? String(v) : String(v ?? \"\"),\n );\n\n // Build cross-tab map: rowKey → colKey → aggregated values per data field\n const crossTabMap = new Map<\n string,\n { rowKeys: (string | number)[]; colData: Map<string, number[][]>; rowTotals: number[][] }\n >();\n for (const record of sourceData.records) {\n const rowKey = rowFieldIndices.map((fi) => String(record[fi])).join(\"|\");\n const colKey = colFieldIndices.map((fi) => String(record[fi])).join(\"|\");\n let entry = crossTabMap.get(rowKey);\n if (!entry) {\n entry = {\n rowKeys: rowFieldIndices.map((fi) => {\n const v = record[fi];\n return typeof v === \"string\" || typeof v === \"number\" ? v : String(v ?? \"\");\n }),\n colData: new Map(),\n rowTotals: dataFieldIndices.map(() => []),\n };\n crossTabMap.set(rowKey, entry);\n }\n let colValues = entry.colData.get(colKey);\n if (!colValues) {\n colValues = dataFieldIndices.map(() => []);\n entry.colData.set(colKey, colValues);\n }\n for (let di = 0; di < dataFieldIndices.length; di++) {\n const val = record[dataFieldIndices[di]];\n if (typeof val === \"number\") {\n colValues[di].push(val);\n entry.rowTotals[di].push(val);\n }\n }\n }\n\n // Column count: row fields + column unique values + 1 (grand total column)\n const numColVals = colUniqueVals.length;\n const totalCols = rowFieldNames.length + numColVals + 1;\n const endCol = startCol + totalCols - 1;\n minCol = Math.min(minCol, startCol);\n maxCol = Math.max(maxCol, endCol);\n\n // Header row: [rowFieldName(s), ...colUniqueVals, dataFieldName or \"Grand Total\"]\n const headerCells: string[] = [];\n for (const rfName of rowFieldNames) {\n const cellRef = colIndexToLetter(startCol + headerCells.length) + startRow;\n const strIdx = sharedStrings.register(rfName);\n headerCells.push(`<c r=\"${cellRef}\" t=\"s\"><v>${strIdx}</v></c>`);\n }\n for (const cv of colUniqueVals) {\n const cellRef = colIndexToLetter(startCol + headerCells.length) + startRow;\n const strIdx = sharedStrings.register(cv);\n headerCells.push(`<c r=\"${cellRef}\" t=\"s\"><v>${strIdx}</v></c>`);\n }\n // Last header cell: data field name (e.g., \"Total Revenue\")\n {\n const cellRef = colIndexToLetter(startCol + headerCells.length) + startRow;\n const df0 = dataFields[0];\n const subtotal = df0.summarize ?? \"sum\";\n const dfName = df0.name ?? `${subtotal === \"sum\" ? \"Sum\" : subtotal} of ${df0.field}`;\n const strIdx = sharedStrings.register(dfName);\n headerCells.push(`<c r=\"${cellRef}\" t=\"s\"><v>${strIdx}</v></c>`);\n }\n addCells(startRow, headerCells);\n\n // Data rows\n let currentRow = startRow + 1;\n for (const [, entry] of crossTabMap) {\n const cells: string[] = [];\n // Row label\n for (let ri = 0; ri < entry.rowKeys.length; ri++) {\n const cellRef = colIndexToLetter(startCol + ri) + currentRow;\n const strIdx = sharedStrings.register(String(entry.rowKeys[ri]));\n cells.push(`<c r=\"${cellRef}\" t=\"s\"><v>${strIdx}</v></c>`);\n }\n // Column values for each unique column value\n for (let ci = 0; ci < numColVals; ci++) {\n const colKey = colUniqueVals[ci];\n const colValues = entry.colData.get(colKey);\n const colOffset = rowFieldNames.length + ci;\n const cellRef = colIndexToLetter(startCol + colOffset) + currentRow;\n const subtotal = dataFields[0].summarize ?? \"sum\";\n const result = colValues ? aggregate(colValues[0], subtotal) : 0;\n cells.push(`<c r=\"${cellRef}\"><v>${result}</v></c>`);\n }\n // Row total (last column)\n {\n const colOffset = rowFieldNames.length + numColVals;\n const cellRef = colIndexToLetter(startCol + colOffset) + currentRow;\n const subtotal = dataFields[0].summarize ?? \"sum\";\n const result = aggregate(entry.rowTotals[0], subtotal);\n cells.push(`<c r=\"${cellRef}\"><v>${result}</v></c>`);\n }\n addCells(currentRow, cells);\n currentRow++;\n }\n\n // Grand total row\n const gtCells: string[] = [];\n const gtStrIdx = sharedStrings.register(\"Grand Total\");\n gtCells.push(\n `<c r=\"${colIndexToLetter(startCol)}${currentRow}\" t=\"s\"><v>${gtStrIdx}</v></c>`,\n );\n for (let ci = 0; ci < numColVals; ci++) {\n const colKey = colUniqueVals[ci];\n const subtotal = dataFields[0].summarize ?? \"sum\";\n const colAllValues: number[] = [];\n for (const record of sourceData.records) {\n const recColKey = colFieldIndices.map((fi) => String(record[fi])).join(\"|\");\n if (recColKey === colKey) {\n const val = record[dataFieldIndices[0]];\n if (typeof val === \"number\") colAllValues.push(val);\n }\n }\n const colOffset = rowFieldNames.length + ci;\n const cellRef = colIndexToLetter(startCol + colOffset) + currentRow;\n const result = aggregate(colAllValues, subtotal);\n gtCells.push(`<c r=\"${cellRef}\"><v>${result}</v></c>`);\n }\n // Grand total (bottom-right)\n {\n const subtotal = dataFields[0].summarize ?? \"sum\";\n const allValues = sourceData.records\n .map((r) => r[dataFieldIndices[0]])\n .filter((v): v is number => typeof v === \"number\");\n const colOffset = rowFieldNames.length + numColVals;\n const cellRef = colIndexToLetter(startCol + colOffset) + currentRow;\n const result = aggregate(allValues, subtotal);\n gtCells.push(`<c r=\"${cellRef}\"><v>${result}</v></c>`);\n }\n addCells(currentRow, gtCells);\n } else {\n // --- Simple layout (no column fields) ---\n const endCol = startCol + rowFieldNames.length + dataFields.length - 1;\n minCol = Math.min(minCol, startCol);\n maxCol = Math.max(maxCol, endCol);\n\n // Header row\n const headerCells: string[] = [];\n for (const rfName of rowFieldNames) {\n const cellRef = colIndexToLetter(startCol + headerCells.length) + startRow;\n const strIdx = sharedStrings.register(rfName);\n headerCells.push(`<c r=\"${cellRef}\" t=\"s\"><v>${strIdx}</v></c>`);\n }\n for (const df of dataFields) {\n const cellRef = colIndexToLetter(startCol + headerCells.length) + startRow;\n const subtotal = df.summarize ?? \"sum\";\n const dfName = df.name ?? `${subtotal === \"sum\" ? \"Sum\" : subtotal} of ${df.field}`;\n const strIdx = sharedStrings.register(dfName);\n headerCells.push(`<c r=\"${cellRef}\" t=\"s\"><v>${strIdx}</v></c>`);\n }\n addCells(startRow, headerCells);\n\n // Data rows\n let currentRow = startRow + 1;\n for (const [, group] of groupMap) {\n const cells: string[] = [];\n for (let ri = 0; ri < group.keys.length; ri++) {\n const cellRef = colIndexToLetter(startCol + ri) + currentRow;\n const strIdx = sharedStrings.register(String(group.keys[ri]));\n cells.push(`<c r=\"${cellRef}\" t=\"s\"><v>${strIdx}</v></c>`);\n }\n for (let di = 0; di < dataFields.length; di++) {\n const colOffset = rowFieldNames.length + di;\n const cellRef = colIndexToLetter(startCol + colOffset) + currentRow;\n const subtotal = dataFields[di].summarize ?? \"sum\";\n const result = aggregate(group.values[di], subtotal);\n cells.push(`<c r=\"${cellRef}\"><v>${result}</v></c>`);\n }\n addCells(currentRow, cells);\n currentRow++;\n }\n\n // Grand total row\n const gtCells: string[] = [];\n const gtStrIdx = sharedStrings.register(\"Grand Total\");\n gtCells.push(\n `<c r=\"${colIndexToLetter(startCol)}${currentRow}\" t=\"s\"><v>${gtStrIdx}</v></c>`,\n );\n for (let di = 0; di < dataFields.length; di++) {\n const colOffset = rowFieldNames.length + di;\n const cellRef = colIndexToLetter(startCol + colOffset) + currentRow;\n const subtotal = dataFields[di].summarize ?? \"sum\";\n const allValues = sourceData.records\n .map((r) => r[dataFieldIndices[di]])\n .filter((v): v is number => typeof v === \"number\");\n const result = aggregate(allValues, subtotal);\n gtCells.push(`<c r=\"${cellRef}\"><v>${result}</v></c>`);\n }\n addCells(currentRow, gtCells);\n }\n }\n\n if (rowCells.size === 0) return { sheetData: \"\", dimensionRef: \"\" };\n\n // Build sheetData\n const parts: string[] = [\"<sheetData>\"];\n const sortedRows = [...rowCells.entries()].sort((a, b) => a[0] - b[0]);\n for (const [rowIdx, cells] of sortedRows) {\n parts.push(`<row r=\"${rowIdx}\" x14ac:dyDescent=\"0.25\">`);\n parts.push(...cells);\n parts.push(\"</row>\");\n }\n parts.push(\"</sheetData>\");\n\n const dimStartCol = colIndexToLetter(minCol === Infinity ? 0 : minCol);\n const dimStartRow = minRow === Infinity ? 1 : minRow;\n const dimensionRef = `${dimStartCol}${dimStartRow}:${colIndexToLetter(maxCol)}${maxRow}`;\n return { sheetData: parts.join(\"\"), dimensionRef };\n}\n\nfunction colIndexToLetter(col: number): string {\n let result = \"\";\n let n = col + 1;\n while (n > 0) {\n n--;\n result = String.fromCharCode(65 + (n % 26)) + result;\n n = Math.floor(n / 26);\n }\n return result;\n}\n\nfunction 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 * Pure function API for generating XLSX files.\n *\n * @module\n */\n\nimport { createPacker, OoxmlMimeType } from \"@office-open/core\";\nimport type { OutputByType, OutputType, PackerOptions } from \"@office-open/core\";\nimport type { WorkbookOptions } from \"@parts/file\";\n\nimport { compileWorkbook } from \"./compiler\";\n\n/** @internal Packer instance for XLSX generation. */\nconst Packer = createPacker<WorkbookOptions>({\n compile: (options, overrides, mediaLevel) => compileWorkbook(options, overrides, mediaLevel),\n mimeType: OoxmlMimeType.XLSX,\n});\n\n/**\n * Generate an XLSX file from pure JSON options.\n *\n * The output format is controlled by `packerOptions.type` (default: `\"nodebuffer\"` → Buffer).\n * For synchronous generation, use {@link generateWorkbookSync}. For streaming, use {@link generateWorkbookStream}.\n *\n * @param options - Workbook options (worksheets, styles, etc.)\n * @param packerOptions - Optional packer configuration (type, compression, overrides, etc.)\n *\n * @example\n * ```typescript\n * import { generateWorkbook } from \"@office-open/xlsx\";\n *\n * const buffer = await generateWorkbook({ worksheets: [...] });\n * const bytes = await generateWorkbook({ worksheets: [...] }, { type: \"uint8array\" });\n * const blob = await generateWorkbook({ worksheets: [...] }, { type: \"blob\" });\n * ```\n */\nexport function generateWorkbook<T extends OutputType = \"nodebuffer\">(\n options: WorkbookOptions,\n packerOptions?: PackerOptions<T>,\n): Promise<OutputByType[T]> {\n return Packer.pack(options, packerOptions) as Promise<OutputByType[T]>;\n}\n\n/**\n * Synchronously generate an XLSX file from pure JSON options.\n */\nexport function generateWorkbookSync<T extends OutputType = \"nodebuffer\">(\n options: WorkbookOptions,\n packerOptions?: PackerOptions<T>,\n): OutputByType[T] {\n return Packer.packSync(options, packerOptions) as OutputByType[T];\n}\n\n/**\n * Generate an XLSX file as a `ReadableStream<Uint8Array>`.\n */\nexport function generateWorkbookStream(\n options: WorkbookOptions,\n packerOptions?: PackerOptions,\n): ReadableStream<Uint8Array> {\n return Packer.toStream(options, packerOptions);\n}\n"],"mappings":"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"}
|
package/dist/generate.d.mts
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { t as WorkbookOptions } from "./file-DQTBkYzl.mjs";
|
|
2
|
+
import { OutputByType, OutputType, PackerOptions } from "@office-open/core";
|
|
3
|
+
|
|
4
|
+
//#region src/generate.d.ts
|
|
5
|
+
declare function generateWorkbook<T extends OutputType = "nodebuffer">(options: WorkbookOptions, packerOptions?: PackerOptions<T>): Promise<OutputByType[T]>;
|
|
6
|
+
declare function generateWorkbookSync<T extends OutputType = "nodebuffer">(options: WorkbookOptions, packerOptions?: PackerOptions<T>): OutputByType[T];
|
|
7
|
+
declare function generateWorkbookStream(options: WorkbookOptions, packerOptions?: PackerOptions): ReadableStream<Uint8Array>;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { generateWorkbook, generateWorkbookStream, generateWorkbookSync };
|
|
10
|
+
//# sourceMappingURL=generate.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.mts","names":[],"sources":["../src/generate.ts"],"mappings":";;;;iBAoCgB,gBAAA,WAA2B,UAAA,iBACzC,OAAA,EAAS,eAAA,EACT,aAAA,GAAgB,aAAA,CAAc,CAAA,IAC7B,OAAA,CAAQ,YAAA,CAAa,CAAA;AAAA,iBAOR,oBAAA,WAA+B,UAAA,iBAC7C,OAAA,EAAS,eAAA,EACT,aAAA,GAAgB,aAAA,CAAc,CAAA,IAC7B,YAAA,CAAa,CAAA;AAAA,iBAOA,sBAAA,CACd,OAAA,EAAS,eAAA,EACT,aAAA,GAAgB,aAAA,GACf,cAAA,CAAe,UAAA"}
|
package/dist/generate.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as generateWorkbookStream, r as generateWorkbookSync, t as generateWorkbook } from "./generate-
|
|
1
|
+
import { n as generateWorkbookStream, r as generateWorkbookSync, t as generateWorkbook } from "./generate-DGqFsuiZ.mjs";
|
|
2
2
|
export { generateWorkbook, generateWorkbookStream, generateWorkbookSync };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { $ as OleItemOptions, A as worksheetDesc, B as ConsolidateFunction, C as ScenarioOptions, Ct as FontOptions, D as WorksheetContext, Dt as stylesDesc, E as WorksheetChartOptions, Et as StylesDocOptions, F as TotalsRowFunction, G as PivotSourceData, H as PivotDataField, I as tableDesc, J as ExternalCellOptions, K as PivotTableOptions, L as SharedStrings, M as TableOptions, N as TableStyleInfoOptions, O as WorksheetOptions, Ot as CorePropertiesOptions, P as TableType, Q as ExternalSheetDataOptions, R as SharedStringsDocOptions, S as ScenarioDefinition, St as FillOptions, T as SheetProtectionOptions, Tt as Styles, U as PivotFilterOptions, V as PivotCacheDefinitionOptions, W as PivotFilterType, X as ExternalLinkOptions, Y as ExternalDefinedNameOptions, Z as ExternalRowOptions, _ as MergeCellOptions, _t as workbookDesc, a as ColorScaleOptions, at as ChartsheetPageMargins, b as RowOptions, bt as BorderSideOptions, c as ConditionalFormatOptions, ct as chartsheetDesc, d as DataValidationOptions, dt as FileSharingOptions, et as OleLinkOptions, f as FormulaOptions, ft as PivotCacheReference, g as IgnoredErrorOptions, gt as buildTablePartsXml, h as IconSetType, ht as buildExternalReferencesXml, i as CfvoType, it as ChartsheetOptions, j as TableColumnOptions, k as stringifyWorksheet, l as ConditionalFormatRule, lt as CustomWorkbookViewOptions, m as IconSetOptions, mt as WorkbookProtectionOptions, n as CellOptions, nt as ChartsheetDescriptorOptions, o as ColumnOptions, ot as ChartsheetPageSetup, p as FreezePaneOptions, pt as WebPublishingOptions, q as ExternalBookOptions, r as CfvoOptions, rt as ChartsheetHeaderFooterOptions, s as CommentOptions, st as ChartsheetProtectionOptions, t as WorkbookOptions, tt as externalLinkDesc, u as DataBarOptions, ut as FileRecoveryPrOptions, v as PhoneticPrOptions, vt as AlignmentOptions, w as SheetBackgroundImageOptions, wt as StyleOptions, x as ScenarioCellOptions, xt as DxfOptions, y as ProtectedRangeOptions, yt as BorderOptions, z as sharedStringsDesc } from "./file-DQTBkYzl.mjs";
|
|
2
|
+
import { generateWorkbook, generateWorkbookStream, generateWorkbookSync } from "./generate.mjs";
|
|
3
|
+
import { XlsxDocument, XlsxPartRefs, parseWorkbook, parseXlsx } from "./parse.mjs";
|
|
4
4
|
import { CellPatch, InputDataType, Patch, PatchDocumentOutputType, PatchType, PatchWorkbookOptions, patchWorkbook } from "./patch.mjs";
|
|
5
5
|
import { Element } from "@office-open/xml";
|
|
6
6
|
import { ChartCollection, CompressionOptions, OutputByType, OutputType, PackerOptions, RelationshipType, Relationships, XmlifyedFile, Zippable } from "@office-open/core";
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/parts/calc-chain.ts","../src/parts/comments.ts","../src/parts/drawing.ts","../src/parts/pivot-table.ts","../src/parts/pivot-cache.ts","../src/parts/dialogsheet.ts","../src/parts/query-table.ts","../src/parts/metadata.ts","../src/parts/revision-log.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/parts/media.ts","../src/context.ts"],"mappings":";;;;;;;;;;UAaiB,QAAA;EAEf,SAAA;EAEA,UAAA;EAEA,KAAA;AAAA;AAAA,UAGe,gBAAA;EACf,KAAA,EAAO,QAAQ;AAAA;AAAA,cAKJ,aAAA,EAAe,gBAAgB,CAAC,gBAAA;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/parts/calc-chain.ts","../src/parts/comments.ts","../src/parts/drawing.ts","../src/parts/pivot-table.ts","../src/parts/pivot-cache.ts","../src/parts/dialogsheet.ts","../src/parts/query-table.ts","../src/parts/metadata.ts","../src/parts/revision-log.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/parts/media.ts","../src/context.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { C as Styles, E as sharedStringsDesc, S as worksheetDesc, T as SharedStrings, _ as commentsDesc, a as workbookDesc, b as calcChainDesc, c as tableDesc, d as pivotTableDesc, f as PivotFilterType, g as drawingDesc, h as externalLinkDesc, i as buildTablePartsXml, l as pivotCacheDefDesc, n as XlsxWriteContext, o as TableType, r as buildExternalReferencesXml, s as TotalsRowFunction, t as XlsxReadContext, u as pivotCacheRecordsDesc, v as vmlNotesDesc, w as stylesDesc, x as stringifyWorksheet, y as chartsheetDesc } from "./context-
|
|
1
|
+
import { C as Styles, E as sharedStringsDesc, S as worksheetDesc, T as SharedStrings, _ as commentsDesc, a as workbookDesc, b as calcChainDesc, c as tableDesc, d as pivotTableDesc, f as PivotFilterType, g as drawingDesc, h as externalLinkDesc, i as buildTablePartsXml, l as pivotCacheDefDesc, n as XlsxWriteContext, o as TableType, r as buildExternalReferencesXml, s as TotalsRowFunction, t as XlsxReadContext, u as pivotCacheRecordsDesc, v as vmlNotesDesc, w as stylesDesc, x as stringifyWorksheet, y as chartsheetDesc } from "./context-ChKe3x0r.mjs";
|
|
2
2
|
import { parseWorkbook, parseXlsx } from "./parse.mjs";
|
|
3
3
|
import { PatchType, patchWorkbook } from "./patch.mjs";
|
|
4
|
-
import { i as compileWorkbook, n as generateWorkbookStream, r as generateWorkbookSync, t as generateWorkbook } from "./generate-
|
|
4
|
+
import { i as compileWorkbook, n as generateWorkbookStream, r as generateWorkbookSync, t as generateWorkbook } from "./generate-DGqFsuiZ.mjs";
|
|
5
5
|
import { createThemeXml } from "@office-open/core/theme";
|
|
6
6
|
//#region src/shared/media.ts
|
|
7
7
|
var Media = class {
|
package/dist/parse.d.mts
CHANGED
|
@@ -1,2 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { t as WorkbookOptions } from "./file-DQTBkYzl.mjs";
|
|
2
|
+
import { Element } from "@office-open/xml";
|
|
3
|
+
import { DataType, ParsedArchive, parseArchive } from "@office-open/core";
|
|
4
|
+
|
|
5
|
+
//#region src/parse.d.ts
|
|
6
|
+
interface XlsxPartRefs {
|
|
7
|
+
worksheets: string[];
|
|
8
|
+
charts: string[];
|
|
9
|
+
media: string[];
|
|
10
|
+
drawings: string[];
|
|
11
|
+
}
|
|
12
|
+
interface XlsxDocument {
|
|
13
|
+
doc: ParsedArchive;
|
|
14
|
+
workbook?: Element;
|
|
15
|
+
worksheets: string[];
|
|
16
|
+
styles?: Element;
|
|
17
|
+
sharedStrings?: Element;
|
|
18
|
+
partRefs: XlsxPartRefs;
|
|
19
|
+
coreProps?: string;
|
|
20
|
+
appProps?: string;
|
|
21
|
+
}
|
|
22
|
+
declare function parseXlsx(data: DataType): XlsxDocument;
|
|
23
|
+
declare function parseWorkbook(data: DataType): WorkbookOptions;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { XlsxDocument, XlsxPartRefs, parseArchive, parseWorkbook, parseXlsx };
|
|
26
|
+
//# sourceMappingURL=parse.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.mts","names":[],"sources":["../src/parse.ts"],"mappings":";;;;;UAiCiB,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;AAAA;AAAA,iBAwBc,SAAA,CAAU,IAAA,EAAM,QAAA,GAAW,YAAY;AAAA,iBAwFvC,aAAA,CAAc,IAAA,EAAM,QAAA,GAAW,eAAe"}
|
package/dist/parse.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { E as sharedStringsDesc, S as worksheetDesc, _ as commentsDesc, a as workbookDesc, b as calcChainDesc, c as tableDesc, d as pivotTableDesc, g as drawingDesc, h as externalLinkDesc, l as pivotCacheDefDesc, t as XlsxReadContext, u as pivotCacheRecordsDesc, w as stylesDesc, y as chartsheetDesc } from "./context-
|
|
1
|
+
import { E as sharedStringsDesc, S as worksheetDesc, _ as commentsDesc, a as workbookDesc, b as calcChainDesc, c as tableDesc, d as pivotTableDesc, g as drawingDesc, h as externalLinkDesc, l as pivotCacheDefDesc, t as XlsxReadContext, u as pivotCacheRecordsDesc, w as stylesDesc, y as chartsheetDesc } from "./context-ChKe3x0r.mjs";
|
|
2
2
|
import { attr } from "@office-open/xml";
|
|
3
3
|
import { parseArchive, parseCorePropsElement, toUint8Array } from "@office-open/core";
|
|
4
4
|
//#region src/parse.ts
|
|
@@ -12,6 +12,13 @@ function sortByNumber(paths) {
|
|
|
12
12
|
return parseInt(a.match(/(\d+)/)?.[1] ?? "0", 10) - parseInt(b.match(/(\d+)/)?.[1] ?? "0", 10);
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
|
+
/** Derive the sibling rels path for an external link part.
|
|
16
|
+
* "xl/externalLinks/externalLink1.xml" → "xl/externalLinks/_rels/externalLink1.xml.rels"
|
|
17
|
+
*/
|
|
18
|
+
function externalLinkRelsPath(elPath) {
|
|
19
|
+
const idx = elPath.lastIndexOf("/");
|
|
20
|
+
return `${elPath.substring(0, idx)}/_rels/${elPath.substring(idx + 1)}.rels`;
|
|
21
|
+
}
|
|
15
22
|
/**
|
|
16
23
|
* Parse raw .xlsx data into a low-level XlsxDocument.
|
|
17
24
|
*/
|
|
@@ -98,7 +105,16 @@ function parseWorkbook(data) {
|
|
|
98
105
|
let strings = [];
|
|
99
106
|
if (xlsx.sharedStrings) strings = extractStringsFromEntries(sharedStringsDesc.parse(xlsx.sharedStrings, {}));
|
|
100
107
|
const readContext = new XlsxReadContext(xlsx, strings);
|
|
101
|
-
if (xlsx.styles)
|
|
108
|
+
if (xlsx.styles) {
|
|
109
|
+
const parsedStyles = stylesDesc.parse(xlsx.styles, readContext);
|
|
110
|
+
readContext.parsedStyles = parsedStyles;
|
|
111
|
+
if (parsedStyles.dxfs) opts.dxfs = parsedStyles.dxfs;
|
|
112
|
+
if (parsedStyles.colors) opts.colors = parsedStyles.colors;
|
|
113
|
+
if (parsedStyles.customCellStyles) opts.cellStyles = parsedStyles.customCellStyles;
|
|
114
|
+
if (parsedStyles.styleExtensions) opts.styleExtensions = parsedStyles.styleExtensions;
|
|
115
|
+
const tableStylesInfo = parsedStyles.tableStylesInfo;
|
|
116
|
+
if (tableStylesInfo?.tableStyles) opts.tableStyles = tableStylesInfo.tableStyles;
|
|
117
|
+
}
|
|
102
118
|
let sheetNames = [];
|
|
103
119
|
if (xlsx.workbook) {
|
|
104
120
|
const wbData = workbookDesc.parse(xlsx.workbook, readContext);
|
|
@@ -221,6 +237,20 @@ function parseWorkbook(data) {
|
|
|
221
237
|
const elEl = xlsx.doc.get(elPath);
|
|
222
238
|
if (!elEl) continue;
|
|
223
239
|
const elData = externalLinkDesc.parse(elEl, readContext);
|
|
240
|
+
const elData2 = elData;
|
|
241
|
+
if (elData2.externalBook) {
|
|
242
|
+
const relsPath = externalLinkRelsPath(elPath);
|
|
243
|
+
const relsEl = xlsx.doc.get(relsPath);
|
|
244
|
+
if (relsEl) for (const child of relsEl.elements ?? []) {
|
|
245
|
+
if (child.name !== "Relationship") continue;
|
|
246
|
+
if (!(attr(child, "Type") ?? "").includes("/externalLinkPath")) continue;
|
|
247
|
+
const target = attr(child, "Target");
|
|
248
|
+
if (target) {
|
|
249
|
+
elData2.externalBook.target = target;
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
224
254
|
externalLinks.push(elData);
|
|
225
255
|
}
|
|
226
256
|
if (externalLinks.length > 0) opts.externalLinks = externalLinks;
|
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 { parseArchive, parseCorePropsElement } 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 { 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 { pivotCacheDefDesc, pivotCacheRecordsDesc } from \"@parts/pivot-cache\";\nimport { pivotTableDesc } from \"@parts/pivot-table\";\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\";\nimport type { WorkbookOptions } from \"@shared/file\";\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}\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/**\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 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 }\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 };\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) opts.revision = parseInt(cp.revision, 10);\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 readContext.parsedStyles = stylesDesc.parse(xlsx.styles, readContext) as unknown as Record<\n string,\n unknown\n >;\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) as Record<string, unknown>;\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 externalLinks.push(elData);\n }\n if (externalLinks.length > 0) opts.externalLinks = externalLinks;\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 { parseArchive, parseCorePropsElement } 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 { 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 { WorkbookOptions } from \"@parts/file\";\nimport { pivotCacheDefDesc, pivotCacheRecordsDesc } from \"@parts/pivot-cache\";\nimport { pivotTableDesc } from \"@parts/pivot-table\";\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}\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 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 }\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 };\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) opts.revision = parseInt(cp.revision, 10);\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) as Record<string, unknown>;\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 return opts as WorkbookOptions;\n}\n"],"mappings":"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"}
|