@elliemae/ds-csv-converter 1.57.1-rc.0 → 2.0.0-alpha.11

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 CHANGED
@@ -2,13 +2,29 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var argIsMap = function argIsMap(arg) {
6
- return arg && arg instanceof Map === false;
7
- }; // https://github.com/BubbleBear/list2csv/blob/master/src/index.ts
5
+ require('core-js/modules/esnext.map.delete-all.js');
6
+ require('core-js/modules/esnext.map.every.js');
7
+ require('core-js/modules/esnext.map.filter.js');
8
+ require('core-js/modules/esnext.map.find.js');
9
+ require('core-js/modules/esnext.map.find-key.js');
10
+ require('core-js/modules/esnext.map.includes.js');
11
+ require('core-js/modules/esnext.map.key-of.js');
12
+ require('core-js/modules/esnext.map.map-keys.js');
13
+ require('core-js/modules/esnext.map.map-values.js');
14
+ require('core-js/modules/esnext.map.merge.js');
15
+ require('core-js/modules/esnext.map.reduce.js');
16
+ require('core-js/modules/esnext.map.some.js');
17
+ require('core-js/modules/esnext.map.update.js');
18
+ require('core-js/modules/web.dom-collections.iterator.js');
19
+ require('core-js/modules/es.string.replace.js');
20
+ require('core-js/modules/web.url.js');
21
+ require('core-js/modules/web.url-search-params.js');
22
+
23
+ const argIsMap = arg => arg && arg instanceof Map === false; // https://github.com/BubbleBear/list2csv/blob/master/src/index.ts
8
24
 
9
25
 
10
26
  function list2csv(list, map) {
11
- var headerMap;
27
+ let headerMap;
12
28
 
13
29
  if (argIsMap(map)) {
14
30
  headerMap = map;
@@ -16,48 +32,41 @@ function list2csv(list, map) {
16
32
  headerMap = new Map(Object.entries(map));
17
33
  }
18
34
 
19
- var columns = headerMap && Array.from(headerMap.keys()) || Object.keys(list[0] || {});
20
- var header = columns.map(function (v) {
21
- return "\"".concat(headerMap ? headerMap.get(v) : v, "\"");
22
- }).join(',');
23
- var content = list.map(function (item) {
24
- return columns.map(function (key) {
25
- var finalCell;
26
- var cell = item[key];
27
- finalCell = cell;
28
- if (typeof cell === 'string') finalCell = cell.replace(/"/g, '""');
29
- return "\"".concat(finalCell, "\"");
30
- }).join(',');
31
- }).join('\r\n');
35
+ const columns = headerMap && Array.from(headerMap.keys()) || Object.keys(list[0] || {});
36
+ const header = columns.map(v => "\"".concat(headerMap ? headerMap.get(v) : v, "\"")).join(',');
37
+ const content = list.map(item => columns.map(key => {
38
+ let finalCell;
39
+ const cell = item[key];
40
+ finalCell = cell;
41
+ if (typeof cell === 'string') finalCell = cell.replace(/"/g, '""');
42
+ return "\"".concat(finalCell, "\"");
43
+ }).join(',')).join('\r\n');
32
44
  return "".concat(header, "\r\n").concat(content);
33
45
  }
34
46
  function listToCsvBlob(list, map) {
35
- var data = list2csv(list, map);
47
+ const data = list2csv(list, map);
36
48
  return new Blob([data], {
37
49
  type: 'text/csv;charset=utf-8;'
38
50
  });
39
51
  }
40
- function listToCsvFile(list) {
41
- var fileName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'list';
42
- var map = arguments.length > 2 ? arguments[2] : undefined;
43
-
52
+ function listToCsvFile(list, fileName = 'list', map) {
44
53
  if (!document.createElement && !navigator.msSaveBlob) {
45
54
  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 ");
46
55
  }
47
56
 
48
- var blob = listToCsvBlob(list, map);
49
- var finalFileName = "".concat(fileName, ".csv");
57
+ const blob = listToCsvBlob(list, map);
58
+ const finalFileName = "".concat(fileName, ".csv");
50
59
 
51
60
  if (navigator.msSaveBlob) {
52
61
  // IE 10+
53
62
  navigator.msSaveBlob(blob, finalFileName);
54
63
  } else {
55
- var link = document.createElement('a');
64
+ const link = document.createElement('a');
56
65
 
57
66
  if (link.download !== undefined) {
58
67
  // feature detection
59
68
  // Browsers that support HTML5 download attribute
60
- var url = URL.createObjectURL(blob);
69
+ const url = URL.createObjectURL(blob);
61
70
  link.setAttribute('href', url);
62
71
  link.setAttribute('download', finalFileName);
63
72
  link.style.visibility = 'hidden';
@@ -71,4 +80,3 @@ function listToCsvFile(list) {
71
80
  exports.list2csv = list2csv;
72
81
  exports.listToCsvBlob = listToCsvBlob;
73
82
  exports.listToCsvFile = listToCsvFile;
74
- //# sourceMappingURL=index.js.map
package/esm/index.js CHANGED
@@ -1,10 +1,26 @@
1
- var argIsMap = function argIsMap(arg) {
2
- return arg && arg instanceof Map === false;
3
- }; // https://github.com/BubbleBear/list2csv/blob/master/src/index.ts
1
+ import 'core-js/modules/esnext.map.delete-all.js';
2
+ import 'core-js/modules/esnext.map.every.js';
3
+ import 'core-js/modules/esnext.map.filter.js';
4
+ import 'core-js/modules/esnext.map.find.js';
5
+ import 'core-js/modules/esnext.map.find-key.js';
6
+ import 'core-js/modules/esnext.map.includes.js';
7
+ import 'core-js/modules/esnext.map.key-of.js';
8
+ import 'core-js/modules/esnext.map.map-keys.js';
9
+ import 'core-js/modules/esnext.map.map-values.js';
10
+ import 'core-js/modules/esnext.map.merge.js';
11
+ import 'core-js/modules/esnext.map.reduce.js';
12
+ import 'core-js/modules/esnext.map.some.js';
13
+ import 'core-js/modules/esnext.map.update.js';
14
+ import 'core-js/modules/web.dom-collections.iterator.js';
15
+ import 'core-js/modules/es.string.replace.js';
16
+ import 'core-js/modules/web.url.js';
17
+ import 'core-js/modules/web.url-search-params.js';
18
+
19
+ const argIsMap = arg => arg && arg instanceof Map === false; // https://github.com/BubbleBear/list2csv/blob/master/src/index.ts
4
20
 
5
21
 
6
22
  function list2csv(list, map) {
7
- var headerMap;
23
+ let headerMap;
8
24
 
9
25
  if (argIsMap(map)) {
10
26
  headerMap = map;
@@ -12,48 +28,41 @@ function list2csv(list, map) {
12
28
  headerMap = new Map(Object.entries(map));
13
29
  }
14
30
 
15
- var columns = headerMap && Array.from(headerMap.keys()) || Object.keys(list[0] || {});
16
- var header = columns.map(function (v) {
17
- return "\"".concat(headerMap ? headerMap.get(v) : v, "\"");
18
- }).join(',');
19
- var content = list.map(function (item) {
20
- return columns.map(function (key) {
21
- var finalCell;
22
- var cell = item[key];
23
- finalCell = cell;
24
- if (typeof cell === 'string') finalCell = cell.replace(/"/g, '""');
25
- return "\"".concat(finalCell, "\"");
26
- }).join(',');
27
- }).join('\r\n');
31
+ const columns = headerMap && Array.from(headerMap.keys()) || Object.keys(list[0] || {});
32
+ const header = columns.map(v => "\"".concat(headerMap ? headerMap.get(v) : v, "\"")).join(',');
33
+ const content = list.map(item => columns.map(key => {
34
+ let finalCell;
35
+ const cell = item[key];
36
+ finalCell = cell;
37
+ if (typeof cell === 'string') finalCell = cell.replace(/"/g, '""');
38
+ return "\"".concat(finalCell, "\"");
39
+ }).join(',')).join('\r\n');
28
40
  return "".concat(header, "\r\n").concat(content);
29
41
  }
30
42
  function listToCsvBlob(list, map) {
31
- var data = list2csv(list, map);
43
+ const data = list2csv(list, map);
32
44
  return new Blob([data], {
33
45
  type: 'text/csv;charset=utf-8;'
34
46
  });
35
47
  }
36
- function listToCsvFile(list) {
37
- var fileName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'list';
38
- var map = arguments.length > 2 ? arguments[2] : undefined;
39
-
48
+ function listToCsvFile(list, fileName = 'list', map) {
40
49
  if (!document.createElement && !navigator.msSaveBlob) {
41
50
  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 ");
42
51
  }
43
52
 
44
- var blob = listToCsvBlob(list, map);
45
- var finalFileName = "".concat(fileName, ".csv");
53
+ const blob = listToCsvBlob(list, map);
54
+ const finalFileName = "".concat(fileName, ".csv");
46
55
 
47
56
  if (navigator.msSaveBlob) {
48
57
  // IE 10+
49
58
  navigator.msSaveBlob(blob, finalFileName);
50
59
  } else {
51
- var link = document.createElement('a');
60
+ const link = document.createElement('a');
52
61
 
53
62
  if (link.download !== undefined) {
54
63
  // feature detection
55
64
  // Browsers that support HTML5 download attribute
56
- var url = URL.createObjectURL(blob);
65
+ const url = URL.createObjectURL(blob);
57
66
  link.setAttribute('href', url);
58
67
  link.setAttribute('download', finalFileName);
59
68
  link.style.visibility = 'hidden';
@@ -65,4 +74,3 @@ function listToCsvFile(list) {
65
74
  }
66
75
 
67
76
  export { list2csv, listToCsvBlob, listToCsvFile };
68
- //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,11 +1,27 @@
1
1
  {
2
2
  "name": "@elliemae/ds-csv-converter",
3
- "version": "1.57.1-rc.0",
3
+ "version": "2.0.0-alpha.11",
4
4
  "license": "MIT",
5
- "description": "Ellie Mae - Dim Sum - CSV converting utilities",
6
- "main": "cjs/index.js",
7
- "module": "esm/index.js",
5
+ "description": "ICE MT - Dimsum - CSV converting utilities",
6
+ "module": "./esm/index.js",
7
+ "main": "./cjs/index.js",
8
+ "types": "./types/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./esm/index.js",
12
+ "require": "./cjs/index.js"
13
+ }
14
+ },
8
15
  "sideEffects": [],
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://git.elliemae.io/platform-ui/dimsum.git"
19
+ },
20
+ "engines": {
21
+ "npm": ">=7",
22
+ "node": ">=14"
23
+ },
24
+ "author": "ICE MT",
9
25
  "scripts": {
10
26
  "prebuild": "exit 0",
11
27
  "predev": "exit 0",
@@ -14,6 +30,7 @@
14
30
  },
15
31
  "publishConfig": {
16
32
  "access": "public",
17
- "directory": "dist"
33
+ "directory": "dist",
34
+ "generateSubmodules": true
18
35
  }
19
36
  }
@@ -0,0 +1,3 @@
1
+ export declare function list2csv(list: Record<string, string>[], map: Record<string, string> | Map<string, string>): 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 | undefined, map: Record<string, string> | Map<string, string>): void;
package/cjs/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/index.tsx"],"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"],"names":["argIsMap","arg","Map","list2csv","list","map","headerMap","Object","entries","columns","Array","from","keys","header","v","get","join","content","item","key","finalCell","cell","replace","listToCsvBlob","data","Blob","type","listToCsvFile","fileName","document","createElement","navigator","msSaveBlob","Error","blob","finalFileName","link","download","undefined","url","URL","createObjectURL","setAttribute","style","visibility","body","appendChild","click","removeChild"],"mappings":"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"}
package/esm/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/index.tsx"],"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"],"names":["argIsMap","arg","Map","list2csv","list","map","headerMap","Object","entries","columns","Array","from","keys","header","v","get","join","content","item","key","finalCell","cell","replace","listToCsvBlob","data","Blob","type","listToCsvFile","fileName","document","createElement","navigator","msSaveBlob","Error","blob","finalFileName","link","download","undefined","url","URL","createObjectURL","setAttribute","style","visibility","body","appendChild","click","removeChild"],"mappings":"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"}