json-as-xlsx 2.4.5 → 2.5.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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ test("Should access first level property", () => {
5
+ const supportTicket = {
6
+ id: "e4te583nbt",
7
+ title: "Problem with server",
8
+ user: "daniel31",
9
+ };
10
+ expect((0, index_1.getContentProperty)(supportTicket, "user")).toBe("daniel31");
11
+ expect((0, index_1.getContentProperty)(supportTicket, "description")).toBe("");
12
+ });
13
+ test("Should access second level property", () => {
14
+ const employee = {
15
+ name: "Sophie",
16
+ age: "21",
17
+ email: {
18
+ work: "sophiedev@job.com",
19
+ personal: "sophie@email.com",
20
+ },
21
+ };
22
+ expect((0, index_1.getContentProperty)(employee, "email.work")).toBe("sophiedev@job.com");
23
+ expect((0, index_1.getContentProperty)(employee, "email.personal")).toBe("sophie@email.com");
24
+ expect((0, index_1.getContentProperty)(employee, "email.business")).toBe("");
25
+ });
26
+ test("Should access third level property", () => {
27
+ const purchase = {
28
+ id: "934as44951",
29
+ costumer: {
30
+ email: "jeniffer@email.com",
31
+ phoneNumber: "44444444",
32
+ billingAddress: {
33
+ line1: "123 Street",
34
+ city: "Montreal",
35
+ postalCode: 55555,
36
+ },
37
+ },
38
+ };
39
+ expect((0, index_1.getContentProperty)(purchase, "costumer.billingAddress.line1")).toBe("123 Street");
40
+ expect((0, index_1.getContentProperty)(purchase, "costumer.billingAddress.city")).toBe("Montreal");
41
+ expect((0, index_1.getContentProperty)(purchase, "costumer.billingAddress.postalCode")).toBe(55555);
42
+ expect((0, index_1.getContentProperty)(purchase, "costumer.billingAddress.countryCode")).toBe("");
43
+ });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudFByb3BlcnR5LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2NvbnRlbnRQcm9wZXJ0eS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQTZDO0FBRTdDLElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7SUFDOUMsTUFBTSxhQUFhLEdBQUc7UUFDcEIsRUFBRSxFQUFFLFlBQVk7UUFDaEIsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixJQUFJLEVBQUUsVUFBVTtLQUNqQixDQUFBO0lBRUQsTUFBTSxDQUFDLElBQUEsMEJBQWtCLEVBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRWxFLE1BQU0sQ0FBQyxJQUFBLDBCQUFrQixFQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUNuRSxDQUFDLENBQUMsQ0FBQTtBQUVGLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7SUFDL0MsTUFBTSxRQUFRLEdBQUc7UUFDZixJQUFJLEVBQUUsUUFBUTtRQUNkLEdBQUcsRUFBRSxJQUFJO1FBQ1QsS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixRQUFRLEVBQUUsa0JBQWtCO1NBQzdCO0tBQ0YsQ0FBQTtJQUVELE1BQU0sQ0FBQyxJQUFBLDBCQUFrQixFQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBRTVFLE1BQU0sQ0FBQyxJQUFBLDBCQUFrQixFQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFFL0UsTUFBTSxDQUFDLElBQUEsMEJBQWtCLEVBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDakUsQ0FBQyxDQUFDLENBQUE7QUFFRixJQUFJLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO0lBQzlDLE1BQU0sUUFBUSxHQUFHO1FBQ2YsRUFBRSxFQUFFLFlBQVk7UUFDaEIsUUFBUSxFQUFFO1lBQ1IsS0FBSyxFQUFFLG9CQUFvQjtZQUMzQixXQUFXLEVBQUUsVUFBVTtZQUN2QixjQUFjLEVBQUU7Z0JBQ2QsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxVQUFVO2dCQUNoQixVQUFVLEVBQUUsS0FBSzthQUNsQjtTQUNGO0tBQ0YsQ0FBQTtJQUVELE1BQU0sQ0FBQyxJQUFBLDBCQUFrQixFQUFDLFFBQVEsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRXhGLE1BQU0sQ0FBQyxJQUFBLDBCQUFrQixFQUFDLFFBQVEsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRXJGLE1BQU0sQ0FBQyxJQUFBLDBCQUFrQixFQUFDLFFBQVEsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRXRGLE1BQU0sQ0FBQyxJQUFBLDBCQUFrQixFQUFDLFFBQVEsRUFBRSxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ3RGLENBQUMsQ0FBQyxDQUFBIn0=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ test("", () => {
5
+ const track = {
6
+ id: "4ase432i",
7
+ name: "Help",
8
+ artist: "Galantis",
9
+ album: {
10
+ id: "532o48sn3",
11
+ name: "Help",
12
+ albumType: "single",
13
+ totalTracks: 1,
14
+ releaseDate: "2014-03-11",
15
+ },
16
+ explicit: false,
17
+ popularity: 21,
18
+ durationMs: 4010,
19
+ };
20
+ expect((0, index_1.getJsonSheetRow)(track, [{ label: "ID", value: "id" }])).toEqual({ ID: "4ase432i" });
21
+ expect((0, index_1.getJsonSheetRow)(track, [{ label: "Name", value: "name" }])).toEqual({ Name: "Help" });
22
+ expect((0, index_1.getJsonSheetRow)(track, [{ label: "Artist", value: "artist" }])).toEqual({ Artist: "Galantis" });
23
+ expect((0, index_1.getJsonSheetRow)(track, [{ label: "Album", value: "album.name" }])).toEqual({ Album: "Help" });
24
+ expect((0, index_1.getJsonSheetRow)(track, [
25
+ {
26
+ label: "Explicit content",
27
+ value: (content) => {
28
+ return content.explicit ? "Yes" : "No";
29
+ },
30
+ },
31
+ ])).toEqual({ "Explicit content": "No" });
32
+ expect((0, index_1.getJsonSheetRow)(track, [{ label: "Popularity", value: "popularity" }])).toEqual({ Popularity: 21 });
33
+ expect((0, index_1.getJsonSheetRow)(track, [
34
+ {
35
+ label: "Duration",
36
+ value: (content) => {
37
+ return content.durationMs / 1000 + "s";
38
+ },
39
+ },
40
+ ])).toEqual({ Duration: "4.01s" });
41
+ expect((0, index_1.getJsonSheetRow)(track, [{ label: "URI", value: "uri" }])).toEqual({ URI: "" });
42
+ expect((0, index_1.getJsonSheetRow)(track, [{ label: "Album", value: "album" }])).toEqual({
43
+ Album: {
44
+ id: "532o48sn3",
45
+ name: "Help",
46
+ albumType: "single",
47
+ totalTracks: 1,
48
+ releaseDate: "2014-03-11",
49
+ },
50
+ });
51
+ });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0SnNvblNoZWV0Um93LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2dldEpzb25TaGVldFJvdy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQW9EO0FBRXBELElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFO0lBQ1osTUFBTSxLQUFLLEdBQUc7UUFDWixFQUFFLEVBQUUsVUFBVTtRQUNkLElBQUksRUFBRSxNQUFNO1FBQ1osTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLFdBQVc7WUFDZixJQUFJLEVBQUUsTUFBTTtZQUNaLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFdBQVcsRUFBRSxDQUFDO1lBQ2QsV0FBVyxFQUFFLFlBQVk7U0FDMUI7UUFDRCxRQUFRLEVBQUUsS0FBSztRQUNmLFVBQVUsRUFBRSxFQUFFO1FBQ2QsVUFBVSxFQUFFLElBQUk7S0FDakIsQ0FBQTtJQUVELE1BQU0sQ0FBQyxJQUFBLHVCQUFlLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUUxRixNQUFNLENBQUMsSUFBQSx1QkFBZSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7SUFFNUYsTUFBTSxDQUFDLElBQUEsdUJBQWUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBRXRHLE1BQU0sQ0FBQyxJQUFBLHVCQUFlLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUVwRyxNQUFNLENBQ0osSUFBQSx1QkFBZSxFQUFDLEtBQUssRUFBRTtRQUNyQjtZQUNFLEtBQUssRUFBRSxrQkFBa0I7WUFDekIsS0FBSyxFQUFFLENBQUMsT0FBaUIsRUFBRSxFQUFFO2dCQUMzQixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBQ3hDLENBQUM7U0FDRjtLQUNGLENBQUMsQ0FDSCxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFFdkMsTUFBTSxDQUFDLElBQUEsdUJBQWUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRTFHLE1BQU0sQ0FDSixJQUFBLHVCQUFlLEVBQUMsS0FBSyxFQUFFO1FBQ3JCO1lBQ0UsS0FBSyxFQUFFLFVBQVU7WUFDakIsS0FBSyxFQUFFLENBQUMsT0FBaUIsRUFBRSxFQUFFO2dCQUMzQixPQUFRLE9BQU8sQ0FBQyxVQUFxQixHQUFHLElBQUksR0FBRyxHQUFHLENBQUE7WUFDcEQsQ0FBQztTQUNGO0tBQ0YsQ0FBQyxDQUNILENBQUMsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFFaEMsTUFBTSxDQUFDLElBQUEsdUJBQWUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRXJGLE1BQU0sQ0FBQyxJQUFBLHVCQUFlLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDM0UsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLFdBQVc7WUFDZixJQUFJLEVBQUUsTUFBTTtZQUNaLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFdBQVcsRUFBRSxDQUFDO1lBQ2QsV0FBVyxFQUFFLFlBQVk7U0FDMUI7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSJ9
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const xlsx_1 = require("xlsx");
4
+ const index_1 = require("../index");
5
+ test("Should return only one column width", () => {
6
+ const content = { username: "art3mis" };
7
+ const columns = [{ label: "Username", value: "username" }];
8
+ const jsonSheetRow = (0, index_1.getJsonSheetRow)(content, columns);
9
+ const worksheet = xlsx_1.utils.json_to_sheet([jsonSheetRow]);
10
+ // Column label is larger than content
11
+ expect((0, index_1.getWorksheetColumnWidths)(worksheet)).toEqual([{ width: 9 }]);
12
+ expect((0, index_1.getWorksheetColumnWidths)(worksheet, 0)).toEqual([{ width: 8 }]);
13
+ expect((0, index_1.getWorksheetColumnWidths)(worksheet, 4)).toEqual([{ width: 12 }]);
14
+ });
15
+ test("Should return two column widths", () => {
16
+ const content = { name: "Interstellar", year: 2014 };
17
+ const columns = [
18
+ { label: "Movie", value: "name" },
19
+ { label: "Year", value: "year" },
20
+ ];
21
+ const jsonSheetRow = (0, index_1.getJsonSheetRow)(content, columns);
22
+ const worksheet = xlsx_1.utils.json_to_sheet([jsonSheetRow]);
23
+ // Content is larger than column label
24
+ expect((0, index_1.getWorksheetColumnWidths)(worksheet)).toEqual([{ width: 13 }, { width: 5 }]);
25
+ expect((0, index_1.getWorksheetColumnWidths)(worksheet, 0)).toEqual([{ width: 12 }, { width: 4 }]);
26
+ expect((0, index_1.getWorksheetColumnWidths)(worksheet, 4)).toEqual([{ width: 16 }, { width: 8 }]);
27
+ });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0V29ya3NoZWV0Q29sdW1XaWR0aHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vZ2V0V29ya3NoZWV0Q29sdW1XaWR0aHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUE0QjtBQUM1QixvQ0FBb0U7QUFFcEUsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtJQUMvQyxNQUFNLE9BQU8sR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUN2QyxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUUxRCxNQUFNLFlBQVksR0FBRyxJQUFBLHVCQUFlLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3RELE1BQU0sU0FBUyxHQUFHLFlBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO0lBRXJELHNDQUFzQztJQUN0QyxNQUFNLENBQUMsSUFBQSxnQ0FBd0IsRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUVuRSxNQUFNLENBQUMsSUFBQSxnQ0FBd0IsRUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFdEUsTUFBTSxDQUFDLElBQUEsZ0NBQXdCLEVBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3pFLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtJQUMzQyxNQUFNLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFBO0lBQ3BELE1BQU0sT0FBTyxHQUFHO1FBQ2QsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7UUFDakMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7S0FDakMsQ0FBQTtJQUVELE1BQU0sWUFBWSxHQUFHLElBQUEsdUJBQWUsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDdEQsTUFBTSxTQUFTLEdBQUcsWUFBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7SUFFckQsc0NBQXNDO0lBQ3RDLE1BQU0sQ0FBQyxJQUFBLGdDQUF3QixFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBRWxGLE1BQU0sQ0FBQyxJQUFBLGdDQUF3QixFQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUVyRixNQUFNLENBQUMsSUFBQSxnQ0FBd0IsRUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDdkYsQ0FBQyxDQUFDLENBQUEifQ==
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const xlsx_1 = require("xlsx");
7
+ const index_1 = __importDefault(require("../index"));
8
+ describe("json-as-xlsx", () => {
9
+ it("should return undefined if sheets array is empty", () => {
10
+ const sheets = [];
11
+ const result = (0, index_1.default)(sheets);
12
+ expect(result).toBeUndefined();
13
+ });
14
+ describe("writeOptions.type is set to buffer", () => {
15
+ const settings = {
16
+ writeOptions: {
17
+ type: "buffer",
18
+ },
19
+ };
20
+ it("should return buffer", () => {
21
+ const sheets = [
22
+ {
23
+ columns: [{ label: "Name", value: "name" }],
24
+ content: [{ name: "Martin" }],
25
+ },
26
+ ];
27
+ const buffer = (0, index_1.default)(sheets, settings);
28
+ expect(buffer).toBeInstanceOf(Buffer);
29
+ });
30
+ it("should return parsable xlsx buffer", () => {
31
+ const sheets = [
32
+ {
33
+ columns: [{ label: "Name", value: "name" }],
34
+ content: [{ name: "Martin" }],
35
+ },
36
+ ];
37
+ const buffer = (0, index_1.default)(sheets, settings);
38
+ const workBook = (0, xlsx_1.read)(buffer);
39
+ expect(workBook).toBeDefined();
40
+ });
41
+ it("should return one column filled cells", () => {
42
+ const sheets = [
43
+ {
44
+ sheet: "Authors",
45
+ columns: [{ label: "Name", value: "name" }],
46
+ content: [{ name: "Martin" }, { name: "Kent" }],
47
+ },
48
+ ];
49
+ const buffer = (0, index_1.default)(sheets, settings);
50
+ const workBook = (0, xlsx_1.read)(buffer);
51
+ const workSheet = workBook.Sheets.Authors;
52
+ expect(workSheet["!ref"]).toBe("A1:A3");
53
+ expect(workSheet.A1.v).toBe("Name");
54
+ expect(workSheet.A2.v).toBe("Martin");
55
+ expect(workSheet.A3.v).toBe("Kent");
56
+ });
57
+ it("should return only the column headers if there is no content", () => {
58
+ const sheetName = "Authors";
59
+ const sheets = [
60
+ {
61
+ sheet: sheetName,
62
+ columns: [
63
+ { label: "Name", value: "name" },
64
+ { label: "Age", value: "age" },
65
+ ],
66
+ content: [],
67
+ },
68
+ ];
69
+ const buffer = (0, index_1.default)(sheets, settings);
70
+ const workBook = (0, xlsx_1.read)(buffer);
71
+ const workSheet = workBook.Sheets[sheetName];
72
+ expect(workSheet.A1.v).toBe("Name");
73
+ expect(workSheet.B1.v).toBe("Age");
74
+ });
75
+ it("should handle deep props", () => {
76
+ const sheets = [
77
+ {
78
+ sheet: "Users",
79
+ columns: [{ label: "IP", value: "metadata.ip" }],
80
+ content: [
81
+ { name: "Martin", metadata: { ip: "0.0.0.0" } },
82
+ { name: "Robert", metadata: { ip: "0.0.0.1" } },
83
+ ],
84
+ },
85
+ ];
86
+ const buffer = (0, index_1.default)(sheets, settings);
87
+ const workBook = (0, xlsx_1.read)(buffer);
88
+ const workSheet = workBook.Sheets.Users;
89
+ expect(workSheet.A1.v).toBe("IP");
90
+ expect(workSheet.A2.v).toBe("0.0.0.0");
91
+ expect(workSheet.A3.v).toBe("0.0.0.1");
92
+ });
93
+ it("should handle function column value", () => {
94
+ const maskPhoneNumber = (cell) => new String(cell.phone).replace(/^(\d{3})(\d{4}).*/, "$1-$2");
95
+ const sheets = [
96
+ {
97
+ sheet: "Users",
98
+ columns: [{ label: "Phone number", value: maskPhoneNumber }],
99
+ content: [
100
+ { name: "Martin", phone: "1234567" },
101
+ { name: "Robert", phone: "1234568" },
102
+ ],
103
+ },
104
+ ];
105
+ const buffer = (0, index_1.default)(sheets, settings);
106
+ const workBook = (0, xlsx_1.read)(buffer);
107
+ const workSheet = workBook.Sheets.Users;
108
+ expect(workSheet.A1.v).toBe("Phone number");
109
+ expect(workSheet.A2.v).toBe("123-4567");
110
+ expect(workSheet.A3.v).toBe("123-4568");
111
+ });
112
+ it("should call optional callback", () => {
113
+ const callback = jest.fn();
114
+ const sheets = [
115
+ {
116
+ columns: [{ label: "Name", value: "name" }],
117
+ content: [{ name: "Martin" }],
118
+ },
119
+ ];
120
+ (0, index_1.default)(sheets, settings, callback);
121
+ expect(callback).toBeCalledTimes(1);
122
+ });
123
+ it("should handle multiple sheets", () => {
124
+ const sheets = [
125
+ {
126
+ sheet: "Authors",
127
+ columns: [
128
+ { label: "Name", value: "name" },
129
+ { label: "Age", value: "age" },
130
+ ],
131
+ content: [
132
+ { name: "Martin", age: 50 },
133
+ { name: "Robert", age: 20 },
134
+ { name: "Andrea", age: 35 },
135
+ ],
136
+ },
137
+ {
138
+ sheet: "Books",
139
+ columns: [
140
+ { label: "Title", value: "title" },
141
+ { label: "Author", value: "author" },
142
+ ],
143
+ content: [
144
+ { title: "TDD", author: "Martin" },
145
+ { title: "Git", author: "Robert" },
146
+ ],
147
+ },
148
+ ];
149
+ const buffer = (0, index_1.default)(sheets, settings);
150
+ const workBook = (0, xlsx_1.read)(buffer);
151
+ const authorsSheet = workBook.Sheets.Authors;
152
+ const booksSheet = workBook.Sheets.Books;
153
+ expect(workBook.SheetNames).toEqual(["Authors", "Books"]);
154
+ expect(authorsSheet.A1.v).toBe("Name");
155
+ expect(authorsSheet.B1.v).toBe("Age");
156
+ expect(authorsSheet.A2.v).toBe("Martin");
157
+ expect(authorsSheet.B2.v).toBe(50);
158
+ expect(authorsSheet.A3.v).toBe("Robert");
159
+ expect(authorsSheet.B3.v).toBe(20);
160
+ expect(authorsSheet.A4.v).toBe("Andrea");
161
+ expect(authorsSheet.B4.v).toBe(35);
162
+ expect(booksSheet.A1.v).toBe("Title");
163
+ expect(booksSheet.B1.v).toBe("Author");
164
+ expect(booksSheet.A2.v).toBe("TDD");
165
+ expect(booksSheet.B2.v).toBe("Martin");
166
+ expect(booksSheet.A3.v).toBe("Git");
167
+ expect(booksSheet.B3.v).toBe("Robert");
168
+ });
169
+ });
170
+ });
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5kZXgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUFpRDtBQUNqRCxxREFBb0U7QUFFcEUsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7SUFDNUIsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtRQUMxRCxNQUFNLE1BQU0sR0FBaUIsRUFBRSxDQUFBO1FBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUEsZUFBUSxFQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUNoQyxDQUFDLENBQUMsQ0FBQTtJQUVGLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7UUFDbEQsTUFBTSxRQUFRLEdBQWM7WUFDMUIsWUFBWSxFQUFFO2dCQUNaLElBQUksRUFBRSxRQUFRO2FBQ2Y7U0FDRixDQUFBO1FBRUQsRUFBRSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtZQUM5QixNQUFNLE1BQU0sR0FBRztnQkFDYjtvQkFDRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUMzQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztpQkFDOUI7YUFDRixDQUFBO1lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBQSxlQUFRLEVBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQ3pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdkMsQ0FBQyxDQUFDLENBQUE7UUFFRixFQUFFLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO1lBQzVDLE1BQU0sTUFBTSxHQUFHO2dCQUNiO29CQUNFLE9B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
@@ -0,0 +1,37 @@
1
+ /// <reference types="node" />
2
+ import { utils, WorkBook, WorkSheet, WritingOptions } from "xlsx";
3
+ export interface IColumn {
4
+ label: string;
5
+ value: string | ((value: IContent) => string | number | boolean | Date | IContent);
6
+ format?: string;
7
+ }
8
+ export interface IContent {
9
+ [key: string]: string | number | boolean | Date | IContent;
10
+ }
11
+ export interface IJsonSheet {
12
+ sheet?: string;
13
+ columns: IColumn[];
14
+ content: IContent[];
15
+ }
16
+ export interface ISettings {
17
+ extraLength?: number;
18
+ fileName?: string;
19
+ writeOptions?: WritingOptions;
20
+ writeMode?: string;
21
+ RTL?: boolean;
22
+ }
23
+ export interface IJsonSheetRow {
24
+ [key: string]: string | number | boolean | Date | IContent;
25
+ }
26
+ export interface IWorksheetColumnWidth {
27
+ width: number;
28
+ }
29
+ export type IWorkbookCallback = (workbook: WorkBook) => void;
30
+ export { utils, WorkBook, WorkSheet };
31
+ export declare const getContentProperty: (content: IContent, property: string) => string | number | boolean | Date | IContent;
32
+ export declare const getJsonSheetRow: (content: IContent, columns: IColumn[]) => IJsonSheetRow;
33
+ export declare const getWorksheetColumnWidths: (worksheet: WorkSheet, extraLength?: number) => IWorksheetColumnWidth[];
34
+ declare const writeWorkbook: (workbook: WorkBook, settings?: ISettings) => Buffer | undefined;
35
+ export declare const xlsx: (jsonSheets: IJsonSheet[], settings?: ISettings, workbookCallback?: IWorkbookCallback) => ReturnType<typeof writeWorkbook>;
36
+ export default xlsx;
37
+ export declare const libraryName = "json-as-xlsx";
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.libraryName=exports.xlsx=exports.getWorksheetColumnWidths=exports.getJsonSheetRow=exports.getContentProperty=exports.utils=void 0;const xlsx_1=require("xlsx");Object.defineProperty(exports,"utils",{enumerable:true,get:function(){return xlsx_1.utils}});const getContentProperty=(content,property)=>{const accessContentProperties=(content,properties)=>{const value=content[properties[0]];if(properties.length===1){return value!==null&&value!==void 0?value:""}if(value===undefined||typeof value==="string"||typeof value==="boolean"||typeof value==="number"||value instanceof Date){return""}return accessContentProperties(value,properties.slice(1))};const properties=property.split(".");return accessContentProperties(content,properties)};exports.getContentProperty=getContentProperty;const getJsonSheetRow=(content,columns)=>{const jsonSheetRow={};columns.forEach(column=>{if(typeof column.value==="function"){jsonSheetRow[column.label]=column.value(content)}else{jsonSheetRow[column.label]=(0,exports.getContentProperty)(content,column.value)}});return jsonSheetRow};exports.getJsonSheetRow=getJsonSheetRow;const applyColumnFormat=(worksheet,columnIds,columnFormats)=>{var _a;for(let i=0;i<columnIds.length;i+=1){const columnFormat=columnFormats[i];if(!columnFormat){continue}const column=xlsx_1.utils.decode_col(columnIds[i]);const range=xlsx_1.utils.decode_range((_a=worksheet["!ref"])!==null&&_a!==void 0?_a:"");for(let row=range.s.r+1;row<=range.e.r;++row){const ref=xlsx_1.utils.encode_cell({r:row,c:column});if(worksheet[ref]){worksheet[ref].z=columnFormat}}}};const getWorksheetColumnIds=worksheet=>{var _a;const columnRange=xlsx_1.utils.decode_range((_a=worksheet["!ref"])!==null&&_a!==void 0?_a:"");const columnIds=[];for(let C=columnRange.s.c;C<=columnRange.e.c;C++){const address=xlsx_1.utils.encode_col(C);columnIds.push(address)}return columnIds};const getObjectLength=object=>{if(typeof object==="string"){return object.length}if(typeof object==="number"){return object.toString().length}if(typeof object==="boolean"){return object?"true".length:"false".length}if(object instanceof Date){return object.toString().length}return 0};const getWorksheetColumnWidths=(worksheet,extraLength=1)=>{const columnLetters=getWorksheetColumnIds(worksheet);return columnLetters.map(column=>{const columnCells=Object.keys(worksheet).filter(cell=>{return cell.replace(/[0-9]/g,"")===column});const maxWidthCell=columnCells.reduce((maxWidth,cellId)=>{const cell=worksheet[cellId];const cellContentLength=getObjectLength(cell.v);if(!cell.z){return Math.max(maxWidth,cellContentLength)}const cellFormatLength=cell.z.length;const largestWidth=Math.max(cellContentLength,cellFormatLength);return Math.max(maxWidth,largestWidth)},0);return{width:maxWidthCell+extraLength}})};exports.getWorksheetColumnWidths=getWorksheetColumnWidths;const getWorksheet=(jsonSheet,settings)=>{let jsonSheetRows;if(jsonSheet.content.length>0){jsonSheetRows=jsonSheet.content.map(contentItem=>{return(0,exports.getJsonSheetRow)(contentItem,jsonSheet.columns)})}else{jsonSheetRows=jsonSheet.columns.map(column=>({[column.label]:""}))}const worksheet=xlsx_1.utils.json_to_sheet(jsonSheetRows);const worksheetColumnIds=getWorksheetColumnIds(worksheet);const worksheetColumnFormats=jsonSheet.columns.map(jsonSheetColumn=>{var _a;return(_a=jsonSheetColumn.format)!==null&&_a!==void 0?_a:null});applyColumnFormat(worksheet,worksheetColumnIds,worksheetColumnFormats);worksheet["!cols"]=(0,exports.getWorksheetColumnWidths)(worksheet,settings.extraLength);return worksheet};const writeWorkbook=(workbook,settings={})=>{var _a,_b,_c,_d;var _e;const RTL=Boolean(settings.RTL);(_a=workbook.Workbook)!==null&&_a!==void 0?_a:workbook.Workbook={};(_b=(_e=workbook.Workbook).Views)!==null&&_b!==void 0?_b:_e.Views=[{}];workbook.Workbook.Views.forEach(view=>{view.RTL=RTL});const filename=`${(_c=settings.fileName)!==null&&_c!==void 0?_c:"Spreadsheet"}.xlsx`;const writeOptions=(_d=settings.writeOptions)!==null&&_d!==void 0?_d:{};if(settings.writeMode==="write"){return(0,xlsx_1.write)(workbook,writeOptions)}else if(settings.writeMode==="writeFile"){return(0,xlsx_1.writeFile)(workbook,filename,writeOptions)}else{return writeOptions.type==="buffer"?(0,xlsx_1.write)(workbook,writeOptions):(0,xlsx_1.writeFile)(workbook,filename,writeOptions)}};const xlsx=(jsonSheets,settings={},workbookCallback=()=>{})=>{if(jsonSheets.length===0)return;const workbook=xlsx_1.utils.book_new();jsonSheets.forEach((actualSheet,actualIndex)=>{var _a;const worksheet=getWorksheet(actualSheet,settings);const worksheetName=(_a=actualSheet.sheet)!==null&&_a!==void 0?_a:`Sheet ${actualIndex+1}`;xlsx_1.utils.book_append_sheet(workbook,worksheet,worksheetName)});workbookCallback(workbook);return writeWorkbook(workbook,settings)};exports.xlsx=xlsx;exports.default=exports.xlsx;exports.libraryName="json-as-xlsx";
package/package.json CHANGED
@@ -1,39 +1,37 @@
1
1
  {
2
2
  "name": "json-as-xlsx",
3
- "version": "2.4.5",
4
- "main": "src/index.js",
3
+ "version": "2.5.0",
5
4
  "license": "MIT",
6
- "types": "types/index.d.ts",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "typings": "dist/index.d.ts",
7
8
  "description": "Create excel xlsx file from json",
8
9
  "author": "LuisEnMarroquin <luis@marroquin.dev>",
9
10
  "homepage": "https://xlsx.marroquin.dev",
11
+ "type": "commonjs",
12
+ "private": false,
10
13
  "scripts": {
11
- "start": "tsc --watch src/index.ts",
12
- "build": "tsc src/index.ts && uglifyjs src/index.js --output src/index.js",
13
- "start-client": "vue-cli-service serve",
14
- "build-client": "vue-cli-service build",
15
- "start-server": "npx nodemon --exec npx ts-node --skip-project examples/express/server.ts",
16
- "test": "jest"
14
+ "start": "tsc -p tsconfig.json --watch",
15
+ "build": "tsc -p tsconfig.json && uglifyjs dist/index.js --output dist/index.js",
16
+ "test": "jest --coverage"
17
17
  },
18
18
  "dependencies": {
19
19
  "xlsx": "^0.18.5"
20
20
  },
21
21
  "devDependencies": {
22
- "@types/express": "^4.17.14",
23
- "@types/jest": "^29.1.0",
24
- "@types/node": "^18.7.23",
25
- "@vue/cli-service": "^5.0.8",
26
- "express": "^4.18.1",
27
- "jest": "^29.1.1",
22
+ "@testing-library/jest-dom": "^5.16.5",
23
+ "@types/jest": "^29.2.4",
24
+ "@types/node": "^18.11.11",
25
+ "@types/testing-library__jest-dom": "^5.14.5",
26
+ "jest": "^29.3.1",
27
+ "jest-cli": "^29.3.1",
28
+ "jest-environment-jsdom": "^29.3.1",
28
29
  "ts-jest": "^29.0.3",
29
- "typescript": "^4.8.4",
30
- "uglify-js": "^3.17.2",
31
- "vue": "^3.2.40",
32
- "vue-template-compiler": "^2.7.10"
30
+ "typescript": "^4.9.3",
31
+ "uglify-js": "^3.17.4"
33
32
  },
34
33
  "files": [
35
- "src/index.js",
36
- "types/index.d.ts"
34
+ "dist"
37
35
  ],
38
36
  "repository": {
39
37
  "type": "git",
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2022, LuisEnMarroquin <xlsx@marroquin.dev>
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
package/README.md DELETED
@@ -1,105 +0,0 @@
1
- # json-as-xlsx
2
-
3
- This is a tool that helps to build an excel from a json and it depends only on `xlsx` library
4
-
5
- You can see a live example of it working on any of this sites (there are many just in case):
6
-
7
- - [xlsx.pages.dev](https://xlsx.pages.dev)
8
- - [xlsx.marroquin.dev](https://xlsx.marroquin.dev)
9
- - [xlsx.luismarroquin.com](https://xlsx.luismarroquin.com)
10
-
11
- ## Usage
12
-
13
- ```js
14
- import xlsx from "json-as-xlsx"
15
- // or require
16
- let xlsx = require("json-as-xlsx")
17
-
18
- let data = [
19
- {
20
- sheet: "Adults",
21
- columns: [
22
- { label: "User", value: "user" }, // Top level data
23
- { label: "Age", value: (row) => row.age + " years" }, // Custom format
24
- { label: "Phone", value: (row) => (row.more ? row.more.phone || "" : "") }, // Run functions
25
- ],
26
- content: [
27
- { user: "Andrea", age: 20, more: { phone: "11111111" } },
28
- { user: "Luis", age: 21, more: { phone: "12345678" } },
29
- ],
30
- },
31
- {
32
- sheet: "Children",
33
- columns: [
34
- { label: "User", value: "user" }, // Top level data
35
- { label: "Age", value: "age", format: '# "years"' }, // Column format
36
- { label: "Phone", value: "user.more.phone", format: "(###) ###-####" }, // Deep props and column format
37
- ],
38
- content: [
39
- { user: "Manuel", age: 16, more: { phone: 9999999900 } },
40
- { user: "Ana", age: 17, more: { phone: 8765432135 } },
41
- ],
42
- },
43
- ]
44
-
45
- let settings = {
46
- fileName: "MySpreadsheet", // Name of the resulting spreadsheet
47
- extraLength: 3, // A bigger number means that columns will be wider
48
- writeMode: 'writeFile', // The available parameters are 'WriteFile' and 'write'. This setting is optional. Useful in such cases https://docs.sheetjs.com/docs/solutions/output#example-remote-file
49
- writeOptions: {}, // Style options from https://github.com/SheetJS/sheetjs#writing-options
50
- RTL: true, // Display the columns from right-to-left (the default value is false)
51
- }
52
-
53
- xlsx(data, settings) // Will download the excel file
54
- ```
55
-
56
- If you want to trigger something after the file is downloaded, you can use the `callback` parameter:
57
-
58
- ```js
59
- let callback = function (sheet) {
60
- console.log("Download complete:", sheet)
61
- }
62
-
63
- xlsx(data, settings, callback) // Will download the excel file
64
- ```
65
-
66
- ### Column formatting
67
-
68
- > **Note:** Cell formatting is type based, i.e. the format type and value type must match.
69
- >
70
- > If you want to use a Date format, the value must be of type Date; if you want a number format, the value must be a Number.
71
-
72
- Column formatting can be provided in the column object, i.e.
73
-
74
- ```js
75
- columns: [{ label: "Income", value: "income", format: "€#,##0.00" }]
76
- ```
77
-
78
- - A list of SheetJS format examples can be found
79
- here: [SSF library](https://github.com/SheetJS/sheetjs/blob/f443aa8475ebf051fc4e888cf0a6c3e5b751813c/bits/10_ssf.js#L42)
80
- - ECMA-376 number formatting
81
- specification: [Number formats](https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_numFmts_topic_ID0E6KK6.html)
82
-
83
- Examples
84
-
85
- ```js
86
- // Number formats
87
-
88
- "$0.00" // Basic
89
- "\£#,##0.00" // Pound
90
- "0%" // Percentage
91
- '#.# "ft"' // Number and text
92
-
93
- // Date formats
94
- "d-mmm-yy" // 12-Mar-22
95
- "ddd" // (eg. Sat)
96
- "dddd" // (eg. Saturday)
97
- "h:mm AM/PM" // 1:10 PM
98
- ```
99
-
100
- ## Examples
101
-
102
- This are files used for development, please change imports from `../../src/index.js` to `json-as-xlsx`
103
-
104
- - [VueJS with JavaScript](https://github.com/LuisEnMarroquin/json-as-xlsx/blob/main/examples/vue-app/App.vue)
105
- - [Express with TypeScript](https://github.com/LuisEnMarroquin/json-as-xlsx/blob/main/examples/express/server.ts)
package/src/index.js DELETED
@@ -1 +0,0 @@
1
- "use strict";exports.__esModule=true;exports.utils=exports.getWorksheetColumnWidths=exports.getJsonSheetRow=exports.getContentProperty=void 0;var xlsx_1=require("xlsx");exports.utils=xlsx_1.utils;var getContentProperty=function(content,property){var accessContentProperties=function(content,properties){var value=content[properties[0]];if(properties.length===1){return value!==null&&value!==void 0?value:""}if(value===undefined||typeof value==="string"||typeof value==="boolean"||typeof value==="number"||value instanceof Date){return""}return accessContentProperties(value,properties.slice(1))};var properties=property.split(".");return accessContentProperties(content,properties)};exports.getContentProperty=getContentProperty;var getJsonSheetRow=function(content,columns){var jsonSheetRow={};columns.forEach(function(column){if(typeof column.value==="function"){jsonSheetRow[column.label]=column.value(content)}else{jsonSheetRow[column.label]=getContentProperty(content,column.value)}});return jsonSheetRow};exports.getJsonSheetRow=getJsonSheetRow;var applyColumnFormat=function(worksheet,columnIds,columnFormats){var _a;for(var i=0;i<columnIds.length;i+=1){var columnFormat=columnFormats[i];if(!columnFormat){continue}var column=xlsx_1.utils.decode_col(columnIds[i]);var range=xlsx_1.utils.decode_range((_a=worksheet["!ref"])!==null&&_a!==void 0?_a:"");for(var row=range.s.r+1;row<=range.e.r;++row){var ref=xlsx_1.utils.encode_cell({r:row,c:column});if(worksheet[ref]){worksheet[ref].z=columnFormat}}}};var getWorksheetColumnIds=function(worksheet){var _a;var columnRange=xlsx_1.utils.decode_range((_a=worksheet["!ref"])!==null&&_a!==void 0?_a:"");var columnIds=[];for(var C=columnRange.s.c;C<=columnRange.e.c;C++){var address=xlsx_1.utils.encode_col(C);columnIds.push(address)}return columnIds};var getObjectLength=function(object){if(typeof object==="string"){return object.length}if(typeof object==="number"){return object.toString().length}if(typeof object==="boolean"){return object?"true".length:"false".length}if(object instanceof Date){return object.toString().length}return 0};var getWorksheetColumnWidths=function(worksheet,extraLength){if(extraLength===void 0){extraLength=1}var columnLetters=getWorksheetColumnIds(worksheet);return columnLetters.map(function(column){var columnCells=Object.keys(worksheet).filter(function(cell){return cell.replace(/[0-9]/g,"")===column});var maxWidthCell=columnCells.reduce(function(maxWidth,cellId){var cell=worksheet[cellId];var cellContentLength=getObjectLength(cell.v);if(!cell.z){return Math.max(maxWidth,cellContentLength)}var cellFormatLength=cell.z.length;var largestWidth=Math.max(cellContentLength,cellFormatLength);return Math.max(maxWidth,largestWidth)},0);return{width:maxWidthCell+extraLength}})};exports.getWorksheetColumnWidths=getWorksheetColumnWidths;var getWorksheet=function(jsonSheet,settings){var jsonSheetRows;if(jsonSheet.content.length>0){jsonSheetRows=jsonSheet.content.map(function(contentItem){return getJsonSheetRow(contentItem,jsonSheet.columns)})}else{jsonSheetRows=jsonSheet.columns.map(function(column){var _a;return _a={},_a[column.label]="",_a})}var worksheet=xlsx_1.utils.json_to_sheet(jsonSheetRows);var worksheetColumnIds=getWorksheetColumnIds(worksheet);var worksheetColumnFormats=jsonSheet.columns.map(function(jsonSheetColumn){var _a;return(_a=jsonSheetColumn.format)!==null&&_a!==void 0?_a:null});applyColumnFormat(worksheet,worksheetColumnIds,worksheetColumnFormats);worksheet["!cols"]=getWorksheetColumnWidths(worksheet,settings.extraLength);return worksheet};var writeWorkbook=function(workbook,settings){var _a,_b,_c,_d;var _e;if(settings===void 0){settings={}}var RTL=Boolean(settings.RTL);(_a=workbook.Workbook)!==null&&_a!==void 0?_a:workbook.Workbook={};(_b=(_e=workbook.Workbook).Views)!==null&&_b!==void 0?_b:_e.Views=[{}];workbook.Workbook.Views.forEach(function(view){view.RTL=RTL});var filename="".concat((_c=settings.fileName)!==null&&_c!==void 0?_c:"Spreadsheet",".xlsx");var writeOptions=(_d=settings.writeOptions)!==null&&_d!==void 0?_d:{};if(settings.writeMode==="write"){return(0,xlsx_1.write)(workbook,writeOptions)}else if(settings.writeMode==="writeFile"){return(0,xlsx_1.writeFile)(workbook,filename,writeOptions)}else{return writeOptions.type==="buffer"?(0,xlsx_1.write)(workbook,writeOptions):(0,xlsx_1.writeFile)(workbook,filename,writeOptions)}};var xlsx=function(jsonSheets,settings,workbookCallback){if(settings===void 0){settings={}}if(workbookCallback===void 0){workbookCallback=function(){}}if(jsonSheets.length===0)return;var workbook=xlsx_1.utils.book_new();jsonSheets.forEach(function(actualSheet,actualIndex){var _a;var worksheet=getWorksheet(actualSheet,settings);var worksheetName=(_a=actualSheet.sheet)!==null&&_a!==void 0?_a:"Sheet ".concat(actualIndex+1);xlsx_1.utils.book_append_sheet(workbook,worksheet,worksheetName)});workbookCallback(workbook);return writeWorkbook(workbook,settings)};exports["default"]=xlsx;module.exports=xlsx;module.exports.getContentProperty=getContentProperty;module.exports.getJsonSheetRow=getJsonSheetRow;module.exports.getWorksheetColumnWidths=getWorksheetColumnWidths;module.exports.utils=xlsx_1.utils;
package/types/index.d.ts DELETED
@@ -1,41 +0,0 @@
1
- import { WritingOptions, utils, WorkBook, WorkSheet } from "xlsx"
2
-
3
- export interface IColumn {
4
- label: string
5
- value: string | ((value: IContent) => string | number | boolean | Date | IContent)
6
- format?: string
7
- }
8
-
9
- export interface IContent {
10
- [key: string]: string | number | boolean | Date | IContent
11
- }
12
-
13
- export interface IJsonSheet {
14
- sheet?: string
15
- columns: IColumn[]
16
- content: IContent[]
17
- }
18
-
19
- export interface ISettings {
20
- extraLength?: number
21
- fileName?: string
22
- writeOptions?: WritingOptions
23
- writeMode?: string
24
- RTL?: boolean
25
- }
26
-
27
- export interface IJsonSheetRow {
28
- [key: string]: string | number | boolean | Date | IContent
29
- }
30
-
31
- export interface IWorksheetColumnWidth {
32
- width: number
33
- }
34
-
35
- export type IWorkbookCallback = (workbook: WorkBook) => void
36
-
37
- export function xlsx(jsonSheets: IJsonSheet[], settings?: ISettings, callback?: IWorkbookCallback): Buffer | undefined
38
-
39
- export default xlsx
40
-
41
- export { utils, WorkBook, WorkSheet }