UNPKG

2.22 kBJavaScriptView Raw
1'use strict';
2
3let {Json2Csv} = require('./json2csv'), // Require our json-2-csv code
4 {Csv2Json} = require('./csv2json'), // Require our csv-2-json code
5 utils = require('./utils');
6
7module.exports = {
8 json2csv: (data, callback, options) => convert(Json2Csv, data, callback, options),
9 csv2json: (data, callback, options) => convert(Csv2Json, data, callback, options),
10 json2csvAsync: (json, options) => convertAsync(Json2Csv, json, options),
11 csv2jsonAsync: (csv, options) => convertAsync(Csv2Json, csv, options),
12
13 /**
14 * @deprecated Since v3.0.0
15 */
16 json2csvPromisified: (json, options) => deprecatedAsync(Json2Csv, 'json2csvPromisified()', 'json2csvAsync()', json, options),
17
18 /**
19 * @deprecated Since v3.0.0
20 */
21 csv2jsonPromisified: (csv, options) => deprecatedAsync(Csv2Json, 'csv2jsonPromisified()', 'csv2jsonAsync()', csv, options)
22};
23
24/**
25 * Abstracted converter function for json2csv and csv2json functionality
26 * Takes in the converter to be used (either Json2Csv or Csv2Json)
27 * @param converter
28 * @param data
29 * @param callback
30 * @param options
31 */
32function convert(converter, data, callback, options) {
33 return utils.convert({
34 data: data,
35 callback,
36 options,
37 converter: converter
38 });
39}
40
41/**
42 * Simple way to promisify a callback version of json2csv or csv2json
43 * @param converter
44 * @param data
45 * @param options
46 * @returns {Promise<any>}
47 */
48function convertAsync(converter, data, options) {
49 return new Promise((resolve, reject) => convert(converter, data, (err, data) => {
50 if (err) {
51 return reject(err);
52 }
53 return resolve(data);
54 }, options));
55}
56
57/**
58 * Simple way to provide a deprecation warning for previous promisified versions
59 * of module functionality.
60 * @param converter
61 * @param deprecatedName
62 * @param replacementName
63 * @param data
64 * @param options
65 * @returns {Promise<any>}
66 */
67function deprecatedAsync(converter, deprecatedName, replacementName, data, options) {
68 console.warn('WARNING: ' + deprecatedName + ' is deprecated and will be removed soon. Please use ' + replacementName + ' instead.');
69 return convertAsync(converter, data, options);
70}