@0xtorch/csv 0.0.67 → 0.0.69

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 CHANGED
Binary file
@@ -28,6 +28,8 @@ const hasValidHeaderRow = async ({ file, encoding, format, }) => {
28
28
  return;
29
29
  }
30
30
  if (headerStartColumnRegExps !== undefined) {
31
+ console.debug('check row is header:');
32
+ console.debug(result.data);
31
33
  for (const [index, column] of headerStartColumnRegExps.entries()) {
32
34
  if (!column.test(result.data[index])) {
33
35
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"hasValidHeaderRow.js","sourceRoot":"","sources":["../hasValidHeaderRow.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAS1B,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,IAAI,EACJ,QAAQ,EACR,MAAM,GACsB,EAAE,EAAE;IAChC,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,MAAM,wBAAwB,GAC5B,MAAM,CAAC,kBAAkB,KAAK,SAAS;QACrC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAEzD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,IAAA,iBAAK,EAAC,IAAI,EAAE;YACV,MAAM,EAAE,KAAK;YACb,cAAc,EAAE,IAAI;YACpB,QAAQ;YACR,QAAQ,EAAE,GAAG,EAAE;gBACb,OAAO,EAAE,CAAA;YACX,CAAC;YACD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACvB,QAAQ,IAAI,CAAC,CAAA;gBACb,IACE,MAAM,CAAC,kBAAkB,KAAK,SAAS;oBACvC,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EACpC,CAAC;oBACD,MAAM,CAAC,KAAK,EAAE,CAAA;oBACd,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,KAAK,EAAE,CAAA;oBACd,OAAM;gBACR,CAAC;gBAED,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;oBAC3C,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,wBAAwB,CAAC,OAAO,EAAE,EAAE,CAAC;wBACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;4BACrC,OAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC/B,MAAM,CAAC,KAAK,EAAE,CAAA;wBACd,OAAM;oBACR,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,IAAI,CAAA;gBACd,MAAM,CAAC,KAAK,EAAE,CAAA;YAChB,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAxDY,QAAA,iBAAiB,qBAwD7B"}
1
+ {"version":3,"file":"hasValidHeaderRow.js","sourceRoot":"","sources":["../hasValidHeaderRow.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAS1B,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,IAAI,EACJ,QAAQ,EACR,MAAM,GACsB,EAAE,EAAE;IAChC,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,MAAM,wBAAwB,GAC5B,MAAM,CAAC,kBAAkB,KAAK,SAAS;QACrC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAEzD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,IAAA,iBAAK,EAAC,IAAI,EAAE;YACV,MAAM,EAAE,KAAK;YACb,cAAc,EAAE,IAAI;YACpB,QAAQ;YACR,QAAQ,EAAE,GAAG,EAAE;gBACb,OAAO,EAAE,CAAA;YACX,CAAC;YACD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACvB,QAAQ,IAAI,CAAC,CAAA;gBACb,IACE,MAAM,CAAC,kBAAkB,KAAK,SAAS;oBACvC,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EACpC,CAAC;oBACD,MAAM,CAAC,KAAK,EAAE,CAAA;oBACd,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,KAAK,EAAE,CAAA;oBACd,OAAM;gBACR,CAAC;gBAED,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;oBAC3C,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;oBACrC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,wBAAwB,CAAC,OAAO,EAAE,EAAE,CAAC;wBACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;4BACrC,OAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC/B,MAAM,CAAC,KAAK,EAAE,CAAA;wBACd,OAAM;oBACR,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,IAAI,CAAA;gBACd,MAAM,CAAC,KAAK,EAAE,CAAA;YAChB,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AA1DY,QAAA,iBAAiB,qBA0D7B"}
@@ -25,6 +25,8 @@ export const hasValidHeaderRow = async ({ file, encoding, format, }) => {
25
25
  return;
26
26
  }
27
27
  if (headerStartColumnRegExps !== undefined) {
28
+ console.debug('check row is header:');
29
+ console.debug(result.data);
28
30
  for (const [index, column] of headerStartColumnRegExps.entries()) {
29
31
  if (!column.test(result.data[index])) {
30
32
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"hasValidHeaderRow.js","sourceRoot":"","sources":["../hasValidHeaderRow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AASjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,IAAI,EACJ,QAAQ,EACR,MAAM,GACsB,EAAE,EAAE;IAChC,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,MAAM,wBAAwB,GAC5B,MAAM,CAAC,kBAAkB,KAAK,SAAS;QACrC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAEzD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,KAAK,CAAC,IAAI,EAAE;YACV,MAAM,EAAE,KAAK;YACb,cAAc,EAAE,IAAI;YACpB,QAAQ;YACR,QAAQ,EAAE,GAAG,EAAE;gBACb,OAAO,EAAE,CAAA;YACX,CAAC;YACD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACvB,QAAQ,IAAI,CAAC,CAAA;gBACb,IACE,MAAM,CAAC,kBAAkB,KAAK,SAAS;oBACvC,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EACpC,CAAC;oBACD,MAAM,CAAC,KAAK,EAAE,CAAA;oBACd,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,KAAK,EAAE,CAAA;oBACd,OAAM;gBACR,CAAC;gBAED,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;oBAC3C,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,wBAAwB,CAAC,OAAO,EAAE,EAAE,CAAC;wBACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;4BACrC,OAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC/B,MAAM,CAAC,KAAK,EAAE,CAAA;wBACd,OAAM;oBACR,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,IAAI,CAAA;gBACd,MAAM,CAAC,KAAK,EAAE,CAAA;YAChB,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
1
+ {"version":3,"file":"hasValidHeaderRow.js","sourceRoot":"","sources":["../hasValidHeaderRow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AASjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,IAAI,EACJ,QAAQ,EACR,MAAM,GACsB,EAAE,EAAE;IAChC,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAEhB,MAAM,wBAAwB,GAC5B,MAAM,CAAC,kBAAkB,KAAK,SAAS;QACrC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAEzD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,KAAK,CAAC,IAAI,EAAE;YACV,MAAM,EAAE,KAAK;YACb,cAAc,EAAE,IAAI;YACpB,QAAQ;YACR,QAAQ,EAAE,GAAG,EAAE;gBACb,OAAO,EAAE,CAAA;YACX,CAAC;YACD,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACvB,QAAQ,IAAI,CAAC,CAAA;gBACb,IACE,MAAM,CAAC,kBAAkB,KAAK,SAAS;oBACvC,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EACpC,CAAC;oBACD,MAAM,CAAC,KAAK,EAAE,CAAA;oBACd,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,KAAK,EAAE,CAAA;oBACd,OAAM;gBACR,CAAC;gBAED,IAAI,wBAAwB,KAAK,SAAS,EAAE,CAAC;oBAC3C,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;oBACrC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,wBAAwB,CAAC,OAAO,EAAE,EAAE,CAAC;wBACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;4BACrC,OAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC/B,MAAM,CAAC,KAAK,EAAE,CAAA;wBACd,OAAM;oBACR,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,IAAI,CAAA;gBACd,MAAM,CAAC,KAAK,EAAE,CAAA;YAChB,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"hasValidHeaderRow.d.ts","sourceRoot":"","sources":["../hasValidHeaderRow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,iBAAiB,gCAI3B,2BAA2B,qBAoD7B,CAAA"}
1
+ {"version":3,"file":"hasValidHeaderRow.d.ts","sourceRoot":"","sources":["../hasValidHeaderRow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,iBAAiB,gCAI3B,2BAA2B,qBAsD7B,CAAA"}
@@ -43,6 +43,8 @@ export const hasValidHeaderRow = async ({
43
43
  }
44
44
 
45
45
  if (headerStartColumnRegExps !== undefined) {
46
+ console.debug('check row is header:')
47
+ console.debug(result.data)
46
48
  for (const [index, column] of headerStartColumnRegExps.entries()) {
47
49
  if (!column.test(result.data[index])) {
48
50
  return
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xtorch/csv",
3
- "version": "0.0.67",
3
+ "version": "0.0.69",
4
4
  "description": "Cryptorch CSV extension",
5
5
  "keywords": [
6
6
  "cryptorch",
@@ -0,0 +1,18 @@
1
+ UID:,Account Type:,Time Zone:UTC+9
2
+ id,Order id,Time,Trade Type,Symbol,Action,Amount,Trading Unit,Filled Price,PnL,Fee,Fee Unit,Position Change,Position Balance,Balance Change,Balance,Balance Unit
3
+ 667165099547201542,667165099534618642,2024-01-16 01:35:55,Spot,ETH-USDT,Buy,0.06301100,ETH,2519.40000000,0E-8,-0.00003151,ETH,0E-8,0E-8,0.06297949,8.34093237,ETH
4
+ 667165099547201543,667165099534618642,2024-01-16 01:35:55,Spot,ETH-USDT,Sell,158.74991340,ETH,2519.40000000,0E-8,0E-8,USDT,0E-8,0E-8,-158.74991340,17202.73187832,USDT
5
+ 667166838446919694,667166838433615872,2024-01-16 01:42:49,Transfer,,Transfer in,0,cont,0E-8,0E-8,0E-8,USDT,0E-8,0E-8,3.87864514,17206.61052346,USDT
6
+ 667156126383247364,0,2024-01-16 01:00:15,Swap,ETH-USDT-SWAP,Funding fee income,10,cont,2515.07000000,0.45640796,0E-8,USDT,0E-8,0E-8,0.45640796,17156.08193268,USDT
7
+ 667035278628392989,529436909564100616,2024-01-15 17:00:03,Swap,AXS-USDT-SWAP,Funding fee expense,20000,cont,7.90200000,-6.69940146,0E-8,USDT,0E-8,0E-8,-6.69940146,17012.18748172,USDT
8
+ 665676914052861960,0,2024-01-11 23:02:23,Swap,AXS-USDT-SWAP,Manual margin increase,500,cont,0E-8,0E-8,0E-8,USDT,500.00000000,7831.00572500,-500.00000000,16523.01856039,USDT
9
+ 663776891149000707,0,2024-01-06 17:12:23,Swap,SLP-USDT-SWAP,Manual margin decrease,2000,cont,0E-8,0E-8,0E-8,USDT,-2000.00000000,9121.74769750,2000.00000000,16300.49863796,USDT
10
+ 662758029959929856,662758029951541258,2024-01-03 21:43:47,Swap,SUI-USDT-SWAP,Buy,449,cont,0.78400000,-78.60636183,-0.10560480,USDT,-276.84278373,836.69411475,198.13081711,12990.45785307,USDT
11
+ 662758029959929863,662758029951541258,2024-01-03 21:43:47,Swap,SUI-USDT-SWAP,Buy,81,cont,0.78410000,-14.18875771,-0.01905363,USDT,-49.94268482,0E-8,35.73487348,13589.22490604,USDT
12
+ 662758029959929859,662758029951541258,2024-01-03 21:43:47,Swap,SUI-USDT-SWAP,Buy,330,cont,0.78400000,-57.77304990,-0.07761600,USDT,-203.47019740,234.91559154,145.61953151,13421.13864928,USDT
13
+ 662758029959929861,662758029951541258,2024-01-03 21:43:47,Swap,SUI-USDT-SWAP,Buy,300,cont,0.78410000,-52.55095445,-0.07056900,USDT,-184.97290672,49.94268482,132.35138328,13553.49003255,USDT
14
+ 662758029959929857,662758029951541258,2024-01-03 21:43:47,Swap,SUI-USDT-SWAP,Buy,646,cont,0.78400000,-113.09512191,-0.15193920,USDT,-398.30832581,438.38578894,285.06126470,13275.51911777,USDT
15
+ 662758029955735578,662758029951541258,2024-01-03 21:43:47,Swap,SUI-USDT-SWAP,Buy,257,cont,0.78400000,-44.99295098,-0.06044640,USDT,-158.46012343,1271.99702191,113.40672605,12678.92030991,USDT
16
+ 662758029955735568,662758029951541258,2024-01-03 21:43:47,Swap,SUI-USDT-SWAP,Buy,300,cont,0.78390000,-52.49095445,-0.07055100,USDT,-184.97290672,1707.91650542,132.41140128,12366.94149544,USDT
17
+ 662758029955735576,662758029951541258,2024-01-03 21:43:47,Swap,SUI-USDT-SWAP,Buy,450,cont,0.78400000,-78.78143168,-0.10584000,USDT,-277.45936009,1430.45714534,198.57208842,12565.51358386,USDT
18
+ 662758029955735582,662758029951541258,2024-01-03 21:43:47,Swap,SUI-USDT-SWAP,Buy,257,cont,0.78400000,-44.99295098,-0.06044640,USDT,-158.46012343,1113.53689848,113.40672605,12792.32703596,USDT
@@ -0,0 +1,3 @@
1
+ UID:469514189849931987,Account Type:Sub,Time Zone:UTC+9
2
+ id,Order id,Time,Trade Type,Symbol,Action,Amount,Trading Unit,Filled Price,PnL,Fee,Fee Unit,Position Change,Position Balance,Balance Change,Balance,Balance Unit
3
+ 684488648108486666,684488648086896640,2024-03-03 20:53:30,Transfer,,Transfer out,0,cont,0E-8,0E-8,0E-8,WLD,0E-8,0E-8,-0.00015600,0E-8,WLD
package/tests/okx.ts ADDED
@@ -0,0 +1,275 @@
1
+ import type { CsvFormat } from '../types'
2
+
3
+ export const okxTradeJstFormat = {
4
+ id: 'okx-trade-jst',
5
+ service: 'okx',
6
+ headerStartColumns: ['^.*id$'],
7
+ headerCheckRowSize: 4,
8
+ formatter: {
9
+ 'Order id': ['string'],
10
+ Time: ['iso8601-jp'],
11
+ 'Trade Type': ['string'],
12
+ Symbol: ['string'],
13
+ Action: ['string'],
14
+ PnL: ['big-decimal'],
15
+ Fee: ['big-decimal'],
16
+ 'Fee Unit': ['string'],
17
+ 'Balance Change': ['big-decimal'],
18
+ 'Balance Unit': ['string'],
19
+ },
20
+ parser: {
21
+ key: ['Order id', 'Time'],
22
+ parsers: [
23
+ {
24
+ conditions: [
25
+ {
26
+ value: { type: 'cell', column: 'Trade Type', row: 0 },
27
+ pattern: 'Swap',
28
+ },
29
+ {
30
+ value: { type: 'cell', column: 'Action', row: 0 },
31
+ pattern: {
32
+ type: 'in',
33
+ values: ['Buy', 'Sell'],
34
+ },
35
+ },
36
+ ],
37
+ generators: [
38
+ {
39
+ type: 'realize-profit',
40
+ source: {
41
+ type: 'join',
42
+ values: [
43
+ { type: 'service' },
44
+ '_trade_',
45
+ { type: 'cell', column: 'Order id', row: 0 },
46
+ '_',
47
+ { type: 'cell', column: 'Time', row: 0 },
48
+ ],
49
+ },
50
+ timestamp: {
51
+ type: 'cell',
52
+ column: 'Time',
53
+ row: 0,
54
+ },
55
+ comment: {
56
+ type: 'join',
57
+ values: [
58
+ 'Trade Type: ',
59
+ { type: 'cell', column: 'Trade Type', row: 0 },
60
+ ' / Symbol: ',
61
+ { type: 'cell', column: 'Symbol', row: 0 },
62
+ ' / Action: ',
63
+ { type: 'cell', column: 'Action', row: 0 },
64
+ ],
65
+ },
66
+ transfers: [
67
+ {
68
+ target: [
69
+ {
70
+ column: 'PnL',
71
+ pattern: { type: 'positive' },
72
+ },
73
+ ],
74
+ direction: 'in',
75
+ amount: {
76
+ type: 'text',
77
+ value: { type: 'cell', column: 'PnL', row: 0 },
78
+ },
79
+ asset: {
80
+ type: 'symbol',
81
+ value: { type: 'cell', column: 'Fee Unit', row: 0 },
82
+ },
83
+ },
84
+ ],
85
+ },
86
+ {
87
+ type: 'realize-loss',
88
+ source: {
89
+ type: 'join',
90
+ values: [
91
+ { type: 'service' },
92
+ '_trade_',
93
+ { type: 'cell', column: 'Order id', row: 0 },
94
+ '_',
95
+ { type: 'cell', column: 'Time', row: 0 },
96
+ ],
97
+ },
98
+ timestamp: {
99
+ type: 'cell',
100
+ column: 'Time',
101
+ row: 0,
102
+ },
103
+ comment: {
104
+ type: 'join',
105
+ values: [
106
+ 'Trade Type: ',
107
+ { type: 'cell', column: 'Trade Type', row: 0 },
108
+ ' / Symbol: ',
109
+ { type: 'cell', column: 'Symbol', row: 0 },
110
+ ' / Action: ',
111
+ { type: 'cell', column: 'Action', row: 0 },
112
+ ],
113
+ },
114
+ transfers: [
115
+ {
116
+ target: [
117
+ {
118
+ column: 'PnL',
119
+ pattern: { type: 'negative' },
120
+ },
121
+ ],
122
+ direction: 'out',
123
+ amount: {
124
+ type: 'text',
125
+ value: { type: 'cell', column: 'PnL', row: 0 },
126
+ },
127
+ asset: {
128
+ type: 'symbol',
129
+ value: { type: 'cell', column: 'Fee Unit', row: 0 },
130
+ },
131
+ },
132
+ ],
133
+ },
134
+ {
135
+ type: 'fee',
136
+ source: {
137
+ type: 'join',
138
+ values: [
139
+ { type: 'service' },
140
+ '_trade_',
141
+ { type: 'cell', column: 'Order id', row: 0 },
142
+ '_',
143
+ { type: 'cell', column: 'Time', row: 0 },
144
+ ],
145
+ },
146
+ timestamp: {
147
+ type: 'cell',
148
+ column: 'Time',
149
+ row: 0,
150
+ },
151
+ comment: {
152
+ type: 'join',
153
+ values: [
154
+ 'Trade Type: ',
155
+ { type: 'cell', column: 'Trade Type', row: 0 },
156
+ ' / Symbol: ',
157
+ { type: 'cell', column: 'Symbol', row: 0 },
158
+ ' / Action: ',
159
+ { type: 'cell', column: 'Action', row: 0 },
160
+ ],
161
+ },
162
+ transfers: [
163
+ {
164
+ target: [
165
+ {
166
+ column: 'Fee',
167
+ pattern: { type: 'negative' },
168
+ },
169
+ ],
170
+ direction: 'out',
171
+ amount: {
172
+ type: 'text',
173
+ value: { type: 'cell', column: 'Fee', row: 0 },
174
+ },
175
+ asset: {
176
+ type: 'symbol',
177
+ value: { type: 'cell', column: 'Fee Unit', row: 0 },
178
+ },
179
+ },
180
+ ],
181
+ },
182
+ ],
183
+ },
184
+ {
185
+ conditions: [
186
+ {
187
+ value: { type: 'cell', column: 'Trade Type', row: 0 },
188
+ pattern: 'Swap',
189
+ },
190
+ {
191
+ value: { type: 'cell', column: 'Action', row: 0 },
192
+ pattern: {
193
+ type: 'in',
194
+ values: ['Manual margin increase', 'Manual margin decrease'],
195
+ },
196
+ },
197
+ ],
198
+ generators: [
199
+ {
200
+ type: 'ignore',
201
+ source: {
202
+ type: 'join',
203
+ values: [
204
+ { type: 'service' },
205
+ '_trade_',
206
+ { type: 'cell', column: 'Order id', row: 0 },
207
+ '_',
208
+ { type: 'cell', column: 'Time', row: 0 },
209
+ ],
210
+ },
211
+ timestamp: {
212
+ type: 'cell',
213
+ column: 'Time',
214
+ row: 0,
215
+ },
216
+ comment: {
217
+ type: 'join',
218
+ values: [
219
+ 'Trade Type: ',
220
+ { type: 'cell', column: 'Trade Type', row: 0 },
221
+ ' / Action: ',
222
+ { type: 'cell', column: 'Action', row: 0 },
223
+ ' / Balance Change: ',
224
+ { type: 'cell', column: 'Balance Change', row: 0 },
225
+ { type: 'cell', column: 'Balance Unit', row: 0 },
226
+ ],
227
+ },
228
+ transfers: [],
229
+ },
230
+ ],
231
+ },
232
+ {
233
+ conditions: [
234
+ {
235
+ value: { type: 'cell', column: 'Trade Type', row: 0 },
236
+ pattern: 'Transfer',
237
+ },
238
+ ],
239
+ generators: [
240
+ {
241
+ type: 'ignore',
242
+ source: {
243
+ type: 'join',
244
+ values: [
245
+ { type: 'service' },
246
+ '_trade_',
247
+ { type: 'cell', column: 'Order id', row: 0 },
248
+ '_',
249
+ { type: 'cell', column: 'Time', row: 0 },
250
+ ],
251
+ },
252
+ timestamp: {
253
+ type: 'cell',
254
+ column: 'Time',
255
+ row: 0,
256
+ },
257
+ comment: {
258
+ type: 'join',
259
+ values: [
260
+ 'Trade Type: ',
261
+ { type: 'cell', column: 'Trade Type', row: 0 },
262
+ ' / Action: ',
263
+ { type: 'cell', column: 'Action', row: 0 },
264
+ ' / Balance Change: ',
265
+ { type: 'cell', column: 'Balance Change', row: 0 },
266
+ { type: 'cell', column: 'Balance Unit', row: 0 },
267
+ ],
268
+ },
269
+ transfers: [],
270
+ },
271
+ ],
272
+ },
273
+ ],
274
+ },
275
+ } satisfies CsvFormat