diff --git a/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/scenario.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/scenario.ts index 46585ea8913d..0d33cc197575 100644 --- a/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/scenario.ts +++ b/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/scenario.ts @@ -1,5 +1,3 @@ -import '@sentry/tracing'; - import * as Sentry from '@sentry/node'; Sentry.init({ diff --git a/packages/astro/package.json b/packages/astro/package.json index 825da5812ac0..57db17ae274e 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -54,7 +54,7 @@ "@sentry/node-experimental": "7.100.0", "@sentry/types": "7.100.0", "@sentry/utils": "7.100.0", - "@sentry/vite-plugin": "^2.8.0" + "@sentry/vite-plugin": "^2.14.2" }, "devDependencies": { "astro": "^3.5.0", diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index c92bc40210c4..0be9398cff44 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -43,8 +43,9 @@ "@sentry/svelte": "7.100.0", "@sentry/types": "7.100.0", "@sentry/utils": "7.100.0", - "@sentry/vite-plugin": "^0.6.1", + "@sentry/vite-plugin": "^2.14.2", "magicast": "0.2.8", + "magic-string": "0.30.7", "sorcery": "0.11.0" }, "devDependencies": { diff --git a/packages/sveltekit/src/vite/sentryVitePlugins.ts b/packages/sveltekit/src/vite/sentryVitePlugins.ts index 60852424ded2..07111432e942 100644 --- a/packages/sveltekit/src/vite/sentryVitePlugins.ts +++ b/packages/sveltekit/src/vite/sentryVitePlugins.ts @@ -1,12 +1,14 @@ -import type { SentryVitePluginOptions } from '@sentry/vite-plugin'; import type { Plugin } from 'vite'; import type { AutoInstrumentSelection } from './autoInstrument'; import { makeAutoInstrumentationPlugin } from './autoInstrument'; import type { SupportedSvelteKitAdapters } from './detectAdapter'; import { detectAdapter } from './detectAdapter'; -import { makeCustomSentryVitePlugin } from './sourceMaps'; +import { makeCustomSentryVitePlugins } from './sourceMaps'; +/** + * Options related to source maps upload to Sentry + */ type SourceMapsUploadOptions = { /** * If this flag is `true`, the Sentry plugins will automatically upload source maps to Sentry. @@ -18,7 +20,101 @@ type SourceMapsUploadOptions = { * Options for the Sentry Vite plugin to customize and override the release creation and source maps upload process. * See [Sentry Vite Plugin Options](https://github.com/getsentry/sentry-javascript-bundler-plugins/tree/main/packages/vite-plugin#configuration) for a detailed description. */ - sourceMapsUploadOptions?: Partial; + sourceMapsUploadOptions?: { + /** + * The auth token to use when uploading source maps to Sentry. + * + * Instead of specifying this option, you can also set the `SENTRY_AUTH_TOKEN` environment variable. + * + * To create an auth token, follow this guide: + * @see https://docs.sentry.io/product/accounts/auth-tokens/#organization-auth-tokens + */ + authToken?: string; + + /** + * The organization slug of your Sentry organization. + * Instead of specifying this option, you can also set the `SENTRY_ORG` environment variable. + */ + org?: string; + + /** + * The project slug of your Sentry project. + * Instead of specifying this option, you can also set the `SENTRY_PROJECT` environment variable. + */ + project?: string; + + /** + * If this flag is `true`, the Sentry plugin will collect some telemetry data and send it to Sentry. + * It will not collect any sensitive or user-specific data. + * + * @default true + */ + telemetry?: boolean; + + /** + * Options related to sourcemaps + */ + sourcemaps?: { + /** + * A glob or an array of globs that specify the build artifacts and source maps that will be uploaded to Sentry. + * + * If this option is not specified, sensible defaults based on your adapter and svelte.config.js + * setup will be used. Use this option to override these defaults, for instance if you have a + * customized build setup that diverges from SvelteKit's defaults. + * + * The globbing patterns must follow the implementation of the `glob` package. + * @see https://www.npmjs.com/package/glob#glob-primer + */ + assets?: string | Array; + + /** + * A glob or an array of globs that specifies which build artifacts should not be uploaded to Sentry. + * + * @default [] - By default no files are ignored. Thus, all files matching the `assets` glob + * or the default value for `assets` are uploaded. + * + * The globbing patterns follow the implementation of the glob package. (https://www.npmjs.com/package/glob) + */ + ignore?: string | Array; + + /** + * A glob or an array of globs that specifies the build artifacts that should be deleted after the artifact + * upload to Sentry has been completed. + * + * @default [] - By default no files are deleted. + * + * The globbing patterns follow the implementation of the glob package. (https://www.npmjs.com/package/glob) + */ + filesToDeleteAfterUpload?: string | Array; + }; + + /** + * Options related to managing the Sentry releases for a build. + * + * Note: Managing releases is optional and not required for uploading source maps. + */ + release?: { + /** + * Unique identifier for the release you want to create. + * This value can also be specified via the SENTRY_RELEASE environment variable. + * + * Defaults to automatically detecting a value for your environment. This includes values for Cordova, Heroku, + * AWS CodeBuild, CircleCI, Xcode, and Gradle, and otherwise uses the git HEAD's commit SHA (the latter requires + * access to git CLI and for the root directory to be a valid repository). + * + * If you didn't provide a value and the plugin can't automatically detect one, no release will be created. + */ + name?: string; + + /** + * Whether the plugin should inject release information into the build for the SDK to pick it up when + * sending events. + * + * Defaults to `true`. + */ + inject?: boolean; + }; + }; }; type AutoInstrumentOptions = { @@ -79,7 +175,7 @@ export async function sentrySvelteKit(options: SentrySvelteKitPluginOptions = {} const mergedOptions = { ...DEFAULT_PLUGIN_OPTIONS, ...options, - adapter: options.adapter || (await detectAdapter(options.debug || false)), + adapter: options.adapter || (await detectAdapter(options.debug)), }; const sentryPlugins: Plugin[] = []; @@ -100,12 +196,16 @@ export async function sentrySvelteKit(options: SentrySvelteKitPluginOptions = {} } if (mergedOptions.autoUploadSourceMaps && process.env.NODE_ENV !== 'development') { - const pluginOptions = { - ...mergedOptions.sourceMapsUploadOptions, - debug: mergedOptions.debug, // override the plugin's debug flag with the one from the top-level options + const sourceMapsUploadOptions = mergedOptions.sourceMapsUploadOptions; + + const sentryVitePlugins = await makeCustomSentryVitePlugins({ + ...sourceMapsUploadOptions, + adapter: mergedOptions.adapter, - }; - sentryPlugins.push(await makeCustomSentryVitePlugin(pluginOptions)); + // override the plugin's debug flag with the one from the top-level options + debug: mergedOptions.debug, + }); + sentryPlugins.push(...sentryVitePlugins); } return sentryPlugins; diff --git a/packages/sveltekit/src/vite/sourceMaps.ts b/packages/sveltekit/src/vite/sourceMaps.ts index d423c9fec5f5..11f0946b06c8 100644 --- a/packages/sveltekit/src/vite/sourceMaps.ts +++ b/packages/sveltekit/src/vite/sourceMaps.ts @@ -9,6 +9,7 @@ import { sentryVitePlugin } from '@sentry/vite-plugin'; import * as sorcery from 'sorcery'; import type { Plugin } from 'vite'; +import MagicString from 'magic-string'; import { WRAPPED_MODULE_SUFFIX } from './autoInstrument'; import type { SupportedSvelteKitAdapters } from './detectAdapter'; import type { GlobalSentryValues } from './injectGlobalValues'; @@ -24,17 +25,13 @@ type Sorcery = { load(filepath: string): Promise; }; -type SentryVitePluginOptionsOptionalInclude = Omit & { - include?: SentryVitePluginOptions['include']; -}; - -type CustomSentryVitePluginOptions = SentryVitePluginOptionsOptionalInclude & { +type CustomSentryVitePluginOptions = SentryVitePluginOptions & { adapter: SupportedSvelteKitAdapters; }; // storing this in the module scope because `makeCustomSentryVitePlugin` is called multiple times // and we only want to generate a uuid once in case we have to fall back to it. -const release = detectSentryRelease(); +const releaseName = detectSentryRelease(); /** * Creates a new Vite plugin that uses the unplugin-based Sentry Vite plugin to create @@ -52,28 +49,44 @@ const release = detectSentryRelease(); * * @returns the custom Sentry Vite plugin */ -export async function makeCustomSentryVitePlugin(options?: CustomSentryVitePluginOptions): Promise { +export async function makeCustomSentryVitePlugins(options?: CustomSentryVitePluginOptions): Promise { const svelteConfig = await loadSvelteConfig(); const usedAdapter = options?.adapter || 'other'; const outputDir = await getAdapterOutputDir(svelteConfig, usedAdapter); - const hasSentryProperties = fs.existsSync(path.resolve(process.cwd(), 'sentry.properties')); const defaultPluginOptions: SentryVitePluginOptions = { - include: [`${outputDir}/client`, `${outputDir}/server`], - configFile: hasSentryProperties ? 'sentry.properties' : undefined, - release, + release: { + name: releaseName, + }, }; const mergedOptions = { ...defaultPluginOptions, ...options, + release: { + ...defaultPluginOptions.release, + ...options?.release, + }, }; + const { debug } = mergedOptions; - const sentryPlugin: Plugin = sentryVitePlugin(mergedOptions); + const sentryPlugins: Plugin[] = await sentryVitePlugin(mergedOptions); - const { debug } = mergedOptions; - const { buildStart, renderChunk } = sentryPlugin; + const sentryViteDebugIdUploadPlugin = sentryPlugins.find( + plugin => plugin.name === 'sentry-vite-debug-id-upload-plugin', + ); + + if (!sentryViteDebugIdUploadPlugin) { + debug && + // eslint-disable-next-line no-console + console.warn( + 'sentry-vite-debug-id-upload-plugin not found in sentryPlugins! Cannot modify plugin - returning default Sentry Vite plugins', + ); + return sentryPlugins; + } + + const restOfSentryVitePlugins = sentryPlugins.filter(plugin => plugin.name !== 'sentry-vite-debug-id-upload-plugin'); let isSSRBuild = true; @@ -84,15 +97,10 @@ export async function makeCustomSentryVitePlugin(options?: CustomSentryVitePlugi }; const customPlugin: Plugin = { - name: 'sentry-upload-source-maps', + name: 'sentry-upload-sveltekit-source-maps', apply: 'build', // only apply this plugin at build time enforce: 'post', // this needs to be set to post, otherwise we don't pick up the output from the SvelteKit adapter - // These hooks are copied from the original Sentry Vite plugin. - // They're mostly responsible for options parsing and release injection. - buildStart, - renderChunk, - // Modify the config to generate source maps config: config => { // eslint-disable-next-line no-console @@ -114,8 +122,7 @@ export async function makeCustomSentryVitePlugin(options?: CustomSentryVitePlugi moduleSideEffects: true, }; } - // @ts-expect-error - this hook exists on the plugin! - return sentryPlugin.resolveId(id, _importer, _ref); + return null; }, load: id => { @@ -138,16 +145,19 @@ export async function makeCustomSentryVitePlugin(options?: CustomSentryVitePlugi }, transform: async (code, id) => { - let modifiedCode = code; // eslint-disable-next-line @sentry-internal/sdk/no-regexp-constructor -- not end user input + escaped anyway const isServerHooksFile = new RegExp(`/${escapeStringForRegex(serverHooksFile)}(.(js|ts|mjs|mts))?`).test(id); if (isServerHooksFile) { - const globalValuesImport = `; import "${VIRTUAL_GLOBAL_VALUES_FILE}";`; - modifiedCode = `${code}\n${globalValuesImport}\n`; + const ms = new MagicString(code); + ms.append(`\n; import "${VIRTUAL_GLOBAL_VALUES_FILE}";\n`); + return { + code: ms.toString(), + map: ms.generateMap({ hires: true }), + }; } - // @ts-expect-error - this hook exists on the plugin! - return sentryPlugin.transform(modifiedCode, id); + + return null; }, // We need to start uploading source maps later than in the original plugin @@ -205,8 +215,12 @@ export async function makeCustomSentryVitePlugin(options?: CustomSentryVitePlugi } try { + // So here, we're just calling the original plugin's `writeBundle` method to upload the source maps. + // Our plugin hook expects output options to glob for source maps. We don't have this option in `closeBundle`. + // So we just pass in the `outDir` we determined earlier. + // Not pretty but my testing shows that it works. // @ts-expect-error - this hook exists on the plugin! - await sentryPlugin.writeBundle(); + await sentryViteDebugIdUploadPlugin.writeBundle({ dir: outDir }); } catch (_) { // eslint-disable-next-line no-console console.warn('[Source Maps Plugin] Failed to upload source maps!'); @@ -222,7 +236,7 @@ export async function makeCustomSentryVitePlugin(options?: CustomSentryVitePlugi }, }; - return customPlugin; + return [...restOfSentryVitePlugins, customPlugin]; } function getFiles(dir: string): string[] { diff --git a/packages/sveltekit/test/vite/sentrySvelteKitPlugins.test.ts b/packages/sveltekit/test/vite/sentrySvelteKitPlugins.test.ts index a05a0c672804..5519a4e33953 100644 --- a/packages/sveltekit/test/vite/sentrySvelteKitPlugins.test.ts +++ b/packages/sveltekit/test/vite/sentrySvelteKitPlugins.test.ts @@ -1,5 +1,6 @@ import { vi } from 'vitest'; +import type { Plugin } from 'vite'; import * as autoInstrument from '../../src/vite/autoInstrument'; import { sentrySvelteKit } from '../../src/vite/sentryVitePlugins'; import * as sourceMaps from '../../src/vite/sourceMaps'; @@ -24,32 +25,53 @@ vi.spyOn(console, 'warn').mockImplementation(() => { /* noop */ }); +function getSentrySvelteKitPlugins(options?: Parameters[0]): Promise { + return sentrySvelteKit({ + sourceMapsUploadOptions: { + authToken: 'token', + org: 'org', + project: 'project', + ...options?.sourceMapsUploadOptions, + }, + ...options, + }); +} + describe('sentrySvelteKit()', () => { it('returns an array of Vite plugins', async () => { - const plugins = await sentrySvelteKit(); + const plugins = await getSentrySvelteKitPlugins(); expect(plugins).toBeInstanceOf(Array); - expect(plugins).toHaveLength(2); + // 1 auto instrument plugin + 5 source maps plugins + expect(plugins).toHaveLength(6); }); - it('returns the custom sentry source maps plugin and the auto-instrument plugin by default', async () => { - const plugins = await sentrySvelteKit(); - const instrumentPlugin = plugins[0]; - const sourceMapsPlugin = plugins[1]; - expect(instrumentPlugin.name).toEqual('sentry-auto-instrumentation'); - expect(sourceMapsPlugin.name).toEqual('sentry-upload-source-maps'); + it('returns the custom sentry source maps upload plugin, unmodified sourcemaps plugins and the auto-instrument plugin by default', async () => { + const plugins = await getSentrySvelteKitPlugins(); + const pluginNames = plugins.map(plugin => plugin.name); + expect(pluginNames).toEqual([ + // auto instrument plugin: + 'sentry-auto-instrumentation', + // default source maps plugins: + 'sentry-telemetry-plugin', + 'sentry-vite-release-injection-plugin', + 'sentry-debug-id-upload-plugin', + 'sentry-vite-debug-id-injection-plugin', + // custom source maps plugin: + 'sentry-upload-sveltekit-source-maps', + ]); }); - it("doesn't return the custom sentry source maps plugin if autoUploadSourcemaps is `false`", async () => { - const plugins = await sentrySvelteKit({ autoUploadSourceMaps: false }); + it("doesn't return the sentry source maps plugins if autoUploadSourcemaps is `false`", async () => { + const plugins = await getSentrySvelteKitPlugins({ autoUploadSourceMaps: false }); expect(plugins).toHaveLength(1); }); - it("doesn't return the custom sentry source maps plugin if `NODE_ENV` is development", async () => { + it("doesn't return the sentry source maps plugins if `NODE_ENV` is development", async () => { const previousEnv = process.env.NODE_ENV; process.env.NODE_ENV = 'development'; - const plugins = await sentrySvelteKit({ autoUploadSourceMaps: true, autoInstrument: true }); + const plugins = await getSentrySvelteKitPlugins({ autoUploadSourceMaps: true, autoInstrument: true }); const instrumentPlugin = plugins[0]; expect(plugins).toHaveLength(1); @@ -59,35 +81,41 @@ describe('sentrySvelteKit()', () => { }); it("doesn't return the auto instrument plugin if autoInstrument is `false`", async () => { - const plugins = await sentrySvelteKit({ autoInstrument: false }); - expect(plugins).toHaveLength(1); + const plugins = await getSentrySvelteKitPlugins({ autoInstrument: false }); + const pluginNames = plugins.map(plugin => plugin.name); + expect(plugins).toHaveLength(5); + expect(pluginNames).not.toContain('sentry-upload-source-maps'); }); - it('passes user-specified vite pugin options to the custom sentry source maps plugin', async () => { - const makePluginSpy = vi.spyOn(sourceMaps, 'makeCustomSentryVitePlugin'); - const plugins = await sentrySvelteKit({ + it('passes user-specified vite plugin options to the custom sentry source maps plugin', async () => { + const makePluginSpy = vi.spyOn(sourceMaps, 'makeCustomSentryVitePlugins'); + await getSentrySvelteKitPlugins({ debug: true, sourceMapsUploadOptions: { - include: ['foo.js'], - ignore: ['bar.js'], + sourcemaps: { + assets: ['foo/*.js'], + ignore: ['bar/*.js'], + filesToDeleteAfterUpload: ['baz/*.js'], + }, }, autoInstrument: false, adapter: 'vercel', }); - const plugin = plugins[0]; - expect(plugin.name).toEqual('sentry-upload-source-maps'); expect(makePluginSpy).toHaveBeenCalledWith({ debug: true, - ignore: ['bar.js'], - include: ['foo.js'], + sourcemaps: { + assets: ['foo/*.js'], + ignore: ['bar/*.js'], + filesToDeleteAfterUpload: ['baz/*.js'], + }, adapter: 'vercel', }); }); it('passes user-specified options to the auto instrument plugin', async () => { const makePluginSpy = vi.spyOn(autoInstrument, 'makeAutoInstrumentationPlugin'); - const plugins = await sentrySvelteKit({ + const plugins = await getSentrySvelteKitPlugins({ debug: true, autoInstrument: { load: true, diff --git a/packages/sveltekit/test/vite/sourceMaps.test.ts b/packages/sveltekit/test/vite/sourceMaps.test.ts index c312396675a1..77cc80807cda 100644 --- a/packages/sveltekit/test/vite/sourceMaps.test.ts +++ b/packages/sveltekit/test/vite/sourceMaps.test.ts @@ -1,12 +1,10 @@ import { vi } from 'vitest'; -import { makeCustomSentryVitePlugin } from '../../src/vite/sourceMaps'; +import type { Plugin } from 'vite'; +import { makeCustomSentryVitePlugins } from '../../src/vite/sourceMaps'; const mockedSentryVitePlugin = { - buildStart: vi.fn(), - resolveId: vi.fn(), - renderChunk: vi.fn(), - transform: vi.fn().mockImplementation((code: string, _id: string) => code), + name: 'sentry-vite-debug-id-upload-plugin', writeBundle: vi.fn(), }; @@ -15,7 +13,7 @@ vi.mock('@sentry/vite-plugin', async () => { return { ...original, - sentryVitePlugin: () => mockedSentryVitePlugin, + sentryVitePlugin: () => [mockedSentryVitePlugin], }; }); @@ -23,26 +21,37 @@ beforeEach(() => { vi.clearAllMocks(); }); +async function getCustomSentryViteUploadSourcemapsPlugin(): Promise { + const plugins = await makeCustomSentryVitePlugins({ + authToken: 'token', + org: 'org', + project: 'project', + adapter: 'other', + }); + return plugins.find(plugin => plugin.name === 'sentry-upload-sveltekit-source-maps'); +} + describe('makeCustomSentryVitePlugin()', () => { it('returns the custom sentry source maps plugin', async () => { - const plugin = await makeCustomSentryVitePlugin(); - expect(plugin.name).toEqual('sentry-upload-source-maps'); - expect(plugin.apply).toEqual('build'); - expect(plugin.enforce).toEqual('post'); - - expect(plugin.buildStart).toBeInstanceOf(Function); - expect(plugin.resolveId).toBeInstanceOf(Function); - expect(plugin.renderChunk).toBeInstanceOf(Function); - expect(plugin.transform).toBeInstanceOf(Function); - - expect(plugin.config).toBeInstanceOf(Function); - expect(plugin.configResolved).toBeInstanceOf(Function); - expect(plugin.closeBundle).toBeInstanceOf(Function); + const plugin = await getCustomSentryViteUploadSourcemapsPlugin(); + expect(plugin?.name).toEqual('sentry-upload-sveltekit-source-maps'); + expect(plugin?.apply).toEqual('build'); + expect(plugin?.enforce).toEqual('post'); + + expect(plugin?.resolveId).toBeInstanceOf(Function); + expect(plugin?.transform).toBeInstanceOf(Function); + + expect(plugin?.config).toBeInstanceOf(Function); + expect(plugin?.configResolved).toBeInstanceOf(Function); + + // instead of writeBundle, this plugin uses closeBundle + expect(plugin?.closeBundle).toBeInstanceOf(Function); + expect(plugin?.writeBundle).toBeUndefined(); }); describe('Custom sentry vite plugin', () => { it('enables source map generation', async () => { - const plugin = await makeCustomSentryVitePlugin(); + const plugin = await getCustomSentryViteUploadSourcemapsPlugin(); // @ts-expect-error this function exists! const sentrifiedConfig = plugin.config({ build: { foo: {} }, test: {} }); expect(sentrifiedConfig).toEqual({ @@ -55,16 +64,18 @@ describe('makeCustomSentryVitePlugin()', () => { }); it('injects the output dir into the server hooks file', async () => { - const plugin = await makeCustomSentryVitePlugin(); + const plugin = await getCustomSentryViteUploadSourcemapsPlugin(); // @ts-expect-error this function exists! - const transformedCode = await plugin.transform('foo', '/src/hooks.server.ts'); - const expectedtransformedCode = 'foo\n; import "\0sentry-inject-global-values-file";\n'; - expect(mockedSentryVitePlugin.transform).toHaveBeenCalledWith(expectedtransformedCode, '/src/hooks.server.ts'); - expect(transformedCode).toEqual(expectedtransformedCode); + const transformOutput = await plugin.transform('foo', '/src/hooks.server.ts'); + const transformedCode = transformOutput.code; + const transformedSourcemap = transformOutput.map; + const expectedTransformedCode = 'foo\n; import "\0sentry-inject-global-values-file";\n'; + expect(transformedCode).toEqual(expectedTransformedCode); + expect(transformedSourcemap).toBeDefined(); }); it('uploads source maps during the SSR build', async () => { - const plugin = await makeCustomSentryVitePlugin(); + const plugin = await getCustomSentryViteUploadSourcemapsPlugin(); // @ts-expect-error this function exists! plugin.configResolved({ build: { ssr: true } }); // @ts-expect-error this function exists! @@ -73,7 +84,7 @@ describe('makeCustomSentryVitePlugin()', () => { }); it("doesn't upload source maps during the non-SSR builds", async () => { - const plugin = await makeCustomSentryVitePlugin(); + const plugin = await getCustomSentryViteUploadSourcemapsPlugin(); // @ts-expect-error this function exists! plugin.configResolved({ build: { ssr: false } }); @@ -91,7 +102,7 @@ describe('makeCustomSentryVitePlugin()', () => { const consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); const consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => {}); - const plugin = await makeCustomSentryVitePlugin(); + const plugin = await getCustomSentryViteUploadSourcemapsPlugin(); // @ts-expect-error this function exists! expect(plugin.closeBundle).not.toThrow(); diff --git a/yarn.lock b/yarn.lock index 8270fc5fa8ab..abda05b58934 100644 --- a/yarn.lock +++ b/yarn.lock @@ -612,6 +612,14 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + "@babel/code-frame@^7.22.13": version "7.22.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" @@ -635,6 +643,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== +"@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + "@babel/core@7.11.1": version "7.11.1" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.1.tgz#2c55b604e73a40dc21b0e52650b11c65cf276643" @@ -678,6 +691,27 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/core@7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.2" + "@babel/parser" "^7.18.5" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.5" + "@babel/types" "^7.18.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + "@babel/core@^7.1.0", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.16.10", "@babel/core@^7.16.7", "@babel/core@^7.17.5", "@babel/core@^7.18.13", "@babel/core@^7.3.4", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" @@ -777,6 +811,16 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.18.2", "@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/generator@^7.22.10", "@babel/generator@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" @@ -837,6 +881,17 @@ lru-cache "^5.1.1" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.18.2": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-compilation-targets@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" @@ -1034,6 +1089,17 @@ "@babel/traverse" "^7.20.10" "@babel/types" "^7.20.7" +"@babel/helper-module-transforms@^7.18.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-module-transforms@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" @@ -1157,6 +1223,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" @@ -1177,6 +1248,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + "@babel/helper-wrap-function@^7.18.9": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz#89f18335cff1152373222f76a4b37799636ae8b1" @@ -1205,6 +1281,15 @@ "@babel/traverse" "^7.20.13" "@babel/types" "^7.20.7" +"@babel/helpers@^7.18.2": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== + dependencies: + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + "@babel/helpers@^7.23.0": version "7.23.1" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" @@ -1232,6 +1317,15 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.1", "@babel/parser@^7.14.7", "@babel/parser@^7.16.4", "@babel/parser@^7.18.10", "@babel/parser@^7.20.2", "@babel/parser@^7.4.5", "@babel/parser@^7.7.0": version "7.20.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" @@ -1242,6 +1336,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.15.tgz#eec9f36d8eaf0948bb88c87a46784b5ee9fd0c89" integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg== +"@babel/parser@^7.18.5", "@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== + "@babel/parser@^7.21.9": version "7.22.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.4.tgz#a770e98fd785c231af9d93f6459d36770993fb32" @@ -2402,6 +2501,15 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" +"@babel/template@^7.16.7", "@babel/template@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + "@babel/template@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" @@ -2427,6 +2535,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.5", "@babel/traverse@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" @@ -2454,6 +2578,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.18.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@babel/types@^7.21.5": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" @@ -5619,37 +5752,19 @@ fflate "^0.4.4" mitt "^3.0.0" -"@sentry-internal/tracing@7.100.1": - version "7.100.1" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.100.1.tgz#4329492e50c390567197a4acbf7e3672b1db7820" - integrity sha512-+u9RRf5eL3StiyiRyAHZmdkAR7GTSGx4Mt4Lmi5NEtCcWlTGZ1QgW2r8ZbhouVmTiJkjhQgYCyej3cojtazeJg== - dependencies: - "@sentry/core" "7.100.1" - "@sentry/types" "7.100.1" - "@sentry/utils" "7.100.1" - -"@sentry/bundler-plugin-core@0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-0.6.1.tgz#6c6a2ff3cdc98cd0ff1c30c59408cee9f067adf2" - integrity sha512-EecCJKp9ERM7J93DNDJTvkY78UiD/IfOjBdXWnaUVE0n619O7LfMVjwlXzxRJKl2x05dBE3lDraILLDGxCf6fg== - dependencies: - "@sentry/cli" "^2.17.0" - "@sentry/node" "^7.19.0" - "@sentry/tracing" "^7.19.0" - find-up "5.0.0" - glob "9.3.2" - magic-string "0.27.0" - unplugin "1.0.1" - webpack-sources "3.2.3" +"@sentry/babel-plugin-component-annotate@2.14.2": + version "2.14.2" + resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.14.2.tgz#d756bed93495e97a5a2aad56e2a6dc5020305adc" + integrity sha512-mFBVnIZmdMrpxo61rG5yf0WFt5VrRpy8cpIpJtT3mYkX9vDmcUZaZaD1ctv73iZF3QwaieVdn05Na5mWzZ8h/A== -"@sentry/bundler-plugin-core@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.8.0.tgz#e01df24d7f909277f453844132b856ed997c182b" - integrity sha512-DsTUgeKPqck3DkGzKjRduhPpEn0pez+/THF3gpwQBEfbPnKGr0EYugDvfungZwBFenckIvQBDTOZw0STvbgChA== +"@sentry/bundler-plugin-core@2.14.2": + version "2.14.2" + resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.14.2.tgz#6750c46fa4836b46ea48556b19f5e6789a428a47" + integrity sha512-HgOFWYdq87lSmeVW1w8K2Vf2DGzRPvKzHTajZYLTPlrZ1jbajq9vwuqhrJ9AnDkjl0mjyzSPEy3ZTeG1Z7uRNA== dependencies: - "@sentry/cli" "^2.21.2" - "@sentry/node" "^7.60.0" - "@sentry/utils" "^7.60.0" + "@babel/core" "7.18.5" + "@sentry/babel-plugin-component-annotate" "2.14.2" + "@sentry/cli" "^2.22.3" dotenv "^16.3.1" find-up "5.0.0" glob "9.3.2" @@ -5703,7 +5818,7 @@ proxy-from-env "^1.1.0" which "^2.0.2" -"@sentry/cli@^2.17.0", "@sentry/cli@^2.21.2", "@sentry/cli@^2.28.6": +"@sentry/cli@^2.22.3", "@sentry/cli@^2.28.6": version "2.28.6" resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.28.6.tgz#645f31b9e742e7bf7668c8f867149359e79b8123" integrity sha512-o2Ngz7xXuhwHxMi+4BFgZ4qjkX0tdZeOSIZkFAGnTbRhQe5T8bxq6CcQRLdPhqMgqvDn7XuJ3YlFtD3ZjHvD7g== @@ -5722,46 +5837,12 @@ "@sentry/cli-win32-i686" "2.28.6" "@sentry/cli-win32-x64" "2.28.6" -"@sentry/core@7.100.1": - version "7.100.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.100.1.tgz#7b8e101a931af8e8b3b2449534749f882772df4f" - integrity sha512-f+ItUge/o9AjlveQq0ZUbQauKlPH1FIJbC1TRaYLJ4KNfOdrsh8yZ29RmWv0cFJ/e+FGTr603gWpRPObF5rM8Q== - dependencies: - "@sentry/types" "7.100.1" - "@sentry/utils" "7.100.1" - -"@sentry/tracing@^7.19.0": - version "7.100.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.100.1.tgz#d40fb7099219d58bda5a5e5740178cb1808ac4d0" - integrity sha512-cmm2yz0qvOcW0RPegCn88X5nwbJdLx3w+Wl8319Kzkivc200e2tXQiDNwJ8kQdUvFsJg7Jz3G+hfZoy3ejtH7Q== - dependencies: - "@sentry-internal/tracing" "7.100.1" - -"@sentry/types@7.100.1": - version "7.100.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.100.1.tgz#1349b77269cecf4e80c087842575bd1a001e9995" - integrity sha512-fLM+LedHuKzOd8IhXBqaQuym+AA519MGjeczBa5kGakes/BbAsUMwsNfjsKQedp7Kh44RgYF99jwoRPK2oDrXw== - -"@sentry/utils@7.100.1": - version "7.100.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.100.1.tgz#6e26f3b06b1e485a2180f464ab3374ecb8d5e407" - integrity sha512-Ve6dXr1o6xiBe3VCoJgiutmBKrugryI65EZAbYto5XI+t+PjiLLf9wXtEMF24ZrwImo4Lv3E9Uqza+fWkEbw6A== - dependencies: - "@sentry/types" "7.100.1" - -"@sentry/vite-plugin@^0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@sentry/vite-plugin/-/vite-plugin-0.6.1.tgz#31eb744e8d87b1528eed8d41433647727a62e7c0" - integrity sha512-qkvKaSOcNhNWcdxRXLSs+8cF3ey0XIRmEzTl8U7sTTcZwuOMHsJB+HsYij6aTGaqsKfP8w1ozVt9szBAiL4//w== - dependencies: - "@sentry/bundler-plugin-core" "0.6.1" - -"@sentry/vite-plugin@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@sentry/vite-plugin/-/vite-plugin-2.8.0.tgz#d19d2ebf07fcbf09bb585033d803b9967717e5a6" - integrity sha512-17++vXjfn0xEfE7W4FWdwoXdNNqGjXnuTvIgSLlhJvDCTcqWONDpA/TGXGLjbhQEmQ58wL4wQqmlyxoqMPlokQ== +"@sentry/vite-plugin@^2.14.2": + version "2.14.2" + resolved "https://registry.yarnpkg.com/@sentry/vite-plugin/-/vite-plugin-2.14.2.tgz#f17cbd5526a95de3d8a7995b4cd90e2c8a548bf1" + integrity sha512-t8IiRZGxivtODgabjgHlgUhOBEIJdOclJGUKLAJjJqPtYeKjPzxYOo/Z5yt7k1rhBAaMhFk3whW5o7SOq4KVOA== dependencies: - "@sentry/bundler-plugin-core" "2.8.0" + "@sentry/bundler-plugin-core" "2.14.2" unplugin "1.0.1" "@sentry/webpack-plugin@1.19.0": @@ -10776,6 +10857,16 @@ browserslist@^4.21.9: node-releases "^2.0.13" update-browserslist-db "^1.0.13" +browserslist@^4.22.2: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + browserstack-local@^1.3.7: version "1.4.8" resolved "https://registry.yarnpkg.com/browserstack-local/-/browserstack-local-1.4.8.tgz#07f74a19b324cf2de69ffe65f9c2baa3a2dd9a0e" @@ -11274,6 +11365,11 @@ caniuse-lite@^1.0.30001541: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz#10fdad03436cfe3cc632d3af7a99a0fb497407f0" integrity sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw== +caniuse-lite@^1.0.30001587: + version "1.0.30001589" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz#7ad6dba4c9bf6561aec8291976402339dc157dfb" + integrity sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg== + canonical-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" @@ -13799,6 +13895,11 @@ electron-to-chromium@^1.4.535: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.543.tgz#51116ffc9fba1ee93514d6a40d34676aa6d7d1c4" integrity sha512-t2ZP4AcGE0iKCCQCBx/K2426crYdxD3YU6l0uK2EO3FZH0pbC4pFz/sZm2ruZsND6hQBTcDWWlo/MLpiOdif5g== +electron-to-chromium@^1.4.668: + version "1.4.680" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.680.tgz#18a30d3f557993eda2d5b1e21a06c4d51875392f" + integrity sha512-4nToZ5jlPO14W82NkF32wyjhYqQByVaDmLy4J2/tYcAbJfgO2TKJC780Az1V13gzq4l73CJ0yuyalpXvxXXD9A== + elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -21373,6 +21474,13 @@ magic-string@0.27.0, magic-string@^0.27.0: dependencies: "@jridgewell/sourcemap-codec" "^1.4.13" +magic-string@0.30.7: + version "0.30.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.7.tgz#0cecd0527d473298679da95a2d7aeb8c64048505" + integrity sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + magic-string@^0.25.0, magic-string@^0.25.1, magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" @@ -23485,6 +23593,11 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -32485,7 +32598,7 @@ webpack-sources@1.4.3, webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-s source-list-map "^2.0.0" source-map "~0.6.1" -webpack-sources@3.2.3, "webpack-sources@^2.0.0 || ^3.0.0", webpack-sources@^3.2.0, webpack-sources@^3.2.3: +"webpack-sources@^2.0.0 || ^3.0.0", webpack-sources@^3.2.0, webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==