Initial commit

This commit is contained in:
Spencer Pincott
2024-07-15 22:20:13 -04:00
commit 97737ca1ae
16618 changed files with 934131 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
TIMESTAMP,UPDATE,UID,BYTES SENT,BYTES RCVED
1395426422,n,10028,1213,5461
1395426422,n,10013,9954,13560
1395426422,n,10109,221391500,141836
1395426422,n,10007,53448,308549
1395426422,n,10022,15506,72125

View File

@@ -0,0 +1,3 @@
fieldA.title, fieldA.children.0.name, fieldA.children.0.id,fieldA.children.1.name, fieldA.children.1.employee.0.name,fieldA.children.1.employee.1.name, fieldA.address.0,fieldA.address.1, description
Food Factory, Oscar, 0023, Tikka, Tim, Joe, 3 Lame Road, Grantstown, A fresh new food factory
Kindom Garden, Ceil, 54, Pillow, Amst, Tom, 24 Shaker Street, HelloTown, Awesome castle

View File

@@ -0,0 +1,3 @@
Date and time,Sample no.,Status,Sample type,Patient ID,Last name,First name,Sex of patient,Patient birth date,Patient note,Patient department,Accession number,Sample site,Physician,Operator,Department,Note,Test order code,Draw time,Approval status,Approval time,Report layout,Patient account number,,Errors detected during measurement,"Age" (years),Error code,"Weight" (kg),Error code,"Height" (m),Error code,"HCG_Beta(P)" (mIU/mL),Error code,"Troponin_I(P)" (ng/mL),Error code,"CK_MB(P)" (ng/mL),Error code,"D-Dimer(P)" (ng/mL),Error code,"hsCRP(P)" (mg/L),Error code,"Myoglobin(P)" (ng/mL),Error code,"NT-proBNP" (pg/mL),Error code,"CRP" (mg/dL),Error code,"BNP" (ng/L),Error code,"TnT" (ng/mL),Error code,"Demo(P)" (AQT),Error code,"PCT" (ng/mL),Error code,
"06/14/2018 10:34 AM","12669","OK","","4206454447","","","Unknown","","","","4206454447","","","Anonymous","","","400",,"Not reviewed","","New","",,"",,,,,,,,,,,,,,,,,,,168,"",,,,,,,,,,
"06/14/2018 10:19 AM","12668","OK","","4206454403","","","Unknown","","","","4206454403","","","Anonymous","","","101",,"Not reviewed","","New","",,"",,,,,,,,,<0.010,"",4.2,"",,,,,,,,,,,,,,,,,,

View File

@@ -0,0 +1,4 @@
field1, field2, field3, field4,
2005088801,A1,9001009395,
2005088806,A6,9001009395 9001009990,
2005088807,A7,9001009989,

View File

@@ -0,0 +1,3 @@
annee;jour;date;b_1;b_2;devise;
2015029;LUNDI ;09/03/2015;35;31;eur;
2015028;SAMEDI ;07/03/2015;48;9;eur;

View File

@@ -0,0 +1,13 @@
col1, col2.0, col2.1,col4.col3,col4.col5
d1,,d3,,world
d2,d,d,d,d
,,,,
d4,d2,d3

View File

@@ -0,0 +1,3 @@
"name","age"
"joe","20"
"sam","30"

View File

@@ -0,0 +1,3 @@
name,age
joe,20
sam,30

201
themes/keepit/node_modules/csvtojson/test/data/dataTsv generated vendored Normal file
View File

@@ -0,0 +1,201 @@
name dob address.street address.city address.country guid
Edward 09-26-15 155-5699 Lobortis, Street Sauveni<6E>re Guinea 7DEC987B-CD15-2967-BB88-98A9DE869AC2
Jason 12-24-14 Ap #394-4852 Lorem, Rd. Barchi Niger F8A268A9-70F9-8298-CADA-22E29CC973E9
Colin 04-15-15 Ap #738-1831 Pretium Avenue Lafayette Tuvalu 99C2A67A-82FD-4FD2-B13D-41021A93CD34
Ulric 07-13-15 335-3099 Cum St. Aix-en-Provence Mozambique 59844D4F-FB53-E903-67C4-7B0DCA451420
Vance 11-08-15 Ap #805-4137 Nulla Road Ligney South Sudan CB3B9B77-12C0-1D8D-96AF-982CFBDC04D8
Mason 06-06-15 Ap #750-6911 Aliquam St. Maisi<73>res Benin D5E21534-EF42-0C7C-5761-8D55A418F78C
Jesse 08-04-15 P.O. Box 371, 2374 Malesuada Ave Aschersleben Pitcairn Islands FFB87D4C-C25B-8B2A-C65D-0C0CF04ECD19
Xenos 01-08-15 P.O. Box 302, 9020 Sed Avenue Ancaster Town Guam 5ACC0483-30D0-194F-8E0A-F2BB9CB7E41C
Dalton 04-10-15 Ap #987-4193 Suspendisse Street Bromyard United States E0DE1186-15BD-025A-425E-5A551CB66FCA
Maxwell 01-03-15 P.O. Box 297, 2759 Per Avenue Rae-Edzo Namibia 5E880371-EB39-D705-B6BA-B1C47A0FB20F
Josiah 12-29-15 481-4517 Justo. Rd. Vreren Ethiopia 6146E324-1713-031D-4A05-00DA9A6E0A72
Dillon 01-15-15 903-2925 Sed Rd. Bath Solomon Islands B6784798-C745-6B8B-EFC3-DDB456766B3A
Lucas 04-07-16 Ap #212-4291 Non Ave Mount Isa Bermuda 4BF02F00-6543-E955-2CB3-147DB5ACC996
Kane 10-27-15 Ap #855-8041 Aliquam Road Bloomington Isle of Man 7D5F7EF0-1DA1-2956-913E-9DD0232FE82B
Jermaine 02-08-16 6536 Sollicitudin Rd. Lens-Saint-Servais Laos 98480101-570D-3989-8607-DF037CE2C04D
Scott 05-11-16 982-7468 Aliquam Avenue Eckville Wallis and Futuna F9E86E1B-C940-93BC-F269-90120A50A828
Ronan 07-02-15 P.O. Box 351, 6427 Sociis St. R<>dermark Kenya 13E31F6C-A4BE-3B63-C208-0F9EDC33231C
Paul 09-17-16 4613 Tortor, Av. Riksingen Central African Republic 2830470E-9126-E1F0-EFE7-75E16F47E605
Fulton 04-16-16 4351 Elit, Road Sint-Gillis Cape Verde 5B8782C1-12C1-0EE0-5229-5AB14D06BD57
Lamar 05-18-16 9263 Mollis. Road Veerle Nepal 4ED58B8B-35D8-732C-C232-4228154A009A
Charles 12-27-14 Ap #239-2452 Nec Avenue Saskatoon New Caledonia E7C99399-87EA-F908-59E9-CCB1B40AF168
Kaseem 09-28-16 Ap #958-9657 Cursus Road Sunset Point Ukraine 5BAA6A09-9E8C-8AEA-962D-B7371368DB8C
Baxter 09-14-15 P.O. Box 566, 4372 Feugiat Av. LaSalle Serbia 8190712E-A2AD-3CC9-89B4-2301F9570595
Lionel 05-12-16 3005 Suspendisse St. Zuienkerke Mali 2CD8B4BB-6CD5-2D4C-9074-FBBF5462E471
Quinn 12-20-15 P.O. Box 799, 2708 Augue Ave Chapadinha Mongolia 9BDB232A-24B6-4020-CF05-2195FCC7A683
Channing 10-12-15 P.O. Box 263, 6647 Eleifend Road Ajaccio Botswana 88C7710E-4B0A-739A-CCFA-68656D352511
Evan 10-12-15 877-3353 In St. Torella del Sannio Togo 936FDD4C-7489-285F-B391-28F15291FA15
Deacon 01-01-15 P.O. Box 896, 2131 Mollis. Rd. San Pietro al Tanagro Niue D0489775-4C8B-B6A4-B13F-69F1EFE6A2BB
Hyatt 08-09-15 Ap #628-8427 Semper Street Northallerton Ireland 1645C905-04E6-3187-05FD-FF3EF3B1909C
Mason 03-08-15 1919 Rhoncus. Road La Matap<61>dia Latvia 948764BD-0D67-8193-7F71-DB8B75405BB8
Aquila 07-16-16 Ap #367-5036 Lobortis Street Wasseiges Christmas Island 9D78ECF4-D785-16F6-1506-EFEC7A2E680C
Jesse 12-09-14 Ap #524-1274 Nec Rd. Elgin Faroe Islands 4A4F0E32-EFF6-B1C7-7FE6-8701C4849DAD
Norman 06-08-16 365-7493 Proin Ave Pitlochry Norfolk Island C4002F4B-703A-356B-3B52-EF349E11BBD2
Dale 05-07-16 P.O. Box 149, 7946 Bibendum. St. Narbonne Cayman Islands DCAFA688-BDF2-DFC9-F545-B6191F3AABBA
Fletcher 10-08-16 Ap #984-4339 Id Avenue Appelterre-Eichem Nauru C870B22E-A1DC-A376-0589-63A6E97F4459
Murphy 07-02-16 P.O. Box 736, 2911 Ut Rd. Dorval Pitcairn Islands D2F75F2B-2CC8-9BD3-2DF1-6F6C1537F228
Carson 10-11-16 4270 Nulla Rd. Halen Israel A3EC0D50-A0C9-9625-28AD-B3933A81C5F1
Brennan 12-11-14 P.O. Box 142, 9526 Ante, Avenue Cochin Bonaire, Sint Eustatius and Saba BB02EC4A-C57C-1F61-9298-45C7C3EB55B5
Dennis 09-14-16 Ap #292-9945 Iaculis Street Santander Mayotte 93ACD6FF-E620-D8A4-985F-2DB67BE630B7
Amir 10-10-15 P.O. Box 369, 979 Senectus Av. Wardin Armenia 79FF5F4E-03F8-7DAC-09B4-A8076E3F39A9
Palmer 10-09-16 3086 Eu Road Sossano Cameroon 66ABAEF0-2A60-27C5-2B4D-6C1D08F0148F
Dorian 06-27-16 483-7380 Etiam Av. Zierikzee Ireland FCC92CC2-C59B-07A4-034D-7AC1F56FF893
Donovan 10-19-16 P.O. Box 282, 1555 Molestie Avenue Kırıkhan Equatorial Guinea 6E1C773F-7579-01A6-2C2F-50CD28E99AC5
Wesley 08-26-15 P.O. Box 557, 4171 Eget St. Banchory Jersey D889335F-815F-B91A-7C92-814CF8491944
Damon 08-13-15 Ap #724-7527 Lobortis, Avenue Juneau Mauritius 65336375-864D-DA66-043D-C4461F3B3A21
Cooper 08-25-16 832-3247 In Road Pike Creek Somalia 57CAFF15-A497-D20D-9D36-E3AE78C77F2B
Flynn 10-12-15 401 Congue, Street Rouvroy Paraguay 81FE1E24-7843-25EA-BE5B-C2598C4453BF
Declan 03-12-15 686-1101 Dignissim. Rd. Bad Oldesloe Trinidad and Tobago 124E4702-21AA-3617-D6EF-0A680BF287F9
Ryder 10-21-16 1151 Eu Ave Orsara di Puglia Chad 6947FFF6-F8F2-637D-4DB2-EF746659E965
Allen 06-30-15 Ap #756-3480 Accumsan Street Carnoustie Taiwan 5631AE3E-6E47-53BD-8891-817B4CC3512D
Charles 01-02-15 P.O. Box 940, 6735 Sed, Street Mandi Burewala Nauru 876E1717-ECCC-6359-47B5-97BA80A2B29C
Travis 10-07-15 P.O. Box 162, 8293 Duis St. Geesthacht Samoa BB3CEE82-1B41-F4B9-8045-08F1C9B7A17F
Beck 06-01-16 2021 Maecenas St. Hugli-Chinsurah Pakistan F7ABADF7-9EC5-F5C6-FF32-ADAE093ACA10
Chadwick 02-24-15 286-4943 Sodales St. Stockport Mauritania C04926C6-A52C-B7EF-1569-F9A5B5EDD8B7
Eric 03-22-16 Ap #443-2598 Malesuada Rd. Sutton Jersey 70152CA1-69C1-F88E-E19F-D0DFB191072C
Jarrod 02-28-16 P.O. Box 573, 5483 Mattis. Street Treglio Djibouti 4477A21E-68A0-BB81-C78B-009276AC2309
Sebastian 08-10-16 P.O. Box 486, 5119 Dis Av. Weesp Singapore C4396AD3-9AA0-423B-A372-DE21B5AE757F
Robert 10-20-15 9597 Morbi Ave Haren Micronesia DAE70851-B015-A9FC-0222-57DF9EE41EDE
Garrison 01-29-16 112-727 Sed St. Pickering Dominican Republic FD8F4927-407A-F57C-A668-732631AEE69F
Dominic 10-22-16 P.O. Box 379, 6763 Neque St. Colwood Cocos (Keeling) Islands BAB8741F-A3FA-C1DF-77CE-4E05C483CA6C
Adrian 01-30-15 P.O. Box 993, 5994 Tempus, Av. Kelowna Korea, North 35627FC0-8C04-45EE-52C0-DA52EFA4331C
Cullen 01-15-15 Ap #119-8754 Parturient St. Mazy Haiti 008EE5DE-9370-1F99-9F53-3E27D088D1FD
Gray 05-02-16 P.O. Box 694, 9954 Posuere Av. Magdeburg Korea, North C2C7C509-8D31-FE4C-8B1F-D4798D03CC27
Rogan 02-03-15 203 Diam St. Rimbey Trinidad and Tobago 775A58E6-3F69-DE34-2795-10A4FA610E59
Plato 12-11-15 Ap #973-9650 Primis St. Colwood Tokelau E89C96FA-D021-A966-D8B7-4012C2B7D08A
Jarrod 12-21-14 741-959 Pede Av. Bad Vilbel Honduras 2833D3A2-A195-90CC-5344-DCD810C95ABD
Forrest 03-19-15 8901 Magna Avenue Esterzili United Kingdom (Great Britain) 75F9D959-8A54-E131-628A-13AE6B5A470E
Erich 01-05-15 P.O. Box 527, 4985 Luctus Street Ponte nelle Alpi Iran 1552F559-B952-06C7-5192-BD07E359AE35
Dalton 06-18-16 576-7919 Ut St. Merzig Holy See (Vatican City State) 8583B5E6-2403-FD3E-C565-462B8FD7612F
Hasad 02-15-16 P.O. Box 208, 7841 Conubia Street Rothesay Marshall Islands 79B9F905-C923-552D-EDAD-1BA121782459
Tate 06-18-15 P.O. Box 724, 3627 Magna. St. Iowa City Peru 6F0D2D02-10CD-B4E2-052D-96F7583D2BFE
Amos 05-05-15 644-6779 Nascetur Ave Brixton Tunisia 8684D7A8-5EAF-6437-E11F-627463B1F18A
Todd 01-19-15 7501 Metus. Street Galbiate Yemen 6EF8DEBF-367C-EDA3-0095-4CE84EEE0B5F
Magee 02-28-15 840-3378 Porttitor Avenue Rocky View Benin 0E78AEB3-5837-C394-0F74-521A5197D00C
Amal 12-10-14 P.O. Box 985, 561 Risus. Street Mirzapur-cum-Vindhyachal Congo, the Democratic Republic of the 24BF71D4-1656-A0AA-4297-B981FE305195
Ahmed 09-05-15 P.O. Box 973, 9430 Neque. Rd. Oromocto Belgium 1F254A19-2447-39BD-DF00-CEDBC8D54356
Jackson 01-02-16 P.O. Box 756, 8760 Ultricies Avenue Chartres Dominica CE19C68C-FCF8-D069-0B97-D4547CE34851
Mannix 10-04-16 P.O. Box 381, 2207 Cum Rd. Hartford Korea, South 5B6F4C08-92DE-53CD-92BD-B0ACB55DB9AD
Adrian 08-14-15 P.O. Box 214, 2410 Amet Street Ipatinga Côte D'Ivoire (Ivory Coast) 70F29ED9-D666-B24B-2266-C9556148D161
Flynn 08-10-16 P.O. Box 149, 5993 Mollis Road Siracusa Belarus FA5AE1AE-E808-1DBC-4C94-4532BBC7F71B
Armand 12-13-15 Ap #175-342 Vitae, Avenue Saint-Rhémy-en-Bosses Togo CCBA04A7-8D9A-0811-06E8-83167FDCB56A
Warren 01-07-15 130-3775 Massa. Road Brixton Papua New Guinea F294CBEE-CC10-8F2E-7C1F-82B2E9DD70AF
David 10-17-16 245-1747 Blandit Rd. Bastia Umbra Cocos (Keeling) Islands B6579554-4C36-6452-1495-9E01D652436C
Hu 09-11-16 453-2346 Ante Ave Whitehaven Bouvet Island 188370B5-9285-24B8-9E03-D5B4F9BCA3E2
James 03-08-15 2669 Nam Av. Cambridge Guinea 71D87ECA-94CD-CBA7-A557-9CD119C8C752
Dexter 02-26-16 653-3752 Nunc Street Hearst Austria 84429BD8-70A3-0A9D-5619-33F749C0858F
Theodore 09-09-16 Ap #645-9999 Nam Rd. Maidenhead Gabon 7F801674-E786-AB3A-A822-202776D33212
Yasir 11-09-15 283-2518 Accumsan Road Kempten Heard Island and Mcdonald Islands 3D46A729-E760-CA01-4C90-32938AE5E952
Marvin 04-24-16 P.O. Box 467, 2421 Gravida Rd. Siena Slovakia 0027CB01-3982-D9A8-C8D8-024F5DBAF0CC
Travis 04-20-16 Ap #669-4818 Nisl Rd. Mosciano Sant'Angelo Armenia EF3BB505-4054-E7DF-3212-B6BA09FB6FE2
Cullen 02-14-15 P.O. Box 902, 5025 Aliquam Street Tintange Colombia E0242050-CDAF-1EEF-6BCC-CE1B1D4BEF7C
Griffin 03-28-15 Ap #990-3013 Aliquet. Rd. Wepion Brunei 5E282F96-ED09-D0EE-5B23-AB496871DDBC
Keegan 06-02-16 Ap #390-8084 Elementum Street Idaho Falls Nauru 0EEB2712-4DBC-CA61-5DC2-7D8E2519E831
Gavin 03-31-15 P.O. Box 635, 4723 Hendrerit Rd. Torrevieja Macao 19D3F50A-951A-17B0-242F-1013E8EAC8F9
Paki 12-17-15 P.O. Box 512, 277 Augue St. Horsham Cape Verde C1AB7BEF-7DCA-5A79-D4D0-42C70D212677
Oleg 05-22-15 P.O. Box 398, 6647 Quis Rd. Eisden Ethiopia DA124388-152B-EB65-669A-34927AF30596
Orlando 07-20-15 Ap #575-4637 Non St. Cerreto di Spoleto Solomon Islands CC8A6504-0489-A622-8AEA-CE2FF0CE001F
Xander 02-26-15 Ap #977-190 Eu Rd. Vespolate Guyana D98E0C02-55C1-C5A4-0723-D637099CA8CE
Ishmael 08-19-16 151-6314 Varius St. Sulzano Syria 8DBB274F-1417-6B03-7907-24FF5E2A1761
Isaiah 09-27-15 Ap #584-7955 Ut Street H<>villers Indonesia 8AE27E32-0759-EDAD-1AC2-F2664B4D2CA0
Edward 09-26-15 155-5699 Lobortis, Street Sauveni<6E>re Guinea 7DEC987B-CD15-2967-BB88-98A9DE869AC2
Jason 12-24-14 Ap #394-4852 Lorem, Rd. Barchi Niger F8A268A9-70F9-8298-CADA-22E29CC973E9
Colin 04-15-15 Ap #738-1831 Pretium Avenue Lafayette Tuvalu 99C2A67A-82FD-4FD2-B13D-41021A93CD34
Ulric 07-13-15 335-3099 Cum St. Aix-en-Provence Mozambique 59844D4F-FB53-E903-67C4-7B0DCA451420
Vance 11-08-15 Ap #805-4137 Nulla Road Ligney South Sudan CB3B9B77-12C0-1D8D-96AF-982CFBDC04D8
Mason 06-06-15 Ap #750-6911 Aliquam St. Maisi<73>res Benin D5E21534-EF42-0C7C-5761-8D55A418F78C
Jesse 08-04-15 P.O. Box 371, 2374 Malesuada Ave Aschersleben Pitcairn Islands FFB87D4C-C25B-8B2A-C65D-0C0CF04ECD19
Xenos 01-08-15 P.O. Box 302, 9020 Sed Avenue Ancaster Town Guam 5ACC0483-30D0-194F-8E0A-F2BB9CB7E41C
Dalton 04-10-15 Ap #987-4193 Suspendisse Street Bromyard United States E0DE1186-15BD-025A-425E-5A551CB66FCA
Maxwell 01-03-15 P.O. Box 297, 2759 Per Avenue Rae-Edzo Namibia 5E880371-EB39-D705-B6BA-B1C47A0FB20F
Josiah 12-29-15 481-4517 Justo. Rd. Vreren Ethiopia 6146E324-1713-031D-4A05-00DA9A6E0A72
Dillon 01-15-15 903-2925 Sed Rd. Bath Solomon Islands B6784798-C745-6B8B-EFC3-DDB456766B3A
Lucas 04-07-16 Ap #212-4291 Non Ave Mount Isa Bermuda 4BF02F00-6543-E955-2CB3-147DB5ACC996
Kane 10-27-15 Ap #855-8041 Aliquam Road Bloomington Isle of Man 7D5F7EF0-1DA1-2956-913E-9DD0232FE82B
Jermaine 02-08-16 6536 Sollicitudin Rd. Lens-Saint-Servais Laos 98480101-570D-3989-8607-DF037CE2C04D
Scott 05-11-16 982-7468 Aliquam Avenue Eckville Wallis and Futuna F9E86E1B-C940-93BC-F269-90120A50A828
Ronan 07-02-15 P.O. Box 351, 6427 Sociis St. R<>dermark Kenya 13E31F6C-A4BE-3B63-C208-0F9EDC33231C
Paul 09-17-16 4613 Tortor, Av. Riksingen Central African Republic 2830470E-9126-E1F0-EFE7-75E16F47E605
Fulton 04-16-16 4351 Elit, Road Sint-Gillis Cape Verde 5B8782C1-12C1-0EE0-5229-5AB14D06BD57
Lamar 05-18-16 9263 Mollis. Road Veerle Nepal 4ED58B8B-35D8-732C-C232-4228154A009A
Charles 12-27-14 Ap #239-2452 Nec Avenue Saskatoon New Caledonia E7C99399-87EA-F908-59E9-CCB1B40AF168
Kaseem 09-28-16 Ap #958-9657 Cursus Road Sunset Point Ukraine 5BAA6A09-9E8C-8AEA-962D-B7371368DB8C
Baxter 09-14-15 P.O. Box 566, 4372 Feugiat Av. LaSalle Serbia 8190712E-A2AD-3CC9-89B4-2301F9570595
Lionel 05-12-16 3005 Suspendisse St. Zuienkerke Mali 2CD8B4BB-6CD5-2D4C-9074-FBBF5462E471
Quinn 12-20-15 P.O. Box 799, 2708 Augue Ave Chapadinha Mongolia 9BDB232A-24B6-4020-CF05-2195FCC7A683
Channing 10-12-15 P.O. Box 263, 6647 Eleifend Road Ajaccio Botswana 88C7710E-4B0A-739A-CCFA-68656D352511
Evan 10-12-15 877-3353 In St. Torella del Sannio Togo 936FDD4C-7489-285F-B391-28F15291FA15
Deacon 01-01-15 P.O. Box 896, 2131 Mollis. Rd. San Pietro al Tanagro Niue D0489775-4C8B-B6A4-B13F-69F1EFE6A2BB
Hyatt 08-09-15 Ap #628-8427 Semper Street Northallerton Ireland 1645C905-04E6-3187-05FD-FF3EF3B1909C
Mason 03-08-15 1919 Rhoncus. Road La Matap<61>dia Latvia 948764BD-0D67-8193-7F71-DB8B75405BB8
Aquila 07-16-16 Ap #367-5036 Lobortis Street Wasseiges Christmas Island 9D78ECF4-D785-16F6-1506-EFEC7A2E680C
Jesse 12-09-14 Ap #524-1274 Nec Rd. Elgin Faroe Islands 4A4F0E32-EFF6-B1C7-7FE6-8701C4849DAD
Norman 06-08-16 365-7493 Proin Ave Pitlochry Norfolk Island C4002F4B-703A-356B-3B52-EF349E11BBD2
Dale 05-07-16 P.O. Box 149, 7946 Bibendum. St. Narbonne Cayman Islands DCAFA688-BDF2-DFC9-F545-B6191F3AABBA
Fletcher 10-08-16 Ap #984-4339 Id Avenue Appelterre-Eichem Nauru C870B22E-A1DC-A376-0589-63A6E97F4459
Murphy 07-02-16 P.O. Box 736, 2911 Ut Rd. Dorval Pitcairn Islands D2F75F2B-2CC8-9BD3-2DF1-6F6C1537F228
Carson 10-11-16 4270 Nulla Rd. Halen Israel A3EC0D50-A0C9-9625-28AD-B3933A81C5F1
Brennan 12-11-14 P.O. Box 142, 9526 Ante, Avenue Cochin Bonaire, Sint Eustatius and Saba BB02EC4A-C57C-1F61-9298-45C7C3EB55B5
Dennis 09-14-16 Ap #292-9945 Iaculis Street Santander Mayotte 93ACD6FF-E620-D8A4-985F-2DB67BE630B7
Amir 10-10-15 P.O. Box 369, 979 Senectus Av. Wardin Armenia 79FF5F4E-03F8-7DAC-09B4-A8076E3F39A9
Palmer 10-09-16 3086 Eu Road Sossano Cameroon 66ABAEF0-2A60-27C5-2B4D-6C1D08F0148F
Dorian 06-27-16 483-7380 Etiam Av. Zierikzee Ireland FCC92CC2-C59B-07A4-034D-7AC1F56FF893
Donovan 10-19-16 P.O. Box 282, 1555 Molestie Avenue Kırıkhan Equatorial Guinea 6E1C773F-7579-01A6-2C2F-50CD28E99AC5
Wesley 08-26-15 P.O. Box 557, 4171 Eget St. Banchory Jersey D889335F-815F-B91A-7C92-814CF8491944
Damon 08-13-15 Ap #724-7527 Lobortis, Avenue Juneau Mauritius 65336375-864D-DA66-043D-C4461F3B3A21
Cooper 08-25-16 832-3247 In Road Pike Creek Somalia 57CAFF15-A497-D20D-9D36-E3AE78C77F2B
Flynn 10-12-15 401 Congue, Street Rouvroy Paraguay 81FE1E24-7843-25EA-BE5B-C2598C4453BF
Declan 03-12-15 686-1101 Dignissim. Rd. Bad Oldesloe Trinidad and Tobago 124E4702-21AA-3617-D6EF-0A680BF287F9
Ryder 10-21-16 1151 Eu Ave Orsara di Puglia Chad 6947FFF6-F8F2-637D-4DB2-EF746659E965
Allen 06-30-15 Ap #756-3480 Accumsan Street Carnoustie Taiwan 5631AE3E-6E47-53BD-8891-817B4CC3512D
Charles 01-02-15 P.O. Box 940, 6735 Sed, Street Mandi Burewala Nauru 876E1717-ECCC-6359-47B5-97BA80A2B29C
Travis 10-07-15 P.O. Box 162, 8293 Duis St. Geesthacht Samoa BB3CEE82-1B41-F4B9-8045-08F1C9B7A17F
Beck 06-01-16 2021 Maecenas St. Hugli-Chinsurah Pakistan F7ABADF7-9EC5-F5C6-FF32-ADAE093ACA10
Chadwick 02-24-15 286-4943 Sodales St. Stockport Mauritania C04926C6-A52C-B7EF-1569-F9A5B5EDD8B7
Eric 03-22-16 Ap #443-2598 Malesuada Rd. Sutton Jersey 70152CA1-69C1-F88E-E19F-D0DFB191072C
Jarrod 02-28-16 P.O. Box 573, 5483 Mattis. Street Treglio Djibouti 4477A21E-68A0-BB81-C78B-009276AC2309
Sebastian 08-10-16 P.O. Box 486, 5119 Dis Av. Weesp Singapore C4396AD3-9AA0-423B-A372-DE21B5AE757F
Robert 10-20-15 9597 Morbi Ave Haren Micronesia DAE70851-B015-A9FC-0222-57DF9EE41EDE
Garrison 01-29-16 112-727 Sed St. Pickering Dominican Republic FD8F4927-407A-F57C-A668-732631AEE69F
Dominic 10-22-16 P.O. Box 379, 6763 Neque St. Colwood Cocos (Keeling) Islands BAB8741F-A3FA-C1DF-77CE-4E05C483CA6C
Adrian 01-30-15 P.O. Box 993, 5994 Tempus, Av. Kelowna Korea, North 35627FC0-8C04-45EE-52C0-DA52EFA4331C
Cullen 01-15-15 Ap #119-8754 Parturient St. Mazy Haiti 008EE5DE-9370-1F99-9F53-3E27D088D1FD
Gray 05-02-16 P.O. Box 694, 9954 Posuere Av. Magdeburg Korea, North C2C7C509-8D31-FE4C-8B1F-D4798D03CC27
Rogan 02-03-15 203 Diam St. Rimbey Trinidad and Tobago 775A58E6-3F69-DE34-2795-10A4FA610E59
Plato 12-11-15 Ap #973-9650 Primis St. Colwood Tokelau E89C96FA-D021-A966-D8B7-4012C2B7D08A
Jarrod 12-21-14 741-959 Pede Av. Bad Vilbel Honduras 2833D3A2-A195-90CC-5344-DCD810C95ABD
Forrest 03-19-15 8901 Magna Avenue Esterzili United Kingdom (Great Britain) 75F9D959-8A54-E131-628A-13AE6B5A470E
Erich 01-05-15 P.O. Box 527, 4985 Luctus Street Ponte nelle Alpi Iran 1552F559-B952-06C7-5192-BD07E359AE35
Dalton 06-18-16 576-7919 Ut St. Merzig Holy See (Vatican City State) 8583B5E6-2403-FD3E-C565-462B8FD7612F
Hasad 02-15-16 P.O. Box 208, 7841 Conubia Street Rothesay Marshall Islands 79B9F905-C923-552D-EDAD-1BA121782459
Tate 06-18-15 P.O. Box 724, 3627 Magna. St. Iowa City Peru 6F0D2D02-10CD-B4E2-052D-96F7583D2BFE
Amos 05-05-15 644-6779 Nascetur Ave Brixton Tunisia 8684D7A8-5EAF-6437-E11F-627463B1F18A
Todd 01-19-15 7501 Metus. Street Galbiate Yemen 6EF8DEBF-367C-EDA3-0095-4CE84EEE0B5F
Magee 02-28-15 840-3378 Porttitor Avenue Rocky View Benin 0E78AEB3-5837-C394-0F74-521A5197D00C
Amal 12-10-14 P.O. Box 985, 561 Risus. Street Mirzapur-cum-Vindhyachal Congo, the Democratic Republic of the 24BF71D4-1656-A0AA-4297-B981FE305195
Ahmed 09-05-15 P.O. Box 973, 9430 Neque. Rd. Oromocto Belgium 1F254A19-2447-39BD-DF00-CEDBC8D54356
Jackson 01-02-16 P.O. Box 756, 8760 Ultricies Avenue Chartres Dominica CE19C68C-FCF8-D069-0B97-D4547CE34851
Mannix 10-04-16 P.O. Box 381, 2207 Cum Rd. Hartford Korea, South 5B6F4C08-92DE-53CD-92BD-B0ACB55DB9AD
Adrian 08-14-15 P.O. Box 214, 2410 Amet Street Ipatinga Côte D'Ivoire (Ivory Coast) 70F29ED9-D666-B24B-2266-C9556148D161
Flynn 08-10-16 P.O. Box 149, 5993 Mollis Road Siracusa Belarus FA5AE1AE-E808-1DBC-4C94-4532BBC7F71B
Armand 12-13-15 Ap #175-342 Vitae, Avenue Saint-Rhémy-en-Bosses Togo CCBA04A7-8D9A-0811-06E8-83167FDCB56A
Warren 01-07-15 130-3775 Massa. Road Brixton Papua New Guinea F294CBEE-CC10-8F2E-7C1F-82B2E9DD70AF
David 10-17-16 245-1747 Blandit Rd. Bastia Umbra Cocos (Keeling) Islands B6579554-4C36-6452-1495-9E01D652436C
Hu 09-11-16 453-2346 Ante Ave Whitehaven Bouvet Island 188370B5-9285-24B8-9E03-D5B4F9BCA3E2
James 03-08-15 2669 Nam Av. Cambridge Guinea 71D87ECA-94CD-CBA7-A557-9CD119C8C752
Dexter 02-26-16 653-3752 Nunc Street Hearst Austria 84429BD8-70A3-0A9D-5619-33F749C0858F
Theodore 09-09-16 Ap #645-9999 Nam Rd. Maidenhead Gabon 7F801674-E786-AB3A-A822-202776D33212
Yasir 11-09-15 283-2518 Accumsan Road Kempten Heard Island and Mcdonald Islands 3D46A729-E760-CA01-4C90-32938AE5E952
Marvin 04-24-16 P.O. Box 467, 2421 Gravida Rd. Siena Slovakia 0027CB01-3982-D9A8-C8D8-024F5DBAF0CC
Travis 04-20-16 Ap #669-4818 Nisl Rd. Mosciano Sant'Angelo Armenia EF3BB505-4054-E7DF-3212-B6BA09FB6FE2
Cullen 02-14-15 P.O. Box 902, 5025 Aliquam Street Tintange Colombia E0242050-CDAF-1EEF-6BCC-CE1B1D4BEF7C
Griffin 03-28-15 Ap #990-3013 Aliquet. Rd. Wepion Brunei 5E282F96-ED09-D0EE-5B23-AB496871DDBC
Keegan 06-02-16 Ap #390-8084 Elementum Street Idaho Falls Nauru 0EEB2712-4DBC-CA61-5DC2-7D8E2519E831
Gavin 03-31-15 P.O. Box 635, 4723 Hendrerit Rd. Torrevieja Macao 19D3F50A-951A-17B0-242F-1013E8EAC8F9
Paki 12-17-15 P.O. Box 512, 277 Augue St. Horsham Cape Verde C1AB7BEF-7DCA-5A79-D4D0-42C70D212677
Oleg 05-22-15 P.O. Box 398, 6647 Quis Rd. Eisden Ethiopia DA124388-152B-EB65-669A-34927AF30596
Orlando 07-20-15 Ap #575-4637 Non St. Cerreto di Spoleto Solomon Islands CC8A6504-0489-A622-8AEA-CE2FF0CE001F
Xander 02-26-15 Ap #977-190 Eu Rd. Vespolate Guyana D98E0C02-55C1-C5A4-0723-D637099CA8CE
Ishmael 08-19-16 151-6314 Varius St. Sulzano Syria 8DBB274F-1417-6B03-7907-24FF5E2A1761
Isaiah 09-27-15 Ap #584-7955 Ut Street H<>villers Indonesia 8AE27E32-0759-EDAD-1AC2-F2664B4D2CA0

View File

@@ -0,0 +1,5 @@
col1:col2:col3:col4:col5:col6:col7:col8:col9:col10
"Mini. Sectt:hisar S.O":125001:S.O:Non-Delivery:Hissar:Ambala HQ:Haryana:Hisar:Hisar:HARYANA
#Mini. Sectt:hisar S.O#:125001:S.O:Non-Delivery:Hissar:Ambala HQ:Haryana:Hisar:Hisar:HARYANA
#Mini. Sectt:hisar S.O#:125001:S.O:Non-Delivery:Hissar:Ambala HQ:Haryana:Hisar:Hisar:HARYANA
#Mini. Sectt:hisar S.O#:#125001:fenvkdsf#:S.O:Non-Delivery:Hissar:Ambala HQ:Haryana:Hisar:Hisar:HARYANA

View File

@@ -0,0 +1,5 @@
col1,col2,col3,col4,col5,col6,col7,col8,col9,col10
"Mini. Sectt,hisar S.O",125001,S.O,Non-Delivery,Hissar,Ambala HQ,Haryana,Hisar,Hisar,HARYANA
#Mini. Sectt,hisar S.O#,125001,S.O,Non-Delivery,Hissar,Ambala HQ,Haryana,Hisar,Hisar,HARYANA
#Mini. Sectt,hisar S.O#,125001,S.O,Non-Delivery,Hissar,Ambala HQ,Haryana,Hisar,Hisar,HARYANA
#Mini. Sectt,hisar S.O#,#125001,fenvkdsf#,S.O,Non-Delivery,Hissar,Ambala HQ,Haryana,Hisar,Hisar,HARYANA

View File

@@ -0,0 +1 @@
green,40, ""

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,5 @@
fieldA.title, fieldA.children[0].name, fieldA.children[0].id,fieldA.children[1].name, fieldA.children[1].employee[].name,fieldA.children[1].employee[].name, fieldA.address[],fieldA.address[], description
Food Factory, Oscar, 0023, Tikka, Tim, Joe, 3 Lame Road, Grantstown, A fresh new food factory
Kindom Garden, Ceil, 54, Pillow, Amst, Tom, 24 Shaker Street, HelloTown, Awesome castle
Kindom Garden, Ceil,
Kindom Garden, Ceil, 54, Pillow, Amst, Tom, 24 Shaker Street, HelloTown, Awesome castle

View File

@@ -0,0 +1,4 @@
aa,bb
ss,"12345
6789,abcde""
ddee"

View File

@@ -0,0 +1,3 @@
date|*json*employee.name|*json*employee.age|*json*employee.number|*array*address|*array*address|*jsonarray*employee.key|*jsonarray*employee.key|*omit*id
2012-02-12|Eric|31|51234|Dunno Street|Kilkeny Road|key1|key2|2
2012-03-06|Ted|28|51289|O FUTEBOL.¿|Tormore|key3|key4|4

View File

@@ -0,0 +1,8 @@
TIMESTAMP,UPDATE,UID,BYTES SENT,BYTES RCVED
"13954264""22","n",""10028"",""1213"",""5461""
"abc, def, ccc", n,10013,9954,13560
1395426422,n,10013,9954,13560
1395426422,n,10109,221391500,141836
1395426422,n,10007,53448,308549
1395426422,n,10022,15506,72125

View File

@@ -0,0 +1,2 @@
id,raw
0,"{\"hello\":\"world\",\"test\":true}"

View File

@@ -0,0 +1,2 @@
id,raw
0,"\"hello,\"world\""

View File

@@ -0,0 +1,3 @@
date *json*employee.name *json*employee.age *json*employee.number *array*address *array*address *jsonarray*employee.key *jsonarray*employee.key *omit*id
2012-02-12 Eric 31 51234 Dunno Street Kilkeny Road key1 key2 2
2012-03-06 Ted 28 51289 O FUTEBOL.¿ Tormore key3 key4 4

View File

@@ -0,0 +1,5 @@
Year,Make,Model,Description,Price
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00
1996,Jeep,Grand Cherokee,"MUST SELL!air, moon roof, loaded",4799.00

View File

@@ -0,0 +1,2 @@
column1,user.name,column2,column3, colume4, column5, column6 , column7, column8, column9,column10.0,column10.1,name#!,column11
1234,hello world,a1234,2012-01-01,someinvaliddate, {"hello":"world"}, {"hello":"world"}, 1234,abcd, true,23,31,false,[{"hello":"world"}]

View File

@@ -0,0 +1,8 @@
TIMESTAMP,UPDATE,UID,BYTES SENT,BYTES RCVED
"13954264""22","n,""10028"",""1213"",""5461""
"abc,
def, ccc", n,10013,9954,13560
1395426422,n,10013,9954,13560
1395426422,n,10109,221391500,141836
1395426422,n,10007,53448,308549
"1395426422,n,10022,15506,72125

View File

@@ -0,0 +1,2 @@
"Column 1" , "Column 2", "Column 3" ,"Email"
Column1Row1,Column2Row1,Column3Row1,Row1@example.com

View File

View File

@@ -0,0 +1,6 @@
header1,header1.filed1,header1.file2,header2,header2.field1.0,header2.field1.1,header2.filed2
5OlFPc,q7,ejpJdw,DIgNVqB7h9jI,f8ayrzv,undefinedzvTY3Qd3pSkKOk,S7cVvW7m50t9U
0TaUGQVPqPkOr,lT,GA,UPUuORnuaDjXdl,V6G4QFddmPH8b,65NxWPl,Lclhl0fy
,ex4,1gjT4YPJ,QtJ8S5TQ,M4zO4OppCAR4,Pg7VipESqZmHwY5,mPzz
FEEa,,B1B,U9,kjxHGy,McW,6FWKBP0JoCiWn
0,,Fj0o9IPB,jwFuChbeqZdVVR,hGqs3Ps7dMEo6,Zundefined00Xqvw,hT7lN6iVUHDx

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
F_Year,Event ID,Event Date,Time,Location,Rotue,TOC,Person type,Injury degree,FWI,Precursor,Gender,Under 16,Apparent age,Fatal,Alcohol/Drugs,Impairment,Encumbrances & Group Travel,Risk-taking Behaviour,Sub-standard conditions,Design,Operational error,Crowd management,Non-standard operation,Rushing,3rd Party Behaviour,Narrative Full,Period
2013/2014,2914930,3/2/14,23:02:00,Pembrey and Burry Port,Wales,Arriva Trains Wales,Passenger,Minor non-reportable,0.001,Passenger falls from platform onto track (no electric shock nor struck by train) under the influence,Male,,Unknown,,x,,,,,,,,,,,"A report was initially received from Dyfed Powys Police that a person had been struck by a train at Pembrey and Burry Port station and that an ambulance was in attendance (the ambulance was the source of the police report). It later transpired that the person was inebriated and had fallen off of Pembrey platform after attempting to board the train after the doors were closed and the train was ready to depart. It has been confirmed (by Pembrey signaller) that the person has not been struck by the train and has NOT fallen under the train. One police officer on site.
Later advice from the train crew working 2B21 2135 Milford Haven to Cardiff Central stated the person had attempted to board 2B21 as it was ready to depart from the platform, bounced off of the train falling backwards, had then gotten back up and then fallen off of the platform and onto the track behind the train. The persons injuries (if any) have not been disclosed.
The person was been removed from the track and normal working resumed from 2326. The on call MOM was called to attend and act a RIO if required, but was stood down after the incident was resolved.
The initial call came from Dyfed Powys Police under reference 333 when it was advised that their report had come from the Ambulance Service (reference 1523673) and the BTP were also made aware by Dyfed Powys Police under their reference 470.",13

View File

@@ -0,0 +1,2 @@
Date,Advertiser,Advertiser ID,Advertiser Status,Advertiser Integration Code,Insertion Order,Insertion Order ID,Insertion Order Status,Insertion Order Integration Code,Partner Currency,Advertiser Currency,Clicks,% Clicks Leading to Conversions,Conversions per 1000 Impressions,CPM Fee 1 (Adv Currency),CPM Fee 1 (Partner Currency),CPM Fee 1 (USD),CPM Fee 2 (Adv Currency),CPM Fee 2 (Partner Currency),CPM Fee 2 (USD),Click Rate (CTR),Data Fees (Adv Currency),Data Fees (Partner Currency),Data Fees (USD),Impressions,% Impressions Leading to Conversions,Post-Click Conversions,Post-View Conversions,Media Cost (Advertiser Currency),Media Cost eCPA (PC) (Adv Currency),Media Cost eCPA (PC) (Partner Currency),Media Cost eCPA (PC) (USD),Media Cost eCPA (PV) (Adv Currency),Media Cost eCPA (PV) (Partner Currency),Media Cost eCPA (PV) (USD),Media Cost eCPA (Adv Currency),Media Cost eCPA (Partner Currency),Media Cost eCPA (USD),Video Media Cost eCPCV (Adv Currency),Video Media Cost eCPCV (Partner Currency),Video Media Cost eCPCV (USD),Media Cost eCPC (Adv Currency),Media Cost eCPC (Partner Currency),Media Cost eCPC (USD),Media Cost eCPM (Adv Currency),Media Cost eCPM (Partner Currency),Media Cost eCPM (USD),Media Cost (Partner Currency),Media Cost (USD),Media Fee 1 (Adv Currency),Media Fee 1 (Partner Currency),Media Fee 1 (USD),Media Fee 2 (Adv Currency),Media Fee 2 (Partner Currency),Media Fee 2 (USD),DCM Post-Click Revenue,DCM Post-View Revenue,Profit (Advertiser Currency),Profit eCPM (Adv Currency),Profit eCPM (Partner Currency),Profit eCPM (USD),Profit Margin,Profit (Partner Currency),Profit (USD),Revenue (Adv Currency),Revenue eCPA (PC) (Adv Currency),Revenue eCPA (PC) (Partner Currency),Revenue eCPA (PC) (USD),Revenue eCPA (PV) (Adv Currency),Revenue eCPA (PV) (Partner Currency),Revenue eCPA (PV) (USD),Revenue eCPA (Adv Currency),Revenue eCPA (Partner Currency),Revenue eCPA (USD),Video Revenue eCPCV (Adv Currency),Video Revenue eCPCV (Partner Currency),Video Revenue eCPCV (USD),Revenue eCPC (Adv Currency),Revenue eCPC (Partner Currency),Revenue eCPC (USD),Revenue eCPM (Adv Currency),Revenue eCPM (Partner Currency),Revenue eCPM (USD),Revenue (Partner Currency),Revenue (USD),Complete Views (Video),First-Quartile Views (Video),Fullscreens (Video),Midpoint Views (Video),Audio Mutes (Video),Pauses (Video),Starts (Video),Skips (Video),Third-Quartile Views (Video),Total Conversions,Total Media Cost (Advertiser Currency),Total Media Cost eCPA (PC) (Adv Currency),Total Media Cost eCPA (PC) (Partner Currency),Total Media Cost eCPA (PC) (USD),Total Media Cost eCPA (PV) (Adv Currency),Total Media Cost eCPA (PV) (Partner Currency),Total Media Cost eCPA (PV) (USD),Total Media Cost eCPA (Adv Currency),Total Media Cost eCPA (Partner Currency),Total Media Cost eCPA (USD),Total Video Media Cost eCPCV (Adv Currency),Total Video Media Cost eCPCV (Partner Currency),Total Video Media Cost eCPCV (USD),Total Media Cost eCPC (Adv Currency),Total Media Cost eCPC (Partner Currency),Total Media Cost eCPC (USD),Total Media Cost eCPM (Adv Currency),Total Media Cost eCPM (Partner Currency),Total Media Cost eCPM (USD),Total Media Cost (Partner Currency),Total Media Cost (USD),Completion Rate (Video)
8/26/16,1000 AAAAAA AAAA AAAA - AAAAAA - #AAAAAAAA - AAA,1161431,Active,,1010101010 - 1000 AAAAAAA AAAA AAAA - AAAAAAA AAAA - 28 Jun 2016 - AAAAAAA - #AAAAAAAA - AAAAAAA,2427940,Paused,CTR,CAD,CAD,2,0.00%,0,0,0,0,0,0,0,0.13%,0,0,0,1540,0.00%,0,0,7.476659,0,0,0,0,0,0,0,0,0,0,0,0,3.738329,3.73833,2.892061,4.854973,4.854973,3.755923,7.476659,5.784121,0.971966,0.971966,0.751936,0,0,0,0,0,10.031375,6.51388,6.51388,5.035214,54.26%,10.031375,7.75423,18.48,0,0,0,0,0,0,0,0,0,0,0,0,9.24,9.24,7.145143,12,12,9.279407,18.48,14.290287,0,0,0,0,0,0,0,0,0,0,8.448625,0,0,0,0,0,0,0,0,0,0,0,0,4.224312,4.224312,3.268029,5.48612,5.48612,4.244193,8.448625,6.536057,0.00%

View File

@@ -0,0 +1,2 @@
John,25,XXX
Samantha,28,YYY,7

View File

@@ -0,0 +1,5 @@
CC102-PDMI-001,eClass_5.1.3,10/3/2014,12,40,green,40
CC200-009-001,eClass_5.1.3,11/3/2014,5,3,blue,38
CC200-070-001,eClass_5.1.3,10/4/2014,15,13,red,45
CC200-099,eClass_5.1.3,10/5/2014,20,17,orange,28
CC200-100,eClass_5.1.3,10/3/2014,5,4,black,32

View File

@@ -0,0 +1,2 @@
test,test2,test3
blag,blagh,|blahhh, blah|

View File

@@ -0,0 +1,2 @@
"Style","Description","SKU","BusinessAreaCode","BusinessAreaDescription","DepartmentCode","DepartmentDescription","ClassCode","ClassDescription","ColorCode","ColorDescription","SizeCode","SizeDescription","PrimaryMaterialCode","PrimaryMaterialDescription","VendorCode","VendorDescription","CurrentRetail"
"503951518","OVERSIZE ROUND GOLD PENDANT ON 32" THICK BLACK CORD","00505039515193","W12","Jewelry","1231","Jewelry","123111","D2 New Jewelry Necklace","70","GOLD","100","1 Size","065","Costume/Imitation","3522","KENNETH JAY LANE, INC.","79.0000"

5
themes/keepit/node_modules/csvtojson/test/data/tabsv generated vendored Normal file
View File

@@ -0,0 +1,5 @@
JournalCode JournalLib EcritureNum EcritureDate CompteNum CompteLib CompAuxNum CompAuxLib PieceRef PieceDate EcritureLib Debit Credit EcritureLet DateLet ValidDate Montantdevise Idevise
AA BBBBBB 0 20140701 CCCCCCCC ddddddddddddddd ZZZZZZZ1 20140701 EEEEE EEE EEEEEE 34,81 0,00 20150630 0,00
AA BBBBBB 0 20140701 CCCCCCCC ddddddddddddddd ZZZZZZZ2 20140701 EEEEE EEE EEEEEE 12,02 0,00 20150630 0,00
AA BBBBBB 0 20140701 CCCCCCCC ddddddddddddddd ZZZZZZZ3 20140701 EEEEE EEE EEEEEE 37,98 0,00 20150630 0,00
AA BBBBBB 0 20140701 CCCCCCCC ddddddddddddddd ZZZZZZZ4 20140701 EEEEE EEE EEEEEE 27,48 0,00 20150630 0,00

View File

@@ -0,0 +1,3 @@
date,employee.name,employee.age,employee.number,address.0,address.1,employee.key.0,employee.key.1,*omit*id
2012-02-12,Eric,31,51234,Dunno Street,Kilkeny Road,key1,key2,2
2012-03-06,Ted,28,51289,O FUTEBOL.¿,Tormore,key3,key4,4

View File

@@ -0,0 +1 @@
John,25,xxx

View File

@@ -0,0 +1,3 @@
field1,field2
value1,value2,
value1,value2,

View File

@@ -0,0 +1,2 @@
title,actors,data,uuid,fieldA,fieldB
"""","[""Neil"", ""Bill"""", ""Carl"",""Richard"",""Linus""]",xyabcde,"fejal""eifa","bnej""""falkfe","""eisjfes"""

View File

@@ -0,0 +1,682 @@
// import {Converter} from "../src/Converter";
// import csv from "../src";
// var assert = require("assert");
// var fs = require("fs");
// var sandbox = require("sinon").sandbox.create();
// var file = __dirname + "/data/testData";
// var trailCommaData = __dirname + "/data/trailingComma";
// describe("CSV Convert in Background Process", function () {
// afterEach(function () {
// sandbox.restore();
// });
// it("should read from a stream", function (done) {
// var obj = new Converter({
// fork: true
// });
// var stream = fs.createReadStream(file);
// obj.then(function (obj) {
// assert.equal(obj.length, 2);
// done();
// },(err)=>{
// console.log(err.toString());
// });
// stream.pipe(obj);
// });
// it("should call onNext once a row is parsed.", function (done) {
// var obj = new Converter({fork:true});
// var stream = fs.createReadStream(file);
// var called = false;
// obj.subscribe(function (resultRow) {
// assert(resultRow);
// called = true;
// });
// obj.on("done", function () {
// assert(called);
// done();
// });
// stream.pipe(obj);
// });
// it("should emit end_parsed message once it is finished.", function (done) {
// var obj = new Converter({fork:true});
// obj.then(function (result) {
// assert(result);
// assert(result.length === 2);
// assert(result[0].date);
// assert(result[0].employee);
// assert(result[0].employee.name);
// assert(result[0].employee.age);
// assert(result[0].employee.number);
// assert(result[0].employee.key.length === 2);
// assert(result[0].address.length === 2);
// done();
// });
// fs.createReadStream(file).pipe(obj);
// });
// it("should handle traling comma gracefully", function (done) {
// var stream = fs.createReadStream(trailCommaData);
// var obj = new Converter({fork:true});
// obj.then(function (result) {
// assert(result);
// assert(result.length > 0);
// done();
// });
// stream.pipe(obj);
// });
// it("should handle comma in column which is surrounded by qoutes", function (done) {
// var testData = __dirname + "/data/dataWithComma";
// var rs = fs.createReadStream(testData);
// var obj = new Converter({
// "quote": "#",
// "fork":true
// });
// obj.then(function (result) {
// assert(result[0].col1 === "\"Mini. Sectt");
// assert.equal(result[3].col2, "125001,fenvkdsf");
// // console.log(result);
// done();
// });
// rs.pipe(obj);
// });
// it("should be able to convert a csv to column array data", function (done) {
// var columArrData = __dirname + "/data/columnArray";
// var rs = fs.createReadStream(columArrData);
// var result:any = {};
// var csvConverter = new Converter({fork:true});
// //end_parsed will be emitted once parsing finished
// csvConverter.then(function () {
// assert(result.TIMESTAMP.length === 5);
// done();
// });
// //record_parsed will be emitted each time a row has been parsed.
// csvConverter.subscribe(function (resultRow, rowIndex) {
// for (var key in resultRow) {
// if (resultRow.hasOwnProperty(key)) {
// if (!result[key] || !(result[key] instanceof Array)) {
// result[key] = [];
// }
// result[key][rowIndex] = resultRow[key];
// }
// }
// });
// rs.pipe(csvConverter);
// });
// it("should be able to convert csv string directly", function (done) {
// var testData = __dirname + "/data/testData";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// //end_parsed will be emitted once parsing finished
// csvConverter.then(function (jsonObj) {
// assert.equal(jsonObj.length, 2);
// });
// csvConverter.fromString(data).then(function (jsonObj) {
// assert(jsonObj.length === 2);
// done();
// });
// });
// it("should be able to convert csv string with error", function (done) {
// var testData = __dirname + "/data/dataWithUnclosedQuotes";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// csvConverter.fromString(data).then(undefined, function (err) {
// // console.log(err);
// assert(err);
// assert.equal(err.err, "unclosed_quote");
// done();
// });
// });
// it("should be able to convert csv string without callback provided", function (done) {
// var testData = __dirname + "/data/testData";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// //end_parsed will be emitted once parsing finished
// csvConverter.then(function (jsonObj) {
// assert(jsonObj.length === 2);
// done();
// });
// csvConverter.fromString(data);
// });
// it("should be able to handle columns with double quotes", function (done) {
// var testData = __dirname + "/data/dataWithQoutes";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// csvConverter.fromString(data).then(function (jsonObj) {
// assert(jsonObj[0].TIMESTAMP === '13954264"22', JSON.stringify(jsonObj[0].TIMESTAMP));
// assert(jsonObj[1].TIMESTAMP === 'abc, def, ccc', JSON.stringify(jsonObj[1].TIMESTAMP));
// done();
// });
// });
// it("should be able to handle columns with two double quotes", function (done) {
// var testData = __dirname + "/data/twodoublequotes";
// var data = fs.readFileSync(testData).toString();
// var csvConverter = new Converter({fork:true});
// csvConverter.fromString(data).then(function (jsonObj) {
// assert.equal(jsonObj[0].title, "\"");
// assert.equal(jsonObj[0].data, "xyabcde");
// assert.equal(jsonObj[0].uuid, "fejal\"eifa");
// assert.equal(jsonObj[0].fieldA, "bnej\"\"falkfe");
// assert.equal(jsonObj[0].fieldB, "\"eisjfes\"");
// done();
// });
// });
// it("should handle empty csv file", function (done) {
// var testData = __dirname + "/data/emptyFile";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({fork:true});
// csvConverter.then(function (jsonObj) {
// assert(jsonObj.length === 0);
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should parse large csv file", function (done) {
// var testData = __dirname + "/data/large-csv-sample.csv";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({fork:true});
// var count = 0;
// csvConverter.subscribe(function () {
// // console.log(arguments);
// count++;
// });
// csvConverter.then(function () {
// assert.equal(count, 5290);
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should parse data and covert to specific types", function (done) {
// var testData = __dirname + "/data/dataWithType";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({
// fork:true,
// checkType: true,
// colParser: {
// "column6": "string",
// "column7": "string"
// }
// });
// csvConverter.subscribe(function (d) {
// assert(typeof d.column1 === "number");
// assert(typeof d.column2 === "string");
// assert.equal(d["colume4"], "someinvaliddate");
// assert(d.column5.hello === "world");
// assert(d.column6 === '{"hello":"world"}');
// assert(d.column7 === "1234");
// assert(d.column8 === "abcd");
// assert(d.column9 === true);
// assert(d.column10[0] === 23);
// assert(d.column10[1] === 31);
// assert(d.column11[0].hello === "world");
// assert(d["name#!"] === false);
// });
// csvConverter.on("done", function () {
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should turn off field type check", function (done) {
// var testData = __dirname + "/data/dataWithType";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({
// fork:true,
// checkType: false
// });
// csvConverter.subscribe(function (d) {
// assert(typeof d.column1 === "string");
// assert(typeof d.column2 === "string");
// assert(d["column3"] === "2012-01-01");
// assert(d["colume4"] === "someinvaliddate");
// assert(d.column5 === '{"hello":"world"}');
// assert.equal(d["column6"], '{"hello":"world"}');
// assert(d["column7"] === "1234");
// assert(d["column8"] === "abcd");
// assert(d.column9 === "true");
// assert(d.column10[0] === "23");
// assert(d.column10[1] === "31");
// assert(d["name#!"] === 'false');
// });
// csvConverter.then(function () {
// done();
// });
// rs.pipe(csvConverter);
// });
// it("should emit data event correctly", function (done) {
// var testData = __dirname + "/data/large-csv-sample.csv";
// var csvConverter = new Converter({
// fork:true
// },{objectMode:true});
// var count = 0;
// csvConverter.on("data", function (d) {
// count++;
// });
// csvConverter.on("done", function () {
// assert.equal(csvConverter.parsedLineNumber, 5290);
// done();
// });
// var rs = fs.createReadStream(testData);
// rs.pipe(csvConverter);
// });
// it("should process column with linebreaks", function (done) {
// var testData = __dirname + "/data/lineBreak";
// var rs = fs.createReadStream(testData);
// var csvConverter = new Converter({
// fork:true,
// checkType: true
// });
// csvConverter.subscribe(function (d) {
// assert(d.Period === 13);
// assert(d["Apparent age"] === "Unknown");
// done();
// });
// rs.pipe(csvConverter);
// });
// it("be able to ignore empty columns", function (done) {
// var testData = __dirname + "/data/dataIgnoreEmpty";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(csv({
// ignoreEmpty: true ,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 3);
// assert(j.col2.length === 2);
// assert(j.col2[1] === "d3");
// assert(j.col4.col3 === undefined);
// assert(j.col4.col5 === "world");
// assert(res[1].col1 === "d2");
// assert(res[2].col1 === "d4");
// done();
// });
// });
// it("should allow no header", function (done) {
// var testData = __dirname + "/data/noheadercsv";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// noheader: true,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 5);
// assert(j.field1 === "CC102-PDMI-001");
// assert(j.field2 === "eClass_5.1.3");
// done();
// });
// });
// it("should allow customised header", function (done) {
// var testData = __dirname + "/data/noheadercsv";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// noheader: true,
// headers: ["a", "b"],
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 5);
// assert(j.a === "CC102-PDMI-001");
// assert(j.b === "eClass_5.1.3");
// assert(j.field3 === "10/3/2014");
// done();
// });
// });
// it("should allow customised header to override existing header", function (done) {
// var testData = __dirname + "/data/complexJSONCSV";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// headers: [],
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 2);
// assert(j.field1 === "Food Factory");
// assert(j.field2 === "Oscar");
// done();
// });
// });
// it("should handle when there is an empty string", function (done) {
// var testData = __dirname + "/data/dataWithEmptyString";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// noheader: true,
// headers: ["a", "b", "c"],
// checkType: true,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// // assert(res.length===2);
// assert(j.a === "green");
// assert(j.b === 40);
// assert.equal(j.c, "");
// done();
// });
// });
// it("should detect eol correctly when first chunk is smaller than header row length", function (done) {
// var testData = __dirname + "/data/dataNoTrimCRLF";
// var rs = fs.createReadStream(testData, { highWaterMark: 3 });
// var st = rs.pipe(new Converter({
// trim: false,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 2);
// assert(j.name === "joe");
// assert(j.age === "20");
// assert.equal(res[1].name, "sam");
// assert.equal(res[1].age, "30");
// done();
// });
// });
// it("should detect eol correctly when first chunk ends in middle of CRLF line break", function (done) {
// var testData = __dirname + "/data/dataNoTrimCRLF";
// var rs = fs.createReadStream(testData, { highWaterMark: 9 });
// var st = rs.pipe(new Converter({
// trim: false,
// fork:true
// }));
// st.then(function (res) {
// var j = res[0];
// assert(res.length === 2);
// assert(j.name === "joe");
// assert(j.age === "20");
// assert.equal(res[1].name, "sam");
// assert.equal(res[1].age, "30");
// done();
// });
// });
// it("should emit eol event when line ending is detected as CRLF", function (done) {
// var testData = __dirname + "/data/dataNoTrimCRLF";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// fork:true
// }));
// var eolCallback = sandbox.spy(function (eol) {
// assert.equal(eol, "\r\n");
// });
// st.on("eol", eolCallback);
// st.then(function () {
// assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
// done();
// })
// });
// it("should emit eol event when line ending is detected as LF", function (done) {
// var testData = __dirname + "/data/columnArray";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// fork:true
// }));
// var eolCallback = sandbox.spy(function (eol) {
// assert.equal(eol, "\n");
// });
// st.on("eol", eolCallback);
// st.then(function () {
// assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
// done();
// })
// });
// it("should remove the Byte Order Mark (BOM) from input", function (done) {
// var testData = __dirname + "/data/dataNoTrimBOM";
// var rs = fs.createReadStream(testData);
// var st = rs.pipe(new Converter({
// trim: false,
// fork:true
// }));
// st.then( function (res) {
// var j = res[0];
// assert(res.length===2);
// assert(j.name === "joe");
// assert(j.age === "20");
// done();
// });
// });
// it("should set output as csv", function (done) {
// var testData = __dirname + "/data/complexJSONCSV";
// var rs = fs.createReadStream(testData);
// var numOfRow = 0;
// csv({ output: "csv",fork:true })
// .fromStream(rs)
// .subscribe(function (row, idx) {
// numOfRow++;
// assert(row);
// assert(idx >= 0);
// })
// .on("done", function (error) {
// assert(!error);
// assert.equal(2, numOfRow);
// assert(numOfRow !== 0);
// done();
// });
// });
// it("should process long header", function (done) {
// var testData = __dirname + "/data/longHeader";
// var rs = fs.createReadStream(testData, { highWaterMark: 100 });
// var numOfRow = 0;
// var numOfJson = 0;
// csv({fork:true}, { highWaterMark: 100 })
// .fromStream(rs)
// .subscribe(function (res, idx) {
// numOfJson++;
// assert.equal(res.Date, '8/26/16');
// assert(idx >= 0);
// })
// .on("done", function () {
// assert(numOfJson === 1);
// done();
// });
// });
// it("should parse #139", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/data#139");
// csv({fork:true})
// .fromStream(rs)
// .then(function (res) {
// assert.equal(res[1].field3, "9001009395 9001009990");
// done();
// });
// });
// it("should ignore column", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes");
// var headerEmitted = false;
// csv({
// ignoreColumns: /TIMESTAMP/,
// fork:true
// })
// .fromStream(rs)
// .on("header", function (header) {
// assert.equal(header.indexOf("TIMESTAMP"), -1);
// assert.equal(header.indexOf("UPDATE"), 0);
// if (headerEmitted) {
// throw ("header event should only happen once")
// }
// headerEmitted = true;
// })
// // .on("csv", function (row, idx) {
// // if (!headerEmitted) {
// // throw ("header should be emitted before any data events");
// // }
// // assert(idx >= 0);
// // if (idx === 1) {
// // assert.equal(row[0], "n");
// // }
// // })
// .subscribe(function (j, idx) {
// // console.log(j);
// assert(!j.TIMESTAMP);
// assert(idx >= 0);
// })
// .on("done", function (err) {
// assert(!err);
// assert(headerEmitted);
// done();
// });
// });
// it("should include column", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes");
// csv({
// includeColumns: /TIMESTAMP/,
// fork:true
// })
// .fromStream(rs)
// .on("header", function (header) {
// assert.equal(header.indexOf("TIMESTAMP"), 0);
// assert.equal(header.indexOf("UPDATE"), -1);
// assert.equal(header.length, 1);
// })
// .subscribe(function (j, idx) {
// assert(idx >= 0);
// if (idx === 1) {
// assert.equal(j.TIMESTAMP, "abc, def, ccc");
// }
// assert(!j.UID)
// assert(!j['BYTES SENT'])
// })
// .on("done", function () {
// done();
// });
// });
// it("should allow headers and include columns to be given as reference to the same var", function (done) {
// var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV");
// var headers = [
// 'first',
// 'second',
// 'third',
// ];
// var expected = headers;
// csv({
// headers: headers,
// includeColumns: /(first|second|third)/,
// fork:true
// })
// .fromStream(rs)
// .on("header", function (header) {
// expected.forEach(function (value, index) {
// assert.equal(header.indexOf(value), index);
// });
// })
// .subscribe(function (j, idx) {
// assert(idx >= 0);
// assert.equal(expected.length, Object.keys(j).length);
// expected.forEach(function (attribute) {
// assert(j.hasOwnProperty(attribute));
// });
// })
// .on("done", function () {
// done();
// });
// });
// it("should leave provided params objects unmutated", function() {
// var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV");
// var includeColumns = [
// 'fieldA.title',
// 'description',
// ];
// return csv({
// includeColumns: /(fieldA\.title|description)/,
// fork:true
// })
// .fromStream(rs)
// .on("json", function(j, idx) {
// assert(idx >= 0);
// })
// .on("header", function(header) {
// includeColumns.forEach(function (value, index) {
// assert.equal(index, header.indexOf(value));
// });
// })
// });
// it("should accept pipe as quote", function (done) {
// csv({
// quote: "|",
// output: "csv",
// "fork":true
// })
// .fromFile(__dirname + "/data/pipeAsQuote")
// .subscribe(function (csv) {
// assert.equal(csv[2], "blahhh, blah");
// })
// .on('done', function () {
// done()
// });
// })
// it("should allow async subscribe function", () => {
// return csv({ trim: true,fork:true })
// .fromString(`a,b,c
// 1,2,3
// 4,5,6`)
// .subscribe((d) => {
// return new Promise((resolve, reject) => {
// setTimeout(() => {
// d.a = 10;
// resolve();
// }, 20);
// })
// })
// .then((d) => {
// assert.equal(d[0].a, 10);
// assert.equal(d[1].a, 10);
// })
// })
// it("should omit a column", () => {
// return csv({
// colParser: {
// "a": "omit"
// },
// fork:true
// })
// .fromString(`a,b,c
// 1,2,3
// fefe,5,6`)
// .then((d) => {
// assert.strictEqual(d[0].a, undefined);
// assert.equal(d[1].a, undefined);
// })
// })
// });

View File

@@ -0,0 +1,450 @@
import {Converter} from "../src/Converter";
import csv from "../src";
var assert = require("assert");
var fs = require("fs");
var sandbox = require("sinon").sandbox.create();
var file = __dirname + "/data/testData";
var trailCommaData = __dirname + "/data/trailingComma";
describe("CSV Converter", function () {
afterEach(function () {
sandbox.restore();
});
it("should create new instance of csv", function () {
var obj = new Converter();
assert(obj);
});
it("should read from a stream", function (done) {
var obj = new Converter();
var stream = fs.createReadStream(file);
obj.then(function (obj) {
assert.equal(obj.length, 2);
done();
});
stream.pipe(obj);
});
it("should call onNext once a row is parsed.", function (done) {
var obj = new Converter();
var stream = fs.createReadStream(file);
var called = false;
obj.subscribe(function (resultRow) {
assert(resultRow);
called = true;
});
obj.on("done", function () {
assert(called);
done();
});
stream.pipe(obj);
});
it("should emit end_parsed message once it is finished.", function (done) {
var obj = new Converter();
obj.then(function (result) {
assert(result);
assert(result.length === 2);
assert(result[0].date);
assert(result[0].employee);
assert(result[0].employee.name);
assert(result[0].employee.age);
assert(result[0].employee.number);
assert(result[0].employee.key.length === 2);
assert(result[0].address.length === 2);
done();
});
fs.createReadStream(file).pipe(obj);
});
it("should handle traling comma gracefully", function (done) {
var stream = fs.createReadStream(trailCommaData);
var obj = new Converter();
obj.then(function (result) {
assert(result);
assert(result.length > 0);
done();
});
stream.pipe(obj);
});
it("should handle comma in column which is surrounded by qoutes", function (done) {
var testData = __dirname + "/data/dataWithComma";
var rs = fs.createReadStream(testData);
var obj = new Converter({
"quote": "#"
});
obj.then(function (result) {
assert(result[0].col1 === "\"Mini. Sectt");
assert.equal(result[3].col2, "125001,fenvkdsf");
// console.log(result);
done();
});
rs.pipe(obj);
});
it("should be able to convert a csv to column array data", function (done) {
var columArrData = __dirname + "/data/columnArray";
var rs = fs.createReadStream(columArrData);
var result:any = {};
var csvConverter = new Converter();
//end_parsed will be emitted once parsing finished
csvConverter.then(function () {
assert(result.TIMESTAMP.length === 5);
done();
});
//record_parsed will be emitted each time a row has been parsed.
csvConverter.subscribe(function (resultRow, rowIndex) {
for (var key in resultRow) {
if (resultRow.hasOwnProperty(key)) {
if (!result[key] || !(result[key] instanceof Array)) {
result[key] = [];
}
result[key][rowIndex] = resultRow[key];
}
}
});
rs.pipe(csvConverter);
});
it("should be able to convert csv string directly", function (done) {
var testData = __dirname + "/data/testData";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter();
//end_parsed will be emitted once parsing finished
csvConverter.then(function (jsonObj) {
assert.equal(jsonObj.length, 2);
});
csvConverter.fromString(data).then(function (jsonObj) {
assert(jsonObj.length === 2);
done();
});
});
it("should be able to convert csv string with error", function (done) {
var testData = __dirname + "/data/dataWithUnclosedQuotes";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter();
csvConverter.fromString(data).then(undefined, function (err) {
assert(err);
assert.equal(err.err, "unclosed_quote");
done();
});
});
it("should be able to convert csv string without callback provided", function (done) {
var testData = __dirname + "/data/testData";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter();
//end_parsed will be emitted once parsing finished
csvConverter.then(function (jsonObj) {
assert(jsonObj.length === 2);
done();
});
csvConverter.fromString(data);
});
it("should be able to handle columns with double quotes", function (done) {
var testData = __dirname + "/data/dataWithQoutes";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter();
csvConverter.fromString(data).then(function (jsonObj) {
assert(jsonObj[0].TIMESTAMP === '13954264"22', JSON.stringify(jsonObj[0].TIMESTAMP));
assert(jsonObj[1].TIMESTAMP === 'abc, def, ccc', JSON.stringify(jsonObj[1].TIMESTAMP));
done();
});
});
it("should be able to handle columns with two double quotes", function (done) {
var testData = __dirname + "/data/twodoublequotes";
var data = fs.readFileSync(testData).toString();
var csvConverter = new Converter();
csvConverter.fromString(data).then(function (jsonObj) {
assert.equal(jsonObj[0].title, "\"");
assert.equal(jsonObj[0].data, "xyabcde");
assert.equal(jsonObj[0].uuid, "fejal\"eifa");
assert.equal(jsonObj[0].fieldA, "bnej\"\"falkfe");
assert.equal(jsonObj[0].fieldB, "\"eisjfes\"");
done();
});
});
it("should handle empty csv file", function (done) {
var testData = __dirname + "/data/emptyFile";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter();
csvConverter.then(function (jsonObj) {
assert(jsonObj.length === 0);
done();
});
rs.pipe(csvConverter);
});
it("should parse large csv file", function (done) {
var testData = __dirname + "/data/large-csv-sample.csv";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter();
var count = 0;
csvConverter.subscribe(function () {
//console.log(arguments);
count++;
});
csvConverter.then(function () {
assert(count === 5290);
done();
});
rs.pipe(csvConverter);
});
it("should parse data and covert to specific types", function (done) {
var testData = __dirname + "/data/dataWithType";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter({
checkType: true,
colParser: {
"column6": "string",
"column7": "string"
}
});
csvConverter.subscribe(function (d) {
assert(typeof d.column1 === "number");
assert(typeof d.column2 === "string");
assert.equal(d["colume4"], "someinvaliddate");
assert(d.column5.hello === "world");
assert(d.column6 === '{"hello":"world"}');
assert(d.column7 === "1234");
assert(d.column8 === "abcd");
assert(d.column9 === true);
assert(d.column10[0] === 23);
assert(d.column10[1] === 31);
assert(d.column11[0].hello === "world");
assert(d["name#!"] === false);
});
csvConverter.on("done", function () {
done();
});
rs.pipe(csvConverter);
});
it("should turn off field type check", function (done) {
var testData = __dirname + "/data/dataWithType";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter({
checkType: false
});
csvConverter.subscribe(function (d) {
assert(typeof d.column1 === "string");
assert(typeof d.column2 === "string");
assert(d["column3"] === "2012-01-01");
assert(d["colume4"] === "someinvaliddate");
assert(d.column5 === '{"hello":"world"}');
assert.equal(d["column6"], '{"hello":"world"}');
assert(d["column7"] === "1234");
assert(d["column8"] === "abcd");
assert(d.column9 === "true");
assert(d.column10[0] === "23");
assert(d.column10[1] === "31");
assert(d["name#!"] === 'false');
});
csvConverter.then(function () {
done();
});
rs.pipe(csvConverter);
});
it("should emit data event correctly", function (done) {
var testData = __dirname + "/data/large-csv-sample.csv";
var csvConverter = new Converter({
});
var count = 0;
csvConverter.on("data", function (d) {
count++;
});
csvConverter.on("end", function () {
assert.equal(count, 5290);
done();
});
var rs = fs.createReadStream(testData);
rs.pipe(csvConverter);
});
it("should process column with linebreaks", function (done) {
var testData = __dirname + "/data/lineBreak";
var rs = fs.createReadStream(testData);
var csvConverter = new Converter({
checkType: true
});
csvConverter.subscribe(function (d) {
assert(d.Period === 13);
assert(d["Apparent age"] === "Unknown");
done();
});
rs.pipe(csvConverter);
});
it("be able to ignore empty columns", function (done) {
var testData = __dirname + "/data/dataIgnoreEmpty";
var rs = fs.createReadStream(testData);
var st = rs.pipe(csv({ ignoreEmpty: true }));
st.then(function (res) {
var j = res[0];
assert(res.length === 3);
assert(j.col2.length === 2);
assert(j.col2[1] === "d3");
assert(j.col4.col3 === undefined);
assert(j.col4.col5 === "world");
assert(res[1].col1 === "d2");
assert(res[2].col1 === "d4");
done();
});
});
it("should allow no header", function (done) {
var testData = __dirname + "/data/noheadercsv";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter({ noheader: true }));
st.then(function (res) {
var j = res[0];
assert(res.length === 5);
assert(j.field1 === "CC102-PDMI-001");
assert(j.field2 === "eClass_5.1.3");
done();
});
});
it("should allow customised header", function (done) {
var testData = __dirname + "/data/noheadercsv";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter({
noheader: true,
headers: ["a", "b"]
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 5);
assert(j.a === "CC102-PDMI-001");
assert(j.b === "eClass_5.1.3");
assert(j.field3 === "10/3/2014");
done();
});
});
it("should allow customised header to override existing header", function (done) {
var testData = __dirname + "/data/complexJSONCSV";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter({
headers: []
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.field1 === "Food Factory");
assert(j.field2 === "Oscar");
done();
});
});
it("should handle when there is an empty string", function (done) {
var testData = __dirname + "/data/dataWithEmptyString";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter({
noheader: true,
headers: ["a", "b", "c"],
checkType: true
}));
st.then(function (res) {
var j = res[0];
// assert(res.length===2);
assert(j.a === "green");
assert(j.b === 40);
assert.equal(j.c, "");
done();
});
});
it("should detect eol correctly when first chunk is smaller than header row length", function (done) {
var testData = __dirname + "/data/dataNoTrimCRLF";
var rs = fs.createReadStream(testData, { highWaterMark: 3 });
var st = rs.pipe(new Converter({
trim: false
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.name === "joe");
assert(j.age === "20");
assert.equal(res[1].name, "sam");
assert.equal(res[1].age, "30");
done();
});
});
it("should detect eol correctly when first chunk ends in middle of CRLF line break", function (done) {
var testData = __dirname + "/data/dataNoTrimCRLF";
var rs = fs.createReadStream(testData, { highWaterMark: 9 });
var st = rs.pipe(new Converter({
trim: false
}));
st.then(function (res) {
var j = res[0];
assert(res.length === 2);
assert(j.name === "joe");
assert(j.age === "20");
assert.equal(res[1].name, "sam");
assert.equal(res[1].age, "30");
done();
});
});
it("should emit eol event when line ending is detected as CRLF", function (done) {
var testData = __dirname + "/data/dataNoTrimCRLF";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter());
var eolCallback = sandbox.spy(function (eol) {
assert.equal(eol, "\r\n");
});
st.on("eol", eolCallback);
st.then(function () {
assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
done();
})
});
it("should emit eol event when line ending is detected as LF", function (done) {
var testData = __dirname + "/data/columnArray";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter());
var eolCallback = sandbox.spy(function (eol) {
assert.equal(eol, "\n");
});
st.on("eol", eolCallback);
st.then(function () {
assert.equal(eolCallback.callCount, 1, 'should emit eol event once');
done();
})
});
it("should remove the Byte Order Mark (BOM) from input", function (done) {
var testData = __dirname + "/data/dataNoTrimBOM";
var rs = fs.createReadStream(testData);
var st = rs.pipe(new Converter({
trim: false
}));
st.then( function (res) {
var j = res[0];
assert(res.length===2);
assert(j.name === "joe");
assert(j.age === "20");
done();
});
});
});

View File

@@ -0,0 +1,583 @@
import { Converter } from "../src/Converter";
import csv from "../src";
var assert = require("assert");
var fs = require("fs");
var sandbox = require('sinon').sandbox.create();
describe("testCSVConverter2", function () {
afterEach(function () {
sandbox.restore();
});
it("should convert from large csv string", function (done) {
var csvStr = fs.readFileSync(__dirname + "/data/large-csv-sample.csv", "utf8");
var conv = new Converter({
});
conv.fromString(csvStr).then(function (res) {
assert(res.length === 5290);
done();
});
});
it("should set eol", function (done) {
var rs = fs.createReadStream(__dirname + "/data/large-csv-sample.csv");
var conv = new Converter({
eol: "\n"
});
var count = 0;
conv.subscribe(function (resultJson, index) {
count++;
assert(resultJson);
// assert(row.length === 2);
assert(index >= 0);
});
conv.on("error", function () {
console.log(arguments);
});
conv.then(function (result) {
assert(result);
assert(count === 5290);
done();
});
rs.pipe(conv);
});
it("should convert tsv String", function (done) {
var tsv = __dirname + "/data/dataTsv";
var csvStr = fs.readFileSync(tsv, "utf8");
var conv = new Converter({
delimiter: "\t",
"checkType": false
});
conv.fromString(csvStr).then(function (res) {
assert(res);
assert.equal(res.length, 200);
done();
});
});
it("should allow customised header with nohead csv string.", function (done) {
var testData = __dirname + "/data/noheadercsv";
var rs = fs.readFileSync(testData, "utf8");
var conv = new Converter({
noheader: true,
headers: ["a", "b", "c", "e", "f", "g"]
});
conv.fromString(rs).then(function (json) {
assert.equal(json[0].field7, 40);
assert.equal(json[0].a, "CC102-PDMI-001");
done();
});
});
it("should parse fromFile", function (done) {
var csvFile = __dirname + "/data/large-csv-sample.csv";
var conv = new Converter({
});
conv.fromFile(csvFile).then(function (res) {
assert.equal(res.length, 5290);
done();
});
});
it("should fromFile should emit error", function (done) {
var csvFile = __dirname + "/data/dataWithUnclosedQuotes";
var conv = new Converter({
});
conv.fromFile(csvFile).then(function (res) {
done();
}, function (err) {
assert(err);
done();
});
});
it("should parse no header with dynamic column number", function (done) {
var testData = __dirname + "/data/noheaderWithVaryColumnNum";
var rs = fs.readFileSync(testData, "utf8");
var conv = new Converter({
noheader: true
});
conv.fromString(rs).then(function (json) {
assert.equal(json.length, 2);
assert.equal(json[1].field4, 7);
done();
});
});
it("should parse tabsv data with dynamic columns", function (done) {
var testData = __dirname + "/data/tabsv";
var rs = fs.readFileSync(testData, "utf8");
var conv = new Converter({
delimiter: "\t"
});
conv.fromString(rs).then(function (json) {
assert.equal(json[0].Idevise, "");
done();
});
});
it("should use first line break as eol", function (done) {
var testData = __dirname + "/data/testEol";
var conv = new Converter({
noheader: true
});
conv.fromFile(testData).then(function (json) {
assert(json);
done();
});
});
it("should detect delimiter", function (done) {
var testData = __dirname + "/data/dataWithAutoDelimiter";
var rs = fs.createReadStream(testData);
var conv = new Converter({ delimiter: "auto" });
conv.then(function (res) {
assert.equal(res[0].col1, "Mini. Sectt:hisar S.O");
assert.equal(res[1].col1, "#Mini. Sectt");
done();
});
rs.pipe(conv);
});
it("should emit delimiter event", function (done) {
var testData = __dirname + "/data/dataWithAutoDelimiter";
var rs = fs.createReadStream(testData);
var conv = new Converter({ delimiter: "auto" });
var delimiterCallback = sandbox.spy(function (delimiter) {
assert.equal(delimiter, ":");
});
conv.on("delimiter", delimiterCallback);
conv.then(function () {
assert.equal(delimiterCallback.callCount, 1);
done();
});
rs.pipe(conv);
});
it("should emit delimiter event when no header", function (done) {
var testData = __dirname + "/data/dataWithAutoDelimiter";
var rs = fs.createReadStream(testData);
var conv = new Converter({ delimiter: "auto", noheader: true });
var delimiterCallback = sandbox.spy(function (delimiter) {
assert.equal(delimiter, ":");
});
conv.on("delimiter", delimiterCallback);
conv.then(function () {
assert.equal(delimiterCallback.callCount, 1);
done();
});
rs.pipe(conv);
});
// it("should not emit delimiter event when delimiter is specified", function (done) {
// var testData = __dirname + "/data/columnArray";
// var rs = fs.createReadStream(testData);
// var conv = new Converter();
// conv.on("delimiter", function (delimiter) {
// assert.fail("delimiter event should not have been emitted");
// });
// conv.then(function () {
// done();
// });
// rs.pipe(conv);
// });
it("should stripe out whitespaces if trim is true", function (done) {
var testData = __dirname + "/data/dataWithWhiteSpace";
var rs = fs.createReadStream(testData);
var conv = new Converter({ trim: true });
conv.then(function (res) {
assert.equal(res[0]["Column 1"], "Column1Row1");
assert.equal(res[0]["Column 2"], "Column2Row1");
done();
});
rs.pipe(conv);
});
it("should convert triple quotes correctly", function (done) {
var testData = __dirname + "/data/dataWithTripleQoutes";
var rs = fs.createReadStream(testData);
var conv = new Converter({ trim: true });
conv.then(function (res) {
assert.equal(res[0].Description, "ac, abs, moon");
assert.equal(res[1].Model, "Venture \"Extended Edition\"");
assert.equal(res[2].Model, "Venture \"Extended Edition, Very Large\"");
done();
});
rs.pipe(conv);
});
it("should pre process raw data in the line", function (done) {
var testData = __dirname + "/data/quoteTolerant";
var rs = fs.createReadStream(testData);
var conv = new Converter();
conv.preRawData(function (d) {
return d.replace('THICK', 'THIN');
});
conv.then(function (res) {
assert(res[0].Description.indexOf('THIN') > -1);
done();
});
rs.pipe(conv);
});
it("should pre process by line in the line", function (done) {
var testData = __dirname + "/data/quoteTolerant";
var rs = fs.createReadStream(testData);
var conv = new Converter();
conv.preFileLine(function (line, lineNumber) {
if (lineNumber === 1) {
line = line.replace('THICK', 'THIN');
}
return line;
});
conv.then(function (res) {
assert(res[0].Description.indexOf('THIN') > -1);
done();
});
rs.pipe(conv);
});
it("should support object mode", function (done) {
var testData = __dirname + "/data/complexJSONCSV";
var rs = fs.createReadStream(testData);
var conv = new Converter({}, {
objectMode: true
});
conv.on("data", function (d) {
assert(typeof d === "object");
});
conv.then(function (res) {
assert(res);
assert(res.length > 0);
done();
});
rs.pipe(conv);
});
it("should get delimiter automatically if there is no header", function (done) {
var test_converter = new Converter({
delimiter: 'auto',
headers: ['col1', 'col2'],
noheader: true,
checkColumn: true
});
var my_data = 'first_val\tsecond_val';
test_converter.fromString(my_data).then(function (result) {
assert.equal(result.length, 1);
assert.equal(result[0].col1, "first_val");
assert.equal(result[0].col2, "second_val");
done();
});
});
it("should process escape chars", function (done) {
var test_converter = new Converter({
escape: "\\",
checkType: true
});
var testData = __dirname + "/data/dataWithSlashEscape";
var rs = fs.createReadStream(testData);
test_converter.then(function (res) {
assert.equal(res[0].raw.hello, "world");
assert.equal(res[0].raw.test, true);
done();
});
rs.pipe(test_converter);
});
it("should process escape chars when delimiter is between escaped quotes", function(done) {
var test_converter = new Converter({
escape: "\\"
});
var testData =
__dirname + "/data/dataWithSlashEscapeAndDelimiterBetweenQuotes";
var rs = fs.createReadStream(testData);
test_converter.then(function(res) {
assert.equal(res[0].raw, '"hello,"world"');
done();
});
rs.pipe(test_converter);
});
it("should output ndjson format", function(done) {
var conv = new Converter();
conv.fromString("a,b,c\n1,2,3\n4,5,6")
.on("data", function (d) {
d = d.toString();
assert.equal(d[d.length - 1], "\n");
})
.on("done", done);
});
it("should parse from stream", function (done) {
var testData = __dirname + "/data/complexJSONCSV";
var rs = fs.createReadStream(testData);
csv()
.fromStream(rs)
.then(function (res) {
assert(res);
done();
});
});
it("should set output as csv", function (done) {
var testData = __dirname + "/data/complexJSONCSV";
var rs = fs.createReadStream(testData);
var numOfRow = 0;
csv({ output: "csv" })
.fromStream(rs)
.subscribe(function (row, idx) {
numOfRow++;
assert(row);
assert(idx >= 0);
})
.on("done", function (error) {
assert(!error);
assert.equal(2, numOfRow);
assert(numOfRow !== 0);
done();
});
});
it("should transform with subscribe function", function (done) {
var testData = __dirname + "/data/complexJSONCSV";
var rs = fs.createReadStream(testData);
var numOfRow = 0;
var numOfJson = 0;
csv()
.fromStream(rs)
.subscribe(function (json, idx) {
json.a = "test";
assert(idx >= 0);
})
.on("data", function (d) {
const j = JSON.parse(d.toString());
assert.equal(j.a, "test");
})
.on("end", function () {
done();
});
});
it("should parse a complex JSON", function (done) {
var converter = new Converter({ checkType: true });
var r = fs.createReadStream(__dirname + "/data/complexJSONCSV");
converter.then(function (res) {
assert(res);
assert(res.length === 2);
assert(res[0].fieldA.title === "Food Factory");
assert(res[0].fieldA.children.length === 2);
assert(res[0].fieldA.children[0].name === "Oscar");
assert(res[0].fieldA.children[0].id === 23);
assert(res[0].fieldA.children[1].name === "Tikka");
assert.equal(res[0].fieldA.children[1].employee.length, 2);
assert(res[0].fieldA.children[1].employee[0].name === "Tim", JSON.stringify(res[0].fieldA.children[1].employee[0]));
assert(res[0].fieldA.address.length === 2);
assert(res[0].fieldA.address[0] === "3 Lame Road");
assert(res[0].fieldA.address[1] === "Grantstown");
assert(res[0].description === "A fresh new food factory", res[0].description);
done();
});
r.pipe(converter);
});
it("should allow flatKey to change parse behaviour", function (done) {
var conv = new Converter({
flatKeys: true
});
conv.fromString("a.b,b.d,c.a\n1,2,3\n4,5,6").subscribe(function (d) {
assert(d["a.b"]);
assert(d["b.d"]);
assert(d["c.a"]);
})
.on("done", done);
});
it("should allow flat mods to change parse behaviour", function (done) {
var conv = new Converter({
colParser: {
"a.b": {
flat: true
}
}
});
conv.fromString("a.b,b.d,c.a\n1,2,3\n4,5,6").subscribe(function (d) {
assert(d["a.b"]);
})
.on("done", done);
});
it("should process long header", function (done) {
var testData = __dirname + "/data/longHeader";
var rs = fs.createReadStream(testData, { highWaterMark: 100 });
var numOfRow = 0;
var numOfJson = 0;
csv({}, { highWaterMark: 100 })
.fromStream(rs)
.subscribe(function (res, idx) {
numOfJson++;
assert.equal(res.Date, '8/26/16');
assert(idx >= 0);
})
.on("done", function () {
assert(numOfJson === 1);
done();
});
});
it("should parse #139", function (done) {
var rs = fs.createReadStream(__dirname + "/data/data#139");
csv()
.fromStream(rs)
.then(function (res) {
assert.equal(res[1].field3, "9001009395 9001009990");
done();
});
});
it("should ignore column", function (done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes");
var headerEmitted = false;
csv({
ignoreColumns: /TIMESTAMP/
})
.fromStream(rs)
.on("header", function (header) {
assert.equal(header.indexOf("TIMESTAMP"), -1);
assert.equal(header.indexOf("UPDATE"), 0);
if (headerEmitted) {
throw ("header event should only happen once")
}
headerEmitted = true;
})
// .on("csv", function (row, idx) {
// if (!headerEmitted) {
// throw ("header should be emitted before any data events");
// }
// assert(idx >= 0);
// if (idx === 1) {
// assert.equal(row[0], "n");
// }
// })
.subscribe(function (j, idx) {
assert(!j.TIMESTAMP);
assert(idx >= 0);
})
.on("done", function () {
assert(headerEmitted);
done();
});
});
it("should keep space around comma in csv", function () {
const str = `"Name","Number"
"John , space", 1234
"Mr. , space", 4321
`;
return csv().fromString(str)
.then((data) => {
assert.equal(data[0].Name, "John , space");
assert.equal(data[1].Name, "Mr. , space");
})
})
it("should include column", function (done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithQoutes");
csv({
includeColumns: /TIMESTAMP/
})
.fromStream(rs)
.on("header", function (header) {
assert.equal(header.indexOf("TIMESTAMP"), 0);
assert.equal(header.indexOf("UPDATE"), -1);
assert.equal(header.length, 1);
})
.subscribe(function (j, idx) {
assert(idx >= 0);
if (idx === 1) {
assert.equal(j.TIMESTAMP, "abc, def, ccc");
}
assert(!j.UID)
assert(!j['BYTES SENT'])
})
.on("done", function () {
done();
});
});
it("should allow headers and include columns to be given as reference to the same var", function (done) {
var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV");
var headers = [
'first',
'second',
'third',
];
var expected = headers;
csv({
headers: headers,
includeColumns: /(first|second|third)/,
})
.fromStream(rs)
.on("header", function (header) {
expected.forEach(function (value, index) {
assert.equal(header.indexOf(value), index);
});
})
.subscribe(function (j, idx) {
assert(idx >= 0);
assert.equal(expected.length, Object.keys(j).length);
expected.forEach(function (attribute) {
assert(j.hasOwnProperty(attribute));
});
})
.on("done", function () {
done();
});
});
it("should leave provided params objects unmutated", function() {
var rs = fs.createReadStream(__dirname + "/data/complexJSONCSV");
var includeColumns = [
'fieldA.title',
'description',
];
return csv({
includeColumns: /(fieldA\.title|description)/,
})
.fromStream(rs)
.on("json", function(j, idx) {
assert(idx >= 0);
})
.on("header", function(header) {
includeColumns.forEach(function (value, index) {
assert.equal(index, header.indexOf(value));
});
})
});
it("should only call done once", function (done) {
var counter=0;
csv()
.fromString('"a","b", "c""')
.on('done',function(){
counter++;
});
setTimeout(function(){
assert.equal(counter,1);
done();
},100);
})
});

View File

@@ -0,0 +1,323 @@
import csv from "../src";
import assert from "assert";
var fs = require("fs");
import { sandbox } from "sinon";
import CSVError from "../src/CSVError";
const sb = sandbox.create();
describe("testCSVConverter3", function () {
afterEach(function () {
sb.restore();
});
it("should parse large csv file with UTF-8 without spliting characters", function (done) {
var testData = __dirname + "/data/large-utf8.csv";
var rs = fs.createReadStream(testData);
var csvConverter = csv({
});
var count = 0;
csvConverter.preRawData(function (csvRawData) {
assert(csvRawData.charCodeAt(0) < 2000);
return csvRawData;
})
csvConverter.on("data", function () {
count++;
});
csvConverter.then(function () {
assert(count === 5290);
done();
});
rs.pipe(csvConverter);
});
it("should setup customise type convert function", function (done) {
csv({
checkType: true,
colParser: {
"column1": "string",
"column5": function (item, head, resultRow, row, i) {
assert.equal(item, '{"hello":"world"}');
assert.equal(head, "column5"),
assert(resultRow);
assert(row);
assert.equal(i, 5);
return "hello world";
}
}
})
.fromFile(__dirname + "/data/dataWithType")
.subscribe(function (json) {
assert.equal(typeof json.column1, "string");
assert.equal(json.column5, "hello world");
assert.strictEqual(json["name#!"], false);
assert.strictEqual(json["column9"], true);
})
.on('done', function () {
done()
});
})
it("should accept pipe as quote", function (done) {
csv({
quote: "|",
output: "csv"
})
.fromFile(__dirname + "/data/pipeAsQuote")
.subscribe(function (csv) {
assert.equal(csv[2], "blahhh, blah");
})
.on('done', function () {
done()
});
})
it("emit file not exists error when try to open a non-exists file", function () {
let called = false;
const cb = sb.spy((err) => {
assert(err.toString().indexOf("File does not exist") > -1);
});
return csv()
.fromFile("somefile")
.subscribe(function (csv) {
})
.on("error", cb)
.then(() => {
assert(false);
}, (err) => {
assert.equal(cb.callCount, 1);
})
})
it("should include column that is both included and excluded", () => {
return csv({
includeColumns: /b/,
ignoreColumns: /a|b/
})
.fromString(`a,b,c
1,2,3
4,5,6`)
.subscribe((d) => {
assert(d.b);
assert(!d.a);
})
})
it("should allow async preLine hook", () => {
return csv()
.preFileLine((line) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(line + "changed")
}, 20);
})
})
.fromString(`a,b
1,2`)
.subscribe((d) => {
assert(d.bchanged);
assert.equal(d.bchanged, "2changed");
})
})
it("should allow async subscribe function", () => {
return csv({ trim: true })
.fromString(`a,b,c
1,2,3
4,5,6`)
.subscribe((d) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
d.a = 10;
resolve();
}, 20);
})
})
.then((d) => {
assert.equal(d[0].a, 10);
assert.equal(d[1].a, 10);
})
})
it("should propagate value to next then", () => {
return csv({ trim: true })
.fromString(`a,b,c
1,2,3
4,5,6`)
.then(undefined, undefined)
.then((d) => {
assert.equal(d.length, 2);
assert.equal(d[0].a, "1");
})
})
it("should propagate error to next then", () => {
return csv({ trim: true })
.fromFile(__dirname + "/data/dataWithUnclosedQuotes")
.then(undefined, undefined)
.then(() => {
assert(false)
}, (err: CSVError) => {
assert(err);
assert.equal(err.err, "unclosed_quote");
})
})
it("should fallback to text is number can not be parsed", () => {
return csv({
colParser: {
"a": "number"
}
})
.fromString(`a,b,c
1,2,3
fefe,5,6`)
.then((d) => {
assert.strictEqual(d[0].a, 1);
assert.equal(d[1].a, "fefe");
})
})
it("should omit a column", () => {
return csv({
colParser: {
"a": "omit"
}
})
.fromString(`a,b,c
1,2,3
fefe,5,6`)
.then((d) => {
assert.strictEqual(d[0].a, undefined);
assert.equal(d[1].a, undefined);
})
})
it("could turn off quote and should trim even quote is turned off", () => {
return csv({
quote: "off",
trim: true
})
.fromString(`a,b,c
"1","2","3"
"fefe,5",6`)
.then((d) => {
assert.equal(d[0].a, '"1"');
assert.equal(d[0].b, '"2"');
assert.equal(d[1].a, '"fefe');
assert.equal(d[1].b, '5"');
})
})
it("should allow ignoreEmpty with checkColumn", () => {
return csv({
checkColumn: true,
ignoreEmpty: true
})
.fromString(`date,altitude,airtime
2016-07-08,2000,23
2016-07-09,3000,43`)
.then((data) => {
}, (err) => {
console.log(err);
assert(!err);
})
});
it("should allow quotes without content", () => {
const data = "a|^^|^b^";
return csv({
delimiter: '|',
quote: '^',
noheader: true,
})
.fromString(data)
.then((jsonObj) => {
assert.equal(jsonObj[0].field2, "");
});
})
it("should parse header with quotes correctly", function () {
var testData = __dirname + "/data/csvWithUnclosedHeader";
return csv({
headers: ["exam_date", "sample_no", "status", "sample_type", "patient_id", "last_name", "first_name", "gender_of_patient", "patient_birth_date", "patient_note", "patient_department", "accession_number", "sample_site", "physician", "operator", "department", "note", "test_order_code", "draw_time", "approval_status", "approval_time", "report_layout", "patient_account_number", "none_1", "errors_detected_during_measurement", "age", "error_code_01", "weight", "error_code_02", "height", "error_code_03", "hcg_beta_p", "error_code_04", "troponin_i_p", "error_code_05", "ck_mb_p", "error_code_06", "d_dimer_p", "error_code_07", "hscrp_p", "error_code_08", "myoglobin_p", "error_code_09", "nt_probnp", "error_code_10", "crp", "error_code_11", "bnp", "error_code_12", "tnt", "error_code_13", "demo_p", "error_code_14", "pct", "error_code_15"]
})
.fromFile(testData)
.then((d) => {
assert.equal(d.length, 2);
assert.equal(d[0].sample_no, "12669");
})
});
it ("should stream json string correctly",function(done){
const data=`a,b,c
1,2,3
4,5,6`
let hasLeftBracket=false;
let hasRightBracket=false;
csv({
downstreamFormat:"array"
})
.fromString(data)
.on("data",(d)=>{
const str=d.toString();
if (str[0]==="[" && str.length ===2){
hasLeftBracket=true;
}else if (str[0]==="]" && str.length===2){
hasRightBracket=true;
}else{
assert.equal(str[str.length-2],",");
}
})
.on("end",()=>{
assert.equal(hasLeftBracket,true);
assert.equal(hasRightBracket,true);
done();
})
})
it ("should stream json line correctly",function(done){
const data=`a,b,c
1,2,3
4,5,6`
csv({
downstreamFormat:"line"
})
.fromString(data)
.on("data",(d)=>{
const str=d.toString();
assert.notEqual(str[str.length-2],",");
})
.on("end",()=>{
done();
})
})
it ("should not send json if needEmitAll is false",async function(){
const data=`a,b,c
1,2,3
4,5,6`
return csv({
needEmitAll:false
})
.fromString(data)
.then((d)=>{
assert(d.length===0);
})
})
it ("should convert null to null object",async function(){
const data=`a,b,c
null,2,3
4,5,6`
return csv({
nullObject:true
})
.fromString(data)
.then((d)=>{
assert.equal(d[0].a,null)
})
})
it ("should process period properly",async function(){
const data=`a..,b,c
1,2,3
4,5,6`
return csv({
})
.fromString(data)
.then((d)=>{
assert.equal(d[0]["a.."],1);
assert.equal(d[1]["a.."],4);
})
})
});

View File

@@ -0,0 +1,57 @@
import {Converter} from "../src/Converter";
import CSVError from "../src/CSVError";
var assert = require("assert");
var fs = require("fs");
describe("Converter error handling", function() {
it("should handle quote not closed", function(done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithUnclosedQuotes");
var conv = new Converter({});
conv.on("error", function(err:CSVError) {
assert(err.err === "unclosed_quote");
done();
});
rs.pipe(conv);
});
it ("should handle column number mismatched error", function(done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithMismatchedColumn");
var conv = new Converter({
checkColumn:true
});
var tested = false;
conv.on("error", function(err:CSVError) {
if (tested === false) {
assert(err.err === "column_mismatched");
tested = true;
// done();
}
});
conv.on('done',function() {
assert(tested);
done();
});
rs.pipe(conv);
});
it("should treat quote not closed as column_mismatched when alwaysSplitAtEOL is true", function(done) {
var rs = fs.createReadStream(__dirname + "/data/dataWithUnclosedQuotes");
var conv = new Converter({
checkColumn:true,
alwaysSplitAtEOL:true,
});
var tested = false;
conv.on("error", function(err:CSVError) {
if (tested === false) {
assert(err.err === "column_mismatched");
tested = true;
}
});
conv.on('done',function() {
assert(tested);
done();
});
rs.pipe(conv);
});
});