@salesforce/core 9.1.4 → 9.1.6
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/config/config.js +0 -4
- package/lib/config/configStore.js +0 -1
- package/lib/crypto/crypto.js +10 -3
- package/lib/deviceOauthService.js +1 -2
- package/lib/logger/logger.js +2 -4
- package/lib/logger/transformStream.js +1 -1
- package/lib/org/authInfo.js +2 -4
- package/lib/org/authRemover.js +1 -3
- package/lib/org/connection.js +1 -3
- package/lib/org/org.js +2 -4
- package/lib/org/scratchOrgInfoGenerator.js +0 -1
- package/lib/org/user.js +0 -1
- package/lib/sfProject.js +0 -6
- package/lib/stateAggregator/accessors/aliasAccessor.js +1 -1
- package/lib/status/streamingClient.js +1 -2
- package/lib/testSetup.js +24 -26
- package/lib/util/cache.js +0 -2
- package/lib/util/directoryWriter.js +0 -1
- package/lib/util/mapKeys.js +2 -7
- package/lib/webOAuthServer.js +0 -6
- package/package.json +9 -2
package/lib/config/config.js
CHANGED
|
@@ -336,7 +336,6 @@ class Config extends configFile_1.ConfigFile {
|
|
|
336
336
|
await super.read(false, force);
|
|
337
337
|
if (global_1.Global.SFDX_INTEROPERABILITY) {
|
|
338
338
|
// will exist if Global.SFDX_INTEROPERABILITY is enabled
|
|
339
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
340
339
|
this.contents.merge(stateFromSfdxFileSync(this.sfdxPath, this));
|
|
341
340
|
}
|
|
342
341
|
await this.cryptProperties(false);
|
|
@@ -350,7 +349,6 @@ class Config extends configFile_1.ConfigFile {
|
|
|
350
349
|
super.readSync(false, force);
|
|
351
350
|
if (global_1.Global.SFDX_INTEROPERABILITY) {
|
|
352
351
|
// will exist if Global.SFDX_INTEROPERABILITY is enabled
|
|
353
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
354
352
|
this.contents.merge(stateFromSfdxFileSync(this.sfdxPath, this));
|
|
355
353
|
}
|
|
356
354
|
return this.getContents();
|
|
@@ -366,7 +364,6 @@ class Config extends configFile_1.ConfigFile {
|
|
|
366
364
|
await super.write();
|
|
367
365
|
if (global_1.Global.SFDX_INTEROPERABILITY) {
|
|
368
366
|
// will exist if Global.SFDX_INTEROPERABILITY is enabled
|
|
369
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
370
367
|
await writeToSfdx(this.sfdxPath, this.getContents());
|
|
371
368
|
}
|
|
372
369
|
await this.cryptProperties(false);
|
|
@@ -449,7 +446,6 @@ class Config extends configFile_1.ConfigFile {
|
|
|
449
446
|
*
|
|
450
447
|
* @param propertyName The name of the property.
|
|
451
448
|
*/
|
|
452
|
-
// eslint-disable-next-line class-methods-use-this
|
|
453
449
|
getPropertyConfig(propertyName) {
|
|
454
450
|
const prop = Config.propertyConfigMap()[propertyName];
|
|
455
451
|
if (!prop) {
|
package/lib/crypto/crypto.js
CHANGED
|
@@ -68,6 +68,10 @@ const KEY_SIZE = {
|
|
|
68
68
|
};
|
|
69
69
|
const ALGO = 'aes-256-gcm';
|
|
70
70
|
const AUTH_TAG_LENGTH = 32;
|
|
71
|
+
// The GCM authentication tag length in bytes. AUTH_TAG_LENGTH is the hex-encoded
|
|
72
|
+
// string length, so the byte length is half of that. Pinning this on decryption
|
|
73
|
+
// prevents forged ciphertexts that use shorter-than-expected tags.
|
|
74
|
+
const AUTH_TAG_BYTE_LENGTH = AUTH_TAG_LENGTH / 2;
|
|
71
75
|
const ENCRYPTED_CHARS = /[a-f0-9]/;
|
|
72
76
|
const KEY_NAME = 'sfdx';
|
|
73
77
|
const ACCOUNT = 'local';
|
|
@@ -206,7 +210,6 @@ class Crypto extends kit_1.AsyncOptionalCreatable {
|
|
|
206
210
|
this.options = options ?? {};
|
|
207
211
|
}
|
|
208
212
|
// @ts-expect-error only for test access
|
|
209
|
-
// eslint-disable-next-line class-methods-use-this
|
|
210
213
|
static unsetCryptoVersion() {
|
|
211
214
|
cryptoVersion = undefined;
|
|
212
215
|
}
|
|
@@ -339,7 +342,9 @@ class Crypto extends kit_1.AsyncOptionalCreatable {
|
|
|
339
342
|
const iv = tokens[0].substring(0, IV_BYTES.v1 * 2);
|
|
340
343
|
const secret = tokens[0].substring(IV_BYTES.v1 * 2, tokens[0].length);
|
|
341
344
|
return this.key.value((buffer) => {
|
|
342
|
-
const decipher = crypto.createDecipheriv(ALGO, buffer.toString('utf8'), iv
|
|
345
|
+
const decipher = crypto.createDecipheriv(ALGO, buffer.toString('utf8'), iv, {
|
|
346
|
+
authTagLength: AUTH_TAG_BYTE_LENGTH,
|
|
347
|
+
});
|
|
343
348
|
try {
|
|
344
349
|
decipher.setAuthTag(Buffer.from(tag, 'hex'));
|
|
345
350
|
return `${decipher.update(secret, 'hex', 'utf8')}${decipher.final('utf8')}`;
|
|
@@ -359,7 +364,9 @@ class Crypto extends kit_1.AsyncOptionalCreatable {
|
|
|
359
364
|
const iv = tokens[0].substring(0, IV_BYTES.v2 * 2);
|
|
360
365
|
const secret = tokens[0].substring(IV_BYTES.v2 * 2, tokens[0].length);
|
|
361
366
|
return this.key.value((buffer) => {
|
|
362
|
-
const decipher = crypto.createDecipheriv(ALGO, buffer, Buffer.from(iv, 'hex')
|
|
367
|
+
const decipher = crypto.createDecipheriv(ALGO, buffer, Buffer.from(iv, 'hex'), {
|
|
368
|
+
authTagLength: AUTH_TAG_BYTE_LENGTH,
|
|
369
|
+
});
|
|
363
370
|
try {
|
|
364
371
|
decipher.setAuthTag(Buffer.from(tag, 'hex'));
|
|
365
372
|
return `${decipher.update(secret, 'hex', 'utf8')}${decipher.final('utf8')}`;
|
|
@@ -14,13 +14,12 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
/* eslint-disable camelcase */
|
|
18
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
19
17
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
18
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
19
|
};
|
|
22
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
21
|
exports.DeviceOauthService = void 0;
|
|
22
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
24
23
|
const transport_1 = __importDefault(require("@jsforce/jsforce-node/lib/transport"));
|
|
25
24
|
const kit_1 = require("@salesforce/kit");
|
|
26
25
|
const ts_types_1 = require("@salesforce/ts-types");
|
package/lib/logger/logger.js
CHANGED
|
@@ -353,7 +353,7 @@ class Logger {
|
|
|
353
353
|
*
|
|
354
354
|
* @param cb A callback that returns on array objects to be logged.
|
|
355
355
|
*/
|
|
356
|
-
// eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
|
|
356
|
+
// eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
|
|
357
357
|
debugCallback(cb) { }
|
|
358
358
|
/**
|
|
359
359
|
* Logs at `info` level with filtering applied. For convenience `this` object is returned.
|
|
@@ -456,9 +456,7 @@ const levelFromOption = (value) => {
|
|
|
456
456
|
}
|
|
457
457
|
};
|
|
458
458
|
// /** match a number to a pino level, or if a match isn't found, the next highest level */
|
|
459
|
-
const numberToLevel = (level) => pino_1.levels.labels[level] ??
|
|
460
|
-
Object.entries(pino_1.levels.labels).find(([value]) => Number(value) > level)?.[1] ??
|
|
461
|
-
'warn';
|
|
459
|
+
const numberToLevel = (level) => pino_1.levels.labels[level] ?? Object.entries(pino_1.levels.labels).find(([value]) => Number(value) > level)?.[1] ?? 'warn';
|
|
462
460
|
const getDefaultLevel = () => {
|
|
463
461
|
const logLevelFromEnvVar = new kit_1.Env().getString('SF_LOG_LEVEL');
|
|
464
462
|
return logLevelFromEnvVar ? Logger.getLevelByName(logLevelFromEnvVar) : Logger.DEFAULT_LEVEL;
|
|
@@ -19,7 +19,7 @@ exports.default = default_1;
|
|
|
19
19
|
const node_stream_1 = require("node:stream");
|
|
20
20
|
const unwrapArray_1 = require("../util/unwrapArray");
|
|
21
21
|
const filters_1 = require("./filters");
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/no-
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
23
23
|
const build = require('pino-abstract-transport');
|
|
24
24
|
function default_1() {
|
|
25
25
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
|
package/lib/org/authInfo.js
CHANGED
|
@@ -825,9 +825,9 @@ class AuthInfo extends kit_1.AsyncOptionalCreatable {
|
|
|
825
825
|
const error = err;
|
|
826
826
|
if (error?.message?.includes('Data Not Available')) {
|
|
827
827
|
// Set cause to keep original stacktrace
|
|
828
|
-
return
|
|
828
|
+
return callback(messages.createError('orgDataNotAvailableError', [this.getUsername()], [], error));
|
|
829
829
|
}
|
|
830
|
-
return
|
|
830
|
+
return callback(error);
|
|
831
831
|
}
|
|
832
832
|
}
|
|
833
833
|
async readJwtKey(keyFile) {
|
|
@@ -951,11 +951,9 @@ class AuthInfo extends kit_1.AsyncOptionalCreatable {
|
|
|
951
951
|
*/
|
|
952
952
|
async exchangeToken(options, oauth2 = new jsforce_node_1.OAuth2(options)) {
|
|
953
953
|
if (!oauth2.redirectUri) {
|
|
954
|
-
// eslint-disable-next-line no-param-reassign
|
|
955
954
|
oauth2.redirectUri = this.getRedirectUri();
|
|
956
955
|
}
|
|
957
956
|
if (!oauth2.clientId) {
|
|
958
|
-
// eslint-disable-next-line no-param-reassign
|
|
959
957
|
oauth2.clientId = this.getClientId();
|
|
960
958
|
}
|
|
961
959
|
// Exchange the auth code for an access token and refresh token.
|
package/lib/org/authRemover.js
CHANGED
|
@@ -109,9 +109,7 @@ class AuthRemover extends kit_1.AsyncOptionalCreatable {
|
|
|
109
109
|
*/
|
|
110
110
|
findAllAuths() {
|
|
111
111
|
const orgs = this.stateAggregator.orgs.getAll();
|
|
112
|
-
return orgs.reduce((x, y) =>
|
|
113
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
114
|
-
({ ...x, [y.username]: y }), {});
|
|
112
|
+
return orgs.reduce((x, y) => ({ ...x, [y.username]: y }), {});
|
|
115
113
|
}
|
|
116
114
|
async init() {
|
|
117
115
|
this.logger = await logger_1.Logger.child(this.constructor.name);
|
package/lib/org/connection.js
CHANGED
|
@@ -337,8 +337,7 @@ class Connection extends jsforce_node_1.Connection {
|
|
|
337
337
|
}
|
|
338
338
|
if (result.totalSize > 1) {
|
|
339
339
|
throw new sfError_1.SfError(options.returnChoicesOnMultiple
|
|
340
|
-
?
|
|
341
|
-
`Multiple records found. ${result.records.map((item) => item[options.choiceField]).join(',')}`
|
|
340
|
+
? `Multiple records found. ${result.records.map((item) => item[options.choiceField]).join(',')}`
|
|
342
341
|
: 'The query returned more than 1 record', exports.SingleRecordQueryErrors.MultipleRecords);
|
|
343
342
|
}
|
|
344
343
|
return result.records[0];
|
|
@@ -419,7 +418,6 @@ const getOptionsVersion = async (options) => {
|
|
|
419
418
|
// jsforce does some interesting proxy loading on lib classes.
|
|
420
419
|
// Setting this in the Connection.tooling getter will not work, it
|
|
421
420
|
// must be set on the prototype.
|
|
422
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
423
421
|
// @ts-ignore
|
|
424
422
|
tooling_1.Tooling.prototype.autoFetchQuery = Connection.prototype.autoFetchQuery; // eslint-disable-line @typescript-eslint/unbound-method
|
|
425
423
|
//# sourceMappingURL=connection.js.map
|
package/lib/org/org.js
CHANGED
|
@@ -952,14 +952,14 @@ class Org extends kit_1.AsyncOptionalCreatable {
|
|
|
952
952
|
* Returns an org field. Returns undefined if the field is not set or invalid.
|
|
953
953
|
*/
|
|
954
954
|
getField(key) {
|
|
955
|
-
/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-
|
|
955
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-assignment */
|
|
956
956
|
// @ts-ignore Legacy. We really shouldn't be doing this.
|
|
957
957
|
const ownProp = this[key];
|
|
958
958
|
if (ownProp && typeof ownProp !== 'function')
|
|
959
959
|
return ownProp;
|
|
960
960
|
// @ts-ignore
|
|
961
961
|
return this.getConnection().getAuthInfoFields()[key];
|
|
962
|
-
/* eslint-enable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-
|
|
962
|
+
/* eslint-enable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-assignment */
|
|
963
963
|
}
|
|
964
964
|
/**
|
|
965
965
|
* Returns a map of requested fields.
|
|
@@ -1071,7 +1071,6 @@ class Org extends kit_1.AsyncOptionalCreatable {
|
|
|
1071
1071
|
/**
|
|
1072
1072
|
* **Throws** *{@link SfError}{ name: 'NotSupportedError' }* Throws an unsupported error.
|
|
1073
1073
|
*/
|
|
1074
|
-
// eslint-disable-next-line class-methods-use-this
|
|
1075
1074
|
getDefaultOptions() {
|
|
1076
1075
|
throw new sfError_1.SfError('Not Supported', 'NotSupportedError');
|
|
1077
1076
|
}
|
|
@@ -1130,7 +1129,6 @@ class Org extends kit_1.AsyncOptionalCreatable {
|
|
|
1130
1129
|
throw messages.createError('SandboxProcessNotFoundBySandboxName', [sandboxNameIn]);
|
|
1131
1130
|
}
|
|
1132
1131
|
}
|
|
1133
|
-
// eslint-disable-next-line class-methods-use-this
|
|
1134
1132
|
async queryProduction(org, field, value) {
|
|
1135
1133
|
return org.connection.singleRecordQuery(`SELECT SandboxInfoId FROM SandboxProcess WHERE ${field} ='${value}' AND Status NOT IN ('D', 'E')`, { tooling: true });
|
|
1136
1134
|
}
|
|
@@ -191,7 +191,6 @@ exports.generateScratchOrgInfo = generateScratchOrgInfo;
|
|
|
191
191
|
const getScratchOrgInfoPayload = async (options) => {
|
|
192
192
|
let warnings = [];
|
|
193
193
|
// Merge after all validations complete
|
|
194
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
195
194
|
const scratchOrgInfoPayload = {
|
|
196
195
|
...(options.definitionfile ? await parseDefinitionFile(options.definitionfile) : {}),
|
|
197
196
|
...(options.definitionjson
|
package/lib/org/user.js
CHANGED
|
@@ -421,7 +421,6 @@ class User extends kit_1.AsyncCreatable {
|
|
|
421
421
|
// eslint-disable-next-line class-methods-use-this
|
|
422
422
|
async rawRequest(conn, options) {
|
|
423
423
|
return new Promise((resolve, reject) => {
|
|
424
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument
|
|
425
424
|
const httpApi = new http_api_1.HttpApi(conn, options);
|
|
426
425
|
httpApi.on('response', (response) => resolve(response));
|
|
427
426
|
httpApi.request(options).catch(reject);
|
package/lib/sfProject.js
CHANGED
|
@@ -672,22 +672,17 @@ class SfProject {
|
|
|
672
672
|
// Add fields in sfdx-config.json
|
|
673
673
|
Object.assign(config, configAggregator.getConfig());
|
|
674
674
|
// we don't have a login url yet, so use instanceUrl from config or default
|
|
675
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
676
675
|
if (!config.sfdcLoginUrl) {
|
|
677
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
678
676
|
config.sfdcLoginUrl = configAggregator.getConfig()['org-instance-url'] ?? sfdcUrl_1.SfdcUrl.PRODUCTION;
|
|
679
677
|
}
|
|
680
678
|
// LEGACY - Allow override of sfdcLoginUrl via env var FORCE_SFDC_LOGIN_URL
|
|
681
679
|
if (process.env.FORCE_SFDC_LOGIN_URL) {
|
|
682
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
683
680
|
config.sfdcLoginUrl = process.env.FORCE_SFDC_LOGIN_URL;
|
|
684
681
|
}
|
|
685
682
|
// Allow override of signupTargetLoginUrl via env var SFDX_SCRATCH_ORG_CREATION_LOGIN_URL
|
|
686
683
|
if (process.env.SFDX_SCRATCH_ORG_CREATION_LOGIN_URL) {
|
|
687
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
688
684
|
config.signupTargetLoginUrl = process.env.SFDX_SCRATCH_ORG_CREATION_LOGIN_URL;
|
|
689
685
|
}
|
|
690
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
691
686
|
const loginUrl = config.sfdcLoginUrl;
|
|
692
687
|
if (loginUrl) {
|
|
693
688
|
if (!sfdcUrl_1.SfdcUrl.isValidUrl(loginUrl) ||
|
|
@@ -695,7 +690,6 @@ class SfProject {
|
|
|
695
690
|
throw messages.createError('invalidProjectLoginUrl', [loginUrl]);
|
|
696
691
|
}
|
|
697
692
|
}
|
|
698
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
699
693
|
const signupUrl = config.signupTargetLoginUrl;
|
|
700
694
|
if (signupUrl) {
|
|
701
695
|
if (!sfdcUrl_1.SfdcUrl.isValidUrl(signupUrl) ||
|
|
@@ -158,7 +158,7 @@ class AliasAccessor extends kit_1.AsyncOptionalCreatable {
|
|
|
158
158
|
await fs_1.fs.promises.mkdir((0, node_path_1.dirname)(this.fileLocation), { recursive: true });
|
|
159
159
|
this.aliasStore = new Map();
|
|
160
160
|
await fs_1.fs.promises.writeFile(this.fileLocation, aliasStoreToRawFileContents(this.aliasStore));
|
|
161
|
-
return lockResponse ?
|
|
161
|
+
return lockResponse ? lockResponse.unlock() : undefined;
|
|
162
162
|
}
|
|
163
163
|
if (lockResponse) {
|
|
164
164
|
await lockResponse.unlock();
|
|
@@ -177,7 +177,6 @@ class StreamingClient extends kit_1.AsyncOptionalCreatable {
|
|
|
177
177
|
outgoing: (message, callback) => {
|
|
178
178
|
if (message.channel === '/meta/subscribe') {
|
|
179
179
|
if (!message.ext) {
|
|
180
|
-
// eslint-disable-next-line no-param-reassign
|
|
181
180
|
message.ext = {};
|
|
182
181
|
}
|
|
183
182
|
const replayFromMap = {};
|
|
@@ -311,7 +310,7 @@ class StreamingClient extends kit_1.AsyncOptionalCreatable {
|
|
|
311
310
|
// @ts-ignore
|
|
312
311
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, no-underscore-dangle
|
|
313
312
|
const dispatcher = this.cometClient._dispatcher;
|
|
314
|
-
// eslint-disable-next-line @typescript-eslint/
|
|
313
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
315
314
|
this.log(`dispatcher.clientId: ${dispatcher.clientId}`);
|
|
316
315
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
317
316
|
if (!dispatcher.clientId) {
|
package/lib/testSetup.js
CHANGED
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2026, Salesforce, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
// mutate ALL the THINGS!
|
|
18
|
+
/// <reference types="mocha" />
|
|
19
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
20
|
+
/* eslint-disable class-methods-use-this */
|
|
21
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
2
22
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
23
|
if (k2 === undefined) k2 = k;
|
|
4
24
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -26,27 +46,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
46
|
exports.MockTestSandboxData = exports.MockTestOrgData = exports.StreamingMockCometClient = exports.StreamingMockCometSubscription = exports.StreamingMockSubscriptionCall = exports.unexpectedResult = exports.restoreContext = exports.stubContext = exports.instantiateContext = exports.TestContext = exports.SecureBuffer = exports.uniqid = void 0;
|
|
27
47
|
exports.shouldThrow = shouldThrow;
|
|
28
48
|
exports.shouldThrowSync = shouldThrowSync;
|
|
29
|
-
/*
|
|
30
|
-
* Copyright 2026, Salesforce, Inc.
|
|
31
|
-
*
|
|
32
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
33
|
-
* you may not use this file except in compliance with the License.
|
|
34
|
-
* You may obtain a copy of the License at
|
|
35
|
-
*
|
|
36
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
37
|
-
*
|
|
38
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
39
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
40
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
41
|
-
* See the License for the specific language governing permissions and
|
|
42
|
-
* limitations under the License.
|
|
43
|
-
*/
|
|
44
|
-
/* eslint-disable no-param-reassign */ // mutate ALL the THINGS!
|
|
45
|
-
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
46
|
-
/* eslint-disable class-methods-use-this */
|
|
47
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
48
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
49
|
-
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
50
49
|
const node_events_1 = require("node:events");
|
|
51
50
|
const node_os_1 = require("node:os");
|
|
52
51
|
const node_path_1 = require("node:path");
|
|
@@ -348,7 +347,7 @@ const requireSinon = (sinon) => {
|
|
|
348
347
|
if (sinon)
|
|
349
348
|
return sinon;
|
|
350
349
|
try {
|
|
351
|
-
// eslint-disable-next-line
|
|
350
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
352
351
|
const newSinon = require('sinon');
|
|
353
352
|
return newSinon;
|
|
354
353
|
}
|
|
@@ -538,7 +537,6 @@ const restoreContext = (testContext) => {
|
|
|
538
537
|
// Restore the default value for this setting on restore.
|
|
539
538
|
global_1.Global.SFDX_INTEROPERABILITY = true;
|
|
540
539
|
testContext.SANDBOX.restore();
|
|
541
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
542
540
|
Object.values(testContext.SANDBOXES).forEach((theSandbox) => theSandbox.restore());
|
|
543
541
|
testContext.configStubs = {};
|
|
544
542
|
// Give each test run a clean StateAggregator
|
|
@@ -688,12 +686,12 @@ class StreamingMockCometClient extends streamingClient_1.CometClient {
|
|
|
688
686
|
/**
|
|
689
687
|
* Fake addExtension. Does nothing.
|
|
690
688
|
*/
|
|
691
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
689
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
692
690
|
addExtension(extension) { }
|
|
693
691
|
/**
|
|
694
692
|
* Fake disable. Does nothing.
|
|
695
693
|
*/
|
|
696
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
694
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
697
695
|
disable(label) { }
|
|
698
696
|
/**
|
|
699
697
|
* Fake handshake that invoke callback after the setTimeout event phase.
|
|
@@ -708,7 +706,7 @@ class StreamingMockCometClient extends streamingClient_1.CometClient {
|
|
|
708
706
|
/**
|
|
709
707
|
* Fake setHeader. Does nothing,
|
|
710
708
|
*/
|
|
711
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
709
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
712
710
|
setHeader(name, value) { }
|
|
713
711
|
/**
|
|
714
712
|
* Fake subscription that completed after the setTimout event phase.
|
package/lib/util/cache.js
CHANGED
|
@@ -17,12 +17,10 @@ exports.Cache = void 0;
|
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
19
|
class Cache extends Map {
|
|
20
|
-
/* eslint-disable @typescript-eslint/explicit-member-accessibility */
|
|
21
20
|
static #instance;
|
|
22
21
|
static #enabled = true;
|
|
23
22
|
#hits;
|
|
24
23
|
#lookups;
|
|
25
|
-
/* eslint-enable @typescript-eslint/explicit-member-accessibility */
|
|
26
24
|
constructor() {
|
|
27
25
|
super();
|
|
28
26
|
this.#hits = 0;
|
|
@@ -61,7 +61,6 @@ class DirectoryWriter {
|
|
|
61
61
|
throw new Error('Not implemented');
|
|
62
62
|
}
|
|
63
63
|
async addToStore(contents, targetPath) {
|
|
64
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
65
64
|
const destPath = path.join(this.rootDestination, targetPath);
|
|
66
65
|
fs_1.fs.mkdirSync(path.dirname(destPath), { recursive: true });
|
|
67
66
|
if (contents instanceof node_stream_1.Readable) {
|
package/lib/util/mapKeys.js
CHANGED
|
@@ -30,14 +30,9 @@ const ts_types_1 = require("@salesforce/ts-types");
|
|
|
30
30
|
* @param deep - {boolean} Whether to do a deep object key conversion
|
|
31
31
|
* @return {Object} - the object with the converted keys
|
|
32
32
|
*/
|
|
33
|
-
function mapKeys(
|
|
34
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
|
|
35
|
-
obj, converter, deep) {
|
|
36
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
33
|
+
function mapKeys(obj, converter, deep) {
|
|
37
34
|
const target = Object.assign({}, obj);
|
|
38
|
-
return Object.fromEntries(
|
|
39
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
40
|
-
Object.entries(target).map(([key, value]) => {
|
|
35
|
+
return Object.fromEntries(Object.entries(target).map(([key, value]) => {
|
|
41
36
|
const k = converter.call(null, key);
|
|
42
37
|
if (deep) {
|
|
43
38
|
let v = value;
|
package/lib/webOAuthServer.js
CHANGED
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
/* eslint-disable class-methods-use-this */
|
|
18
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
19
18
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
19
|
if (k2 === undefined) k2 = k;
|
|
21
20
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -273,7 +272,6 @@ class WebOAuthServer extends kit_1.AsyncCreatable {
|
|
|
273
272
|
this.logger.debug(`processing request for uri: ${url.pathname ?? 'null'}`);
|
|
274
273
|
if (request.method === 'GET') {
|
|
275
274
|
if (url.pathname?.startsWith('/OauthRedirect') && url.query) {
|
|
276
|
-
// eslint-disable-next-line no-param-reassign
|
|
277
275
|
request.query = (0, node_querystring_1.parse)(url.query);
|
|
278
276
|
if (request.query.error) {
|
|
279
277
|
const errorName = typeof request.query.error_description === 'string'
|
|
@@ -464,9 +462,7 @@ class WebServer extends kit_1.AsyncCreatable {
|
|
|
464
462
|
* @param response the response to write the error to.
|
|
465
463
|
*/
|
|
466
464
|
sendError(status, message, response) {
|
|
467
|
-
// eslint-disable-next-line no-param-reassign
|
|
468
465
|
response.statusMessage = message;
|
|
469
|
-
// eslint-disable-next-line no-param-reassign
|
|
470
466
|
response.statusCode = status;
|
|
471
467
|
response.end();
|
|
472
468
|
}
|
|
@@ -527,7 +523,6 @@ class WebServer extends kit_1.AsyncCreatable {
|
|
|
527
523
|
// We don't validate the origin here because:
|
|
528
524
|
// 1. The default login URL (login.salesforce.com) will not match after a redirect or if user choose a custom domain in login.
|
|
529
525
|
// 2. There's no fixed list of auth URLs we could check against.
|
|
530
|
-
// eslint-disable-next-line no-param-reassign
|
|
531
526
|
response.statusCode = 204; // No Content response
|
|
532
527
|
response.setHeader('Access-Control-Allow-Methods', 'GET');
|
|
533
528
|
response.setHeader('Access-Control-Request-Headers', 'GET');
|
|
@@ -578,7 +573,6 @@ class WebServer extends kit_1.AsyncCreatable {
|
|
|
578
573
|
});
|
|
579
574
|
// An error means that no existing connection exists, which is what we want
|
|
580
575
|
socket.on('error', () => {
|
|
581
|
-
// eslint-disable-next-line no-console
|
|
582
576
|
socket.destroy();
|
|
583
577
|
resolve(this.port);
|
|
584
578
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforce/core",
|
|
3
|
-
"version": "9.1.
|
|
3
|
+
"version": "9.1.6",
|
|
4
4
|
"description": "Core libraries to interact with SFDX projects, orgs, and APIs.",
|
|
5
5
|
"main": "lib/index",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -83,15 +83,21 @@
|
|
|
83
83
|
"zod": "^4.1.12"
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
|
-
"@salesforce/dev-scripts": "^
|
|
86
|
+
"@salesforce/dev-scripts": "^13.0.2",
|
|
87
87
|
"@salesforce/ts-sinon": "^1.4.31",
|
|
88
88
|
"@types/benchmark": "^2.1.5",
|
|
89
|
+
"@types/chai": "^4.3.17",
|
|
89
90
|
"@types/fast-levenshtein": "^0.0.4",
|
|
90
91
|
"@types/jsonwebtoken": "9.0.10",
|
|
92
|
+
"@types/mocha": "^10.0.10",
|
|
93
|
+
"@types/node": "^18",
|
|
91
94
|
"@types/proper-lockfile": "^4.1.4",
|
|
92
95
|
"@types/semver": "^7.7.1",
|
|
96
|
+
"@types/sinon": "^10.0.20",
|
|
93
97
|
"benchmark": "^2.1.4",
|
|
94
98
|
"esbuild": "^0.28.0",
|
|
99
|
+
"eslint": "^10.4.0",
|
|
100
|
+
"eslint-config-salesforce-typescript": "^6.0.0",
|
|
95
101
|
"mocha": "^11.7.5",
|
|
96
102
|
"ts-node": "^10.9.2",
|
|
97
103
|
"ts-patch": "^3.3.0",
|
|
@@ -150,6 +156,7 @@
|
|
|
150
156
|
"src/**/*.ts",
|
|
151
157
|
"test/**/*.ts",
|
|
152
158
|
"messages/**",
|
|
159
|
+
"**/eslint.config.*",
|
|
153
160
|
"**/.eslint*",
|
|
154
161
|
"**/tsconfig.json"
|
|
155
162
|
],
|