juxscript 1.1.200 → 1.1.201

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.
@@ -1 +1 @@
1
- {"version":3,"file":"TabularDriver.d.ts","sourceRoot":"","sources":["TabularDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TabularDriver.d.ts","sourceRoot":"","sources":["TabularDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,qBAAa,aAAa;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,GAAG,CAA4B;gBAE3B,MAAM,GAAE,MAAsB,EAAE,SAAS,GAAE,MAAiB;IAKlE,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;IA4BlC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAgCxB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,SAAS;IA6D7D;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAoG5E;;OAEG;YACW,UAAU;IAuExB;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBlD;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBzF;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAwBjD;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA4BzD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAqBlH;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IA0ExE;;;OAGG;IACG,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IA6ItG,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,SAAS;IAYjB,KAAK,IAAI,IAAI;CAMhB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAEhF"}
@@ -521,16 +521,17 @@ export class TabularDriver {
521
521
  }
522
522
  const range = XLSX.utils.decode_range(ref);
523
523
  const totalRows = range.e.r - range.s.r + 1;
524
+ const totalCols = range.e.c - range.s.c + 1;
524
525
  if (totalRows === 0) {
525
526
  processedSheets++;
526
527
  continue;
527
528
  }
528
- // Always get raw data as array of arrays (no header interpretation)
529
+ // Get all data as raw arrays (header: 1 returns array of arrays)
529
530
  const rawData = XLSX.utils.sheet_to_json(worksheet, {
530
- header: 1, // Return array of arrays
531
+ header: 1,
531
532
  defval: null,
532
533
  raw: false,
533
- blankrows: true // Keep blank rows to preserve row indices
534
+ blankrows: true
534
535
  });
535
536
  if (rawData.length === 0) {
536
537
  processedSheets++;
@@ -538,20 +539,33 @@ export class TabularDriver {
538
539
  }
539
540
  // Validate headerRow is within bounds
540
541
  if (headerRow >= rawData.length) {
541
- console.warn(`[TabularDriver] headerRow ${headerRow} exceeds data length ${rawData.length}, using 0`);
542
+ console.warn(`[TabularDriver] headerRow ${headerRow} exceeds data length ${rawData.length}`);
542
543
  processedSheets++;
543
544
  continue;
544
545
  }
545
- // Extract headers from the specified row (0-based index)
546
+ // Get the header row data - ensure we have all columns
546
547
  const headerRowData = rawData[headerRow] || [];
547
- const headers = headerRowData.map((h, i) => {
548
+ // Determine the maximum number of columns across all rows
549
+ let maxCols = totalCols;
550
+ for (let i = headerRow; i < Math.min(rawData.length, headerRow + 100); i++) {
551
+ if (rawData[i] && rawData[i].length > maxCols) {
552
+ maxCols = rawData[i].length;
553
+ }
554
+ }
555
+ // Build headers array with proper length
556
+ const headers = [];
557
+ for (let j = 0; j < maxCols; j++) {
558
+ const h = headerRowData[j];
548
559
  if (h === null || h === undefined || String(h).trim() === '') {
549
- return `__EMPTY${i > 0 ? '_' + i : ''}`;
560
+ headers.push(`__EMPTY${j > 0 ? '_' + j : ''}`);
550
561
  }
551
- return String(h).trim();
552
- });
562
+ else {
563
+ headers.push(String(h).trim());
564
+ }
565
+ }
553
566
  // Ensure we have at least one valid header
554
- if (headers.length === 0 || headers.every((h) => h.startsWith('__EMPTY'))) {
567
+ const validHeaders = headers.filter(h => !h.startsWith('__EMPTY'));
568
+ if (validHeaders.length === 0) {
555
569
  console.warn(`[TabularDriver] No valid headers found at row ${headerRow}`);
556
570
  processedSheets++;
557
571
  continue;
@@ -570,9 +584,11 @@ export class TabularDriver {
570
584
  continue;
571
585
  }
572
586
  const row = {};
573
- headers.forEach((header, j) => {
574
- row[header] = rowData[j] !== undefined ? rowData[j] : null;
575
- });
587
+ for (let j = 0; j < headers.length; j++) {
588
+ const header = headers[j];
589
+ const cellValue = j < rowData.length ? rowData[j] : null;
590
+ row[header] = cellValue;
591
+ }
576
592
  rows.push(row);
577
593
  }
578
594
  if (rows.length > 0) {
@@ -647,18 +647,19 @@ export class TabularDriver {
647
647
 
648
648
  const range = XLSX.utils.decode_range(ref);
649
649
  const totalRows = range.e.r - range.s.r + 1;
650
+ const totalCols = range.e.c - range.s.c + 1;
650
651
 
651
652
  if (totalRows === 0) {
652
653
  processedSheets++;
653
654
  continue;
654
655
  }
655
656
 
656
- // Always get raw data as array of arrays (no header interpretation)
657
+ // Get all data as raw arrays (header: 1 returns array of arrays)
657
658
  const rawData: any[][] = XLSX.utils.sheet_to_json(worksheet, {
658
- header: 1, // Return array of arrays
659
+ header: 1,
659
660
  defval: null,
660
661
  raw: false,
661
- blankrows: true // Keep blank rows to preserve row indices
662
+ blankrows: true
662
663
  });
663
664
 
664
665
  if (rawData.length === 0) {
@@ -668,22 +669,36 @@ export class TabularDriver {
668
669
 
669
670
  // Validate headerRow is within bounds
670
671
  if (headerRow >= rawData.length) {
671
- console.warn(`[TabularDriver] headerRow ${headerRow} exceeds data length ${rawData.length}, using 0`);
672
+ console.warn(`[TabularDriver] headerRow ${headerRow} exceeds data length ${rawData.length}`);
672
673
  processedSheets++;
673
674
  continue;
674
675
  }
675
676
 
676
- // Extract headers from the specified row (0-based index)
677
+ // Get the header row data - ensure we have all columns
677
678
  const headerRowData = rawData[headerRow] || [];
678
- const headers = headerRowData.map((h: any, i: number) => {
679
+
680
+ // Determine the maximum number of columns across all rows
681
+ let maxCols = totalCols;
682
+ for (let i = headerRow; i < Math.min(rawData.length, headerRow + 100); i++) {
683
+ if (rawData[i] && rawData[i].length > maxCols) {
684
+ maxCols = rawData[i].length;
685
+ }
686
+ }
687
+
688
+ // Build headers array with proper length
689
+ const headers: string[] = [];
690
+ for (let j = 0; j < maxCols; j++) {
691
+ const h = headerRowData[j];
679
692
  if (h === null || h === undefined || String(h).trim() === '') {
680
- return `__EMPTY${i > 0 ? '_' + i : ''}`;
693
+ headers.push(`__EMPTY${j > 0 ? '_' + j : ''}`);
694
+ } else {
695
+ headers.push(String(h).trim());
681
696
  }
682
- return String(h).trim();
683
- });
697
+ }
684
698
 
685
699
  // Ensure we have at least one valid header
686
- if (headers.length === 0 || headers.every((h: string) => h.startsWith('__EMPTY'))) {
700
+ const validHeaders = headers.filter(h => !h.startsWith('__EMPTY'));
701
+ if (validHeaders.length === 0) {
687
702
  console.warn(`[TabularDriver] No valid headers found at row ${headerRow}`);
688
703
  processedSheets++;
689
704
  continue;
@@ -708,9 +723,11 @@ export class TabularDriver {
708
723
  }
709
724
 
710
725
  const row: Record<string, any> = {};
711
- headers.forEach((header: string, j: number) => {
712
- row[header] = rowData[j] !== undefined ? rowData[j] : null;
713
- });
726
+ for (let j = 0; j < headers.length; j++) {
727
+ const header = headers[j];
728
+ const cellValue = j < rowData.length ? rowData[j] : null;
729
+ row[header] = cellValue;
730
+ }
714
731
  rows.push(row);
715
732
  }
716
733
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "juxscript",
3
- "version": "1.1.200",
3
+ "version": "1.1.201",
4
4
  "type": "module",
5
5
  "description": "A JavaScript UX authorship platform",
6
6
  "main": "index.js",