Skip to content

Commit 5ae94f9

Browse files
authored
feat: add deploy-options.json to .gitignore when functions exist (#131)
* feat: add deploy-options.json to .gitignore when functions exist * fix: use fs from sfdx-core
1 parent fd16279 commit 5ae94f9

File tree

4 files changed

+134
-91
lines changed

4 files changed

+134
-91
lines changed

bin/dev

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
#!/usr/bin/env node
22

3-
process.env.NODE_ENV = 'development';
4-
5-
const g = (global.oclif = global.oclif || {});
3+
const oclif = require('@oclif/core');
64

75
const path = require('path');
86
const project = path.join(__dirname, '..', 'tsconfig.json');
97

10-
// In dev mode, always show stack traces
11-
global.oclif.debug = true;
8+
// In dev mode -> use ts-node and dev plugins
9+
process.env.NODE_ENV = 'development';
1210

1311
require('ts-node').register({ project });
1412

15-
require('@oclif/core').run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle'));
13+
// In dev mode, always show stack traces
14+
const g = (global.oclif = global.oclif || {});
15+
16+
// In dev mode, always show stack traces
17+
global.oclif.debug = true;
18+
19+
// Start the CLI
20+
oclif.run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle'));

package.json

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
"description": "deploy and retrieve commands for sf",
44
"version": "0.0.19",
55
"author": "Salesforce",
6-
"bugs": "https://github.com/forcedotcom/cli/issues",
6+
"bugs": "https://github.com/salesforcecli/cli/issues",
77
"dependencies": {
88
"@oclif/core": "^0.5.34",
9-
"@salesforce/core": "3.4.2",
10-
"@salesforce/sf-plugins-core": "^0.0.13",
9+
"@salesforce/core": "3.4.5",
10+
"@salesforce/sf-plugins-core": "^0.0.15",
11+
"shelljs": "^0.8.4",
1112
"tslib": "^2"
1213
},
1314
"devDependencies": {
@@ -16,10 +17,11 @@
1617
"@salesforce/dev-config": "^2.1.2",
1718
"@salesforce/dev-scripts": "^0.9.18",
1819
"@salesforce/plugin-command-reference": "^1.3.5",
19-
"@salesforce/plugin-deploy-retrieve-metadata": "^0.0.23",
20-
"@salesforce/plugin-functions": "^0.2.29",
20+
"@salesforce/plugin-deploy-retrieve-metadata": "^0.0.28",
21+
"@salesforce/plugin-functions": "^0.2.32",
2122
"@salesforce/prettier-config": "^0.0.2",
2223
"@salesforce/ts-sinon": "1.3.18",
24+
"@types/shelljs": "^0.8.9",
2325
"@typescript-eslint/eslint-plugin": "^4.2.0",
2426
"@typescript-eslint/parser": "^4.2.0",
2527
"chai": "^4.2.0",

src/commands/deploy.ts

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
66
*/
77

8+
import { EOL } from 'os';
89
import { Command, Flags } from '@oclif/core';
910
import { fs, Messages } from '@salesforce/core';
1011
import { Env } from '@salesforce/kit';
1112
import { Deployable, Deployer, generateTableChoices, Prompter, SfHook } from '@salesforce/sf-plugins-core';
13+
import { exec } from 'shelljs';
1214

1315
Messages.importMessagesDirectory(__dirname);
1416

@@ -56,16 +58,20 @@ export default class Deploy extends Command {
5658
this.log('Nothing was selected to deploy.');
5759
}
5860

59-
const deployOptions: Deployer.Options = {};
61+
const deployOptions: Record<string, Deployer.Options> = {};
6062
for (const deployer of deployers) {
6163
const opts = options[deployer.getName()] ?? {};
6264
deployOptions[deployer.getName()] = await deployer.setup(flags, opts);
6365
}
6466

6567
if (flags.interactive && (await this.askToSave())) {
66-
await fs.writeJson(DEPLOY_OPTIONS_FILE, deployOptions, { space: 2 });
68+
await fs.writeJson(DEPLOY_OPTIONS_FILE, deployOptions);
6769
this.log();
6870
this.log(`Your deploy options have been saved to ${DEPLOY_OPTIONS_FILE}`);
71+
if (await this.shouldCommit()) {
72+
await this.commit();
73+
this.log(`We added ${DEPLOY_OPTIONS_FILE} to the .gitignore for you.`);
74+
}
6975
}
7076

7177
for (const deployer of deployers) {
@@ -86,12 +92,26 @@ export default class Deploy extends Command {
8692

8793
public async readOptions(): Promise<Record<string, Deployer.Options>> {
8894
if (await fs.fileExists(DEPLOY_OPTIONS_FILE)) {
89-
return (await fs.readJson(DEPLOY_OPTIONS_FILE)) as Record<string, Deployer.Options>;
95+
return fs.readJsonMap<Record<string, Deployer.Options>>(DEPLOY_OPTIONS_FILE);
9096
} else {
9197
return {};
9298
}
9399
}
94100

101+
public async commit(): Promise<void> {
102+
const gitignore = await fs.readFile('.gitignore', 'utf-8');
103+
if (!gitignore.includes(DEPLOY_OPTIONS_FILE)) {
104+
const addition = `${EOL}${EOL}# Deploy Options${EOL}${DEPLOY_OPTIONS_FILE}${EOL}`;
105+
await fs.writeFile('.gitignore', `${gitignore}${addition}`);
106+
}
107+
exec('git add .gitignore', { silent: true });
108+
exec(`git commit -am "Add ${DEPLOY_OPTIONS_FILE} to .gitignore"`, { silent: true });
109+
}
110+
111+
public async shouldCommit(): Promise<boolean> {
112+
return (await fs.fileExists('.git')) && (await fs.fileExists('functions'));
113+
}
114+
95115
public async askToSave(): Promise<boolean> {
96116
const prompter = new Prompter();
97117
const { save } = await prompter.prompt<{ save: boolean }>({

yarn.lock

Lines changed: 93 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -401,10 +401,10 @@
401401
ajv "^6.12.2"
402402
toml "^3.0.0"
403403

404-
"@heroku/functions-core@0.0.7":
405-
version "0.0.7"
406-
resolved "https://registry.yarnpkg.com/@heroku/functions-core/-/functions-core-0.0.7.tgz#a4bf646171b60f4463a199eb00063cbc9f97bd58"
407-
integrity sha512-030yK2UtF9CakCKOyaX0dMUs6JeyMnofb0cbf7YQpDCjIZRW7j3uPWjmlBNW6k+t2ew5G0FgJw4bQKzb/cTerw==
404+
"@heroku/functions-core@0.1.1":
405+
version "0.1.1"
406+
resolved "https://registry.npmjs.org/@heroku/functions-core/-/functions-core-0.1.1.tgz#a1b1122305f1823265e5db0a4ce5b421a7d44ce4"
407+
integrity sha512-PP+WtTTQzaJNYOvYwyXq/I96GKJVChPBfmiAmmheiyNiF/7uw4XoQvJeFQQH0M2zZVsAkHEWs41lvxVBpjjY2w==
408408
dependencies:
409409
"@heroku-cli/color" "^1.1.14"
410410
"@heroku/project-descriptor" "0.0.5"
@@ -685,29 +685,6 @@
685685
widest-line "^3.1.0"
686686
wrap-ansi "^7.0.0"
687687

688-
"@oclif/core@^0.5.31":
689-
version "0.5.31"
690-
resolved "https://registry.yarnpkg.com/@oclif/core/-/core-0.5.31.tgz#2f2b4d0b0dad4056d65fae4803a429633deb0452"
691-
integrity sha512-VPWOR8RORgVlmuulcx/aft1nBhTjT7YiwCeZB/bAiNgqCQ4YncoeIIPJPJs/A0a0dIeOYACfxlp1Xw7vznpISg==
692-
dependencies:
693-
"@oclif/linewrap" "^1.0.0"
694-
chalk "^4.1.0"
695-
clean-stack "^3.0.0"
696-
cli-ux "^5.1.0"
697-
debug "^4.1.1"
698-
fs-extra "^9.0.1"
699-
get-package-type "^0.1.0"
700-
globby "^11.0.1"
701-
indent-string "^4.0.0"
702-
is-wsl "^2.1.1"
703-
lodash.template "^4.4.0"
704-
semver "^7.3.2"
705-
string-width "^4.2.0"
706-
strip-ansi "^6.0.0"
707-
tslib "^2.0.0"
708-
widest-line "^3.1.0"
709-
wrap-ansi "^7.0.0"
710-
711688
"@oclif/core@^0.5.33", "@oclif/core@^0.5.34":
712689
version "0.5.34"
713690
resolved "https://registry.npmjs.org/@oclif/core/-/core-0.5.34.tgz#d8cadcd609929560e6cc836c45d94bc99379e1f6"
@@ -966,35 +943,57 @@
966943
sfdx-faye "^1.0.9"
967944
ts-retry-promise "^0.6.0"
968945

969-
"@salesforce/core@3.1.1-v3.2":
970-
version "3.1.1-v3.2"
971-
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-3.1.1-v3.2.tgz#75665c66b51564312108238e6c1c20c8d815d339"
972-
integrity sha512-eKWMPEgL85iP/z89rDWktJVdl6YOWO/YE5mxRumHoewog7x9ErAl3FMsTkfROyAQIsalig9VMtz169QLpPawOg==
946+
"@salesforce/core@3.3.1":
947+
version "3.3.1"
948+
resolved "https://registry.npmjs.org/@salesforce/core/-/core-3.3.1.tgz#0e7ea5742fcbc167542d503bbd618d00142ce016"
949+
integrity sha512-UCQ2VYJQthDazGGCaWgQpvpMcgGwaf0NC5d7SL2Qx/Lz9d/C/U7U0OeRBtBrjePodZp/HpEeTnrbGjut+3DaOw==
973950
dependencies:
974951
"@salesforce/bunyan" "^2.0.0"
975952
"@salesforce/kit" "^1.5.8"
976953
"@salesforce/schemas" "^1.0.1"
977954
"@salesforce/ts-types" "^1.5.13"
978-
"@types/graceful-fs" "^4.1.3"
979-
"@types/jsforce" "1.9.23"
980-
"@types/mkdirp" "1.0.0"
955+
"@types/graceful-fs" "^4.1.5"
956+
"@types/jsforce" "^1.9.29"
957+
"@types/mkdirp" "^1.0.1"
981958
debug "^3.1.0"
982959
graceful-fs "^4.2.4"
983960
jsen "0.6.6"
984961
jsforce "^1.10.1"
985962
jsonwebtoken "8.5.0"
986963
mkdirp "1.0.4"
987964
sfdx-faye "^1.0.9"
965+
ts-retry-promise "^0.6.0"
988966

989-
"@salesforce/[email protected].2":
990-
version "3.4.2"
991-
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-3.4.2.tgz#fd7ecc719d40d1ebca4b7665a031bbc06fa0f939"
992-
integrity sha512-7mRiFvwLvEPOqA0hIaevrSGSP9G6y9uf1eJaSl83JVeusnmCFg6KgXlbabcrCJPedl6PX8pUsZS4sClfWVU6Gw==
967+
"@salesforce/[email protected].3":
968+
version "3.4.3"
969+
resolved "https://registry.npmjs.org/@salesforce/core/-/core-3.4.3.tgz#c441aafad51faa784eed643cf98fda6318bca0fe"
970+
integrity sha512-LfD3JctD48efb6J0SqgSEnCZPIQAtRt5HscIebjn8ZhoNztjv3a3T4pmHsknl6KvuUi4ZLvMRYAEx0eKix72vg==
993971
dependencies:
994972
"@salesforce/bunyan" "^2.0.0"
995973
"@salesforce/kit" "^1.5.8"
996974
"@salesforce/schemas" "^1.0.1"
997-
"@salesforce/ts-types" "^1.5.13"
975+
"@salesforce/ts-types" "^1.5.20"
976+
"@types/graceful-fs" "^4.1.5"
977+
"@types/jsforce" "^1.9.29"
978+
"@types/mkdirp" "^1.0.1"
979+
debug "^3.1.0"
980+
graceful-fs "^4.2.4"
981+
jsen "0.6.6"
982+
jsforce "^1.10.1"
983+
jsonwebtoken "8.5.0"
984+
mkdirp "1.0.4"
985+
sfdx-faye "^1.0.9"
986+
ts-retry-promise "^0.6.0"
987+
988+
"@salesforce/[email protected]":
989+
version "3.4.5"
990+
resolved "https://registry.npmjs.org/@salesforce/core/-/core-3.4.5.tgz#bf19319347e24945e474cedc84ee08e2d8a5c08d"
991+
integrity sha512-84A4PeDNcsE6Gs7Rswp7cbzD7adkQM/hjHt6q7B7R7hnnOXqJnVaKcIFTJAC78i0BsQwV2jG4cC8mZTJsq2wyw==
992+
dependencies:
993+
"@salesforce/bunyan" "^2.0.0"
994+
"@salesforce/kit" "^1.5.8"
995+
"@salesforce/schemas" "^1.0.1"
996+
"@salesforce/ts-types" "^1.5.20"
998997
"@types/graceful-fs" "^4.1.5"
999998
"@types/jsforce" "^1.9.29"
1000999
"@types/mkdirp" "^1.0.1"
@@ -1150,43 +1149,33 @@
11501149
handlebars "^4.7.3"
11511150
tslib "^1"
11521151

1153-
"@salesforce/plugin-deploy-retrieve-metadata@^0.0.23":
1154-
version "0.0.23"
1155-
resolved "https://registry.yarnpkg.com/@salesforce/plugin-deploy-retrieve-metadata/-/plugin-deploy-retrieve-metadata-0.0.23.tgz#0eb64e614543ebce949b9fd4a7ac616d2430fd5a"
1156-
integrity sha512-wsRAk47pv1kXlWGmR0+gJJ71RQtysAzIfnzKUL2O1fpfsTuyb2dqugdWACDZfF4gF6XlTSho8EwJ1P7EAJCkSA==
1152+
"@salesforce/plugin-deploy-retrieve-metadata@^0.0.28":
1153+
version "0.0.28"
1154+
resolved "https://registry.npmjs.org/@salesforce/plugin-deploy-retrieve-metadata/-/plugin-deploy-retrieve-metadata-0.0.28.tgz#1205bb43da4d3cf7ef9bb7fcf72272e08fa05570"
1155+
integrity sha512-chV9YQ+V8GdIKISlKhzMS5XWL0bbLXarfKOTf4eV2ARs2dGchDv0PlVIZZw9PKLnNLwQolz63wxTOoTvGkjDNQ==
11571156
dependencies:
1158-
"@oclif/core" "^0.5.31"
1159-
"@salesforce/core" "3.4.2"
1160-
"@salesforce/plugin-deploy-retrieve-utils" "^0.0.10"
1161-
"@salesforce/source-deploy-retrieve" "^4.1.0"
1157+
"@oclif/core" "^0.5.34"
1158+
"@salesforce/core" "3.4.3"
1159+
"@salesforce/sf-plugins-core" "^0.0.13"
1160+
"@sf/sdr" "npm:@salesforce/source-deploy-retrieve@4.3.2"
11621161
chalk "^4.1.2"
11631162
cli-ux "^5.5.1"
11641163
tslib "^2"
11651164

1166-
"@salesforce/plugin-deploy-retrieve-utils@^0.0.10":
1167-
version "0.0.10"
1168-
resolved "https://registry.yarnpkg.com/@salesforce/plugin-deploy-retrieve-utils/-/plugin-deploy-retrieve-utils-0.0.10.tgz#bac871c38a8338f9e1ba39ec29abd15c608c6d71"
1169-
integrity sha512-nh4x5BUBaRn005xk56Ozh2A1SwyPpNLqyozWjAEVHKBLEuv0bDV56GOpYxfNHuDNMCJ+b5QwfWF4dduDZm4kww==
1170-
dependencies:
1171-
"@salesforce/kit" "^1.5.8"
1172-
"@salesforce/ts-types" "^1.5.13"
1173-
cli-ux "^5.6.2"
1174-
inquirer "^8.1.1"
1175-
1176-
"@salesforce/plugin-functions@^0.2.29":
1177-
version "0.2.29"
1178-
resolved "https://registry.yarnpkg.com/@salesforce/plugin-functions/-/plugin-functions-0.2.29.tgz#6a10cc7764be2a6d17401801be21b1cdf11cd726"
1179-
integrity sha512-JI0jSBf/Oi1V+5lGz/2XPwdFQQW2yrtTedyYWF45u5UeEXh5qQF2d755J2LohbeUD4ZqAJ7R3lARksiDNt/TOg==
1165+
"@salesforce/plugin-functions@^0.2.32":
1166+
version "0.2.32"
1167+
resolved "https://registry.npmjs.org/@salesforce/plugin-functions/-/plugin-functions-0.2.32.tgz#c75712d5b9cf13d6ec24252b5376d25bb986f23d"
1168+
integrity sha512-acvQwZFM+CPXkkQtUCoBljB4eBKr3pnUPB1o8Fc58xthv0Yc+ADVpihbSpJZLckV4N/OlXVJbNz2OyHUFonAoQ==
11801169
dependencies:
11811170
"@heroku-cli/color" "^1.1.14"
11821171
"@heroku-cli/schema" "^1.0.25"
11831172
"@heroku/eventsource" "^1.0.7"
11841173
"@heroku/function-toml" "^0.0.3"
1185-
"@heroku/functions-core" "0.0.7"
1174+
"@heroku/functions-core" "0.1.1"
11861175
"@heroku/project-descriptor" "0.0.5"
11871176
"@oclif/core" "^0.5.17"
11881177
"@oclif/plugin-not-found" "^1.2.4"
1189-
"@salesforce/core" "3.1.1-v3.2"
1178+
"@salesforce/core" "3.3.1"
11901179
"@salesforce/plugin-org" "^1.6.7"
11911180
"@salesforce/plugin-project-utils" "^0.0.6"
11921181
"@salesforce/ts-sinon" "^1.3.18"
@@ -1251,21 +1240,16 @@
12511240
cli-ux "^5.6.2"
12521241
inquirer "^8.1.1"
12531242

1254-
"@salesforce/source-deploy-retrieve@^4.1.0":
1255-
version "4.1.0"
1256-
resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-4.1.0.tgz#b28b8e1c9c810884315c564751e8854c4e1e16d3"
1257-
integrity sha512-dLdCNs8KZl2AlI5nxzqjPFTt/RiOQqlbIFsmsbnY/i0Vk15/Fqyxu1cBU0stV3+NxHYV/ijzz2jRVq87G7+jRg==
1243+
"@salesforce/sf-plugins-core@^0.0.15":
1244+
version "0.0.15"
1245+
resolved "https://registry.npmjs.org/@salesforce/sf-plugins-core/-/sf-plugins-core-0.0.15.tgz#f7458258c14aad6c1819511ae9a9dd1d474b4f6a"
1246+
integrity sha512-k5i2s2mmx7prWZrZUp8FByU9Gdi7AwgpBz0cF+9TpQ8nLdqIyWZez3fNRr79SUTBFE1/sExHtN/wUJX5j5m1tA==
12581247
dependencies:
1259-
"@salesforce/core" "2.25.1"
1260-
"@salesforce/kit" "^1.5.0"
1261-
"@salesforce/ts-types" "^1.4.2"
1262-
archiver "^5.3.0"
1263-
fast-xml-parser "^3.17.4"
1264-
gitignore-parser "0.0.2"
1265-
ignore "^5.1.8"
1266-
mime "2.4.6"
1267-
unzipper "0.10.11"
1268-
xmldom-sfdx-encoding "^0.1.29"
1248+
"@oclif/core" "^0.5.33"
1249+
"@salesforce/kit" "^1.5.8"
1250+
"@salesforce/ts-types" "^1.5.13"
1251+
cli-ux "^5.6.2"
1252+
inquirer "^8.1.1"
12691253

12701254
"@salesforce/templates@^52.0.0":
12711255
version "52.1.0"
@@ -1310,6 +1294,22 @@
13101294
dependencies:
13111295
tslib "^2.2.0"
13121296

1297+
"@sf/sdr@npm:@salesforce/[email protected]":
1298+
version "4.3.2"
1299+
resolved "https://registry.npmjs.org/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-4.3.2.tgz#b4eb01d235a1d2ab16918e5d25df34886654e294"
1300+
integrity sha512-xzLL7/YjMbrAXE3sAr4lbXQDTcFpGLDgnh2k9Bqf+Ns24/xgtm5avg65OlXpeLR1/A+WSAPv3tE9osIiR27yAg==
1301+
dependencies:
1302+
"@salesforce/core" "2.25.1"
1303+
"@salesforce/kit" "^1.5.0"
1304+
"@salesforce/ts-types" "^1.4.2"
1305+
archiver "^5.3.0"
1306+
fast-xml-parser "^3.17.4"
1307+
gitignore-parser "0.0.2"
1308+
ignore "^5.1.8"
1309+
mime "2.4.6"
1310+
unzipper "0.10.11"
1311+
xmldom-sfdx-encoding "^0.1.29"
1312+
13131313
"@sinonjs/commons@^1", "@sinonjs/commons@^1.3.0", "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1", "@sinonjs/commons@^1.8.3":
13141314
version "1.8.3"
13151315
resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d"
@@ -1425,6 +1425,14 @@
14251425
resolved "https://registry.yarnpkg.com/@types/expect/-/expect-1.20.4.tgz#8288e51737bf7e3ab5d7c77bfa695883745264e5"
14261426
integrity sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==
14271427

1428+
"@types/glob@*":
1429+
version "7.1.4"
1430+
resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672"
1431+
integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==
1432+
dependencies:
1433+
"@types/minimatch" "*"
1434+
"@types/node" "*"
1435+
14281436
"@types/glob@^7.1.1":
14291437
version "7.1.3"
14301438
resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
@@ -1518,6 +1526,14 @@
15181526
resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
15191527
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
15201528

1529+
"@types/shelljs@^0.8.9":
1530+
version "0.8.9"
1531+
resolved "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.9.tgz#45dd8501aa9882976ca3610517dac3831c2fbbf4"
1532+
integrity sha512-flVe1dvlrCyQJN/SGrnBxqHG+RzXrVKsmjD8WS/qYHpq5UPjfq7UWFBENP0ZuOl0g6OpAlL6iBoLSvKYUUmyQw==
1533+
dependencies:
1534+
"@types/glob" "*"
1535+
"@types/node" "*"
1536+
15211537
"@types/sinon@*":
15221538
version "9.0.4"
15231539
resolved "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.4.tgz#e934f904606632287a6e7f7ab0ce3f08a0dad4b1"

0 commit comments

Comments
 (0)