This is obviously a custom format. The ~ look likes field delimters with some fields with an inner structure where a , . or : is used as a delimeter, the ^ is the record delimiter. The first field is a number and the first record is different from the next ones which seem to be identical in field structure.
If you want to use that in javascript you have to write your own deserializer...