sf-raven 1.2.3 → 1.3.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 +143 -12
- package/lib/commands/raven/apex/log.d.ts +18 -0
- package/lib/commands/raven/apex/log.js +238 -0
- package/lib/commands/raven/apex/log.js.map +1 -0
- package/lib/commands/raven/deploy/cancel.js +3 -2
- package/lib/commands/raven/deploy/cancel.js.map +1 -1
- package/lib/commands/raven/pull/remote/type/add.d.ts +15 -0
- package/lib/commands/raven/pull/remote/type/add.js +72 -0
- package/lib/commands/raven/pull/remote/type/add.js.map +1 -0
- package/lib/commands/raven/pull/remote/type/list.d.ts +10 -0
- package/lib/commands/raven/pull/remote/type/list.js +41 -0
- package/lib/commands/raven/pull/remote/type/list.js.map +1 -0
- package/lib/commands/raven/pull/remote/type/remove.d.ts +11 -0
- package/lib/commands/raven/pull/remote/type/remove.js +48 -0
- package/lib/commands/raven/pull/remote/type/remove.js.map +1 -0
- package/lib/commands/raven/pull/remote.d.ts +1 -0
- package/lib/commands/raven/pull/remote.js +42 -3
- package/lib/commands/raven/pull/remote.js.map +1 -1
- package/lib/shared/pull.d.ts +6 -1
- package/lib/shared/pull.js +109 -92
- package/lib/shared/pull.js.map +1 -1
- package/messages/raven.apex.log.md +91 -0
- package/messages/raven.pull.remote.md +15 -3
- package/messages/raven.pull.remote.type.add.md +41 -0
- package/messages/raven.pull.remote.type.list.md +21 -0
- package/messages/raven.pull.remote.type.remove.md +25 -0
- package/oclif.lock +1125 -512
- package/oclif.manifest.json +277 -48
- package/package.json +53 -7
package/README.md
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
## Overview
|
|
13
13
|
|
|
14
|
+
* [AI Disclaimer](#-ai-disclaimer)
|
|
14
15
|
* [Features](#features)
|
|
15
16
|
* [Install](#install)
|
|
16
17
|
* [Command Reference](#command-reference)
|
|
@@ -18,50 +19,69 @@
|
|
|
18
19
|
* [sf raven object display recordtypes](#sf-raven-object-display-recordtypes)
|
|
19
20
|
* [sf raven pull](#sf-raven-pull)
|
|
20
21
|
* [sf raven pull remote](#sf-raven-pull-remote)
|
|
22
|
+
* [sf raven pull remote type add](#sf-raven-pull-remote-type-add)
|
|
23
|
+
* [sf raven pull remote type list](#sf-raven-pull-remote-type-list)
|
|
24
|
+
* [sf raven pull remote type remove](#sf-raven-pull-remote-type-remove)
|
|
21
25
|
* [sf raven deploy cancel](#sf-raven-deploy-cancel)
|
|
22
26
|
* [sf raven query ids](#sf-raven-query-ids)
|
|
23
27
|
* [sf raven audit display](#sf-raven-audit-display)
|
|
24
28
|
* [sf raven event subscribe](#sf-raven-event-subscribe)
|
|
29
|
+
* [sf raven apex log](#sf-raven-apex-log)
|
|
25
30
|
|
|
26
|
-
|
|
31
|
+
## ✨ AI Disclaimer
|
|
32
|
+
|
|
33
|
+
I started this plugin in 2020 (under it's predecessor [sfdx-raven](https://github.com/tomcarman/sfdx-raven)). It was a passion project to learn a bit of typescript development, and create solutions for problems that annoyed me as a day-to-day Salesforce Engineer. I've very slowly added commands over time, but its hard to find time to devote to tooling projects.
|
|
34
|
+
|
|
35
|
+
Now in 2026 I can use AI to generate new commands / functionality in minutes rather than hours. For me this is the perfect type of project for using AI heavily - it's a collection of tools to make my life a bit easier - aka it's not mission critical code. All that to say, since May 2026, this project is heavily using AI generated code. I barely read it. If that makes you uncomfortable, don't use it.
|
|
27
36
|
|
|
28
37
|
## Features
|
|
29
38
|
|
|
30
39
|
Full details, usage, examples etc are further down, or can be accessed via `--help` on the commands.
|
|
31
40
|
|
|
32
|
-
|
|
41
|
+
**sf raven object display**
|
|
33
42
|
|
|
34
43
|
- [sf raven object display fields](#sf-raven-object-display-fields)
|
|
35
44
|
- Show field information for a given sObject.
|
|
36
45
|
- [sf raven object display recordtypes](#sf-raven-object-display-recordtypes)
|
|
37
46
|
- Show RecordType information for a given sObject.
|
|
38
47
|
|
|
39
|
-
|
|
48
|
+
**sf raven audit display**
|
|
40
49
|
|
|
41
50
|
- [sf raven audit display](#sf-raven-audit-display)
|
|
42
51
|
- Show recent entries in the Setup Audit Trail.
|
|
43
52
|
|
|
44
|
-
|
|
53
|
+
**sf raven event**
|
|
45
54
|
|
|
46
55
|
- [sf raven event subscribe](#sf-raven-event-subscribe)
|
|
47
56
|
- Subscribe to Platform Events, streamed to your terminal.
|
|
48
57
|
|
|
49
|
-
|
|
58
|
+
**sf raven deploy**
|
|
50
59
|
|
|
51
60
|
- [sf raven deploy cancel](#sf-raven-deploy-cancel)
|
|
52
61
|
- Query an org for pending or in progress Salesforce deployments, and cancel them.
|
|
53
62
|
|
|
54
|
-
|
|
63
|
+
**sf raven query**
|
|
55
64
|
|
|
56
65
|
- [sf raven query ids](#sf-raven-query-ids)
|
|
57
66
|
- Run a SOQL query against a large list of Salesforce IDs.
|
|
58
67
|
|
|
59
|
-
|
|
68
|
+
**sf raven apex**
|
|
69
|
+
|
|
70
|
+
- [sf raven apex log](#sf-raven-apex-log)
|
|
71
|
+
- Tail Apex debug logs in real time, streamed to your terminal.
|
|
72
|
+
|
|
73
|
+
**sf raven pull**
|
|
60
74
|
|
|
61
75
|
- [sf raven pull](#sf-raven-pull)
|
|
62
76
|
- Update Salesforce metadata into the local project via a fuzzy finder.
|
|
63
77
|
- [sf raven pull remote](#sf-raven-pull-remote)
|
|
64
|
-
- Retrieve Salesforce metadata that exists in the org but not locally,
|
|
78
|
+
- Retrieve Salesforce metadata that exists in the org but not locally, by selecting a configured metadata type and then one or more remote components.
|
|
79
|
+
- [sf raven pull remote type add](#sf-raven-pull-remote-type-add)
|
|
80
|
+
- Add metadata types to the remote pull configuration.
|
|
81
|
+
- [sf raven pull remote type list](#sf-raven-pull-remote-type-list)
|
|
82
|
+
- List metadata types supported by remote pull.
|
|
83
|
+
- [sf raven pull remote type remove](#sf-raven-pull-remote-type-remove)
|
|
84
|
+
- Remove metadata types from the remote pull configuration.
|
|
65
85
|
|
|
66
86
|
<!-- #### sfdx:raven:utils
|
|
67
87
|
* [sfdx raven:utils:deploy:branch2org](#sfdx-ravenutilsdeploybranch2org)
|
|
@@ -95,14 +115,13 @@ The plugin can be updated to the latest version using
|
|
|
95
115
|
1. Install the [SDFX CLI](https://developer.salesforce.com/docs/atlas.en-us.sfdx_setup.meta/sfdx_setup/sfdx_setup_install_cli.htm)
|
|
96
116
|
2. Clone the repository: `git clone git@github.com:tomcarman/sf-raven.git`
|
|
97
117
|
3. Install npm modules: `npm install`
|
|
98
|
-
4. Link the plugin: `
|
|
118
|
+
4. Link the plugin: `sf plugins link .`
|
|
99
119
|
|
|
100
120
|
### Compatibility
|
|
101
121
|
|
|
102
122
|
- **macOS**
|
|
103
123
|
- Plugin has been built on macOS and will always run on macOS
|
|
104
124
|
|
|
105
|
-
|
|
106
125
|
## Command Reference
|
|
107
126
|
|
|
108
127
|
### sf raven object display fields
|
|
@@ -216,7 +235,7 @@ EXAMPLES
|
|
|
216
235
|
|
|
217
236
|
### sf raven pull remote
|
|
218
237
|
|
|
219
|
-
|
|
238
|
+
Pull Salesforce metadata that exists in the org but not locally.
|
|
220
239
|
|
|
221
240
|
```
|
|
222
241
|
USAGE
|
|
@@ -229,7 +248,7 @@ GLOBAL FLAGS
|
|
|
229
248
|
--json Format output as json.
|
|
230
249
|
|
|
231
250
|
DESCRIPTION
|
|
232
|
-
|
|
251
|
+
Select a configured metadata type, then list components of that type that exist in the target org but are not present in the local project. Org-only components are prefixed with a cloud marker in fzf. Press Tab to select multiple components, then Enter to retrieve them.
|
|
233
252
|
|
|
234
253
|
EXAMPLES
|
|
235
254
|
$ sf raven pull remote
|
|
@@ -237,6 +256,65 @@ EXAMPLES
|
|
|
237
256
|
$ sf raven pull remote --target-org dev
|
|
238
257
|
```
|
|
239
258
|
|
|
259
|
+
### sf raven pull remote type add
|
|
260
|
+
|
|
261
|
+
Add metadata types supported by remote pull.
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
USAGE
|
|
265
|
+
$ sf raven pull remote type add [--json] [-o <value>]
|
|
266
|
+
|
|
267
|
+
FLAGS
|
|
268
|
+
-o, --target-org=<value> Login username or alias for the target org. Uses the default org when omitted.
|
|
269
|
+
|
|
270
|
+
GLOBAL FLAGS
|
|
271
|
+
--json Format output as json.
|
|
272
|
+
|
|
273
|
+
DESCRIPTION
|
|
274
|
+
List metadata types available in the target org and select one or more to add to this project's `sf raven pull remote` configuration. Press Tab to select multiple types in fzf, then Enter to save them.
|
|
275
|
+
|
|
276
|
+
EXAMPLES
|
|
277
|
+
$ sf raven pull remote type add
|
|
278
|
+
|
|
279
|
+
$ sf raven pull remote type add --target-org dev
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### sf raven pull remote type list
|
|
283
|
+
|
|
284
|
+
List metadata types supported by remote pull.
|
|
285
|
+
|
|
286
|
+
```
|
|
287
|
+
USAGE
|
|
288
|
+
$ sf raven pull remote type list [--json]
|
|
289
|
+
|
|
290
|
+
GLOBAL FLAGS
|
|
291
|
+
--json Format output as json.
|
|
292
|
+
|
|
293
|
+
DESCRIPTION
|
|
294
|
+
Display the metadata types that `sf raven pull remote` can inspect. If no project configuration has been saved yet, the list is derived from metadata types already present in the local project.
|
|
295
|
+
|
|
296
|
+
EXAMPLES
|
|
297
|
+
$ sf raven pull remote type list
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### sf raven pull remote type remove
|
|
301
|
+
|
|
302
|
+
Remove metadata types supported by remote pull.
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
USAGE
|
|
306
|
+
$ sf raven pull remote type remove [--json]
|
|
307
|
+
|
|
308
|
+
GLOBAL FLAGS
|
|
309
|
+
--json Format output as json.
|
|
310
|
+
|
|
311
|
+
DESCRIPTION
|
|
312
|
+
Select one or more metadata types to remove from this project's `sf raven pull remote` configuration. Press Tab to select multiple types in fzf, then Enter to save the updated list.
|
|
313
|
+
|
|
314
|
+
EXAMPLES
|
|
315
|
+
$ sf raven pull remote type remove
|
|
316
|
+
```
|
|
317
|
+
|
|
240
318
|
### sf raven deploy cancel
|
|
241
319
|
|
|
242
320
|
Cancel a pending or in-progress Salesforce deploy.
|
|
@@ -381,6 +459,59 @@ OUTPUT
|
|
|
381
459
|
}
|
|
382
460
|
```
|
|
383
461
|
|
|
462
|
+
### sf raven apex log
|
|
463
|
+
|
|
464
|
+
Tail Apex debug logs in real time.
|
|
465
|
+
|
|
466
|
+
```
|
|
467
|
+
USAGE
|
|
468
|
+
$ sf raven apex log [--json] [-o <value>] [-u <value>] [-f <value>] [--raw] [--no-trace] [-t <value>]
|
|
469
|
+
|
|
470
|
+
FLAGS
|
|
471
|
+
-f, --filter=<value> Only show USER_DEBUG lines containing this string. Errors and exceptions are always shown.
|
|
472
|
+
-o, --target-org=<value> Login username or alias for the target org. Uses the default org when omitted.
|
|
473
|
+
-t, --timeout=<value> [default: 3] Minutes to listen before exiting (1-30).
|
|
474
|
+
-u, --user=<value> Username to tail logs for. Defaults to the current authenticated user.
|
|
475
|
+
--no-trace Skip trace flag check. Use when managing trace flags externally.
|
|
476
|
+
--raw Print the full log body instead of filtering to USER_DEBUG and exception lines.
|
|
477
|
+
|
|
478
|
+
GLOBAL FLAGS
|
|
479
|
+
--json Format output as json.
|
|
480
|
+
|
|
481
|
+
DESCRIPTION
|
|
482
|
+
Stream Apex debug logs as they are written. Logs are filtered to show USER_DEBUG statements and exceptions by
|
|
483
|
+
default. Use --raw to see the full log body.
|
|
484
|
+
|
|
485
|
+
If no active trace flag exists for the target user, you will be prompted to create one. Without an active trace
|
|
486
|
+
flag, no logs will be captured.
|
|
487
|
+
|
|
488
|
+
EXAMPLES
|
|
489
|
+
$ sf raven apex log
|
|
490
|
+
|
|
491
|
+
$ sf raven apex log --target-org dev
|
|
492
|
+
|
|
493
|
+
$ sf raven apex log --target-org dev --user admin@myorg.com
|
|
494
|
+
|
|
495
|
+
$ sf raven apex log --target-org dev --filter MyDebugPrefix
|
|
496
|
+
|
|
497
|
+
$ sf raven apex log --target-org dev --raw
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
OUTPUT
|
|
501
|
+
|
|
502
|
+
```
|
|
503
|
+
Trace flag active until 09:32:17.
|
|
504
|
+
Tailing logs for tom.carman@myorg.com. Press Ctrl+C to stop.
|
|
505
|
+
|
|
506
|
+
── executeAnonymous 09:31:58 245ms ──
|
|
507
|
+
[1] DEBUG Hello world
|
|
508
|
+
[3] DEBUG account = Account:{Name=Acme, ...}
|
|
509
|
+
|
|
510
|
+
── UserTrigger 09:32:04 18ms ──
|
|
511
|
+
[12] DEBUG entering trigger
|
|
512
|
+
⚠ [47] System.NullPointerException: Attempt to de-reference a null object
|
|
513
|
+
```
|
|
514
|
+
|
|
384
515
|
<!-- ### sfdx raven:utils:deploy:branch2org
|
|
385
516
|
|
|
386
517
|
Deploys a git branch to an org. Assumes you have git installed the neccessary access to the repo you are trying to clone (eg. you can run `git clone ...`), and that the branch is in a source-format sfdx project structure.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
export type RavenApexLogResult = {
|
|
3
|
+
logsReceived: number;
|
|
4
|
+
};
|
|
5
|
+
export default class RavenApexLog extends SfCommand<RavenApexLogResult> {
|
|
6
|
+
static readonly summary: string;
|
|
7
|
+
static readonly description: string;
|
|
8
|
+
static readonly examples: string[];
|
|
9
|
+
static readonly flags: {
|
|
10
|
+
'target-org': import("@oclif/core/interfaces").OptionFlag<import("@salesforce/core").Org, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
user: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
filter: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
raw: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
'no-trace': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
+
};
|
|
17
|
+
run(): Promise<RavenApexLogResult>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { Messages, StreamingClient } from '@salesforce/core';
|
|
11
|
+
import { Duration } from '@salesforce/kit';
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import dayjs from 'dayjs';
|
|
14
|
+
import { Flags, SfCommand, Ux } from '@salesforce/sf-plugins-core';
|
|
15
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
16
|
+
const messages = Messages.loadMessages('sf-raven', 'raven.apex.log');
|
|
17
|
+
class RavenApexLog extends SfCommand {
|
|
18
|
+
run() {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
var _a;
|
|
21
|
+
const { flags } = yield this.parse(RavenApexLog);
|
|
22
|
+
const ux = new Ux({ jsonEnabled: this.jsonEnabled() });
|
|
23
|
+
const org = flags['target-org'];
|
|
24
|
+
if (org == null) {
|
|
25
|
+
throw messages.createError('error.noTargetOrg');
|
|
26
|
+
}
|
|
27
|
+
const connection = org.getConnection();
|
|
28
|
+
const username = (_a = flags.user) !== null && _a !== void 0 ? _a : org.getUsername();
|
|
29
|
+
if (username == null) {
|
|
30
|
+
throw messages.createError('error.noUsername');
|
|
31
|
+
}
|
|
32
|
+
const userId = yield resolveUserId(connection, username);
|
|
33
|
+
if (!flags['no-trace']) {
|
|
34
|
+
yield ensureTraceFlag(connection, userId, ux, this);
|
|
35
|
+
}
|
|
36
|
+
let logsReceived = 0;
|
|
37
|
+
const seenLogIds = new Set();
|
|
38
|
+
const streamProcessor = (message) => {
|
|
39
|
+
var _a;
|
|
40
|
+
const notification = message;
|
|
41
|
+
const id = (_a = notification.sobject) === null || _a === void 0 ? void 0 : _a.Id;
|
|
42
|
+
if (id != null && !seenLogIds.has(id)) {
|
|
43
|
+
seenLogIds.add(id);
|
|
44
|
+
setTimeout(() => seenLogIds.delete(id), 30000);
|
|
45
|
+
void handleLogNotification(notification, connection, flags.filter, flags.raw, ux).then(() => {
|
|
46
|
+
logsReceived++;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return { completed: false };
|
|
50
|
+
};
|
|
51
|
+
const options = new StreamingClient.DefaultOptions(org, '/systemTopic/Logging', streamProcessor);
|
|
52
|
+
options.setSubscribeTimeout(Duration.minutes(flags.timeout));
|
|
53
|
+
const client = yield StreamingClient.create(options);
|
|
54
|
+
process.removeAllListeners('SIGINT');
|
|
55
|
+
process.once('SIGINT', () => {
|
|
56
|
+
ux.log(messages.getMessage('info.exiting'));
|
|
57
|
+
process.exit(130);
|
|
58
|
+
});
|
|
59
|
+
ux.spinner.start(messages.getMessage('info.connecting'));
|
|
60
|
+
yield client.handshake();
|
|
61
|
+
client.replay(-1);
|
|
62
|
+
ux.spinner.stop();
|
|
63
|
+
ux.log(messages.getMessage('info.streaming', [username]));
|
|
64
|
+
try {
|
|
65
|
+
yield client.subscribe(() => __awaiter(this, void 0, void 0, function* () { return Promise.resolve(); }));
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
if (isSubscribeTimeoutError(error)) {
|
|
69
|
+
ux.log(messages.getMessage('info.timeout'));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return { logsReceived };
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
RavenApexLog.summary = messages.getMessage('summary');
|
|
80
|
+
RavenApexLog.description = messages.getMessage('description');
|
|
81
|
+
RavenApexLog.examples = messages.getMessages('examples');
|
|
82
|
+
RavenApexLog.flags = {
|
|
83
|
+
'target-org': Flags.optionalOrg({
|
|
84
|
+
summary: messages.getMessage('flags.target-org.summary'),
|
|
85
|
+
char: 'o',
|
|
86
|
+
}),
|
|
87
|
+
user: Flags.string({
|
|
88
|
+
summary: messages.getMessage('flags.user.summary'),
|
|
89
|
+
char: 'u',
|
|
90
|
+
}),
|
|
91
|
+
filter: Flags.string({
|
|
92
|
+
summary: messages.getMessage('flags.filter.summary'),
|
|
93
|
+
char: 'f',
|
|
94
|
+
}),
|
|
95
|
+
raw: Flags.boolean({
|
|
96
|
+
summary: messages.getMessage('flags.raw.summary'),
|
|
97
|
+
default: false,
|
|
98
|
+
}),
|
|
99
|
+
'no-trace': Flags.boolean({
|
|
100
|
+
summary: messages.getMessage('flags.no-trace.summary'),
|
|
101
|
+
default: false,
|
|
102
|
+
}),
|
|
103
|
+
timeout: Flags.integer({
|
|
104
|
+
summary: messages.getMessage('flags.timeout.summary'),
|
|
105
|
+
char: 't',
|
|
106
|
+
min: 1,
|
|
107
|
+
max: 30,
|
|
108
|
+
default: 3,
|
|
109
|
+
}),
|
|
110
|
+
};
|
|
111
|
+
export default RavenApexLog;
|
|
112
|
+
const resolveUserId = (connection, username) => __awaiter(void 0, void 0, void 0, function* () {
|
|
113
|
+
const result = yield connection.query(`SELECT Id FROM User WHERE Username = '${username}' LIMIT 1`);
|
|
114
|
+
if (result.records.length === 0) {
|
|
115
|
+
throw new Error(`User not found: ${username}`);
|
|
116
|
+
}
|
|
117
|
+
return result.records[0].Id;
|
|
118
|
+
});
|
|
119
|
+
const ensureTraceFlag = (connection, userId, ux, command) => __awaiter(void 0, void 0, void 0, function* () {
|
|
120
|
+
const now = new Date().toISOString();
|
|
121
|
+
const existing = yield connection.tooling.query(`SELECT Id, ExpirationDate FROM TraceFlag WHERE TracedEntityId = '${userId}' AND LogType = 'USER_DEBUG' AND ExpirationDate > ${now} LIMIT 1`);
|
|
122
|
+
if (existing.records.length > 0) {
|
|
123
|
+
const expiry = dayjs(existing.records[0].ExpirationDate).format('HH:mm:ss');
|
|
124
|
+
ux.log(messages.getMessage('info.traceActive', [expiry]));
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const confirmed = yield command.confirm({
|
|
128
|
+
message: messages.getMessage('prompt.createTrace'),
|
|
129
|
+
defaultAnswer: true,
|
|
130
|
+
});
|
|
131
|
+
if (!confirmed) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const debugLevelId = yield ensureDebugLevel(connection);
|
|
135
|
+
const expiry = new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString();
|
|
136
|
+
yield connection.tooling.create('TraceFlag', {
|
|
137
|
+
DebugLevelId: debugLevelId,
|
|
138
|
+
LogType: 'USER_DEBUG',
|
|
139
|
+
TracedEntityId: userId,
|
|
140
|
+
StartDate: now,
|
|
141
|
+
ExpirationDate: expiry,
|
|
142
|
+
});
|
|
143
|
+
ux.log(messages.getMessage('info.traceCreated', [dayjs(expiry).format('HH:mm:ss')]));
|
|
144
|
+
});
|
|
145
|
+
const ensureDebugLevel = (connection) => __awaiter(void 0, void 0, void 0, function* () {
|
|
146
|
+
const existing = yield connection.tooling.query('SELECT Id FROM DebugLevel WHERE DeveloperName = \'sf_raven\' LIMIT 1');
|
|
147
|
+
if (existing.records.length > 0) {
|
|
148
|
+
return existing.records[0].Id;
|
|
149
|
+
}
|
|
150
|
+
const result = yield connection.tooling.create('DebugLevel', {
|
|
151
|
+
DeveloperName: 'sf_raven',
|
|
152
|
+
MasterLabel: 'sf-raven',
|
|
153
|
+
ApexCode: 'DEBUG',
|
|
154
|
+
ApexProfiling: 'INFO',
|
|
155
|
+
Callout: 'INFO',
|
|
156
|
+
Database: 'INFO',
|
|
157
|
+
System: 'DEBUG',
|
|
158
|
+
Validation: 'INFO',
|
|
159
|
+
Visualforce: 'INFO',
|
|
160
|
+
Workflow: 'INFO',
|
|
161
|
+
NBA: 'INFO',
|
|
162
|
+
Wave: 'INFO',
|
|
163
|
+
});
|
|
164
|
+
return result.id;
|
|
165
|
+
});
|
|
166
|
+
const handleLogNotification = (notification, connection, filter, raw, ux) => __awaiter(void 0, void 0, void 0, function* () {
|
|
167
|
+
const { Id, CreatedDate } = notification.sobject;
|
|
168
|
+
const [body, record] = yield Promise.all([fetchLogBody(connection, Id), fetchLogRecord(connection, Id)]);
|
|
169
|
+
const header = formatLogHeader(record === null || record === void 0 ? void 0 : record.Operation, CreatedDate, record === null || record === void 0 ? void 0 : record.DurationMilliseconds, record === null || record === void 0 ? void 0 : record.Status);
|
|
170
|
+
if (raw) {
|
|
171
|
+
ux.log(header);
|
|
172
|
+
ux.log(body);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const lines = parseLogLines(body, filter);
|
|
176
|
+
if (lines.length === 0) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
ux.log(header);
|
|
180
|
+
for (const line of lines) {
|
|
181
|
+
ux.log(line);
|
|
182
|
+
}
|
|
183
|
+
ux.log('');
|
|
184
|
+
});
|
|
185
|
+
const fetchLogBody = (connection, logId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
186
|
+
var _a;
|
|
187
|
+
const url = `${connection.instanceUrl}/services/data/v${connection.getApiVersion()}/tooling/sobjects/ApexLog/${logId}/Body`;
|
|
188
|
+
const response = yield fetch(url, {
|
|
189
|
+
headers: { Authorization: `Bearer ${(_a = connection.accessToken) !== null && _a !== void 0 ? _a : ''}` },
|
|
190
|
+
});
|
|
191
|
+
return response.text();
|
|
192
|
+
});
|
|
193
|
+
const fetchLogRecord = (connection, logId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
194
|
+
const result = yield connection.tooling.query(`SELECT Operation, DurationMilliseconds, Status FROM ApexLog WHERE Id = '${logId}' LIMIT 1`);
|
|
195
|
+
return result.records[0];
|
|
196
|
+
});
|
|
197
|
+
const parseLogLines = (body, filter) => {
|
|
198
|
+
const result = [];
|
|
199
|
+
for (const line of body.split('\n')) {
|
|
200
|
+
if (line.includes('|USER_DEBUG|')) {
|
|
201
|
+
const parts = line.split('|');
|
|
202
|
+
if (parts.length >= 5) {
|
|
203
|
+
const lineNum = parts[2];
|
|
204
|
+
const level = parts[3];
|
|
205
|
+
const message = parts.slice(4).join('|');
|
|
206
|
+
if (filter == null || message.includes(filter)) {
|
|
207
|
+
result.push(` ${chalk.dim(lineNum.padEnd(5))} ${formatLevel(level)} ${message}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else if (line.includes('|EXCEPTION_THROWN|') || line.includes('|FATAL_ERROR|')) {
|
|
212
|
+
const parts = line.split('|');
|
|
213
|
+
result.push(chalk.red(` ⚠ ${parts.slice(2).join('|')}`));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return result;
|
|
217
|
+
};
|
|
218
|
+
const formatLevel = (level) => {
|
|
219
|
+
const padded = level.padEnd(7);
|
|
220
|
+
switch (level) {
|
|
221
|
+
case 'ERROR': return chalk.red.bold(padded);
|
|
222
|
+
case 'WARN': return chalk.yellow(padded);
|
|
223
|
+
case 'INFO': return chalk.cyan(padded);
|
|
224
|
+
case 'FINE':
|
|
225
|
+
case 'FINER':
|
|
226
|
+
case 'FINEST': return chalk.dim(padded);
|
|
227
|
+
default: return chalk.dim(padded); // DEBUG
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
const formatLogHeader = (operation, createdDate, duration, status) => {
|
|
231
|
+
const time = dayjs(createdDate).format('HH:mm:ss');
|
|
232
|
+
const op = operation !== null && operation !== void 0 ? operation : 'Log';
|
|
233
|
+
const durationStr = duration != null ? ` ${duration}ms` : '';
|
|
234
|
+
const failed = status != null && status !== 'Success' ? ' ' + chalk.red.bold(`[${status}]`) : '';
|
|
235
|
+
return `\n${chalk.dim('──')} ${chalk.bold.cyan(op)} ${chalk.dim(`${time}${durationStr}`)}${failed} ${chalk.dim('──')}`;
|
|
236
|
+
};
|
|
237
|
+
const isSubscribeTimeoutError = (error) => error instanceof Error && error.name === 'GenericTimeoutError';
|
|
238
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../../src/commands/raven/apex/log.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,11 @@ import select, { Separator } from '@inquirer/select';
|
|
|
12
12
|
import { Messages } from '@salesforce/core';
|
|
13
13
|
import { Flags, SfCommand, Ux } from '@salesforce/sf-plugins-core';
|
|
14
14
|
import dayjs from 'dayjs';
|
|
15
|
+
import { isPromptForceCloseError } from '../../../shared/pull.js';
|
|
15
16
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
16
17
|
const messages = Messages.loadMessages('sf-raven', 'raven.deploy.cancel');
|
|
17
18
|
const cancelSelection = 'cancel';
|
|
19
|
+
const selectPrompt = select;
|
|
18
20
|
class DeployCancel extends SfCommand {
|
|
19
21
|
run() {
|
|
20
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -112,7 +114,7 @@ const formatDeployRequest = (deployRequest) => {
|
|
|
112
114
|
};
|
|
113
115
|
const selectDeployRequest = (deployRequests) => __awaiter(void 0, void 0, void 0, function* () {
|
|
114
116
|
try {
|
|
115
|
-
return yield
|
|
117
|
+
return yield selectPrompt({
|
|
116
118
|
message: messages.getMessage('prompt.selectDeploy'),
|
|
117
119
|
choices: getDeployChoices(deployRequests),
|
|
118
120
|
pageSize: 10,
|
|
@@ -144,7 +146,6 @@ const getGroupedDeployChoices = (label, deployRequests) => deployRequests.length
|
|
|
144
146
|
value: deployRequest,
|
|
145
147
|
})),
|
|
146
148
|
];
|
|
147
|
-
const isPromptForceCloseError = (error) => error instanceof Error && error.message.includes('User force closed the prompt');
|
|
148
149
|
const formatProgress = (completed, total, errors) => {
|
|
149
150
|
const completedValue = completed !== null && completed !== void 0 ? completed : 0;
|
|
150
151
|
const totalValue = total !== null && total !== void 0 ? total : 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../../../src/commands/raven/deploy/cancel.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../../../src/commands/raven/deploy/cancel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
export type RavenPullRemoteTypeAddResult = {
|
|
3
|
+
addedMetadataTypes: string[];
|
|
4
|
+
metadataTypes: string[];
|
|
5
|
+
targetOrg?: string;
|
|
6
|
+
};
|
|
7
|
+
export default class RavenPullRemoteTypeAdd extends SfCommand<RavenPullRemoteTypeAddResult> {
|
|
8
|
+
static readonly summary: string;
|
|
9
|
+
static readonly description: string;
|
|
10
|
+
static readonly examples: string[];
|
|
11
|
+
static readonly flags: {
|
|
12
|
+
'target-org': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<RavenPullRemoteTypeAddResult>;
|
|
15
|
+
}
|