flatfile-csv-importer
Version:
A simple adapter for elegantly importing CSV files via flatfile.io (Typescript, ES6, Browser)
297 lines • 16 kB
JavaScript
import Stats from './stats';
import User from './user';
import UploadFile from './upload-file';
import StreamedResults from './streamed-results';
var FlatfileResults = /** @class */ (function () {
function FlatfileResults(data, meta, importer) {
this.$meta = meta;
this.$data = data;
this.$importer = importer;
}
Object.defineProperty(FlatfileResults.prototype, "rawOutput", {
/**
* The raw output from the importer including all deleted rows
* and sequence info
*/
get: function () {
return this.blobOnly(this.$data, 'rawOutput');
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "data", {
/**
* An array of valid data, key-mapped to the configuration provided
* (alias of validData)
*/
get: function () {
return this.blobOnly(this.validData, 'data');
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "validData", {
/**
* An array of valid data, key-mapped to the configuration provided
*/
get: function () {
var res = this.$data.filter(function (v) { return v.valid; })
.filter(function (v) { return !v.deleted; })
.map(function (v) { return v.data; });
return this.blobOnly(res, 'validData');
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "deletedData", {
/**
* Rows of data the user excluded from the final results,
* key-mapped to the configuration provided
*/
get: function () {
var res = this.$data.filter(function (v) { return v.deleted; })
.map(function (v) { return v.data; });
return this.blobOnly(res, 'deletedData');
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "allData", {
/**
* All data from the original file upload including deleted rows,
* key-mapped to the configuration provided
*/
get: function () {
return this.blobOnly(this.$data.map(function (v) { return v.data; }), 'allData');
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "batchId", {
/**
* The uuid of the batch assigned by Flatfile (use this in internal
* references for support purposes)
*/
get: function () {
return this.$meta.batchID;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "stats", {
/**
* Stats and counts about this file upload
*/
get: function () {
return new Stats(this.$meta);
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "customer", {
/**
* The customer provided in setCustomer
*/
get: function () {
if (this.$meta.endUser) {
return new User(this.$meta.endUser);
}
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "originalFile", {
/**
* A File object of the originally uploaded file stored as an AWS url
*/
get: function () {
if (this.$meta.originalFile) {
return new UploadFile(this.$meta.originalFile);
}
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "csvFile", {
/**
* Same as originalFile unless it was uploaded in xls format, in which case this is the converted csv file stored as an AWS url
*/
get: function () {
if (this.$meta.originalFile) {
if (this.$meta.originalFile.filetype === 'csv') {
return new UploadFile(this.$meta.originalFile);
}
else {
if (this.$meta.csvFile) {
return new UploadFile(this.$meta.csvFile);
}
}
}
return null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "fileName", {
/**
* The filename of the originally uploaded file
*/
get: function () {
return this.$meta.filename || null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "managed", {
/**
* If the final upload is managed by a private endpoint or not
*/
get: function () {
return this.$meta.managed || false;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "manual", {
/**
* If the data was entered manually instead of via file upload or not
*/
get: function () {
return this.$meta.manual;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "config", {
/**
* The parsed and bootstrapped config object used by this importer instance
*/
get: function () {
return this.$meta.config;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "parsingConfig", {
/**
* The configuration used by the csv parser PapaParse: https://www.papaparse.com/docs#config
*/
get: function () {
return this.$meta.parsing_config;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "skippedRows", {
/**
* The invalid rows that were skipped on submission
*/
get: function () {
return this.$meta.skipped_rows || null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "headersRaw", {
/**
* The headers before they were matched as given in the original file
*/
get: function () {
return this.$meta.headers_raw || null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "headersMatched", {
/**
* The headers after they are matched
*/
get: function () {
return this.$meta.headers_matched || null;
},
enumerable: true,
configurable: true
});
/**
* Get the next chunk of records
*/
FlatfileResults.prototype.nextChunk = function () {
var _this = this;
return new Promise(function (resolve, reject) {
if (!_this.$meta.inChunks) {
return reject("\"nextChunk()\" is only accessible when using \"inChunks\". Please see docs for \"requestDataFromUser\".");
}
_this.$importer.$ready.then(function (child) {
console.log('child.nextChunk()');
child.nextChunk().then(function (data) {
console.log('nextChunk()', data);
resolve(data.results.length ? new StreamedResults(data.results, data.meta) : null);
}, function (err) {
console.log('nextChunk(err)', err);
});
});
});
};
Object.defineProperty(FlatfileResults.prototype, "customColumns", {
/**
* An array of any columns that were created during import
*/
get: function () {
return this.$meta.custom_columns;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "failureReason", {
/**
* The reason for the failure if there was a failure
*/
get: function () {
return this.$meta.failure_reason || null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "submittedAt", {
/**
* The time that the data was submitted
*/
get: function () {
return this.$meta.submitted_at || null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "failedAt", {
/**
* The time that the import failed if it failed
*/
get: function () {
return this.$meta.failed_at || null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(FlatfileResults.prototype, "createdAt", {
/**
* The time the data began the import, whether via file upload or manual data entry
*/
get: function () {
return this.$meta.created_at;
},
enumerable: true,
configurable: true
});
FlatfileResults.prototype.blobOnly = function (v, method, alt) {
if (alt === void 0) { alt = 'nextChunk()'; }
if (this.$meta.inChunks) {
throw new Error("\"" + method + "\" is not accessible when using \"inChunks\". Please see docs for \"" + alt + "\" instead.");
}
return v;
};
return FlatfileResults;
}());
export default FlatfileResults;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXN1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxNQUFNLFNBQVMsQ0FBQTtBQUczQixPQUFPLElBQUksTUFBTSxRQUFRLENBQUE7QUFDekIsT0FBTyxVQUFVLE1BQU0sZUFBZSxDQUFBO0FBQ3RDLE9BQU8sZUFBZSxNQUFNLG9CQUFvQixDQUFBO0FBRWhEO0lBZ0JFLHlCQUFhLElBQXlCLEVBQUUsSUFBVSxFQUFFLFFBQWtCO1FBQ3BFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFBO0lBQzNCLENBQUM7SUFNRCxzQkFBSSxzQ0FBUztRQUpiOzs7V0FHRzthQUNIO1lBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDL0MsQ0FBQzs7O09BQUE7SUFNRCxzQkFBSSxpQ0FBSTtRQUpSOzs7V0FHRzthQUNIO1lBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDOUMsQ0FBQzs7O09BQUE7SUFLRCxzQkFBSSxzQ0FBUztRQUhiOztXQUVHO2FBQ0g7WUFDRSxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxLQUFLLEVBQVAsQ0FBTyxDQUFDO2lCQUNwQixNQUFNLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQVYsQ0FBVSxDQUFDO2lCQUN2QixHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsSUFBSSxFQUFOLENBQU0sQ0FB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