Move shell scripts into remote-cli
parent
6803240db7
commit
b98c63baf5
|
|
@ -71,7 +71,6 @@ function runMain() {
|
|||
}
|
||||
function runCli() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
options.projectPath = 'test-project';
|
||||
options.versioning = 'None';
|
||||
model_1.Input.cliOptions = options;
|
||||
const buildParameter = yield model_1.BuildParameters.create();
|
||||
|
|
@ -79,11 +78,6 @@ function runCli() {
|
|||
yield model_1.CloudRunner.run(buildParameter, baseImage.toString());
|
||||
});
|
||||
}
|
||||
function runRemoteCli(options) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
yield remote_client_1.RemoteClientCli.RunRemoteClient(options);
|
||||
});
|
||||
}
|
||||
const program = new commander_ts_1.Command();
|
||||
program.version('0.0.1');
|
||||
const properties = Object.getOwnPropertyNames(model_1.Input);
|
||||
|
|
@ -98,7 +92,6 @@ core.info(`\r\n`);
|
|||
program.option('-m, --mode <mode>', 'cli or default');
|
||||
program.parse(process.argv);
|
||||
const options = program.opts();
|
||||
process.env.AWS_REGION = options.region;
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(`Entrypoint: ${options.mode}`);
|
||||
model_1.Input.githubEnabled = false;
|
||||
|
|
@ -107,7 +100,7 @@ switch (options.mode) {
|
|||
runCli();
|
||||
break;
|
||||
case 'remote-cli':
|
||||
runRemoteCli(options);
|
||||
remote_client_1.RemoteClientCli.RunRemoteClient(options);
|
||||
break;
|
||||
default:
|
||||
model_1.Input.githubEnabled = true;
|
||||
|
|
@ -531,6 +524,7 @@ const aws_build_runner_1 = __importDefault(__webpack_require__(29102));
|
|||
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
||||
const aws_job_stack_1 = __webpack_require__(85819);
|
||||
const aws_base_stack_1 = __webpack_require__(28730);
|
||||
const __1 = __webpack_require__(41359);
|
||||
class AWSBuildEnvironment {
|
||||
constructor(buildParameters) {
|
||||
this.baseStackName = buildParameters.awsBaseStackName;
|
||||
|
|
@ -559,6 +553,7 @@ class AWSBuildEnvironment {
|
|||
}
|
||||
runBuildTask(buildId, image, commands, mountdir, workingdir, environment, secrets) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
process.env.AWS_REGION = __1.Input.region;
|
||||
const ECS = new SDK.ECS();
|
||||
const CF = new SDK.CloudFormation();
|
||||
cloud_runner_logger_1.default.log(`AWS Region: ${CF.config.region}`);
|
||||
|
|
@ -2007,31 +2002,27 @@ class DownloadRepository {
|
|||
return __awaiter(this, void 0, void 0, function* () {
|
||||
yield new Promise((promise) => {
|
||||
exec(`
|
||||
tree -f -L 2tree -f -L 2
|
||||
echo "test"
|
||||
mkdir -p ${cloud_runner_state_1.CloudRunnerState.buildPathFull}
|
||||
mkdir -p ${cloud_runner_state_1.CloudRunnerState.repoPathFull}
|
||||
echo ' '
|
||||
echo 'Initializing source repository for cloning with caching of LFS files'
|
||||
repoPathFull=${cloud_runner_state_1.CloudRunnerState.repoPathFull}
|
||||
cloneUrl=${cloud_runner_state_1.CloudRunnerState.targetBuildRepoUrl}
|
||||
|
||||
githubSha=$GITHUB_SHA
|
||||
|
||||
cd $repoPathFull
|
||||
|
||||
cd ${cloud_runner_state_1.CloudRunnerState.repoPathFull}
|
||||
# stop annoying git detatched head info
|
||||
git config --global advice.detachedHead false
|
||||
|
||||
echo ' '
|
||||
echo "Cloning the repository being built:"
|
||||
git lfs install --skip-smudge
|
||||
git clone $cloneUrl $repoPathFull
|
||||
echo "${cloud_runner_state_1.CloudRunnerState.targetBuildRepoUrl}"
|
||||
git clone ${cloud_runner_state_1.CloudRunnerState.targetBuildRepoUrl} ${cloud_runner_state_1.CloudRunnerState.repoPathFull}
|
||||
git checkout $githubSha
|
||||
echo "Checked out $githubSha"
|
||||
|
||||
git lfs ls-files -l | cut -d ' ' -f1 | sort > .lfs-assets-guid
|
||||
md5sum .lfs-assets-guid > .lfs-assets-guid-sum
|
||||
export LFS_ASSETS_HASH="$(cat $repoPathFull/.lfs-assets-guid)"
|
||||
export LFS_ASSETS_HASH="$(cat ${cloud_runner_state_1.CloudRunnerState.repoPathFull}/.lfs-assets-guid)"
|
||||
|
||||
echo ' '
|
||||
echo 'Contents of .lfs-assets-guid file:'
|
||||
|
|
@ -2177,7 +2168,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
exports.CloudRunnerState = void 0;
|
||||
const image_environment_factory_1 = __importDefault(__webpack_require__(25145));
|
||||
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
|
||||
const cloud_runner_namespace_1 = __importDefault(__webpack_require__(63287));
|
||||
class CloudRunnerState {
|
||||
static setup(buildParameters) {
|
||||
|
|
@ -2290,9 +2280,7 @@ class CloudRunnerState {
|
|||
return `${CloudRunnerState.builderPathFull}/dist/cloud-runner/handleCaching.sh "${CloudRunnerState.cacheFolderFull}" "${CloudRunnerState.libraryFolderFull}" "${CloudRunnerState.lfsDirectory}" "${CloudRunnerState.purgeRemoteCaching}"`;
|
||||
}
|
||||
static get cloneBuilderCommand() {
|
||||
const cloneCommand = `git clone -b ${CloudRunnerState.branchName} ${CloudRunnerState.unityBuilderRepoUrl} ${CloudRunnerState.builderPathFull}`;
|
||||
cloud_runner_logger_1.default.log(cloneCommand);
|
||||
return cloneCommand;
|
||||
return `git clone -b ${CloudRunnerState.branchName} ${CloudRunnerState.unityBuilderRepoUrl} ${CloudRunnerState.builderPathFull}`;
|
||||
}
|
||||
static get runNumber() {
|
||||
const runNumber = CloudRunnerState.buildParams.runNumber;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -34,16 +34,12 @@ async function runMain() {
|
|||
}
|
||||
}
|
||||
async function runCli() {
|
||||
options.projectPath = 'test-project';
|
||||
options.versioning = 'None';
|
||||
Input.cliOptions = options;
|
||||
const buildParameter = await BuildParameters.create();
|
||||
const baseImage = new ImageTag(buildParameter);
|
||||
await CloudRunner.run(buildParameter, baseImage.toString());
|
||||
}
|
||||
async function runRemoteCli(options) {
|
||||
await RemoteClientCli.RunRemoteClient(options);
|
||||
}
|
||||
|
||||
const program = new Command();
|
||||
program.version('0.0.1');
|
||||
|
|
@ -60,8 +56,6 @@ program.parse(process.argv);
|
|||
|
||||
const options = program.opts();
|
||||
|
||||
process.env.AWS_REGION = options.region;
|
||||
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(`Entrypoint: ${options.mode}`);
|
||||
Input.githubEnabled = false;
|
||||
|
|
@ -71,7 +65,7 @@ switch (options.mode) {
|
|||
runCli();
|
||||
break;
|
||||
case 'remote-cli':
|
||||
runRemoteCli(options);
|
||||
RemoteClientCli.RunRemoteClient(options);
|
||||
break;
|
||||
default:
|
||||
Input.githubEnabled = true;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import BuildParameters from '../../build-parameters';
|
|||
import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||
import { AWSJobStack } from './aws-job-stack';
|
||||
import { AWSBaseStack } from './aws-base-stack';
|
||||
import { Input } from '../..';
|
||||
|
||||
class AWSBuildEnvironment implements CloudRunnerProviderInterface {
|
||||
private baseStackName: string;
|
||||
|
|
@ -45,9 +46,9 @@ class AWSBuildEnvironment implements CloudRunnerProviderInterface {
|
|||
environment: CloudRunnerEnvironmentVariable[],
|
||||
secrets: CloudRunnerSecret[],
|
||||
): Promise<void> {
|
||||
process.env.AWS_REGION = Input.region;
|
||||
const ECS = new SDK.ECS();
|
||||
const CF = new SDK.CloudFormation();
|
||||
|
||||
CloudRunnerLogger.log(`AWS Region: ${CF.config.region}`);
|
||||
const entrypoint = ['/bin/sh'];
|
||||
const t0 = Date.now();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
import { BuildParameters, ImageTag } from '..';
|
||||
import CloudRunner from './cloud-runner';
|
||||
import Input from '../input';
|
||||
|
||||
describe('Cloud Runner', () => {
|
||||
it('builds', async () => {
|
||||
Input.cliOptions = {
|
||||
versioning: 'None',
|
||||
projectPath: 'test-project',
|
||||
customBuildSteps: `
|
||||
- name: 'step 1'
|
||||
image: 'alpine'
|
||||
commands: ['printenv']
|
||||
secrets:
|
||||
- name: 'testCustomSecret'
|
||||
value: 'VALUEXXX'
|
||||
`,
|
||||
};
|
||||
Input.githubEnabled = false;
|
||||
const buildParameter = await BuildParameters.create();
|
||||
const baseImage = new ImageTag(buildParameter);
|
||||
await CloudRunner.run(buildParameter, baseImage.toString());
|
||||
}, 500000);
|
||||
});
|
||||
if (process.env.GITHUB_SHA !== undefined) {
|
||||
describe('Cloud Runner Remote', () => {
|
||||
it('builds', async () => {
|
||||
const buildParameter = await BuildParameters.create();
|
||||
const baseImage = new ImageTag(buildParameter);
|
||||
await CloudRunner.run(buildParameter, baseImage.toString());
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
@ -7,31 +7,27 @@ export class DownloadRepository {
|
|||
await new Promise<void>((promise) => {
|
||||
exec(
|
||||
`
|
||||
tree -f -L 2tree -f -L 2
|
||||
echo "test"
|
||||
mkdir -p ${CloudRunnerState.buildPathFull}
|
||||
mkdir -p ${CloudRunnerState.repoPathFull}
|
||||
echo ' '
|
||||
echo 'Initializing source repository for cloning with caching of LFS files'
|
||||
repoPathFull=${CloudRunnerState.repoPathFull}
|
||||
cloneUrl=${CloudRunnerState.targetBuildRepoUrl}
|
||||
|
||||
githubSha=$GITHUB_SHA
|
||||
|
||||
cd $repoPathFull
|
||||
|
||||
cd ${CloudRunnerState.repoPathFull}
|
||||
# stop annoying git detatched head info
|
||||
git config --global advice.detachedHead false
|
||||
|
||||
echo ' '
|
||||
echo "Cloning the repository being built:"
|
||||
git lfs install --skip-smudge
|
||||
git clone $cloneUrl $repoPathFull
|
||||
echo "${CloudRunnerState.targetBuildRepoUrl}"
|
||||
git clone ${CloudRunnerState.targetBuildRepoUrl} ${CloudRunnerState.repoPathFull}
|
||||
git checkout $githubSha
|
||||
echo "Checked out $githubSha"
|
||||
|
||||
git lfs ls-files -l | cut -d ' ' -f1 | sort > .lfs-assets-guid
|
||||
md5sum .lfs-assets-guid > .lfs-assets-guid-sum
|
||||
export LFS_ASSETS_HASH="$(cat $repoPathFull/.lfs-assets-guid)"
|
||||
export LFS_ASSETS_HASH="$(cat ${CloudRunnerState.repoPathFull}/.lfs-assets-guid)"
|
||||
|
||||
echo ' '
|
||||
echo 'Contents of .lfs-assets-guid file:'
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import { BuildParameters } from '../..';
|
||||
import ImageEnvironmentFactory from '../../image-environment-factory';
|
||||
import CloudRunnerEnvironmentVariable from '../services/cloud-runner-environment-variable';
|
||||
import CloudRunnerLogger from '../services/cloud-runner-logger';
|
||||
import CloudRunnerNamespace from '../services/cloud-runner-namespace';
|
||||
import { CloudRunnerProviderInterface } from '../services/cloud-runner-provider-interface';
|
||||
import CloudRunnerSecret from '../services/cloud-runner-secret';
|
||||
|
|
@ -138,9 +137,7 @@ export class CloudRunnerState {
|
|||
}
|
||||
|
||||
public static get cloneBuilderCommand() {
|
||||
const cloneCommand = `git clone -b ${CloudRunnerState.branchName} ${CloudRunnerState.unityBuilderRepoUrl} ${CloudRunnerState.builderPathFull}`;
|
||||
CloudRunnerLogger.log(cloneCommand);
|
||||
return cloneCommand;
|
||||
return `git clone -b ${CloudRunnerState.branchName} ${CloudRunnerState.unityBuilderRepoUrl} ${CloudRunnerState.builderPathFull}`;
|
||||
}
|
||||
|
||||
public static get runNumber() {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
Arguments:
|
||||
C:\Program Files\nodejs\node.exe C:\Program Files (x86)\Yarn\bin\yarn.js
|
||||
C:\Program Files\nodejs\node.exe C:\Program Files (x86)\Yarn\bin\yarn.js install
|
||||
|
||||
PATH:
|
||||
C:\Users\Mark\AppData\Local\Temp\yarn--1631471515116-0.29510230599108156;C:\Users\Mark\Documents\GitHub\unity-builder\node_modules\.bin;C:\Users\Mark\AppData\Local\Yarn\Data\link\node_modules\.bin;C:\Program Files\libexec\lib\node_modules\npm\bin\node-gyp-bin;C:\Program Files\lib\node_modules\npm\bin\node-gyp-bin;C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin;C:\Users\Mark\AppData\Local\cloud-code\installer\google-cloud-sdk\bin;c:\Users\Mark\AppData\Roaming\Code\User\globalStorage\microsoft-isvexptools.powerplatform-vscode\pac\tools;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Git LFS;C:\ProgramData\chocolatey\bin;C:\Program Files\dotnet\;C:\Program Files (x86)\Yarn\bin\;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Amazon\AWSCLIV2\;C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin;C:\Users\Mark\AppData\Local\Microsoft\PowerAppsCLI\;C:\Users\Mark\AppData\Local\Microsoft\WindowsApps;C:\Users\Mark\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Mark\AppData\Local\GitHubDesktop\bin;C:\Users\Mark\.dotnet\tools;C:\Users\Mark\AppData\Local\Yarn\bin;C:\Users\Mark\AppData\Roaming\npm;C:\Program Files (x86)\GitHub CLI\
|
||||
C:\Users\Mark\AppData\Local\cloud-code\installer\google-cloud-sdk\bin;c:\Users\Mark\AppData\Roaming\Code\User\globalStorage\microsoft-isvexptools.powerplatform-vscode\pac\tools;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\Git LFS;C:\ProgramData\chocolatey\bin;C:\Program Files\dotnet\;C:\Program Files (x86)\Yarn\bin\;C:\Program Files\nodejs\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Amazon\AWSCLIV2\;C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin;C:\Program Files\Git\cmd;C:\Users\Mark\scoop\shims;C:\Users\Mark\AppData\Local\Microsoft\PowerAppsCLI\;C:\Users\Mark\AppData\Local\Microsoft\WindowsApps;C:\Users\Mark\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Mark\AppData\Local\GitHubDesktop\bin;C:\Users\Mark\.dotnet\tools;C:\Users\Mark\AppData\Local\Yarn\bin;C:\Users\Mark\AppData\Roaming\npm;C:\Program Files (x86)\GitHub CLI\
|
||||
|
||||
Yarn version:
|
||||
1.22.5
|
||||
|
|
@ -30,7 +30,8 @@ npm manifest:
|
|||
"build": "tsc && ncc build lib --source-map --license licenses.txt",
|
||||
"lint": "prettier --check \"src/**/*.{js,ts}\" && eslint src/**/*.ts",
|
||||
"format": "prettier --write \"src/**/*.{js,ts}\"",
|
||||
"test": "jest"
|
||||
"test": "jest",
|
||||
"cli": "npx ts-node src/index.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.2.6",
|
||||
|
|
@ -40,7 +41,11 @@ npm manifest:
|
|||
"async-wait-until": "^2.0.7",
|
||||
"aws-sdk": "^2.812.0",
|
||||
"base-64": "^1.0.0",
|
||||
"commander": "^8.3.0",
|
||||
"commander-ts": "^0.2.0",
|
||||
"nanoid": "3.1.20",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rxjs": "^7.4.0",
|
||||
"semver": "^7.3.2",
|
||||
"yaml": "^1.10.2"
|
||||
},
|
||||
|
|
@ -1752,11 +1757,28 @@ Lockfile:
|
|||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
commander-ts@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/commander-ts/-/commander-ts-0.2.0.tgz#14391337c1c725399cdfca5717da8e4fd0688eda"
|
||||
integrity sha512-9XaUF3/3nmVtkDmAkijjhgEcwrMwKewaAJtN+GyTJBG3CJ5DfGB/JsXCVZcBW6SZB+QqiJxbK3e2/62tweMO8g==
|
||||
dependencies:
|
||||
commander "^7.2.0"
|
||||
|
||||
commander@^6.2.0:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
|
||||
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
|
||||
|
||||
commander@^7.2.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
|
||||
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
|
||||
|
||||
commander@^8.3.0:
|
||||
version "8.3.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
|
||||
integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
|
||||
|
||||
compare-versions@^3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62"
|
||||
|
|
@ -4704,6 +4726,11 @@ Lockfile:
|
|||
dependencies:
|
||||
resolve "^1.1.6"
|
||||
|
||||
reflect-metadata@^0.1.13:
|
||||
version "0.1.13"
|
||||
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
|
||||
integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==
|
||||
|
||||
regex-not@^1.0.0, regex-not@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
|
||||
|
|
@ -4890,6 +4917,13 @@ Lockfile:
|
|||
dependencies:
|
||||
tslib "^1.9.0"
|
||||
|
||||
rxjs@^7.4.0:
|
||||
version "7.4.0"
|
||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68"
|
||||
integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==
|
||||
dependencies:
|
||||
tslib "~2.1.0"
|
||||
|
||||
safe-buffer@^5.0.1, safe-buffer@^5.1.2:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
|
|
@ -5492,6 +5526,11 @@ Lockfile:
|
|||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
tslib@~2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
|
||||
integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
|
||||
|
||||
tsutils@^3.17.1:
|
||||
version "3.21.0"
|
||||
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
|
||||
|
|
|
|||
Loading…
Reference in New Issue