sfdx-browserforce-plugin 5.2.0-next.5 → 6.0.0-next.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/lib/browserforce.js +88 -22
- package/lib/browserforce.js.map +1 -1
- package/lib/plugins/activity-settings/index.js +93 -20
- package/lib/plugins/activity-settings/index.js.map +1 -1
- package/lib/plugins/company-information/index.js +104 -31
- package/lib/plugins/company-information/index.js.map +1 -1
- package/lib/plugins/customer-portal/available-custom-objects/index.js +166 -71
- package/lib/plugins/customer-portal/available-custom-objects/index.js.map +1 -1
- package/lib/plugins/customer-portal/enabled/index.js +73 -10
- package/lib/plugins/customer-portal/enabled/index.js.map +1 -1
- package/lib/plugins/customer-portal/portals/index.js +196 -101
- package/lib/plugins/customer-portal/portals/index.js.map +1 -1
- package/lib/plugins/density-settings/index.js +95 -21
- package/lib/plugins/density-settings/index.js.map +1 -1
- package/lib/plugins/email-deliverability/index.js +94 -21
- package/lib/plugins/email-deliverability/index.js.map +1 -1
- package/lib/plugins/high-velocity-sales-settings/index.js +67 -2
- package/lib/plugins/high-velocity-sales-settings/index.js.map +1 -1
- package/lib/plugins/high-velocity-sales-settings/page.js +0 -1
- package/lib/plugins/high-velocity-sales-settings/page.js.map +1 -1
- package/lib/plugins/history-tracking/index.js +162 -83
- package/lib/plugins/history-tracking/index.js.map +1 -1
- package/lib/plugins/home-page-layouts/index.js +129 -57
- package/lib/plugins/home-page-layouts/index.js.map +1 -1
- package/lib/plugins/lightning-experience-settings/index.js +85 -12
- package/lib/plugins/lightning-experience-settings/index.js.map +1 -1
- package/lib/plugins/linkedin-sales-navigator-settings/index.js +84 -6
- package/lib/plugins/linkedin-sales-navigator-settings/index.js.map +1 -1
- package/lib/plugins/linkedin-sales-navigator-settings/page.js +0 -2
- package/lib/plugins/linkedin-sales-navigator-settings/page.js.map +1 -1
- package/lib/plugins/omni-channel-settings/index.js +88 -13
- package/lib/plugins/omni-channel-settings/index.js.map +1 -1
- package/lib/plugins/opportunity-splits/index.js +103 -18
- package/lib/plugins/opportunity-splits/index.js.map +1 -1
- package/lib/plugins/permission-sets/service-presence-status/index.js +124 -51
- package/lib/plugins/permission-sets/service-presence-status/index.js.map +1 -1
- package/lib/plugins/picklists/field-dependencies/index.js +86 -4
- package/lib/plugins/picklists/field-dependencies/index.js.map +1 -1
- package/lib/plugins/picklists/field-dependencies/pages.js +0 -1
- package/lib/plugins/picklists/field-dependencies/pages.js.map +1 -1
- package/lib/plugins/picklists/index.js +128 -55
- package/lib/plugins/picklists/index.js.map +1 -1
- package/lib/plugins/record-types/index.js +73 -10
- package/lib/plugins/record-types/index.js.map +1 -1
- package/lib/plugins/record-types/pages.js +0 -1
- package/lib/plugins/record-types/pages.js.map +1 -1
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js +102 -28
- package/lib/plugins/relate-contact-to-multiple-accounts/index.js.map +1 -1
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js +107 -35
- package/lib/plugins/reports-and-dashboards/folder-sharing/index.js.map +1 -1
- package/lib/plugins/salesforce-cpq-config/index.js +249 -165
- package/lib/plugins/salesforce-cpq-config/index.js.map +1 -1
- package/lib/plugins/salesforce-to-salesforce/index.js +93 -20
- package/lib/plugins/salesforce-to-salesforce/index.js.map +1 -1
- package/lib/plugins/security/authentication-configuration/index.js +121 -49
- package/lib/plugins/security/authentication-configuration/index.js.map +1 -1
- package/lib/plugins/security/certificate-and-key-management/index.js +142 -57
- package/lib/plugins/security/certificate-and-key-management/index.js.map +1 -1
- package/lib/plugins/service-channels/capacity/index.js +173 -102
- package/lib/plugins/service-channels/capacity/index.js.map +1 -1
- package/lib/plugins/slack/index.js +101 -27
- package/lib/plugins/slack/index.js.map +1 -1
- package/lib/plugins/user-access-policies/index.js +96 -24
- package/lib/plugins/user-access-policies/index.js.map +1 -1
- package/lib/plugins/user-access-policies/page.js +0 -6
- package/lib/plugins/user-access-policies/page.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,55 @@
|
|
|
1
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
2
|
+
if (value !== null && value !== void 0) {
|
|
3
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
4
|
+
var dispose, inner;
|
|
5
|
+
if (async) {
|
|
6
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
7
|
+
dispose = value[Symbol.asyncDispose];
|
|
8
|
+
}
|
|
9
|
+
if (dispose === void 0) {
|
|
10
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
11
|
+
dispose = value[Symbol.dispose];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
15
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
16
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
17
|
+
}
|
|
18
|
+
else if (async) {
|
|
19
|
+
env.stack.push({ async: true });
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
24
|
+
return function (env) {
|
|
25
|
+
function fail(e) {
|
|
26
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
|
+
env.hasError = true;
|
|
28
|
+
}
|
|
29
|
+
var r, s = 0;
|
|
30
|
+
function next() {
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
|
+
try {
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
fail(e);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
45
|
+
if (env.hasError) throw env.error;
|
|
46
|
+
}
|
|
47
|
+
return next();
|
|
48
|
+
};
|
|
49
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
50
|
+
var e = new Error(message);
|
|
51
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
52
|
+
});
|
|
1
53
|
import { BrowserforcePlugin } from '../../plugin.js';
|
|
2
54
|
import { HighVelocitySalesSetupPage } from './page.js';
|
|
3
55
|
const MSG_NOT_AVAILABLE = `HighVelocitySales is not available in this organization.
|
|
@@ -22,8 +74,21 @@ export class HighVelocitySalesSettings extends BrowserforcePlugin {
|
|
|
22
74
|
}
|
|
23
75
|
async apply(config) {
|
|
24
76
|
if (config.setUpAndEnable) {
|
|
25
|
-
const
|
|
26
|
-
|
|
77
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
78
|
+
try {
|
|
79
|
+
const page = __addDisposableResource(env_1, await this.browserforce.openPage(HighVelocitySalesSetupPage.getUrl()), true);
|
|
80
|
+
const hvs = new HighVelocitySalesSetupPage(page);
|
|
81
|
+
await hvs.setUpAndEnable();
|
|
82
|
+
}
|
|
83
|
+
catch (e_1) {
|
|
84
|
+
env_1.error = e_1;
|
|
85
|
+
env_1.hasError = true;
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
const result_1 = __disposeResources(env_1);
|
|
89
|
+
if (result_1)
|
|
90
|
+
await result_1;
|
|
91
|
+
}
|
|
27
92
|
}
|
|
28
93
|
else {
|
|
29
94
|
const conn = this.org.getConnection();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/high-velocity-sales-settings/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,iBAAiB,GAAG;mFACyD,CAAC;AAMpF,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IACxD,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvC,2BAA2B,EAC3B,mBAAmB,CACpB,CAAC;YACF,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC,8BAA8B,CAAC,KAAK,IAAI,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IACE,4EAA4E,CAAC,IAAI,CAC/E,CAAC,CACF,EACD,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/high-velocity-sales-settings/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,iBAAiB,GAAG;mFACyD,CAAC;AAMpF,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IACxD,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvC,2BAA2B,EAC3B,mBAAmB,CACpB,CAAC;YACF,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC,8BAA8B,CAAC,KAAK,IAAI,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IACE,4EAA4E,CAAC,IAAI,CAC/E,CAAC,CACF,EACD,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAc;QAC/B,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;;;gBAC1B,MAAY,IAAI,kCAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,OAAA,CAAC;gBACzF,MAAM,GAAG,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;;;;;;;;;;;SAC5B;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,qCAAqC,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,IAAgB;IAEhB,MAAM,QAAQ,GAAG;QACf,QAAQ,EAAE,mBAAmB;QAC7B,4BAA4B,EAAE,KAAK;QACnC,uBAAuB,EAAE,KAAK;KAC/B,CAAC;IACF,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/plugins/high-velocity-sales-settings/page.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,4BAA4B,GAAG,6BAA6B,CAAC;AACnE,MAAM,aAAa,GAAG,8BAA8B,CAAC;AACrD,MAAM,mBAAmB,GACvB,sDAAsD,CAAC;AAEzD,MAAM,OAAO,0BAA0B;IAC7B,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,MAAM;QAClB,OAAO,sCAAsC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QACtE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9D,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7D,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/plugins/high-velocity-sales-settings/page.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,4BAA4B,GAAG,6BAA6B,CAAC;AACnE,MAAM,aAAa,GAAG,8BAA8B,CAAC;AACrD,MAAM,mBAAmB,GACvB,sDAAsD,CAAC;AAEzD,MAAM,OAAO,0BAA0B;IAC7B,IAAI,CAAO;IAEnB,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,MAAM;QAClB,OAAO,sCAAsC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QACtE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9D,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7D,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,6 +1,58 @@
|
|
|
1
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
2
|
+
if (value !== null && value !== void 0) {
|
|
3
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
4
|
+
var dispose, inner;
|
|
5
|
+
if (async) {
|
|
6
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
7
|
+
dispose = value[Symbol.asyncDispose];
|
|
8
|
+
}
|
|
9
|
+
if (dispose === void 0) {
|
|
10
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
11
|
+
dispose = value[Symbol.dispose];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
15
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
16
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
17
|
+
}
|
|
18
|
+
else if (async) {
|
|
19
|
+
env.stack.push({ async: true });
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
24
|
+
return function (env) {
|
|
25
|
+
function fail(e) {
|
|
26
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
|
+
env.hasError = true;
|
|
28
|
+
}
|
|
29
|
+
var r, s = 0;
|
|
30
|
+
function next() {
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
|
+
try {
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
fail(e);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
45
|
+
if (env.hasError) throw env.error;
|
|
46
|
+
}
|
|
47
|
+
return next();
|
|
48
|
+
};
|
|
49
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
50
|
+
var e = new Error(message);
|
|
51
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
52
|
+
});
|
|
1
53
|
import { waitForPageErrors } from '../../browserforce.js';
|
|
2
54
|
import { BrowserforcePlugin } from '../../plugin.js';
|
|
3
|
-
const BASE_PATH =
|
|
55
|
+
const BASE_PATH = `ui/setup/layout/FieldHistoryTracking?pEntity={APINAME}&retURL=${encodeURIComponent('/setup/forcecomHomepage.apexp')}`;
|
|
4
56
|
const ENABLE_HISTORY_SELECTOR = 'input[type="checkbox"][id="enable"]';
|
|
5
57
|
const ENABLE_FIELD_HISTORY_SELECTOR = 'input[id="{APINAME}_fht"]';
|
|
6
58
|
const SAVE_BUTTON_SELECTOR = 'input[type="submit"][name="save"]';
|
|
@@ -12,52 +64,63 @@ export class HistoryTracking extends BrowserforcePlugin {
|
|
|
12
64
|
const tableEnumOrIdByObjectApiName = await this.getTableEnumOrIdByObjectApiName(definition);
|
|
13
65
|
// Now we can iterate over all history tracking configurations in the definition
|
|
14
66
|
for (const historyTrackingConfig of definition) {
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
67
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
68
|
+
try {
|
|
69
|
+
const historyTrackingResult = { ...historyTrackingConfig };
|
|
70
|
+
// Open the object history tracking setup page
|
|
71
|
+
const page = __addDisposableResource(env_1, await this.browserforce.openPage(BASE_PATH.replace('{APINAME}', tableEnumOrIdByObjectApiName.get(historyTrackingConfig.objectApiName))), true);
|
|
72
|
+
// Retrieve the object history tracking
|
|
73
|
+
// If this is a custom object, this checkbox does not exist, so skip
|
|
74
|
+
if (!historyTrackingConfig.objectApiName.includes('__c')) {
|
|
75
|
+
historyTrackingResult.enableHistoryTracking = await page
|
|
76
|
+
.locator(ENABLE_HISTORY_SELECTOR)
|
|
77
|
+
.isChecked();
|
|
78
|
+
}
|
|
79
|
+
// If we have no field history tracking, there is nothing more to do
|
|
80
|
+
if (!historyTrackingConfig.fieldHistoryTracking) {
|
|
81
|
+
historyTrackingConfigs.push(historyTrackingResult);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const fieldHistoryTrackingConfigs = [];
|
|
85
|
+
// If the object history tracking is false, then we already know all field history tracking is false
|
|
86
|
+
// Only so long as this is a standard object
|
|
87
|
+
if (!historyTrackingResult.enableHistoryTracking &&
|
|
88
|
+
!historyTrackingConfig.objectApiName.includes('__c')) {
|
|
89
|
+
for (const fieldHistoryTracking of historyTrackingConfig.fieldHistoryTracking) {
|
|
90
|
+
fieldHistoryTrackingConfigs.push({
|
|
91
|
+
...fieldHistoryTracking,
|
|
92
|
+
enableHistoryTracking: false,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
historyTrackingResult.fieldHistoryTracking =
|
|
96
|
+
fieldHistoryTrackingConfigs;
|
|
97
|
+
historyTrackingConfigs.push(historyTrackingResult);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
// We need to determine the correct html selector for each field that is configured
|
|
101
|
+
// This is because custom fields are identified using their CustomField.Id value
|
|
102
|
+
const fieldSelectorByFieldApiName = await this.getFieldSelectorByFieldApiName(tableEnumOrIdByObjectApiName.get(historyTrackingConfig.objectApiName), historyTrackingConfig.fieldHistoryTracking);
|
|
103
|
+
// We can now retrieve the field history settings for the fields specified for the object
|
|
35
104
|
for (const fieldHistoryTracking of historyTrackingConfig.fieldHistoryTracking) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
105
|
+
const fieldHistoryTrackingResult = { ...fieldHistoryTracking };
|
|
106
|
+
const fieldApiName = fieldSelectorByFieldApiName.get(fieldHistoryTracking.fieldApiName);
|
|
107
|
+
fieldHistoryTrackingResult.enableHistoryTracking = await page
|
|
108
|
+
.locator(ENABLE_FIELD_HISTORY_SELECTOR.replace('{APINAME}', fieldApiName))
|
|
109
|
+
.isChecked();
|
|
110
|
+
fieldHistoryTrackingConfigs.push(fieldHistoryTrackingResult);
|
|
40
111
|
}
|
|
41
|
-
historyTrackingResult.fieldHistoryTracking =
|
|
42
|
-
fieldHistoryTrackingConfigs;
|
|
112
|
+
historyTrackingResult.fieldHistoryTracking = fieldHistoryTrackingConfigs;
|
|
43
113
|
historyTrackingConfigs.push(historyTrackingResult);
|
|
44
|
-
continue;
|
|
45
114
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
.locator(ENABLE_FIELD_HISTORY_SELECTOR.replace('{APINAME}', fieldApiName))
|
|
55
|
-
.isChecked();
|
|
56
|
-
fieldHistoryTrackingConfigs.push(fieldHistoryTrackingResult);
|
|
115
|
+
catch (e_1) {
|
|
116
|
+
env_1.error = e_1;
|
|
117
|
+
env_1.hasError = true;
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
const result_1 = __disposeResources(env_1);
|
|
121
|
+
if (result_1)
|
|
122
|
+
await result_1;
|
|
57
123
|
}
|
|
58
|
-
historyTrackingResult.fieldHistoryTracking = fieldHistoryTrackingConfigs;
|
|
59
|
-
historyTrackingConfigs.push(historyTrackingResult);
|
|
60
|
-
await page.close();
|
|
61
124
|
}
|
|
62
125
|
return historyTrackingConfigs;
|
|
63
126
|
}
|
|
@@ -67,49 +130,59 @@ export class HistoryTracking extends BrowserforcePlugin {
|
|
|
67
130
|
const tableEnumOrIdByObjectApiName = await this.getTableEnumOrIdByObjectApiName(plan);
|
|
68
131
|
// Now we can iterate over all history tracking configurations in the plan
|
|
69
132
|
for (const historyTrackingConfig of plan) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
// Click the checkbox
|
|
80
|
-
await page.locator(ENABLE_HISTORY_SELECTOR).click();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (historyTrackingConfig.fieldHistoryTracking) {
|
|
84
|
-
// We need to determine the correct html selector for each field that is configured
|
|
85
|
-
// This is because custom fields are identified using their CustomField.Id value
|
|
86
|
-
const fieldSelectorByFieldApiName = await this.getFieldSelectorByFieldApiName(tableEnumOrIdByObjectApiName.get(historyTrackingConfig.objectApiName), historyTrackingConfig.fieldHistoryTracking);
|
|
87
|
-
// We can now retrieve the field history settings for the fields specified for the object
|
|
88
|
-
for (const fieldHistoryTracking of historyTrackingConfig.fieldHistoryTracking) {
|
|
89
|
-
const fieldApiName = fieldSelectorByFieldApiName.get(fieldHistoryTracking.fieldApiName);
|
|
90
|
-
const fieldSelector = ENABLE_FIELD_HISTORY_SELECTOR.replace('{APINAME}', fieldApiName);
|
|
91
|
-
const fieldHistoryTrackingEnabled = await page
|
|
92
|
-
.locator(fieldSelector)
|
|
133
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
134
|
+
try {
|
|
135
|
+
// Open the object history tracking setup page
|
|
136
|
+
const page = __addDisposableResource(env_2, await this.browserforce.openPage(BASE_PATH.replace('{APINAME}', tableEnumOrIdByObjectApiName.get(historyTrackingConfig.objectApiName))), true);
|
|
137
|
+
// Retrieve the object history tracking
|
|
138
|
+
// If this is a custom object, this checkbox does not exist, so skip
|
|
139
|
+
if (!historyTrackingConfig.objectApiName.includes('__c')) {
|
|
140
|
+
const historyTrackingEnabled = await page
|
|
141
|
+
.locator(ENABLE_HISTORY_SELECTOR)
|
|
93
142
|
.isChecked();
|
|
94
|
-
if (
|
|
95
|
-
fieldHistoryTrackingEnabled) {
|
|
143
|
+
if (historyTrackingConfig.enableHistoryTracking !== historyTrackingEnabled) {
|
|
96
144
|
// Click the checkbox
|
|
97
|
-
await page.locator(
|
|
145
|
+
await page.locator(ENABLE_HISTORY_SELECTOR).click();
|
|
98
146
|
}
|
|
99
147
|
}
|
|
148
|
+
if (historyTrackingConfig.fieldHistoryTracking) {
|
|
149
|
+
// We need to determine the correct html selector for each field that is configured
|
|
150
|
+
// This is because custom fields are identified using their CustomField.Id value
|
|
151
|
+
const fieldSelectorByFieldApiName = await this.getFieldSelectorByFieldApiName(tableEnumOrIdByObjectApiName.get(historyTrackingConfig.objectApiName), historyTrackingConfig.fieldHistoryTracking);
|
|
152
|
+
// We can now retrieve the field history settings for the fields specified for the object
|
|
153
|
+
for (const fieldHistoryTracking of historyTrackingConfig.fieldHistoryTracking) {
|
|
154
|
+
const fieldApiName = fieldSelectorByFieldApiName.get(fieldHistoryTracking.fieldApiName);
|
|
155
|
+
const fieldSelector = ENABLE_FIELD_HISTORY_SELECTOR.replace('{APINAME}', fieldApiName);
|
|
156
|
+
const fieldHistoryTrackingEnabled = await page
|
|
157
|
+
.locator(fieldSelector)
|
|
158
|
+
.isChecked();
|
|
159
|
+
if (fieldHistoryTracking.enableHistoryTracking !==
|
|
160
|
+
fieldHistoryTrackingEnabled) {
|
|
161
|
+
// Click the checkbox
|
|
162
|
+
await page.locator(fieldSelector).click();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Save the settings
|
|
167
|
+
await page
|
|
168
|
+
.locator(SAVE_BUTTON_SELECTOR)
|
|
169
|
+
.filter({ visible: true }) // there are three save buttons [not visible, top row, bottom row]
|
|
170
|
+
.first()
|
|
171
|
+
.click();
|
|
172
|
+
await Promise.race([
|
|
173
|
+
page.waitForURL((url) => url.pathname.startsWith('/setup/forcecomHomepage.apexp')),
|
|
174
|
+
waitForPageErrors(page),
|
|
175
|
+
]);
|
|
176
|
+
}
|
|
177
|
+
catch (e_2) {
|
|
178
|
+
env_2.error = e_2;
|
|
179
|
+
env_2.hasError = true;
|
|
180
|
+
}
|
|
181
|
+
finally {
|
|
182
|
+
const result_2 = __disposeResources(env_2);
|
|
183
|
+
if (result_2)
|
|
184
|
+
await result_2;
|
|
100
185
|
}
|
|
101
|
-
// Save the settings
|
|
102
|
-
await page
|
|
103
|
-
.locator(SAVE_BUTTON_SELECTOR)
|
|
104
|
-
.filter({ visible: true }) // there are three save buttons [not visible, top row, bottom row]
|
|
105
|
-
.first()
|
|
106
|
-
.click();
|
|
107
|
-
await Promise.race([
|
|
108
|
-
page.waitForURL((url) => url.pathname !== `/ui/setup/layout/FieldHistoryTracking`),
|
|
109
|
-
waitForPageErrors(page),
|
|
110
|
-
]);
|
|
111
|
-
// Close the page
|
|
112
|
-
await page.close();
|
|
113
186
|
}
|
|
114
187
|
}
|
|
115
188
|
async getFieldSelectorByFieldApiName(tableEnumOrId, fieldHistoryTrackingConfigs) {
|
|
@@ -136,17 +209,21 @@ export class HistoryTracking extends BrowserforcePlugin {
|
|
|
136
209
|
return fieldSelectorByFieldApiName;
|
|
137
210
|
}
|
|
138
211
|
if (personAccountFieldApiNames.length > 0) {
|
|
212
|
+
// NOTE: Unfortunately this includes deleted records
|
|
213
|
+
// WORKAROUND: ORDER BY CreatedDate
|
|
139
214
|
const personAccountFieldsQuery = await this.org
|
|
140
215
|
.getConnection()
|
|
141
|
-
.tooling.query(`SELECT Id, DeveloperName FROM CustomField WHERE DeveloperName IN (${personAccountFieldApiNames.join(',')}) AND TableEnumOrId = 'Contact'`);
|
|
216
|
+
.tooling.query(`SELECT Id, DeveloperName FROM CustomField WHERE DeveloperName IN (${personAccountFieldApiNames.join(',')}) AND TableEnumOrId = 'Contact' ORDER By CreatedDate ASC`);
|
|
142
217
|
for (const personAccountField of personAccountFieldsQuery.records) {
|
|
143
218
|
fieldSelectorByFieldApiName.set(`${personAccountField.DeveloperName}__pc`, personAccountField.Id.substring(0, 15));
|
|
144
219
|
}
|
|
145
220
|
}
|
|
146
221
|
if (customFieldApiNames.length > 0) {
|
|
222
|
+
// NOTE: Unfortunately this includes deleted records
|
|
223
|
+
// WORKAROUND: ORDER BY CreatedDate
|
|
147
224
|
const customFieldsQuery = await this.org
|
|
148
225
|
.getConnection()
|
|
149
|
-
.tooling.query(`SELECT Id, DeveloperName FROM CustomField WHERE DeveloperName IN (${customFieldApiNames.join(',')}) AND TableEnumOrId = '${tableEnumOrId}'`);
|
|
226
|
+
.tooling.query(`SELECT Id, DeveloperName FROM CustomField WHERE DeveloperName IN (${customFieldApiNames.join(',')}) AND TableEnumOrId = '${tableEnumOrId}' ORDER By CreatedDate ASC`);
|
|
150
227
|
for (const customField of customFieldsQuery.records) {
|
|
151
228
|
fieldSelectorByFieldApiName.set(`${customField.DeveloperName}__c`, customField.Id.substring(0, 15));
|
|
152
229
|
}
|
|
@@ -168,9 +245,11 @@ export class HistoryTracking extends BrowserforcePlugin {
|
|
|
168
245
|
if (customObjectApiNames.length === 0) {
|
|
169
246
|
return tableEnumOrIdByObjectApiName;
|
|
170
247
|
}
|
|
248
|
+
// NOTE: Unfortunately this includes deleted records
|
|
249
|
+
// WORKAROUND: ORDER BY CreatedDate
|
|
171
250
|
const customObjectsQuery = await this.org
|
|
172
251
|
.getConnection()
|
|
173
|
-
.tooling.query(`SELECT Id, DeveloperName FROM CustomObject WHERE DeveloperName IN (${customObjectApiNames.join(',')})`);
|
|
252
|
+
.tooling.query(`SELECT Id, DeveloperName FROM CustomObject WHERE DeveloperName IN (${customObjectApiNames.join(',')}) ORDER BY CreatedDate ASC`);
|
|
174
253
|
for (const customObject of customObjectsQuery.records) {
|
|
175
254
|
tableEnumOrIdByObjectApiName.set(`${customObject.DeveloperName}__c`, customObject.Id);
|
|
176
255
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/history-tracking/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/history-tracking/index.ts"],"names":[],"mappings":"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"}
|