@particle-academy/holy-sheet 2.10.2 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -143,6 +143,8 @@ interface BuilderOptions {
143
143
  enclosure?: string;
144
144
  }
145
145
 
146
+ type SourceKind = "document" | "template";
147
+
146
148
  /**
147
149
  * One op from `Agent.diff`, applied by `Agent.reduce`. Mirrors the PHP
148
150
  * `HolySheet\Ops\SheetOpSchema` variants: same `type`, same field names.
@@ -264,7 +266,7 @@ interface SetMetaOp {
264
266
  }
265
267
 
266
268
  /** This package's own version, pinned to package.json by `version.test.ts`. */
267
- declare const VERSION = "2.10.2";
269
+ declare const VERSION = "2.11.0";
268
270
  type Any$6 = any;
269
271
  /**
270
272
  * Agent — the structured-tool surface for Holy Sheet. Mirrors PHP `Agent`.
@@ -286,6 +288,22 @@ declare const Agent: {
286
288
  * schema. Throws `UnsupportedFormatException` for anything else.
287
289
  */
288
290
  read(input: Uint8Array | ArrayBuffer): Record<string, unknown>;
291
+ /**
292
+ * Turn an Excel `.xltx` / LibreOffice `.ots` template into its `.xlsx` /
293
+ * `.ods` twin, or back. `to` is `"document"`, `"template"`, or null to flip.
294
+ * Universal and synchronous: bytes in, bytes out. Mirrors PHP
295
+ * `Agent::convertTemplate()`.
296
+ *
297
+ * Only the declaration moves: the workbook part's content type in
298
+ * `[Content_Types].xml`, or the ODF `mimetype` entry together with the
299
+ * manifest's root media-type (ODF 1.3 requires them to agree). Every other
300
+ * member is copied as its original zip record, byte for byte.
301
+ *
302
+ * Throws `OfficeTemplateRefused` (macro-enabled, mismatched, already that
303
+ * kind), `ArchiveRefused` (archive guard), or `UnsupportedFormatException`
304
+ * for a package that is not a spreadsheet.
305
+ */
306
+ convertTemplate(input: Uint8Array | ArrayBuffer, to?: SourceKind | null): Uint8Array;
289
307
  /** Round-trip an xlsx or ods file on disk back to a schema (Node only). */
290
308
  describe(path: string): Promise<Record<string, unknown>>;
291
309
  /** Validate + conservative repairs in one call. */
@@ -342,13 +360,15 @@ type Any$5 = any;
342
360
  * over `Agent`. Provided for parity / DI ergonomics; most callers use `Agent`.
343
361
  */
344
362
  declare class HolySheet {
345
- static readonly VERSION = "2.10.2";
363
+ static readonly VERSION = "2.11.0";
346
364
  validate(schema: Any$5): ValidationError[];
347
365
  toBytes(schema: Any$5): Uint8Array;
348
366
  write(schema: Any$5, path: string): Promise<WriteResult>;
349
367
  toolDefinition(): Record<string, unknown>;
350
368
  read(input: Uint8Array | ArrayBuffer): Record<string, unknown>;
351
369
  describe(path: string): Promise<Record<string, unknown>>;
370
+ /** {@link Agent.convertTemplate}: .xltx/.ots to .xlsx/.ods and back. */
371
+ convertTemplate(input: Uint8Array | ArrayBuffer, to?: "document" | "template" | null): Uint8Array;
352
372
  validateAndRepair(schema: Any$5): RepairResult;
353
373
  fromArray(rows: Any$5[][], headers?: string[] | null, sheetName?: string, options?: BuilderOptions): HolySheetSchema;
354
374
  fromCsv(csv: string, options?: BuilderOptions): HolySheetSchema;
@@ -362,6 +382,25 @@ declare class ArchiveRefused extends Error {
362
382
  readonly reason: string;
363
383
  constructor(reason: string);
364
384
  }
385
+ /**
386
+ * An Office or LibreOffice template package refused, with a constant `reason`.
387
+ * Mirrors PHP `OfficeTemplateRefused`:
388
+ *
389
+ * - `macro_enabled` an .xltm (or a template carrying a VBA project). Never read
390
+ * and never converted.
391
+ * - `family_mismatch` it declares a template of another family, or its parts
392
+ * are not the family it declares.
393
+ * - `already_template` / `already_document` conversion asked for what it is.
394
+ * - `not_convertible` there is no single declaration that can be rewritten.
395
+ * - `odf_mimetype` an ODF package whose `mimetype` is not first and stored.
396
+ * - `bad_target` the conversion target is not `document` or `template`.
397
+ *
398
+ * Branch on `reason`; the message is for people.
399
+ */
400
+ declare class OfficeTemplateRefused extends Error {
401
+ readonly reason: string;
402
+ constructor(reason: string);
403
+ }
365
404
  /** Thrown when a Holy Sheet schema fails validation. Mirrors PHP `SchemaException`. */
366
405
  declare class SchemaException extends Error {
367
406
  readonly errors: ValidationError[];
@@ -577,7 +616,11 @@ declare class Sheet {
577
616
  declare class Workbook {
578
617
  readonly sheets: Sheet[];
579
618
  readonly meta: Record<string, unknown>;
580
- constructor(sheets: Sheet[], meta?: Record<string, unknown>);
619
+ /** What a reader found: an .xltx / .ots reads exactly like its .xlsx / .ods twin and is marked `template`. */
620
+ readonly sourceKind: "document" | "template";
621
+ constructor(sheets: Sheet[], meta?: Record<string, unknown>,
622
+ /** What a reader found: an .xltx / .ots reads exactly like its .xlsx / .ods twin and is marked `template`. */
623
+ sourceKind?: "document" | "template");
581
624
  }
582
625
 
583
626
  type Any$2 = any;
@@ -925,4 +968,4 @@ declare function zipSync(files: ZipFile[]): Uint8Array;
925
968
  /** STORE/DEFLATE reader with metadata, CRC, duplicate and expansion checks. */
926
969
  declare function unzipSync(data: Uint8Array, limits?: ArchiveLimits): Record<string, Uint8Array>;
927
970
 
928
- export { type AddSheetOp, Agent, type AggOp, type ArchiveLimits, ArchiveRefused, ArrayBuilder, type BuilderOptions, CellAddress, type CellData, type CellFormatInput, type CellPrimitive, type ChartSchema, type ClearCellOp, type ColumnSchema, type ColumnType, type CommentInput, CsvBuilder, type DeleteColumnsOp, type DeleteRowsOp, type DisplayFormat, FormatSniffer, FormulaLinter, type FormulaProblem, HolySheet, type HolySheetSchema, Inference, type InsertColumnsOp, type InsertRowsOp, type MoveSheetOp, Normalizer, OdsReader, type RemoveSheetOp, type RenameSheetOp, type RepairResult, Repairer, type ReplaceSheetOp, type RowCell, SchemaException, type SetCellOp, type SetColumnWidthsOp, type SetFrozenOp, type SetMergedRegionsOp, type SetMetaOp, type SetRangeOp, type SetWorkbookOp, SheetDiff, type SheetOp, SheetOpSchema, type SheetOpType, SheetReducer, type SheetSchema, type SpreadsheetFormat, Theme, type ThemeKey, UnsupportedFormatException, VERSION, type ValidationError, Validator, type WriteResult, XlsxReader, XlsxWriter, type ZipFile, unzipSync, zipSync };
971
+ export { type AddSheetOp, Agent, type AggOp, type ArchiveLimits, ArchiveRefused, ArrayBuilder, type BuilderOptions, CellAddress, type CellData, type CellFormatInput, type CellPrimitive, type ChartSchema, type ClearCellOp, type ColumnSchema, type ColumnType, type CommentInput, CsvBuilder, type DeleteColumnsOp, type DeleteRowsOp, type DisplayFormat, FormatSniffer, FormulaLinter, type FormulaProblem, HolySheet, type HolySheetSchema, Inference, type InsertColumnsOp, type InsertRowsOp, type MoveSheetOp, Normalizer, OdsReader, OfficeTemplateRefused, type RemoveSheetOp, type RenameSheetOp, type RepairResult, Repairer, type ReplaceSheetOp, type RowCell, SchemaException, type SetCellOp, type SetColumnWidthsOp, type SetFrozenOp, type SetMergedRegionsOp, type SetMetaOp, type SetRangeOp, type SetWorkbookOp, SheetDiff, type SheetOp, SheetOpSchema, type SheetOpType, SheetReducer, type SheetSchema, type SourceKind, type SpreadsheetFormat, Theme, type ThemeKey, UnsupportedFormatException, VERSION, type ValidationError, Validator, type WriteResult, XlsxReader, XlsxWriter, type ZipFile, unzipSync, zipSync };
package/dist/index.d.ts CHANGED
@@ -143,6 +143,8 @@ interface BuilderOptions {
143
143
  enclosure?: string;
144
144
  }
145
145
 
146
+ type SourceKind = "document" | "template";
147
+
146
148
  /**
147
149
  * One op from `Agent.diff`, applied by `Agent.reduce`. Mirrors the PHP
148
150
  * `HolySheet\Ops\SheetOpSchema` variants: same `type`, same field names.
@@ -264,7 +266,7 @@ interface SetMetaOp {
264
266
  }
265
267
 
266
268
  /** This package's own version, pinned to package.json by `version.test.ts`. */
267
- declare const VERSION = "2.10.2";
269
+ declare const VERSION = "2.11.0";
268
270
  type Any$6 = any;
269
271
  /**
270
272
  * Agent — the structured-tool surface for Holy Sheet. Mirrors PHP `Agent`.
@@ -286,6 +288,22 @@ declare const Agent: {
286
288
  * schema. Throws `UnsupportedFormatException` for anything else.
287
289
  */
288
290
  read(input: Uint8Array | ArrayBuffer): Record<string, unknown>;
291
+ /**
292
+ * Turn an Excel `.xltx` / LibreOffice `.ots` template into its `.xlsx` /
293
+ * `.ods` twin, or back. `to` is `"document"`, `"template"`, or null to flip.
294
+ * Universal and synchronous: bytes in, bytes out. Mirrors PHP
295
+ * `Agent::convertTemplate()`.
296
+ *
297
+ * Only the declaration moves: the workbook part's content type in
298
+ * `[Content_Types].xml`, or the ODF `mimetype` entry together with the
299
+ * manifest's root media-type (ODF 1.3 requires them to agree). Every other
300
+ * member is copied as its original zip record, byte for byte.
301
+ *
302
+ * Throws `OfficeTemplateRefused` (macro-enabled, mismatched, already that
303
+ * kind), `ArchiveRefused` (archive guard), or `UnsupportedFormatException`
304
+ * for a package that is not a spreadsheet.
305
+ */
306
+ convertTemplate(input: Uint8Array | ArrayBuffer, to?: SourceKind | null): Uint8Array;
289
307
  /** Round-trip an xlsx or ods file on disk back to a schema (Node only). */
290
308
  describe(path: string): Promise<Record<string, unknown>>;
291
309
  /** Validate + conservative repairs in one call. */
@@ -342,13 +360,15 @@ type Any$5 = any;
342
360
  * over `Agent`. Provided for parity / DI ergonomics; most callers use `Agent`.
343
361
  */
344
362
  declare class HolySheet {
345
- static readonly VERSION = "2.10.2";
363
+ static readonly VERSION = "2.11.0";
346
364
  validate(schema: Any$5): ValidationError[];
347
365
  toBytes(schema: Any$5): Uint8Array;
348
366
  write(schema: Any$5, path: string): Promise<WriteResult>;
349
367
  toolDefinition(): Record<string, unknown>;
350
368
  read(input: Uint8Array | ArrayBuffer): Record<string, unknown>;
351
369
  describe(path: string): Promise<Record<string, unknown>>;
370
+ /** {@link Agent.convertTemplate}: .xltx/.ots to .xlsx/.ods and back. */
371
+ convertTemplate(input: Uint8Array | ArrayBuffer, to?: "document" | "template" | null): Uint8Array;
352
372
  validateAndRepair(schema: Any$5): RepairResult;
353
373
  fromArray(rows: Any$5[][], headers?: string[] | null, sheetName?: string, options?: BuilderOptions): HolySheetSchema;
354
374
  fromCsv(csv: string, options?: BuilderOptions): HolySheetSchema;
@@ -362,6 +382,25 @@ declare class ArchiveRefused extends Error {
362
382
  readonly reason: string;
363
383
  constructor(reason: string);
364
384
  }
385
+ /**
386
+ * An Office or LibreOffice template package refused, with a constant `reason`.
387
+ * Mirrors PHP `OfficeTemplateRefused`:
388
+ *
389
+ * - `macro_enabled` an .xltm (or a template carrying a VBA project). Never read
390
+ * and never converted.
391
+ * - `family_mismatch` it declares a template of another family, or its parts
392
+ * are not the family it declares.
393
+ * - `already_template` / `already_document` conversion asked for what it is.
394
+ * - `not_convertible` there is no single declaration that can be rewritten.
395
+ * - `odf_mimetype` an ODF package whose `mimetype` is not first and stored.
396
+ * - `bad_target` the conversion target is not `document` or `template`.
397
+ *
398
+ * Branch on `reason`; the message is for people.
399
+ */
400
+ declare class OfficeTemplateRefused extends Error {
401
+ readonly reason: string;
402
+ constructor(reason: string);
403
+ }
365
404
  /** Thrown when a Holy Sheet schema fails validation. Mirrors PHP `SchemaException`. */
366
405
  declare class SchemaException extends Error {
367
406
  readonly errors: ValidationError[];
@@ -577,7 +616,11 @@ declare class Sheet {
577
616
  declare class Workbook {
578
617
  readonly sheets: Sheet[];
579
618
  readonly meta: Record<string, unknown>;
580
- constructor(sheets: Sheet[], meta?: Record<string, unknown>);
619
+ /** What a reader found: an .xltx / .ots reads exactly like its .xlsx / .ods twin and is marked `template`. */
620
+ readonly sourceKind: "document" | "template";
621
+ constructor(sheets: Sheet[], meta?: Record<string, unknown>,
622
+ /** What a reader found: an .xltx / .ots reads exactly like its .xlsx / .ods twin and is marked `template`. */
623
+ sourceKind?: "document" | "template");
581
624
  }
582
625
 
583
626
  type Any$2 = any;
@@ -925,4 +968,4 @@ declare function zipSync(files: ZipFile[]): Uint8Array;
925
968
  /** STORE/DEFLATE reader with metadata, CRC, duplicate and expansion checks. */
926
969
  declare function unzipSync(data: Uint8Array, limits?: ArchiveLimits): Record<string, Uint8Array>;
927
970
 
928
- export { type AddSheetOp, Agent, type AggOp, type ArchiveLimits, ArchiveRefused, ArrayBuilder, type BuilderOptions, CellAddress, type CellData, type CellFormatInput, type CellPrimitive, type ChartSchema, type ClearCellOp, type ColumnSchema, type ColumnType, type CommentInput, CsvBuilder, type DeleteColumnsOp, type DeleteRowsOp, type DisplayFormat, FormatSniffer, FormulaLinter, type FormulaProblem, HolySheet, type HolySheetSchema, Inference, type InsertColumnsOp, type InsertRowsOp, type MoveSheetOp, Normalizer, OdsReader, type RemoveSheetOp, type RenameSheetOp, type RepairResult, Repairer, type ReplaceSheetOp, type RowCell, SchemaException, type SetCellOp, type SetColumnWidthsOp, type SetFrozenOp, type SetMergedRegionsOp, type SetMetaOp, type SetRangeOp, type SetWorkbookOp, SheetDiff, type SheetOp, SheetOpSchema, type SheetOpType, SheetReducer, type SheetSchema, type SpreadsheetFormat, Theme, type ThemeKey, UnsupportedFormatException, VERSION, type ValidationError, Validator, type WriteResult, XlsxReader, XlsxWriter, type ZipFile, unzipSync, zipSync };
971
+ export { type AddSheetOp, Agent, type AggOp, type ArchiveLimits, ArchiveRefused, ArrayBuilder, type BuilderOptions, CellAddress, type CellData, type CellFormatInput, type CellPrimitive, type ChartSchema, type ClearCellOp, type ColumnSchema, type ColumnType, type CommentInput, CsvBuilder, type DeleteColumnsOp, type DeleteRowsOp, type DisplayFormat, FormatSniffer, FormulaLinter, type FormulaProblem, HolySheet, type HolySheetSchema, Inference, type InsertColumnsOp, type InsertRowsOp, type MoveSheetOp, Normalizer, OdsReader, OfficeTemplateRefused, type RemoveSheetOp, type RenameSheetOp, type RepairResult, Repairer, type ReplaceSheetOp, type RowCell, SchemaException, type SetCellOp, type SetColumnWidthsOp, type SetFrozenOp, type SetMergedRegionsOp, type SetMetaOp, type SetRangeOp, type SetWorkbookOp, SheetDiff, type SheetOp, SheetOpSchema, type SheetOpType, SheetReducer, type SheetSchema, type SourceKind, type SpreadsheetFormat, Theme, type ThemeKey, UnsupportedFormatException, VERSION, type ValidationError, Validator, type WriteResult, XlsxReader, XlsxWriter, type ZipFile, unzipSync, zipSync };