Skip to content

Commit 3e4aba6

Browse files
fix: use SF prefixed env vars, add UTs, SDR 9, core 4
1 parent ed326cb commit 3e4aba6

File tree

5 files changed

+163
-31
lines changed

5 files changed

+163
-31
lines changed

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@
4343
"/oclif.manifest.json"
4444
],
4545
"dependencies": {
46-
"@salesforce/core": "^3.36.1",
46+
"@salesforce/core": "^4.0.1",
4747
"@salesforce/kit": "^1.9.2",
48-
"@salesforce/source-deploy-retrieve": "^8.5.1",
48+
"@salesforce/source-deploy-retrieve": "^9.1.0",
4949
"fast-xml-parser": "^4.2.2",
5050
"graceful-fs": "^4.2.11",
5151
"isomorphic-git": "1.23.0",
@@ -160,4 +160,4 @@
160160
"output": []
161161
}
162162
}
163-
}
163+
}

src/shared/localShadowRepo.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,21 @@ export class ShadowRepo {
5050
private packageDirs!: NamedPackageDir[];
5151
private status!: StatusRow[];
5252
private logger!: Logger;
53-
private isWindows: boolean;
53+
private readonly isWindows: boolean;
5454

5555
/** do not try to add more than this many files at a time through isogit. You'll hit EMFILE: too many open files even with graceful-fs */
56-
private maxFileAdd: number;
56+
private readonly maxFileAdd: number;
5757

5858
private constructor(options: ShadowRepoOptions) {
5959
this.gitDir = getGitDir(options.orgId, options.projectPath);
6060
this.projectPath = options.projectPath;
6161
this.packageDirs = options.packageDirs;
6262
this.isWindows = os.type() === 'Windows_NT';
6363

64-
this.maxFileAdd = env.getNumber('SFDX_SOURCE_TRACKING_BATCH_SIZE', this.isWindows ? 8000 : 15000);
64+
this.maxFileAdd = env.getNumber(
65+
'SF_SOURCE_TRACKING_BATCH_SIZE',
66+
env.getNumber('SFDX_SOURCE_TRACKING_BATCH_SIZE', this.isWindows ? 8000 : 15000)
67+
);
6568
}
6669

6770
// think of singleton behavior but unique to the projectPath

src/sourceTracking.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ export class SourceTracking extends AsyncCreatable {
437437

438438
/**
439439
* Mark remote source tracking files so say that we have received the latest version from the server
440-
* Optionall skip polling for the SourceMembers to exist on the server and be updated in local files
440+
* Optional skip polling for the SourceMembers to exist on the server and be updated in local files
441441
*/
442442
public async updateRemoteTracking(fileResponses: RemoteSyncInput[], skipPolling = false): Promise<void> {
443443
// false to explicitly NOT query until we do the polling

test/unit/localShadowRepo.test.ts

+71
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,75 @@ describe('localShadowRepo', () => {
5050
if (projectDir) await fs.promises.rm(projectDir, { recursive: true });
5151
}
5252
});
53+
it('respects SFDX_SOURCE_TRACKING_BATCH_SIZE env var', async () => {
54+
expect(process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined;
55+
process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE = '1';
56+
const projectDir = fs.mkdtempSync(path.join(os.tmpdir(), 'localShadowRepoTest'));
57+
58+
const shadowRepo: ShadowRepo = await ShadowRepo.getInstance({
59+
orgId: '00D456789012345',
60+
projectPath: projectDir,
61+
packageDirs: [
62+
{
63+
name: 'dummy',
64+
fullPath: 'dummy',
65+
path: path.join(projectDir, 'force-app'),
66+
},
67+
],
68+
});
69+
// private property maxFileAdd
70+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
71+
// @ts-ignore
72+
expect(shadowRepo.maxFileAdd).to.equal(1);
73+
delete process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE;
74+
expect(process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined;
75+
});
76+
77+
it('respects SF_SOURCE_TRACKING_BATCH_SIZE env var', async () => {
78+
expect(process.env.SF_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined;
79+
process.env.SF_SOURCE_TRACKING_BATCH_SIZE = '1';
80+
const projectDir = fs.mkdtempSync(path.join(os.tmpdir(), 'localShadowRepoTest'));
81+
82+
const shadowRepo: ShadowRepo = await ShadowRepo.getInstance({
83+
orgId: '00D456789012345',
84+
projectPath: projectDir,
85+
packageDirs: [
86+
{
87+
name: 'dummy',
88+
fullPath: 'dummy',
89+
path: path.join(projectDir, 'force-app'),
90+
},
91+
],
92+
});
93+
// private property maxFileAdd
94+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
95+
// @ts-ignore
96+
expect(shadowRepo.maxFileAdd).to.equal(1);
97+
delete process.env.SF_SOURCE_TRACKING_BATCH_SIZE;
98+
expect(process.env.SF_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined;
99+
});
100+
101+
it('respects undefined SF_SOURCE_TRACKING_BATCH_SIZE env var and uses default', async () => {
102+
expect(process.env.SF_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined;
103+
expect(process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined;
104+
const projectDir = fs.mkdtempSync(path.join(os.tmpdir(), 'localShadowRepoTest'));
105+
106+
const shadowRepo: ShadowRepo = await ShadowRepo.getInstance({
107+
orgId: '00D456789012345',
108+
projectPath: projectDir,
109+
packageDirs: [
110+
{
111+
name: 'dummy',
112+
fullPath: 'dummy',
113+
path: path.join(projectDir, 'force-app'),
114+
},
115+
],
116+
});
117+
// private property maxFileAdd
118+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
119+
// @ts-ignore
120+
expect(shadowRepo.maxFileAdd).to.equal(os.type() === 'Windows_NT' ? 8000 : 15000);
121+
expect(process.env.SF_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined;
122+
expect(process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined;
123+
});
53124
});

yarn.lock

+82-24
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,27 @@
911911
jsonwebtoken "9.0.0"
912912
ts-retry-promise "^0.7.0"
913913

914+
"@salesforce/core@^4.0.1":
915+
version "4.0.1"
916+
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-4.0.1.tgz#d843c86cfd59f74e33e70d9558e0fe3ee9b49a53"
917+
integrity sha512-BjHM3C3QfjW0wSrt0q2+5JOwa/9edg/18TT2C3iykmPxeDXAum/2W/S+7ctyefEJ0/VYlh/DvzLaEc74MadKnA==
918+
dependencies:
919+
"@salesforce/bunyan" "^2.0.0"
920+
"@salesforce/kit" "^3.0.0"
921+
"@salesforce/schemas" "^1.5.1"
922+
"@salesforce/ts-types" "^2.0.1"
923+
"@types/semver" "^7.3.13"
924+
ajv "^8.12.0"
925+
archiver "^5.3.0"
926+
change-case "^4.1.2"
927+
debug "^3.2.7"
928+
faye "^1.4.0"
929+
form-data "^4.0.0"
930+
js2xmlparser "^4.0.1"
931+
jsforce "^2.0.0-beta.23"
932+
jsonwebtoken "9.0.0"
933+
ts-retry-promise "^0.7.0"
934+
914935
"@salesforce/dev-config@^3.0.0", "@salesforce/dev-config@^3.1.0":
915936
version "3.1.0"
916937
resolved "https://registry.yarnpkg.com/@salesforce/dev-config/-/dev-config-3.1.0.tgz#8eb5b35860ff60d1c1dc3fd9329b01a28475d5b9"
@@ -965,6 +986,14 @@
965986
shx "^0.3.3"
966987
tslib "^2.5.0"
967988

989+
"@salesforce/kit@^3.0.0", "@salesforce/kit@^3.0.1":
990+
version "3.0.2"
991+
resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-3.0.2.tgz#6474c3e9905290bbcfb3455388b140eee3ff84db"
992+
integrity sha512-/TbqjmxThz3+ZeLrYZFEcvn7kbK7DW0aHzotazyKsoGbqsHiiXIMNS1Cc5rfJRKQV7bKp84vMF/WCyBZJFHZKA==
993+
dependencies:
994+
"@salesforce/ts-types" "^2.0.1"
995+
tslib "^2.5.2"
996+
968997
"@salesforce/prettier-config@^0.0.2":
969998
version "0.0.2"
970999
resolved "https://registry.yarnpkg.com/@salesforce/prettier-config/-/prettier-config-0.0.2.tgz#ded39bf7cb75238edc9db6dd093649111350f8bc"
@@ -975,25 +1004,25 @@
9751004
resolved "https://registry.yarnpkg.com/@salesforce/schemas/-/schemas-1.5.1.tgz#2d1bfdcf593caaa04cd4b3e6fe621097ff7f28fe"
9761005
integrity sha512-MRqU+tn8w5IFvZ0Lm9YKLgxYxr2MQMI+fXXsTrwfUnijsps+ybF9IOTu6MOMxxl2vCUkO8XDjA435wXlWSLI6g==
9771006

978-
"@salesforce/source-deploy-retrieve@^8.5.1":
979-
version "8.5.1"
980-
resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-8.5.1.tgz#f66f590348857aa51e11fdb69dbd9fcf1d2fba93"
981-
integrity sha512-bdbyLlpILlGiNzsqrZjOEu3rtp3pqQyPzixL2CA9UebKGytG6zT3J6+/0Br1jAVefbl62KW6dgwurAVL7bp6+w==
1007+
"@salesforce/source-deploy-retrieve@^9.1.0":
1008+
version "9.1.0"
1009+
resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-9.1.0.tgz#61cc4dbde890a8160409e748c4ac59e6f698930d"
1010+
integrity sha512-ZD5dIZPwPGqP+N/HvQLieV4QhzXZw5dvvhA6Vpgdbt7SpFjjncYnvaOLh6+GdnIKMcA/jWpEXym51vwj6jZb1A==
9821011
dependencies:
983-
"@salesforce/core" "^3.36.1"
984-
"@salesforce/kit" "^1.9.2"
985-
"@salesforce/ts-types" "^1.7.2"
986-
archiver "^5.3.1"
1012+
"@salesforce/core" "^4.0.1"
1013+
"@salesforce/kit" "^3.0.1"
1014+
"@salesforce/ts-types" "^2.0.2"
9871015
fast-levenshtein "^3.0.0"
9881016
fast-xml-parser "^4.2.2"
9891017
got "^11.8.6"
9901018
graceful-fs "^4.2.11"
9911019
ignore "^5.2.4"
1020+
jszip "^3.10.1"
9921021
mime "2.6.0"
9931022
minimatch "^5.1.6"
9941023
proxy-agent "^5.0.0"
9951024
proxy-from-env "^1.1.0"
996-
unzipper "0.10.11"
1025+
unzipper "0.10.14"
9971026

9981027
"@salesforce/ts-sinon@^1.4.6":
9991028
version "1.4.6"
@@ -1011,6 +1040,13 @@
10111040
dependencies:
10121041
tslib "^2.5.0"
10131042

1043+
"@salesforce/ts-types@^2.0.1", "@salesforce/ts-types@^2.0.2":
1044+
version "2.0.2"
1045+
resolved "https://registry.yarnpkg.com/@salesforce/ts-types/-/ts-types-2.0.2.tgz#44c2ab3a765b57a9a285f2be31a661ac5b373ac3"
1046+
integrity sha512-FxQnTtdn9mcnGpc6qxQbpP+0CnDY1OcMNM+QL+TgC5uSyxnzo6vBrK7OenrK9jdgfvJZAKH1PjeAj2QahbpBwQ==
1047+
dependencies:
1048+
tslib "^2.5.2"
1049+
10141050
"@sindresorhus/is@^4.0.0":
10151051
version "4.6.0"
10161052
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
@@ -1588,7 +1624,7 @@ archiver-utils@^2.1.0:
15881624
normalize-path "^3.0.0"
15891625
readable-stream "^2.0.0"
15901626

1591-
archiver@^5.2.0, archiver@^5.3.0, archiver@^5.3.1:
1627+
archiver@^5.2.0, archiver@^5.3.0:
15921628
version "5.3.1"
15931629
resolved "https://registry.yarnpkg.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6"
15941630
integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==
@@ -4036,6 +4072,11 @@ ignore@^5.1.4, ignore@^5.2.0, ignore@^5.2.4:
40364072
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
40374073
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
40384074

4075+
immediate@~3.0.5:
4076+
version "3.0.6"
4077+
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
4078+
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
4079+
40394080
import-fresh@^3.0.0, import-fresh@^3.2.1:
40404081
version "3.3.0"
40414082
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -4559,10 +4600,10 @@ jsesc@^2.5.1:
45594600
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
45604601
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
45614602

4562-
jsforce@^2.0.0-beta.21:
4563-
version "2.0.0-beta.21"
4564-
resolved "https://registry.yarnpkg.com/jsforce/-/jsforce-2.0.0-beta.21.tgz#04c94d762d2536bf1af3062d5cca206656f5b12b"
4565-
integrity sha512-74GUF/96vYBNZo3SUccXtt4CmfvZ0iqTSc0Z3OB940Ec7oU6coOAGhlCZ+XprXaHOMMhXMXrZQ1PCd16yjIA7A==
4603+
jsforce@^2.0.0-beta.21, jsforce@^2.0.0-beta.23:
4604+
version "2.0.0-beta.23"
4605+
resolved "https://registry.yarnpkg.com/jsforce/-/jsforce-2.0.0-beta.23.tgz#5eeb1a2635498ee77f0726ababe089cc12113551"
4606+
integrity sha512-lfeLHbCJ40ela1JPu4VqgK1GtIzR0NQOMZ/Rxesv9Ty3PyxK18o01AQ4E+JqGAWDDQhwyUp2A/9V+uOqU3w7Rw==
45664607
dependencies:
45674608
"@babel/runtime" "^7.12.5"
45684609
"@babel/runtime-corejs3" "^7.12.5"
@@ -4668,6 +4709,16 @@ jsonwebtoken@9.0.0:
46684709
ms "^2.1.1"
46694710
semver "^7.3.8"
46704711

4712+
jszip@^3.10.1:
4713+
version "3.10.1"
4714+
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2"
4715+
integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==
4716+
dependencies:
4717+
lie "~3.3.0"
4718+
pako "~1.0.2"
4719+
readable-stream "~2.3.6"
4720+
setimmediate "^1.0.5"
4721+
46714722
just-diff-apply@^5.2.0:
46724723
version "5.5.0"
46734724
resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f"
@@ -4735,6 +4786,13 @@ levn@~0.3.0:
47354786
prelude-ls "~1.1.2"
47364787
type-check "~0.3.2"
47374788

4789+
lie@~3.3.0:
4790+
version "3.3.0"
4791+
resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
4792+
integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
4793+
dependencies:
4794+
immediate "~3.0.5"
4795+
47384796
lines-and-columns@^1.1.6:
47394797
version "1.2.4"
47404798
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
@@ -5890,7 +5948,7 @@ pad-component@0.0.1:
58905948
resolved "https://registry.yarnpkg.com/pad-component/-/pad-component-0.0.1.tgz#ad1f22ce1bf0fdc0d6ddd908af17f351a404b8ac"
58915949
integrity sha512-8EKVBxCRSvLnsX1p2LlSFSH3c2/wuhY9/BXXWu8boL78FbVKqn2L5SpURt1x5iw6Gq8PTqJ7MdPoe5nCtX3I+g==
58925950

5893-
pako@^1.0.10:
5951+
pako@^1.0.10, pako@~1.0.2:
58945952
version "1.0.11"
58955953
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
58965954
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
@@ -6583,7 +6641,7 @@ set-blocking@^2.0.0:
65836641
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
65846642
integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
65856643

6586-
setimmediate@~1.0.4:
6644+
setimmediate@^1.0.5, setimmediate@~1.0.4:
65876645
version "1.0.5"
65886646
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
65896647
integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
@@ -7244,10 +7302,10 @@ tslib@^1.8.1, tslib@^1.9.0:
72447302
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
72457303
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
72467304

7247-
tslib@^2, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.5.0:
7248-
version "2.5.0"
7249-
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
7250-
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
7305+
tslib@^2, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.5.0, tslib@^2.5.2:
7306+
version "2.5.2"
7307+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338"
7308+
integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==
72517309

72527310
tsutils@^3.21.0:
72537311
version "3.21.0"
@@ -7416,10 +7474,10 @@ untildify@^4.0.0:
74167474
resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
74177475
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
74187476

7419-
unzipper@0.10.11:
7420-
version "0.10.11"
7421-
resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e"
7422-
integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==
7477+
unzipper@0.10.14:
7478+
version "0.10.14"
7479+
resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.14.tgz#d2b33c977714da0fbc0f82774ad35470a7c962b1"
7480+
integrity sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==
74237481
dependencies:
74247482
big-integer "^1.6.17"
74257483
binary "~0.3.0"

0 commit comments

Comments
 (0)