Skip to content

Commit

Permalink
Merge pull request #25 from salesforcecli/sm/issue-798
Browse files Browse the repository at this point in the history
Sm/issue 798
  • Loading branch information
shetzel authored Feb 3, 2021
2 parents 3b012c7 + caf716e commit b303935
Show file tree
Hide file tree
Showing 6 changed files with 101 additions and 74 deletions.
12 changes: 11 additions & 1 deletion messages/password.generate.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,17 @@
"flags": {
"onBehalfOf": "comma-separated list of usernames or aliases to assign the password to"
},
"noSelfSetError": "Create a scratch org with the enableSetPasswordInApi org security setting set to TRUE and try again.",
"noSelfSetErrorV50": "Create a scratch org with the enableSetPasswordInApi org security setting set to TRUE and try again.",

"noSelfSetError": "Starting in Spring '21, EnableSetPasswordInApi is a feature in your scratch org definition file and not a setting. This change is a result of the field Settings.securitySettings.passwordPolicies.enableSetPasswordInApi being deprecated in version 51.0 of the Metadata API.",
"noSelfSetErrorActions": [
"Update your scratch org definition file and remove enableSetPasswordInApi from the \"securitySettings\" setting. Then add EnableSetPasswordInApi as a feature. For example:",
"",
"\"features\": [\"EnableSetPasswordInApi\"]",
"",
"Then try creating the scratch org again."
],
"scratchFeaturesUrl": "see https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs_def_file_config_values.htm",
"success": "Successfully set the password \"%s\" for user %s.",
"successMultiple": "Successfully set passwords:%s",
"viewWithCommand": "You can see the password again by running \"sfdx force:user:display -u %s\"."
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"dependencies": {
"@oclif/config": "^1.17.0",
"@salesforce/command": "^3.0.4",
"@salesforce/core": "^2.15.2",
"@salesforce/core": "^2.16.4",
"tslib": "^1"
},
"devDependencies": {
Expand Down
44 changes: 30 additions & 14 deletions src/commands/force/user/password/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*/
import * as os from 'os';
import { flags, FlagsConfig, SfdxCommand } from '@salesforce/command';
import { Aliases, AuthInfo, Connection, Messages, Org, SfdxError, User, UserFields } from '@salesforce/core';
import { Aliases, AuthInfo, Connection, Messages, Org, SfdxError, User } from '@salesforce/core';

Messages.importMessagesDirectory(__dirname);
const messages = Messages.loadMessages('@salesforce/plugin-user', 'password.generate');
Expand All @@ -33,36 +33,52 @@ export class UserPasswordGenerateCommand extends SfdxCommand {
private passwordData: PasswordData[] = [];

public async run(): Promise<PasswordData[]> {
if (this.flags.onbehalfof) {
// trim the usernames to avoid whitespace
this.usernames = this.flags.onbehalfof.map((user) => user.trim());
} else {
this.usernames = [this.org.getUsername()];
}
this.usernames = this.flags.onbehalfof ?? [this.org.getUsername()];

for (const username of this.usernames) {
for (const aliasOrUsername of this.usernames) {
try {
// Convert any aliases to usernames
// fetch will return undefined if there's no Alias for that name
const aliasOrUsername = (await Aliases.fetch(username)) || username;
const username = (await Aliases.fetch(aliasOrUsername)) || aliasOrUsername;

const authInfo: AuthInfo = await AuthInfo.create({ username });
const connection: Connection = await Connection.create({ authInfo });
const org = await Org.create({ connection });
const user: User = await User.create({ org });
const password = User.generatePasswordUtf8();
const fields: UserFields = await user.retrieve(username);
// we only need the Id, so instead of User.retrieve we'll just query
// this avoids permission issues if ProfileId is restricted for the user querying for it
const result: { Id: string } = await connection.singleRecordQuery(
`SELECT Id FROM User WHERE Username='${username}'`
);

// userId is used by `assignPassword` so we need to set it here
authInfo.getFields().userId = fields.id;
authInfo.getFields().userId = result.Id;
await user.assignPassword(authInfo, password);

password.value((pass) => {
this.passwordData.push({ username: aliasOrUsername, password: pass.toString('utf-8') });
this.passwordData.push({ username, password: pass.toString('utf-8') });
authInfo.update({ password: pass.toString('utf-8') });
});

await authInfo.save();
} catch (e) {
if (e.message.includes('Cannot set password for self')) {
throw SfdxError.create('@salesforce/plugin-user', 'password.generate', 'noSelfSetError');
if (
e.message.includes('Cannot set password for self') ||
e.message.includes('The requested Resource does not exist')
) {
// we don't have access to the apiVersion from what happened in the try, so until v51 is r2, we have to check versions the hard way
const authInfo: AuthInfo = await AuthInfo.create({ username: aliasOrUsername });
const connection: Connection = await Connection.create({ authInfo });
const org = await Org.create({ connection });
if (parseInt(await org.retrieveMaxApiVersion(), 10) >= 51) {
throw new SfdxError(
messages.getMessage('noSelfSetError'),
'noSelfSetError',
messages.getMessage('noSelfSetErrorActions').split(os.EOL)
);
}
throw new SfdxError(messages.getMessage('noSelfSetErrorV50'), 'noSelfSetError');
}
throw SfdxError.wrap(e);
}
Expand Down
8 changes: 2 additions & 6 deletions src/commands/force/user/permset/assign.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,8 @@ export class UserPermsetAssignCommand extends SfdxCommand {

public async run(): Promise<Result> {
try {
if (this.flags.onbehalfof) {
// trim the usernames to avoid whitespace
this.usernames = this.flags.onbehalfof.map((user) => user.trim());
} else {
this.usernames = [this.org.getUsername()];
}
this.usernames = this.flags.onbehalfof ?? [this.org.getUsername()];

const connection: Connection = this.org.getConnection();
const org = await Org.create({ connection });

Expand Down
9 changes: 7 additions & 2 deletions test/commands/user/password/generate.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ describe('force:user:password:generate', () => {
let authInfoStub: StubbedType<AuthInfo>;
let authInfoConfigStub: StubbedType<AuthInfoConfig>;
const testData = new MockTestOrgData();
let queryStub;

async function prepareStubs(throws = false) {
const authFields = await testData.getConfig();
Expand All @@ -30,9 +31,10 @@ describe('force:user:password:generate', () => {
stubMethod($$.SANDBOX, Connection, 'create').callsFake(async () => Connection.prototype);
stubMethod($$.SANDBOX, Org, 'create').callsFake(async () => Org.prototype);
stubMethod($$.SANDBOX, Org.prototype, 'getUsername').returns('[email protected]');
stubMethod($$.SANDBOX, Org.prototype, 'retrieveMaxApiVersion').returns('51.0');
stubMethod($$.SANDBOX, User, 'create').callsFake(async () => User.prototype);
stubMethod($$.SANDBOX, User.prototype, 'retrieve').resolves({
id: '0052D0000043PawWWR',
queryStub = stubMethod($$.SANDBOX, Connection.prototype, 'singleRecordQuery').resolves({
Id: '0052D0000043PawWWR',
});

const secureBuffer: SecureBuffer<void> = new SecureBuffer<void>();
Expand Down Expand Up @@ -68,6 +70,7 @@ describe('force:user:password:generate', () => {
const result = JSON.parse(ctx.stdout).result;
expect(result).to.deep.equal(expected);
expect(authInfoStub.update.callCount).to.equal(2);
expect(queryStub.callCount).to.equal(2);
});

test
Expand All @@ -79,6 +82,7 @@ describe('force:user:password:generate', () => {
const result = JSON.parse(ctx.stdout).result;
expect(result).to.deep.equal(expected);
expect(authInfoStub.update.callCount).to.equal(1);
expect(queryStub.callCount).to.equal(1);
});

test
Expand All @@ -92,5 +96,6 @@ describe('force:user:password:generate', () => {
expect(result.status).to.equal(1);
expect(result.name).to.equal('noSelfSetError');
expect(authInfoStub.update.callCount).to.equal(0);
expect(queryStub.callCount).to.equal(1);
});
});
100 changes: 50 additions & 50 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -513,25 +513,25 @@
safe-json-stringify "~1"

"@salesforce/command@^3.0.4":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@salesforce/command/-/command-3.0.5.tgz#262665e0845f247005916b2a3ac62e1244b078e4"
integrity sha512-FhQjRALvcqXjVjv/tjPweqyN6bEhVrxV2cyM+gqns5aY5GQy9KMtNI6Sg/D5Mg4Htf89jHgV+iqgndNzGyDX2g==
version "3.1.0"
resolved "https://registry.yarnpkg.com/@salesforce/command/-/command-3.1.0.tgz#98874539aeda69aeb20765dcf7ed02a2945cec45"
integrity sha512-Ggz+P35uJVd2w+R66TGz1Rs4jr6KKmyC3bkpgbJTm+yjaOjy2l/if2hus6fhZ680LUxCucDVXbyEjdzu3B+ioA==
dependencies:
"@oclif/command" "^1.5.17"
"@oclif/errors" "^1.2.2"
"@oclif/parser" "^3.8.3"
"@oclif/plugin-help" "^2.2.0"
"@oclif/test" "^1.2.4"
"@salesforce/core" "^2.15.2"
"@salesforce/core" "^2.16.3"
"@salesforce/kit" "^1.2.2"
"@salesforce/ts-types" "^1.2.0"
chalk "^2.4.2"
cli-ux "^4.9.3"

"@salesforce/core@^2.15.2":
version "2.16.3"
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-2.16.3.tgz#b2a9b0b44774f6a892ecb830b9c71f5e1c71ad0e"
integrity sha512-cZ7xeacEsIq/sjbFqE6ARkt7xgJv3VDNrh/FlK7yhHYH0ka1pkUjMooYse2IJzAdt+ROyrZWsvvMvZsmfFlfoA==
"@salesforce/core@^2.16.3", "@salesforce/core@^2.16.4":
version "2.16.4"
resolved "https://registry.yarnpkg.com/@salesforce/core/-/core-2.16.4.tgz#a8399b6fe8d76431bf22f9555d3ca207ba8dac60"
integrity sha512-92SNi3yLQ2PCr91wopOXpzWejLsp1+ICEEzI65uRK06cset1YeoVnxSPs7C3nQ1qpJqFuWW52PmheKY310lP2Q==
dependencies:
"@salesforce/bunyan" "^2.0.0"
"@salesforce/kit" "^1.3.3"
Expand All @@ -549,9 +549,9 @@
sfdx-faye "^1.0.9"

"@salesforce/dev-config@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@salesforce/dev-config/-/dev-config-2.0.0.tgz#388d71830e63078a835a844b51d2661c73ac851e"
integrity sha512-CwPeiNrH7bULxjr7RmvStR3uPWu3aMl35mQrUNip2pTMvXQ4QmcDowWqx5MSaLj03JIQaoxnt6g8qWlhyOmxUQ==
version "2.1.0"
resolved "https://registry.yarnpkg.com/@salesforce/dev-config/-/dev-config-2.1.0.tgz#78efdf5d660d7cb839d9cafa036f9882741dc6bc"
integrity sha512-I+zrptt8zI1jbP3TVA6g7i3quuh71tPky8gwCsXaQ2X9ea1xbeAslN4YjWfgqbY5SaxJhqP979oxFADlH+OehQ==

"@salesforce/[email protected]":
version "0.6.2"
Expand Down Expand Up @@ -594,11 +594,11 @@
xunit-file "^1.0.0"

"@salesforce/kit@^1.2.2", "@salesforce/kit@^1.3.3":
version "1.3.3"
resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-1.3.3.tgz#eaea23b1be7aebb81f9f091c8f77c2733a8ae710"
integrity sha512-Ed5lh8xyCwaXeB1Sovr9xbQZ1tpQg5vSeNvKROlJQRk4Gj3IBm73pKPPuNn+AeXN51lWr9my0ftLREtyig3FoA==
version "1.4.0"
resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-1.4.0.tgz#4a43a8633f967066895d865813907eea071ef541"
integrity sha512-/6owokpdkljkbM5axJ7xVgn6ggMS1YJgtD8zv2gBAfIHT/EgIMnwkyU6Rymb8QmWp93q/RoHXdgNQkDonWYSqw==
dependencies:
"@salesforce/ts-types" "^1.4.3"
"@salesforce/ts-types" "^1.5.0"
tslib "^1.10.0"

"@salesforce/prettier-config@^0.0.1":
Expand All @@ -620,10 +620,10 @@
sinon "5.1.1"
tslib "^1.10.0"

"@salesforce/ts-types@^1.0.0", "@salesforce/ts-types@^1.2.0", "@salesforce/ts-types@^1.3.0", "@salesforce/ts-types@^1.4.3":
version "1.4.3"
resolved "https://registry.yarnpkg.com/@salesforce/ts-types/-/ts-types-1.4.3.tgz#941ceac6d72a2983ec03d5263b509f25bab574c3"
integrity sha512-Fdx9KEBalwxBFkP0ZW9uIcndjFys9fm8ma9vItd3EwPZLJcAHWfBa5/y9uHLAvYHkKK8F8FYE0sRrVZ1cn48hw==
"@salesforce/ts-types@^1.0.0", "@salesforce/ts-types@^1.2.0", "@salesforce/ts-types@^1.3.0", "@salesforce/ts-types@^1.5.0":
version "1.5.0"
resolved "https://registry.yarnpkg.com/@salesforce/ts-types/-/ts-types-1.5.0.tgz#e2baaca088f30a3f9d10127eb789a12abad44958"
integrity sha512-fJsVXSJ0s8voDNM7TYulPkiRDdR1bC/rE2hsY/+2q0DDa57UAeql34tEdaBs84GGbe/VGCVbiazkLDJW/bX7KQ==
dependencies:
tslib "^1.10.0"

Expand Down Expand Up @@ -665,7 +665,7 @@
array-from "^2.1.1"
lodash "^4.17.15"

"@sinonjs/samsam@^5.3.0":
"@sinonjs/samsam@^5.3.1":
version "5.3.1"
resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-5.3.1.tgz#375a45fe6ed4e92fca2fb920e007c48232a6507f"
integrity sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==
Expand Down Expand Up @@ -1784,9 +1784,9 @@ dayjs-plugin-utc@^0.1.2:
integrity sha512-ExERH5o3oo6jFOdkvMP3gytTCQ9Ksi5PtylclJWghr7k7m3o2U5QrwtdiJkOxLOH4ghr0EKhpqGefzGz1VvVJg==

dayjs@^1.8.16:
version "1.10.3"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.3.tgz#cf3357c8e7f508432826371672ebf376cb7d619b"
integrity sha512-/2fdLN987N8Ki7Id8BUN2nhuiRyxTLumQnSQf9CNncFCyqFsSKb9TNhzRYcC8K8eJSJOKvbvkImo/MKKhNi4iw==
version "1.10.4"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2"
integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==

[email protected]:
version "3.2.6"
Expand Down Expand Up @@ -2131,9 +2131,9 @@ eslint-plugin-jsdoc@^27.0.3:
spdx-expression-parse "^3.0.1"

eslint-plugin-prefer-arrow@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.2.tgz#0c6d25a6b94cb3e0110a23d129760af5860edb6e"
integrity sha512-C8YMhL+r8RMeMdYAw/rQtE6xNdMulj+zGWud/qIGnlmomiPRaLDGLMeskZ3alN6uMBojmooRimtdrXebLN4svQ==
version "1.2.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz#e7fbb3fa4cd84ff1015b9c51ad86550e55041041"
integrity sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==

eslint-plugin-prettier@^3.1.3:
version "3.3.1"
Expand Down Expand Up @@ -2428,9 +2428,9 @@ fast-levenshtein@~2.0.6:
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=

fastq@^1.6.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb"
integrity sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==
version "1.10.1"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e"
integrity sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==
dependencies:
reusify "^1.0.4"

Expand Down Expand Up @@ -2710,9 +2710,9 @@ get-func-name@^2.0.0:
integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=

get-intrinsic@^1.0.1, get-intrinsic@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49"
integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==
version "1.1.0"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.0.tgz#892e62931e6938c8a23ea5aaebcfb67bd97da97e"
integrity sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg==
dependencies:
function-bind "^1.1.1"
has "^1.0.3"
Expand Down Expand Up @@ -2768,12 +2768,12 @@ getpass@^0.1.1:
assert-plus "^1.0.0"

git-raw-commits@^2.0.0:
version "2.0.9"
resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.9.tgz#5cbc707a615cb77b71e687f8a1ee54af46208b22"
integrity sha512-hSpNpxprVno7IOd4PZ93RQ+gNdzPAIrW0x8av6JQDJGV4k1mR9fE01dl8sEqi2P7aKmmwiGUn1BCPuf16Ae0Qw==
version "2.0.10"
resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1"
integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==
dependencies:
dargs "^7.0.0"
lodash.template "^4.0.2"
lodash "^4.17.15"
meow "^8.0.0"
split2 "^3.0.0"
through2 "^4.0.0"
Expand Down Expand Up @@ -3033,9 +3033,9 @@ hosted-git-info@^2.1.4:
integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==

hosted-git-info@^3.0.6:
version "3.0.7"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c"
integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==
version "3.0.8"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d"
integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==
dependencies:
lru-cache "^6.0.0"

Expand Down Expand Up @@ -3913,7 +3913,7 @@ lodash.set@^4.3.2:
resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=

lodash.template@^4.0.2, lodash.template@^4.4.0:
lodash.template@^4.4.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
Expand Down Expand Up @@ -4798,9 +4798,9 @@ path-type@^4.0.0:
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==

pathval@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA=
version "1.1.1"
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==

performance-now@^2.1.0:
version "2.1.0"
Expand Down Expand Up @@ -5456,13 +5456,13 @@ [email protected]:
type-detect "^4.0.8"

sinon@^9.0.2:
version "9.2.3"
resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.2.3.tgz#f68ce414e843e2fd638703043c97f260697caa52"
integrity sha512-m+DyAWvqVHZtjnjX/nuShasykFeiZ+nPuEfD4G3gpvKGkXRhkF/6NSt2qN2FjZhfrcHXFzUzI+NLnk+42fnLEw==
version "9.2.4"
resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.2.4.tgz#e55af4d3b174a4443a8762fa8421c2976683752b"
integrity sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==
dependencies:
"@sinonjs/commons" "^1.8.1"
"@sinonjs/fake-timers" "^6.0.1"
"@sinonjs/samsam" "^5.3.0"
"@sinonjs/samsam" "^5.3.1"
diff "^4.0.2"
nise "^4.0.4"
supports-color "^7.1.0"
Expand Down Expand Up @@ -6047,9 +6047,9 @@ tslib@^2.0.0, tslib@^2.0.3:
integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==

tsutils@^3.17.1:
version "3.19.1"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.19.1.tgz#d8566e0c51c82f32f9c25a4d367cd62409a547a9"
integrity sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw==
version "3.20.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698"
integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==
dependencies:
tslib "^1.8.1"

Expand Down

0 comments on commit b303935

Please sign in to comment.