sfdx-browserforce-plugin 4.7.1 → 4.8.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.
- package/lib/plugins/security/authentication-configuration/index.d.ts +11 -0
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.d.ts +1 -0
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js +107 -0
- package/lib/plugins/security/authentication-configuration/index.e2e-spec.js.map +1 -0
- package/lib/plugins/security/authentication-configuration/index.js +64 -0
- package/lib/plugins/security/authentication-configuration/index.js.map +1 -0
- package/lib/plugins/security/index.d.ts +2 -0
- package/lib/plugins/security/index.js +13 -0
- package/lib/plugins/security/index.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
+
export type Config = {
|
|
3
|
+
services: Array<{
|
|
4
|
+
label: string;
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
}>;
|
|
7
|
+
};
|
|
8
|
+
export declare class AuthenticationConfiguration extends BrowserforcePlugin {
|
|
9
|
+
retrieve(definition: Config): Promise<Config>;
|
|
10
|
+
apply(plan: Config): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import * as child from 'child_process';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { AuthenticationConfiguration } from './index.js';
|
|
6
|
+
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
7
|
+
describe(AuthenticationConfiguration.name, function () {
|
|
8
|
+
let plugin;
|
|
9
|
+
before(() => {
|
|
10
|
+
plugin = new AuthenticationConfiguration(global.bf);
|
|
11
|
+
});
|
|
12
|
+
describe('authentication configuration', () => {
|
|
13
|
+
const configRetrieveSingle = {
|
|
14
|
+
services: [
|
|
15
|
+
{ label: 'Login Form', enabled: true }
|
|
16
|
+
]
|
|
17
|
+
};
|
|
18
|
+
const configRmoveSingle = {
|
|
19
|
+
services: [
|
|
20
|
+
{ label: 'Login Form', enabled: false }
|
|
21
|
+
]
|
|
22
|
+
};
|
|
23
|
+
const configApplyMultiple = {
|
|
24
|
+
services: [
|
|
25
|
+
{ label: 'Login Form', enabled: false },
|
|
26
|
+
{ label: 'TestAuthMethod', enabled: true }
|
|
27
|
+
]
|
|
28
|
+
};
|
|
29
|
+
const configApplyMissing = {
|
|
30
|
+
services: [
|
|
31
|
+
{ label: 'FakeAuthMethod', enabled: true }
|
|
32
|
+
]
|
|
33
|
+
};
|
|
34
|
+
const resetTestState = {
|
|
35
|
+
services: [
|
|
36
|
+
{ label: 'Login Form', enabled: true },
|
|
37
|
+
{ label: 'TestAuthMethod', enabled: false }
|
|
38
|
+
]
|
|
39
|
+
};
|
|
40
|
+
it('should retrieve the single enabled Login Form auth', async () => {
|
|
41
|
+
const res = await plugin.retrieve(configRetrieveSingle);
|
|
42
|
+
assert.deepStrictEqual(res, configRetrieveSingle);
|
|
43
|
+
});
|
|
44
|
+
it('should not do anything when the configuration is already set', async () => {
|
|
45
|
+
const res = await plugin.run(configRetrieveSingle);
|
|
46
|
+
assert.deepStrictEqual(res, { message: 'no action necessary' });
|
|
47
|
+
});
|
|
48
|
+
it('should throw an error when trying to remove the only enabled service', async () => {
|
|
49
|
+
let err;
|
|
50
|
+
try {
|
|
51
|
+
await plugin.apply(configRmoveSingle);
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
err = e;
|
|
55
|
+
}
|
|
56
|
+
assert.throws(() => {
|
|
57
|
+
throw err;
|
|
58
|
+
}, /You must select at least one authentication service/);
|
|
59
|
+
});
|
|
60
|
+
it('should deploy an AuthProvider for testing', () => {
|
|
61
|
+
const sourceDeployCmd = child.spawnSync('sf', [
|
|
62
|
+
'project',
|
|
63
|
+
'deploy',
|
|
64
|
+
'start',
|
|
65
|
+
'-d',
|
|
66
|
+
path.join(__dirname, 'sfdx-source'),
|
|
67
|
+
'--json'
|
|
68
|
+
]);
|
|
69
|
+
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
70
|
+
});
|
|
71
|
+
it('should update multiple auth services', async () => {
|
|
72
|
+
await plugin.apply(configApplyMultiple);
|
|
73
|
+
const res = await plugin.retrieve(configApplyMultiple);
|
|
74
|
+
assert.deepStrictEqual(res, configApplyMultiple);
|
|
75
|
+
});
|
|
76
|
+
it('should throw an error when trying to apply a missing service', async () => {
|
|
77
|
+
let err;
|
|
78
|
+
try {
|
|
79
|
+
await plugin.apply(configApplyMissing);
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
err = e;
|
|
83
|
+
}
|
|
84
|
+
assert.throws(() => {
|
|
85
|
+
throw err;
|
|
86
|
+
}, /not found/);
|
|
87
|
+
});
|
|
88
|
+
it('should reset auth services back to default', async () => {
|
|
89
|
+
await plugin.apply(resetTestState);
|
|
90
|
+
const res = await plugin.retrieve(resetTestState);
|
|
91
|
+
assert.deepStrictEqual(res, resetTestState);
|
|
92
|
+
});
|
|
93
|
+
it('should remove the testing AuthProvider', () => {
|
|
94
|
+
const sourceDeployCmd = child.spawnSync('sf', [
|
|
95
|
+
'project',
|
|
96
|
+
'delete',
|
|
97
|
+
'source',
|
|
98
|
+
'--metadata',
|
|
99
|
+
'AuthProvider:TestAuthMethod',
|
|
100
|
+
'--no-prompt',
|
|
101
|
+
'--json'
|
|
102
|
+
]);
|
|
103
|
+
assert.deepStrictEqual(sourceDeployCmd.status, 0, sourceDeployCmd.output.toString());
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=index.e2e-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.e2e-spec.js","sourceRoot":"","sources":["../../../../src/plugins/security/authentication-configuration/index.e2e-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { BrowserforcePlugin } from '../../../plugin.js';
|
|
2
|
+
const PATHS = {
|
|
3
|
+
EDIT_VIEW: 'lightning/setup/OrgDomain/page?address=%2Fdomainname%2FEditLogin.apexp'
|
|
4
|
+
};
|
|
5
|
+
const SELECTORS = {
|
|
6
|
+
SETUP_FORM: 'form[id="BrandSetup:brandSetupForm"]',
|
|
7
|
+
SERVICE_CHECKBOX: 'input.authOption[type="checkbox"]',
|
|
8
|
+
SAVE_BUTTON: 'input[id$=":Save"]',
|
|
9
|
+
ERROR_SPAN: '[id="BrandSetup:brandSetupForm:settingsDetail:es1:es14:authError"]'
|
|
10
|
+
};
|
|
11
|
+
export class AuthenticationConfiguration extends BrowserforcePlugin {
|
|
12
|
+
async retrieve(definition) {
|
|
13
|
+
const page = await this.browserforce.openPage(PATHS.EDIT_VIEW);
|
|
14
|
+
const frameOrPage = await this.browserforce.waitForSelectorInFrameOrPage(page, SELECTORS.SETUP_FORM);
|
|
15
|
+
await frameOrPage.waitForSelector(SELECTORS.SERVICE_CHECKBOX);
|
|
16
|
+
const services = await frameOrPage.$$eval(SELECTORS.SERVICE_CHECKBOX, (inputs, definedServices) => inputs
|
|
17
|
+
.map((cb) => {
|
|
18
|
+
const labelElement = document.querySelector(`label[for="${cb.id}"]`);
|
|
19
|
+
const label = labelElement ? labelElement.textContent.trim() : cb.id;
|
|
20
|
+
return {
|
|
21
|
+
label,
|
|
22
|
+
enabled: cb.checked
|
|
23
|
+
};
|
|
24
|
+
})
|
|
25
|
+
.filter((service) => definedServices.some((definedService) => definedService.label === service.label)), definition.services);
|
|
26
|
+
await page.close();
|
|
27
|
+
return { services };
|
|
28
|
+
}
|
|
29
|
+
async apply(plan) {
|
|
30
|
+
const page = await this.browserforce.openPage(PATHS.EDIT_VIEW);
|
|
31
|
+
const frameOrPage = await this.browserforce.waitForSelectorInFrameOrPage(page, SELECTORS.SETUP_FORM);
|
|
32
|
+
await frameOrPage.waitForSelector(SELECTORS.SERVICE_CHECKBOX);
|
|
33
|
+
for (const svc of plan.services) {
|
|
34
|
+
const checkboxId = await frameOrPage.$$eval(SELECTORS.SERVICE_CHECKBOX, (inputs, serviceName) => {
|
|
35
|
+
for (const inp of inputs) {
|
|
36
|
+
const labelElement = document.querySelector(`label[for="${inp.id}"]`);
|
|
37
|
+
if (labelElement && labelElement.textContent.trim() === serviceName) {
|
|
38
|
+
return inp.id;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}, svc.label);
|
|
43
|
+
if (!checkboxId) {
|
|
44
|
+
throw new Error(`Authentication service "${svc.label}" not found`);
|
|
45
|
+
}
|
|
46
|
+
const selector = `[id="${checkboxId}"]`;
|
|
47
|
+
const isChecked = await frameOrPage.$eval(selector, (el) => el.checked);
|
|
48
|
+
if (svc.enabled !== isChecked) {
|
|
49
|
+
await frameOrPage.click(selector);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const anyChecked = await frameOrPage.$$eval(SELECTORS.SERVICE_CHECKBOX, (inputs) => inputs.some((cb) => cb.checked));
|
|
53
|
+
if (!anyChecked) {
|
|
54
|
+
throw new Error('Change failed: “You must select at least one authentication service.”');
|
|
55
|
+
}
|
|
56
|
+
await frameOrPage.waitForSelector(SELECTORS.SAVE_BUTTON);
|
|
57
|
+
await Promise.all([
|
|
58
|
+
frameOrPage.waitForNavigation({ waitUntil: 'networkidle0' }),
|
|
59
|
+
frameOrPage.click(SELECTORS.SAVE_BUTTON)
|
|
60
|
+
]);
|
|
61
|
+
await page.close();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/security/authentication-configuration/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,13 @@ import { Config as CertificateAndKeyManagementConfig } from './certificate-and-k
|
|
|
3
3
|
import { Config as IdentityProviderConfig } from './identity-provider/index.js';
|
|
4
4
|
import { Config as LoginAccessPoliciesConfig } from './login-access-policies/index.js';
|
|
5
5
|
import { Config as SharingConfig } from './sharing/index.js';
|
|
6
|
+
import { Config as AuthenticationConfigurationConfig } from './authentication-configuration/index.js';
|
|
6
7
|
type Config = {
|
|
7
8
|
certificateAndKeyManagement?: CertificateAndKeyManagementConfig;
|
|
8
9
|
identityProvider?: IdentityProviderConfig;
|
|
9
10
|
loginAccessPolicies?: LoginAccessPoliciesConfig;
|
|
10
11
|
sharing?: SharingConfig;
|
|
12
|
+
authenticationConfiguration?: AuthenticationConfigurationConfig;
|
|
11
13
|
};
|
|
12
14
|
export declare class Security extends BrowserforcePlugin {
|
|
13
15
|
retrieve(definition?: Config): Promise<Config>;
|
|
@@ -3,6 +3,7 @@ import { CertificateAndKeyManagement } from './certificate-and-key-management/in
|
|
|
3
3
|
import { IdentityProvider } from './identity-provider/index.js';
|
|
4
4
|
import { LoginAccessPolicies } from './login-access-policies/index.js';
|
|
5
5
|
import { Sharing } from './sharing/index.js';
|
|
6
|
+
import { AuthenticationConfiguration } from './authentication-configuration/index.js';
|
|
6
7
|
export class Security extends BrowserforcePlugin {
|
|
7
8
|
async retrieve(definition) {
|
|
8
9
|
const response = {};
|
|
@@ -23,6 +24,10 @@ export class Security extends BrowserforcePlugin {
|
|
|
23
24
|
const pluginSharing = new Sharing(this.browserforce);
|
|
24
25
|
response.sharing = await pluginSharing.retrieve();
|
|
25
26
|
}
|
|
27
|
+
if (definition.authenticationConfiguration) {
|
|
28
|
+
response.authenticationConfiguration =
|
|
29
|
+
await new AuthenticationConfiguration(this.browserforce).retrieve(definition.authenticationConfiguration);
|
|
30
|
+
}
|
|
26
31
|
}
|
|
27
32
|
return response;
|
|
28
33
|
}
|
|
@@ -31,6 +36,7 @@ export class Security extends BrowserforcePlugin {
|
|
|
31
36
|
const identityProvider = new IdentityProvider(this.browserforce).diff(state.identityProvider, definition.identityProvider);
|
|
32
37
|
const loginAccessPolicies = new LoginAccessPolicies(this.browserforce).diff(state.loginAccessPolicies, definition.loginAccessPolicies);
|
|
33
38
|
const sharing = new Sharing(this.browserforce).diff(state.sharing, definition.sharing);
|
|
39
|
+
const authenticationConfiguration = new AuthenticationConfiguration(this.browserforce).diff(state.authenticationConfiguration, definition.authenticationConfiguration);
|
|
34
40
|
const response = {};
|
|
35
41
|
if (certificateAndKeyManagement !== undefined) {
|
|
36
42
|
response.certificateAndKeyManagement = certificateAndKeyManagement;
|
|
@@ -47,6 +53,9 @@ export class Security extends BrowserforcePlugin {
|
|
|
47
53
|
if (sharing !== undefined) {
|
|
48
54
|
response.sharing = sharing;
|
|
49
55
|
}
|
|
56
|
+
if (authenticationConfiguration !== undefined) {
|
|
57
|
+
response.authenticationConfiguration = authenticationConfiguration;
|
|
58
|
+
}
|
|
50
59
|
return Object.keys(response).length ? response : undefined;
|
|
51
60
|
}
|
|
52
61
|
async apply(plan) {
|
|
@@ -66,6 +75,10 @@ export class Security extends BrowserforcePlugin {
|
|
|
66
75
|
const pluginSharing = new Sharing(this.browserforce);
|
|
67
76
|
await pluginSharing.apply(plan.sharing);
|
|
68
77
|
}
|
|
78
|
+
if (plan.authenticationConfiguration) {
|
|
79
|
+
const pluginAuthConfig = new AuthenticationConfiguration(this.browserforce);
|
|
80
|
+
await pluginAuthConfig.apply(plan.authenticationConfiguration);
|
|
81
|
+
}
|
|
69
82
|
}
|
|
70
83
|
}
|
|
71
84
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,2BAA2B,EAE5B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAoC,MAAM,8BAA8B,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAuC,MAAM,kCAAkC,CAAC;AAC5G,OAAO,EAAE,OAAO,EAA2B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,2BAA2B,EAE5B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAoC,MAAM,8BAA8B,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAuC,MAAM,kCAAkC,CAAC;AAC5G,OAAO,EAAE,OAAO,EAA2B,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAA8C,MAAM,yCAAyC,CAAC;AAWlI,MAAM,OAAO,QAAS,SAAQ,kBAAkB;IACvC,KAAK,CAAC,QAAQ,CAAC,UAAmB;QACvC,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,2BAA2B,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACrE,QAAQ,CAAC,2BAA2B,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;YAC1G,CAAC;YACD,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;gBAChC,MAAM,sBAAsB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvE,QAAQ,CAAC,gBAAgB,GAAG,MAAM,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YACtE,CAAC;YACD,IAAI,UAAU,CAAC,mBAAmB,EAAE,CAAC;gBACnC,MAAM,yBAAyB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC7E,QAAQ,CAAC,mBAAmB,GAAG,MAAM,yBAAyB,CAAC,QAAQ,EAAE,CAAC;YAC5E,CAAC;YACD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACrD,QAAQ,CAAC,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;YACpD,CAAC;YACD,IAAI,UAAU,CAAC,2BAA2B,EAAE,CAAC;gBAC3C,QAAQ,CAAC,2BAA2B;oBAChC,MAAM,IAAI,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;YAChH,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,UAAkB;QAC3C,MAAM,2BAA2B,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACzF,KAAK,CAAC,2BAA2B,EACjC,UAAU,CAAC,2BAA2B,CACvC,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACnE,KAAK,CAAC,gBAAgB,EACtB,UAAU,CAAC,gBAAgB,CACU,CAAC;QACxC,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACzE,KAAK,CAAC,mBAAmB,EACzB,UAAU,CAAC,mBAAmB,CACU,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAA8B,CAAC;QACpH,MAAM,2BAA2B,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACvF,KAAK,CAAC,2BAA2B,EACjC,UAAU,CAAC,2BAA2B,CACU,CAAC;QACrD,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,IAAI,2BAA2B,KAAK,SAAS,EAAE,CAAC;YAC9C,QAAQ,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QACrE,CAAC;QACD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,QAAQ,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAC/C,CAAC;QACD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,QAAQ,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QACrD,CAAC;QACD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,QAAQ,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QACrD,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7B,CAAC;QACD,IAAI,2BAA2B,KAAK,SAAS,EAAE,CAAC;YAC9C,QAAQ,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QACrE,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY;QAC7B,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrE,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,sBAAsB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvE,MAAM,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,MAAM,yBAAyB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7E,MAAM,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrD,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACrC,MAAM,gBAAgB,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC3E,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;CACF"}
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sfdx-browserforce-plugin",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.8.0",
|
|
4
4
|
"description": "sfdx plugin for browser automation",
|
|
5
5
|
"author": "Matthias Rolke <mr.amtrack@gmail.com>",
|
|
6
6
|
"type": "module",
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
"@mdapi-issues/listmetadata-standardvalueset": "3.1.0",
|
|
12
12
|
"@salesforce/sf-plugins-core": "12.2.2",
|
|
13
13
|
"p-retry": "6.2.1",
|
|
14
|
-
"puppeteer": "24.
|
|
14
|
+
"puppeteer": "24.10.0"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
17
|
"@salesforce/dev-scripts": "11.0.2",
|
|
18
|
-
"oclif": "4.
|
|
18
|
+
"oclif": "4.18.0"
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"/bin",
|