From 5773754785ff9bcb8fc42e487ebaf57f576aab96 Mon Sep 17 00:00:00 2001 From: Dotan Simha Date: Wed, 26 Oct 2022 16:27:35 +0900 Subject: [PATCH] Update all Pulumi dependencies to latest and fix deployment `tsconfig.json` (#541) --- .github/workflows/ci.yaml | 22 +++ deployment/index.ts | 2 +- deployment/package.json | 13 +- deployment/tsconfig.json | 6 +- deployment/utils/azure-function.ts | 169 -------------------- deployment/utils/local-endpoint.ts | 8 +- deployment/yarn.lock | 246 ++++++++++++++++------------- 7 files changed, 171 insertions(+), 295 deletions(-) delete mode 100644 deployment/utils/azure-function.ts diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3e8d5f6ff..a50dc3897 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -445,6 +445,28 @@ jobs: if: always() run: cat integration-tests/*.log + pulumi-typecheck: + name: Pulumi Typecheck + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 1 + + - name: Install Node + uses: actions/setup-node@v2 + with: + node-version-file: .node-version + + - name: Install Dependencies + run: yarn --frozen-lockfile + working-directory: deployment + + - name: Typecheck + run: yarn typecheck + working-directory: deployment + integration-tests-ff: name: Integration Tests (with Feature Flags enabled) runs-on: ubuntu-latest diff --git a/deployment/index.ts b/deployment/index.ts index fe8130ff3..e95cef1a5 100644 --- a/deployment/index.ts +++ b/deployment/index.ts @@ -53,7 +53,7 @@ const storageAccount = new azure.storage.Account(`hive${envName}`, { accountReplicationType: 'LRS', accountTier: 'Standard', accountKind: 'StorageV2', - allowBlobPublicAccess: true, + publicNetworkAccessEnabled: true, }); const storageContainer = new azure.storage.Container('deploy-artifacts', { diff --git a/deployment/package.json b/deployment/package.json index 71cca8270..65a7d467a 100644 --- a/deployment/package.json +++ b/deployment/package.json @@ -1,21 +1,20 @@ { "name": "@hive/deployment", "scripts": { - "test": "jest" + "typecheck": "tsc --noEmit" }, "devDependencies": { "@types/mime-types": "2.1.1", - "@types/node": "17.0.17", - "typescript": "4.7.4" + "@types/node": "18.11.5", + "typescript": "4.8.4" }, "dependencies": { "@manypkg/get-packages": "1.1.3", - "@pulumi/azure": "4.37.0", - "@pulumi/azure-native": "1.56.0", + "@pulumi/azure": "5.23.0", "@pulumi/cloudflare": "4.12.1", - "@pulumi/kubernetes": "3.19.0", + "@pulumi/kubernetes": "3.22.0", "@pulumi/kubernetesx": "0.1.6", - "@pulumi/pulumi": "3.43.1", + "@pulumi/pulumi": "3.44.1", "@pulumi/random": "4.8.2", "pg-connection-string": "2.5.0" } diff --git a/deployment/tsconfig.json b/deployment/tsconfig.json index 9469ac567..6307e0856 100644 --- a/deployment/tsconfig.json +++ b/deployment/tsconfig.json @@ -5,12 +5,14 @@ "target": "es2016", "module": "commonjs", "moduleResolution": "node", + "typeRoots": ["./node_modules/@types"], "sourceMap": true, "experimentalDecorators": true, "pretty": true, "noFallthroughCasesInSwitch": true, "noImplicitReturns": true, - "forceConsistentCasingInFileNames": true + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true }, - "files": ["index.ts"] + "include": ["types.ts", "index.ts", "utils/*c*/*.ts", "services/**/*.ts"] } diff --git a/deployment/utils/azure-function.ts b/deployment/utils/azure-function.ts deleted file mode 100644 index 29c90ab10..000000000 --- a/deployment/utils/azure-function.ts +++ /dev/null @@ -1,169 +0,0 @@ -import * as pulumi from '@pulumi/pulumi'; -import * as resources from '@pulumi/azure-native/resources'; -import * as storage from '@pulumi/azure-native/storage'; -import * as web from '@pulumi/azure-native/web'; -import { tmpdir } from 'os'; -import { mkdtempSync, copyFileSync, writeFileSync, mkdirSync, readFileSync } from 'fs'; -import { join } from 'path'; -import { createHash } from 'crypto'; - -function createFunctionFolder({ - name, - functionDefinition, - functionFile, -}: { - name: string; - functionDefinition: Record; - functionFile: string; -}) { - const hostDir = mkdtempSync(join(tmpdir(), Math.random().toString(16).slice(2))); - const fnDir = join(hostDir, name); - mkdirSync(fnDir); - - writeFileSync( - join(hostDir, 'host.json'), - JSON.stringify( - { - version: '2.0', - }, - null, - 2 - ) - ); - - copyFileSync(functionFile, join(fnDir, 'index.js')); - writeFileSync(join(fnDir, 'function.json'), JSON.stringify(functionDefinition, null, 2)); - - return { - checksum: createHash('sha256') - .update(readFileSync(functionFile, 'utf-8')) - .update(JSON.stringify(functionDefinition)) - .digest('hex'), - dir: hostDir, - }; -} - -export class AzureFunction { - constructor( - private config: { - name: string; - envName: string; - functionFile: string; - functionDefinition: Record; - env: Record; - } - ) {} - - deployAsJob() { - const resourceGroup = new resources.ResourceGroup(`hive-${this.config.envName}-fn-rg`); - const storageAccount = new storage.StorageAccount(`hive${this.config.envName}fn`, { - resourceGroupName: resourceGroup.name, - sku: { - name: storage.SkuName.Standard_LRS, - }, - kind: storage.Kind.StorageV2, - }); - - const codeContainer = new storage.BlobContainer('functions', { - resourceGroupName: resourceGroup.name, - accountName: storageAccount.name, - }); - - const { dir, checksum } = createFunctionFolder({ - name: this.config.name, - functionDefinition: this.config.functionDefinition, - functionFile: this.config.functionFile, - }); - - const codeBlob = new storage.Blob(this.config.name, { - resourceGroupName: resourceGroup.name, - accountName: storageAccount.name, - containerName: codeContainer.name, - source: new pulumi.asset.FileArchive(dir), - }); - - const plan = new web.AppServicePlan('plan', { - resourceGroupName: resourceGroup.name, - sku: { - name: 'Y1', - tier: 'Dynamic', - }, - }); - - const storageConnectionString = getConnectionString(resourceGroup.name, storageAccount.name); - const codeBlobUrl = signedBlobReadUrl(codeBlob, codeContainer, storageAccount, resourceGroup); - - const app = new web.WebApp( - `${this.config.name}-${this.config.envName}-fn`, - { - resourceGroupName: resourceGroup.name, - serverFarmId: plan.id, - kind: 'functionapp', - siteConfig: { - appSettings: [ - { name: 'AzureWebJobsStorage', value: storageConnectionString }, - { name: 'FUNCTIONS_EXTENSION_VERSION', value: '~3' }, - { name: 'FUNCTIONS_WORKER_RUNTIME', value: 'node' }, - { name: 'WEBSITE_NODE_DEFAULT_VERSION', value: '~16' }, - { name: 'WEBSITE_RUN_FROM_PACKAGE', value: codeBlobUrl }, - { - name: 'FUNCTION_CHECKSUM', - value: checksum, - }, - ...Object.entries(this.config.env).map(([name, value]) => ({ - name, - value, - })), - ], - http20Enabled: true, - nodeVersion: '~16', - }, - }, - { - additionalSecretOutputs: [], - } - ); - - return { - endpoint: pulumi.interpolate`https://${app.defaultHostName}/api/index`, - }; - } -} - -function getConnectionString( - resourceGroupName: pulumi.Input, - accountName: pulumi.Input -): pulumi.Output { - // Retrieve the primary storage account key. - const storageAccountKeys = storage.listStorageAccountKeysOutput({ - resourceGroupName, - accountName, - }); - const primaryStorageKey = storageAccountKeys.keys[0].value; - - // Build the connection string to the storage account. - return pulumi.interpolate`DefaultEndpointsProtocol=https;AccountName=${accountName};AccountKey=${primaryStorageKey}`; -} - -function signedBlobReadUrl( - blob: storage.Blob, - container: storage.BlobContainer, - account: storage.StorageAccount, - resourceGroup: resources.ResourceGroup -): pulumi.Output { - const blobSAS = storage.listStorageAccountServiceSASOutput({ - accountName: account.name, - protocols: storage.HttpProtocol.Https, - sharedAccessExpiryTime: '2030-01-01', - sharedAccessStartTime: '2021-01-01', - resourceGroupName: resourceGroup.name, - resource: storage.SignedResource.C, - permissions: storage.Permissions.R, - canonicalizedResource: pulumi.interpolate`/blob/${account.name}/${container.name}`, - contentType: 'application/json', - cacheControl: 'max-age=5', - contentDisposition: 'inline', - contentEncoding: 'deflate', - }); - return pulumi.interpolate`https://${account.name}.blob.core.windows.net/${container.name}/${blob.name}?${blobSAS.serviceSasToken}`; -} diff --git a/deployment/utils/local-endpoint.ts b/deployment/utils/local-endpoint.ts index 870998e89..effd1f4cf 100644 --- a/deployment/utils/local-endpoint.ts +++ b/deployment/utils/local-endpoint.ts @@ -3,21 +3,21 @@ import * as pulumi from '@pulumi/pulumi'; export function serviceLocalEndpoint(service: k8s.types.input.core.v1.Service) { return pulumi.all([service.metadata, service.spec]).apply(([metadata, spec]) => { - const defaultPort = (spec.ports || [])[0]; + const defaultPort = (spec?.ports || [])[0]; const portText = defaultPort ? `:${defaultPort.port}` : ''; - return `http://${metadata.name}.${metadata.namespace || 'default'}.svc.cluster.local${portText}`; + return `http://${metadata?.name}.${metadata?.namespace || 'default'}.svc.cluster.local${portText}`; }); } export function serviceLocalHost(service: k8s.types.input.core.v1.Service) { return pulumi.all([service.metadata]).apply(([metadata]) => { - return `${metadata.name}.${metadata.namespace || 'default'}.svc.cluster.local`; + return `${metadata?.name}.${metadata?.namespace || 'default'}.svc.cluster.local`; }); } export function serviceLocalMetricsEndpoint(service: k8s.types.input.core.v1.Service) { return pulumi.all([service.metadata]).apply(([metadata]) => { - return `${metadata.name}.${metadata.namespace || 'default'}.svc.cluster.local:10254/metrics`; + return `${metadata?.name}.${metadata?.namespace || 'default'}.svc.cluster.local:10254/metrics`; }); } diff --git a/deployment/yarn.lock b/deployment/yarn.lock index 1de66b914..3dfda5aaf 100644 --- a/deployment/yarn.lock +++ b/deployment/yarn.lock @@ -17,11 +17,83 @@ "@azure/abort-controller" "^1.0.0" tslib "^2.0.0" +"@azure/core-auth@^1.3.0", "@azure/core-auth@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.4.0.tgz#6fa9661c1705857820dbc216df5ba5665ac36a9e" + integrity sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ== + dependencies: + "@azure/abort-controller" "^1.0.0" + tslib "^2.2.0" + +"@azure/core-client@^1.5.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@azure/core-client/-/core-client-1.6.1.tgz#a1aad3f7c69b6e5d9dddb39fabaeba013eac9313" + integrity sha512-mZ1MSKhZBYoV8GAWceA+PEJFWV2VpdNSpxxcj1wjIAOi00ykRuIQChT99xlQGZWLY3/NApWhSImlFwsmCEs4vA== + dependencies: + "@azure/abort-controller" "^1.0.0" + "@azure/core-auth" "^1.4.0" + "@azure/core-rest-pipeline" "^1.9.1" + "@azure/core-tracing" "^1.0.0" + "@azure/core-util" "^1.0.0" + "@azure/logger" "^1.0.0" + tslib "^2.2.0" + +"@azure/core-rest-pipeline@^1.1.0", "@azure/core-rest-pipeline@^1.9.1": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.9.2.tgz#47ee72ca96e2b82e3d1362c29fd7688dc7464527" + integrity sha512-8rXI6ircjenaLp+PkOFpo37tQ1PQfztZkfVj97BIF3RPxHAsoVSgkJtu3IK/bUEWcb7HzXSoyBe06M7ODRkRyw== + dependencies: + "@azure/abort-controller" "^1.0.0" + "@azure/core-auth" "^1.4.0" + "@azure/core-tracing" "^1.0.1" + "@azure/core-util" "^1.0.0" + "@azure/logger" "^1.0.0" + form-data "^4.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + tslib "^2.2.0" + uuid "^8.3.0" + +"@azure/core-tracing@^1.0.0", "@azure/core-tracing@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.1.tgz#352a38cbea438c4a83c86b314f48017d70ba9503" + integrity sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw== + dependencies: + tslib "^2.2.0" + +"@azure/core-util@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.1.1.tgz#8f87b3dd468795df0f0849d9f096c3e7b29452c1" + integrity sha512-A4TBYVQCtHOigFb2ETiiKFDocBoI1Zk2Ui1KpI42aJSIDexF7DHQFpnjonltXAIU/ceH+1fsZAWWgvX6/AKzog== + dependencies: + "@azure/abort-controller" "^1.0.0" + tslib "^2.2.0" + +"@azure/eventgrid@^4.6.0": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@azure/eventgrid/-/eventgrid-4.10.0.tgz#e6dc3f3579da7bf55b61cded35201dbf90ddeea2" + integrity sha512-LKq2Hs8fib8kAe6rCebwISkMfk990it3VsJZWbSVxBxnEchtyabdAqERFRDXPN4yn6joNAeqhhrSxqWkxZwLyg== + dependencies: + "@azure/core-auth" "^1.3.0" + "@azure/core-client" "^1.5.0" + "@azure/core-rest-pipeline" "^1.1.0" + "@azure/core-tracing" "^1.0.0" + "@azure/logger" "^1.0.0" + tslib "^2.2.0" + uuid "^8.3.0" + "@azure/functions@=1.2.2": version "1.2.2" resolved "https://registry.yarnpkg.com/@azure/functions/-/functions-1.2.2.tgz#8fcb6aa3a879d3be0dc3d68919f969b054bbe3f3" integrity sha512-p/dDHq1sG/iAib+eDY4NxskWHoHW1WFzD85s0SfWxc2wVjJbxB0xz/zBF4s7ymjVgTu+0ceipeBk+tmpnt98oA== +"@azure/logger@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.0.3.tgz#6e36704aa51be7d4a1bae24731ea580836293c96" + integrity sha512-aK4s3Xxjrx3daZr3VylxejK3vG5ExXck5WOHDJ8in/k9AqlfIyFMMT1uG7u8mNjX+QRILTIn0/Xgschfh/dQ9g== + dependencies: + tslib "^2.2.0" + "@azure/ms-rest-azure-env@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@azure/ms-rest-azure-env/-/ms-rest-azure-env-2.0.0.tgz#45809f89763a480924e21d3c620cd40866771625" @@ -297,25 +369,18 @@ resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@pulumi/azure-native@1.56.0": - version "1.56.0" - resolved "https://registry.yarnpkg.com/@pulumi/azure-native/-/azure-native-1.56.0.tgz#d72fad1e6358a7b33d69ca586e247bbbaf536bad" - integrity sha512-KXH/ORxEuCtcjJNRNPphzRytHJ4HWppjeeUV09SBm9ySlmKEGkHkMmOSzN22JIfECbXzF4IAYKCP36IAePTBDg== - dependencies: - "@pulumi/pulumi" "^3.0.0" - -"@pulumi/azure@4.37.0": - version "4.37.0" - resolved "https://registry.yarnpkg.com/@pulumi/azure/-/azure-4.37.0.tgz#455ce5707b26e625ac286e4feb3003fa7163686f" - integrity sha512-R3UdFDxKBiKgVGnzlnaE7MbmAt4yxADyw8r5+7y/Ndvf5H0MULXgfY/5/w2/TimvzQGiLpeNu0k5B6pTMdje3w== +"@pulumi/azure@5.23.0": + version "5.23.0" + resolved "https://registry.yarnpkg.com/@pulumi/azure/-/azure-5.23.0.tgz#02759bb5d9e90b6956787be2fb92735ba349d558" + integrity sha512-lCeuIplp3y+5D/FlulN9xloCdd7fkikGQXlpEswwruA/PQl8sfsn7TD/F0qNDA2C79G/YlhKiFdbo81CTOjMDg== dependencies: + "@azure/eventgrid" "^4.6.0" "@azure/functions" "=1.2.2" "@azure/ms-rest-azure-js" "^2.0.1" "@azure/ms-rest-nodeauth" "^3.0.0" "@pulumi/pulumi" "^3.0.0" - azure-eventgrid "^1.6.0" azure-functions-ts-essentials "^1.3.2" - moment "2.24.0" + moment "2.29.4" node-fetch "^2.3.0" "@pulumi/cloudflare@4.12.1": @@ -325,12 +390,12 @@ dependencies: "@pulumi/pulumi" "^3.0.0" -"@pulumi/kubernetes@3.19.0": - version "3.19.0" - resolved "https://registry.yarnpkg.com/@pulumi/kubernetes/-/kubernetes-3.19.0.tgz#1bff768daf2bf7464930103cb0d624b6ce1ae962" - integrity sha512-q592ItkHO0jS+dsZ4+4MlO7mqjAlD0Qvh8a9YGhchiVEZfpgYBk4oYe4PGAFVOOsYH4uR4BNag40gbHIJ7K8qw== +"@pulumi/kubernetes@3.22.0": + version "3.22.0" + resolved "https://registry.yarnpkg.com/@pulumi/kubernetes/-/kubernetes-3.22.0.tgz#a50140dd03afb4750c5e44c4f1e647358078a146" + integrity sha512-+m4yILXE01jfsTrozPLtQ2W629voij52hUWMnghEKTMruQfN9Ez6asFPnmB4PjbdEKV2fx1mHuiz9CGqy76MMg== dependencies: - "@pulumi/pulumi" "^3.0.0" + "@pulumi/pulumi" "^3.25.0" "@types/glob" "^5.0.35" "@types/node-fetch" "^2.1.4" "@types/tmp" "^0.0.33" @@ -344,10 +409,10 @@ resolved "https://registry.npmjs.org/@pulumi/kubernetesx/-/kubernetesx-0.1.6.tgz#61518ae6a7d37c17998561b8d5290546815bad1d" integrity sha512-9VL4Yi4b4aLC/obBarJuNkm86kABByUZICYPSTdV396MGZtOc066o2brsB+kWVQcVfkYVXTPrpjIkAwBXXnzGw== -"@pulumi/pulumi@3.43.1": - version "3.43.1" - resolved "https://registry.yarnpkg.com/@pulumi/pulumi/-/pulumi-3.43.1.tgz#8796065ee73443aa0fc93885a08200e24c8f48c3" - integrity sha512-Dmr7xJXvzMRURLBMCtI0MLy5yQm0THQdPrKF7ShOvVDQMCWNWP3oicDyOtQzAP3ue5YVnQBxjZ5fnUffQdHpMg== +"@pulumi/pulumi@3.44.1", "@pulumi/pulumi@^3.25.0": + version "3.44.1" + resolved "https://registry.yarnpkg.com/@pulumi/pulumi/-/pulumi-3.44.1.tgz#471f91fa3cf4fe181e3522eaab7f6362e674aaf4" + integrity sha512-y/cl6FKGqfcaAwHtVgdGfNh0cvYGluwCZjKHmkc1lZ0ETM+5QnXY9nKhfjw3nAgXoN89Qyqp8kB1mOUudIyxEw== dependencies: "@grpc/grpc-js" "~1.3.8" "@logdna/tail-file" "^2.0.6" @@ -407,6 +472,11 @@ dependencies: "@pulumi/pulumi" "^3.0.0" +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + "@types/events@*": version "3.0.0" resolved "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -449,10 +519,10 @@ resolved "https://registry.npmjs.org/@types/node/-/node-14.14.32.tgz#90c5c4a8d72bbbfe53033f122341343249183448" integrity sha512-/Ctrftx/zp4m8JOujM5ZhwzlWLx22nbQJiVqz8/zE15gOeEW+uly3FSX4fGFpcfEvFzXcMCJwq9lGVWgyARXhg== -"@types/node@17.0.17": - version "17.0.17" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c" - integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw== +"@types/node@18.11.5": + version "18.11.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.5.tgz#1bc94cf2f9ab5fe33353bc7c79c797dcc5325bef" + integrity sha512-3JRwhbjI+cHLAkUorhf8RnqUbFXajvzX4q6fMn5JwkgtuwfYtRQYI3u4V92vI6NJuTsbBQWWh3RZjFsuevyMGQ== "@types/node@^12.7.1": version "12.20.42" @@ -559,13 +629,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -async@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" - integrity sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw== - dependencies: - lodash "^4.14.0" - async@>=0.6.0: version "3.2.0" resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" @@ -586,14 +649,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -azure-eventgrid@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/azure-eventgrid/-/azure-eventgrid-1.6.0.tgz#c9b75bbdb3bb4a57963c329e9301b6129c2fa160" - integrity sha512-MZ84z3NEbRCdqNY0d2C+7PVq6mzNfCw38XLIqRdSNSn6V/rV+HstlgrqvN4vZzxXVhhlzUhYAvl13U5jvvu7LQ== - dependencies: - ms-rest "^2.3.3" - ms-rest-azure "^2.5.5" - azure-functions-ts-essentials@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/azure-functions-ts-essentials/-/azure-functions-ts-essentials-1.3.2.tgz#a0917842ef700125411289e0c5c2f04e0d961d7c" @@ -748,11 +803,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -910,6 +960,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -1090,6 +1149,15 @@ hosted-git-info@^2.1.4: resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -1152,11 +1220,6 @@ is-boolean-object@^1.1.0: dependencies: call-bind "^1.0.0" -is-buffer@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-callable@^1.1.4, is-callable@^1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" @@ -1216,11 +1279,6 @@ is-regex@^1.1.2: call-bind "^1.0.2" has-symbols "^1.0.1" -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - is-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" @@ -1351,11 +1409,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash@^4.14.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - long@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" @@ -1437,41 +1490,10 @@ module-details-from-path@^1.0.3: resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== -moment@2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== - -moment@^2.21.0, moment@^2.22.2: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -ms-rest-azure@^2.5.5: - version "2.6.0" - resolved "https://registry.yarnpkg.com/ms-rest-azure/-/ms-rest-azure-2.6.0.tgz#2098efec529eecfa0c6e215b69143abcaba12140" - integrity sha512-J6386a9krZ4VtU7CRt+Ypgo9RGf8+d3gjMBkH7zbkM4zzkhbbMOYiPRaZ+bHZcfihkKLlktTgA6rjshTjF329A== - dependencies: - adal-node "^0.1.28" - async "2.6.0" - moment "^2.22.2" - ms-rest "^2.3.2" - request "^2.88.0" - uuid "^3.2.1" - -ms-rest@^2.3.2, ms-rest@^2.3.3: - version "2.5.4" - resolved "https://registry.yarnpkg.com/ms-rest/-/ms-rest-2.5.4.tgz#57b42299cf302e45d5e1a734220bf7d4a110167a" - integrity sha512-VeqCbawxRM6nhw0RKNfj7TWL7SL8PB6MypqwgylXCi+u412uvYoyY/kSmO8n06wyd8nIcnTbYToCmSKFMI1mCg== - dependencies: - duplexer "^0.1.1" - is-buffer "^1.1.6" - is-stream "^1.1.0" - moment "^2.21.0" - request "^2.88.0" - through "^2.3.8" - tunnel "0.0.5" - uuid "^3.2.1" +moment@2.29.4: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== ms@2.1.2: version "2.1.2" @@ -1724,7 +1746,7 @@ regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -"request@>= 2.52.0", request@^2.88.0: +"request@>= 2.52.0": version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -1973,11 +1995,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - tmp@^0.0.33: version "0.0.33" resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -2033,6 +2050,11 @@ tslib@^2.0.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tslib@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -2040,11 +2062,6 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.5.tgz#d1532254749ed36620fcd1010865495a1fa9d0ae" - integrity sha512-gj5sdqherx4VZKMcBA4vewER7zdK25Td+z1npBqpbDys4eJrLx+SlYjJvq1bDXs2irkuJM5pf8ktaEQVipkrbA== - tunnel@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" @@ -2055,10 +2072,10 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -typescript@4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== +typescript@4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== typescript@~3.7.3: version "3.7.7" @@ -2114,11 +2131,16 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" -uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2: +uuid@^3.1.0, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"