@jayree/sfdx-plugin-legacy 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE.txt +12 -0
  3. package/README.md +251 -0
  4. package/lib/commands/jayree/automation/changeset/deploy.d.ts +23 -0
  5. package/lib/commands/jayree/automation/changeset/deploy.js +397 -0
  6. package/lib/commands/jayree/automation/changeset/deploy.js.map +1 -0
  7. package/lib/commands/jayree/automation/changeset/list.d.ts +11 -0
  8. package/lib/commands/jayree/automation/changeset/list.js +98 -0
  9. package/lib/commands/jayree/automation/changeset/list.js.map +1 -0
  10. package/lib/commands/jayree/automation/ltngsync/status.d.ts +22 -0
  11. package/lib/commands/jayree/automation/ltngsync/status.js +239 -0
  12. package/lib/commands/jayree/automation/ltngsync/status.js.map +1 -0
  13. package/lib/commands/jayree/packagedescription/create.d.ts +17 -0
  14. package/lib/commands/jayree/packagedescription/create.js +62 -0
  15. package/lib/commands/jayree/packagedescription/create.js.map +1 -0
  16. package/lib/commands/jayree/packagedescription/get.d.ts +16 -0
  17. package/lib/commands/jayree/packagedescription/get.js +57 -0
  18. package/lib/commands/jayree/packagedescription/get.js.map +1 -0
  19. package/lib/commands/jayree/packagedescription/remove.d.ts +16 -0
  20. package/lib/commands/jayree/packagedescription/remove.js +82 -0
  21. package/lib/commands/jayree/packagedescription/remove.js.map +1 -0
  22. package/lib/commands/jayree/packagedescription/set.d.ts +17 -0
  23. package/lib/commands/jayree/packagedescription/set.js +76 -0
  24. package/lib/commands/jayree/packagedescription/set.js.map +1 -0
  25. package/lib/hooks/changelog.d.ts +2 -0
  26. package/lib/hooks/changelog.js +123 -0
  27. package/lib/hooks/changelog.js.map +1 -0
  28. package/lib/index.d.ts +2 -0
  29. package/lib/index.js +10 -0
  30. package/lib/index.js.map +1 -0
  31. package/lib/utils/xml.d.ts +5 -0
  32. package/lib/utils/xml.js +50 -0
  33. package/lib/utils/xml.js.map +1 -0
  34. package/messages/createpackagedescription.json +5 -0
  35. package/messages/deploychangeset.json +8 -0
  36. package/messages/getpackagedescription.json +4 -0
  37. package/messages/listchangeset.json +3 -0
  38. package/messages/ltngsyncstatus.json +6 -0
  39. package/messages/removepackagedescription.json +4 -0
  40. package/messages/setpackagedescription.json +5 -0
  41. package/oclif.manifest.json +1 -0
  42. package/package.json +160 -0
@@ -0,0 +1,397 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /*
7
+ * Copyright (c) 2021, jayree
8
+ * All rights reserved.
9
+ * Licensed under the BSD 3-Clause license.
10
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
11
+ */
12
+ const command_1 = require("@salesforce/command");
13
+ const core_1 = require("@salesforce/core");
14
+ const inquirer_1 = require("inquirer");
15
+ const puppeteer_1 = __importDefault(require("puppeteer"));
16
+ core_1.Messages.importMessagesDirectory(__dirname);
17
+ const messages = core_1.Messages.loadMessages('@jayree/sfdx-plugin-legacy', 'deploychangeset');
18
+ class DeployChangeSet extends command_1.SfdxCommand {
19
+ async run() {
20
+ const conn = this.org.getConnection();
21
+ const browser = await puppeteer_1.default.launch({
22
+ headless: true,
23
+ });
24
+ let job;
25
+ try {
26
+ const page = await browser.newPage();
27
+ await this.login(conn, page);
28
+ await page.goto(conn.instanceUrl + '/changemgmt/listInboundChangeSet.apexp', {
29
+ waitUntil: 'networkidle2',
30
+ });
31
+ const tables = await this.gettables(page);
32
+ let sCS;
33
+ if (!this.flags.nodialog) {
34
+ const questions = [
35
+ {
36
+ type: 'list',
37
+ message: 'Change Sets Awaiting Deployment',
38
+ name: 'selectedChangeSet',
39
+ choices: tables.csad.map((element) => ({
40
+ value: element.ChangeSetName,
41
+ name: element.Description
42
+ ? `${element.ChangeSetName} - ${element.SourceOrganization} - ${element.UploadedBy} - ${element.UploadedDate} - ${element.Description}`
43
+ : `${element.ChangeSetName} - ${element.SourceOrganization} - ${element.UploadedBy} - ${element.UploadedDate}`,
44
+ short: element.ChangeSetName,
45
+ })),
46
+ default: this.flags.changeset,
47
+ },
48
+ {
49
+ type: 'list',
50
+ name: 'selectedMode',
51
+ message: 'Choose Validate or Deploy',
52
+ choices: ['Validate', 'Deploy'],
53
+ default: () => (this.flags.checkonly ? 'Validate' : 'Deploy'),
54
+ },
55
+ {
56
+ type: 'list',
57
+ name: 'testlevel',
58
+ message: 'Choose a Test Option',
59
+ choices: ['Default', 'Run Local Tests', 'Run All Tests In Org', 'Run Specified Tests'],
60
+ default: () => (this.flags.testlevel ? this.flags.testlevel.replace(/([A-Z])/g, ' $1').trim() : 'Default'),
61
+ filter: (val) => {
62
+ return val.replace(/( )/g, '');
63
+ },
64
+ },
65
+ {
66
+ type: 'input',
67
+ name: 'runtests',
68
+ message: 'Only the tests that you specify are run. Provide the names of test classes in a comma-separated list:',
69
+ default: this.flags.runtests,
70
+ when: (answers) => {
71
+ return answers.testlevel === 'RunSpecifiedTests';
72
+ },
73
+ validate: (answer) => {
74
+ if (answer.length < 1) {
75
+ return 'You must specify at least one test.';
76
+ }
77
+ return true;
78
+ },
79
+ },
80
+ ];
81
+ sCS = await (0, inquirer_1.prompt)(questions).then((answers) => {
82
+ return answers;
83
+ });
84
+ }
85
+ else {
86
+ sCS = {
87
+ selectedChangeSet: this.flags.changeset,
88
+ selectedMode: this.flags.checkonly ? 'Validate' : 'Deploy',
89
+ testlevel: this.flags.testlevel,
90
+ };
91
+ if (this.flags.testlevel === 'RunSpecifiedTests') {
92
+ if (!this.flags.runtests) {
93
+ throw Error('INVALID_OPERATION: runTests must not be empty when a testLevel of RunSpecifiedTests is used.');
94
+ }
95
+ else {
96
+ sCS['runtests'] = this.flags.runtests;
97
+ }
98
+ }
99
+ }
100
+ // console.log(sCS);
101
+ const changeset = tables.csad.filter((element) => sCS.selectedChangeSet.includes(element.ChangeSetName))[0];
102
+ // for await (const changeset of tables.csad.filter(element => sCS.selectedChangeSet.includes(element['Change Set Name']))) {
103
+ // console.log(changeset);
104
+ if (!changeset) {
105
+ throw Error(`Change Set '${sCS.selectedChangeSet}' not found!`);
106
+ }
107
+ // open detail page
108
+ await page.goto(conn.instanceUrl + changeset.DetailPage, {
109
+ waitUntil: 'networkidle2',
110
+ });
111
+ await this.clickvalidateordeploy(page, sCS.selectedMode);
112
+ switch (sCS.testlevel) {
113
+ case 'Default':
114
+ await this.selecttest(page, '0');
115
+ break;
116
+ case 'RunSpecifiedTests':
117
+ await this.selecttest(page, '3', sCS.runtests);
118
+ break;
119
+ case 'RunLocalTests': {
120
+ await this.selecttest(page, '1');
121
+ break;
122
+ }
123
+ case 'RunAllTestsInOrg':
124
+ await this.selecttest(page, '2');
125
+ break;
126
+ default:
127
+ await this.selecttest(page, '0');
128
+ }
129
+ await this.clickvalidateordeploy2(page, sCS.selectedMode);
130
+ job = await this.getjob(conn, page, changeset);
131
+ // console.log(job);
132
+ // console.log(`sfdx force:mdapi:deploy:report -i ${jobId} -u ${conn.getUsername()} --json`);
133
+ this.ux.log(`Deploying Change Set '${sCS.selectedChangeSet}'...`);
134
+ this.ux.log('');
135
+ if (changeset.HTMLDescription) {
136
+ this.ux.styledHeader('Description');
137
+ this.ux.log(changeset.HTMLDescription);
138
+ this.ux.log('');
139
+ }
140
+ this.ux.styledHeader('Status');
141
+ this.ux.log('Status: ' + job.status);
142
+ this.ux.log('jobid: ' + job.id);
143
+ // }
144
+ }
145
+ finally {
146
+ await browser.close();
147
+ }
148
+ return {
149
+ done: false,
150
+ id: job.id,
151
+ state: job.status,
152
+ status: job.status,
153
+ timedOut: true,
154
+ };
155
+ }
156
+ async login(conn, page) {
157
+ await page.goto(conn.instanceUrl + '/secur/frontdoor.jsp?sid=' + conn.accessToken, {
158
+ waitUntil: 'networkidle2',
159
+ });
160
+ }
161
+ async selecttest(page, index, runtests = '') {
162
+ await page.evaluate((i) => {
163
+ document
164
+ .getElementById('inboundChangeSetTestOptions:pageForm:ics_test_level_block:testLevel_section:test_level_sub_section:deploymentTestLevel:' +
165
+ i)
166
+ .click();
167
+ }, index);
168
+ if (runtests !== '') {
169
+ await page.waitForSelector('textarea[name="inboundChangeSetTestOptions:pageForm:ics_test_level_block:testLevel_section:test_level_sub_section:j_id7"]');
170
+ await page.focus('textarea[name="inboundChangeSetTestOptions:pageForm:ics_test_level_block:testLevel_section:test_level_sub_section:j_id7"]');
171
+ await page.keyboard.type(runtests);
172
+ }
173
+ }
174
+ async clickvalidateordeploy(page, selectedMode) {
175
+ if (selectedMode === 'Validate') {
176
+ // click on validate
177
+ await page.evaluate(() => {
178
+ document
179
+ .getElementById('inboundChangeSetDetailPage:inboundChangeSetDetailPageBody:inboundChangeSetDetailPageBody:detail_form:ics_detail_block:form_buttons:validate_button')
180
+ .click();
181
+ });
182
+ }
183
+ else {
184
+ // click on deploy
185
+ await page.evaluate(() => {
186
+ document
187
+ .getElementById('inboundChangeSetDetailPage:inboundChangeSetDetailPageBody:inboundChangeSetDetailPageBody:detail_form:ics_detail_block:form_buttons:deploy_button')
188
+ .click();
189
+ });
190
+ }
191
+ await page.waitForNavigation({
192
+ waitUntil: 'networkidle2',
193
+ });
194
+ }
195
+ async clickvalidateordeploy2(page, selectedMode) {
196
+ if (selectedMode === 'Validate') {
197
+ // click on validate
198
+ await page.evaluate(() => {
199
+ document
200
+ .getElementById('inboundChangeSetTestOptions:pageForm:ics_test_level_block:form_buttons:validate_button')
201
+ .click();
202
+ });
203
+ }
204
+ else {
205
+ // click on deploy
206
+ await page.evaluate(() => {
207
+ document
208
+ .getElementById('inboundChangeSetTestOptions:pageForm:ics_test_level_block:form_buttons:deploy_button')
209
+ .click();
210
+ });
211
+ }
212
+ // click on ok
213
+ await page.waitForSelector('#simpleDialog0button0');
214
+ await page.evaluate(() => {
215
+ document.getElementById('simpleDialog0button0').click();
216
+ });
217
+ await page.waitForNavigation({
218
+ waitUntil: 'networkidle2',
219
+ });
220
+ }
221
+ async getjob(conn, page, cs) {
222
+ // open deployment status
223
+ await page.goto(conn.instanceUrl + '/changemgmt/monitorDeployment.apexp', {
224
+ waitUntil: 'networkidle0',
225
+ });
226
+ // try {
227
+ const job = await page.evaluate((csN) => {
228
+ let id;
229
+ let currentname;
230
+ // let pendinglist;
231
+ let pendingid;
232
+ let running = false;
233
+ if (typeof document.getElementById('viewErrors') !== 'undefined' && document.getElementById('viewErrors')) {
234
+ id = document.getElementById('viewErrors').getAttribute('onclick').split('asyncId=')[1].split("'")[0];
235
+ running = true;
236
+ }
237
+ if (typeof document.querySelector('#inProgressSummaryContainer > ul > li:nth-child(1)') !== 'undefined' &&
238
+ document.querySelector('#inProgressSummaryContainer > ul > li:nth-child(1)')) {
239
+ currentname = document
240
+ .querySelector('#inProgressSummaryContainer > ul > li:nth-child(1)')
241
+ .textContent.replace(/(\t|\n)/g, '')
242
+ .split(':')[1]
243
+ .trim();
244
+ running = true;
245
+ }
246
+ // const rows = [];
247
+ if (typeof document.getElementById('MonitorDeploymentsPage:pendingDeploymentsList') !== 'undefined' &&
248
+ document.getElementById('MonitorDeploymentsPage:pendingDeploymentsList')) {
249
+ const table = document.getElementById('MonitorDeploymentsPage:pendingDeploymentsList');
250
+ running = true;
251
+ for (let r = 0, n = table.rows.length; r < n; r++) {
252
+ const div = document.createElement('div');
253
+ div.innerHTML = table.rows[r].cells[0].innerHTML;
254
+ // rows.push({ Action: (div.firstChild as Element).getAttribute('href').split("\'")[1], Name: table.rows[r].cells[1].innerText.replace(/(:\t|\t)/g, '') });
255
+ if (table.rows[r].cells[1].innerText.replace(/(:\t|\t)/g, '') === csN) {
256
+ pendingid = div.firstChild.getAttribute('href').split("'")[1];
257
+ }
258
+ }
259
+ }
260
+ // pendinglist = rows;
261
+ return { id, currentname, pendingid, running };
262
+ }, cs.ChangeSetName);
263
+ this.logger.warn(JSON.stringify(job));
264
+ if (!job.running) {
265
+ // open detail page
266
+ await page.goto(conn.instanceUrl + cs.DetailPage, {
267
+ waitUntil: 'networkidle2',
268
+ });
269
+ const csstatus = await page.evaluate(() => {
270
+ const tableid = 'inboundChangeSetDetailPage:inboundChangeSetDetailPageBody:inboundChangeSetDetailPageBody:detail_form:ics_deploy_history:ics_deploy_history_BlockSection:ics_deploy_history_table';
271
+ // const rows = [];
272
+ if (typeof document.getElementById(tableid) !== 'undefined' && document.getElementById(tableid)) {
273
+ const table = document.getElementById(tableid);
274
+ const div = document.createElement('div');
275
+ div.innerHTML = table.rows[1].cells[0].innerHTML;
276
+ return {
277
+ id: div.firstChild.getAttribute('href').split('asyncId=')[1].split('&')[0],
278
+ status: table.rows[1].cells[1].innerText.replace(/(:\t|\t)/g, '').split(': ')[1],
279
+ };
280
+ }
281
+ });
282
+ return {
283
+ id: csstatus.id,
284
+ name: cs.ChangeSetName,
285
+ status: csstatus.status,
286
+ running: job.running,
287
+ };
288
+ }
289
+ if (cs.ChangeSetName === job.currentname) {
290
+ return {
291
+ id: job.id,
292
+ name: job.currentname,
293
+ status: 'InProgress',
294
+ running: job.running,
295
+ };
296
+ }
297
+ else {
298
+ return {
299
+ id: job.pendingid,
300
+ name: cs.ChangeSetName,
301
+ status: 'Pending',
302
+ running: job.running,
303
+ };
304
+ }
305
+ // } catch {
306
+ // return false;
307
+ // }
308
+ }
309
+ async gettables(page) {
310
+ return await page.evaluate(() => {
311
+ const converttable = (document, tableid) => {
312
+ const rows = [];
313
+ if (typeof document.getElementById(tableid) !== 'undefined' && document.getElementById(tableid)) {
314
+ const table = document.getElementById(tableid);
315
+ for (let r = 1, n = table.rows.length; r < n; r++) {
316
+ const cells = {};
317
+ for (let c = 1, m = table.rows[r].cells.length; c < m; c++) {
318
+ cells[table.rows[0].cells[c].innerText.replace(/(\n|\t| )/g, '')] = table.rows[r].cells[c].innerText.replace(/(:\t|\t)/g, '');
319
+ if (table.rows[0].cells[c].innerText.replace(/(\n|\t)/g, '') === 'Uploaded By') {
320
+ cells[table.rows[0].cells[c].innerText.replace(/(\n|\t| )/g, '')] = table.rows[r].cells[c].innerText.replace(/( @.*)/g, '');
321
+ }
322
+ if (table.rows[0].cells[c].innerText.replace(/(\n|\t)/g, '') === 'Description') {
323
+ cells['HTMLDescription'] = table.rows[r].cells[c].innerHTML;
324
+ }
325
+ if (table.rows[0].cells[c].innerText.replace(/(\n|\t)/g, '') === 'Change Set Name') {
326
+ const div = document.createElement('div');
327
+ div.innerHTML = table.rows[r].cells[c].innerHTML;
328
+ cells['DetailPage'] = div.firstChild.getAttribute('href');
329
+ }
330
+ if (table.rows[0].cells[c].innerText.replace(/(\n|\t)/g, '') === 'Source Organization') {
331
+ const div = document.createElement('div');
332
+ div.innerHTML = table.rows[r].cells[c].innerHTML;
333
+ cells['SourceOrganizationID'] = div.firstChild.getAttribute('href').split('id=')[1];
334
+ }
335
+ }
336
+ rows.push(cells);
337
+ }
338
+ }
339
+ return rows;
340
+ };
341
+ return {
342
+ csad: converttable(document, 'ListInboundChangeSetPage:listInboundChangeSetPageBody:listInboundChangeSetPageBody:ListInboundChangeSetForm:AwaitingDeploymentPageBlock:ListUnDeployedInboundChangeSetBlockSection:UnDeployedInboundChangeSetList'),
343
+ dcs: converttable(document, 'ListInboundChangeSetPage:listInboundChangeSetPageBody:listInboundChangeSetPageBody:ListInboundChangeSetForm:DeployedPageBlock:ListDeployedInboundChangeSetBlockSection:DeployedInboundChangeSetList'),
344
+ };
345
+ });
346
+ }
347
+ }
348
+ exports.default = DeployChangeSet;
349
+ DeployChangeSet.description = messages.getMessage('commandDescription');
350
+ DeployChangeSet.examples = [
351
+ `$ sfdx jayree:automation:changeset:deploy -s ChangeSet -l RunLocalTests --nodialog
352
+ Deploying Change Set 'ChangeSet'...
353
+
354
+ === Status
355
+ Status: Pending
356
+ jobid: 0Xxx100000xx1x1
357
+ `,
358
+ `$ sfdx jayree:automation:changeset:deploy
359
+ ? Change Sets Awaiting Deployment (Use arrow keys)
360
+ ChangeSet3
361
+ ChangeSet2
362
+ ❯ ChangeSet1
363
+ `,
364
+ ];
365
+ DeployChangeSet.flagsConfig = {
366
+ changeset: command_1.flags.string({
367
+ char: 's',
368
+ description: messages.getMessage('changesetFlagDescription'),
369
+ required: false,
370
+ }),
371
+ runtests: command_1.flags.string({
372
+ char: 'r',
373
+ description: messages.getMessage('runtestsFlagDescription'),
374
+ required: false,
375
+ dependsOn: ['testlevel'],
376
+ }),
377
+ testlevel: command_1.flags.string({
378
+ char: 'l',
379
+ description: messages.getMessage('testlevelFlagDescription'),
380
+ required: false,
381
+ options: ['Default', 'RunSpecifiedTests', 'RunLocalTests', 'RunAllTestsInOrg'],
382
+ }),
383
+ checkonly: command_1.flags.boolean({
384
+ char: 'c',
385
+ description: messages.getMessage('checkonlyFlagDescription'),
386
+ required: false,
387
+ }),
388
+ nodialog: command_1.flags.boolean({
389
+ description: messages.getMessage('nodialogFlagDescription'),
390
+ required: false,
391
+ dependsOn: ['changeset'],
392
+ }),
393
+ };
394
+ DeployChangeSet.requiresUsername = true;
395
+ DeployChangeSet.supportsDevhubUsername = false;
396
+ DeployChangeSet.requiresProject = false;
397
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../../../src/commands/jayree/automation/changeset/deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { SfdxCommand } from '@salesforce/command';
2
+ import { AnyJson } from '@salesforce/ts-types';
3
+ export default class ViewChangeSets extends SfdxCommand {
4
+ static description: string;
5
+ protected static requiresUsername: boolean;
6
+ protected static supportsDevhubUsername: boolean;
7
+ protected static requiresProject: boolean;
8
+ run(): Promise<AnyJson>;
9
+ private login;
10
+ private gettables;
11
+ }
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /*
7
+ * Copyright (c) 2021, jayree
8
+ * All rights reserved.
9
+ * Licensed under the BSD 3-Clause license.
10
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
11
+ */
12
+ const command_1 = require("@salesforce/command");
13
+ const core_1 = require("@salesforce/core");
14
+ const puppeteer_1 = __importDefault(require("puppeteer"));
15
+ core_1.Messages.importMessagesDirectory(__dirname);
16
+ const messages = core_1.Messages.loadMessages('@jayree/sfdx-plugin-legacy', 'listchangeset');
17
+ class ViewChangeSets extends command_1.SfdxCommand {
18
+ async run() {
19
+ const conn = this.org.getConnection();
20
+ const browser = await puppeteer_1.default.launch({
21
+ headless: true,
22
+ });
23
+ const page = await browser.newPage();
24
+ await this.login(conn, page);
25
+ await page.goto(conn.instanceUrl + '/changemgmt/listInboundChangeSet.apexp', {
26
+ waitUntil: 'networkidle2',
27
+ });
28
+ const tables = await this.gettables(page);
29
+ // eslint-disable-next-line @typescript-eslint/await-thenable
30
+ await this.ux.styledJSON(tables.csad);
31
+ /* const jsonParsed = {};
32
+ tables.csad.forEach(value => {
33
+ const keyval = value[Object.keys(value)[0]];
34
+ delete value[Object.keys(value)[0]];
35
+ jsonParsed[keyval] = value;
36
+ });
37
+ await this.ux.styledJSON(jsonParsed); */
38
+ await browser.close();
39
+ return tables.csad;
40
+ }
41
+ async login(conn, page) {
42
+ await page.goto(conn.instanceUrl + '/secur/frontdoor.jsp?sid=' + conn.accessToken, {
43
+ waitUntil: 'networkidle2',
44
+ });
45
+ }
46
+ async gettables(page) {
47
+ return await page.evaluate(() => {
48
+ const converttable = (document, tableid) => {
49
+ const rows = [];
50
+ if (typeof document.getElementById(tableid) !== 'undefined' && document.getElementById(tableid)) {
51
+ const table = document.getElementById(tableid);
52
+ for (let r = 1, n = table.rows.length; r < n; r++) {
53
+ const cells = {};
54
+ for (let c = 1, m = table.rows[r].cells.length; c < m; c++) {
55
+ cells[table.rows[0].cells[c].innerText.replace(/(\n|\t| )/g, '')] = table.rows[r].cells[c].innerText.replace(/(:\t|\t)/g, '');
56
+ if (table.rows[0].cells[c].innerText.replace(/(\n|\t)/g, '') === 'Uploaded By') {
57
+ cells[table.rows[0].cells[c].innerText.replace(/(\n|\t| )/g, '')] = table.rows[r].cells[c].innerText.replace(/( @.*)/g, '');
58
+ }
59
+ if (table.rows[0].cells[c].innerText.replace(/(\n|\t)/g, '') === 'Description') {
60
+ cells['HTMLDescription'] = table.rows[r].cells[c].innerHTML;
61
+ }
62
+ if (table.rows[0].cells[c].innerText.replace(/(\n|\t)/g, '') === 'Change Set Name') {
63
+ const div = document.createElement('div');
64
+ div.innerHTML = table.rows[r].cells[c].innerHTML;
65
+ cells['DetailPage'] = div.firstChild.getAttribute('href');
66
+ }
67
+ if (table.rows[0].cells[c].innerText.replace(/(\n|\t)/g, '') === 'Source Organization') {
68
+ const div = document.createElement('div');
69
+ div.innerHTML = table.rows[r].cells[c].innerHTML;
70
+ cells['SourceOrganizationID'] = div.firstChild.getAttribute('href').split('id=')[1];
71
+ }
72
+ }
73
+ rows.push(cells);
74
+ }
75
+ }
76
+ return rows;
77
+ };
78
+ return {
79
+ csad: converttable(document, 'ListInboundChangeSetPage:listInboundChangeSetPageBody:listInboundChangeSetPageBody:ListInboundChangeSetForm:AwaitingDeploymentPageBlock:ListUnDeployedInboundChangeSetBlockSection:UnDeployedInboundChangeSetList'),
80
+ dcs: converttable(document, 'ListInboundChangeSetPage:listInboundChangeSetPageBody:listInboundChangeSetPageBody:ListInboundChangeSetForm:DeployedPageBlock:ListDeployedInboundChangeSetBlockSection:DeployedInboundChangeSetList'),
81
+ };
82
+ });
83
+ }
84
+ }
85
+ exports.default = ViewChangeSets;
86
+ ViewChangeSets.description = messages.getMessage('commandDescription');
87
+ /* public static examples = [
88
+ `$ sfdx jayree:automation:usersyncstatus -o 'Name'
89
+ configSetup: User assigned to active Lightning Sync configuration... Yes
90
+ userContacts/userEvents: Salesforce and Exchange email addresses linked... Linked/Linked
91
+ userContacts/userEvents: Salesforce to Exchange sync status... Initial sync completed/Initial sync completed
92
+ userContacts/userEvents: Exchange to Salesforce sync status... Initial sync completed/Initial sync completed
93
+ `
94
+ ]; */
95
+ ViewChangeSets.requiresUsername = true;
96
+ ViewChangeSets.supportsDevhubUsername = false;
97
+ ViewChangeSets.requiresProject = false;
98
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/jayree/automation/changeset/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { flags, SfdxCommand } from '@salesforce/command';
2
+ import { AnyJson } from '@salesforce/ts-types';
3
+ export default class LtngSyncStatus extends SfdxCommand {
4
+ static description: string;
5
+ static examples: string[];
6
+ protected static flagsConfig: {
7
+ officeuser: flags.Discriminated<flags.String>;
8
+ statusonly: flags.Discriminated<flags.Boolean<boolean>>;
9
+ wait: flags.Discriminated<flags.Number>;
10
+ };
11
+ protected static requiresUsername: boolean;
12
+ protected static supportsDevhubUsername: boolean;
13
+ protected static requiresProject: boolean;
14
+ run(): Promise<AnyJson>;
15
+ private checkUserSetup;
16
+ private checkUserReset;
17
+ private checkContactsEvents;
18
+ private login;
19
+ private resetuser;
20
+ private gettables;
21
+ private checkstatus;
22
+ }