@simplysf/simply-data 1.1.8 → 1.1.9-dev.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.
- package/README.md +47 -2
- package/lib/commands/simply/data/files/download.d.ts +13 -0
- package/lib/commands/simply/data/files/download.js +100 -0
- package/lib/commands/simply/data/files/download.js.map +1 -0
- package/lib/common/contentVersionTypes.d.ts +11 -1
- package/lib/common/contentVersionUtils.d.ts +2 -1
- package/lib/common/contentVersionUtils.js +10 -0
- package/lib/common/contentVersionUtils.js.map +1 -1
- package/messages/simply.data.files.download.md +33 -0
- package/npm-shrinkwrap.json +17 -16
- package/oclif.lock +1 -1
- package/oclif.manifest.json +145 -47
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -57,6 +57,7 @@ sf plugins
|
|
|
57
57
|
|
|
58
58
|
<!-- commands -->
|
|
59
59
|
* [`sf simply data file upload`](#sf-simply-data-file-upload)
|
|
60
|
+
* [`sf simply data files download`](#sf-simply-data-files-download)
|
|
60
61
|
* [`sf simply data files upload`](#sf-simply-data-files-upload)
|
|
61
62
|
|
|
62
63
|
## `sf simply data file upload`
|
|
@@ -90,7 +91,51 @@ EXAMPLES
|
|
|
90
91
|
$ sf simply data file upload --file-path fileToUpload.txt --first-publish-location-id 0019000000DmehK --target-org myTargetOrg
|
|
91
92
|
```
|
|
92
93
|
|
|
93
|
-
_See code: [src/commands/simply/data/file/upload.ts](https://github.com/SimplySF/simply-data/blob/1.1.
|
|
94
|
+
_See code: [src/commands/simply/data/file/upload.ts](https://github.com/SimplySF/simply-data/blob/1.1.9-dev.1/src/commands/simply/data/file/upload.ts)_
|
|
95
|
+
|
|
96
|
+
## `sf simply data files download`
|
|
97
|
+
|
|
98
|
+
Download files from a Salesforce org.
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
USAGE
|
|
102
|
+
$ sf simply data files download -o <value> --where <value> [--json] [--api-version <value>] [--max-parallel-jobs
|
|
103
|
+
<value>]
|
|
104
|
+
|
|
105
|
+
FLAGS
|
|
106
|
+
-o, --target-org=<value> (required) Username or alias of the target org. Not required if the `target-org`
|
|
107
|
+
configuration variable is already set.
|
|
108
|
+
--api-version=<value> Override the api version used for api requests made by this command
|
|
109
|
+
--max-parallel-jobs=<value> [default: 1] Maximum number of parallel jobs.
|
|
110
|
+
--where=<value> (required) WHERE clause for ContentVersion query.
|
|
111
|
+
|
|
112
|
+
GLOBAL FLAGS
|
|
113
|
+
--json Format output as json.
|
|
114
|
+
|
|
115
|
+
DESCRIPTION
|
|
116
|
+
Download files from a Salesforce org.
|
|
117
|
+
|
|
118
|
+
Downloads files specified by a where clause to a ContentVersion query from a Salesforce org. By default, the plugin
|
|
119
|
+
uses the REST API for the download as to allow for the streaming of large files without issue. This means that each
|
|
120
|
+
file will use one REST API request.
|
|
121
|
+
|
|
122
|
+
EXAMPLES
|
|
123
|
+
$ sf simply data files download --where 'IsLatest=true' --target-org myTargetOrg
|
|
124
|
+
|
|
125
|
+
$ sf simply data files download --where 'IsLatest=true' --max-parallel-jobs 5 --target-org myTargetOrg
|
|
126
|
+
|
|
127
|
+
FLAG DESCRIPTIONS
|
|
128
|
+
--max-parallel-jobs=<value> Maximum number of parallel jobs.
|
|
129
|
+
|
|
130
|
+
By default the plugin will only process a single file download at a time. You can increase this value to allow for
|
|
131
|
+
quasi concurrent downloads. Please note that setting this value too high can cause performance issues.
|
|
132
|
+
|
|
133
|
+
--where=<value> WHERE clause for ContentVersion query.
|
|
134
|
+
|
|
135
|
+
Provide a WHERE clause to allow the plugin to specify which ContentVersion records should be downloaded.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
_See code: [src/commands/simply/data/files/download.ts](https://github.com/SimplySF/simply-data/blob/1.1.9-dev.1/src/commands/simply/data/files/download.ts)_
|
|
94
139
|
|
|
95
140
|
## `sf simply data files upload`
|
|
96
141
|
|
|
@@ -134,5 +179,5 @@ FLAG DESCRIPTIONS
|
|
|
134
179
|
quasi concurrent uploads. Please note that setting this value too high can cause performance issues.
|
|
135
180
|
```
|
|
136
181
|
|
|
137
|
-
_See code: [src/commands/simply/data/files/upload.ts](https://github.com/SimplySF/simply-data/blob/1.1.
|
|
182
|
+
_See code: [src/commands/simply/data/files/upload.ts](https://github.com/SimplySF/simply-data/blob/1.1.9-dev.1/src/commands/simply/data/files/upload.ts)_
|
|
138
183
|
<!-- commandsstop -->
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
export default class DataFilesDownload extends SfCommand<void> {
|
|
3
|
+
static readonly summary: string;
|
|
4
|
+
static readonly description: string;
|
|
5
|
+
static readonly examples: string[];
|
|
6
|
+
static readonly flags: {
|
|
7
|
+
'api-version': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
8
|
+
'max-parallel-jobs': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<number, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
9
|
+
'target-org': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
10
|
+
where: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
};
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2024, Clay Chipps; Copyright (c) 2024, Salesforce.com, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
* Licensed under the BSD 3-Clause license.
|
|
5
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
|
+
*/
|
|
7
|
+
import { createObjectCsvWriter } from 'csv-writer';
|
|
8
|
+
import PQueue from 'p-queue';
|
|
9
|
+
import { Messages } from '@salesforce/core';
|
|
10
|
+
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
11
|
+
import { downloadContentVersion } from '../../../../common/contentVersionUtils.js';
|
|
12
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
13
|
+
const messages = Messages.loadMessages('@simplysf/simply-data', 'simply.data.files.download');
|
|
14
|
+
export default class DataFilesDownload extends SfCommand {
|
|
15
|
+
static summary = messages.getMessage('summary');
|
|
16
|
+
static description = messages.getMessage('description');
|
|
17
|
+
static examples = messages.getMessages('examples');
|
|
18
|
+
static flags = {
|
|
19
|
+
'api-version': Flags.orgApiVersion(),
|
|
20
|
+
'max-parallel-jobs': Flags.integer({
|
|
21
|
+
summary: messages.getMessage('flags.max-parallel-jobs.summary'),
|
|
22
|
+
description: messages.getMessage('flags.max-parallel-jobs.description'),
|
|
23
|
+
default: 1,
|
|
24
|
+
}),
|
|
25
|
+
'target-org': Flags.requiredOrg(),
|
|
26
|
+
where: Flags.string({
|
|
27
|
+
summary: messages.getMessage('flags.where.summary'),
|
|
28
|
+
description: messages.getMessage('flags.where.description'),
|
|
29
|
+
required: true,
|
|
30
|
+
}),
|
|
31
|
+
};
|
|
32
|
+
async run() {
|
|
33
|
+
const { flags } = await this.parse(DataFilesDownload);
|
|
34
|
+
// Authorize to the target org
|
|
35
|
+
const targetOrgConnection = flags['target-org']?.getConnection(flags['api-version']);
|
|
36
|
+
if (!targetOrgConnection) {
|
|
37
|
+
throw messages.createError('error.targetOrgConnectionFailed');
|
|
38
|
+
}
|
|
39
|
+
this.spinner.start('Querying for files', '\n', { stdout: true });
|
|
40
|
+
const query = await targetOrgConnection.autoFetchQuery(`SELECT ContentDocumentId, ContentSize, Description, FileExtension, FileType, FirstPublishLocationId, Id, IsLatest, PathOnClient, Title FROM ContentVersion WHERE ${flags.where}`);
|
|
41
|
+
const contentVersionDownloads = query.records;
|
|
42
|
+
this.spinner.start('Downloading files', '\n', { stdout: true });
|
|
43
|
+
const successWriter = createObjectCsvWriter({
|
|
44
|
+
path: 'success.csv',
|
|
45
|
+
header: [
|
|
46
|
+
{ id: 'Id', title: 'Id' },
|
|
47
|
+
{ id: 'ContentDocumentId', title: 'ContentDocumentId' },
|
|
48
|
+
{ id: 'ContentSize', title: 'ContentSize' },
|
|
49
|
+
{ id: 'Description', title: 'Description' },
|
|
50
|
+
{ id: 'FileExtension', title: 'FileExtension' },
|
|
51
|
+
{ id: 'FileType', title: 'FileType' },
|
|
52
|
+
{ id: 'FirstPublishLocationId', title: 'FirstPublishLocationId' },
|
|
53
|
+
{ id: 'IsLatest', title: 'IsLatest' },
|
|
54
|
+
{ id: 'PathOnClient', title: 'PathOnClient' },
|
|
55
|
+
{ id: 'Title', title: 'Title' },
|
|
56
|
+
{ id: 'FilePath', title: 'FilePath' },
|
|
57
|
+
],
|
|
58
|
+
});
|
|
59
|
+
const errorWriter = createObjectCsvWriter({
|
|
60
|
+
path: 'error.csv',
|
|
61
|
+
header: [
|
|
62
|
+
{ id: 'Id', title: 'Id' },
|
|
63
|
+
{ id: 'ContentDocumentId', title: 'ContentDocumentId' },
|
|
64
|
+
{ id: 'ContentSize', title: 'ContentSize' },
|
|
65
|
+
{ id: 'Description', title: 'Description' },
|
|
66
|
+
{ id: 'FileExtension', title: 'FileExtension' },
|
|
67
|
+
{ id: 'FileType', title: 'FileType' },
|
|
68
|
+
{ id: 'FirstPublishLocationId', title: 'FirstPublishLocationId' },
|
|
69
|
+
{ id: 'IsLatest', title: 'IsLatest' },
|
|
70
|
+
{ id: 'PathOnClient', title: 'PathOnClient' },
|
|
71
|
+
{ id: 'Title', title: 'Title' },
|
|
72
|
+
{ id: 'Error', title: 'Error' },
|
|
73
|
+
],
|
|
74
|
+
});
|
|
75
|
+
const downloadQueue = new PQueue({ concurrency: flags['max-parallel-jobs'] });
|
|
76
|
+
let count = 0;
|
|
77
|
+
downloadQueue.on('add', () => {
|
|
78
|
+
this.spinner.status = `Completed: ${count}. Size: ${downloadQueue.size} Pending: ${downloadQueue.pending}\n`;
|
|
79
|
+
});
|
|
80
|
+
downloadQueue.on('completed', () => {
|
|
81
|
+
count++;
|
|
82
|
+
this.spinner.status = `Completed: ${count}. Size: ${downloadQueue.size} Pending: ${downloadQueue.pending}\n`;
|
|
83
|
+
});
|
|
84
|
+
for await (const contentVersionDownload of contentVersionDownloads) {
|
|
85
|
+
void downloadQueue.add(async () => {
|
|
86
|
+
try {
|
|
87
|
+
await downloadContentVersion(targetOrgConnection, contentVersionDownload);
|
|
88
|
+
await successWriter.writeRecords([contentVersionDownload]);
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
contentVersionDownload.Error = error;
|
|
92
|
+
await errorWriter.writeRecords([contentVersionDownload]);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
await downloadQueue.onIdle();
|
|
97
|
+
this.spinner.stop();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../../src/commands/simply/data/files/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
export interface ContentVersion {
|
|
2
|
-
ContentDocumentId
|
|
2
|
+
ContentDocumentId: string;
|
|
3
|
+
ContentSize: string;
|
|
4
|
+
Description: string;
|
|
3
5
|
FileExtension: string;
|
|
6
|
+
FileType: string;
|
|
7
|
+
FirstPublishLocationId: string;
|
|
4
8
|
Id: string;
|
|
9
|
+
IsLatest: string;
|
|
10
|
+
PathOnClient: string;
|
|
5
11
|
Title: string;
|
|
6
12
|
}
|
|
7
13
|
export interface ContentVersionCreateRequest {
|
|
@@ -16,6 +22,10 @@ export interface ContentVersionCreateResult {
|
|
|
16
22
|
name: string;
|
|
17
23
|
message: string;
|
|
18
24
|
}
|
|
25
|
+
export interface ContentVersionDownload extends ContentVersion {
|
|
26
|
+
Error?: string;
|
|
27
|
+
FilePath?: string;
|
|
28
|
+
}
|
|
19
29
|
export type ContentVersionToUpload = {
|
|
20
30
|
ContentDocumentId?: string;
|
|
21
31
|
Error?: string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { Connection } from '@salesforce/core';
|
|
2
|
-
import { ContentVersion } from './contentVersionTypes.js';
|
|
2
|
+
import { ContentVersion, ContentVersionDownload } from './contentVersionTypes.js';
|
|
3
|
+
export declare function downloadContentVersion(targetOrgConnection: Connection, contentVersionDownload: ContentVersionDownload): Promise<void>;
|
|
3
4
|
export declare function uploadContentVersion(targetOrgConnection: Connection, pathOnClient: string, title?: string, firstPublishLocationId?: string): Promise<ContentVersion>;
|
|
@@ -6,8 +6,18 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import fs from 'node:fs';
|
|
8
8
|
import path from 'node:path';
|
|
9
|
+
import stream from 'node:stream';
|
|
9
10
|
import FormData from 'form-data';
|
|
10
11
|
import got from 'got';
|
|
12
|
+
export async function downloadContentVersion(targetOrgConnection, contentVersionDownload) {
|
|
13
|
+
const filePath = `${contentVersionDownload.ContentDocumentId}_${contentVersionDownload.Title.replaceAll(' ', '_')}.${contentVersionDownload.FileExtension}`;
|
|
14
|
+
await stream.promises.pipeline(got.stream(`${targetOrgConnection.baseUrl()}/sobjects/ContentVersion/${contentVersionDownload.Id}/VersionData`, {
|
|
15
|
+
headers: {
|
|
16
|
+
Authorization: `Bearer ${targetOrgConnection.accessToken}`,
|
|
17
|
+
},
|
|
18
|
+
}), fs.createWriteStream(filePath));
|
|
19
|
+
contentVersionDownload.FilePath = filePath;
|
|
20
|
+
}
|
|
11
21
|
export async function uploadContentVersion(targetOrgConnection, pathOnClient, title, firstPublishLocationId) {
|
|
12
22
|
// Check that we have access to the file
|
|
13
23
|
await fs.promises.access(pathOnClient, fs.constants.F_OK);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentVersionUtils.js","sourceRoot":"","sources":["../../src/common/contentVersionUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,GAAG,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"contentVersionUtils.js","sourceRoot":"","sources":["../../src/common/contentVersionUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,GAAG,MAAM,KAAK,CAAC;AAStB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,mBAA+B,EAC/B,sBAA8C;IAE9C,MAAM,QAAQ,GAAG,GAAG,sBAAsB,CAAC,iBAAiB,IAAI,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,IAC/G,sBAAsB,CAAC,aACzB,EAAE,CAAC;IAEH,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,4BAA4B,sBAAsB,CAAC,EAAE,cAAc,EAAE;QAC9G,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,mBAAmB,CAAC,WAAW,EAAE;SAC3D;KACF,CAAC,EACF,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAC/B,CAAC;IAEF,sBAAsB,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,mBAA+B,EAC/B,YAAoB,EACpB,KAAc,EACd,sBAA+B;IAE/B,wCAAwC;IACxC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAE1D,MAAM,2BAA2B,GAAgC;QAC/D,sBAAsB,EAAE,sBAAsB;QAC9C,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;KAC5C,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChH,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAEzG,MAAM,IAAI,GAA+B,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,EAAE;QAClH,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,mBAAmB,CAAC,WAAW,EAAE;YAC1D,cAAc,EAAE,kCAAkC,IAAI,CAAC,WAAW,EAAE,GAAG;SACxE;QACD,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,MAAM;KACrB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,iBAAiB,CAC7D,oFAAoF,IAAI,CAAC,EAAE,GAAG,CAC/F,CAAC;IAEF,OAAO,WAA6B,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# summary
|
|
2
|
+
|
|
3
|
+
Download files from a Salesforce org.
|
|
4
|
+
|
|
5
|
+
# description
|
|
6
|
+
|
|
7
|
+
Downloads files specified by a where clause to a ContentVersion query from a Salesforce org. By default, the plugin uses the REST API for the download as to allow for the streaming of large files without issue. This means that each file will use one REST API request.
|
|
8
|
+
|
|
9
|
+
# flags.max-parallel-jobs.summary
|
|
10
|
+
|
|
11
|
+
Maximum number of parallel jobs.
|
|
12
|
+
|
|
13
|
+
# flags.max-parallel-jobs.description
|
|
14
|
+
|
|
15
|
+
By default the plugin will only process a single file download at a time. You can increase this value to allow for quasi concurrent downloads. Please note that setting this value too high can cause performance issues.
|
|
16
|
+
|
|
17
|
+
# flags.where.summary
|
|
18
|
+
|
|
19
|
+
WHERE clause for ContentVersion query.
|
|
20
|
+
|
|
21
|
+
# flags.where.description
|
|
22
|
+
|
|
23
|
+
Provide a WHERE clause to allow the plugin to specify which ContentVersion records should be downloaded.
|
|
24
|
+
|
|
25
|
+
# examples
|
|
26
|
+
|
|
27
|
+
- <%= config.bin %> <%= command.id %> --where 'IsLatest=true' --target-org myTargetOrg
|
|
28
|
+
|
|
29
|
+
- <%= config.bin %> <%= command.id %> --where 'IsLatest=true' --max-parallel-jobs 5 --target-org myTargetOrg
|
|
30
|
+
|
|
31
|
+
# error.targetOrgConnectionFailed
|
|
32
|
+
|
|
33
|
+
Unable to establish connection to the org.
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysf/simply-data",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.9-dev.1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@simplysf/simply-data",
|
|
9
|
-
"version": "1.1.
|
|
9
|
+
"version": "1.1.9-dev.1",
|
|
10
10
|
"license": "BSD-3-Clause",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@oclif/core": "^3.25.0",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"csv-writer": "^1.6.0",
|
|
18
18
|
"form-data": "^4.0.0",
|
|
19
19
|
"got": "13.0.0",
|
|
20
|
+
"jsforce": "2.0.0-beta.29",
|
|
20
21
|
"p-queue": "^8.0.1"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
@@ -7664,13 +7665,12 @@
|
|
|
7664
7665
|
}
|
|
7665
7666
|
},
|
|
7666
7667
|
"node_modules/commander": {
|
|
7667
|
-
"version": "
|
|
7668
|
-
"resolved": "https://registry.npmjs.org/commander/-/commander-
|
|
7669
|
-
"integrity": "sha512-
|
|
7670
|
-
"dev": true,
|
|
7668
|
+
"version": "4.1.1",
|
|
7669
|
+
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
|
|
7670
|
+
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
|
|
7671
7671
|
"license": "MIT",
|
|
7672
7672
|
"engines": {
|
|
7673
|
-
"node": ">=
|
|
7673
|
+
"node": ">= 6"
|
|
7674
7674
|
}
|
|
7675
7675
|
},
|
|
7676
7676
|
"node_modules/comment-parser": {
|
|
@@ -11304,15 +11304,6 @@
|
|
|
11304
11304
|
"integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==",
|
|
11305
11305
|
"license": "MIT"
|
|
11306
11306
|
},
|
|
11307
|
-
"node_modules/jsforce/node_modules/commander": {
|
|
11308
|
-
"version": "4.1.1",
|
|
11309
|
-
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
|
|
11310
|
-
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
|
|
11311
|
-
"license": "MIT",
|
|
11312
|
-
"engines": {
|
|
11313
|
-
"node": ">= 6"
|
|
11314
|
-
}
|
|
11315
|
-
},
|
|
11316
11307
|
"node_modules/jsforce/node_modules/csv-parse": {
|
|
11317
11308
|
"version": "4.16.3",
|
|
11318
11309
|
"resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz",
|
|
@@ -17904,6 +17895,16 @@
|
|
|
17904
17895
|
"ieee754": "^1.2.1"
|
|
17905
17896
|
}
|
|
17906
17897
|
},
|
|
17898
|
+
"node_modules/yeoman-environment/node_modules/commander": {
|
|
17899
|
+
"version": "7.1.0",
|
|
17900
|
+
"resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz",
|
|
17901
|
+
"integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==",
|
|
17902
|
+
"dev": true,
|
|
17903
|
+
"license": "MIT",
|
|
17904
|
+
"engines": {
|
|
17905
|
+
"node": ">= 10"
|
|
17906
|
+
}
|
|
17907
|
+
},
|
|
17907
17908
|
"node_modules/yeoman-environment/node_modules/diff": {
|
|
17908
17909
|
"version": "5.1.0",
|
|
17909
17910
|
"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
|
package/oclif.lock
CHANGED
|
@@ -6496,7 +6496,7 @@ jsesc@~0.5.0:
|
|
|
6496
6496
|
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
|
|
6497
6497
|
integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
|
|
6498
6498
|
|
|
6499
|
-
jsforce@^2.0.0-beta.29:
|
|
6499
|
+
jsforce@2.0.0-beta.29, jsforce@^2.0.0-beta.29:
|
|
6500
6500
|
version "2.0.0-beta.29"
|
|
6501
6501
|
resolved "https://registry.yarnpkg.com/jsforce/-/jsforce-2.0.0-beta.29.tgz#0b59b026eb0b90dfb199a53656af32a4c8acc48f"
|
|
6502
6502
|
integrity sha512-Fq7xjOYOikyozZZDQNTfzsAdhcO0rUXwtavsjM+cCYUFiCMVOJJavgco303zOsJk3v8sdAYnGgHyKckLIhnyAg==
|
package/oclif.manifest.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"commands": {
|
|
3
|
-
"simply:data:
|
|
3
|
+
"simply:data:files:download": {
|
|
4
4
|
"aliases": [],
|
|
5
5
|
"args": {},
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "Downloads files specified by a where clause to a ContentVersion query from a Salesforce org. By default, the plugin uses the REST API for the download as to allow for the streaming of large files without issue. This means that each file will use one REST API request.",
|
|
7
7
|
"examples": [
|
|
8
|
-
"<%= config.bin %> <%= command.id %> --
|
|
9
|
-
"<%= config.bin %> <%= command.id %> --
|
|
8
|
+
"<%= config.bin %> <%= command.id %> --where 'IsLatest=true' --target-org myTargetOrg",
|
|
9
|
+
"<%= config.bin %> <%= command.id %> --where 'IsLatest=true' --max-parallel-jobs 5 --target-org myTargetOrg"
|
|
10
10
|
],
|
|
11
11
|
"flags": {
|
|
12
12
|
"json": {
|
|
@@ -23,17 +23,11 @@
|
|
|
23
23
|
"multiple": false,
|
|
24
24
|
"type": "option"
|
|
25
25
|
},
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"summary": "
|
|
30
|
-
"
|
|
31
|
-
"multiple": false,
|
|
32
|
-
"type": "option"
|
|
33
|
-
},
|
|
34
|
-
"first-publish-location-id": {
|
|
35
|
-
"name": "first-publish-location-id",
|
|
36
|
-
"summary": "Specify a record Id that the file should be linked to.",
|
|
26
|
+
"max-parallel-jobs": {
|
|
27
|
+
"description": "By default the plugin will only process a single file download at a time. You can increase this value to allow for quasi concurrent downloads. Please note that setting this value too high can cause performance issues.",
|
|
28
|
+
"name": "max-parallel-jobs",
|
|
29
|
+
"summary": "Maximum number of parallel jobs.",
|
|
30
|
+
"default": 1,
|
|
37
31
|
"hasDynamicHelp": false,
|
|
38
32
|
"multiple": false,
|
|
39
33
|
"type": "option"
|
|
@@ -48,9 +42,11 @@
|
|
|
48
42
|
"multiple": false,
|
|
49
43
|
"type": "option"
|
|
50
44
|
},
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
45
|
+
"where": {
|
|
46
|
+
"description": "Provide a WHERE clause to allow the plugin to specify which ContentVersion records should be downloaded.",
|
|
47
|
+
"name": "where",
|
|
48
|
+
"required": true,
|
|
49
|
+
"summary": "WHERE clause for ContentVersion query.",
|
|
54
50
|
"hasDynamicHelp": false,
|
|
55
51
|
"multiple": false,
|
|
56
52
|
"type": "option"
|
|
@@ -58,12 +54,12 @@
|
|
|
58
54
|
},
|
|
59
55
|
"hasDynamicHelp": true,
|
|
60
56
|
"hiddenAliases": [],
|
|
61
|
-
"id": "simply:data:
|
|
57
|
+
"id": "simply:data:files:download",
|
|
62
58
|
"pluginAlias": "@simplysf/simply-data",
|
|
63
59
|
"pluginName": "@simplysf/simply-data",
|
|
64
60
|
"pluginType": "core",
|
|
65
61
|
"strict": true,
|
|
66
|
-
"summary": "
|
|
62
|
+
"summary": "Download files from a Salesforce org.",
|
|
67
63
|
"enableJsonFlag": true,
|
|
68
64
|
"isESM": true,
|
|
69
65
|
"relativePath": [
|
|
@@ -71,35 +67,35 @@
|
|
|
71
67
|
"commands",
|
|
72
68
|
"simply",
|
|
73
69
|
"data",
|
|
74
|
-
"
|
|
75
|
-
"
|
|
70
|
+
"files",
|
|
71
|
+
"download.js"
|
|
76
72
|
],
|
|
77
73
|
"aliasPermutations": [],
|
|
78
74
|
"permutations": [
|
|
79
|
-
"simply:data:
|
|
80
|
-
"data:simply:
|
|
81
|
-
"data:
|
|
82
|
-
"data:
|
|
83
|
-
"simply:
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"simply:
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"simply:data:
|
|
92
|
-
"data:simply:
|
|
93
|
-
"data:
|
|
94
|
-
"data:
|
|
95
|
-
"simply:
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"simply:
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
75
|
+
"simply:data:files:download",
|
|
76
|
+
"data:simply:files:download",
|
|
77
|
+
"data:files:simply:download",
|
|
78
|
+
"data:files:download:simply",
|
|
79
|
+
"simply:files:data:download",
|
|
80
|
+
"files:simply:data:download",
|
|
81
|
+
"files:data:simply:download",
|
|
82
|
+
"files:data:download:simply",
|
|
83
|
+
"simply:files:download:data",
|
|
84
|
+
"files:simply:download:data",
|
|
85
|
+
"files:download:simply:data",
|
|
86
|
+
"files:download:data:simply",
|
|
87
|
+
"simply:data:download:files",
|
|
88
|
+
"data:simply:download:files",
|
|
89
|
+
"data:download:simply:files",
|
|
90
|
+
"data:download:files:simply",
|
|
91
|
+
"simply:download:data:files",
|
|
92
|
+
"download:simply:data:files",
|
|
93
|
+
"download:data:simply:files",
|
|
94
|
+
"download:data:files:simply",
|
|
95
|
+
"simply:download:files:data",
|
|
96
|
+
"download:simply:files:data",
|
|
97
|
+
"download:files:simply:data",
|
|
98
|
+
"download:files:data:simply"
|
|
103
99
|
]
|
|
104
100
|
},
|
|
105
101
|
"simply:data:files:upload": {
|
|
@@ -199,7 +195,109 @@
|
|
|
199
195
|
"upload:files:simply:data",
|
|
200
196
|
"upload:files:data:simply"
|
|
201
197
|
]
|
|
198
|
+
},
|
|
199
|
+
"simply:data:file:upload": {
|
|
200
|
+
"aliases": [],
|
|
201
|
+
"args": {},
|
|
202
|
+
"description": "Uploads a file to a Salesforce org.",
|
|
203
|
+
"examples": [
|
|
204
|
+
"<%= config.bin %> <%= command.id %> --file-path fileToUpload.txt --target-org myTargetOrg",
|
|
205
|
+
"<%= config.bin %> <%= command.id %> --file-path fileToUpload.txt --first-publish-location-id 0019000000DmehK --target-org myTargetOrg"
|
|
206
|
+
],
|
|
207
|
+
"flags": {
|
|
208
|
+
"json": {
|
|
209
|
+
"description": "Format output as json.",
|
|
210
|
+
"helpGroup": "GLOBAL",
|
|
211
|
+
"name": "json",
|
|
212
|
+
"allowNo": false,
|
|
213
|
+
"type": "boolean"
|
|
214
|
+
},
|
|
215
|
+
"api-version": {
|
|
216
|
+
"description": "Override the api version used for api requests made by this command",
|
|
217
|
+
"name": "api-version",
|
|
218
|
+
"hasDynamicHelp": false,
|
|
219
|
+
"multiple": false,
|
|
220
|
+
"type": "option"
|
|
221
|
+
},
|
|
222
|
+
"file-path": {
|
|
223
|
+
"name": "file-path",
|
|
224
|
+
"required": true,
|
|
225
|
+
"summary": "Path to the file to upload.",
|
|
226
|
+
"hasDynamicHelp": false,
|
|
227
|
+
"multiple": false,
|
|
228
|
+
"type": "option"
|
|
229
|
+
},
|
|
230
|
+
"first-publish-location-id": {
|
|
231
|
+
"name": "first-publish-location-id",
|
|
232
|
+
"summary": "Specify a record Id that the file should be linked to.",
|
|
233
|
+
"hasDynamicHelp": false,
|
|
234
|
+
"multiple": false,
|
|
235
|
+
"type": "option"
|
|
236
|
+
},
|
|
237
|
+
"target-org": {
|
|
238
|
+
"char": "o",
|
|
239
|
+
"name": "target-org",
|
|
240
|
+
"noCacheDefault": true,
|
|
241
|
+
"required": true,
|
|
242
|
+
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
243
|
+
"hasDynamicHelp": true,
|
|
244
|
+
"multiple": false,
|
|
245
|
+
"type": "option"
|
|
246
|
+
},
|
|
247
|
+
"title": {
|
|
248
|
+
"name": "title",
|
|
249
|
+
"summary": "Specify the title for the file being uploaded.",
|
|
250
|
+
"hasDynamicHelp": false,
|
|
251
|
+
"multiple": false,
|
|
252
|
+
"type": "option"
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"hasDynamicHelp": true,
|
|
256
|
+
"hiddenAliases": [],
|
|
257
|
+
"id": "simply:data:file:upload",
|
|
258
|
+
"pluginAlias": "@simplysf/simply-data",
|
|
259
|
+
"pluginName": "@simplysf/simply-data",
|
|
260
|
+
"pluginType": "core",
|
|
261
|
+
"strict": true,
|
|
262
|
+
"summary": "Upload a file to a Salesforce org.",
|
|
263
|
+
"enableJsonFlag": true,
|
|
264
|
+
"isESM": true,
|
|
265
|
+
"relativePath": [
|
|
266
|
+
"lib",
|
|
267
|
+
"commands",
|
|
268
|
+
"simply",
|
|
269
|
+
"data",
|
|
270
|
+
"file",
|
|
271
|
+
"upload.js"
|
|
272
|
+
],
|
|
273
|
+
"aliasPermutations": [],
|
|
274
|
+
"permutations": [
|
|
275
|
+
"simply:data:file:upload",
|
|
276
|
+
"data:simply:file:upload",
|
|
277
|
+
"data:file:simply:upload",
|
|
278
|
+
"data:file:upload:simply",
|
|
279
|
+
"simply:file:data:upload",
|
|
280
|
+
"file:simply:data:upload",
|
|
281
|
+
"file:data:simply:upload",
|
|
282
|
+
"file:data:upload:simply",
|
|
283
|
+
"simply:file:upload:data",
|
|
284
|
+
"file:simply:upload:data",
|
|
285
|
+
"file:upload:simply:data",
|
|
286
|
+
"file:upload:data:simply",
|
|
287
|
+
"simply:data:upload:file",
|
|
288
|
+
"data:simply:upload:file",
|
|
289
|
+
"data:upload:simply:file",
|
|
290
|
+
"data:upload:file:simply",
|
|
291
|
+
"simply:upload:data:file",
|
|
292
|
+
"upload:simply:data:file",
|
|
293
|
+
"upload:data:simply:file",
|
|
294
|
+
"upload:data:file:simply",
|
|
295
|
+
"simply:upload:file:data",
|
|
296
|
+
"upload:simply:file:data",
|
|
297
|
+
"upload:file:simply:data",
|
|
298
|
+
"upload:file:data:simply"
|
|
299
|
+
]
|
|
202
300
|
}
|
|
203
301
|
},
|
|
204
|
-
"version": "1.1.
|
|
302
|
+
"version": "1.1.9-dev.1"
|
|
205
303
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysf/simply-data",
|
|
3
3
|
"description": "Utilities for working with data",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.9-dev.1",
|
|
5
5
|
"author": "@ClayChipps",
|
|
6
6
|
"bugs": "https://github.com/SimplySF/simply-data/issues",
|
|
7
7
|
"dependencies": {
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"csv-writer": "^1.6.0",
|
|
14
14
|
"form-data": "^4.0.0",
|
|
15
15
|
"got": "13.0.0",
|
|
16
|
+
"jsforce": "2.0.0-beta.29",
|
|
16
17
|
"p-queue": "^8.0.1"
|
|
17
18
|
},
|
|
18
19
|
"devDependencies": {
|