@0xtorch/csv 0.0.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/.DS_Store +0 -0
- package/_cjs/formatCsvRows.js +67 -0
- package/_cjs/formatCsvRows.js.map +1 -0
- package/_cjs/index.js +12 -0
- package/_cjs/index.js.map +1 -0
- package/_cjs/package.json +1 -0
- package/_cjs/parseCsvFileToAccountActions.js +26 -0
- package/_cjs/parseCsvFileToAccountActions.js.map +1 -0
- package/_cjs/parseCsvFileToText.js +15 -0
- package/_cjs/parseCsvFileToText.js.map +1 -0
- package/_cjs/parseCsvRowToNormalAction/asset.js +62 -0
- package/_cjs/parseCsvRowToNormalAction/asset.js.map +1 -0
- package/_cjs/parseCsvRowToNormalAction/condition.js +32 -0
- package/_cjs/parseCsvRowToNormalAction/condition.js.map +1 -0
- package/_cjs/parseCsvRowToNormalAction/index.js +6 -0
- package/_cjs/parseCsvRowToNormalAction/index.js.map +1 -0
- package/_cjs/parseCsvRowToNormalAction/nft.js +15 -0
- package/_cjs/parseCsvRowToNormalAction/nft.js.map +1 -0
- package/_cjs/parseCsvRowToNormalAction/parseCsvRowToNormalAction.js +83 -0
- package/_cjs/parseCsvRowToNormalAction/parseCsvRowToNormalAction.js.map +1 -0
- package/_cjs/parseCsvRowToNormalAction/text.js +31 -0
- package/_cjs/parseCsvRowToNormalAction/text.js.map +1 -0
- package/_cjs/parseCsvRowToNormalAction/timestamp.js +12 -0
- package/_cjs/parseCsvRowToNormalAction/timestamp.js.map +1 -0
- package/_cjs/parseCsvRowToNormalAction/transfer.js +29 -0
- package/_cjs/parseCsvRowToNormalAction/transfer.js.map +1 -0
- package/_cjs/parseCsvRowsToAccountActions.js +49 -0
- package/_cjs/parseCsvRowsToAccountActions.js.map +1 -0
- package/_cjs/parseCsvText.js +15 -0
- package/_cjs/parseCsvText.js.map +1 -0
- package/_cjs/schemas/formatter.js +15 -0
- package/_cjs/schemas/formatter.js.map +1 -0
- package/_cjs/schemas/formatterTypes.js +37 -0
- package/_cjs/schemas/formatterTypes.js.map +1 -0
- package/_cjs/schemas/index.js +6 -0
- package/_cjs/schemas/index.js.map +1 -0
- package/_cjs/schemas/parser.js +80 -0
- package/_cjs/schemas/parser.js.map +1 -0
- package/_cjs/schemas/schemas.js +14 -0
- package/_cjs/schemas/schemas.js.map +1 -0
- package/_cjs/types.js +3 -0
- package/_cjs/types.js.map +1 -0
- package/_esm/formatCsvRows.js +67 -0
- package/_esm/formatCsvRows.js.map +1 -0
- package/_esm/index.js +5 -0
- package/_esm/index.js.map +1 -0
- package/_esm/package.json +1 -0
- package/_esm/parseCsvFileToAccountActions.js +22 -0
- package/_esm/parseCsvFileToAccountActions.js.map +1 -0
- package/_esm/parseCsvFileToText.js +11 -0
- package/_esm/parseCsvFileToText.js.map +1 -0
- package/_esm/parseCsvRowToNormalAction/asset.js +58 -0
- package/_esm/parseCsvRowToNormalAction/asset.js.map +1 -0
- package/_esm/parseCsvRowToNormalAction/condition.js +28 -0
- package/_esm/parseCsvRowToNormalAction/condition.js.map +1 -0
- package/_esm/parseCsvRowToNormalAction/index.js +2 -0
- package/_esm/parseCsvRowToNormalAction/index.js.map +1 -0
- package/_esm/parseCsvRowToNormalAction/nft.js +11 -0
- package/_esm/parseCsvRowToNormalAction/nft.js.map +1 -0
- package/_esm/parseCsvRowToNormalAction/parseCsvRowToNormalAction.js +81 -0
- package/_esm/parseCsvRowToNormalAction/parseCsvRowToNormalAction.js.map +1 -0
- package/_esm/parseCsvRowToNormalAction/text.js +27 -0
- package/_esm/parseCsvRowToNormalAction/text.js.map +1 -0
- package/_esm/parseCsvRowToNormalAction/timestamp.js +8 -0
- package/_esm/parseCsvRowToNormalAction/timestamp.js.map +1 -0
- package/_esm/parseCsvRowToNormalAction/transfer.js +25 -0
- package/_esm/parseCsvRowToNormalAction/transfer.js.map +1 -0
- package/_esm/parseCsvRowsToAccountActions.js +47 -0
- package/_esm/parseCsvRowsToAccountActions.js.map +1 -0
- package/_esm/parseCsvText.js +11 -0
- package/_esm/parseCsvText.js.map +1 -0
- package/_esm/schemas/formatter.js +12 -0
- package/_esm/schemas/formatter.js.map +1 -0
- package/_esm/schemas/formatterTypes.js +35 -0
- package/_esm/schemas/formatterTypes.js.map +1 -0
- package/_esm/schemas/index.js +2 -0
- package/_esm/schemas/index.js.map +1 -0
- package/_esm/schemas/parser.js +100 -0
- package/_esm/schemas/parser.js.map +1 -0
- package/_esm/schemas/schemas.js +11 -0
- package/_esm/schemas/schemas.js.map +1 -0
- package/_esm/types.js +2 -0
- package/_esm/types.js.map +1 -0
- package/_types/formatCsvRows.d.ts +11 -0
- package/_types/formatCsvRows.d.ts.map +1 -0
- package/_types/index.d.ts +6 -0
- package/_types/index.d.ts.map +1 -0
- package/_types/parseCsvFileToAccountActions.d.ts +12 -0
- package/_types/parseCsvFileToAccountActions.d.ts.map +1 -0
- package/_types/parseCsvFileToText.d.ts +2 -0
- package/_types/parseCsvFileToText.d.ts.map +1 -0
- package/_types/parseCsvRowToNormalAction/asset.d.ts +17 -0
- package/_types/parseCsvRowToNormalAction/asset.d.ts.map +1 -0
- package/_types/parseCsvRowToNormalAction/condition.d.ts +10 -0
- package/_types/parseCsvRowToNormalAction/condition.d.ts.map +1 -0
- package/_types/parseCsvRowToNormalAction/index.d.ts +2 -0
- package/_types/parseCsvRowToNormalAction/index.d.ts.map +1 -0
- package/_types/parseCsvRowToNormalAction/nft.d.ts +12 -0
- package/_types/parseCsvRowToNormalAction/nft.d.ts.map +1 -0
- package/_types/parseCsvRowToNormalAction/parseCsvRowToNormalAction.d.ts +20 -0
- package/_types/parseCsvRowToNormalAction/parseCsvRowToNormalAction.d.ts.map +1 -0
- package/_types/parseCsvRowToNormalAction/text.d.ts +11 -0
- package/_types/parseCsvRowToNormalAction/text.d.ts.map +1 -0
- package/_types/parseCsvRowToNormalAction/timestamp.d.ts +8 -0
- package/_types/parseCsvRowToNormalAction/timestamp.d.ts.map +1 -0
- package/_types/parseCsvRowToNormalAction/transfer.d.ts +18 -0
- package/_types/parseCsvRowToNormalAction/transfer.d.ts.map +1 -0
- package/_types/parseCsvRowsToAccountActions.d.ts +16 -0
- package/_types/parseCsvRowsToAccountActions.d.ts.map +1 -0
- package/_types/parseCsvText.d.ts +4 -0
- package/_types/parseCsvText.d.ts.map +1 -0
- package/_types/schemas/formatter.d.ts +4 -0
- package/_types/schemas/formatter.d.ts.map +1 -0
- package/_types/schemas/formatterTypes.d.ts +10 -0
- package/_types/schemas/formatterTypes.d.ts.map +1 -0
- package/_types/schemas/index.d.ts +2 -0
- package/_types/schemas/index.d.ts.map +1 -0
- package/_types/schemas/parser.d.ts +1505 -0
- package/_types/schemas/parser.d.ts.map +1 -0
- package/_types/schemas/schemas.d.ts +806 -0
- package/_types/schemas/schemas.d.ts.map +1 -0
- package/_types/types.d.ts +13 -0
- package/_types/types.d.ts.map +1 -0
- package/formatCsvRows.ts +97 -0
- package/index.ts +5 -0
- package/package.json +50 -0
- package/parseCsvFileToAccountActions.ts +40 -0
- package/parseCsvFileToText.ts +11 -0
- package/parseCsvRowToNormalAction/asset.ts +92 -0
- package/parseCsvRowToNormalAction/condition.ts +39 -0
- package/parseCsvRowToNormalAction/index.ts +1 -0
- package/parseCsvRowToNormalAction/nft.ts +27 -0
- package/parseCsvRowToNormalAction/parseCsvRowToNormalAction.ts +146 -0
- package/parseCsvRowToNormalAction/text.ts +37 -0
- package/parseCsvRowToNormalAction/timestamp.ts +19 -0
- package/parseCsvRowToNormalAction/transfer.ts +55 -0
- package/parseCsvRowsToAccountActions.ts +67 -0
- package/parseCsvText.ts +14 -0
- package/schemas/formatter.ts +13 -0
- package/schemas/formatterTypes.ts +44 -0
- package/schemas/index.ts +1 -0
- package/schemas/parser.ts +110 -0
- package/schemas/schemas.ts +11 -0
- package/tests/assets.ts +28 -0
- package/tests/coincheck-standard.csv +17 -0
- package/tests/coincheck.ts +137 -0
- package/types.ts +17 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parsersSchema = exports.parserSchema = exports.transferComponentSchema = exports.assetComponentSchema = exports.nftComponentSchema = exports.textComponentSchema = exports.actionComponentSchema = exports.columnComponentSchema = exports.conditionComponentSchema = void 0;
|
|
4
|
+
const core_1 = require("@0xtorch/core");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
exports.conditionComponentSchema = zod_1.z.object({
|
|
7
|
+
column: zod_1.z.string(),
|
|
8
|
+
pattern: zod_1.z.union([
|
|
9
|
+
zod_1.z.string(),
|
|
10
|
+
zod_1.z.number(),
|
|
11
|
+
zod_1.z.object({
|
|
12
|
+
type: zod_1.z.literal('defined'),
|
|
13
|
+
}),
|
|
14
|
+
zod_1.z.object({
|
|
15
|
+
type: zod_1.z.literal('undefined'),
|
|
16
|
+
}),
|
|
17
|
+
zod_1.z.object({
|
|
18
|
+
type: zod_1.z.literal('in'),
|
|
19
|
+
values: zod_1.z.array(zod_1.z.union([zod_1.z.string(), zod_1.z.number()])),
|
|
20
|
+
}),
|
|
21
|
+
zod_1.z.object({
|
|
22
|
+
type: zod_1.z.literal('not-in'),
|
|
23
|
+
values: zod_1.z.array(zod_1.z.union([zod_1.z.string(), zod_1.z.number()])),
|
|
24
|
+
}),
|
|
25
|
+
]),
|
|
26
|
+
});
|
|
27
|
+
exports.columnComponentSchema = zod_1.z.object({
|
|
28
|
+
type: zod_1.z.literal('column'),
|
|
29
|
+
column: zod_1.z.string(),
|
|
30
|
+
});
|
|
31
|
+
exports.actionComponentSchema = zod_1.z.object({
|
|
32
|
+
column: zod_1.z.string(),
|
|
33
|
+
patterns: zod_1.z.record(core_1.normalActionActionSchema),
|
|
34
|
+
});
|
|
35
|
+
const serviceComponentSchema = zod_1.z.object({
|
|
36
|
+
type: zod_1.z.literal('service'),
|
|
37
|
+
});
|
|
38
|
+
exports.textComponentSchema = zod_1.z.union([
|
|
39
|
+
zod_1.z.string(),
|
|
40
|
+
serviceComponentSchema,
|
|
41
|
+
exports.columnComponentSchema,
|
|
42
|
+
]);
|
|
43
|
+
exports.nftComponentSchema = zod_1.z.object({
|
|
44
|
+
type: zod_1.z.literal('nft'),
|
|
45
|
+
id: zod_1.z.array(exports.textComponentSchema),
|
|
46
|
+
});
|
|
47
|
+
exports.assetComponentSchema = zod_1.z.union([
|
|
48
|
+
zod_1.z.object({
|
|
49
|
+
type: zod_1.z.literal('custom'),
|
|
50
|
+
assetType: zod_1.z.union([
|
|
51
|
+
zod_1.z.literal('CryptoCurrency'),
|
|
52
|
+
zod_1.z.literal('FiatCurrency'),
|
|
53
|
+
zod_1.z.literal('Nft'),
|
|
54
|
+
]),
|
|
55
|
+
assetId: zod_1.z.string(),
|
|
56
|
+
}),
|
|
57
|
+
exports.columnComponentSchema,
|
|
58
|
+
exports.nftComponentSchema,
|
|
59
|
+
]);
|
|
60
|
+
exports.transferComponentSchema = zod_1.z.object({
|
|
61
|
+
direction: zod_1.z.union([zod_1.z.literal('in'), zod_1.z.literal('out')]),
|
|
62
|
+
amount: zod_1.z.string(),
|
|
63
|
+
asset: exports.assetComponentSchema,
|
|
64
|
+
});
|
|
65
|
+
exports.parserSchema = zod_1.z.object({
|
|
66
|
+
conditions: zod_1.z.array(exports.conditionComponentSchema),
|
|
67
|
+
action: core_1.normalActionActionSchema,
|
|
68
|
+
source: zod_1.z.array(exports.textComponentSchema),
|
|
69
|
+
timestamp: zod_1.z.string(),
|
|
70
|
+
comment: zod_1.z.array(exports.textComponentSchema).optional(),
|
|
71
|
+
transfers: zod_1.z.array(exports.transferComponentSchema),
|
|
72
|
+
crossId: zod_1.z.array(exports.textComponentSchema).optional(),
|
|
73
|
+
crossType: zod_1.z
|
|
74
|
+
.union([zod_1.z.literal('start'), zod_1.z.literal('middle'), zod_1.z.literal('end')])
|
|
75
|
+
.optional(),
|
|
76
|
+
loanId: zod_1.z.array(exports.textComponentSchema).optional(),
|
|
77
|
+
target: exports.nftComponentSchema.optional(),
|
|
78
|
+
});
|
|
79
|
+
exports.parsersSchema = zod_1.z.array(exports.parserSchema);
|
|
80
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../schemas/parser.ts"],"names":[],"mappings":";;;AAAA,wCAAwD;AACxD,6BAAuB;AAEV,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC;QAEf,OAAC,CAAC,MAAM,EAAE;QAEV,OAAC,CAAC,MAAM,EAAE;QAEV,OAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,SAAS,CAAC;SAC3B,CAAC;QAEF,OAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,WAAW,CAAC;SAC7B,CAAC;QAEF,OAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACnD,CAAC;QAEF,OAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACnD,CAAC;KACH,CAAC;CACH,CAAC,CAAA;AAEW,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAA;AAEW,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,+BAAwB,CAAC;CAC7C,CAAC,CAAA;AAEF,MAAM,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,SAAS,CAAC;CAC3B,CAAC,CAAA;AAEW,QAAA,mBAAmB,GAAG,OAAC,CAAC,KAAK,CAAC;IAEzC,OAAC,CAAC,MAAM,EAAE;IAEV,sBAAsB;IAEtB,6BAAqB;CACtB,CAAC,CAAA;AAEW,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACtB,EAAE,EAAE,OAAC,CAAC,KAAK,CAAC,2BAAmB,CAAC;CACjC,CAAC,CAAA;AAEW,QAAA,oBAAoB,GAAG,OAAC,CAAC,KAAK,CAAC;IAE1C,OAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC;YACjB,OAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC3B,OAAC,CAAC,OAAO,CAAC,cAAc,CAAC;YACzB,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC;SACjB,CAAC;QACF,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;KACpB,CAAC;IAEF,6BAAqB;IAErB,0BAAkB;CACnB,CAAC,CAAA;AAEW,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvD,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAGlB,KAAK,EAAE,4BAAoB;CAC5B,CAAC,CAAA;AAKW,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,UAAU,EAAE,OAAC,CAAC,KAAK,CAAC,gCAAwB,CAAC;IAC7C,MAAM,EAAE,+BAAwB;IAEhC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,2BAAmB,CAAC;IAEpC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IAErB,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,2BAAmB,CAAC,CAAC,QAAQ,EAAE;IAChD,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,+BAAuB,CAAC;IAE3C,OAAO,EAAE,OAAC,CAAC,KAAK,CAAC,2BAAmB,CAAC,CAAC,QAAQ,EAAE;IAChD,SAAS,EAAE,OAAC;SACT,KAAK,CAAC,CAAC,OAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;SAClE,QAAQ,EAAE;IAEb,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,2BAAmB,CAAC,CAAC,QAAQ,EAAE;IAC/C,MAAM,EAAE,0BAAkB,CAAC,QAAQ,EAAE;CAEtC,CAAC,CAAA;AAEW,QAAA,aAAa,GAAG,OAAC,CAAC,KAAK,CAAC,oBAAY,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.csvFormatSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const formatter_1 = require("./formatter");
|
|
6
|
+
const parser_1 = require("./parser");
|
|
7
|
+
exports.csvFormatSchema = zod_1.z.object({
|
|
8
|
+
id: zod_1.z.string(),
|
|
9
|
+
service: zod_1.z.string(),
|
|
10
|
+
formatter: formatter_1.formatterSchema,
|
|
11
|
+
parsers: parser_1.parsersSchema,
|
|
12
|
+
symbolAssetMap: zod_1.z.record(zod_1.z.string()).optional(),
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../schemas/schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AACvB,2CAA6C;AAC7C,qCAAwC;AAE3B,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,2BAAe;IAC1B,OAAO,EAAE,sBAAa;IACtB,cAAc,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAA"}
|
package/_cjs/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { bigDecimalNegativeTextSchema, bigDecimalPositiveTextSchema, bigDecimalTextSchema, blankTextSchema, datetimeJpTextSchema, iso8601TextSchema, stringTextSchema, } from './schemas/formatterTypes';
|
|
2
|
+
export const formatCsvRows = ({ rows, formatter, }) => rows.map((row) => formatCsvRow(row, formatter));
|
|
3
|
+
const formatCsvRow = (row, formatter) => Object.fromEntries(Object.entries(formatter).map(([column, schemaTypes]) => {
|
|
4
|
+
// column に一致する column が無かったらエラー
|
|
5
|
+
if (!(column in row)) {
|
|
6
|
+
throw new Error(`The column '${column}' does not exist in the CSV`);
|
|
7
|
+
}
|
|
8
|
+
const value = row[column];
|
|
9
|
+
// schema types を順番に調査
|
|
10
|
+
for (const schemaType of schemaTypes) {
|
|
11
|
+
switch (schemaType) {
|
|
12
|
+
case 'blank': {
|
|
13
|
+
const parsed = blankTextSchema.safeParse(value);
|
|
14
|
+
if (!parsed.success) {
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
return [column, parsed.data];
|
|
18
|
+
}
|
|
19
|
+
case 'string': {
|
|
20
|
+
const parsed = stringTextSchema.safeParse(value);
|
|
21
|
+
if (!parsed.success) {
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
return [column, parsed.data];
|
|
25
|
+
}
|
|
26
|
+
case 'big-decimal': {
|
|
27
|
+
const parsed = bigDecimalTextSchema.safeParse(value);
|
|
28
|
+
if (!parsed.success) {
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
return [column, parsed.data];
|
|
32
|
+
}
|
|
33
|
+
case 'big-decimal-negative': {
|
|
34
|
+
const parsed = bigDecimalNegativeTextSchema.safeParse(value);
|
|
35
|
+
if (!parsed.success) {
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
return [column, parsed.data];
|
|
39
|
+
}
|
|
40
|
+
case 'big-decimal-positive': {
|
|
41
|
+
const parsed = bigDecimalPositiveTextSchema.safeParse(value);
|
|
42
|
+
if (!parsed.success) {
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
return [column, parsed.data];
|
|
46
|
+
}
|
|
47
|
+
case 'iso8601': {
|
|
48
|
+
const parsed = iso8601TextSchema.safeParse(value);
|
|
49
|
+
if (!parsed.success) {
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
return [column, parsed.data];
|
|
53
|
+
}
|
|
54
|
+
case 'datetime-jp': {
|
|
55
|
+
const parsed = datetimeJpTextSchema.safeParse(value);
|
|
56
|
+
if (!parsed.success) {
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
return [column, parsed.data];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// schema に一致したら値を返す
|
|
64
|
+
// 一致する schema type が無かったらエラー
|
|
65
|
+
throw new Error(`The column "${column}"'s value "${value}" does not match schema: [${schemaTypes.join(',')}]`);
|
|
66
|
+
}));
|
|
67
|
+
//# sourceMappingURL=formatCsvRows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatCsvRows.js","sourceRoot":"","sources":["../formatCsvRows.ts"],"names":[],"mappings":"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"}
|
package/_esm/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module","sideEffects":false}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { formatCsvRows } from './formatCsvRows';
|
|
2
|
+
import { parseCsvFileToText } from './parseCsvFileToText';
|
|
3
|
+
import { parseCsvRowsToAccountActions } from './parseCsvRowsToAccountActions';
|
|
4
|
+
import { parseCsvText } from './parseCsvText';
|
|
5
|
+
export const parseCsvFileToAccountActions = async ({ file, format: { service, formatter, parsers, symbolAssetMap }, accountId, cryptoCurrencies, fiatCurrencies, }) => {
|
|
6
|
+
const text = await parseCsvFileToText(file);
|
|
7
|
+
const rows = formatCsvRows({
|
|
8
|
+
rows: parseCsvText(text),
|
|
9
|
+
formatter,
|
|
10
|
+
});
|
|
11
|
+
const actions = parseCsvRowsToAccountActions({
|
|
12
|
+
rows,
|
|
13
|
+
service,
|
|
14
|
+
parsers,
|
|
15
|
+
symbolAssetMap,
|
|
16
|
+
accountId,
|
|
17
|
+
cryptoCurrencies,
|
|
18
|
+
fiatCurrencies,
|
|
19
|
+
});
|
|
20
|
+
return actions;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=parseCsvFileToAccountActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCsvFileToAccountActions.js","sourceRoot":"","sources":["../parseCsvFileToAccountActions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAW7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,EACjD,IAAI,EACJ,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,EACvD,SAAS,EACT,gBAAgB,EAChB,cAAc,GACyB,EAEvC,EAAE;IACF,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,IAAI,GAAG,aAAa,CAAC;QACzB,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;QACxB,SAAS;KACV,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,4BAA4B,CAAC;QAC3C,IAAI;QACJ,OAAO;QACP,OAAO;QACP,cAAc;QACd,SAAS;QACT,gBAAgB;QAChB,cAAc;KACf,CAAC,CAAA;IACF,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { convert } from 'encoding-japanese';
|
|
2
|
+
export const parseCsvFileToText = async (file) => {
|
|
3
|
+
const buffers = await file.arrayBuffer();
|
|
4
|
+
const codes = new Uint8Array(buffers);
|
|
5
|
+
const unicodeString = convert(codes, {
|
|
6
|
+
to: 'UNICODE',
|
|
7
|
+
type: 'string',
|
|
8
|
+
});
|
|
9
|
+
return unicodeString;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=parseCsvFileToText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCsvFileToText.js","sourceRoot":"","sources":["../parseCsvFileToText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAU,EAAmB,EAAE;IACtE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;IACxC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;IACrC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE;QACnC,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;IACF,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { createNftByNftComponent } from './nft';
|
|
2
|
+
export const createAssetByComponent = ({ row, service, symbolAssetMap, component, cryptoCurrencies, fiatCurrencies, }) => {
|
|
3
|
+
switch (component.type) {
|
|
4
|
+
case 'custom': {
|
|
5
|
+
switch (component.assetType) {
|
|
6
|
+
case 'CryptoCurrency': {
|
|
7
|
+
const asset = cryptoCurrencies.find((cryptoCurrency) => cryptoCurrency.id === component.assetId);
|
|
8
|
+
if (asset === undefined) {
|
|
9
|
+
throw new Error(`asset not found: ${component.assetId}`);
|
|
10
|
+
}
|
|
11
|
+
return asset;
|
|
12
|
+
}
|
|
13
|
+
case 'FiatCurrency': {
|
|
14
|
+
const asset = fiatCurrencies.find((fiatCurrency) => fiatCurrency.id === component.assetId);
|
|
15
|
+
if (asset === undefined) {
|
|
16
|
+
throw new Error(`asset not found: ${component.assetId}`);
|
|
17
|
+
}
|
|
18
|
+
return asset;
|
|
19
|
+
}
|
|
20
|
+
case 'Nft': {
|
|
21
|
+
return {
|
|
22
|
+
type: 'Nft',
|
|
23
|
+
id: component.assetId,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
throw new Error('Not reachable');
|
|
28
|
+
}
|
|
29
|
+
case 'column': {
|
|
30
|
+
const symbol = row[component.column];
|
|
31
|
+
if (typeof symbol !== 'string') {
|
|
32
|
+
throw new TypeError(`symbol needs to be string but got ${typeof symbol}`);
|
|
33
|
+
}
|
|
34
|
+
if (symbolAssetMap !== undefined && symbol in symbolAssetMap) {
|
|
35
|
+
const assetId = symbolAssetMap[symbol];
|
|
36
|
+
const asset = cryptoCurrencies.find((cryptoCurrency) => cryptoCurrency.id === assetId);
|
|
37
|
+
if (asset !== undefined) {
|
|
38
|
+
return asset;
|
|
39
|
+
}
|
|
40
|
+
throw new Error(`asset not found: ${assetId}`);
|
|
41
|
+
}
|
|
42
|
+
const upperSymbol = symbol.toUpperCase();
|
|
43
|
+
const fiat = fiatCurrencies.find((fiatCurrency) => fiatCurrency.symbol.toUpperCase() === upperSymbol);
|
|
44
|
+
if (fiat !== undefined) {
|
|
45
|
+
return fiat;
|
|
46
|
+
}
|
|
47
|
+
const crypto = cryptoCurrencies.find((cryptoCurrency) => cryptoCurrency.symbol.toUpperCase() === upperSymbol);
|
|
48
|
+
if (crypto !== undefined) {
|
|
49
|
+
return crypto;
|
|
50
|
+
}
|
|
51
|
+
throw new Error(`asset not found: ${symbol}`);
|
|
52
|
+
}
|
|
53
|
+
case 'nft': {
|
|
54
|
+
return createNftByNftComponent({ row, service, component });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=asset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../parseCsvRowToNormalAction/asset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const matchCondition = ({ row, component, }) => {
|
|
2
|
+
const { column, pattern } = component;
|
|
3
|
+
const value = row[column];
|
|
4
|
+
if (typeof pattern === 'string' || typeof pattern === 'number') {
|
|
5
|
+
return value === pattern;
|
|
6
|
+
}
|
|
7
|
+
switch (pattern.type) {
|
|
8
|
+
case 'defined': {
|
|
9
|
+
return value !== undefined;
|
|
10
|
+
}
|
|
11
|
+
case 'undefined': {
|
|
12
|
+
return value === undefined;
|
|
13
|
+
}
|
|
14
|
+
case 'in': {
|
|
15
|
+
if (value === undefined || typeof value === 'object') {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return pattern.values.includes(value);
|
|
19
|
+
}
|
|
20
|
+
case 'not-in': {
|
|
21
|
+
if (value === undefined || typeof value === 'object') {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return !pattern.values.includes(value);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=condition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"condition.js","sourceRoot":"","sources":["../../parseCsvRowToNormalAction/condition.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,GAAG,EACH,SAAS,GACgB,EAAW,EAAE;IACtC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC/D,OAAO,KAAK,KAAK,OAAO,CAAA;IAC1B,CAAC;IACD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,OAAO,KAAK,KAAK,SAAS,CAAA;QAC5B,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO,KAAK,KAAK,SAAS,CAAA;QAC5B,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrD,OAAO,KAAK,CAAA;YACd,CAAC;YACD,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACvC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrD,OAAO,KAAK,CAAA;YACd,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../parseCsvRowToNormalAction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createTextByComponent } from './text';
|
|
2
|
+
export const createNftByNftComponent = ({ row, service, component, }) => {
|
|
3
|
+
const id = component.id
|
|
4
|
+
.map((idComponent) => createTextByComponent({ row, service, component: idComponent }))
|
|
5
|
+
.join('');
|
|
6
|
+
return {
|
|
7
|
+
type: 'Nft',
|
|
8
|
+
id,
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=nft.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nft.js","sourceRoot":"","sources":["../../parseCsvRowToNormalAction/nft.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAA;AAQ9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,GAAG,EACH,OAAO,EACP,SAAS,GACyB,EAAO,EAAE;IAC3C,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE;SACpB,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACnB,qBAAqB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAChE;SACA,IAAI,CAAC,EAAE,CAAC,CAAA;IACX,OAAO;QACL,IAAI,EAAE,KAAK;QACX,EAAE;KACH,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { parseBaseNormalActionToNormalAction } from '@0xtorch/core';
|
|
2
|
+
import { matchCondition } from './condition';
|
|
3
|
+
import { createNftByNftComponent } from './nft';
|
|
4
|
+
import { createTextByComponent } from './text';
|
|
5
|
+
import { createTimestampByRow } from './timestamp';
|
|
6
|
+
import { createTransferByComponent } from './transfer';
|
|
7
|
+
export const parseCsvRowToNormalAction = ({ row, service, parsers, symbolAssetMap, accountId, cryptoCurrencies, fiatCurrencies, }) => {
|
|
8
|
+
for (const parser of parsers) {
|
|
9
|
+
try {
|
|
10
|
+
const action = parseCsvRowToNormalActionByParser({
|
|
11
|
+
row,
|
|
12
|
+
service,
|
|
13
|
+
parser,
|
|
14
|
+
symbolAssetMap,
|
|
15
|
+
accountId,
|
|
16
|
+
cryptoCurrencies,
|
|
17
|
+
fiatCurrencies,
|
|
18
|
+
});
|
|
19
|
+
if (action !== undefined) {
|
|
20
|
+
return action;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
// TODO 意図しないエラーは別途記録できるようにしたい
|
|
25
|
+
console.debug(error);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return undefined;
|
|
30
|
+
};
|
|
31
|
+
const parseCsvRowToNormalActionByParser = ({ row, service, parser, symbolAssetMap, accountId, cryptoCurrencies, fiatCurrencies, }) => {
|
|
32
|
+
// 合致しない condition がある場合は undefined を返す
|
|
33
|
+
for (const condition of parser.conditions) {
|
|
34
|
+
if (!matchCondition({ row, component: condition })) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const baseAction = {
|
|
39
|
+
action: parser.action,
|
|
40
|
+
evidence: 'system-rule',
|
|
41
|
+
timestamp: createTimestampByRow({ row, column: parser.timestamp }),
|
|
42
|
+
comment: parser.comment === undefined
|
|
43
|
+
? undefined
|
|
44
|
+
: parser.comment
|
|
45
|
+
.map((component) => createTextByComponent({ row, service, component }))
|
|
46
|
+
.join(''),
|
|
47
|
+
app: undefined,
|
|
48
|
+
transfers: parser.transfers.map((component) => createTransferByComponent({
|
|
49
|
+
row,
|
|
50
|
+
service,
|
|
51
|
+
symbolAssetMap,
|
|
52
|
+
component,
|
|
53
|
+
accountId,
|
|
54
|
+
cryptoCurrencies,
|
|
55
|
+
fiatCurrencies,
|
|
56
|
+
})),
|
|
57
|
+
crossId: parser.crossId === undefined
|
|
58
|
+
? undefined
|
|
59
|
+
: parser.crossId
|
|
60
|
+
.map((component) => createTextByComponent({ row, service, component }))
|
|
61
|
+
.join(''),
|
|
62
|
+
crossType: parser.crossType,
|
|
63
|
+
loanId: parser.loanId === undefined
|
|
64
|
+
? undefined
|
|
65
|
+
: parser.loanId
|
|
66
|
+
.map((component) => createTextByComponent({ row, service, component }))
|
|
67
|
+
.join(''),
|
|
68
|
+
target: parser.target === undefined
|
|
69
|
+
? undefined
|
|
70
|
+
: createNftByNftComponent({ row, service, component: parser.target }),
|
|
71
|
+
};
|
|
72
|
+
const action = parseBaseNormalActionToNormalAction(baseAction);
|
|
73
|
+
const source = parser.source
|
|
74
|
+
.map((component) => createTextByComponent({ row, service, component }))
|
|
75
|
+
.join('');
|
|
76
|
+
return {
|
|
77
|
+
action,
|
|
78
|
+
source,
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=parseCsvRowToNormalAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCsvRowToNormalAction.js","sourceRoot":"","sources":["../../parseCsvRowToNormalAction/parseCsvRowToNormalAction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { toStringBigDecimal } from '@0xtorch/big-decimal';
|
|
2
|
+
export const createTextByComponent = ({ row, service, component, }) => {
|
|
3
|
+
if (typeof component === 'string') {
|
|
4
|
+
return component;
|
|
5
|
+
}
|
|
6
|
+
switch (component.type) {
|
|
7
|
+
case 'service': {
|
|
8
|
+
return service;
|
|
9
|
+
}
|
|
10
|
+
case 'column': {
|
|
11
|
+
const value = row[component.column];
|
|
12
|
+
if (value === undefined) {
|
|
13
|
+
return '';
|
|
14
|
+
}
|
|
15
|
+
else if (typeof value === 'string') {
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
else if (typeof value === 'number') {
|
|
19
|
+
return value.toString();
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return toStringBigDecimal(value);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../parseCsvRowToNormalAction/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAWzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,GAAG,EACH,OAAO,EACP,SAAS,GACuB,EAAU,EAAE;IAC5C,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,EAAE,CAAA;YACX,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,KAAK,CAAA;YACd,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const createTimestampByRow = ({ row, column, }) => {
|
|
2
|
+
const timestamp = row[column];
|
|
3
|
+
if (typeof timestamp !== 'number') {
|
|
4
|
+
throw new TypeError(`timestamp needs to be number but got ${typeof timestamp}`);
|
|
5
|
+
}
|
|
6
|
+
return timestamp;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=timestamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../parseCsvRowToNormalAction/timestamp.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,GAAG,EACH,MAAM,GACyB,EAAU,EAAE;IAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CACjB,wCAAwC,OAAO,SAAS,EAAE,CAC3D,CAAA;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { absoluteValue } from '@0xtorch/big-decimal';
|
|
2
|
+
import { createAssetByComponent } from './asset';
|
|
3
|
+
export const createTransferByComponent = ({ row, service, symbolAssetMap, component, accountId, cryptoCurrencies, fiatCurrencies, }) => {
|
|
4
|
+
const { direction, asset: assetComponent, amount: amountComponent, } = component;
|
|
5
|
+
const amount = row[amountComponent];
|
|
6
|
+
if (typeof amount !== 'object') {
|
|
7
|
+
throw new TypeError(`amount needs to be BigDecimal but got ${typeof amount}`);
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
from: direction === 'in' ? undefined : accountId,
|
|
11
|
+
to: direction === 'in' ? accountId : undefined,
|
|
12
|
+
asset: createAssetByComponent({
|
|
13
|
+
row,
|
|
14
|
+
service,
|
|
15
|
+
symbolAssetMap,
|
|
16
|
+
component: assetComponent,
|
|
17
|
+
cryptoCurrencies,
|
|
18
|
+
fiatCurrencies,
|
|
19
|
+
}),
|
|
20
|
+
amount: absoluteValue(amount),
|
|
21
|
+
price: undefined,
|
|
22
|
+
direction,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../parseCsvRowToNormalAction/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAKpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAYhD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EACxC,GAAG,EACH,OAAO,EACP,cAAc,EACd,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,cAAc,GACsB,EAAY,EAAE;IAClD,MAAM,EACJ,SAAS,EACT,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,eAAe,GACxB,GAAG,SAAS,CAAA;IAEb,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,CAAA;IACnC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CACjB,yCAAyC,OAAO,MAAM,EAAE,CACzD,CAAA;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAChD,EAAE,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC9C,KAAK,EAAE,sBAAsB,CAAC;YAC5B,GAAG;YACH,OAAO;YACP,cAAc;YACd,SAAS,EAAE,cAAc;YACzB,gBAAgB;YAChB,cAAc;SACf,CAAC;QACF,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;QAC7B,KAAK,EAAE,SAAS;QAChB,SAAS;KACV,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { greaterThan } from '@0xtorch/big-decimal';
|
|
2
|
+
import { parseNormalActionToAccountActions } from '@0xtorch/core';
|
|
3
|
+
import { parseCsvRowToNormalAction } from './parseCsvRowToNormalAction';
|
|
4
|
+
export const parseCsvRowsToAccountActions = ({ rows, service, parsers, symbolAssetMap, accountId, cryptoCurrencies, fiatCurrencies, }) => {
|
|
5
|
+
// marketCap で降順 sort
|
|
6
|
+
const sortedCryptoCurrencies = cryptoCurrencies.toSorted((a, b) => {
|
|
7
|
+
if (a.market.marketCapUsd === undefined) {
|
|
8
|
+
return -1;
|
|
9
|
+
}
|
|
10
|
+
if (b.market.marketCapUsd === undefined) {
|
|
11
|
+
return 1;
|
|
12
|
+
}
|
|
13
|
+
return greaterThan(a.market.marketCapUsd, b.market.marketCapUsd) ? -1 : 1;
|
|
14
|
+
});
|
|
15
|
+
const actions = rows.flatMap((row) => {
|
|
16
|
+
const result = parseCsvRowToNormalAction({
|
|
17
|
+
row,
|
|
18
|
+
service,
|
|
19
|
+
parsers,
|
|
20
|
+
symbolAssetMap,
|
|
21
|
+
accountId,
|
|
22
|
+
cryptoCurrencies: sortedCryptoCurrencies,
|
|
23
|
+
fiatCurrencies,
|
|
24
|
+
});
|
|
25
|
+
if (result === undefined) {
|
|
26
|
+
// TODO action が生成できなかった行を記録したい
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
const { action, source } = result;
|
|
30
|
+
return parseNormalActionToAccountActions({
|
|
31
|
+
action,
|
|
32
|
+
accountIds: new Set([accountId]),
|
|
33
|
+
source,
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
const mut_sources = [];
|
|
37
|
+
const mut_actions = [];
|
|
38
|
+
for (const action of actions) {
|
|
39
|
+
mut_actions.push({
|
|
40
|
+
...action,
|
|
41
|
+
order: mut_sources.filter((source) => source === action.source).length,
|
|
42
|
+
});
|
|
43
|
+
mut_sources.push(action.source);
|
|
44
|
+
}
|
|
45
|
+
return mut_actions;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=parseCsvRowsToAccountActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCsvRowsToAccountActions.js","sourceRoot":"","sources":["../parseCsvRowsToAccountActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAavE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAC3C,IAAI,EACJ,OAAO,EACP,OAAO,EACP,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,cAAc,GACyB,EAA4B,EAAE;IACrE,qBAAqB;IACrB,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChE,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,CAAC,CAAA;QACX,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,CAAA;QACV,CAAC;QACD,OAAO,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,yBAAyB,CAAC;YACvC,GAAG;YACH,OAAO;YACP,OAAO;YACP,cAAc;YACd,SAAS;YACT,gBAAgB,EAAE,sBAAsB;YACxC,cAAc;SACf,CAAC,CAAA;QACF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,+BAA+B;YAC/B,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;QACjC,OAAO,iCAAiC,CAAC;YACvC,MAAM;YACN,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM;SACP,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,MAAM,WAAW,GAAa,EAAE,CAAA;IAChC,MAAM,WAAW,GAAoB,EAAE,CAAA;IACvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC;YACf,GAAG,MAAM;YACT,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM;SACvE,CAAC,CAAA;QACF,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { parse } from 'papaparse';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
const schema = z.record(z.string());
|
|
4
|
+
export const parseCsvText = (text) => {
|
|
5
|
+
const result = parse(text, {
|
|
6
|
+
header: true,
|
|
7
|
+
skipEmptyLines: true,
|
|
8
|
+
});
|
|
9
|
+
return result.data.map((row) => schema.parse(row));
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=parseCsvText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCsvText.js","sourceRoot":"","sources":["../parseCsvText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;AAEnC,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAY,EAC0B,EAAE;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE;QACzB,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,IAAI;KACrB,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AACpD,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const formatterValueTypeSchema = z.union([
|
|
3
|
+
z.literal('blank'),
|
|
4
|
+
z.literal('string'),
|
|
5
|
+
z.literal('big-decimal'),
|
|
6
|
+
z.literal('big-decimal-positive'),
|
|
7
|
+
z.literal('big-decimal-negative'),
|
|
8
|
+
z.literal('iso8601'),
|
|
9
|
+
z.literal('datetime-jp'),
|
|
10
|
+
]);
|
|
11
|
+
export const formatterSchema = z.record(z.array(formatterValueTypeSchema));
|
|
12
|
+
//# sourceMappingURL=formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../schemas/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC9C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAClB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACxB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;IACjC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;IACjC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACpB,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;CACzB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAA"}
|