@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.
Files changed (147) hide show
  1. package/.DS_Store +0 -0
  2. package/_cjs/formatCsvRows.js +67 -0
  3. package/_cjs/formatCsvRows.js.map +1 -0
  4. package/_cjs/index.js +12 -0
  5. package/_cjs/index.js.map +1 -0
  6. package/_cjs/package.json +1 -0
  7. package/_cjs/parseCsvFileToAccountActions.js +26 -0
  8. package/_cjs/parseCsvFileToAccountActions.js.map +1 -0
  9. package/_cjs/parseCsvFileToText.js +15 -0
  10. package/_cjs/parseCsvFileToText.js.map +1 -0
  11. package/_cjs/parseCsvRowToNormalAction/asset.js +62 -0
  12. package/_cjs/parseCsvRowToNormalAction/asset.js.map +1 -0
  13. package/_cjs/parseCsvRowToNormalAction/condition.js +32 -0
  14. package/_cjs/parseCsvRowToNormalAction/condition.js.map +1 -0
  15. package/_cjs/parseCsvRowToNormalAction/index.js +6 -0
  16. package/_cjs/parseCsvRowToNormalAction/index.js.map +1 -0
  17. package/_cjs/parseCsvRowToNormalAction/nft.js +15 -0
  18. package/_cjs/parseCsvRowToNormalAction/nft.js.map +1 -0
  19. package/_cjs/parseCsvRowToNormalAction/parseCsvRowToNormalAction.js +83 -0
  20. package/_cjs/parseCsvRowToNormalAction/parseCsvRowToNormalAction.js.map +1 -0
  21. package/_cjs/parseCsvRowToNormalAction/text.js +31 -0
  22. package/_cjs/parseCsvRowToNormalAction/text.js.map +1 -0
  23. package/_cjs/parseCsvRowToNormalAction/timestamp.js +12 -0
  24. package/_cjs/parseCsvRowToNormalAction/timestamp.js.map +1 -0
  25. package/_cjs/parseCsvRowToNormalAction/transfer.js +29 -0
  26. package/_cjs/parseCsvRowToNormalAction/transfer.js.map +1 -0
  27. package/_cjs/parseCsvRowsToAccountActions.js +49 -0
  28. package/_cjs/parseCsvRowsToAccountActions.js.map +1 -0
  29. package/_cjs/parseCsvText.js +15 -0
  30. package/_cjs/parseCsvText.js.map +1 -0
  31. package/_cjs/schemas/formatter.js +15 -0
  32. package/_cjs/schemas/formatter.js.map +1 -0
  33. package/_cjs/schemas/formatterTypes.js +37 -0
  34. package/_cjs/schemas/formatterTypes.js.map +1 -0
  35. package/_cjs/schemas/index.js +6 -0
  36. package/_cjs/schemas/index.js.map +1 -0
  37. package/_cjs/schemas/parser.js +80 -0
  38. package/_cjs/schemas/parser.js.map +1 -0
  39. package/_cjs/schemas/schemas.js +14 -0
  40. package/_cjs/schemas/schemas.js.map +1 -0
  41. package/_cjs/types.js +3 -0
  42. package/_cjs/types.js.map +1 -0
  43. package/_esm/formatCsvRows.js +67 -0
  44. package/_esm/formatCsvRows.js.map +1 -0
  45. package/_esm/index.js +5 -0
  46. package/_esm/index.js.map +1 -0
  47. package/_esm/package.json +1 -0
  48. package/_esm/parseCsvFileToAccountActions.js +22 -0
  49. package/_esm/parseCsvFileToAccountActions.js.map +1 -0
  50. package/_esm/parseCsvFileToText.js +11 -0
  51. package/_esm/parseCsvFileToText.js.map +1 -0
  52. package/_esm/parseCsvRowToNormalAction/asset.js +58 -0
  53. package/_esm/parseCsvRowToNormalAction/asset.js.map +1 -0
  54. package/_esm/parseCsvRowToNormalAction/condition.js +28 -0
  55. package/_esm/parseCsvRowToNormalAction/condition.js.map +1 -0
  56. package/_esm/parseCsvRowToNormalAction/index.js +2 -0
  57. package/_esm/parseCsvRowToNormalAction/index.js.map +1 -0
  58. package/_esm/parseCsvRowToNormalAction/nft.js +11 -0
  59. package/_esm/parseCsvRowToNormalAction/nft.js.map +1 -0
  60. package/_esm/parseCsvRowToNormalAction/parseCsvRowToNormalAction.js +81 -0
  61. package/_esm/parseCsvRowToNormalAction/parseCsvRowToNormalAction.js.map +1 -0
  62. package/_esm/parseCsvRowToNormalAction/text.js +27 -0
  63. package/_esm/parseCsvRowToNormalAction/text.js.map +1 -0
  64. package/_esm/parseCsvRowToNormalAction/timestamp.js +8 -0
  65. package/_esm/parseCsvRowToNormalAction/timestamp.js.map +1 -0
  66. package/_esm/parseCsvRowToNormalAction/transfer.js +25 -0
  67. package/_esm/parseCsvRowToNormalAction/transfer.js.map +1 -0
  68. package/_esm/parseCsvRowsToAccountActions.js +47 -0
  69. package/_esm/parseCsvRowsToAccountActions.js.map +1 -0
  70. package/_esm/parseCsvText.js +11 -0
  71. package/_esm/parseCsvText.js.map +1 -0
  72. package/_esm/schemas/formatter.js +12 -0
  73. package/_esm/schemas/formatter.js.map +1 -0
  74. package/_esm/schemas/formatterTypes.js +35 -0
  75. package/_esm/schemas/formatterTypes.js.map +1 -0
  76. package/_esm/schemas/index.js +2 -0
  77. package/_esm/schemas/index.js.map +1 -0
  78. package/_esm/schemas/parser.js +100 -0
  79. package/_esm/schemas/parser.js.map +1 -0
  80. package/_esm/schemas/schemas.js +11 -0
  81. package/_esm/schemas/schemas.js.map +1 -0
  82. package/_esm/types.js +2 -0
  83. package/_esm/types.js.map +1 -0
  84. package/_types/formatCsvRows.d.ts +11 -0
  85. package/_types/formatCsvRows.d.ts.map +1 -0
  86. package/_types/index.d.ts +6 -0
  87. package/_types/index.d.ts.map +1 -0
  88. package/_types/parseCsvFileToAccountActions.d.ts +12 -0
  89. package/_types/parseCsvFileToAccountActions.d.ts.map +1 -0
  90. package/_types/parseCsvFileToText.d.ts +2 -0
  91. package/_types/parseCsvFileToText.d.ts.map +1 -0
  92. package/_types/parseCsvRowToNormalAction/asset.d.ts +17 -0
  93. package/_types/parseCsvRowToNormalAction/asset.d.ts.map +1 -0
  94. package/_types/parseCsvRowToNormalAction/condition.d.ts +10 -0
  95. package/_types/parseCsvRowToNormalAction/condition.d.ts.map +1 -0
  96. package/_types/parseCsvRowToNormalAction/index.d.ts +2 -0
  97. package/_types/parseCsvRowToNormalAction/index.d.ts.map +1 -0
  98. package/_types/parseCsvRowToNormalAction/nft.d.ts +12 -0
  99. package/_types/parseCsvRowToNormalAction/nft.d.ts.map +1 -0
  100. package/_types/parseCsvRowToNormalAction/parseCsvRowToNormalAction.d.ts +20 -0
  101. package/_types/parseCsvRowToNormalAction/parseCsvRowToNormalAction.d.ts.map +1 -0
  102. package/_types/parseCsvRowToNormalAction/text.d.ts +11 -0
  103. package/_types/parseCsvRowToNormalAction/text.d.ts.map +1 -0
  104. package/_types/parseCsvRowToNormalAction/timestamp.d.ts +8 -0
  105. package/_types/parseCsvRowToNormalAction/timestamp.d.ts.map +1 -0
  106. package/_types/parseCsvRowToNormalAction/transfer.d.ts +18 -0
  107. package/_types/parseCsvRowToNormalAction/transfer.d.ts.map +1 -0
  108. package/_types/parseCsvRowsToAccountActions.d.ts +16 -0
  109. package/_types/parseCsvRowsToAccountActions.d.ts.map +1 -0
  110. package/_types/parseCsvText.d.ts +4 -0
  111. package/_types/parseCsvText.d.ts.map +1 -0
  112. package/_types/schemas/formatter.d.ts +4 -0
  113. package/_types/schemas/formatter.d.ts.map +1 -0
  114. package/_types/schemas/formatterTypes.d.ts +10 -0
  115. package/_types/schemas/formatterTypes.d.ts.map +1 -0
  116. package/_types/schemas/index.d.ts +2 -0
  117. package/_types/schemas/index.d.ts.map +1 -0
  118. package/_types/schemas/parser.d.ts +1505 -0
  119. package/_types/schemas/parser.d.ts.map +1 -0
  120. package/_types/schemas/schemas.d.ts +806 -0
  121. package/_types/schemas/schemas.d.ts.map +1 -0
  122. package/_types/types.d.ts +13 -0
  123. package/_types/types.d.ts.map +1 -0
  124. package/formatCsvRows.ts +97 -0
  125. package/index.ts +5 -0
  126. package/package.json +50 -0
  127. package/parseCsvFileToAccountActions.ts +40 -0
  128. package/parseCsvFileToText.ts +11 -0
  129. package/parseCsvRowToNormalAction/asset.ts +92 -0
  130. package/parseCsvRowToNormalAction/condition.ts +39 -0
  131. package/parseCsvRowToNormalAction/index.ts +1 -0
  132. package/parseCsvRowToNormalAction/nft.ts +27 -0
  133. package/parseCsvRowToNormalAction/parseCsvRowToNormalAction.ts +146 -0
  134. package/parseCsvRowToNormalAction/text.ts +37 -0
  135. package/parseCsvRowToNormalAction/timestamp.ts +19 -0
  136. package/parseCsvRowToNormalAction/transfer.ts +55 -0
  137. package/parseCsvRowsToAccountActions.ts +67 -0
  138. package/parseCsvText.ts +14 -0
  139. package/schemas/formatter.ts +13 -0
  140. package/schemas/formatterTypes.ts +44 -0
  141. package/schemas/index.ts +1 -0
  142. package/schemas/parser.ts +110 -0
  143. package/schemas/schemas.ts +11 -0
  144. package/tests/assets.ts +28 -0
  145. package/tests/coincheck-standard.csv +17 -0
  146. package/tests/coincheck.ts +137 -0
  147. 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":"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"}
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -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,5 @@
1
+ export { parseCsvFileToAccountActions } from './parseCsvFileToAccountActions';
2
+ export { parseCsvFileToText } from './parseCsvFileToText';
3
+ export { parseCsvText } from './parseCsvText';
4
+ export { csvFormatSchema } from './schemas';
5
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export { parseCsvRowToNormalAction } from './parseCsvRowToNormalAction';
2
+ //# sourceMappingURL=index.js.map
@@ -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"}