Skip to content

Commit 4b3c407

Browse files
author
m.r
committed
fix: add Buffer data type
1 parent d49e066 commit 4b3c407

File tree

6 files changed

+70
-30
lines changed

6 files changed

+70
-30
lines changed

_test_/src/read.ts

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,32 @@ interface ExtractResult {
66
[sheetName: string]: ExtractedData;
77
}
88
function hasTBeforeV(element: string) {
9-
// Use regular expression to find 't="s"' before <v>
109
const regex = /t="s".*?<v/;
1110
return regex.test(element);
1211
}
1312
function getValueWithinT(element: string) {
14-
// Use regular expression to extract the content between <v> and </v>
1513
const regex = /<t.*?>(.*?)<\/t>/;
1614
const match = element.match(regex);
1715
if (match) {
18-
return match[1]; // Extracted value
16+
return match[1];
1917
}
20-
return null; // Return null if <v> tag is not found
18+
return null;
2119
}
2220
function getValueWithinV(element: string) {
23-
// Use regular expression to extract the content between <v> and </v>
2421
const regex = /<v.*?>(.*?)<\/v>/;
2522
const match = element.match(regex);
2623
if (match) {
27-
return match[1]; // Extracted value
24+
return match[1];
2825
}
29-
return null; // Return null if <v> tag is not found
26+
return null;
3027
}
3128
function getRValue(element: string) {
32-
// Use regular expression to extract the 'r' attribute value
3329
const regex = /r="(.*?)"/;
3430
const match = element.match(regex);
3531
if (match) {
36-
return match[1]; // Extracted 'r' value
32+
return match[1];
3733
}
38-
return null; // Return null if 'r' attribute is not found
34+
return null;
3935
}
4036
export async function readGeneratedFile(
4137
data: unknown,
@@ -124,8 +120,7 @@ export async function readGeneratedFile(
124120
if (prop === "isNameSet") {
125121
return target.isNameSet;
126122
}
127-
// By default, it looks like Reflect.get(target, prop, receiver)
128-
// which has a different value of `this`
123+
129124
return target.counter;
130125
},
131126
}

_test_/src/utils.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,8 @@ export function countOccurrences(
22
mainString: string,
33
subString: string
44
): number {
5-
// Escape special characters in the substring for regex
65
const escapedSubstring = subString.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
7-
8-
// Construct the regular expression using the escaped substring
96
const regex = new RegExp(escapedSubstring, "g");
10-
11-
// Use match() to find all occurrences of the substring in the main string
127
const matches = mainString.match(regex);
13-
14-
// Return the count of occurrences (or 0 if no matches were found)
158
return matches ? matches.length : 0;
169
}

dist/excel-table.d.ts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,23 @@ declare type BorderOption = {
4242
};
4343
};
4444

45+
declare class Buffer_2 extends Uint8Array {
46+
constructor(str: string, encoding?: string);
47+
constructor(size: number);
48+
constructor(array: Uint8Array);
49+
constructor(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number);
50+
static alloc(size: number, fill?: string | Buffer_2 | number, encoding?: string): Buffer_2;
51+
static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer_2;
52+
static from(data: number[]): Buffer_2;
53+
static from(str: string, encoding?: string): Buffer_2;
54+
write(string: string, offset?: number, length?: number, encoding?: string): number;
55+
toString(encoding?: string, start?: number, end?: number): string;
56+
slice(start?: number, end?: number): Buffer_2;
57+
static concat(list: Buffer_2[], totalLength?: number): Buffer_2;
58+
length: number;
59+
byteOffset: number;
60+
}
61+
4562
declare interface Checkbox {
4663
col: number;
4764
row: number;
@@ -94,7 +111,7 @@ export declare function convertTableToExcel(queryForTable?: string, table?: HTML
94111
keepStyle?: boolean;
95112
rowHeightScaleFunction?: RowHeightScaleFunction;
96113
colWidthScaleFunction?: ColWidthScaleFunction;
97-
}): Promise<string | number[] | Blob | Buffer | undefined>;
114+
}): Promise<string | number[] | DataModel.Buffer | Blob | undefined>;
98115

99116
declare interface CustomFormulaSetting {
100117
isArray?: boolean;
@@ -171,7 +188,8 @@ declare namespace DataModel {
171188
ThemeOption,
172189
ExtractedData,
173190
ExtractResult,
174-
ReadResult
191+
ReadResult,
192+
Buffer_2 as Buffer
175193
}
176194
}
177195
export { DataModel }
@@ -261,7 +279,7 @@ declare function generalValidationCheck(value: never, validateProperty: Validati
261279

262280
export declare function generateCSV(excelTable: ExcelTable, asZip?: boolean): Promise<string[] | "done" | undefined>;
263281

264-
export declare function generateExcel(data: ExcelTable, styleKey?: string): Promise<string | number[] | Blob | Buffer | undefined>;
282+
export declare function generateExcel(data: ExcelTable, styleKey?: string): Promise<string | number[] | Blob | Buffer_2 | undefined>;
265283

266284
export declare function generateText(excelTable: ExcelTable, asZip?: boolean): Promise<string[] | "done" | undefined>;
267285

@@ -450,7 +468,7 @@ declare interface SideBySide {
450468
headerIndex?: number;
451469
}
452470

453-
export declare function sideBySideLineByLine(data: SideBySide[][]): Promise<string | number[] | Blob | Buffer | undefined>;
471+
export declare function sideBySideLineByLine(data: SideBySide[][]): Promise<string | number[] | DataModel.Buffer | Blob | undefined>;
454472

455473
declare interface SingleRefFormulaSetting {
456474
type: SingleRefFormulaType;
@@ -522,7 +540,7 @@ declare interface Styles {
522540

523541
declare type StyleType = "conditionalFormatting" | "CF" | "headerFooter" | "HF";
524542

525-
export declare function themeBaseGenerate(data: ExcelTable | Data[] | Data[][], option?: ThemeOption): Promise<string | number[] | Blob | Buffer | undefined>;
543+
export declare function themeBaseGenerate(data: ExcelTable | Data[] | Data[][], option?: ThemeOption): Promise<string | number[] | DataModel.Buffer | Blob | undefined>;
526544

527545
declare interface ThemeOption {
528546
negativeColor?: boolean;

src/data-model/excel-table.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,3 +510,35 @@ export interface ReadResult {
510510
sheetName: IterableIterator<[string, string]>;
511511
maxLengthOfColumn: Record<string, number>;
512512
}
513+
export declare class Buffer extends Uint8Array {
514+
constructor(str: string, encoding?: string);
515+
constructor(size: number);
516+
constructor(array: Uint8Array);
517+
constructor(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number);
518+
519+
static alloc(
520+
size: number,
521+
fill?: string | Buffer | number,
522+
encoding?: string
523+
): Buffer;
524+
static from(
525+
arrayBuffer: ArrayBuffer,
526+
byteOffset?: number,
527+
length?: number
528+
): Buffer;
529+
static from(data: number[]): Buffer;
530+
static from(str: string, encoding?: string): Buffer;
531+
532+
write(
533+
string: string,
534+
offset?: number,
535+
length?: number,
536+
encoding?: string
537+
): number;
538+
toString(encoding?: string, start?: number, end?: number): string;
539+
slice(start?: number, end?: number): Buffer;
540+
static concat(list: Buffer[], totalLength?: number): Buffer;
541+
542+
length: number;
543+
byteOffset: number;
544+
}

src/functions/generate-excel.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import {
99
type ProtectionOptionKey,
1010
type RowMap,
1111
type StyleMapper,
12+
type Buffer,
1213
} from "../data-model/excel-table";
1314
import { generateColumnName } from "../utils/generate-column-name";
14-
1515
import { styleGenerator } from "../utils/content-generator/styles";
1616
import { contentTypeGenerator } from "../utils/content-generator/content-types";
1717
import { appGenerator } from "../utils/content-generator/app";
@@ -32,7 +32,10 @@ import { getColRowBaseOnRefString } from "../utils/excel-util";
3232
import { specialCharacterConverter } from "../utils/special-character";
3333
import { applyConfig } from "../utils/store";
3434
import type JSZip from "jszip";
35-
export async function generateExcel(data: ExcelTable, styleKey: string = "") {
35+
export async function generateExcel(
36+
data: ExcelTable,
37+
styleKey: string = ""
38+
): Promise<string | number[] | Blob | Buffer | undefined> {
3639
if (typeof styleKey == "string" && styleKey.length > 0) {
3740
data = applyConfig(styleKey, data);
3841
}
@@ -71,8 +74,8 @@ export async function generateExcel(data: ExcelTable, styleKey: string = "") {
7174
cols = generateColumnName(cols, data.numberOfColumn);
7275
}
7376
const module = await import("jszip");
74-
const JSZip = module.default;
75-
let zip = new JSZip();
77+
const JSZip1 = module.default;
78+
let zip = new JSZip1();
7679
const sheetLength = data.sheet.length;
7780
// xl
7881
let xlFolder = zip.folder("xl");
@@ -2645,7 +2648,7 @@ export async function generateExcel(data: ExcelTable, styleKey: string = "") {
26452648
type: data.generateType ? data.generateType : "nodebuffer",
26462649
})
26472650
.then((content) => {
2648-
return content;
2651+
return content as string | number[] | Buffer;
26492652
});
26502653
} else {
26512654
if (data.notSave) {

target/npmlist.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)