@elliemae/ds-csv-converter 2.2.0-alpha.3 → 3.0.0-next.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/cjs/index.js +58 -57
- package/esm/index.js +52 -28
- package/package.json +1 -1
- package/cjs/index.js.map +0 -7
- package/esm/index.js.map +0 -7
package/cjs/index.js
CHANGED
|
@@ -1,87 +1,88 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
__export(src_exports, {
|
|
30
|
-
list2csv: () => list2csv,
|
|
31
|
-
listToCsvBlob: () => listToCsvBlob,
|
|
32
|
-
listToCsvFile: () => listToCsvFile
|
|
33
|
-
});
|
|
34
|
-
var React = __toESM(require("react"));
|
|
35
|
-
const argIsMap = (arg) => arg && arg instanceof Map === false;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
require('core-js/modules/esnext.map.delete-all.js');
|
|
6
|
+
require('core-js/modules/esnext.map.emplace.js');
|
|
7
|
+
require('core-js/modules/esnext.map.every.js');
|
|
8
|
+
require('core-js/modules/esnext.map.filter.js');
|
|
9
|
+
require('core-js/modules/esnext.map.find.js');
|
|
10
|
+
require('core-js/modules/esnext.map.find-key.js');
|
|
11
|
+
require('core-js/modules/esnext.map.includes.js');
|
|
12
|
+
require('core-js/modules/esnext.map.key-of.js');
|
|
13
|
+
require('core-js/modules/esnext.map.map-keys.js');
|
|
14
|
+
require('core-js/modules/esnext.map.map-values.js');
|
|
15
|
+
require('core-js/modules/esnext.map.merge.js');
|
|
16
|
+
require('core-js/modules/esnext.map.reduce.js');
|
|
17
|
+
require('core-js/modules/esnext.map.some.js');
|
|
18
|
+
require('core-js/modules/esnext.map.update.js');
|
|
19
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
20
|
+
require('core-js/modules/esnext.async-iterator.map.js');
|
|
21
|
+
require('core-js/modules/esnext.iterator.map.js');
|
|
22
|
+
require('core-js/modules/es.string.replace.js');
|
|
23
|
+
require('core-js/modules/web.url.js');
|
|
24
|
+
require('core-js/modules/web.url-search-params.js');
|
|
25
|
+
|
|
26
|
+
const argIsMap = arg => arg && arg instanceof Map === false; // https://github.com/BubbleBear/list2csv/blob/master/src/index.ts
|
|
27
|
+
|
|
28
|
+
|
|
36
29
|
function list2csv(list, map) {
|
|
37
30
|
let headerMap;
|
|
31
|
+
|
|
38
32
|
if (argIsMap(map)) {
|
|
39
33
|
headerMap = map;
|
|
40
34
|
} else {
|
|
41
35
|
headerMap = new Map(Object.entries(map));
|
|
42
36
|
}
|
|
37
|
+
|
|
43
38
|
const columns = headerMap && Array.from(headerMap.keys()) || Object.keys(list[0] || {});
|
|
44
|
-
const header = columns.map(
|
|
45
|
-
const content = list.map(
|
|
39
|
+
const header = columns.map(v => "\"".concat(headerMap ? headerMap.get(v) : v, "\"")).join(',');
|
|
40
|
+
const content = list.map(item => columns.map(key => {
|
|
46
41
|
let finalCell;
|
|
47
42
|
const cell = item[key];
|
|
48
43
|
finalCell = cell;
|
|
49
|
-
if (typeof cell ===
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return `${header}\r
|
|
54
|
-
${content}`;
|
|
44
|
+
if (typeof cell === 'string') finalCell = cell.replace(/"/g, '""');
|
|
45
|
+
return "\"".concat(finalCell, "\"");
|
|
46
|
+
}).join(',')).join('\r\n');
|
|
47
|
+
return "".concat(header, "\r\n").concat(content);
|
|
55
48
|
}
|
|
56
49
|
function listToCsvBlob(list, map) {
|
|
57
50
|
const data = list2csv(list, map);
|
|
58
51
|
return new Blob([data], {
|
|
59
|
-
type:
|
|
52
|
+
type: 'text/csv;charset=utf-8;'
|
|
60
53
|
});
|
|
61
54
|
}
|
|
62
|
-
function listToCsvFile(list
|
|
55
|
+
function listToCsvFile(list) {
|
|
56
|
+
let fileName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'list';
|
|
57
|
+
let map = arguments.length > 2 ? arguments[2] : undefined;
|
|
58
|
+
|
|
63
59
|
if (!document.createElement && !navigator.msSaveBlob) {
|
|
64
|
-
throw new Error(
|
|
65
|
-
Can not export to file without document/navigator msSaveBlob functionality.
|
|
66
|
-
Use listToCsvBlob and handle file creation on your side instead.
|
|
67
|
-
`);
|
|
60
|
+
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 ");
|
|
68
61
|
}
|
|
62
|
+
|
|
69
63
|
const blob = listToCsvBlob(list, map);
|
|
70
|
-
const finalFileName =
|
|
64
|
+
const finalFileName = "".concat(fileName, ".csv");
|
|
65
|
+
|
|
71
66
|
if (navigator.msSaveBlob) {
|
|
67
|
+
// IE 10+
|
|
72
68
|
navigator.msSaveBlob(blob, finalFileName);
|
|
73
69
|
} else {
|
|
74
|
-
const link = document.createElement(
|
|
75
|
-
|
|
70
|
+
const link = document.createElement('a');
|
|
71
|
+
|
|
72
|
+
if (link.download !== undefined) {
|
|
73
|
+
// feature detection
|
|
74
|
+
// Browsers that support HTML5 download attribute
|
|
76
75
|
const url = URL.createObjectURL(blob);
|
|
77
|
-
link.setAttribute(
|
|
78
|
-
link.setAttribute(
|
|
79
|
-
link.style.visibility =
|
|
76
|
+
link.setAttribute('href', url);
|
|
77
|
+
link.setAttribute('download', finalFileName);
|
|
78
|
+
link.style.visibility = 'hidden';
|
|
80
79
|
document.body.appendChild(link);
|
|
81
80
|
link.click();
|
|
82
81
|
document.body.removeChild(link);
|
|
83
82
|
}
|
|
84
83
|
}
|
|
85
84
|
}
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
|
|
86
|
+
exports.list2csv = list2csv;
|
|
87
|
+
exports.listToCsvBlob = listToCsvBlob;
|
|
88
|
+
exports.listToCsvFile = listToCsvFile;
|
package/esm/index.js
CHANGED
|
@@ -1,58 +1,82 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import 'core-js/modules/esnext.map.delete-all.js';
|
|
2
|
+
import 'core-js/modules/esnext.map.emplace.js';
|
|
3
|
+
import 'core-js/modules/esnext.map.every.js';
|
|
4
|
+
import 'core-js/modules/esnext.map.filter.js';
|
|
5
|
+
import 'core-js/modules/esnext.map.find.js';
|
|
6
|
+
import 'core-js/modules/esnext.map.find-key.js';
|
|
7
|
+
import 'core-js/modules/esnext.map.includes.js';
|
|
8
|
+
import 'core-js/modules/esnext.map.key-of.js';
|
|
9
|
+
import 'core-js/modules/esnext.map.map-keys.js';
|
|
10
|
+
import 'core-js/modules/esnext.map.map-values.js';
|
|
11
|
+
import 'core-js/modules/esnext.map.merge.js';
|
|
12
|
+
import 'core-js/modules/esnext.map.reduce.js';
|
|
13
|
+
import 'core-js/modules/esnext.map.some.js';
|
|
14
|
+
import 'core-js/modules/esnext.map.update.js';
|
|
15
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
16
|
+
import 'core-js/modules/esnext.async-iterator.map.js';
|
|
17
|
+
import 'core-js/modules/esnext.iterator.map.js';
|
|
18
|
+
import 'core-js/modules/es.string.replace.js';
|
|
19
|
+
import 'core-js/modules/web.url.js';
|
|
20
|
+
import 'core-js/modules/web.url-search-params.js';
|
|
21
|
+
|
|
22
|
+
const argIsMap = arg => arg && arg instanceof Map === false; // https://github.com/BubbleBear/list2csv/blob/master/src/index.ts
|
|
23
|
+
|
|
24
|
+
|
|
3
25
|
function list2csv(list, map) {
|
|
4
26
|
let headerMap;
|
|
27
|
+
|
|
5
28
|
if (argIsMap(map)) {
|
|
6
29
|
headerMap = map;
|
|
7
30
|
} else {
|
|
8
31
|
headerMap = new Map(Object.entries(map));
|
|
9
32
|
}
|
|
33
|
+
|
|
10
34
|
const columns = headerMap && Array.from(headerMap.keys()) || Object.keys(list[0] || {});
|
|
11
|
-
const header = columns.map(
|
|
12
|
-
const content = list.map(
|
|
35
|
+
const header = columns.map(v => "\"".concat(headerMap ? headerMap.get(v) : v, "\"")).join(',');
|
|
36
|
+
const content = list.map(item => columns.map(key => {
|
|
13
37
|
let finalCell;
|
|
14
38
|
const cell = item[key];
|
|
15
39
|
finalCell = cell;
|
|
16
|
-
if (typeof cell ===
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return `${header}\r
|
|
21
|
-
${content}`;
|
|
40
|
+
if (typeof cell === 'string') finalCell = cell.replace(/"/g, '""');
|
|
41
|
+
return "\"".concat(finalCell, "\"");
|
|
42
|
+
}).join(',')).join('\r\n');
|
|
43
|
+
return "".concat(header, "\r\n").concat(content);
|
|
22
44
|
}
|
|
23
45
|
function listToCsvBlob(list, map) {
|
|
24
46
|
const data = list2csv(list, map);
|
|
25
47
|
return new Blob([data], {
|
|
26
|
-
type:
|
|
48
|
+
type: 'text/csv;charset=utf-8;'
|
|
27
49
|
});
|
|
28
50
|
}
|
|
29
|
-
function listToCsvFile(list
|
|
51
|
+
function listToCsvFile(list) {
|
|
52
|
+
let fileName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'list';
|
|
53
|
+
let map = arguments.length > 2 ? arguments[2] : undefined;
|
|
54
|
+
|
|
30
55
|
if (!document.createElement && !navigator.msSaveBlob) {
|
|
31
|
-
throw new Error(
|
|
32
|
-
Can not export to file without document/navigator msSaveBlob functionality.
|
|
33
|
-
Use listToCsvBlob and handle file creation on your side instead.
|
|
34
|
-
`);
|
|
56
|
+
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 ");
|
|
35
57
|
}
|
|
58
|
+
|
|
36
59
|
const blob = listToCsvBlob(list, map);
|
|
37
|
-
const finalFileName =
|
|
60
|
+
const finalFileName = "".concat(fileName, ".csv");
|
|
61
|
+
|
|
38
62
|
if (navigator.msSaveBlob) {
|
|
63
|
+
// IE 10+
|
|
39
64
|
navigator.msSaveBlob(blob, finalFileName);
|
|
40
65
|
} else {
|
|
41
|
-
const link = document.createElement(
|
|
42
|
-
|
|
66
|
+
const link = document.createElement('a');
|
|
67
|
+
|
|
68
|
+
if (link.download !== undefined) {
|
|
69
|
+
// feature detection
|
|
70
|
+
// Browsers that support HTML5 download attribute
|
|
43
71
|
const url = URL.createObjectURL(blob);
|
|
44
|
-
link.setAttribute(
|
|
45
|
-
link.setAttribute(
|
|
46
|
-
link.style.visibility =
|
|
72
|
+
link.setAttribute('href', url);
|
|
73
|
+
link.setAttribute('download', finalFileName);
|
|
74
|
+
link.style.visibility = 'hidden';
|
|
47
75
|
document.body.appendChild(link);
|
|
48
76
|
link.click();
|
|
49
77
|
document.body.removeChild(link);
|
|
50
78
|
}
|
|
51
79
|
}
|
|
52
80
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
listToCsvBlob,
|
|
56
|
-
listToCsvFile
|
|
57
|
-
};
|
|
58
|
-
//# sourceMappingURL=index.js.map
|
|
81
|
+
|
|
82
|
+
export { list2csv, listToCsvBlob, listToCsvFile };
|
package/package.json
CHANGED
package/cjs/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/index.tsx", "../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["const argIsMap = (arg): arg is Map<string, string> => arg && arg instanceof Map === false;\n// https://github.com/BubbleBear/list2csv/blob/master/src/index.ts\nexport function list2csv(list: Record<string, string>[], map: Record<string, string> | Map<string, string>): string {\n let headerMap: Map<string, string>;\n\n if (argIsMap(map)) {\n headerMap = map;\n } else {\n headerMap = new Map(Object.entries(map));\n }\n\n const columns = (headerMap && Array.from(headerMap.keys())) || Object.keys(list[0] || {});\n\n const header = columns.map((v) => `\"${headerMap ? 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(list: Record<string, string>[], map: Record<string, string> | Map<string, string>): 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;ACAA,YAAuB;ADAvB,MAAM,WAAW,CAAC,QAAoC,OAAO,eAAe,QAAQ;AAE7E,kBAAkB,MAAgC,KAA2D;AAClH,MAAI;AAEJ,MAAI,SAAS,MAAM;AACjB,gBAAY;AAAA,SACP;AACL,gBAAY,IAAI,IAAI,OAAO,QAAQ;AAAA;AAGrC,QAAM,UAAW,aAAa,MAAM,KAAK,UAAU,WAAY,OAAO,KAAK,KAAK,MAAM;AAEtF,QAAM,SAAS,QAAQ,IAAI,CAAC,MAAM,IAAI,YAAY,UAAU,IAAI,KAAK,MAAM,KAAK;AAEhF,QAAM,UAAU,KACb,IAAI,CAAC,SACJ,QACG,IAAI,CAAC,QAAQ;AACZ,QAAI;AACJ,UAAM,OAAO,KAAK;AAClB,gBAAY;AACZ,QAAI,OAAO,SAAS;AAAU,kBAAY,KAAK,QAAQ,MAAM;AAC7D,WAAO,IAAI;AAAA,KAEZ,KAAK,MAET,KAAK;AAER,SAAO,GAAG;AAAA,EAAa;AAAA;AAGlB,uBAAuB,MAAgC,KAAyD;AACrH,QAAM,OAAO,SAAS,MAAM;AAC5B,SAAO,IAAI,KAAK,CAAC,OAAO;AAAA,IACtB,MAAM;AAAA;AAAA;AAIH,uBACL,MACA,WAAW,QACX,KACM;AACN,MAAI,CAAC,SAAS,iBAAiB,CAAC,UAAU,YAAY;AACpD,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAKlB,QAAM,OAAO,cAAc,MAAM;AACjC,QAAM,gBAAgB,GAAG;AAEzB,MAAI,UAAU,YAAY;AAExB,cAAU,WAAW,MAAM;AAAA,SACtB;AACL,UAAM,OAAO,SAAS,cAAc;AACpC,QAAI,KAAK,aAAa,QAAW;AAG/B,YAAM,MAAM,IAAI,gBAAgB;AAChC,WAAK,aAAa,QAAQ;AAC1B,WAAK,aAAa,YAAY;AAC9B,WAAK,MAAM,aAAa;AACxB,eAAS,KAAK,YAAY;AAC1B,WAAK;AACL,eAAS,KAAK,YAAY;AAAA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/esm/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "const argIsMap = (arg): arg is Map<string, string> => arg && arg instanceof Map === false;\n// https://github.com/BubbleBear/list2csv/blob/master/src/index.ts\nexport function list2csv(list: Record<string, string>[], map: Record<string, string> | Map<string, string>): string {\n let headerMap: Map<string, string>;\n\n if (argIsMap(map)) {\n headerMap = map;\n } else {\n headerMap = new Map(Object.entries(map));\n }\n\n const columns = (headerMap && Array.from(headerMap.keys())) || Object.keys(list[0] || {});\n\n const header = columns.map((v) => `\"${headerMap ? 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(list: Record<string, string>[], map: Record<string, string> | Map<string, string>): 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;ACAA,MAAM,WAAW,CAAC,QAAoC,OAAO,eAAe,QAAQ;AAE7E,kBAAkB,MAAgC,KAA2D;AAClH,MAAI;AAEJ,MAAI,SAAS,MAAM;AACjB,gBAAY;AAAA,SACP;AACL,gBAAY,IAAI,IAAI,OAAO,QAAQ;AAAA;AAGrC,QAAM,UAAW,aAAa,MAAM,KAAK,UAAU,WAAY,OAAO,KAAK,KAAK,MAAM;AAEtF,QAAM,SAAS,QAAQ,IAAI,CAAC,MAAM,IAAI,YAAY,UAAU,IAAI,KAAK,MAAM,KAAK;AAEhF,QAAM,UAAU,KACb,IAAI,CAAC,SACJ,QACG,IAAI,CAAC,QAAQ;AACZ,QAAI;AACJ,UAAM,OAAO,KAAK;AAClB,gBAAY;AACZ,QAAI,OAAO,SAAS;AAAU,kBAAY,KAAK,QAAQ,MAAM;AAC7D,WAAO,IAAI;AAAA,KAEZ,KAAK,MAET,KAAK;AAER,SAAO,GAAG;AAAA,EAAa;AAAA;AAGlB,uBAAuB,MAAgC,KAAyD;AACrH,QAAM,OAAO,SAAS,MAAM;AAC5B,SAAO,IAAI,KAAK,CAAC,OAAO;AAAA,IACtB,MAAM;AAAA;AAAA;AAIH,uBACL,MACA,WAAW,QACX,KACM;AACN,MAAI,CAAC,SAAS,iBAAiB,CAAC,UAAU,YAAY;AACpD,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAKlB,QAAM,OAAO,cAAc,MAAM;AACjC,QAAM,gBAAgB,GAAG;AAEzB,MAAI,UAAU,YAAY;AAExB,cAAU,WAAW,MAAM;AAAA,SACtB;AACL,UAAM,OAAO,SAAS,cAAc;AACpC,QAAI,KAAK,aAAa,QAAW;AAG/B,YAAM,MAAM,IAAI,gBAAgB;AAChC,WAAK,aAAa,QAAQ;AAC1B,WAAK,aAAa,YAAY;AAC9B,WAAK,MAAM,aAAa;AACxB,eAAS,KAAK,YAAY;AAC1B,WAAK;AACL,eAAS,KAAK,YAAY;AAAA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|