js.documents 14.1.0 → 14.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/dist/bin-dispatch.cjs +1 -1
- package/dist/bin-dispatch.d.cts +3 -3
- package/dist/bin-dispatch.d.ts +3 -3
- package/dist/bin-dispatch.js +1 -1
- package/dist/convert/composition.cjs +1 -1
- package/dist/convert/composition.js +1 -1
- package/dist/convert/convert.cjs +1 -1
- package/dist/convert/convert.js +1 -1
- package/dist/convert/document-fonts.cjs +1 -1
- package/dist/convert/document-fonts.js +1 -1
- package/dist/convert/from-package.cjs +2 -2
- package/dist/convert/from-package.js +2 -2
- package/dist/convert/variant-bridges.cjs +2 -2
- package/dist/convert/variant-bridges.js +2 -2
- package/dist/csv/write.cjs +2 -2
- package/dist/csv/write.js +2 -2
- package/dist/{diagnostics-9twvwLNY.d.cts → diagnostics-CGWySzd-.d.cts} +1 -0
- package/dist/{diagnostics-9twvwLNY.d.ts → diagnostics-CGWySzd-.d.ts} +1 -0
- package/dist/edit/doc/table.cjs +3 -3
- package/dist/edit/doc/table.js +3 -3
- package/dist/edit/docx/content.cjs +1 -1
- package/dist/edit/docx/content.js +1 -1
- package/dist/edit/docx/image.cjs +1 -1
- package/dist/edit/docx/image.js +1 -1
- package/dist/edit/docx/paragraph.cjs +1 -1
- package/dist/edit/docx/paragraph.js +1 -1
- package/dist/edit/markdown/table.cjs +3 -3
- package/dist/edit/markdown/table.js +3 -3
- package/dist/edit/odp/slide.d.cts +1 -1
- package/dist/edit/odp/slide.d.ts +1 -1
- package/dist/edit/ods/sheet.cjs +1 -1
- package/dist/edit/ods/sheet.js +1 -1
- package/dist/edit/odt/content.cjs +4 -2
- package/dist/edit/odt/content.d.cts +2 -2
- package/dist/edit/odt/content.d.ts +2 -2
- package/dist/edit/odt/content.js +4 -2
- package/dist/edit/odt/editor.d.cts +1 -1
- package/dist/edit/odt/editor.d.ts +1 -1
- package/dist/edit/odt/table.cjs +59 -4
- package/dist/edit/odt/table.d.cts +1 -1
- package/dist/edit/odt/table.d.ts +1 -1
- package/dist/edit/odt/table.js +59 -4
- package/dist/edit/pptx/content.cjs +12 -2
- package/dist/edit/pptx/content.d.cts +1 -1
- package/dist/edit/pptx/content.d.ts +1 -1
- package/dist/edit/pptx/content.js +12 -2
- package/dist/edit/pptx/diagnostics.cjs +4 -1
- package/dist/edit/pptx/diagnostics.d.cts +1 -1
- package/dist/edit/pptx/diagnostics.d.ts +1 -1
- package/dist/edit/pptx/diagnostics.js +4 -1
- package/dist/edit/table-grid.cjs +2 -2
- package/dist/edit/table-grid.js +2 -2
- package/dist/firebird/backup.cjs +4 -4
- package/dist/firebird/backup.js +4 -4
- package/dist/firebird/data.cjs +2 -2
- package/dist/firebird/data.js +2 -2
- package/dist/hsqldb/binary-script.cjs +3 -3
- package/dist/hsqldb/binary-script.js +3 -3
- package/dist/hsqldb/cache.cjs +2 -2
- package/dist/hsqldb/cache.js +2 -2
- package/dist/hsqldb/rowformat.cjs +2 -2
- package/dist/hsqldb/rowformat.js +2 -2
- package/dist/hsqldb/script.cjs +2 -2
- package/dist/hsqldb/script.js +2 -2
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/layout/engine.cjs +1 -1
- package/dist/layout/engine.js +1 -1
- package/dist/layout/reconstruct.cjs +6 -6
- package/dist/layout/reconstruct.js +6 -6
- package/dist/layout/shared.cjs +4 -3
- package/dist/layout/shared.js +4 -3
- package/dist/layout/slides.cjs +1 -1
- package/dist/layout/slides.js +1 -1
- package/dist/markdown/render.cjs +3 -3
- package/dist/markdown/render.js +3 -3
- package/dist/metadata/write.cjs +12 -12
- package/dist/metadata/write.js +12 -12
- package/dist/odb/csv.cjs +2 -2
- package/dist/odb/csv.js +2 -2
- package/dist/odb/formula/errors.cjs +3 -3
- package/dist/odb/formula/errors.js +3 -3
- package/dist/odb/formula/evaluate.cjs +4 -4
- package/dist/odb/formula/evaluate.js +4 -4
- package/dist/odb/formula/parser.cjs +2 -2
- package/dist/odb/formula/parser.js +2 -2
- package/dist/odb/read.cjs +9 -9
- package/dist/odb/read.js +9 -9
- package/dist/odb/report/content.cjs +1 -1
- package/dist/odb/report/content.js +1 -1
- package/dist/odb/report/render.cjs +1 -1
- package/dist/odb/report/render.js +1 -1
- package/dist/odb/report/source.cjs +1 -1
- package/dist/odb/report/source.js +1 -1
- package/dist/odb/sql/errors.cjs +3 -3
- package/dist/odb/sql/errors.js +3 -3
- package/dist/odb/sql/evaluate.cjs +9 -9
- package/dist/odb/sql/evaluate.js +9 -9
- package/dist/odb/sql/parser.cjs +2 -2
- package/dist/odb/sql/parser.js +2 -2
- package/dist/package-codec.cjs +1 -1
- package/dist/package-codec.js +1 -1
- package/dist/svg/write.cjs +2 -2
- package/dist/svg/write.js +2 -2
- package/dist/{table-Cou5rKOo.d.ts → table-B5htMG3g.d.ts} +2 -0
- package/dist/{table-Bt9ahRyh.d.cts → table-DrE6jEWv.d.cts} +2 -0
- package/package.json +14 -14
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as ClockPort } from "../../clock-C7SUuYN0.js";
|
|
2
2
|
import { t as OdtParagraph } from "../../paragraph-D4f705GG.js";
|
|
3
|
-
import { o as TableInit, r as OdtTable } from "../../table-
|
|
3
|
+
import { o as TableInit, r as OdtTable } from "../../table-B5htMG3g.js";
|
|
4
4
|
import { ContentDocument, ContentParagraph, ContentTable } from "document-schema.js";
|
|
5
5
|
import { Package } from "odf.js";
|
|
6
6
|
//#region src/edit/odt/content.d.ts
|
|
@@ -16,7 +16,7 @@ declare function populateOdtTable(table: OdtTable, block: ContentTable): void;
|
|
|
16
16
|
/**
|
|
17
17
|
* The arguments that create the empty `table:table` a ContentTable is written into: no rows, since populateOdtTable appends one per ContentTableRow, and as many columns as the table's grid is wide.
|
|
18
18
|
*
|
|
19
|
-
* The grid width is what the rows and `
|
|
19
|
+
* The grid width is what the rows and `columns` together state (tableGridColumnCount), so a table whose rows carry cells but which states no column widths still gets one `table:table-column` per grid column; a column with no stated width takes an equal share of the default table width, the same as any column created without one. Each column's own `widthPt` is passed through untouched, so a width the table does state is always written; `isHeader` is not part of this init at all, since populateOdtTable states it afterwards via OdtTable.setHeaderColumns, the identical two-step `setHeaderRows` already needs for the same reason on the row axis.
|
|
20
20
|
*
|
|
21
21
|
* Throws when the table has no rows: ODF requires a `table:table` to hold at least one `table:table-row`, so no faithful spelling exists, and dropping the table would lose it without a trace. `entryPoint` names the caller in the message. A table that breaks the grid rule is refused by populateOdtTable before it writes anything, and a table with no rows has no grid fault to report, so the two checks never compete.
|
|
22
22
|
*/
|
package/dist/edit/odt/content.js
CHANGED
|
@@ -135,6 +135,7 @@ function populateOdtTable(table, block) {
|
|
|
135
135
|
assertTableObeysGridRule(block, "populateOdtTable");
|
|
136
136
|
const gridPositions = walkTableGrid(block);
|
|
137
137
|
const headerFlags = block.rows.map((row) => row.isHeader === true);
|
|
138
|
+
const columnHeaderFlags = block.columns.map((column) => column.isHeader === true);
|
|
138
139
|
block.rows.forEach((row, rowIndex) => {
|
|
139
140
|
const tableRow = table.appendEmptyRow();
|
|
140
141
|
tableRow.heightPt = row.heightPt;
|
|
@@ -154,6 +155,7 @@ function populateOdtTable(table, block) {
|
|
|
154
155
|
});
|
|
155
156
|
});
|
|
156
157
|
table.setHeaderRows(headerFlags);
|
|
158
|
+
table.setHeaderColumns(columnHeaderFlags);
|
|
157
159
|
}
|
|
158
160
|
function applyCellDecoration(target, cell) {
|
|
159
161
|
if (cell.background !== void 0) target.background = resolveCellFillColor(cell.background);
|
|
@@ -162,7 +164,7 @@ function applyCellDecoration(target, cell) {
|
|
|
162
164
|
/**
|
|
163
165
|
* The arguments that create the empty `table:table` a ContentTable is written into: no rows, since populateOdtTable appends one per ContentTableRow, and as many columns as the table's grid is wide.
|
|
164
166
|
*
|
|
165
|
-
* The grid width is what the rows and `
|
|
167
|
+
* The grid width is what the rows and `columns` together state (tableGridColumnCount), so a table whose rows carry cells but which states no column widths still gets one `table:table-column` per grid column; a column with no stated width takes an equal share of the default table width, the same as any column created without one. Each column's own `widthPt` is passed through untouched, so a width the table does state is always written; `isHeader` is not part of this init at all, since populateOdtTable states it afterwards via OdtTable.setHeaderColumns, the identical two-step `setHeaderRows` already needs for the same reason on the row axis.
|
|
166
168
|
*
|
|
167
169
|
* Throws when the table has no rows: ODF requires a `table:table` to hold at least one `table:table-row`, so no faithful spelling exists, and dropping the table would lose it without a trace. `entryPoint` names the caller in the message. A table that breaks the grid rule is refused by populateOdtTable before it writes anything, and a table with no rows has no grid fault to report, so the two checks never compete.
|
|
168
170
|
*/
|
|
@@ -171,7 +173,7 @@ function odtTableInit(block, entryPoint) {
|
|
|
171
173
|
return {
|
|
172
174
|
rows: 0,
|
|
173
175
|
columns: tableGridColumnCount(block),
|
|
174
|
-
columnWidthsPt: block.
|
|
176
|
+
columnWidthsPt: block.columns.map((column) => column.widthPt)
|
|
175
177
|
};
|
|
176
178
|
}
|
|
177
179
|
function appendTable(body, block) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as ClockPort } from "../../clock-C7SUuYN0.cjs";
|
|
2
2
|
import { n as ParagraphInit, t as OdtParagraph } from "../../paragraph-CRaLSzWz.cjs";
|
|
3
3
|
import { t as OdtList } from "../../list-C_UPIZWM.cjs";
|
|
4
|
-
import { o as TableInit, r as OdtTable } from "../../table-
|
|
4
|
+
import { o as TableInit, r as OdtTable } from "../../table-DrE6jEWv.cjs";
|
|
5
5
|
import { Box, ContentControlDescriptor, ContentFormula, ContentVector, DivisionDescriptor, LayoutMetadata } from "document-schema.js";
|
|
6
6
|
import { Package } from "odf.js";
|
|
7
7
|
//#region src/edit/odt/editor.d.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as ClockPort } from "../../clock-C7SUuYN0.js";
|
|
2
2
|
import { n as ParagraphInit, t as OdtParagraph } from "../../paragraph-D4f705GG.js";
|
|
3
3
|
import { t as OdtList } from "../../list-C2GWIe6E.js";
|
|
4
|
-
import { o as TableInit, r as OdtTable } from "../../table-
|
|
4
|
+
import { o as TableInit, r as OdtTable } from "../../table-B5htMG3g.js";
|
|
5
5
|
import { Box, ContentControlDescriptor, ContentFormula, ContentVector, DivisionDescriptor, LayoutMetadata } from "document-schema.js";
|
|
6
6
|
import { Package } from "odf.js";
|
|
7
7
|
//#region src/edit/odt/editor.d.ts
|
package/dist/edit/odt/table.cjs
CHANGED
|
@@ -299,10 +299,7 @@ function placedCells(row, pkg) {
|
|
|
299
299
|
function resolveOdtGrid(table, pkg) {
|
|
300
300
|
const placedRows = [];
|
|
301
301
|
let declaredColumns = 0;
|
|
302
|
-
for (const
|
|
303
|
-
if (child.type !== "element") continue;
|
|
304
|
-
if (child.tag === "table:table-column") declaredColumns += require_edit_odf_repeated_runs.readRunRepeatCount(child, require_edit_odf_repeated_runs.COLUMN_REPEAT_ATTR);
|
|
305
|
-
}
|
|
302
|
+
for (const column of tableColumnElements(table)) declaredColumns += require_edit_odf_repeated_runs.readRunRepeatCount(column, require_edit_odf_repeated_runs.COLUMN_REPEAT_ATTR);
|
|
306
303
|
for (const row of tableRowElements(table)) placedRows.push(placedCells(row, pkg));
|
|
307
304
|
return require_edit_table_grid.resolveLiveTableGrid(placedRows, declaredColumns);
|
|
308
305
|
}
|
|
@@ -403,6 +400,26 @@ function tableRowEntries(parent, insideHeader = false) {
|
|
|
403
400
|
}
|
|
404
401
|
return entries;
|
|
405
402
|
}
|
|
403
|
+
const COLUMN_WRAPPER_TAGS = /* @__PURE__ */ new Set([
|
|
404
|
+
"table:table-columns",
|
|
405
|
+
"table:table-header-columns",
|
|
406
|
+
"table:table-column-group"
|
|
407
|
+
]);
|
|
408
|
+
function tableColumnEntries(parent, insideHeader = false) {
|
|
409
|
+
const entries = [];
|
|
410
|
+
for (const child of parent.children) {
|
|
411
|
+
if (child.type !== "element") continue;
|
|
412
|
+
if (child.tag === "table:table-column") entries.push({
|
|
413
|
+
element: child,
|
|
414
|
+
insideHeader
|
|
415
|
+
});
|
|
416
|
+
else if (COLUMN_WRAPPER_TAGS.has(child.tag)) entries.push(...tableColumnEntries(child, insideHeader || child.tag === "table:table-header-columns"));
|
|
417
|
+
}
|
|
418
|
+
return entries;
|
|
419
|
+
}
|
|
420
|
+
function tableColumnElements(table) {
|
|
421
|
+
return tableColumnEntries(table).map((entry) => entry.element);
|
|
422
|
+
}
|
|
406
423
|
var OdtTableRow = class {
|
|
407
424
|
node;
|
|
408
425
|
pkg;
|
|
@@ -529,6 +546,44 @@ var OdtTable = class {
|
|
|
529
546
|
if (!placed) rest.push(...regrouped);
|
|
530
547
|
table.children = rest;
|
|
531
548
|
}
|
|
549
|
+
headerColumns() {
|
|
550
|
+
return tableColumnEntries(this.live()).map((entry) => entry.insideHeader);
|
|
551
|
+
}
|
|
552
|
+
setHeaderColumns(flags) {
|
|
553
|
+
const table = this.live();
|
|
554
|
+
const columns = tableColumnElements(table);
|
|
555
|
+
const regrouped = [];
|
|
556
|
+
let run = [];
|
|
557
|
+
const closeRun = () => {
|
|
558
|
+
if (run.length > 0) {
|
|
559
|
+
regrouped.push(require_xml_fragment.el("table:table-header-columns", {}, run));
|
|
560
|
+
run = [];
|
|
561
|
+
}
|
|
562
|
+
};
|
|
563
|
+
columns.forEach((column, index) => {
|
|
564
|
+
if (flags[index] === true) {
|
|
565
|
+
run.push(column);
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
568
|
+
closeRun();
|
|
569
|
+
regrouped.push(column);
|
|
570
|
+
});
|
|
571
|
+
closeRun();
|
|
572
|
+
const rest = [];
|
|
573
|
+
let placed = false;
|
|
574
|
+
for (const child of table.children) {
|
|
575
|
+
if (!(child.type === "element" && (child.tag === "table:table-column" || COLUMN_WRAPPER_TAGS.has(child.tag)))) {
|
|
576
|
+
rest.push(child);
|
|
577
|
+
continue;
|
|
578
|
+
}
|
|
579
|
+
if (!placed) {
|
|
580
|
+
rest.push(...regrouped);
|
|
581
|
+
placed = true;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
if (!placed) rest.push(...regrouped);
|
|
585
|
+
table.children = rest;
|
|
586
|
+
}
|
|
532
587
|
gridRows() {
|
|
533
588
|
return this.grid().rows;
|
|
534
589
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as OdtTableRow, c as buildTable, i as OdtTableCell, l as readCellDecoration, n as OdtCoveredTableCell, o as TableInit, r as OdtTable, s as buildCellStyle, t as CellDecoration } from "../../table-
|
|
1
|
+
import { a as OdtTableRow, c as buildTable, i as OdtTableCell, l as readCellDecoration, n as OdtCoveredTableCell, o as TableInit, r as OdtTable, s as buildCellStyle, t as CellDecoration } from "../../table-DrE6jEWv.cjs";
|
|
2
2
|
export { CellDecoration, OdtCoveredTableCell, OdtTable, OdtTableCell, OdtTableRow, TableInit, buildCellStyle, buildTable, readCellDecoration };
|
package/dist/edit/odt/table.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as OdtTableRow, c as buildTable, i as OdtTableCell, l as readCellDecoration, n as OdtCoveredTableCell, o as TableInit, r as OdtTable, s as buildCellStyle, t as CellDecoration } from "../../table-
|
|
1
|
+
import { a as OdtTableRow, c as buildTable, i as OdtTableCell, l as readCellDecoration, n as OdtCoveredTableCell, o as TableInit, r as OdtTable, s as buildCellStyle, t as CellDecoration } from "../../table-B5htMG3g.js";
|
|
2
2
|
export { CellDecoration, OdtCoveredTableCell, OdtTable, OdtTableCell, OdtTableRow, TableInit, buildCellStyle, buildTable, readCellDecoration };
|
package/dist/edit/odt/table.js
CHANGED
|
@@ -298,10 +298,7 @@ function placedCells(row, pkg) {
|
|
|
298
298
|
function resolveOdtGrid(table, pkg) {
|
|
299
299
|
const placedRows = [];
|
|
300
300
|
let declaredColumns = 0;
|
|
301
|
-
for (const
|
|
302
|
-
if (child.type !== "element") continue;
|
|
303
|
-
if (child.tag === "table:table-column") declaredColumns += readRunRepeatCount(child, COLUMN_REPEAT_ATTR);
|
|
304
|
-
}
|
|
301
|
+
for (const column of tableColumnElements(table)) declaredColumns += readRunRepeatCount(column, COLUMN_REPEAT_ATTR);
|
|
305
302
|
for (const row of tableRowElements(table)) placedRows.push(placedCells(row, pkg));
|
|
306
303
|
return resolveLiveTableGrid(placedRows, declaredColumns);
|
|
307
304
|
}
|
|
@@ -402,6 +399,26 @@ function tableRowEntries(parent, insideHeader = false) {
|
|
|
402
399
|
}
|
|
403
400
|
return entries;
|
|
404
401
|
}
|
|
402
|
+
const COLUMN_WRAPPER_TAGS = /* @__PURE__ */ new Set([
|
|
403
|
+
"table:table-columns",
|
|
404
|
+
"table:table-header-columns",
|
|
405
|
+
"table:table-column-group"
|
|
406
|
+
]);
|
|
407
|
+
function tableColumnEntries(parent, insideHeader = false) {
|
|
408
|
+
const entries = [];
|
|
409
|
+
for (const child of parent.children) {
|
|
410
|
+
if (child.type !== "element") continue;
|
|
411
|
+
if (child.tag === "table:table-column") entries.push({
|
|
412
|
+
element: child,
|
|
413
|
+
insideHeader
|
|
414
|
+
});
|
|
415
|
+
else if (COLUMN_WRAPPER_TAGS.has(child.tag)) entries.push(...tableColumnEntries(child, insideHeader || child.tag === "table:table-header-columns"));
|
|
416
|
+
}
|
|
417
|
+
return entries;
|
|
418
|
+
}
|
|
419
|
+
function tableColumnElements(table) {
|
|
420
|
+
return tableColumnEntries(table).map((entry) => entry.element);
|
|
421
|
+
}
|
|
405
422
|
var OdtTableRow = class {
|
|
406
423
|
node;
|
|
407
424
|
pkg;
|
|
@@ -528,6 +545,44 @@ var OdtTable = class {
|
|
|
528
545
|
if (!placed) rest.push(...regrouped);
|
|
529
546
|
table.children = rest;
|
|
530
547
|
}
|
|
548
|
+
headerColumns() {
|
|
549
|
+
return tableColumnEntries(this.live()).map((entry) => entry.insideHeader);
|
|
550
|
+
}
|
|
551
|
+
setHeaderColumns(flags) {
|
|
552
|
+
const table = this.live();
|
|
553
|
+
const columns = tableColumnElements(table);
|
|
554
|
+
const regrouped = [];
|
|
555
|
+
let run = [];
|
|
556
|
+
const closeRun = () => {
|
|
557
|
+
if (run.length > 0) {
|
|
558
|
+
regrouped.push(el("table:table-header-columns", {}, run));
|
|
559
|
+
run = [];
|
|
560
|
+
}
|
|
561
|
+
};
|
|
562
|
+
columns.forEach((column, index) => {
|
|
563
|
+
if (flags[index] === true) {
|
|
564
|
+
run.push(column);
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
closeRun();
|
|
568
|
+
regrouped.push(column);
|
|
569
|
+
});
|
|
570
|
+
closeRun();
|
|
571
|
+
const rest = [];
|
|
572
|
+
let placed = false;
|
|
573
|
+
for (const child of table.children) {
|
|
574
|
+
if (!(child.type === "element" && (child.tag === "table:table-column" || COLUMN_WRAPPER_TAGS.has(child.tag)))) {
|
|
575
|
+
rest.push(child);
|
|
576
|
+
continue;
|
|
577
|
+
}
|
|
578
|
+
if (!placed) {
|
|
579
|
+
rest.push(...regrouped);
|
|
580
|
+
placed = true;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
if (!placed) rest.push(...regrouped);
|
|
584
|
+
table.children = rest;
|
|
585
|
+
}
|
|
531
586
|
gridRows() {
|
|
532
587
|
return this.grid().rows;
|
|
533
588
|
}
|
|
@@ -45,7 +45,7 @@ function appendShape(slide, shape, options) {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
if (shape.blocks.length === 1 && onlyBlock?.kind === "image") {
|
|
48
|
-
if (onlyBlock.format === "svg") throw new Error("buildPptxPackage: an image block in svg format has no OOXML blip this writer can produce (PresentationML's a:blip only references a raster part PowerPoint decodes directly
|
|
48
|
+
if (onlyBlock.format === "svg") throw new Error("buildPptxPackage: an image block in svg format has no OOXML blip this writer can produce (PresentationML's a:blip only references a raster part PowerPoint decodes directly — png/jpeg/gif)");
|
|
49
49
|
const imageShape = slide.addImage({
|
|
50
50
|
frame: shape.frame,
|
|
51
51
|
format: onlyBlock.format,
|
|
@@ -64,7 +64,7 @@ function appendShape(slide, shape, options) {
|
|
|
64
64
|
table: {
|
|
65
65
|
rows: onlyBlock.rows.length,
|
|
66
66
|
columns: (0, document_schema_js.tableGridColumnCount)(onlyBlock),
|
|
67
|
-
columnWidthsPt: onlyBlock.
|
|
67
|
+
columnWidthsPt: onlyBlock.columns.map((c) => c.widthPt)
|
|
68
68
|
}
|
|
69
69
|
}), onlyBlock, options?.onDiagnostic ?? require_edit_pptx_diagnostics.NOOP_PPTX_WRITE_DIAGNOSTIC_SINK, (url) => slide.registerHyperlink(url));
|
|
70
70
|
return;
|
|
@@ -115,8 +115,18 @@ function populateCellParagraphs(cell, blocks, resolveHyperlinkRId) {
|
|
|
115
115
|
}
|
|
116
116
|
cell.setParagraphs(paragraphs);
|
|
117
117
|
}
|
|
118
|
+
function reportDroppedHeaderColumns(block, onDiagnostic) {
|
|
119
|
+
block.columns.forEach((column, columnIndex) => {
|
|
120
|
+
if (column.isHeader === true) onDiagnostic({
|
|
121
|
+
code: require_edit_pptx_diagnostics.PptxWriteDiagnosticCodes.TABLE_HEADER_COLUMN_DROPPED,
|
|
122
|
+
severity: "warning",
|
|
123
|
+
message: `buildPptxPackage: table column ${String(columnIndex)} is a header column, and that is dropped; DrawingML has no header-column marker, so the column is written exactly as any other`
|
|
124
|
+
}, { sourcePath: block.sourcePath });
|
|
125
|
+
});
|
|
126
|
+
}
|
|
118
127
|
function populatePptxTable(table, block, onDiagnostic, resolveHyperlinkRId) {
|
|
119
128
|
require_edit_table_grid.assertTableObeysGridRule(block, "buildPptxPackage");
|
|
129
|
+
reportDroppedHeaderColumns(block, onDiagnostic);
|
|
120
130
|
(0, document_schema_js.walkTableGrid)(block).forEach((positions, rowIndex) => {
|
|
121
131
|
if (block.rows[rowIndex]?.isHeader === true) onDiagnostic({
|
|
122
132
|
code: require_edit_pptx_diagnostics.PptxWriteDiagnosticCodes.TABLE_HEADER_ROW_DROPPED,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as ClockPort } from "../../clock-C7SUuYN0.cjs";
|
|
2
2
|
import { t as OmmlDiagnosticSink } from "../../formula-BH1FBblm.cjs";
|
|
3
|
-
import { o as PptxWriteDiagnosticSink } from "../../diagnostics-
|
|
3
|
+
import { o as PptxWriteDiagnosticSink } from "../../diagnostics-CGWySzd-.cjs";
|
|
4
4
|
import { ContentDocument } from "document-schema.js";
|
|
5
5
|
import { EmbeddedPresentationSerialiser, Package } from "ooxml.js";
|
|
6
6
|
//#region src/edit/pptx/content.d.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as ClockPort } from "../../clock-C7SUuYN0.js";
|
|
2
2
|
import { t as OmmlDiagnosticSink } from "../../formula-DF4R1QEJ.js";
|
|
3
|
-
import { o as PptxWriteDiagnosticSink } from "../../diagnostics-
|
|
3
|
+
import { o as PptxWriteDiagnosticSink } from "../../diagnostics-CGWySzd-.js";
|
|
4
4
|
import { EmbeddedPresentationSerialiser, Package } from "ooxml.js";
|
|
5
5
|
import { ContentDocument } from "document-schema.js";
|
|
6
6
|
//#region src/edit/pptx/content.d.ts
|
|
@@ -44,7 +44,7 @@ function appendShape(slide, shape, options) {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
if (shape.blocks.length === 1 && onlyBlock?.kind === "image") {
|
|
47
|
-
if (onlyBlock.format === "svg") throw new Error("buildPptxPackage: an image block in svg format has no OOXML blip this writer can produce (PresentationML's a:blip only references a raster part PowerPoint decodes directly
|
|
47
|
+
if (onlyBlock.format === "svg") throw new Error("buildPptxPackage: an image block in svg format has no OOXML blip this writer can produce (PresentationML's a:blip only references a raster part PowerPoint decodes directly — png/jpeg/gif)");
|
|
48
48
|
const imageShape = slide.addImage({
|
|
49
49
|
frame: shape.frame,
|
|
50
50
|
format: onlyBlock.format,
|
|
@@ -63,7 +63,7 @@ function appendShape(slide, shape, options) {
|
|
|
63
63
|
table: {
|
|
64
64
|
rows: onlyBlock.rows.length,
|
|
65
65
|
columns: tableGridColumnCount(onlyBlock),
|
|
66
|
-
columnWidthsPt: onlyBlock.
|
|
66
|
+
columnWidthsPt: onlyBlock.columns.map((c) => c.widthPt)
|
|
67
67
|
}
|
|
68
68
|
}), onlyBlock, options?.onDiagnostic ?? NOOP_PPTX_WRITE_DIAGNOSTIC_SINK, (url) => slide.registerHyperlink(url));
|
|
69
69
|
return;
|
|
@@ -114,8 +114,18 @@ function populateCellParagraphs(cell, blocks, resolveHyperlinkRId) {
|
|
|
114
114
|
}
|
|
115
115
|
cell.setParagraphs(paragraphs);
|
|
116
116
|
}
|
|
117
|
+
function reportDroppedHeaderColumns(block, onDiagnostic) {
|
|
118
|
+
block.columns.forEach((column, columnIndex) => {
|
|
119
|
+
if (column.isHeader === true) onDiagnostic({
|
|
120
|
+
code: PptxWriteDiagnosticCodes.TABLE_HEADER_COLUMN_DROPPED,
|
|
121
|
+
severity: "warning",
|
|
122
|
+
message: `buildPptxPackage: table column ${String(columnIndex)} is a header column, and that is dropped; DrawingML has no header-column marker, so the column is written exactly as any other`
|
|
123
|
+
}, { sourcePath: block.sourcePath });
|
|
124
|
+
});
|
|
125
|
+
}
|
|
117
126
|
function populatePptxTable(table, block, onDiagnostic, resolveHyperlinkRId) {
|
|
118
127
|
assertTableObeysGridRule(block, "buildPptxPackage");
|
|
128
|
+
reportDroppedHeaderColumns(block, onDiagnostic);
|
|
119
129
|
walkTableGrid(block).forEach((positions, rowIndex) => {
|
|
120
130
|
if (block.rows[rowIndex]?.isHeader === true) onDiagnostic({
|
|
121
131
|
code: PptxWriteDiagnosticCodes.TABLE_HEADER_ROW_DROPPED,
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
//#region src/edit/pptx/diagnostics.ts
|
|
3
|
-
const PptxWriteDiagnosticCodes = {
|
|
3
|
+
const PptxWriteDiagnosticCodes = {
|
|
4
|
+
TABLE_HEADER_ROW_DROPPED: "pptx-write/table-header-row-dropped",
|
|
5
|
+
TABLE_HEADER_COLUMN_DROPPED: "pptx-write/table-header-column-dropped"
|
|
6
|
+
};
|
|
4
7
|
const NOOP_PPTX_WRITE_DIAGNOSTIC_SINK = () => {};
|
|
5
8
|
//#endregion
|
|
6
9
|
exports.NOOP_PPTX_WRITE_DIAGNOSTIC_SINK = NOOP_PPTX_WRITE_DIAGNOSTIC_SINK;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as PptxWriteDiagnosticSeverity, i as PptxWriteDiagnosticCodes, n as PptxWriteDiagnostic, o as PptxWriteDiagnosticSink, r as PptxWriteDiagnosticCode, t as NOOP_PPTX_WRITE_DIAGNOSTIC_SINK } from "../../diagnostics-
|
|
1
|
+
import { a as PptxWriteDiagnosticSeverity, i as PptxWriteDiagnosticCodes, n as PptxWriteDiagnostic, o as PptxWriteDiagnosticSink, r as PptxWriteDiagnosticCode, t as NOOP_PPTX_WRITE_DIAGNOSTIC_SINK } from "../../diagnostics-CGWySzd-.cjs";
|
|
2
2
|
export { NOOP_PPTX_WRITE_DIAGNOSTIC_SINK, PptxWriteDiagnostic, PptxWriteDiagnosticCode, PptxWriteDiagnosticCodes, PptxWriteDiagnosticSeverity, PptxWriteDiagnosticSink };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as PptxWriteDiagnosticSeverity, i as PptxWriteDiagnosticCodes, n as PptxWriteDiagnostic, o as PptxWriteDiagnosticSink, r as PptxWriteDiagnosticCode, t as NOOP_PPTX_WRITE_DIAGNOSTIC_SINK } from "../../diagnostics-
|
|
1
|
+
import { a as PptxWriteDiagnosticSeverity, i as PptxWriteDiagnosticCodes, n as PptxWriteDiagnostic, o as PptxWriteDiagnosticSink, r as PptxWriteDiagnosticCode, t as NOOP_PPTX_WRITE_DIAGNOSTIC_SINK } from "../../diagnostics-CGWySzd-.js";
|
|
2
2
|
export { NOOP_PPTX_WRITE_DIAGNOSTIC_SINK, PptxWriteDiagnostic, PptxWriteDiagnosticCode, PptxWriteDiagnosticCodes, PptxWriteDiagnosticSeverity, PptxWriteDiagnosticSink };
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
//#region src/edit/pptx/diagnostics.ts
|
|
2
|
-
const PptxWriteDiagnosticCodes = {
|
|
2
|
+
const PptxWriteDiagnosticCodes = {
|
|
3
|
+
TABLE_HEADER_ROW_DROPPED: "pptx-write/table-header-row-dropped",
|
|
4
|
+
TABLE_HEADER_COLUMN_DROPPED: "pptx-write/table-header-column-dropped"
|
|
5
|
+
};
|
|
3
6
|
const NOOP_PPTX_WRITE_DIAGNOSTIC_SINK = () => {};
|
|
4
7
|
//#endregion
|
|
5
8
|
export { NOOP_PPTX_WRITE_DIAGNOSTIC_SINK, PptxWriteDiagnosticCodes };
|
package/dist/edit/table-grid.cjs
CHANGED
|
@@ -22,7 +22,7 @@ function resolveLiveTableGrid(rows, declaredColumnCount) {
|
|
|
22
22
|
})) }));
|
|
23
23
|
const skeleton = {
|
|
24
24
|
kind: "table",
|
|
25
|
-
|
|
25
|
+
columns: [],
|
|
26
26
|
rows: (0, document_schema_js.denseTableRows)(positioned, declaredColumnCount)
|
|
27
27
|
};
|
|
28
28
|
const liveCells = /* @__PURE__ */ new Map();
|
|
@@ -51,7 +51,7 @@ function resolvePivotTableGrid(table, wrap) {
|
|
|
51
51
|
cell: wrap(cell),
|
|
52
52
|
colSpan: cell.colSpan,
|
|
53
53
|
rowSpan: cell.rowSpan
|
|
54
|
-
}))), table.
|
|
54
|
+
}))), table.columns.length);
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Throws when `table` breaks the grid rule (ContentTableCell in document-schema.js), naming `entryPoint` and the fault. The edit layer's builders write a covered position as a marker with no content of its own (a docx vertical-merge continuation, an ODF `table:covered-table-cell`, a pptx `hMerge`/`vMerge` cell), so a table whose covered positions carry blocks or spans, whose rows disagree about the grid, or whose regions run past the grid or into each other has no faithful spelling: the builder would drop what a covered position held, or guess which of two regions a position belongs to.
|
package/dist/edit/table-grid.js
CHANGED
|
@@ -21,7 +21,7 @@ function resolveLiveTableGrid(rows, declaredColumnCount) {
|
|
|
21
21
|
})) }));
|
|
22
22
|
const skeleton = {
|
|
23
23
|
kind: "table",
|
|
24
|
-
|
|
24
|
+
columns: [],
|
|
25
25
|
rows: denseTableRows(positioned, declaredColumnCount)
|
|
26
26
|
};
|
|
27
27
|
const liveCells = /* @__PURE__ */ new Map();
|
|
@@ -50,7 +50,7 @@ function resolvePivotTableGrid(table, wrap) {
|
|
|
50
50
|
cell: wrap(cell),
|
|
51
51
|
colSpan: cell.colSpan,
|
|
52
52
|
rowSpan: cell.rowSpan
|
|
53
|
-
}))), table.
|
|
53
|
+
}))), table.columns.length);
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Throws when `table` breaks the grid rule (ContentTableCell in document-schema.js), naming `entryPoint` and the fault. The edit layer's builders write a covered position as a marker with no content of its own (a docx vertical-merge continuation, an ODF `table:covered-table-cell`, a pptx `hMerge`/`vMerge` cell), so a table whose covered positions carry blocks or spans, whose rows disagree about the grid, or whose regions run past the grid or into each other has no faithful spelling: the builder would drop what a covered position held, or guess which of two regions a position belongs to.
|
package/dist/firebird/backup.cjs
CHANGED
|
@@ -61,7 +61,7 @@ function readBurpHeader(reader) {
|
|
|
61
61
|
default: reader.skipAttributeValue();
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
if (backupFormatVersion === void 0) throw new FirebirdBackupFormatError("the leading rec_burp record had no att_backup_format attribute
|
|
64
|
+
if (backupFormatVersion === void 0) throw new FirebirdBackupFormatError("the leading rec_burp record had no att_backup_format attribute — not a recognisable gbak backup stream");
|
|
65
65
|
return {
|
|
66
66
|
backupFormatVersion,
|
|
67
67
|
transportable,
|
|
@@ -88,10 +88,10 @@ function relationToColumns(relation) {
|
|
|
88
88
|
function readFirebirdBackup(bytes) {
|
|
89
89
|
const reader = new require_firebird_reader.FirebirdBackupReader(bytes);
|
|
90
90
|
const leadingRecordType = reader.readTag();
|
|
91
|
-
if (leadingRecordType !== 0) throw new FirebirdBackupFormatError(`expected the stream to open with rec_burp (tag 0), found tag ${leadingRecordType}
|
|
91
|
+
if (leadingRecordType !== 0) throw new FirebirdBackupFormatError(`expected the stream to open with rec_burp (tag 0), found tag ${leadingRecordType} — not a recognisable gbak backup stream`);
|
|
92
92
|
const { backupFormatVersion, transportable, compressed } = readBurpHeader(reader);
|
|
93
|
-
if (backupFormatVersion !== 10) throw new FirebirdBackupFormatError(`backup format version ${backupFormatVersion} is not supported
|
|
94
|
-
if (!transportable) throw new FirebirdBackupFormatError("backup is in non-transportable (native binary) row format (att_backup_transportable=false)
|
|
93
|
+
if (backupFormatVersion !== 10) throw new FirebirdBackupFormatError(`backup format version ${backupFormatVersion} is not supported — this reader has only been built and verified against format version 10 (Firebird 3.0-era gbak output). Refusing to guess at a different format's own attribute/record shape rather than risk silently misdecoding it.`);
|
|
94
|
+
if (!transportable) throw new FirebirdBackupFormatError("backup is in non-transportable (native binary) row format (att_backup_transportable=false) — this reader only decodes the transportable/XDR row encoding, the one every real fixture it was built against actually uses (gbak's own default).");
|
|
95
95
|
let pageSizeBytes;
|
|
96
96
|
const schema = /* @__PURE__ */ new Map();
|
|
97
97
|
const relationsInOrder = [];
|
package/dist/firebird/backup.js
CHANGED
|
@@ -60,7 +60,7 @@ function readBurpHeader(reader) {
|
|
|
60
60
|
default: reader.skipAttributeValue();
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
if (backupFormatVersion === void 0) throw new FirebirdBackupFormatError("the leading rec_burp record had no att_backup_format attribute
|
|
63
|
+
if (backupFormatVersion === void 0) throw new FirebirdBackupFormatError("the leading rec_burp record had no att_backup_format attribute — not a recognisable gbak backup stream");
|
|
64
64
|
return {
|
|
65
65
|
backupFormatVersion,
|
|
66
66
|
transportable,
|
|
@@ -87,10 +87,10 @@ function relationToColumns(relation) {
|
|
|
87
87
|
function readFirebirdBackup(bytes) {
|
|
88
88
|
const reader = new FirebirdBackupReader(bytes);
|
|
89
89
|
const leadingRecordType = reader.readTag();
|
|
90
|
-
if (leadingRecordType !== 0) throw new FirebirdBackupFormatError(`expected the stream to open with rec_burp (tag 0), found tag ${leadingRecordType}
|
|
90
|
+
if (leadingRecordType !== 0) throw new FirebirdBackupFormatError(`expected the stream to open with rec_burp (tag 0), found tag ${leadingRecordType} — not a recognisable gbak backup stream`);
|
|
91
91
|
const { backupFormatVersion, transportable, compressed } = readBurpHeader(reader);
|
|
92
|
-
if (backupFormatVersion !== 10) throw new FirebirdBackupFormatError(`backup format version ${backupFormatVersion} is not supported
|
|
93
|
-
if (!transportable) throw new FirebirdBackupFormatError("backup is in non-transportable (native binary) row format (att_backup_transportable=false)
|
|
92
|
+
if (backupFormatVersion !== 10) throw new FirebirdBackupFormatError(`backup format version ${backupFormatVersion} is not supported — this reader has only been built and verified against format version 10 (Firebird 3.0-era gbak output). Refusing to guess at a different format's own attribute/record shape rather than risk silently misdecoding it.`);
|
|
93
|
+
if (!transportable) throw new FirebirdBackupFormatError("backup is in non-transportable (native binary) row format (att_backup_transportable=false) — this reader only decodes the transportable/XDR row encoding, the one every real fixture it was built against actually uses (gbak's own default).");
|
|
94
94
|
let pageSizeBytes;
|
|
95
95
|
const schema = /* @__PURE__ */ new Map();
|
|
96
96
|
const relationsInOrder = [];
|
package/dist/firebird/data.cjs
CHANGED
|
@@ -22,7 +22,7 @@ var FirebirdDataParseError = class extends Error {
|
|
|
22
22
|
var FirebirdCompositeRecordUnsupportedError = class extends Error {
|
|
23
23
|
recordType;
|
|
24
24
|
constructor(recordType, context) {
|
|
25
|
-
super(`Firebird backup: encountered record type ${recordType} while ${context}, which this reader's own bounded implementation does not know how to skip safely (its own attribute/sub-record shape has not been verified against a real fixture)
|
|
25
|
+
super(`Firebird backup: encountered record type ${recordType} while ${context}, which this reader's own bounded implementation does not know how to skip safely (its own attribute/sub-record shape has not been verified against a real fixture) — refusing to guess rather than risk silently desynchronising the rest of the stream`);
|
|
26
26
|
this.name = "FirebirdCompositeRecordUnsupportedError";
|
|
27
27
|
this.recordType = recordType;
|
|
28
28
|
}
|
|
@@ -198,7 +198,7 @@ function decodeRowValues(fields, payload) {
|
|
|
198
198
|
case "int128":
|
|
199
199
|
case "dec64":
|
|
200
200
|
case "dec128":
|
|
201
|
-
case "unsupported-tz": throw new FirebirdDataParseError(`column "${field.name}" has physical type "${field.physicalType}", which this reader's own bounded implementation does not decode (FB4+-only types not exercised by this reader's Firebird 3.0-era real fixture)
|
|
201
|
+
case "unsupported-tz": throw new FirebirdDataParseError(`column "${field.name}" has physical type "${field.physicalType}", which this reader's own bounded implementation does not decode (FB4+-only types not exercised by this reader's Firebird 3.0-era real fixture) — see the README's .odb Tier 3 Fidelity note`);
|
|
202
202
|
}
|
|
203
203
|
for (let i = 0; i < storedFields.length; i++) if (xdr.readInt16() !== 0) rawValues[i] = { kind: "empty" };
|
|
204
204
|
return rawValues.map((value) => value ?? { kind: "empty" });
|
package/dist/firebird/data.js
CHANGED
|
@@ -21,7 +21,7 @@ var FirebirdDataParseError = class extends Error {
|
|
|
21
21
|
var FirebirdCompositeRecordUnsupportedError = class extends Error {
|
|
22
22
|
recordType;
|
|
23
23
|
constructor(recordType, context) {
|
|
24
|
-
super(`Firebird backup: encountered record type ${recordType} while ${context}, which this reader's own bounded implementation does not know how to skip safely (its own attribute/sub-record shape has not been verified against a real fixture)
|
|
24
|
+
super(`Firebird backup: encountered record type ${recordType} while ${context}, which this reader's own bounded implementation does not know how to skip safely (its own attribute/sub-record shape has not been verified against a real fixture) — refusing to guess rather than risk silently desynchronising the rest of the stream`);
|
|
25
25
|
this.name = "FirebirdCompositeRecordUnsupportedError";
|
|
26
26
|
this.recordType = recordType;
|
|
27
27
|
}
|
|
@@ -197,7 +197,7 @@ function decodeRowValues(fields, payload) {
|
|
|
197
197
|
case "int128":
|
|
198
198
|
case "dec64":
|
|
199
199
|
case "dec128":
|
|
200
|
-
case "unsupported-tz": throw new FirebirdDataParseError(`column "${field.name}" has physical type "${field.physicalType}", which this reader's own bounded implementation does not decode (FB4+-only types not exercised by this reader's Firebird 3.0-era real fixture)
|
|
200
|
+
case "unsupported-tz": throw new FirebirdDataParseError(`column "${field.name}" has physical type "${field.physicalType}", which this reader's own bounded implementation does not decode (FB4+-only types not exercised by this reader's Firebird 3.0-era real fixture) — see the README's .odb Tier 3 Fidelity note`);
|
|
201
201
|
}
|
|
202
202
|
for (let i = 0; i < storedFields.length; i++) if (xdr.readInt16() !== 0) rawValues[i] = { kind: "empty" };
|
|
203
203
|
return rawValues.map((value) => value ?? { kind: "empty" });
|
|
@@ -72,14 +72,14 @@ function readResultMetaData(reader) {
|
|
|
72
72
|
function readDdlStatements(reader) {
|
|
73
73
|
const recordStart = reader.position;
|
|
74
74
|
const recordLength = reader.readInt32("the leading DDL result record's own length");
|
|
75
|
-
if (recordLength <= 4) throw new HsqldbBinaryScriptParseError(`the leading DDL result record declares an implausible length ${recordLength}
|
|
75
|
+
if (recordLength <= 4) throw new HsqldbBinaryScriptParseError(`the leading DDL result record declares an implausible length ${recordLength} — not a recognisable HSQLDB binary script`, recordStart);
|
|
76
76
|
const mode = reader.readInt32("the DDL result's own mode");
|
|
77
|
-
if (mode !== RESULT_MODE_DATA) throw new HsqldbBinaryScriptParseError(`the leading record has Result mode ${mode}, not the DATA mode (${RESULT_MODE_DATA}) a script's own DDL result always carries
|
|
77
|
+
if (mode !== RESULT_MODE_DATA) throw new HsqldbBinaryScriptParseError(`the leading record has Result mode ${mode}, not the DATA mode (${RESULT_MODE_DATA}) a script's own DDL result always carries — not a recognisable HSQLDB binary script`, recordStart);
|
|
78
78
|
reader.readInt32("the DDL result's own database id");
|
|
79
79
|
reader.readInt32("the DDL result's own session id");
|
|
80
80
|
const columnTypes = readResultMetaData(reader);
|
|
81
81
|
const firstColumnType = columnTypes[0];
|
|
82
|
-
if (columnTypes.length !== 1 || firstColumnType !== SQL_TYPE_VARCHAR) throw new HsqldbBinaryScriptParseError(`the DDL result has ${columnTypes.length} column(s) of type [${columnTypes.join(", ")}]
|
|
82
|
+
if (columnTypes.length !== 1 || firstColumnType !== SQL_TYPE_VARCHAR) throw new HsqldbBinaryScriptParseError(`the DDL result has ${columnTypes.length} column(s) of type [${columnTypes.join(", ")}] — a script's own DDL result is always the single VARCHAR "COMMAND" column DatabaseScript.getScript builds`, recordStart);
|
|
83
83
|
const rowCount = reader.readInt32("the DDL result's own row count");
|
|
84
84
|
if (rowCount < 0) throw new HsqldbBinaryScriptParseError(`the DDL result declares a negative row count ${rowCount}`, reader.position);
|
|
85
85
|
const statements = [];
|
|
@@ -71,14 +71,14 @@ function readResultMetaData(reader) {
|
|
|
71
71
|
function readDdlStatements(reader) {
|
|
72
72
|
const recordStart = reader.position;
|
|
73
73
|
const recordLength = reader.readInt32("the leading DDL result record's own length");
|
|
74
|
-
if (recordLength <= 4) throw new HsqldbBinaryScriptParseError(`the leading DDL result record declares an implausible length ${recordLength}
|
|
74
|
+
if (recordLength <= 4) throw new HsqldbBinaryScriptParseError(`the leading DDL result record declares an implausible length ${recordLength} — not a recognisable HSQLDB binary script`, recordStart);
|
|
75
75
|
const mode = reader.readInt32("the DDL result's own mode");
|
|
76
|
-
if (mode !== RESULT_MODE_DATA) throw new HsqldbBinaryScriptParseError(`the leading record has Result mode ${mode}, not the DATA mode (${RESULT_MODE_DATA}) a script's own DDL result always carries
|
|
76
|
+
if (mode !== RESULT_MODE_DATA) throw new HsqldbBinaryScriptParseError(`the leading record has Result mode ${mode}, not the DATA mode (${RESULT_MODE_DATA}) a script's own DDL result always carries — not a recognisable HSQLDB binary script`, recordStart);
|
|
77
77
|
reader.readInt32("the DDL result's own database id");
|
|
78
78
|
reader.readInt32("the DDL result's own session id");
|
|
79
79
|
const columnTypes = readResultMetaData(reader);
|
|
80
80
|
const firstColumnType = columnTypes[0];
|
|
81
|
-
if (columnTypes.length !== 1 || firstColumnType !== SQL_TYPE_VARCHAR) throw new HsqldbBinaryScriptParseError(`the DDL result has ${columnTypes.length} column(s) of type [${columnTypes.join(", ")}]
|
|
81
|
+
if (columnTypes.length !== 1 || firstColumnType !== SQL_TYPE_VARCHAR) throw new HsqldbBinaryScriptParseError(`the DDL result has ${columnTypes.length} column(s) of type [${columnTypes.join(", ")}] — a script's own DDL result is always the single VARCHAR "COMMAND" column DatabaseScript.getScript builds`, recordStart);
|
|
82
82
|
const rowCount = reader.readInt32("the DDL result's own row count");
|
|
83
83
|
if (rowCount < 0) throw new HsqldbBinaryScriptParseError(`the DDL result declares a negative row count ${rowCount}`, reader.position);
|
|
84
84
|
const statements = [];
|
package/dist/hsqldb/cache.cjs
CHANGED
|
@@ -13,7 +13,7 @@ function parseHsqldbProperties(text) {
|
|
|
13
13
|
props.set(line.slice(0, eq).trim(), line.slice(eq + 1).trim());
|
|
14
14
|
}
|
|
15
15
|
const compatibleVersion = props.get("hsqldb.compatible_version");
|
|
16
|
-
if (compatibleVersion !== void 0 && !SUPPORTED_COMPATIBLE_VERSION_PREFIXES.some((prefix) => compatibleVersion.startsWith(prefix))) throw new require_hsqldb_rowformat.HsqldbRowFormatError(`database/properties declares hsqldb.compatible_version "${compatibleVersion}"
|
|
16
|
+
if (compatibleVersion !== void 0 && !SUPPORTED_COMPATIBLE_VERSION_PREFIXES.some((prefix) => compatibleVersion.startsWith(prefix))) throw new require_hsqldb_rowformat.HsqldbRowFormatError(`database/properties declares hsqldb.compatible_version "${compatibleVersion}" — this decoder is scoped to the HSQLDB 1.7.x/1.8.x CACHED-table row-store format (the version LibreOffice's own embedded driver ships) and does not know this version's own on-disk row-store layout`);
|
|
17
17
|
return {
|
|
18
18
|
cacheFileScale: Number(props.get("hsqldb.cache_file_scale") ?? "1") === 1 ? 1 : 8,
|
|
19
19
|
compatibleVersion
|
|
@@ -33,7 +33,7 @@ function parseHsqldbIndexRoots(scriptText) {
|
|
|
33
33
|
const tokensText = match[2] ?? "";
|
|
34
34
|
const tableName = unquoteIdentifier(rawName).toUpperCase();
|
|
35
35
|
const tokens = tokensText.trim().length === 0 ? [] : tokensText.trim().split(/\s+/);
|
|
36
|
-
if (tokens.length < 2) throw new require_hsqldb_rowformat.HsqldbRowFormatError(`table "${tableName}"'s SET TABLE...INDEX line has ${tokens.length} token(s)
|
|
36
|
+
if (tokens.length < 2) throw new require_hsqldb_rowformat.HsqldbRowFormatError(`table "${tableName}"'s SET TABLE...INDEX line has ${tokens.length} token(s) — every such line carries at least one index root position followed by the table's own identity-sequence value`);
|
|
37
37
|
const indexCount = tokens.length - 1;
|
|
38
38
|
const rootToken = tokens[0] ?? "";
|
|
39
39
|
const rootPosition = Number(rootToken);
|
package/dist/hsqldb/cache.js
CHANGED
|
@@ -12,7 +12,7 @@ function parseHsqldbProperties(text) {
|
|
|
12
12
|
props.set(line.slice(0, eq).trim(), line.slice(eq + 1).trim());
|
|
13
13
|
}
|
|
14
14
|
const compatibleVersion = props.get("hsqldb.compatible_version");
|
|
15
|
-
if (compatibleVersion !== void 0 && !SUPPORTED_COMPATIBLE_VERSION_PREFIXES.some((prefix) => compatibleVersion.startsWith(prefix))) throw new HsqldbRowFormatError(`database/properties declares hsqldb.compatible_version "${compatibleVersion}"
|
|
15
|
+
if (compatibleVersion !== void 0 && !SUPPORTED_COMPATIBLE_VERSION_PREFIXES.some((prefix) => compatibleVersion.startsWith(prefix))) throw new HsqldbRowFormatError(`database/properties declares hsqldb.compatible_version "${compatibleVersion}" — this decoder is scoped to the HSQLDB 1.7.x/1.8.x CACHED-table row-store format (the version LibreOffice's own embedded driver ships) and does not know this version's own on-disk row-store layout`);
|
|
16
16
|
return {
|
|
17
17
|
cacheFileScale: Number(props.get("hsqldb.cache_file_scale") ?? "1") === 1 ? 1 : 8,
|
|
18
18
|
compatibleVersion
|
|
@@ -32,7 +32,7 @@ function parseHsqldbIndexRoots(scriptText) {
|
|
|
32
32
|
const tokensText = match[2] ?? "";
|
|
33
33
|
const tableName = unquoteIdentifier(rawName).toUpperCase();
|
|
34
34
|
const tokens = tokensText.trim().length === 0 ? [] : tokensText.trim().split(/\s+/);
|
|
35
|
-
if (tokens.length < 2) throw new HsqldbRowFormatError(`table "${tableName}"'s SET TABLE...INDEX line has ${tokens.length} token(s)
|
|
35
|
+
if (tokens.length < 2) throw new HsqldbRowFormatError(`table "${tableName}"'s SET TABLE...INDEX line has ${tokens.length} token(s) — every such line carries at least one index root position followed by the table's own identity-sequence value`);
|
|
36
36
|
const indexCount = tokens.length - 1;
|
|
37
37
|
const rootToken = tokens[0] ?? "";
|
|
38
38
|
const rootPosition = Number(rootToken);
|
|
@@ -41,9 +41,9 @@ const LEADING_WORD_RE = /^([A-Za-z_][A-Za-z0-9_]*)/;
|
|
|
41
41
|
function resolveHsqldbTypeCode(declaredType) {
|
|
42
42
|
const word = LEADING_WORD_RE.exec(declaredType.trim())?.[1]?.toUpperCase();
|
|
43
43
|
if (word === void 0) throw new HsqldbRowFormatError(`cannot resolve a SQL type name from column type clause "${declaredType}"`);
|
|
44
|
-
if (UNSUPPORTED_SQL_TYPE_NAMES.has(word)) throw new HsqldbRowFormatError(`column type "${word}" has no document-schema.js ContentCellValue equivalent (binary/object column types are not representable)
|
|
44
|
+
if (UNSUPPORTED_SQL_TYPE_NAMES.has(word)) throw new HsqldbRowFormatError(`column type "${word}" has no document-schema.js ContentCellValue equivalent (binary/object column types are not representable) — from declared type "${declaredType}"`);
|
|
45
45
|
const code = SQL_TYPE_NAME_TO_CODE[word];
|
|
46
|
-
if (code === void 0) throw new HsqldbRowFormatError(`unrecognised HSQLDB column type "${word}"
|
|
46
|
+
if (code === void 0) throw new HsqldbRowFormatError(`unrecognised HSQLDB column type "${word}" — from declared type "${declaredType}"`);
|
|
47
47
|
return code;
|
|
48
48
|
}
|
|
49
49
|
var HsqldbDataCursor = class {
|
package/dist/hsqldb/rowformat.js
CHANGED
|
@@ -40,9 +40,9 @@ const LEADING_WORD_RE = /^([A-Za-z_][A-Za-z0-9_]*)/;
|
|
|
40
40
|
function resolveHsqldbTypeCode(declaredType) {
|
|
41
41
|
const word = LEADING_WORD_RE.exec(declaredType.trim())?.[1]?.toUpperCase();
|
|
42
42
|
if (word === void 0) throw new HsqldbRowFormatError(`cannot resolve a SQL type name from column type clause "${declaredType}"`);
|
|
43
|
-
if (UNSUPPORTED_SQL_TYPE_NAMES.has(word)) throw new HsqldbRowFormatError(`column type "${word}" has no document-schema.js ContentCellValue equivalent (binary/object column types are not representable)
|
|
43
|
+
if (UNSUPPORTED_SQL_TYPE_NAMES.has(word)) throw new HsqldbRowFormatError(`column type "${word}" has no document-schema.js ContentCellValue equivalent (binary/object column types are not representable) — from declared type "${declaredType}"`);
|
|
44
44
|
const code = SQL_TYPE_NAME_TO_CODE[word];
|
|
45
|
-
if (code === void 0) throw new HsqldbRowFormatError(`unrecognised HSQLDB column type "${word}"
|
|
45
|
+
if (code === void 0) throw new HsqldbRowFormatError(`unrecognised HSQLDB column type "${word}" — from declared type "${declaredType}"`);
|
|
46
46
|
return code;
|
|
47
47
|
}
|
|
48
48
|
var HsqldbDataCursor = class {
|