@kitalive/sfdx-plugin 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/bulk.js ADDED
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBulkCommand = exports.normalizeDateString = exports.bulkLoad = exports.bulkQuery = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const command_1 = require("@salesforce/command");
6
+ const dayjs = require("dayjs");
7
+ const csv = require("fast-csv");
8
+ const fs = require("fs-extra");
9
+ const path = require("path");
10
+ const convert_1 = require("./commands/kit/data/csv/convert");
11
+ const convert_2 = require("./commands/kit/data/csv/convert");
12
+ const utils = require("./utils");
13
+ function bulkQuery(conn, query) {
14
+ return new Promise((resolve, reject) => {
15
+ const records = [];
16
+ conn.bulk.query(query)
17
+ .on('error', reject)
18
+ .on('record', record => records.push(record))
19
+ .on('end', () => resolve(records));
20
+ });
21
+ }
22
+ exports.bulkQuery = bulkQuery;
23
+ function bulkLoad(conn, sobject, operation, rows, options) {
24
+ const _a = options || {}, { batchSize = 10000, wait } = _a, jobOptions = tslib_1.__rest(_a, ["batchSize", "wait"]);
25
+ const job = conn.bulk.createJob(sobject, operation, jobOptions);
26
+ const fetchResults = async (records) => ({
27
+ job: await job.check(),
28
+ batches: await job.list(),
29
+ records
30
+ });
31
+ const executeBatch = batchRows => new Promise((resolve, reject) => {
32
+ const batch = job.createBatch();
33
+ batch.on('error', e => {
34
+ if (e.message.startsWith('Polling time out'))
35
+ job.emit('error', e);
36
+ reject(e);
37
+ });
38
+ batch.on('queue', batchInfo => {
39
+ batch.check().then(result => {
40
+ if (result.state === 'Failed') {
41
+ reject(result.stateMessage);
42
+ }
43
+ else if (wait) {
44
+ batch.poll(5000, wait * 60000);
45
+ }
46
+ else {
47
+ fetchResults([]).then(resolve).catch(reject);
48
+ }
49
+ }).catch(reject);
50
+ });
51
+ batch.on('response', resolve);
52
+ batch.execute(batchRows, error => error && reject(error));
53
+ });
54
+ return new Promise(async (resolve, reject) => {
55
+ job.on('error', reject);
56
+ try {
57
+ const results = await Promise.all(utils.chunk(rows, batchSize).map(executeBatch));
58
+ resolve(await fetchResults(results.flat()));
59
+ }
60
+ catch (e) {
61
+ reject(e);
62
+ }
63
+ finally {
64
+ await job.close();
65
+ }
66
+ });
67
+ }
68
+ exports.bulkLoad = bulkLoad;
69
+ function normalizeDateString(str, format) {
70
+ if (!str)
71
+ return str;
72
+ const d = dayjs(str);
73
+ return format ? d.format(format) : d.toISOString();
74
+ }
75
+ exports.normalizeDateString = normalizeDateString;
76
+ const converters = {
77
+ date: value => normalizeDateString(value, 'YYYY-MM-DD'),
78
+ datetime: normalizeDateString
79
+ };
80
+ const csvFlags = convert_1.default['flagsConfig'];
81
+ const createBulkCommand = (operation) => {
82
+ var _a;
83
+ const config = {
84
+ object: command_1.flags.string({ char: 'o', required: true, description: `the sObject name to ${operation}` }),
85
+ // csv settings
86
+ csvfile: command_1.flags.filepath({ char: 'f', required: true, description: `the CSV file path that defines the records to ${operation}` }),
87
+ resultfile: command_1.flags.filepath({ char: 'r', description: `the CSV file path for writing the ${operation} results` }),
88
+ encoding: csvFlags.encoding,
89
+ delimiter: csvFlags.delimiter,
90
+ quote: csvFlags.quote,
91
+ skiplines: csvFlags.skiplines,
92
+ trim: csvFlags.trim,
93
+ mapping: csvFlags.mapping,
94
+ converter: csvFlags.converter,
95
+ setnull: command_1.flags.boolean({ description: `set blank values as null values during ${operation} operations (default: empty field values are ignored)` }),
96
+ convertonly: command_1.flags.boolean({ description: `output converted.csv file and skip ${operation} for debugging` }),
97
+ // job settings
98
+ concurrencymode: command_1.flags.string({ default: 'Parallel', description: 'the concurrency mode (Parallel or Serial) for the job' }),
99
+ assignmentruleid: command_1.flags.string({ description: 'the ID of a specific assignment rule to run for a case or a lead.' }),
100
+ batchsize: command_1.flags.integer({ char: 's', min: 1, max: 10000, default: 10000, description: 'the batch size of the job' }),
101
+ wait: command_1.flags.integer({ char: 'w', min: 0, description: 'the number of minutes to wait for the command to complete before displaying the results' })
102
+ };
103
+ const examples = [
104
+ `$ sfdx kit:data:bulk:${operation} -o Account -f ./path/to/Account.csv -m ./path/to/mapping.json`
105
+ ];
106
+ if (operation === 'upsert') {
107
+ config['externalid'] = command_1.flags.string({ char: 'i', required: true, default: 'Id', description: 'the column name of the external ID' });
108
+ examples.push('$ sfdx kit:data:bulk:upsert -o MyObject__c -f ./path/to/MyObject__c.csv -c ./path/to/convert.js -i MyExternalId__c -w 10');
109
+ }
110
+ else {
111
+ examples.push(`$ sfdx kit:data:bulk:${operation} -o MyObject__c -f ./path/to/MyObject__c.csv -c ./path/to/convert.js -w 10`);
112
+ }
113
+ return _a = class extends command_1.SfdxCommand {
114
+ async run() {
115
+ const { object, csvfile, mapping, converter, encoding, delimiter, quote, skiplines, trim, setnull } = this.flags;
116
+ const mappingJson = (mapping) ? (await fs.readJson(mapping)) : undefined;
117
+ const script = converter ? this.loadScript(converter) : {};
118
+ const fieldTypes = await this.getFieldTypes(object);
119
+ this.ux.startSpinner('Processing csv');
120
+ if (script.start)
121
+ await script.start(this);
122
+ let rows = await this.parseCsv(fs.createReadStream(csvfile), {
123
+ encoding,
124
+ delimiter,
125
+ quote,
126
+ skiplines,
127
+ trim: !!trim,
128
+ setnull,
129
+ mapping: mappingJson,
130
+ convert: script.convert,
131
+ fieldTypes
132
+ });
133
+ if (script.finish) {
134
+ const result = await script.finish(rows, this);
135
+ if (result)
136
+ rows = result;
137
+ }
138
+ this.ux.stopSpinner();
139
+ if (this.flags.convertonly) {
140
+ const base = path.basename(csvfile, path.extname(csvfile));
141
+ this.saveCsv(path.join(path.dirname(csvfile), base + '.converted.csv'), rows);
142
+ return;
143
+ }
144
+ this.ux.startSpinner(`Bulk ${operation}`);
145
+ try {
146
+ const result = await this.bulkLoad(this.org.getConnection(), object, operation, rows, {
147
+ extIdField: this.flags.externalid,
148
+ concurrencyMode: this.flags.concurrencymode,
149
+ assignmentRuleId: this.flags.assignmentruleid,
150
+ batchSize: this.flags.batchsize,
151
+ wait: this.flags.wait
152
+ });
153
+ const batchErrors = [];
154
+ if (this.flags.wait) {
155
+ const { numberRecordsProcessed, numberRecordsFailed } = result.job;
156
+ this.ux.stopSpinner(`${numberRecordsProcessed} processed, ${numberRecordsFailed} failed.`);
157
+ rows = rows.map((data, i) => {
158
+ const { id, errors } = result.records[i] || {};
159
+ const message = errors === null || errors === void 0 ? void 0 : errors.join(', ');
160
+ if (message) {
161
+ batchErrors.push({ line: i + 2, message, data });
162
+ }
163
+ return Object.assign(Object.assign({}, data), { Id: id, Errors: message });
164
+ });
165
+ if (batchErrors.length) {
166
+ result.errors = batchErrors;
167
+ this.ux.styledHeader('Error details');
168
+ this.ux.table(batchErrors, ['line', 'message']);
169
+ }
170
+ }
171
+ else {
172
+ this.ux.stopSpinner();
173
+ this.ux.log('Check bulk job status with the command: ');
174
+ this.ux.log(`sfdx force:org:open -u ${this.flags.targetusername} -p "lightning/setup/AsyncApiJobStatus/page?address=%2F${result.job.id}"`);
175
+ }
176
+ if (this.flags.resultfile)
177
+ this.saveCsv(this.flags.resultfile, rows);
178
+ return result;
179
+ }
180
+ catch (e) {
181
+ this.ux.stopSpinner('error');
182
+ throw e;
183
+ }
184
+ }
185
+ async parseCsv(input, options) {
186
+ const { encoding, delimiter, quote, skiplines, trim, mapping, convert, setnull, fieldTypes } = options !== null && options !== void 0 ? options : {};
187
+ return await convert_2.parseCsv(input, { encoding, delimiter, quote, skiplines, trim, mapping, convert: row => {
188
+ const result = convert ? convert(row) : row;
189
+ if (!result)
190
+ return;
191
+ if (fieldTypes) {
192
+ for (const key of Object.keys(result)) {
193
+ const converter = converters[fieldTypes[key]];
194
+ if (converter)
195
+ result[key] = converter(result[key]);
196
+ }
197
+ }
198
+ if (setnull) {
199
+ for (const key of Object.keys(result)) {
200
+ if (key.includes('.'))
201
+ continue; // skip reference
202
+ if (result[key] == null || result[key] === '')
203
+ result[key] = '#N/A';
204
+ }
205
+ }
206
+ return result;
207
+ } });
208
+ }
209
+ bulkLoad(conn, sobject, op, rows, options) {
210
+ return bulkLoad(conn, sobject, op, rows, options);
211
+ }
212
+ saveCsv(file, rows) {
213
+ csv.writeToPath(file, rows, { headers: true, writeBOM: true });
214
+ }
215
+ loadScript(file) {
216
+ return convert_2.loadScript(file);
217
+ }
218
+ async getFieldTypes(sobject) {
219
+ const conn = this.org.getConnection();
220
+ const objectInfo = await conn.describe(sobject);
221
+ return objectInfo.fields.reduce((info, { name, type }) => Object.assign(info, { [name]: type }), {});
222
+ }
223
+ },
224
+ _a.description = [
225
+ `bulk ${operation} records from a CSV file`,
226
+ 'For information about CSV file formats, see [Prepare CSV Files](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/datafiles_csv_preparing.htm) in the Bulk API Developer Guide.'
227
+ ].join('\n'),
228
+ _a.examples = examples,
229
+ _a.requiresUsername = true,
230
+ _a.requiresProject = false,
231
+ _a.flagsConfig = config,
232
+ _a;
233
+ };
234
+ exports.createBulkCommand = createBulkCommand;
235
+ //# sourceMappingURL=bulk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk.js","sourceRoot":"","sources":["../src/bulk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { flags, SfdxCommand } from '@salesforce/command';
2
+ import { BulkResult } from '../../../../bulk';
3
+ export default class DeleteCommand extends SfdxCommand {
4
+ static description: string;
5
+ static examples: string[];
6
+ protected static requiresUsername: boolean;
7
+ protected static requiresProject: boolean;
8
+ protected static flagsConfig: {
9
+ query: flags.Discriminated<flags.String>;
10
+ hard: flags.Discriminated<flags.Boolean<boolean>>;
11
+ concurrencymode: flags.Discriminated<flags.String>;
12
+ batchsize: flags.Discriminated<flags.Number>;
13
+ wait: flags.Discriminated<flags.Number>;
14
+ };
15
+ run(): Promise<BulkResult>;
16
+ private bulkQuery;
17
+ private bulkLoad;
18
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const command_1 = require("@salesforce/command");
4
+ const soql_parser_js_1 = require("soql-parser-js");
5
+ const bulk_1 = require("../../../../bulk");
6
+ class DeleteCommand extends command_1.SfdxCommand {
7
+ async run() {
8
+ const query = soql_parser_js_1.parseQuery(this.flags.query);
9
+ query.fields = [soql_parser_js_1.getField('Id')];
10
+ const soql = soql_parser_js_1.composeQuery(query);
11
+ const conn = this.org.getConnection();
12
+ const { concurrencymode: concurrencyMode, batchsize: batchSize, wait, hard } = this.flags;
13
+ this.ux.startSpinner(hard ? 'Bulk hard delete' : 'Bulk delete');
14
+ try {
15
+ const rows = await this.bulkQuery(conn, soql);
16
+ if (!rows.length) {
17
+ this.ux.stopSpinner('no records');
18
+ return { records: [] };
19
+ }
20
+ const operation = hard ? 'hardDelete' : 'delete';
21
+ const result = await this.bulkLoad(conn, query.sObject, operation, rows, { concurrencyMode, batchSize, wait });
22
+ if (wait) {
23
+ const { numberRecordsProcessed, numberRecordsFailed } = result.job;
24
+ const errors = result.records.filter(r => !r.success).map(r => ({ id: r.id, errors: r.errors.join(', ') }));
25
+ this.ux.stopSpinner(`${numberRecordsProcessed} processed, ${numberRecordsFailed} failed.`);
26
+ if (errors.length) {
27
+ this.ux.styledHeader('Error details');
28
+ this.ux.table(errors, ['id', 'errors']);
29
+ }
30
+ }
31
+ else {
32
+ this.ux.stopSpinner();
33
+ this.ux.log('Check bulk job status with the command: ');
34
+ this.ux.log(`sfdx force:org:open -u ${this.flags.targetusername} -p "lightning/setup/AsyncApiJobStatus/page?address=%2F${result.job.id}"`);
35
+ }
36
+ return result;
37
+ }
38
+ catch (e) {
39
+ this.ux.stopSpinner('error');
40
+ throw e;
41
+ }
42
+ }
43
+ bulkQuery(conn, query) {
44
+ return bulk_1.bulkQuery(conn, query);
45
+ }
46
+ bulkLoad(conn, sobject, operation, rows, options) {
47
+ return bulk_1.bulkLoad(conn, sobject, operation, rows, options);
48
+ }
49
+ }
50
+ exports.default = DeleteCommand;
51
+ DeleteCommand.description = 'bulk delete records by SOQL select query';
52
+ DeleteCommand.examples = [
53
+ '$ sfdx kit:data:bulk:delete -q \'SELECT Id FROM Opportunity WHERE CloseDate < LAST_N_YEARS:5\''
54
+ ];
55
+ DeleteCommand.requiresUsername = true;
56
+ DeleteCommand.requiresProject = false;
57
+ DeleteCommand.flagsConfig = {
58
+ query: command_1.flags.string({ char: 'q', required: true, description: 'SOQL query to delete' }),
59
+ hard: command_1.flags.boolean({ default: false, description: 'perform a hard delete' }),
60
+ concurrencymode: command_1.flags.string({ default: 'Parallel', description: 'the concurrency mode (Parallel or Serial) for the job' }),
61
+ batchsize: command_1.flags.integer({ char: 's', min: 1, max: 10000, default: 10000, description: 'the batch size of the job' }),
62
+ wait: command_1.flags.integer({ char: 'w', min: 0, description: 'the number of minutes to wait for the command to complete before displaying the results' })
63
+ };
64
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/bulk/delete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const _default: new (...args: any[]) => import("@salesforce/command").SfdxCommand;
2
+ export default _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bulk_1 = require("../../../../bulk");
4
+ exports.default = bulk_1.createBulkCommand('insert');
5
+ //# sourceMappingURL=insert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/bulk/insert.ts"],"names":[],"mappings":";;AAAA,2CAAqD;AAErD,kBAAe,wBAAiB,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { flags, SfdxCommand } from '@salesforce/command';
2
+ import { JsonMap } from '@salesforce/ts-types';
3
+ export default class QueryCommand extends SfdxCommand {
4
+ static description: string;
5
+ static examples: string[];
6
+ protected static requiresUsername: boolean;
7
+ protected static requiresProject: boolean;
8
+ protected static flagsConfig: {
9
+ query: flags.Discriminated<flags.String>;
10
+ csvfile: flags.Discriminated<flags.String>;
11
+ };
12
+ run(): Promise<JsonMap[]>;
13
+ private writeCsv;
14
+ private bulkQuery;
15
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const format_1 = require("@fast-csv/format");
4
+ const command_1 = require("@salesforce/command");
5
+ const fs = require("fs");
6
+ const bulk_1 = require("../../../../bulk");
7
+ class QueryCommand extends command_1.SfdxCommand {
8
+ async run() {
9
+ const conn = this.org.getConnection();
10
+ const file = this.flags.csvfile;
11
+ this.ux.startSpinner('Bulk query');
12
+ try {
13
+ const rows = await this.bulkQuery(conn, this.flags.query);
14
+ if (!rows.length) {
15
+ this.ux.stopSpinner('no records');
16
+ return rows;
17
+ }
18
+ this.ux.stopSpinner(`${rows.length} records`);
19
+ if (file) {
20
+ this.writeCsv(rows, fs.createWriteStream(file));
21
+ }
22
+ else if (!this.flags.json) {
23
+ this.writeCsv(rows, process.stdout);
24
+ }
25
+ return rows;
26
+ }
27
+ catch (e) {
28
+ this.ux.stopSpinner('error');
29
+ throw e;
30
+ }
31
+ }
32
+ writeCsv(rows, stream) {
33
+ format_1.write(rows, { headers: true, writeBOM: true }).pipe(stream);
34
+ }
35
+ bulkQuery(conn, query) {
36
+ return bulk_1.bulkQuery(conn, query);
37
+ }
38
+ }
39
+ exports.default = QueryCommand;
40
+ QueryCommand.description = 'bulk query records';
41
+ QueryCommand.examples = [
42
+ '$ sfdx kit:data:bulk:query -q \'SELECT Id, Name FROM Account\' -f ./path/to/Account.csv'
43
+ ];
44
+ QueryCommand.requiresUsername = true;
45
+ QueryCommand.requiresProject = false;
46
+ QueryCommand.flagsConfig = {
47
+ query: command_1.flags.string({ char: 'q', required: true, description: 'SOQL query to export' }),
48
+ csvfile: command_1.flags.string({ char: 'f', description: 'output csv file (default: standard output)' })
49
+ };
50
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/bulk/query.ts"],"names":[],"mappings":";;AAAA,6CAAyC;AACzC,iDAAyD;AAEzD,yBAAyB;AACzB,2CAA6C;AAE7C,MAAqB,YAAa,SAAQ,qBAAW;IAe5C,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAEhC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QACnC,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC;aACb;YAED,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC;YAE9C,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;aACjD;iBAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;aACrC;YAED,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM,CAAC,CAAC;SACT;IACH,CAAC;IAEO,QAAQ,CAAC,IAAI,EAAE,MAAM;QAC3B,cAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAEO,SAAS,CAAC,IAAI,EAAE,KAAK;QAC3B,OAAO,gBAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;;AAhDH,+BAiDC;AAhDe,wBAAW,GAAG,oBAAoB,CAAC;AAEnC,qBAAQ,GAAG;IACvB,yFAAyF;CAC1F,CAAC;AAEe,6BAAgB,GAAG,IAAI,CAAC;AACxB,4BAAe,GAAG,KAAK,CAAC;AAExB,wBAAW,GAAG;IAC7B,KAAK,EAAE,eAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACvF,OAAO,EAAE,eAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;CAChG,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: new (...args: any[]) => import("@salesforce/command").SfdxCommand;
2
+ export default _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bulk_1 = require("../../../../bulk");
4
+ exports.default = bulk_1.createBulkCommand('update');
5
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/bulk/update.ts"],"names":[],"mappings":";;AAAA,2CAAqD;AAErD,kBAAe,wBAAiB,CAAC,QAAQ,CAAC,CAAC"}
@@ -1,48 +1,2 @@
1
- /// <reference types="node" />
2
- import { flags, SfdxCommand } from '@salesforce/command';
3
- import { JsonMap } from '@salesforce/ts-types';
4
- import { Readable } from 'stream';
5
- export default class UpsertCommand extends SfdxCommand {
6
- static description: string;
7
- static examples: string[];
8
- protected static requiresUsername: boolean;
9
- protected static requiresProject: boolean;
10
- protected static flagsConfig: {
11
- object: flags.Discriminated<flags.String>;
12
- externalid: flags.Discriminated<flags.String>;
13
- csvfile: flags.Discriminated<flags.String>;
14
- encoding: flags.Discriminated<flags.String>;
15
- delimiter: flags.Discriminated<flags.String>;
16
- quote: flags.Discriminated<flags.String>;
17
- skiplines: flags.Discriminated<flags.Number>;
18
- trim: flags.Discriminated<flags.Boolean<boolean>>;
19
- mapping: flags.Discriminated<flags.String>;
20
- converter: flags.Discriminated<flags.String>;
21
- setnull: flags.Discriminated<flags.Boolean<boolean>>;
22
- save: flags.Discriminated<flags.Boolean<boolean>>;
23
- saveonly: flags.Discriminated<flags.Boolean<boolean>>;
24
- concurrencymode: flags.Discriminated<flags.String>;
25
- assignmentruleid: flags.Discriminated<flags.String>;
26
- batchsize: flags.Discriminated<flags.Number>;
27
- wait: flags.Discriminated<flags.Number>;
28
- };
29
- run(): Promise<JsonMap[]>;
30
- parseCsv(input: Readable, options?: {
31
- encoding?: string;
32
- delimiter?: string;
33
- quote?: string;
34
- skiplines?: number;
35
- trim?: boolean;
36
- setnull?: boolean;
37
- mapping?: JsonMap;
38
- convert?: (row: JsonMap) => JsonMap | null | undefined;
39
- fieldTypes?: {
40
- [field: string]: string;
41
- };
42
- }): Promise<JsonMap[]>;
43
- private executeBatches;
44
- private saveCsv;
45
- private loadScript;
46
- private getFieldTypes;
47
- private createJob;
48
- }
1
+ declare const _default: new (...args: any[]) => import("@salesforce/command").SfdxCommand;
2
+ export default _default;