From 6cfff72c59c47d1dd061eeb5958dee1c5c266a54 Mon Sep 17 00:00:00 2001 From: Paulo Castro Date: Wed, 29 Sep 2021 15:05:41 +0100 Subject: [PATCH 1/4] Fix help output for 'release finalize' command Change-type: patch --- automation/capitanodoc/capitanodoc.ts | 8 +++ doc/cli.markdown | 80 +++++++++++++++++++++++++++ lib/commands/release/finalize.ts | 4 +- 3 files changed, 90 insertions(+), 2 deletions(-) diff --git a/automation/capitanodoc/capitanodoc.ts b/automation/capitanodoc/capitanodoc.ts index ed0e2334..d4b21244 100644 --- a/automation/capitanodoc/capitanodoc.ts +++ b/automation/capitanodoc/capitanodoc.ts @@ -82,6 +82,14 @@ const capitanoDoc = { 'build/commands/device/shutdown.js', ], }, + { + title: 'Releases', + files: [ + 'build/commands/releases.js', + 'build/commands/release/index.js', + 'build/commands/release/finalize.js', + ], + }, { title: 'Environment Variables', files: [ diff --git a/doc/cli.markdown b/doc/cli.markdown index 8ee515c3..9e8380c1 100644 --- a/doc/cli.markdown +++ b/doc/cli.markdown @@ -207,6 +207,12 @@ are encouraged to regularly update the balena CLI to the latest version. - [device rm <uuid(s)>](#device-rm-uuid-s) - [device shutdown <uuid>](#device-shutdown-uuid) +- Releases + + - [releases <fleet>](#releases-fleet) + - [release <commitorid>](#release-commitorid) + - [release finalize <commitorid>](#release-finalize-commitorid) + - Environment Variables - [envs](#envs) @@ -1294,6 +1300,80 @@ the uuid of the device to shutdown force action if the update lock is set +# Releases + +## releases <fleet> + +List all releases of the given fleet. + +Fleets may be specified by fleet name or slug. Slugs are recommended because +they are unique and unambiguous. Slugs can be listed with the `balena fleets` +command. Note that slugs may change if the fleet is renamed. Fleet names are +not unique and may result in "Fleet is ambiguous" errors at any time (even if +"it used to work in the past"), for example if the name clashes with a newly +created public/open fleet, or with fleets from other balena accounts that you +may be invited to join under any role. For this reason, fleet names are +especially discouraged in scripts (e.g. CI environments). + +Examples: + + $ balena releases myorg/myfleet + +### Arguments + +#### FLEET + +fleet name or slug + +### Options + +## release <commitOrId> + + + +Examples: + + $ balena release a777f7345fe3d655c1c981aa642e5555 + $ balena release 1234567 + +### Arguments + +#### COMMITORID + +the commit or ID of the release to get information + +### Options + +#### -c, --composition + +Return the release composition + +## release finalize <commitOrId> + +Finalize a release. Releases can be "draft" or "final", and this command +changes a draft release into a final release. Draft releases can be created +with the `--draft` option of the `balena build` or `balena deploy` +commands. + +Draft releases are not automatically deployed to devices tracking the latest +release. For a draft release to be deployed to a device, the device should be +explicity pinned to that release. Conversely, final releases may trigger immediate +deployment to unpinned devices (subject to a device's polling period) and, for +this reason, final releases cannot be changed back to draft status. + +Examples: + + $ balena release finalize a777f7345fe3d655c1c981aa642e5555 + $ balena release finalize 1234567 + +### Arguments + +#### COMMITORID + +the commit or ID of the release to finalize + +### Options + # Environment Variables ## envs diff --git a/lib/commands/release/finalize.ts b/lib/commands/release/finalize.ts index 53c09846..6cd09f7d 100644 --- a/lib/commands/release/finalize.ts +++ b/lib/commands/release/finalize.ts @@ -38,7 +38,7 @@ export default class ReleaseFinalizeCmd extends Command { with the \`--draft\` option of the \`balena build\` or \`balena deploy\` commands. - Draft releases are not automatically deployed to devices tracking the latest application + Draft releases are not automatically deployed to devices tracking the latest release. For a draft release to be deployed to a device, the device should be explicity pinned to that release. Conversely, final releases may trigger immediate deployment to unpinned devices (subject to a device's polling period) and, for @@ -49,7 +49,7 @@ export default class ReleaseFinalizeCmd extends Command { '$ balena release finalize 1234567', ]; - public static usage = 'finalize '; + public static usage = 'release finalize '; public static flags: flags.Input = { help: cf.help, From be306e6a207b984d01a843c6cb8eb418ffb0dbf9 Mon Sep 17 00:00:00 2001 From: Paulo Castro Date: Wed, 29 Sep 2021 16:33:56 +0100 Subject: [PATCH 2/4] Avoid NockMock warnings during standalone executable testing Change-type: patch --- lib/app.ts | 2 +- lib/deprecation.ts | 15 ++------------- tests/config-tests.ts | 4 ++-- tests/deprecation.spec.ts | 12 +++++++++--- 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/lib/app.ts b/lib/app.ts index 1c3c80f1..d058a7cf 100644 --- a/lib/app.ts +++ b/lib/app.ts @@ -97,7 +97,7 @@ async function init() { async function oclifRun(command: string[], options: AppOptions) { let deprecationPromise: Promise; // check and enforce the CLI's deprecation policy - if (unsupportedFlag) { + if (unsupportedFlag || process.env.BALENARC_UNSUPPORTED) { deprecationPromise = Promise.resolve(); } else { const { DeprecationChecker } = await import('./deprecation'); diff --git a/lib/deprecation.ts b/lib/deprecation.ts index 8a3d8bb7..183ee233 100644 --- a/lib/deprecation.ts +++ b/lib/deprecation.ts @@ -38,7 +38,6 @@ export interface ReleaseTimestampsByVersion { * https://jel.ly.fish/ed8d2395-9323-418c-bb67-d11d32a17d00 */ export class DeprecationChecker { - protected static disabled = false; // for the benefit of testing readonly majorVersionFetchIntervalDays = 7; readonly expiryDays = 365; readonly deprecationDays = Math.ceil(this.expiryDays / 2); @@ -131,7 +130,7 @@ or release date not available`); * `majorVersionFetchIntervalDays`. */ public async checkForNewReleasesIfNeeded() { - if (DeprecationChecker.disabled) { + if (process.env.BALENARC_UNSUPPORTED) { return; // for the benefit of code testing } await this.init(); @@ -182,7 +181,7 @@ or release date not available`); * in which case warn about it and conditionally throw an error. */ public async warnAndAbortIfDeprecated() { - if (DeprecationChecker.disabled) { + if (process.env.BALENARC_UNSUPPORTED) { return; // for the benefit of code testing } await this.init(); @@ -228,14 +227,4 @@ continue using this version of the CLI. However, note that the balenaCloud or openBalena backends may be updated in a way that is no longer compatible with this CLI version.`; } - - /** Disable deprecation checks (for the benefit of code testing). */ - public static disable() { - DeprecationChecker.disabled = true; - } - - /** Re-enable deprecation checks (for the benefit of code testing). */ - public static enable() { - DeprecationChecker.disabled = false; - } } diff --git a/tests/config-tests.ts b/tests/config-tests.ts index aa175e82..688595d5 100644 --- a/tests/config-tests.ts +++ b/tests/config-tests.ts @@ -23,8 +23,8 @@ setEsVersion('es2018'); process.env.BALENARC_NO_SENTRY = '1'; // Disable deprecation checks while running test code -import { DeprecationChecker } from '../build/deprecation'; -DeprecationChecker.disable(); +// Like the global `--unsupported` flag +process.env.BALENARC_UNSUPPORTED = '1'; import * as tmp from 'tmp'; tmp.setGracefulCleanup(); diff --git a/tests/deprecation.spec.ts b/tests/deprecation.spec.ts index c261bc87..b6848de3 100644 --- a/tests/deprecation.spec.ts +++ b/tests/deprecation.spec.ts @@ -54,10 +54,16 @@ describe('DeprecationChecker', function () { Parameters, ReturnType >; + let originalUnsupported: string | undefined; - // see also DeprecationChecker.disable() in tests/config-tests.ts - this.beforeAll(() => DeprecationChecker.enable()); - this.afterAll(() => DeprecationChecker.disable()); + this.beforeAll(() => { + // Temporarily undo settings from `tests/config-tests.ts` + originalUnsupported = process.env.BALENARC_UNSUPPORTED; + delete process.env.BALENARC_UNSUPPORTED; + }); + this.afterAll(() => { + process.env.BALENARC_UNSUPPORTED = originalUnsupported; + }); this.beforeEach(() => { npm = new NpmMock(); From 8791c2f4e1ad9f77a6f81aa9cb6df327de9d32c2 Mon Sep 17 00:00:00 2001 From: Paulo Castro Date: Wed, 29 Sep 2021 23:00:53 +0100 Subject: [PATCH 3/4] Replace mixpanel dependency with simple GET request Change-type: patch --- lib/events.ts | 58 ++++++++++++++++++++++++--------------- lib/hooks/prerun/track.ts | 2 +- npm-shrinkwrap.json | 48 -------------------------------- package.json | 1 - 4 files changed, 37 insertions(+), 72 deletions(-) diff --git a/lib/events.ts b/lib/events.ts index 2c057e93..5f970164 100644 --- a/lib/events.ts +++ b/lib/events.ts @@ -14,27 +14,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import * as _ from 'lodash'; -import * as Mixpanel from 'mixpanel'; import * as packageJSON from '../package.json'; import { getBalenaSdk } from './utils/lazy'; -const getMixpanel = _.once((balenaUrl: string) => { - return Mixpanel.init('balena-main', { - host: `api.${balenaUrl}`, - path: '/mixpanel', - protocol: 'https', - }); -}); - interface CachedUsername { token: string; username: string; } /** - * Mixpanel.com analytics tracking (information on balena CLI usage). + * Track balena CLI usage events (product improvement analytics). * * @param commandSignature A string like, for example: * "push " @@ -60,7 +50,6 @@ export async function trackCommand(commandSignature: string) { }); } const settings = await import('balena-settings-client'); - const balenaUrl = settings.get('balenaUrl'); const username = await (async () => { const getStorage = await import('balena-settings-storage'); @@ -94,8 +83,6 @@ export async function trackCommand(commandSignature: string) { } })(); - const mixpanel = getMixpanel(balenaUrl); - if (!process.env.BALENARC_NO_SENTRY) { Sentry!.configureScope((scope) => { scope.setUser({ @@ -109,16 +96,43 @@ export async function trackCommand(commandSignature: string) { !process.env.BALENA_CLI_TEST_TYPE && !process.env.BALENARC_NO_ANALYTICS ) { - await mixpanel.track(`[CLI] ${commandSignature}`, { - distinct_id: username, - version: packageJSON.version, - node: process.version, - arch: process.arch, - balenaUrl, // e.g. 'balena-cloud.com' or 'balena-staging.com' - platform: process.platform, - }); + const balenaUrl = settings.get('balenaUrl'); + await sendEvent(balenaUrl, `[CLI] ${commandSignature}`, username); } } catch { // ignore } } + +/** + * Make the event tracking HTTPS request to balenaCloud's '/mixpanel' endpoint. + */ +async function sendEvent(balenaUrl: string, event: string, username?: string) { + const { default: got } = await import('got'); + const trackData = { + event, + properties: { + arch: process.arch, + balenaUrl, // e.g. 'balena-cloud.com' or 'balena-staging.com' + distinct_id: username, + mp_lib: 'node', + node: process.version, + platform: process.platform, + token: 'balena-main', + version: packageJSON.version, + }, + }; + const url = `https://api.${balenaUrl}/mixpanel/track`; + const searchParams = { + ip: 0, + verbose: 0, + data: Buffer.from(JSON.stringify(trackData)).toString('base64'), + }; + try { + await got(url, { searchParams, retry: 0 }); + } catch (e) { + if (process.env.DEBUG) { + console.error(`[debug] Event tracking error: ${e.message || e}`); + } + } +} diff --git a/lib/hooks/prerun/track.ts b/lib/hooks/prerun/track.ts index d5e3afe5..1d584585 100644 --- a/lib/hooks/prerun/track.ts +++ b/lib/hooks/prerun/track.ts @@ -28,7 +28,7 @@ export const trackPromise = new Promise((resolve) => { * parsed by oclif, but before the command's run() function is called. * See: https://oclif.io/docs/hooks * - * This hook is used to track CLI command signatures with mixpanel. + * This hook is used to track CLI command signatures (usage analytics). * A command signature is something like "env add NAME [VALUE]". That's * literally so: 'NAME' and 'VALUE' are NOT replaced with actual values. */ diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 1959aae9..d87ee178 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -6908,19 +6908,6 @@ "es6-symbol": "^3.1.1" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "requires": { - "es6-promise": "^4.0.3" - } - }, "es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -11993,41 +11980,6 @@ } } }, - "mixpanel": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/mixpanel/-/mixpanel-0.10.3.tgz", - "integrity": "sha512-wIYr5o+1XSzJ80o3QED35K/yfPAKi5FigZXTSfcs4vltfeKbilIjNgwxdno7LrqzhjoSjmIyDWkI7D3lr7TwDw==", - "requires": { - "https-proxy-agent": "3.0.0" - }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "https-proxy-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.0.tgz", - "integrity": "sha512-y4jAxNEihqvBI5F3SaO2rtsjIOnnNA8sEbuiP+UhJZJHeM2NRm6c09ax2tgqme+SgUUvjao2fJXF4h3D6Cb2HQ==", - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - } - } - }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", diff --git a/package.json b/package.json index 538cb033..cb33ee2c 100644 --- a/package.json +++ b/package.json @@ -249,7 +249,6 @@ "livepush": "^3.5.0", "lodash": "^4.17.21", "minimatch": "^3.0.4", - "mixpanel": "^0.10.3", "moment": "^2.27.0", "moment-duration-format": "^2.3.2", "ndjson": "^2.0.0", From 08dfc945f3ed1c518a7d1830a5a37d72fd5739fd Mon Sep 17 00:00:00 2001 From: Paulo Castro Date: Wed, 29 Sep 2021 23:13:09 +0100 Subject: [PATCH 4/4] Update dependencies (@sentry/node error reporting) Change-type: patch --- lib/app.ts | 1 + npm-shrinkwrap.json | 120 ++++++++++++++++++++++---------------------- package.json | 4 +- 3 files changed, 63 insertions(+), 62 deletions(-) diff --git a/lib/app.ts b/lib/app.ts index d058a7cf..9238b77c 100644 --- a/lib/app.ts +++ b/lib/app.ts @@ -33,6 +33,7 @@ export const setupSentry = onceAsync(async () => { const config = await import('./config'); const Sentry = await import('@sentry/node'); Sentry.init({ + autoSessionTracking: false, dsn: config.sentryDsn, release: packageJSON.version, }); diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index d87ee178..3f67db52 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -2169,68 +2169,68 @@ "integrity": "sha512-STcqSvk+c7ArMrZgYxhM92p6O6F7t0SUbGr+zm8s9fJple5EdJAMwP3dXqgdXeF95xWhBpha5kjEqNAIdI0r4w==" }, "@sentry/core": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.25.0.tgz", - "integrity": "sha512-hY6Zmo7t/RV+oZuvXHP6nyAj/QnZr2jW0e7EbL5YKMV8q0vlnjcE0LgqFXme726OJemoLk67z+sQOJic/Ztehg==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.13.2.tgz", + "integrity": "sha512-snXNNFLwlS7yYxKTX4DBXebvJK+6ikBWN6noQ1CHowvM3ReFBlrdrs0Z0SsSFEzXm2S4q7f6HHbm66GSQZ/8FQ==", "requires": { - "@sentry/hub": "5.25.0", - "@sentry/minimal": "5.25.0", - "@sentry/types": "5.25.0", - "@sentry/utils": "5.25.0", + "@sentry/hub": "6.13.2", + "@sentry/minimal": "6.13.2", + "@sentry/types": "6.13.2", + "@sentry/utils": "6.13.2", "tslib": "^1.9.3" }, "dependencies": { "tslib": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.0.tgz", - "integrity": "sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, "@sentry/hub": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.25.0.tgz", - "integrity": "sha512-kOlOiJV8wMX50lYpzMlOXBoH7MNG0Ho4RTusdZnXZBaASq5/ljngDJkLr6uylNjceZQP21wzipCQajsJMYB7EQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.13.2.tgz", + "integrity": "sha512-sppSuJdNMiMC/vFm/dQowCBh11uTrmvks00fc190YWgxHshodJwXMdpc+pN61VSOmy2QA4MbQ5aMAgHzPzel3A==", "requires": { - "@sentry/types": "5.25.0", - "@sentry/utils": "5.25.0", + "@sentry/types": "6.13.2", + "@sentry/utils": "6.13.2", "tslib": "^1.9.3" }, "dependencies": { "tslib": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.0.tgz", - "integrity": "sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, "@sentry/minimal": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.25.0.tgz", - "integrity": "sha512-9JFKuW7U+1vPO86k3+XRtJyooiVZsVOsFFO4GulBzepi3a0ckNyPgyjUY1saLH+cEHx18hu8fGgajvI8ANUF2g==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.13.2.tgz", + "integrity": "sha512-6iJfEvHzzpGBHDfLxSHcGObh73XU1OSQKWjuhDOe7UQDyI4BQmTfcXAC+Fr8sm8C/tIsmpVi/XJhs8cubFdSMw==", "requires": { - "@sentry/hub": "5.25.0", - "@sentry/types": "5.25.0", + "@sentry/hub": "6.13.2", + "@sentry/types": "6.13.2", "tslib": "^1.9.3" }, "dependencies": { "tslib": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.0.tgz", - "integrity": "sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, "@sentry/node": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.25.0.tgz", - "integrity": "sha512-zxoUVdAFTeK9kdEGY95TMs6g8Zx/P55HxG4gHD80BG/XIEvWiGPcGCLOspO4IdGqYXkGS74KfBOIXmmCawWwLg==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.13.2.tgz", + "integrity": "sha512-0Vw22amG143MTiNaSny66YGU3+uW7HxyGI9TLGE7aJY1nNmC0DE+OgqQYGBRCrrPu+VFXRDxrOg9b15A1gKqjA==", "requires": { - "@sentry/core": "5.25.0", - "@sentry/hub": "5.25.0", - "@sentry/tracing": "5.25.0", - "@sentry/types": "5.25.0", - "@sentry/utils": "5.25.0", + "@sentry/core": "6.13.2", + "@sentry/hub": "6.13.2", + "@sentry/tracing": "6.13.2", + "@sentry/types": "6.13.2", + "@sentry/utils": "6.13.2", "cookie": "^0.4.1", "https-proxy-agent": "^5.0.0", "lru_map": "^0.3.3", @@ -2238,49 +2238,49 @@ }, "dependencies": { "tslib": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.0.tgz", - "integrity": "sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, "@sentry/tracing": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.25.0.tgz", - "integrity": "sha512-KcyHEGFpqSDubHrdWT/vF2hKkjw/ts6NpJ6tPDjBXUNz98BHdAyMKtLOFTCeJFply7/s5fyiAYu44M+M6IG3Bw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-6.13.2.tgz", + "integrity": "sha512-bHJz+C/nd6biWTNcYAu91JeRilsvVgaye4POkdzWSmD0XoLWHVMrpCQobGpXe7onkp2noU3YQjhqgtBqPHtnpw==", "requires": { - "@sentry/hub": "5.25.0", - "@sentry/minimal": "5.25.0", - "@sentry/types": "5.25.0", - "@sentry/utils": "5.25.0", + "@sentry/hub": "6.13.2", + "@sentry/minimal": "6.13.2", + "@sentry/types": "6.13.2", + "@sentry/utils": "6.13.2", "tslib": "^1.9.3" }, "dependencies": { "tslib": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.0.tgz", - "integrity": "sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, "@sentry/types": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.25.0.tgz", - "integrity": "sha512-8M4PREbcar+15wrtEqcwfcU33SS+2wBSIOd/NrJPXJPTYxi49VypCN1mZBDyWkaK+I+AuQwI3XlRPCfsId3D1A==" + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.13.2.tgz", + "integrity": "sha512-6WjGj/VjjN8LZDtqJH5ikeB1o39rO1gYS6anBxiS3d0sXNBb3Ux0pNNDFoBxQpOhmdDHXYS57MEptX9EV82gmg==" }, "@sentry/utils": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.25.0.tgz", - "integrity": "sha512-Hz5spdIkMSRH5NR1YFOp5qbsY5Ud2lKhEQWlqxcVThMG5YNUc10aYv5ijL19v0YkrC2rqPjCRm7GrVtzOc7bXQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.13.2.tgz", + "integrity": "sha512-foF4PbxqPMWNbuqdXkdoOmKm3quu3PP7Q7j/0pXkri4DtCuvF/lKY92mbY0V9rHS/phCoj+3/Se5JvM2ymh2/w==", "requires": { - "@sentry/types": "5.25.0", + "@sentry/types": "6.13.2", "tslib": "^1.9.3" }, "dependencies": { "tslib": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.0.tgz", - "integrity": "sha512-+Zw5lu0D9tvBMjGP8LpvMb0u2WW2QV3y+D8mO6J+cNzCYIN4sVy43Bf9vl92nqFahutN0I8zHa7cc4vihIshnw==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, @@ -3093,9 +3093,9 @@ "dev": true }, "agent-base": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", - "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "requires": { "debug": "4" } diff --git a/package.json b/package.json index cb33ee2c..69cb00f2 100644 --- a/package.json +++ b/package.json @@ -196,7 +196,7 @@ "@balena/es-version": "^1.0.0", "@oclif/command": "^1.8.0", "@resin.io/valid-email": "^0.1.0", - "@sentry/node": "^5.25.0", + "@sentry/node": "^6.13.2", "@types/fast-levenshtein": "0.0.1", "@types/update-notifier": "^4.1.1", "@zeit/dockerignore": "0.0.3", @@ -267,7 +267,7 @@ "resin-cli-visuals": "^1.8.0", "resin-compose-parse": "^2.1.3", "resin-doodles": "^0.1.1", - "resin-multibuild": "4.12.2", + "resin-multibuild": "^4.12.2", "resin-stream-logger": "^0.1.2", "rimraf": "^3.0.2", "semver": "^7.3.2",