@elliemae/ds-csv-converter 3.32.2-next.1 → 3.33.0-next.1
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/cjs/index.js +62 -2
- package/dist/cjs/index.js.map +2 -2
- package/dist/esm/index.js +58 -1
- package/dist/esm/index.js.map +2 -2
- package/dist/types/index.d.ts +3 -1
- package/package.json +4 -5
package/dist/cjs/index.js
CHANGED
|
@@ -5,6 +5,10 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
8
12
|
var __copyProps = (to, from, except, desc) => {
|
|
9
13
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
14
|
for (let key of __getOwnPropNames(from))
|
|
@@ -13,7 +17,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
13
17
|
}
|
|
14
18
|
return to;
|
|
15
19
|
};
|
|
16
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
17
20
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
18
21
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
19
22
|
// file that has been converted to a CommonJS file using a Babel-
|
|
@@ -24,7 +27,64 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
27
|
));
|
|
25
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
26
29
|
var src_exports = {};
|
|
30
|
+
__export(src_exports, {
|
|
31
|
+
list2csv: () => list2csv,
|
|
32
|
+
listToCsvBlob: () => listToCsvBlob,
|
|
33
|
+
listToCsvFile: () => listToCsvFile
|
|
34
|
+
});
|
|
27
35
|
module.exports = __toCommonJS(src_exports);
|
|
28
36
|
var React = __toESM(require("react"));
|
|
29
|
-
|
|
37
|
+
const argIsRecord = (arg) => !!arg && arg instanceof Map === false;
|
|
38
|
+
function list2csv(list, map) {
|
|
39
|
+
let headerMap;
|
|
40
|
+
if (argIsRecord(map)) {
|
|
41
|
+
headerMap = new Map(Object.entries(map));
|
|
42
|
+
} else {
|
|
43
|
+
headerMap = map;
|
|
44
|
+
}
|
|
45
|
+
const columns = headerMap && Array.from(headerMap.keys()) || Object.keys(list[0] || {});
|
|
46
|
+
const header = columns.map((v) => `"${headerMap?.get(v) ?? v}"`).join(",");
|
|
47
|
+
const content = list.map(
|
|
48
|
+
(item) => columns.map((key) => {
|
|
49
|
+
let finalCell;
|
|
50
|
+
const cell = item[key];
|
|
51
|
+
finalCell = cell;
|
|
52
|
+
if (typeof cell === "string")
|
|
53
|
+
finalCell = cell.replace(/"/g, '""');
|
|
54
|
+
return `"${finalCell}"`;
|
|
55
|
+
}).join(",")
|
|
56
|
+
).join("\r\n");
|
|
57
|
+
return `${header}\r
|
|
58
|
+
${content}`;
|
|
59
|
+
}
|
|
60
|
+
function listToCsvBlob(list, map) {
|
|
61
|
+
const data = list2csv(list, map);
|
|
62
|
+
return new Blob([data], {
|
|
63
|
+
type: "text/csv;charset=utf-8;"
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function listToCsvFile(list, fileName = "list", map) {
|
|
67
|
+
if (!document.createElement && !navigator.msSaveBlob) {
|
|
68
|
+
throw new Error(`
|
|
69
|
+
Can not export to file without document/navigator msSaveBlob functionality.
|
|
70
|
+
Use listToCsvBlob and handle file creation on your side instead.
|
|
71
|
+
`);
|
|
72
|
+
}
|
|
73
|
+
const blob = listToCsvBlob(list, map);
|
|
74
|
+
const finalFileName = `${fileName}.csv`;
|
|
75
|
+
if (navigator.msSaveBlob) {
|
|
76
|
+
navigator.msSaveBlob(blob, finalFileName);
|
|
77
|
+
} else {
|
|
78
|
+
const link = document.createElement("a");
|
|
79
|
+
if (link.download !== void 0) {
|
|
80
|
+
const url = URL.createObjectURL(blob);
|
|
81
|
+
link.setAttribute("href", url);
|
|
82
|
+
link.setAttribute("download", finalFileName);
|
|
83
|
+
link.style.visibility = "hidden";
|
|
84
|
+
document.body.appendChild(link);
|
|
85
|
+
link.click();
|
|
86
|
+
document.body.removeChild(link);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
30
90
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["const argIsRecord = (arg: unknown): arg is Record<string, string> => !!arg && arg instanceof Map === false;\n// https://github.com/BubbleBear/list2csv/blob/master/src/index.ts\nexport function list2csv(\n list: Record<string, string>[],\n map: Record<string, string> | Map<string, string> | undefined,\n): string {\n let headerMap: Map<string, string> | undefined;\n\n if (argIsRecord(map)) {\n headerMap = new Map(Object.entries(map));\n } else {\n headerMap = map;\n }\n\n const columns = (headerMap && Array.from(headerMap.keys())) || Object.keys(list[0] || {});\n\n const header = columns.map((v) => `\"${headerMap?.get(v) ?? v}\"`).join(',');\n\n const content = list\n .map((item) =>\n columns\n .map((key) => {\n let finalCell;\n const cell = item[key];\n finalCell = cell;\n if (typeof cell === 'string') finalCell = cell.replace(/\"/g, '\"\"');\n return `\"${finalCell}\"`;\n })\n .join(','),\n )\n .join('\\r\\n');\n\n return `${header}\\r\\n${content}`;\n}\n\nexport function listToCsvBlob(\n list: Record<string, string>[],\n map?: Record<string, string> | Map<string, string>,\n): Blob {\n const data = list2csv(list, map);\n return new Blob([data], {\n type: 'text/csv;charset=utf-8;',\n });\n}\n\nexport function listToCsvFile(\n list: Record<string, string>[],\n fileName = 'list',\n map?: Record<string, string> | Map<string, string>,\n): void {\n if (!document.createElement && !navigator.msSaveBlob) {\n throw new Error(`\n Can not export to file without document/navigator msSaveBlob functionality.\n Use listToCsvBlob and handle file creation on your side instead.\n `);\n }\n const blob = listToCsvBlob(list, map);\n const finalFileName = `${fileName}.csv`;\n\n if (navigator.msSaveBlob) {\n // IE 10+\n navigator.msSaveBlob(blob, finalFileName);\n } else {\n const link = document.createElement('a');\n if (link.download !== undefined) {\n // feature detection\n // Browsers that support HTML5 download attribute\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', finalFileName);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,MAAM,cAAc,CAAC,QAAgD,CAAC,CAAC,OAAO,eAAe,QAAQ;AAE9F,SAAS,SACd,MACA,KACQ;AACR,MAAI;AAEJ,MAAI,YAAY,GAAG,GAAG;AACpB,gBAAY,IAAI,IAAI,OAAO,QAAQ,GAAG,CAAC;AAAA,EACzC,OAAO;AACL,gBAAY;AAAA,EACd;AAEA,QAAM,UAAW,aAAa,MAAM,KAAK,UAAU,KAAK,CAAC,KAAM,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AAExF,QAAM,SAAS,QAAQ,IAAI,CAAC,MAAM,IAAI,WAAW,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,GAAG;AAEzE,QAAM,UAAU,KACb;AAAA,IAAI,CAAC,SACJ,QACG,IAAI,CAAC,QAAQ;AACZ,UAAI;AACJ,YAAM,OAAO,KAAK,GAAG;AACrB,kBAAY;AACZ,UAAI,OAAO,SAAS;AAAU,oBAAY,KAAK,QAAQ,MAAM,IAAI;AACjE,aAAO,IAAI;AAAA,IACb,CAAC,EACA,KAAK,GAAG;AAAA,EACb,EACC,KAAK,MAAM;AAEd,SAAO,GAAG;AAAA,EAAa;AACzB;AAEO,SAAS,cACd,MACA,KACM;AACN,QAAM,OAAO,SAAS,MAAM,GAAG;AAC/B,SAAO,IAAI,KAAK,CAAC,IAAI,GAAG;AAAA,IACtB,MAAM;AAAA,EACR,CAAC;AACH;AAEO,SAAS,cACd,MACA,WAAW,QACX,KACM;AACN,MAAI,CAAC,SAAS,iBAAiB,CAAC,UAAU,YAAY;AACpD,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA,MAGd;AAAA,EACJ;AACA,QAAM,OAAO,cAAc,MAAM,GAAG;AACpC,QAAM,gBAAgB,GAAG;AAEzB,MAAI,UAAU,YAAY;AAExB,cAAU,WAAW,MAAM,aAAa;AAAA,EAC1C,OAAO;AACL,UAAM,OAAO,SAAS,cAAc,GAAG;AACvC,QAAI,KAAK,aAAa,QAAW;AAG/B,YAAM,MAAM,IAAI,gBAAgB,IAAI;AACpC,WAAK,aAAa,QAAQ,GAAG;AAC7B,WAAK,aAAa,YAAY,aAAa;AAC3C,WAAK,MAAM,aAAa;AACxB,eAAS,KAAK,YAAY,IAAI;AAC9B,WAAK,MAAM;AACX,eAAS,KAAK,YAAY,IAAI;AAAA,IAChC;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,3 +1,60 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
|
|
2
|
+
const argIsRecord = (arg) => !!arg && arg instanceof Map === false;
|
|
3
|
+
function list2csv(list, map) {
|
|
4
|
+
let headerMap;
|
|
5
|
+
if (argIsRecord(map)) {
|
|
6
|
+
headerMap = new Map(Object.entries(map));
|
|
7
|
+
} else {
|
|
8
|
+
headerMap = map;
|
|
9
|
+
}
|
|
10
|
+
const columns = headerMap && Array.from(headerMap.keys()) || Object.keys(list[0] || {});
|
|
11
|
+
const header = columns.map((v) => `"${headerMap?.get(v) ?? v}"`).join(",");
|
|
12
|
+
const content = list.map(
|
|
13
|
+
(item) => columns.map((key) => {
|
|
14
|
+
let finalCell;
|
|
15
|
+
const cell = item[key];
|
|
16
|
+
finalCell = cell;
|
|
17
|
+
if (typeof cell === "string")
|
|
18
|
+
finalCell = cell.replace(/"/g, '""');
|
|
19
|
+
return `"${finalCell}"`;
|
|
20
|
+
}).join(",")
|
|
21
|
+
).join("\r\n");
|
|
22
|
+
return `${header}\r
|
|
23
|
+
${content}`;
|
|
24
|
+
}
|
|
25
|
+
function listToCsvBlob(list, map) {
|
|
26
|
+
const data = list2csv(list, map);
|
|
27
|
+
return new Blob([data], {
|
|
28
|
+
type: "text/csv;charset=utf-8;"
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function listToCsvFile(list, fileName = "list", map) {
|
|
32
|
+
if (!document.createElement && !navigator.msSaveBlob) {
|
|
33
|
+
throw new Error(`
|
|
34
|
+
Can not export to file without document/navigator msSaveBlob functionality.
|
|
35
|
+
Use listToCsvBlob and handle file creation on your side instead.
|
|
36
|
+
`);
|
|
37
|
+
}
|
|
38
|
+
const blob = listToCsvBlob(list, map);
|
|
39
|
+
const finalFileName = `${fileName}.csv`;
|
|
40
|
+
if (navigator.msSaveBlob) {
|
|
41
|
+
navigator.msSaveBlob(blob, finalFileName);
|
|
42
|
+
} else {
|
|
43
|
+
const link = document.createElement("a");
|
|
44
|
+
if (link.download !== void 0) {
|
|
45
|
+
const url = URL.createObjectURL(blob);
|
|
46
|
+
link.setAttribute("href", url);
|
|
47
|
+
link.setAttribute("download", finalFileName);
|
|
48
|
+
link.style.visibility = "hidden";
|
|
49
|
+
document.body.appendChild(link);
|
|
50
|
+
link.click();
|
|
51
|
+
document.body.removeChild(link);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export {
|
|
56
|
+
list2csv,
|
|
57
|
+
listToCsvBlob,
|
|
58
|
+
listToCsvFile
|
|
59
|
+
};
|
|
3
60
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACAvB,cAAc;",
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "const argIsRecord = (arg: unknown): arg is Record<string, string> => !!arg && arg instanceof Map === false;\n// https://github.com/BubbleBear/list2csv/blob/master/src/index.ts\nexport function list2csv(\n list: Record<string, string>[],\n map: Record<string, string> | Map<string, string> | undefined,\n): string {\n let headerMap: Map<string, string> | undefined;\n\n if (argIsRecord(map)) {\n headerMap = new Map(Object.entries(map));\n } else {\n headerMap = map;\n }\n\n const columns = (headerMap && Array.from(headerMap.keys())) || Object.keys(list[0] || {});\n\n const header = columns.map((v) => `\"${headerMap?.get(v) ?? v}\"`).join(',');\n\n const content = list\n .map((item) =>\n columns\n .map((key) => {\n let finalCell;\n const cell = item[key];\n finalCell = cell;\n if (typeof cell === 'string') finalCell = cell.replace(/\"/g, '\"\"');\n return `\"${finalCell}\"`;\n })\n .join(','),\n )\n .join('\\r\\n');\n\n return `${header}\\r\\n${content}`;\n}\n\nexport function listToCsvBlob(\n list: Record<string, string>[],\n map?: Record<string, string> | Map<string, string>,\n): Blob {\n const data = list2csv(list, map);\n return new Blob([data], {\n type: 'text/csv;charset=utf-8;',\n });\n}\n\nexport function listToCsvFile(\n list: Record<string, string>[],\n fileName = 'list',\n map?: Record<string, string> | Map<string, string>,\n): void {\n if (!document.createElement && !navigator.msSaveBlob) {\n throw new Error(`\n Can not export to file without document/navigator msSaveBlob functionality.\n Use listToCsvBlob and handle file creation on your side instead.\n `);\n }\n const blob = listToCsvBlob(list, map);\n const finalFileName = `${fileName}.csv`;\n\n if (navigator.msSaveBlob) {\n // IE 10+\n navigator.msSaveBlob(blob, finalFileName);\n } else {\n const link = document.createElement('a');\n if (link.download !== undefined) {\n // feature detection\n // Browsers that support HTML5 download attribute\n const url = URL.createObjectURL(blob);\n link.setAttribute('href', url);\n link.setAttribute('download', finalFileName);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,MAAM,cAAc,CAAC,QAAgD,CAAC,CAAC,OAAO,eAAe,QAAQ;AAE9F,SAAS,SACd,MACA,KACQ;AACR,MAAI;AAEJ,MAAI,YAAY,GAAG,GAAG;AACpB,gBAAY,IAAI,IAAI,OAAO,QAAQ,GAAG,CAAC;AAAA,EACzC,OAAO;AACL,gBAAY;AAAA,EACd;AAEA,QAAM,UAAW,aAAa,MAAM,KAAK,UAAU,KAAK,CAAC,KAAM,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AAExF,QAAM,SAAS,QAAQ,IAAI,CAAC,MAAM,IAAI,WAAW,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,GAAG;AAEzE,QAAM,UAAU,KACb;AAAA,IAAI,CAAC,SACJ,QACG,IAAI,CAAC,QAAQ;AACZ,UAAI;AACJ,YAAM,OAAO,KAAK,GAAG;AACrB,kBAAY;AACZ,UAAI,OAAO,SAAS;AAAU,oBAAY,KAAK,QAAQ,MAAM,IAAI;AACjE,aAAO,IAAI;AAAA,IACb,CAAC,EACA,KAAK,GAAG;AAAA,EACb,EACC,KAAK,MAAM;AAEd,SAAO,GAAG;AAAA,EAAa;AACzB;AAEO,SAAS,cACd,MACA,KACM;AACN,QAAM,OAAO,SAAS,MAAM,GAAG;AAC/B,SAAO,IAAI,KAAK,CAAC,IAAI,GAAG;AAAA,IACtB,MAAM;AAAA,EACR,CAAC;AACH;AAEO,SAAS,cACd,MACA,WAAW,QACX,KACM;AACN,MAAI,CAAC,SAAS,iBAAiB,CAAC,UAAU,YAAY;AACpD,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA,MAGd;AAAA,EACJ;AACA,QAAM,OAAO,cAAc,MAAM,GAAG;AACpC,QAAM,gBAAgB,GAAG;AAEzB,MAAI,UAAU,YAAY;AAExB,cAAU,WAAW,MAAM,aAAa;AAAA,EAC1C,OAAO;AACL,UAAM,OAAO,SAAS,cAAc,GAAG;AACvC,QAAI,KAAK,aAAa,QAAW;AAG/B,YAAM,MAAM,IAAI,gBAAgB,IAAI;AACpC,WAAK,aAAa,QAAQ,GAAG;AAC7B,WAAK,aAAa,YAAY,aAAa;AAC3C,WAAK,MAAM,aAAa;AACxB,eAAS,KAAK,YAAY,IAAI;AAC9B,WAAK,MAAM;AACX,eAAS,KAAK,YAAY,IAAI;AAAA,IAChC;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function list2csv(list: Record<string, string>[], map: Record<string, string> | Map<string, string> | undefined): string;
|
|
2
|
+
export declare function listToCsvBlob(list: Record<string, string>[], map?: Record<string, string> | Map<string, string>): Blob;
|
|
3
|
+
export declare function listToCsvFile(list: Record<string, string>[], fileName?: string, map?: Record<string, string> | Map<string, string>): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elliemae/ds-csv-converter",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.33.0-next.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "ICE MT - Dimsum - CSV converting utilities",
|
|
6
6
|
"files": [
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@elliemae/pui-cli": "~9.0.0-next.31",
|
|
36
36
|
"styled-components": "~5.3.9",
|
|
37
|
-
"@elliemae/ds-monorepo-devops": "3.
|
|
37
|
+
"@elliemae/ds-monorepo-devops": "3.33.0-next.1"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"react": "^17.0.2",
|
|
@@ -44,15 +44,14 @@
|
|
|
44
44
|
"access": "public",
|
|
45
45
|
"typeSafety": false
|
|
46
46
|
},
|
|
47
|
-
"dependencies": {
|
|
48
|
-
"@elliemae/ds-legacy-csv-converter": "^1.0.5"
|
|
49
|
-
},
|
|
50
47
|
"scripts": {
|
|
51
48
|
"test": "exit 0 | echo",
|
|
52
49
|
"lint": "exit 0 | echo",
|
|
53
50
|
"eslint:fix": "exit 0 | echo",
|
|
54
51
|
"dts": "exit 0 | echo",
|
|
55
52
|
"build": "cross-env NODE_ENV=production node ../../../scripts/build/build.mjs",
|
|
53
|
+
"dev:build": "pnpm --filter {.}... build",
|
|
54
|
+
"dev:install": "pnpm --filter {.}... i --no-lockfile && pnpm run dev:build",
|
|
56
55
|
"checkDeps": "exit 0 | echo",
|
|
57
56
|
"dev": "cross-env NODE_ENV=development node ../../../scripts/build/build.mjs --watch"
|
|
58
57
|
}
|