@0xtorch/csv 0.0.38 → 0.0.40
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/getCsvRowCount.js +22 -0
- package/_cjs/getCsvRowCount.js.map +1 -0
- package/_cjs/index.js +3 -1
- package/_cjs/index.js.map +1 -1
- package/_cjs/streamCsvToActions.js +6 -4
- package/_cjs/streamCsvToActions.js.map +1 -1
- package/_esm/getCsvRowCount.js +19 -0
- package/_esm/getCsvRowCount.js.map +1 -0
- package/_esm/index.js +1 -0
- package/_esm/index.js.map +1 -1
- package/_esm/streamCsvToActions.js +6 -4
- package/_esm/streamCsvToActions.js.map +1 -1
- package/_types/getCsvRowCount.d.ts +6 -0
- package/_types/getCsvRowCount.d.ts.map +1 -0
- package/_types/index.d.ts +1 -0
- package/_types/index.d.ts.map +1 -1
- package/_types/streamCsvToActions.d.ts +1 -1
- package/_types/streamCsvToActions.d.ts.map +1 -1
- package/getCsvRowCount.ts +27 -0
- package/index.ts +1 -0
- package/package.json +1 -1
- package/streamCsvToActions.ts +7 -5
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCsvRowCount = void 0;
|
|
4
|
+
const papaparse_1 = require("papaparse");
|
|
5
|
+
const getCsvRowCount = async ({ file, }) => {
|
|
6
|
+
let rowCount = 0;
|
|
7
|
+
await new Promise((resolve) => {
|
|
8
|
+
(0, papaparse_1.parse)(file, {
|
|
9
|
+
header: true,
|
|
10
|
+
skipEmptyLines: true,
|
|
11
|
+
complete: () => {
|
|
12
|
+
resolve();
|
|
13
|
+
},
|
|
14
|
+
step: () => {
|
|
15
|
+
rowCount += 1;
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
return rowCount;
|
|
20
|
+
};
|
|
21
|
+
exports.getCsvRowCount = getCsvRowCount;
|
|
22
|
+
//# sourceMappingURL=getCsvRowCount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCsvRowCount.js","sourceRoot":"","sources":["../getCsvRowCount.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAM1B,MAAM,cAAc,GAAG,KAAK,EAAE,EACnC,IAAI,GACqB,EAAmB,EAAE;IAE9C,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,IAAA,iBAAK,EAAC,IAAI,EAAE;YACV,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,GAAG,EAAE;gBACb,OAAO,EAAE,CAAA;YACX,CAAC;YACD,IAAI,EAAE,GAAG,EAAE;gBACT,QAAQ,IAAI,CAAC,CAAA;YACf,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AApBY,QAAA,cAAc,kBAoB1B"}
|
package/_cjs/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.streamCsvToActions = exports.csvFormatSchema = exports.parseRowsToActions = exports.parseCsvText = exports.parseCsvFileToText = exports.parseCsvFileToActions = exports.hasValidHeaderRow = exports.formatCsvRows = exports.detectFileEncoding = void 0;
|
|
3
|
+
exports.streamCsvToActions = exports.csvFormatSchema = exports.parseRowsToActions = exports.parseCsvText = exports.parseCsvFileToText = exports.parseCsvFileToActions = exports.hasValidHeaderRow = exports.getCsvRowCount = exports.formatCsvRows = exports.detectFileEncoding = void 0;
|
|
4
4
|
var detectFileEncoding_1 = require("./detectFileEncoding");
|
|
5
5
|
Object.defineProperty(exports, "detectFileEncoding", { enumerable: true, get: function () { return detectFileEncoding_1.detectFileEncoding; } });
|
|
6
6
|
var formatCsvRows_1 = require("./formatCsvRows");
|
|
7
7
|
Object.defineProperty(exports, "formatCsvRows", { enumerable: true, get: function () { return formatCsvRows_1.formatCsvRows; } });
|
|
8
|
+
var getCsvRowCount_1 = require("./getCsvRowCount");
|
|
9
|
+
Object.defineProperty(exports, "getCsvRowCount", { enumerable: true, get: function () { return getCsvRowCount_1.getCsvRowCount; } });
|
|
8
10
|
var hasValidHeaderRow_1 = require("./hasValidHeaderRow");
|
|
9
11
|
Object.defineProperty(exports, "hasValidHeaderRow", { enumerable: true, get: function () { return hasValidHeaderRow_1.hasValidHeaderRow; } });
|
|
10
12
|
var parseCsvFileToActions_1 = require("./parseCsvFileToActions");
|
package/_cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,iDAA+C;AAAtC,8GAAA,aAAa,OAAA;AACtB,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,iEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,qCAA2C;AAAlC,0GAAA,eAAe,OAAA;AACxB,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,iDAA+C;AAAtC,8GAAA,aAAa,OAAA;AACtB,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,iEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,qCAA2C;AAAlC,0GAAA,eAAe,OAAA;AACxB,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA"}
|
|
@@ -23,7 +23,7 @@ const streamCsvToActions = async ({ file, encoding, format, cryptoes, fiats, sav
|
|
|
23
23
|
complete: () => {
|
|
24
24
|
resolve();
|
|
25
25
|
},
|
|
26
|
-
step: async (result,
|
|
26
|
+
step: async (result, parser) => {
|
|
27
27
|
rowCount += 1;
|
|
28
28
|
const row = recordSchema.parse(result.data);
|
|
29
29
|
const formattedRow = formatRow(row, format.formatter);
|
|
@@ -74,6 +74,7 @@ const streamCsvToActions = async ({ file, encoding, format, cryptoes, fiats, sav
|
|
|
74
74
|
currentRows.push(formattedRow);
|
|
75
75
|
}
|
|
76
76
|
if (actions.length >= chunkSize + 1) {
|
|
77
|
+
parser.pause();
|
|
77
78
|
const lastActionSource = actions[actions.length - 1].source;
|
|
78
79
|
const savingActions = [];
|
|
79
80
|
const remainingActions = [];
|
|
@@ -87,13 +88,14 @@ const streamCsvToActions = async ({ file, encoding, format, cryptoes, fiats, sav
|
|
|
87
88
|
}
|
|
88
89
|
actions = remainingActions;
|
|
89
90
|
try {
|
|
90
|
-
await save(savingActions);
|
|
91
|
+
await save(savingActions, rowCount);
|
|
91
92
|
}
|
|
92
93
|
catch (e) {
|
|
93
94
|
success = false;
|
|
94
95
|
error = e;
|
|
95
|
-
|
|
96
|
+
parser.abort();
|
|
96
97
|
}
|
|
98
|
+
parser.resume();
|
|
97
99
|
}
|
|
98
100
|
},
|
|
99
101
|
});
|
|
@@ -122,7 +124,7 @@ const streamCsvToActions = async ({ file, encoding, format, cryptoes, fiats, sav
|
|
|
122
124
|
}
|
|
123
125
|
if (actions.length > 0) {
|
|
124
126
|
try {
|
|
125
|
-
await save(actions);
|
|
127
|
+
await save(actions, rowCount);
|
|
126
128
|
}
|
|
127
129
|
catch (e) {
|
|
128
130
|
success = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamCsvToActions.js","sourceRoot":"","sources":["../streamCsvToActions.ts"],"names":[],"mappings":";;;AACA,yCAAiC;AACjC,6BAAuB;AACvB,mDAA8C;AAC9C,6DAA+D;AAC/D,kDAAyD;AAazD,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAA;AASlC,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACvC,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,SAAS,GAAG,GAAG,GACc,EAA0C,EAAE;IAEzE,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,IAAI,KAAc,CAAA;IAClB,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,eAAmC,CAAA;IACvC,IAAI,WAAW,GAAmB,EAAE,CAAA;IACpC,IAAI,OAAO,GAAa,EAAE,CAAA;IAE1B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,IAAA,iBAAK,EAAC,IAAI,EAAE;YACV,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI;YACpB,QAAQ;YACR,QAAQ,EAAE,GAAG,EAAE;gBACb,OAAO,EAAE,CAAA;YACX,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"streamCsvToActions.js","sourceRoot":"","sources":["../streamCsvToActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { parse } from 'papaparse';
|
|
2
|
+
export const getCsvRowCount = async ({ file, }) => {
|
|
3
|
+
// stream で処理
|
|
4
|
+
let rowCount = 0;
|
|
5
|
+
await new Promise((resolve) => {
|
|
6
|
+
parse(file, {
|
|
7
|
+
header: true,
|
|
8
|
+
skipEmptyLines: true,
|
|
9
|
+
complete: () => {
|
|
10
|
+
resolve();
|
|
11
|
+
},
|
|
12
|
+
step: () => {
|
|
13
|
+
rowCount += 1;
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
return rowCount;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=getCsvRowCount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCsvRowCount.js","sourceRoot":"","sources":["../getCsvRowCount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAMjC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,EACnC,IAAI,GACqB,EAAmB,EAAE;IAC9C,aAAa;IACb,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,KAAK,CAAC,IAAI,EAAE;YACV,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,GAAG,EAAE;gBACb,OAAO,EAAE,CAAA;YACX,CAAC;YACD,IAAI,EAAE,GAAG,EAAE;gBACT,QAAQ,IAAI,CAAC,CAAA;YACf,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
|
package/_esm/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { detectFileEncoding } from './detectFileEncoding';
|
|
2
2
|
export { formatCsvRows } from './formatCsvRows';
|
|
3
|
+
export { getCsvRowCount } from './getCsvRowCount';
|
|
3
4
|
export { hasValidHeaderRow } from './hasValidHeaderRow';
|
|
4
5
|
export { parseCsvFileToActions } from './parseCsvFileToActions';
|
|
5
6
|
export { parseCsvFileToText } from './parseCsvFileToText';
|
package/_esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -21,7 +21,7 @@ export const streamCsvToActions = async ({ file, encoding, format, cryptoes, fia
|
|
|
21
21
|
complete: () => {
|
|
22
22
|
resolve();
|
|
23
23
|
},
|
|
24
|
-
step: async (result,
|
|
24
|
+
step: async (result, parser) => {
|
|
25
25
|
rowCount += 1;
|
|
26
26
|
// format
|
|
27
27
|
const row = recordSchema.parse(result.data);
|
|
@@ -75,6 +75,7 @@ export const streamCsvToActions = async ({ file, encoding, format, cryptoes, fia
|
|
|
75
75
|
}
|
|
76
76
|
// actions が chunkSize に達したら最後の action source と同一 source を除いて actions を保存
|
|
77
77
|
if (actions.length >= chunkSize + 1) {
|
|
78
|
+
parser.pause();
|
|
78
79
|
const lastActionSource = actions[actions.length - 1].source;
|
|
79
80
|
const savingActions = [];
|
|
80
81
|
const remainingActions = [];
|
|
@@ -88,13 +89,14 @@ export const streamCsvToActions = async ({ file, encoding, format, cryptoes, fia
|
|
|
88
89
|
}
|
|
89
90
|
actions = remainingActions;
|
|
90
91
|
try {
|
|
91
|
-
await save(savingActions);
|
|
92
|
+
await save(savingActions, rowCount);
|
|
92
93
|
}
|
|
93
94
|
catch (e) {
|
|
94
95
|
success = false;
|
|
95
96
|
error = e;
|
|
96
|
-
|
|
97
|
+
parser.abort();
|
|
97
98
|
}
|
|
99
|
+
parser.resume();
|
|
98
100
|
}
|
|
99
101
|
},
|
|
100
102
|
});
|
|
@@ -125,7 +127,7 @@ export const streamCsvToActions = async ({ file, encoding, format, cryptoes, fia
|
|
|
125
127
|
// actions が残っていたら actions 保存処理
|
|
126
128
|
if (actions.length > 0) {
|
|
127
129
|
try {
|
|
128
|
-
await save(actions);
|
|
130
|
+
await save(actions, rowCount);
|
|
129
131
|
}
|
|
130
132
|
catch (e) {
|
|
131
133
|
success = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamCsvToActions.js","sourceRoot":"","sources":["../streamCsvToActions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAazD,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;AASzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACvC,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,SAAS,GAAG,GAAG,GACc,EAA0C,EAAE;IACzE,aAAa;IACb,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,IAAI,KAAc,CAAA;IAClB,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,eAAmC,CAAA;IACvC,IAAI,WAAW,GAAmB,EAAE,CAAA;IACpC,IAAI,OAAO,GAAa,EAAE,CAAA;IAE1B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,KAAK,CAAC,IAAI,EAAE;YACV,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,IAAI;YACpB,QAAQ;YACR,QAAQ,EAAE,GAAG,EAAE;gBACb,OAAO,EAAE,CAAA;YACX,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"streamCsvToActions.js","sourceRoot":"","sources":["../streamCsvToActions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCsvRowCount.d.ts","sourceRoot":"","sources":["../getCsvRowCount.ts"],"names":[],"mappings":"AAEA,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,cAAc,cAExB,wBAAwB,KAAG,OAAO,CAAC,MAAM,CAkB3C,CAAA"}
|
package/_types/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { detectFileEncoding } from './detectFileEncoding';
|
|
2
2
|
export { formatCsvRows } from './formatCsvRows';
|
|
3
|
+
export { getCsvRowCount } from './getCsvRowCount';
|
|
3
4
|
export { hasValidHeaderRow } from './hasValidHeaderRow';
|
|
4
5
|
export { parseCsvFileToActions } from './parseCsvFileToActions';
|
|
5
6
|
export { parseCsvFileToText } from './parseCsvFileToText';
|
package/_types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -6,7 +6,7 @@ type StreamCsvToActionsParameters = {
|
|
|
6
6
|
format: CsvFormat;
|
|
7
7
|
cryptoes: readonly CryptoCurrency[];
|
|
8
8
|
fiats: readonly FiatCurrency[];
|
|
9
|
-
save: (actions: readonly Action[]) => Promise<void>;
|
|
9
|
+
save: (actions: readonly Action[], rowCount: number) => Promise<void>;
|
|
10
10
|
chunkSize?: number;
|
|
11
11
|
};
|
|
12
12
|
type StreamCsvToActionsReturnTypes = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamCsvToActions.d.ts","sourceRoot":"","sources":["../streamCsvToActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAMzE,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,SAAS,CAAA;AAEtD,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,SAAS,CAAA;IACjB,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAA;IACnC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;IAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"streamCsvToActions.d.ts","sourceRoot":"","sources":["../streamCsvToActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAMzE,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,SAAS,CAAA;AAEtD,KAAK,4BAA4B,GAAG;IAClC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,SAAS,CAAA;IACjB,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAA;IACnC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;IAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAID,KAAK,6BAA6B,GAAG;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,kBAAkB,kEAQ5B,4BAA4B,KAAG,OAAO,CAAC,6BAA6B,CA8ItE,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { parse } from 'papaparse'
|
|
2
|
+
|
|
3
|
+
type GetCsvRowCountParameters = {
|
|
4
|
+
file: File | string
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const getCsvRowCount = async ({
|
|
8
|
+
file,
|
|
9
|
+
}: GetCsvRowCountParameters): Promise<number> => {
|
|
10
|
+
// stream で処理
|
|
11
|
+
let rowCount = 0
|
|
12
|
+
|
|
13
|
+
await new Promise<void>((resolve) => {
|
|
14
|
+
parse(file, {
|
|
15
|
+
header: true,
|
|
16
|
+
skipEmptyLines: true,
|
|
17
|
+
complete: () => {
|
|
18
|
+
resolve()
|
|
19
|
+
},
|
|
20
|
+
step: () => {
|
|
21
|
+
rowCount += 1
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
return rowCount
|
|
27
|
+
}
|
package/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { detectFileEncoding } from './detectFileEncoding'
|
|
2
2
|
export { formatCsvRows } from './formatCsvRows'
|
|
3
|
+
export { getCsvRowCount } from './getCsvRowCount'
|
|
3
4
|
export { hasValidHeaderRow } from './hasValidHeaderRow'
|
|
4
5
|
export { parseCsvFileToActions } from './parseCsvFileToActions'
|
|
5
6
|
export { parseCsvFileToText } from './parseCsvFileToText'
|
package/package.json
CHANGED
package/streamCsvToActions.ts
CHANGED
|
@@ -12,7 +12,7 @@ type StreamCsvToActionsParameters = {
|
|
|
12
12
|
format: CsvFormat
|
|
13
13
|
cryptoes: readonly CryptoCurrency[]
|
|
14
14
|
fiats: readonly FiatCurrency[]
|
|
15
|
-
save: (actions: readonly Action[]) => Promise<void>
|
|
15
|
+
save: (actions: readonly Action[], rowCount: number) => Promise<void>
|
|
16
16
|
chunkSize?: number
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -51,7 +51,7 @@ export const streamCsvToActions = async ({
|
|
|
51
51
|
complete: () => {
|
|
52
52
|
resolve()
|
|
53
53
|
},
|
|
54
|
-
step: async (result,
|
|
54
|
+
step: async (result, parser) => {
|
|
55
55
|
rowCount += 1
|
|
56
56
|
|
|
57
57
|
// format
|
|
@@ -109,6 +109,7 @@ export const streamCsvToActions = async ({
|
|
|
109
109
|
|
|
110
110
|
// actions が chunkSize に達したら最後の action source と同一 source を除いて actions を保存
|
|
111
111
|
if (actions.length >= chunkSize + 1) {
|
|
112
|
+
parser.pause()
|
|
112
113
|
const lastActionSource = actions[actions.length - 1].source
|
|
113
114
|
const savingActions: Action[] = []
|
|
114
115
|
const remainingActions: Action[] = []
|
|
@@ -121,12 +122,13 @@ export const streamCsvToActions = async ({
|
|
|
121
122
|
}
|
|
122
123
|
actions = remainingActions
|
|
123
124
|
try {
|
|
124
|
-
await save(savingActions)
|
|
125
|
+
await save(savingActions, rowCount)
|
|
125
126
|
} catch (e) {
|
|
126
127
|
success = false
|
|
127
128
|
error = e
|
|
128
|
-
|
|
129
|
+
parser.abort()
|
|
129
130
|
}
|
|
131
|
+
parser.resume()
|
|
130
132
|
}
|
|
131
133
|
},
|
|
132
134
|
})
|
|
@@ -160,7 +162,7 @@ export const streamCsvToActions = async ({
|
|
|
160
162
|
// actions が残っていたら actions 保存処理
|
|
161
163
|
if (actions.length > 0) {
|
|
162
164
|
try {
|
|
163
|
-
await save(actions)
|
|
165
|
+
await save(actions, rowCount)
|
|
164
166
|
} catch (e) {
|
|
165
167
|
success = false
|
|
166
168
|
error = e
|