@kitalive/sfdx-plugin 1.0.1 → 1.0.2

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/oclif.manifest.json +2 -1846
  3. package/package.json +1 -1
  4. package/lib/bulk.js +0 -220
  5. package/lib/bulk.js.map +0 -1
  6. package/lib/commands/kit/data/bulk/delete.js +0 -105
  7. package/lib/commands/kit/data/bulk/delete.js.map +0 -1
  8. package/lib/commands/kit/data/bulk/insert.js +0 -7
  9. package/lib/commands/kit/data/bulk/insert.js.map +0 -1
  10. package/lib/commands/kit/data/bulk/query.js +0 -70
  11. package/lib/commands/kit/data/bulk/query.js.map +0 -1
  12. package/lib/commands/kit/data/bulk/update.js +0 -7
  13. package/lib/commands/kit/data/bulk/update.js.map +0 -1
  14. package/lib/commands/kit/data/bulk/upsert.js +0 -22
  15. package/lib/commands/kit/data/bulk/upsert.js.map +0 -1
  16. package/lib/commands/kit/data/csv/convert.js +0 -154
  17. package/lib/commands/kit/data/csv/convert.js.map +0 -1
  18. package/lib/commands/kit/graphql/editor.js +0 -37
  19. package/lib/commands/kit/graphql/editor.js.map +0 -1
  20. package/lib/commands/kit/layout/assignments/deploy.js +0 -35
  21. package/lib/commands/kit/layout/assignments/deploy.js.map +0 -1
  22. package/lib/commands/kit/layout/assignments/retrieve.js +0 -124
  23. package/lib/commands/kit/layout/assignments/retrieve.js.map +0 -1
  24. package/lib/commands/kit/metadata/dependencies.js +0 -182
  25. package/lib/commands/kit/metadata/dependencies.js.map +0 -1
  26. package/lib/commands/kit/object/fields/describe.js +0 -84
  27. package/lib/commands/kit/object/fields/describe.js.map +0 -1
  28. package/lib/commands/kit/object/fields/setup.js +0 -261
  29. package/lib/commands/kit/object/fields/setup.js.map +0 -1
  30. package/lib/commands/kit/script/execute.js +0 -73
  31. package/lib/commands/kit/script/execute.js.map +0 -1
  32. package/lib/index.js +0 -2
  33. package/lib/index.js.map +0 -1
  34. package/lib/metadata.js +0 -82
  35. package/lib/metadata.js.map +0 -1
  36. package/lib/server.js +0 -43
  37. package/lib/server.js.map +0 -1
  38. package/lib/types.js +0 -2
  39. package/lib/types.js.map +0 -1
  40. package/lib/utils.js +0 -87
  41. package/lib/utils.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kitalive/sfdx-plugin",
3
3
  "description": "Kitalive SFDX plugin",
4
- "version": "1.0.1",
4
+ "version": "1.0.2",
5
5
  "author": "Akihiro Ono",
6
6
  "bugs": "https://github.com/Kitalive-Inc/sfdx-plugin/issues",
7
7
  "dependencies": {
package/lib/bulk.js DELETED
@@ -1,220 +0,0 @@
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
package/lib/bulk.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bulk.js","sourceRoot":"","sources":["../src/bulk.ts"],"names":[],"mappings":"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"}
@@ -1,105 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/bulk/delete.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,70 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/bulk/query.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,22 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,154 +0,0 @@
1
- import { Messages } from '@salesforce/core';
2
- import { Flags, SfCommand } from '@salesforce/sf-plugins-core';
3
- import dayjs from 'dayjs';
4
- import * as csv from 'fast-csv';
5
- import fs from 'fs-extra';
6
- import * as utils from '../../../../utils.js';
7
- export function normalizeDateString(str, format) {
8
- if (!str)
9
- return str;
10
- const d = dayjs(str);
11
- return format ? d.format(format) : d.toISOString();
12
- }
13
- const converters = new Map([
14
- ['date', (value) => normalizeDateString(value, 'YYYY-MM-DD')],
15
- ['datetime', normalizeDateString],
16
- ]);
17
- export async function convertCsv(cmd, options) {
18
- const { input, mapping, converter, ...csvOptions } = options;
19
- const mappingJson = mapping
20
- ? (await fs.readJson(mapping))
21
- : undefined;
22
- const script = converter
23
- ? await utils.loadScript(converter)
24
- : {};
25
- if (script.start)
26
- await script.start(cmd);
27
- let rows = await cmd.parseCsv(input ?? process.stdin, {
28
- ...csvOptions,
29
- mapping: mappingJson,
30
- convert: script.convert,
31
- });
32
- if (script.finish) {
33
- const result = await script.finish(rows, cmd);
34
- if (result)
35
- rows = result;
36
- }
37
- return rows;
38
- }
39
- // eslint-disable-next-line sf-plugin/command-example,sf-plugin/command-summary
40
- export class CsvCommand extends SfCommand {
41
- org;
42
- conn;
43
- options;
44
- async parseCsv(input, options) {
45
- const convert = options?.convert;
46
- return utils.parseCsv(typeof input === 'string' ? fs.createReadStream(input) : input, {
47
- ...options,
48
- convert: (row) => {
49
- const result = convert ? convert(row) : row;
50
- if (!result)
51
- return;
52
- if (options?.fieldTypes) {
53
- for (const key of Object.keys(result)) {
54
- const converter = converters.get(options.fieldTypes[key]);
55
- if (converter)
56
- result[key] = converter(result[key]);
57
- }
58
- }
59
- if (options?.setnull) {
60
- for (const key of Object.keys(result)) {
61
- if (key.includes('.'))
62
- continue; // skip reference
63
- if (result[key] == null || result[key] === '')
64
- result[key] = '#N/A';
65
- }
66
- }
67
- return result;
68
- },
69
- });
70
- }
71
- async saveCsv(file, rows) {
72
- return this.writeCsv(fs.createWriteStream(file), rows, true);
73
- }
74
- async writeCsv(output, rows, writeBOM = false) {
75
- return new Promise((resolve, reject) => {
76
- csv
77
- .writeToStream(output, rows, { headers: true, writeBOM })
78
- .on('error', reject)
79
- .on('finish', resolve);
80
- });
81
- }
82
- }
83
- Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
84
- const messages = Messages.loadMessages('@kitalive/sfdx-plugin', 'data.csv.convert');
85
- export default class CsvConvert extends CsvCommand {
86
- static summary = messages.getMessage('summary');
87
- static examples = messages.getMessages('examples');
88
- static flags = {
89
- input: Flags.string({
90
- char: 'i',
91
- summary: messages.getMessage('flags.input.summary'),
92
- }),
93
- output: Flags.string({
94
- char: 'f',
95
- summary: messages.getMessage('flags.output.summary'),
96
- }),
97
- encoding: Flags.string({
98
- char: 'e',
99
- default: 'utf8',
100
- summary: messages.getMessage('flags.encoding.summary'),
101
- }),
102
- delimiter: Flags.string({
103
- char: 'd',
104
- default: ',',
105
- summary: messages.getMessage('flags.delimiter.summary'),
106
- }),
107
- quote: Flags.string({
108
- char: 'q',
109
- default: '"',
110
- summary: messages.getMessage('flags.quote.summary'),
111
- }),
112
- 'skip-lines': Flags.integer({
113
- default: 0,
114
- summary: messages.getMessage('flags.skip-lines.summary'),
115
- aliases: ['skiplines'],
116
- deprecateAliases: true,
117
- }),
118
- trim: Flags.boolean({ summary: messages.getMessage('flags.trim.summary') }),
119
- mapping: Flags.string({
120
- char: 'm',
121
- summary: messages.getMessage('flags.mapping.summary'),
122
- }),
123
- converter: Flags.string({
124
- char: 'c',
125
- summary: messages.getMessage('flags.converter.summary'),
126
- }),
127
- 'target-org': Flags.optionalOrg(),
128
- 'api-version': Flags.orgApiVersion(),
129
- };
130
- async run() {
131
- const { flags } = await this.parse(CsvConvert);
132
- this.org = flags['target-org'];
133
- this.conn = this.org?.getConnection(flags['api-version']);
134
- this.options = {
135
- input: flags.input,
136
- encoding: flags.encoding,
137
- delimiter: flags.delimiter,
138
- quote: flags.quote,
139
- skiplines: flags['skip-lines'],
140
- trim: flags.trim,
141
- mapping: flags.mapping,
142
- converter: flags.converter,
143
- };
144
- const rows = await convertCsv(this, this.options);
145
- if (flags.output) {
146
- await this.saveCsv(flags.output, rows);
147
- }
148
- else if (!this.jsonEnabled()) {
149
- await this.writeCsv(process.stdout, rows);
150
- }
151
- return rows;
152
- }
153
- }
154
- //# sourceMappingURL=convert.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../../../src/commands/kit/data/csv/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AA2B9C,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,MAAe;IAC9D,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,CAAC;IACrB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrE,CAAC,UAAU,EAAE,mBAAmB,CAAC;CAClC,CAAC,CAAC;AAqBH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAsB,EACtB,OAA0B;IAE1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC;IAC7D,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAa;QAC3C,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QACnC,CAAC,CAAE,EAAsB,CAAC;IAE5B,IAAI,MAAM,CAAC,KAAK;QAAE,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE1C,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE;QACpD,GAAG,UAAU;QACb,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC9C,IAAI,MAAM;YAAE,IAAI,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,OAAgB,UACpB,SAAQ,SAAY;IAGb,GAAG,CAAO;IACV,IAAI,CAAc;IAClB,OAAO,CAAqB;IAE5B,KAAK,CAAC,QAAQ,CACnB,KAAqC,EACrC,OAAyB;QAEzB,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;QACjC,OAAO,KAAK,CAAC,QAAQ,CACnB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAC9D;YACE,GAAG,OAAO;YACV,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACf,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC5C,IAAI,CAAC,MAAM;oBAAE,OAAO;gBACpB,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;oBACxB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBACtC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC1D,IAAI,SAAS;4BAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAW,CAAC,CAAC;oBAChE,CAAC;gBACH,CAAC;gBACD,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;oBACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBACtC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;4BAAE,SAAS,CAAC,iBAAiB;wBAClD,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;4BAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CACF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,IAAe;QAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAEM,KAAK,CAAC,QAAQ,CACnB,MAA6B,EAC7B,IAAe,EACf,WAAoB,KAAK;QAEzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,GAAG;iBACA,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;iBACxD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;iBACnB,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,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,UAAW,SAAQ,UAAqB;IACpD,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAEzD,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE5D,MAAM,CAAU,KAAK,GAAG;QAC7B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC;SACpD,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC;SACrD,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC;SACvD,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;SACxD,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC;SACpD,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACxD,OAAO,EAAE,CAAC,WAAW,CAAC;YACtB,gBAAgB,EAAE,IAAI;SACvB,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,uBAAuB,CAAC;SACtD,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;SACxD,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE;QACjC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE;KACrC,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,aAAa,CAAW,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,GAAG;YACb,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC"}