@kitalive/sfdx-plugin 1.0.0 → 1.0.1

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.
Files changed (41) hide show
  1. package/README.md +14 -14
  2. package/lib/bulk.js +220 -0
  3. package/lib/bulk.js.map +1 -0
  4. package/lib/commands/kit/data/bulk/delete.js +105 -0
  5. package/lib/commands/kit/data/bulk/delete.js.map +1 -0
  6. package/lib/commands/kit/data/bulk/insert.js +7 -0
  7. package/lib/commands/kit/data/bulk/insert.js.map +1 -0
  8. package/lib/commands/kit/data/bulk/query.js +70 -0
  9. package/lib/commands/kit/data/bulk/query.js.map +1 -0
  10. package/lib/commands/kit/data/bulk/update.js +7 -0
  11. package/lib/commands/kit/data/bulk/update.js.map +1 -0
  12. package/lib/commands/kit/data/bulk/upsert.js +22 -0
  13. package/lib/commands/kit/data/bulk/upsert.js.map +1 -0
  14. package/lib/commands/kit/data/csv/convert.js +154 -0
  15. package/lib/commands/kit/data/csv/convert.js.map +1 -0
  16. package/lib/commands/kit/graphql/editor.js +37 -0
  17. package/lib/commands/kit/graphql/editor.js.map +1 -0
  18. package/lib/commands/kit/layout/assignments/deploy.js +35 -0
  19. package/lib/commands/kit/layout/assignments/deploy.js.map +1 -0
  20. package/lib/commands/kit/layout/assignments/retrieve.js +124 -0
  21. package/lib/commands/kit/layout/assignments/retrieve.js.map +1 -0
  22. package/lib/commands/kit/metadata/dependencies.js +182 -0
  23. package/lib/commands/kit/metadata/dependencies.js.map +1 -0
  24. package/lib/commands/kit/object/fields/describe.js +84 -0
  25. package/lib/commands/kit/object/fields/describe.js.map +1 -0
  26. package/lib/commands/kit/object/fields/setup.js +261 -0
  27. package/lib/commands/kit/object/fields/setup.js.map +1 -0
  28. package/lib/commands/kit/script/execute.js +73 -0
  29. package/lib/commands/kit/script/execute.js.map +1 -0
  30. package/lib/index.js +2 -0
  31. package/lib/index.js.map +1 -0
  32. package/lib/metadata.js +82 -0
  33. package/lib/metadata.js.map +1 -0
  34. package/lib/server.js +43 -0
  35. package/lib/server.js.map +1 -0
  36. package/lib/types.js +2 -0
  37. package/lib/types.js.map +1 -0
  38. package/lib/utils.js +87 -0
  39. package/lib/utils.js.map +1 -0
  40. package/oclif.manifest.json +1846 -2
  41. package/package.json +1 -2
package/README.md CHANGED
@@ -17,7 +17,7 @@ $ npm install -g @kitalive/sfdx-plugin
17
17
  $ sf COMMAND
18
18
  running command...
19
19
  $ sf (--version)
20
- @kitalive/sfdx-plugin/1.0.0 darwin-arm64 node-v22.17.1
20
+ @kitalive/sfdx-plugin/1.0.1 darwin-arm64 node-v22.17.1
21
21
  $ sf --help [COMMAND]
22
22
  USAGE
23
23
  $ sf COMMAND
@@ -74,7 +74,7 @@ EXAMPLES
74
74
  $ sf kit data bulk delete -q "SELECT Id FROM Opportunity WHERE CloseDate < LAST_N_YEARS:2"
75
75
  ```
76
76
 
77
- _See code: [src/commands/kit/data/bulk/delete.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/data/bulk/delete.ts)_
77
+ _See code: [src/commands/kit/data/bulk/delete.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/data/bulk/delete.ts)_
78
78
 
79
79
  ## `sf kit data bulk insert`
80
80
 
@@ -125,7 +125,7 @@ EXAMPLES
125
125
  $ sf kit data bulk insert -o MyObject__c -f ./path/to/MyObject__c.csv -c ./path/to/convert.js -w 10
126
126
  ```
127
127
 
128
- _See code: [src/commands/kit/data/bulk/insert.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/data/bulk/insert.ts)_
128
+ _See code: [src/commands/kit/data/bulk/insert.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/data/bulk/insert.ts)_
129
129
 
130
130
  ## `sf kit data bulk query`
131
131
 
@@ -156,7 +156,7 @@ EXAMPLES
156
156
  $ sf kit data bulk query -q "SELECT Id, Name FROM Account" -f ./path/to/Account.csv
157
157
  ```
158
158
 
159
- _See code: [src/commands/kit/data/bulk/query.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/data/bulk/query.ts)_
159
+ _See code: [src/commands/kit/data/bulk/query.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/data/bulk/query.ts)_
160
160
 
161
161
  ## `sf kit data bulk update`
162
162
 
@@ -207,7 +207,7 @@ EXAMPLES
207
207
  $ sf kit data bulk update -o MyObject__c -f ./path/to/MyObject__c.csv -c ./path/to/convert.js -w 10
208
208
  ```
209
209
 
210
- _See code: [src/commands/kit/data/bulk/update.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/data/bulk/update.ts)_
210
+ _See code: [src/commands/kit/data/bulk/update.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/data/bulk/update.ts)_
211
211
 
212
212
  ## `sf kit data bulk upsert`
213
213
 
@@ -260,7 +260,7 @@ EXAMPLES
260
260
  -w 10
261
261
  ```
262
262
 
263
- _See code: [src/commands/kit/data/bulk/upsert.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/data/bulk/upsert.ts)_
263
+ _See code: [src/commands/kit/data/bulk/upsert.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/data/bulk/upsert.ts)_
264
264
 
265
265
  ## `sf kit data csv convert`
266
266
 
@@ -298,7 +298,7 @@ EXAMPLES
298
298
  $ sf kit data csv convert -i ./path/to/input.csv -f ./path/to/output.csv -c ./path/to/convert.js
299
299
  ```
300
300
 
301
- _See code: [src/commands/kit/data/csv/convert.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/data/csv/convert.ts)_
301
+ _See code: [src/commands/kit/data/csv/convert.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/data/csv/convert.ts)_
302
302
 
303
303
  ## `sf kit graphql editor`
304
304
 
@@ -332,7 +332,7 @@ EXAMPLES
332
332
  $ sf kit graphql editor --port 8080
333
333
  ```
334
334
 
335
- _See code: [src/commands/kit/graphql/editor.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/graphql/editor.ts)_
335
+ _See code: [src/commands/kit/graphql/editor.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/graphql/editor.ts)_
336
336
 
337
337
  ## `sf kit layout assignments deploy`
338
338
 
@@ -367,7 +367,7 @@ EXAMPLES
367
367
  $ sf kit layout assignments deploy -o me@my.org -f config/layout-assignments.sandbox.json
368
368
  ```
369
369
 
370
- _See code: [src/commands/kit/layout/assignments/deploy.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/layout/assignments/deploy.ts)_
370
+ _See code: [src/commands/kit/layout/assignments/deploy.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/layout/assignments/deploy.ts)_
371
371
 
372
372
  ## `sf kit layout assignments retrieve`
373
373
 
@@ -406,7 +406,7 @@ EXAMPLES
406
406
  $ sf kit layout assignments retrieve -o me@my.org -f config/layout-assignments.sandbox.json
407
407
  ```
408
408
 
409
- _See code: [src/commands/kit/layout/assignments/retrieve.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/layout/assignments/retrieve.ts)_
409
+ _See code: [src/commands/kit/layout/assignments/retrieve.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/layout/assignments/retrieve.ts)_
410
410
 
411
411
  ## `sf kit metadata dependencies`
412
412
 
@@ -433,7 +433,7 @@ EXAMPLES
433
433
  $ sf kit metadata dependencies
434
434
  ```
435
435
 
436
- _See code: [src/commands/kit/metadata/dependencies.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/metadata/dependencies.ts)_
436
+ _See code: [src/commands/kit/metadata/dependencies.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/metadata/dependencies.ts)_
437
437
 
438
438
  ## `sf kit object fields describe`
439
439
 
@@ -465,7 +465,7 @@ EXAMPLES
465
465
  $ sf kit object fields describe -o me@my.org -s CustomObject__c --json
466
466
  ```
467
467
 
468
- _See code: [src/commands/kit/object/fields/describe.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/object/fields/describe.ts)_
468
+ _See code: [src/commands/kit/object/fields/describe.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/object/fields/describe.ts)_
469
469
 
470
470
  ## `sf kit object fields setup`
471
471
 
@@ -499,7 +499,7 @@ EXAMPLES
499
499
  $ sf kit object fields setup -o me@my.org -s CustomObject__c -f path/to/custom_object_fields.csv --delete
500
500
  ```
501
501
 
502
- _See code: [src/commands/kit/object/fields/setup.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/object/fields/setup.ts)_
502
+ _See code: [src/commands/kit/object/fields/setup.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/object/fields/setup.ts)_
503
503
 
504
504
  ## `sf kit script`
505
505
 
@@ -593,5 +593,5 @@ EXAMPLES
593
593
  > await conn.query('SELECT Id, Name FROM Account LIMIT 1')
594
594
  ```
595
595
 
596
- _See code: [src/commands/kit/script/execute.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.0/src/commands/kit/script/execute.ts)_
596
+ _See code: [src/commands/kit/script/execute.ts](https://github.com/Kitalive-Inc/sfdx-plugin/blob/v1.0.1/src/commands/kit/script/execute.ts)_
597
597
  <!-- commandsstop -->
package/lib/bulk.js ADDED
@@ -0,0 +1,220 @@
1
+ /* eslint-disable */
2
+ import path from 'path';
3
+ import { Messages } from '@salesforce/core';
4
+ import { Duration } from '@salesforce/kit';
5
+ import { Flags } from '@salesforce/sf-plugins-core';
6
+ import CsvConvertCommand, { CsvCommand, convertCsv, } from './commands/kit/data/csv/convert.js';
7
+ import * as utils from './utils.js';
8
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
9
+ export const messages = Messages.loadMessages('@kitalive/sfdx-plugin', 'data.bulk');
10
+ export async function bulkQuery(conn, query, options) {
11
+ const wait = options?.wait ?? 5;
12
+ conn.bulk2.pollTimeout = Duration.minutes(wait).milliseconds;
13
+ const result = await conn.bulk2.query(query, options?.all ? { scanAll: true } : {});
14
+ return result.toArray();
15
+ }
16
+ export function bulkLoad(conn, sobject, operation, rows, options) {
17
+ const { batchSize = 10000, wait, ...jobOptions } = options || {};
18
+ const job = conn.bulk.createJob(sobject, operation, jobOptions);
19
+ const fetchResults = async (records) => ({
20
+ job: await job.check(),
21
+ batches: await job.list(),
22
+ records,
23
+ });
24
+ const executeBatch = (batchRows) => new Promise((resolve, reject) => {
25
+ const batch = job.createBatch();
26
+ batch.on('error', (e) => {
27
+ if (e.message.startsWith('Polling time out'))
28
+ job.emit('error', e);
29
+ reject(e);
30
+ });
31
+ batch.on('queue', () => {
32
+ batch
33
+ .check()
34
+ .then((result) => {
35
+ if (result.state === 'Failed') {
36
+ reject(result.stateMessage);
37
+ }
38
+ else if (wait) {
39
+ batch.poll(5000, wait * 60000);
40
+ }
41
+ else {
42
+ fetchResults([]).then(resolve).catch(reject);
43
+ }
44
+ })
45
+ .catch(reject);
46
+ });
47
+ batch.on('response', resolve);
48
+ batch.execute(batchRows);
49
+ });
50
+ // eslint-disable-next-line no-async-promise-executor
51
+ return new Promise(async (resolve, reject) => {
52
+ job.on('error', reject);
53
+ try {
54
+ const results = await Promise.all(utils.chunk(rows, batchSize).map(executeBatch));
55
+ resolve(await fetchResults(results.flat()));
56
+ }
57
+ catch (e) {
58
+ reject(e);
59
+ }
60
+ finally {
61
+ await job.close();
62
+ }
63
+ });
64
+ }
65
+ const csvFlags = CsvConvertCommand.flags;
66
+ export function commonFlags(operation) {
67
+ return {
68
+ sobject: Flags.string({
69
+ char: 's',
70
+ required: true,
71
+ summary: messages.getMessage('flags.sobject.summary', [operation]),
72
+ }),
73
+ // csv settings
74
+ 'csv-file': Flags.string({
75
+ char: 'f',
76
+ required: true,
77
+ summary: messages.getMessage('flags.csv-file.summary', [operation]),
78
+ aliases: ['csvfile'],
79
+ deprecateAliases: true,
80
+ }),
81
+ 'result-file': Flags.string({
82
+ char: 'r',
83
+ summary: messages.getMessage('flags.result-file.summary', [operation]),
84
+ aliases: ['resultfile'],
85
+ deprecateAliases: true,
86
+ }),
87
+ encoding: csvFlags.encoding,
88
+ delimiter: csvFlags.delimiter,
89
+ quote: csvFlags.quote,
90
+ 'skip-lines': csvFlags['skip-lines'],
91
+ trim: csvFlags.trim,
92
+ mapping: csvFlags.mapping,
93
+ converter: csvFlags.converter,
94
+ 'set-null': Flags.boolean({
95
+ summary: messages.getMessage('flags.set-null.summary', [operation]),
96
+ aliases: ['setnull'],
97
+ deprecateAliases: true,
98
+ }),
99
+ 'convert-only': Flags.boolean({
100
+ summary: messages.getMessage('flags.convert-only.summary', [operation]),
101
+ aliases: ['convertonly'],
102
+ deprecateAliases: true,
103
+ }),
104
+ // job settings
105
+ 'concurrency-mode': Flags.string({
106
+ default: 'Parallel',
107
+ summary: messages.getMessage('flags.concurrency-mode.summary'),
108
+ options: ['Serial', 'Parallel'],
109
+ aliases: ['concurrencymode'],
110
+ deprecateAliases: true,
111
+ }),
112
+ 'assignment-rule-id': Flags.string({
113
+ summary: messages.getMessage('flags.assignment-rule-id.summary'),
114
+ aliases: ['assignmentruleid'],
115
+ deprecateAliases: true,
116
+ }),
117
+ 'batch-size': Flags.integer({
118
+ min: 1,
119
+ max: 10000,
120
+ default: 10000,
121
+ summary: messages.getMessage('flags.batch-size.summary'),
122
+ aliases: ['batchsize'],
123
+ deprecateAliases: true,
124
+ }),
125
+ wait: Flags.integer({
126
+ char: 'w',
127
+ min: 0,
128
+ summary: messages.getMessage('flags.wait.summary'),
129
+ }),
130
+ 'target-org': Flags.requiredOrg(),
131
+ 'api-version': Flags.orgApiVersion(),
132
+ };
133
+ }
134
+ export class BulkCommand extends CsvCommand {
135
+ static description = messages.getMessage('description');
136
+ static requiresProject = false;
137
+ async run() {
138
+ const { flags } = await this.parse();
139
+ this.org = flags['target-org'];
140
+ const conn = this.org.getConnection(flags['api-version']);
141
+ this.conn = conn;
142
+ const { sobject, 'csv-file': csvfile } = flags;
143
+ const fieldTypes = await this.getFieldTypes(conn, sobject);
144
+ this.spinner.start('Processing csv');
145
+ try {
146
+ let rows = await convertCsv(this, {
147
+ input: csvfile,
148
+ encoding: flags.encoding,
149
+ delimiter: flags.delimiter,
150
+ quote: flags.quote,
151
+ skiplines: flags['skip-lines'],
152
+ trim: flags.trim,
153
+ setnull: flags['set-null'],
154
+ mapping: flags.mapping,
155
+ converter: flags.converter,
156
+ fieldTypes,
157
+ });
158
+ this.spinner.stop();
159
+ if (flags['convert-only']) {
160
+ const base = path.basename(csvfile, path.extname(csvfile));
161
+ await this.saveCsv(path.join(path.dirname(csvfile), base + '.converted.csv'), rows);
162
+ return;
163
+ }
164
+ this.spinner.start(`Bulk ${this.operation}`);
165
+ const result = await this.bulkLoad(conn, sobject, this.operation, rows, {
166
+ extIdField: flags['external-id'],
167
+ concurrencyMode: flags['concurrency-mode'],
168
+ assignmentRuleId: flags['assignment-rule-id'],
169
+ batchSize: flags['batch-size'],
170
+ wait: flags.wait,
171
+ });
172
+ if (!result)
173
+ return;
174
+ const batchErrors = [];
175
+ if (flags.wait) {
176
+ const { numberRecordsProcessed, numberRecordsFailed } = result.job;
177
+ this.spinner.stop(`${numberRecordsProcessed} processed, ${numberRecordsFailed} failed.`);
178
+ rows = rows.map((data, i) => {
179
+ const { id, errors } = result.records[i] || {};
180
+ const message = errors?.join(', ');
181
+ if (message) {
182
+ batchErrors.push({ line: i + 2, message, data });
183
+ }
184
+ return { ...data, Id: id, Errors: message };
185
+ });
186
+ if (batchErrors.length) {
187
+ result.errors = batchErrors;
188
+ this.styledHeader('Error details');
189
+ this.table({
190
+ data: batchErrors,
191
+ columns: ['line', 'message'],
192
+ });
193
+ }
194
+ }
195
+ else {
196
+ this.spinner.stop();
197
+ this.log(messages.getMessage('asyncJob', [
198
+ this.config.bin,
199
+ conn.getUsername(),
200
+ result.job?.id,
201
+ ]));
202
+ }
203
+ if (flags['result-file'])
204
+ await this.saveCsv(flags['result-file'], rows);
205
+ return result;
206
+ }
207
+ catch (e) {
208
+ this.spinner.stop('error');
209
+ throw e;
210
+ }
211
+ }
212
+ bulkLoad(conn, sobject, op, rows, options) {
213
+ return bulkLoad(conn, sobject, op, rows, options);
214
+ }
215
+ async getFieldTypes(conn, sobject) {
216
+ const objectInfo = await conn.describe(sobject);
217
+ return objectInfo.fields.reduce((info, { name, type }) => Object.assign(info, { [name]: type }), {});
218
+ }
219
+ }
220
+ //# 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,105 @@
1
+ import { Messages } from '@salesforce/core';
2
+ import { Flags, SfCommand } from '@salesforce/sf-plugins-core';
3
+ import { composeQuery, getField, parseQuery, } from '@jetstreamapp/soql-parser-js';
4
+ import { bulkLoad, bulkQuery, } from '../../../../bulk.js';
5
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
6
+ const bulkMessages = Messages.loadMessages('@kitalive/sfdx-plugin', 'data.bulk');
7
+ const messages = Messages.loadMessages('@kitalive/sfdx-plugin', 'data.bulk.delete');
8
+ export default class DeleteCommand extends SfCommand {
9
+ static summary = messages.getMessage('summary');
10
+ static examples = messages.getMessages('examples');
11
+ static flags = {
12
+ query: Flags.string({
13
+ char: 'q',
14
+ required: true,
15
+ summary: messages.getMessage('flags.query.summary'),
16
+ }),
17
+ hard: Flags.boolean({
18
+ default: false,
19
+ summary: messages.getMessage('flags.hard.summary'),
20
+ }),
21
+ 'concurrency-mode': Flags.string({
22
+ default: 'Parallel',
23
+ options: ['Serial', 'Parallel'],
24
+ summary: bulkMessages.getMessage('flags.concurrency-mode.summary'),
25
+ aliases: ['concurrencymode'],
26
+ deprecateAliases: true,
27
+ }),
28
+ 'batch-size': Flags.integer({
29
+ char: 's',
30
+ min: 1,
31
+ max: 10_000,
32
+ default: 10_000,
33
+ summary: bulkMessages.getMessage('flags.batch-size.summary'),
34
+ aliases: ['batchsize'],
35
+ deprecateAliases: true,
36
+ }),
37
+ wait: Flags.integer({
38
+ char: 'w',
39
+ default: 0,
40
+ min: 0,
41
+ summary: bulkMessages.getMessage('flags.wait.summary'),
42
+ }),
43
+ 'target-org': Flags.requiredOrg(),
44
+ 'api-version': Flags.orgApiVersion(),
45
+ };
46
+ async run() {
47
+ const { flags } = await this.parse();
48
+ const org = flags['target-org'];
49
+ const conn = org.getConnection(flags['api-version']);
50
+ const query = parseQuery(flags.query);
51
+ query.fields = [getField('Id')];
52
+ const soql = composeQuery(query);
53
+ this.spinner.start(flags.hard ? 'Bulk hard delete' : 'Bulk delete');
54
+ try {
55
+ const rows = await this.bulkQuery(conn, soql);
56
+ if (!rows.length) {
57
+ this.spinner.stop('no records');
58
+ return { records: [] };
59
+ }
60
+ const operation = flags.hard ? 'hardDelete' : 'delete';
61
+ const result = await this.bulkLoad(conn, query.sObject, operation, rows, {
62
+ concurrencyMode: flags['concurrency-mode'],
63
+ batchSize: flags['batch-size'],
64
+ wait: flags.wait,
65
+ });
66
+ if (!result)
67
+ return;
68
+ if (flags.wait) {
69
+ const numberRecordsProcessed = Number(result.job?.numberRecordsProcessed);
70
+ const numberRecordsFailed = Number(result.job?.numberRecordsFailed);
71
+ const errors = result.records
72
+ .filter((r) => !r.success)
73
+ .map((r) => ({ id: r.id, errors: r.errors.join(', ') }));
74
+ this.spinner.stop(`${numberRecordsProcessed} processed, ${numberRecordsFailed} failed.`);
75
+ if (errors.length) {
76
+ this.styledHeader('Error details');
77
+ this.table({
78
+ data: errors,
79
+ columns: ['id', 'errors'],
80
+ });
81
+ }
82
+ }
83
+ else {
84
+ this.spinner.stop();
85
+ this.log(bulkMessages.getMessage('asyncJob', [
86
+ this.config.bin,
87
+ org.getUsername(),
88
+ result.job?.id,
89
+ ]));
90
+ }
91
+ return result;
92
+ }
93
+ catch (e) {
94
+ this.spinner.stop('error');
95
+ throw e;
96
+ }
97
+ }
98
+ bulkQuery(conn, query) {
99
+ return bulkQuery(conn, query);
100
+ }
101
+ bulkLoad(conn, sobject, operation, rows, options) {
102
+ return bulkLoad(conn, sobject, operation, rows, options);
103
+ }
104
+ }
105
+ //# 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,7 @@
1
+ import { BulkCommand, messages, commonFlags } from '../../../../bulk.js';
2
+ export default class InsertCommand extends BulkCommand {
3
+ static examples = messages.getMessages('examples', ['Insert']);
4
+ static flags = commonFlags('insert');
5
+ operation = 'insert';
6
+ }
7
+ //# sourceMappingURL=insert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/bulk/insert.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEzE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IAC7C,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/D,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAElC,SAAS,GAAoB,QAAQ,CAAC"}
@@ -0,0 +1,70 @@
1
+ import fs from 'node:fs';
2
+ import { Messages } from '@salesforce/core';
3
+ import { write } from '@fast-csv/format';
4
+ import { Flags, SfCommand } from '@salesforce/sf-plugins-core';
5
+ import { bulkQuery } from '../../../../bulk.js';
6
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
7
+ const messages = Messages.loadMessages('@kitalive/sfdx-plugin', 'data.bulk.query');
8
+ export default class QueryCommand extends SfCommand {
9
+ static summary = messages.getMessage('summary');
10
+ static examples = messages.getMessages('examples');
11
+ static flags = {
12
+ query: Flags.string({
13
+ char: 'q',
14
+ required: true,
15
+ summary: messages.getMessage('flags.query.summary'),
16
+ }),
17
+ 'csv-file': Flags.string({
18
+ char: 'f',
19
+ summary: messages.getMessage('flags.csv-file.summary'),
20
+ aliases: ['csvfile'],
21
+ deprecateAliases: true,
22
+ }),
23
+ all: Flags.boolean({
24
+ summary: messages.getMessage('flags.all.summary'),
25
+ }),
26
+ wait: Flags.integer({
27
+ char: 'w',
28
+ summary: messages.getMessage('flags.wait.summary'),
29
+ default: 5,
30
+ }),
31
+ 'target-org': Flags.requiredOrg(),
32
+ 'api-version': Flags.orgApiVersion(),
33
+ };
34
+ async run() {
35
+ const { flags } = await this.parse();
36
+ const org = flags['target-org'];
37
+ const conn = org.getConnection(flags['api-version']);
38
+ const file = flags['csv-file'];
39
+ this.spinner.start('Bulk query');
40
+ try {
41
+ const rows = await this.bulkQuery(conn, flags.query, {
42
+ all: flags.all,
43
+ wait: flags.wait,
44
+ });
45
+ if (!rows.length) {
46
+ this.spinner.stop('no records');
47
+ return rows;
48
+ }
49
+ this.spinner.stop(`${rows.length} records`);
50
+ if (file) {
51
+ this.writeCsv(rows, fs.createWriteStream(file));
52
+ }
53
+ else if (!this.jsonEnabled()) {
54
+ this.writeCsv(rows, process.stdout);
55
+ }
56
+ return rows;
57
+ }
58
+ catch (e) {
59
+ this.spinner.stop('error');
60
+ throw e;
61
+ }
62
+ }
63
+ writeCsv(rows, stream) {
64
+ write(rows, { headers: true, writeBOM: true }).pipe(stream);
65
+ }
66
+ bulkQuery(conn, query, options) {
67
+ return bulkQuery(conn, query, options);
68
+ }
69
+ }
70
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/bulk/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { BulkCommand, messages, commonFlags } from '../../../../bulk.js';
2
+ export default class UpdateCommand extends BulkCommand {
3
+ static examples = messages.getMessages('examples', ['Update']);
4
+ static flags = commonFlags('update');
5
+ operation = 'update';
6
+ }
7
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/bulk/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEzE,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IAC7C,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/D,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAElC,SAAS,GAAoB,QAAQ,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Messages } from '@salesforce/core';
2
+ import { Flags } from '@salesforce/sf-plugins-core';
3
+ import { BulkCommand, commonFlags } from '../../../../bulk.js';
4
+ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
5
+ const messages = Messages.loadMessages('@kitalive/sfdx-plugin', 'data.bulk.upsert');
6
+ export default class UpsertCommand extends BulkCommand {
7
+ static examples = messages.getMessages('examples');
8
+ static flags = {
9
+ ...BulkCommand.flags,
10
+ ...commonFlags('upsert'),
11
+ 'external-id': Flags.string({
12
+ char: 'i',
13
+ required: true,
14
+ default: 'Id',
15
+ summary: messages.getMessage('flags.external-id.summary'),
16
+ aliases: ['externalid'],
17
+ deprecateAliases: true,
18
+ }),
19
+ };
20
+ operation = 'upsert';
21
+ }
22
+ //# sourceMappingURL=upsert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/bulk/upsert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE/D,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CACpC,uBAAuB,EACvB,kBAAkB,CACnB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IAC7C,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAEnD,MAAM,CAAC,KAAK,GAAG;QACpB,GAAG,WAAW,CAAC,KAAK;QACpB,GAAG,WAAW,CAAC,QAAQ,CAAC;QACxB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC;YACzD,OAAO,EAAE,CAAC,YAAY,CAAC;YACvB,gBAAgB,EAAE,IAAI;SACvB,CAAC;KACH,CAAC;IAEQ,SAAS,GAAoB,QAAQ,CAAC"}