From 8e7c076cceb36b0b57fdf61f66cf3e681e0b5158 Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 14 Aug 2026 08:40:45 -0700 Subject: [PATCH 1/4] chore: remove the dead charts-gen tool (2 criticals) (#11550) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `packages/cubejs-playground/charts-gen` is unreachable dead code carrying its own stale yarn.lock, which is the only thing keeping two critical alerts open: #8233 decompress <= 4.2.1 no patch exists #7227 @babel/traverse < 7.23.2 Evidence it is dead, rather than merely quiet: - **Nothing references it.** No hit for `charts-gen` anywhere outside the directory itself — not in source, not in `.github/**`, and the only package.json match is its own `"name"` field. - **It is not a workspace member.** Root workspaces are `rust/*` and `packages/*`; this sits one level deeper, at `packages/cubejs-playground/charts-gen`, so it is outside the glob and its lockfile is never installed by a normal build. - **cubejs-playground never invokes it.** None of its scripts (`build`, `build:lib`, `build:vizard`, `build:playground`, …) mention charts or chunks. - **It cannot run as checked in.** Its README requires hand-creating a symlink into `node_modules/.tmp` pointing at a separate repo, cube-js/cube-playground-templates — which was last pushed 2022-12-06. Deleting the directory removes 19 files and closes both alerts outright, since the vulnerabilities live only in a lockfile nothing resolves. Same shape as the earlier `packages/load-test` removal. If chart-renderer generation is ever revived it should come back as a real workspace with a current toolchain, not a resurrected 2022 tree. Co-authored-by: Claude Opus 5 (1M context) --- .../cubejs-playground/charts-gen/README.md | 4 - .../charts-gen/angular/build.sh | 18 - .../charts-gen/angular/code-chunks-gen.js | 115 -- .../charts-gen/angular/index.js | 118 -- .../charts-gen/angular/move.js | 23 - .../cubejs-playground/charts-gen/build-all.sh | 1 - packages/cubejs-playground/charts-gen/env.js | 6 - .../cubejs-playground/charts-gen/package.json | 21 - .../charts-gen/react/build.sh | 18 - .../charts-gen/react/code-chunks-gen.js | 107 -- .../charts-gen/react/index.js | 152 --- .../charts-gen/react/move.js | 20 - .../charts-gen/tsconfig.json | 21 - .../cubejs-playground/charts-gen/utils.js | 25 - .../cubejs-playground/charts-gen/vue/build.sh | 18 - .../charts-gen/vue/code-chunks-gen.js | 165 --- .../cubejs-playground/charts-gen/vue/index.js | 180 --- .../cubejs-playground/charts-gen/vue/move.js | 23 - .../cubejs-playground/charts-gen/yarn.lock | 1129 ----------------- 19 files changed, 2164 deletions(-) delete mode 100644 packages/cubejs-playground/charts-gen/README.md delete mode 100644 packages/cubejs-playground/charts-gen/angular/build.sh delete mode 100644 packages/cubejs-playground/charts-gen/angular/code-chunks-gen.js delete mode 100644 packages/cubejs-playground/charts-gen/angular/index.js delete mode 100644 packages/cubejs-playground/charts-gen/angular/move.js delete mode 100644 packages/cubejs-playground/charts-gen/build-all.sh delete mode 100644 packages/cubejs-playground/charts-gen/env.js delete mode 100644 packages/cubejs-playground/charts-gen/package.json delete mode 100644 packages/cubejs-playground/charts-gen/react/build.sh delete mode 100644 packages/cubejs-playground/charts-gen/react/code-chunks-gen.js delete mode 100644 packages/cubejs-playground/charts-gen/react/index.js delete mode 100644 packages/cubejs-playground/charts-gen/react/move.js delete mode 100644 packages/cubejs-playground/charts-gen/tsconfig.json delete mode 100644 packages/cubejs-playground/charts-gen/utils.js delete mode 100644 packages/cubejs-playground/charts-gen/vue/build.sh delete mode 100644 packages/cubejs-playground/charts-gen/vue/code-chunks-gen.js delete mode 100644 packages/cubejs-playground/charts-gen/vue/index.js delete mode 100644 packages/cubejs-playground/charts-gen/vue/move.js delete mode 100644 packages/cubejs-playground/charts-gen/yarn.lock diff --git a/packages/cubejs-playground/charts-gen/README.md b/packages/cubejs-playground/charts-gen/README.md deleted file mode 100644 index 448873a8f8107..0000000000000 --- a/packages/cubejs-playground/charts-gen/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Creating a symlink for chart renderers generation - -mkdir [PATH_TO_PROJECT]/cube.js/packages/cubejs-playground/charts-gen/node_modules/.tmp -ln -s [PATH_TO_PROJECT]/cubejs-playground-templates [PATH_TO_PROJECT]/cube.js/packages/cubejs-playground/charts-gen/node_modules/.tmp/cubejs-playground-templates diff --git a/packages/cubejs-playground/charts-gen/angular/build.sh b/packages/cubejs-playground/charts-gen/angular/build.sh deleted file mode 100644 index 0dd400eb24222..0000000000000 --- a/packages/cubejs-playground/charts-gen/angular/build.sh +++ /dev/null @@ -1,18 +0,0 @@ -# echo 'Deleting the old build' - -# rm -rf ../charts-dist/angular 2> /dev/null -# mkdir -p ../charts-dist/angular - -# echo 'Scaffolding the app' -# node angular/index.js - -echo 'Building the app' -cd ../charts-dist/angular/angular-charts && npm run build -- --prod -cd - || exit - -echo 'Moving files' -rm -r ../public/chart-renderers/angular 2> /dev/null -mkdir -p ../public/chart-renderers/angular -node angular/move.js - -echo 'Done!' diff --git a/packages/cubejs-playground/charts-gen/angular/code-chunks-gen.js b/packages/cubejs-playground/charts-gen/angular/code-chunks-gen.js deleted file mode 100644 index 75ea8a0a36911..0000000000000 --- a/packages/cubejs-playground/charts-gen/angular/code-chunks-gen.js +++ /dev/null @@ -1,115 +0,0 @@ -const { TargetSource } = require('@cubejs-templates/core'); - -const commonFiles = { - 'src/app/app.module.ts': `import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NgxSpinnerModule } from 'ngx-spinner'; -import { NgModule } from '@angular/core'; -import { MatTableModule } from '@angular/material/table'; -import { CubejsClientModule } from '@cubejs-client/ngx'; -import { ChartsModule } from 'ng2-charts'; - -import { AppComponent } from './app.component'; -import { QueryRendererComponent } from './query-renderer/query-renderer.component'; - -const cubejsOptions = { - token: '\${props.cubejsToken}', - options: { - apiUrl: '\${props.apiUrl}', - }, -}; - -@NgModule({ - declarations: [ - AppComponent, - QueryRendererComponent, - ], - imports: [ - BrowserModule, - MatTableModule, - CubejsClientModule.forRoot(cubejsOptions), - ChartsModule, - BrowserAnimationsModule, - NgxSpinnerModule, - ], - providers: [], - bootstrap: [AppComponent], -}) -export class AppModule {}`, - 'src/app/app.component.ts': `import { Component, OnInit } from '@angular/core'; -import { BehaviorSubject } from 'rxjs'; - -@Component({ - selector: 'app-root', - template: \\\` - \\\`, - styles: [], -}) -export class AppComponent implements OnInit { - cubeQuery = new BehaviorSubject(null); - chartType = new BehaviorSubject(null); - pivotConfig = new BehaviorSubject(null); - - ngOnInit() { - this.cubeQuery.next(\${props.query}); - this.chartType.next('\${props.chartType}'); - this.pivotConfig.next(\${props.pivotConfig}); - } -} -`, -}; - -function generateCodeChunks({ - chartingLibraryDependencies, - chartingLibraryFiles, -}) { - const commonDependencies = Object.entries(commonFiles) - .map(([fileName, content]) => { - const ts = new TargetSource( - fileName, - Array.from(content.match(/import\s(.*)/g) || []).join('\n') - ); - return ts.getImportDependencies(); - }) - .reduce((a, b) => [...a, ...b], []) - .concat(['@angular/cdk', '@angular/material', '@angular/animations']); - - return ` - const chartingLibraryFiles = ${JSON.stringify(chartingLibraryFiles)}; - - function getFiles(props) { - return { - ${Object.entries(commonFiles) - .map(([name, content]) => `'${name}': \`${content}\``) - .join(',')} - }; - } - - export function getCodesandboxFiles(chartingLibrary, props) { - return { - ...getFiles(props), - ...chartingLibraryFiles[chartingLibrary] - }; - } - - const commonDependencies = ${JSON.stringify(commonDependencies)}; - const chartingLibraryDependencies = ${JSON.stringify( - chartingLibraryDependencies - )}; - - export function getDependencies(chartingLibrary) { - return Array.from(new Set([ - ...commonDependencies, - ...(chartingLibraryDependencies[chartingLibrary] || []) - ])); - } - `; -} - -module.exports = { - generateCodeChunks, -}; diff --git a/packages/cubejs-playground/charts-gen/angular/index.js b/packages/cubejs-playground/charts-gen/angular/index.js deleted file mode 100644 index d0d04bad8a8a4..0000000000000 --- a/packages/cubejs-playground/charts-gen/angular/index.js +++ /dev/null @@ -1,118 +0,0 @@ -const fs = require('fs-extra'); -const { TargetSource, utils } = require('@cubejs-templates/core'); -const { pascalCase, paramCase } = require('change-case'); -const { - AppContainer, - DependencyTree, - DevPackageFetcher, -} = require('@cubejs-backend/templates'); -const { executeCommand } = require('@cubejs-backend/shared'); - -const path = require('path'); -const { generateCodeChunks } = require('./code-chunks-gen'); -const { REPOSITORY } = require('../env'); - -const chartingLibraryTemplates = ['angular-ng2-charts', 'angular-test-charts']; - -const packages = [ - // 'dev-cnga', - 'create-ng-app', - 'angular-charts', - 'ng-credentials', -]; - -const rootPath = path.resolve(`${__dirname}/../..`); -const distPath = `${rootPath}/charts-dist/angular`; -const angularChartsPath = `${distPath}/angular-charts`; - -(async () => { - const fetcher = new DevPackageFetcher(REPOSITORY); - const manifest = await fetcher.manifestJSON(); - const { packagesPath } = await fetcher.downloadPackages(); - - const dt = new DependencyTree(manifest, packages); - - const appContainer = new AppContainer( - dt.getRootNode(), - { - appPath: angularChartsPath, - packagesPath, - }, - { - credentials: { - apiUrl: 'http://localhost:4000/cubejs-api/v1', - cubejsToken: 'secret', - }, - } - ); - - await appContainer.applyTemplates(); - - let dependencies = []; - const chartingLibraryDependencies = {}; - const chartingLibraryFiles = {}; - - try { - await Promise.all( - chartingLibraryTemplates.map(async (key) => { - await executeCommand('cp', [ - '-R', - `${packagesPath}/${key}/scaffolding/app/query-renderer`, - `${angularChartsPath}/src/app/${key}`, - ]); - - const fileContents = await utils.fileContentsRecursive( - `${angularChartsPath}/src/app/${key}` - ); - chartingLibraryFiles[key] = fileContents - .map(({ fileName, content }) => ({ - [`src/app/query-renderer${fileName}`]: content, - })) - .reduce((a, b) => ({ ...a, ...b }), {}); - - const currentDependencies = fileContents - .map(({ content, fileName }) => { - let code = content; - if (fileName.includes('query-renderer.component.ts')) { - code = content.replace( - 'class QueryRendererComponent', - `class ${pascalCase(key)}` - ); - code = code.replace( - `selector: 'query-renderer'`, - `selector: '${paramCase(key)}'` - ); - - fs.writeFileSync( - `${angularChartsPath}/src/app/${key}/query-renderer.component.ts`, - code - ); - } - - const ts = new TargetSource(fileName, code); - return ts.getImportDependencies(); - }) - .reduce((a, b) => [...a, ...b], []); - dependencies = dependencies.concat(currentDependencies); - - chartingLibraryDependencies[key] = currentDependencies; - }) - ); - } catch (error) { - console.log(error); - } - - const codeChunks = generateCodeChunks({ - chartingLibraryDependencies, - chartingLibraryFiles, - }); - - fs.writeFileSync(`${angularChartsPath}/src/code-chunks.ts`, codeChunks); - - appContainer.sourceContainer.addImportDependencies( - dependencies - .map((d) => ({ [d]: 'latest' })) - .reduce((a, b) => ({ ...a, ...b }), []) - ); - await appContainer.ensureDependencies(); -})(); diff --git a/packages/cubejs-playground/charts-gen/angular/move.js b/packages/cubejs-playground/charts-gen/angular/move.js deleted file mode 100644 index 758b35619769b..0000000000000 --- a/packages/cubejs-playground/charts-gen/angular/move.js +++ /dev/null @@ -1,23 +0,0 @@ -const fs = require('fs-extra'); -const path = require('path'); -const { moveRecursively } = require('../utils'); - -const dirPath = path.resolve('../charts-dist/angular/angular-charts/dist/angular-charts'); - -let indexHtml = fs.readFileSync(path.join(dirPath, 'index.html'), 'utf-8'); -indexHtml = indexHtml.replace( - /" href="/g, - '" href="/chart-renderers/angular/' -); -indexHtml = indexHtml.replace( - /src="/g, - 'src="/chart-renderers/angular/' -); - -fs.writeFileSync(path.join(dirPath, 'index.html'), indexHtml); - -moveRecursively(dirPath, path.resolve('../public/chart-renderers/angular'), [ - /\.js$/, - /\.css$/, - /\.html$/, -]); diff --git a/packages/cubejs-playground/charts-gen/build-all.sh b/packages/cubejs-playground/charts-gen/build-all.sh deleted file mode 100644 index 4bee6e0603ba9..0000000000000 --- a/packages/cubejs-playground/charts-gen/build-all.sh +++ /dev/null @@ -1 +0,0 @@ -sh react/build.sh & sh angular/build.sh & sh vue/build.sh diff --git a/packages/cubejs-playground/charts-gen/env.js b/packages/cubejs-playground/charts-gen/env.js deleted file mode 100644 index 17298a455df86..0000000000000 --- a/packages/cubejs-playground/charts-gen/env.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - REPOSITORY: { - owner: 'cube-js', - name: 'cubejs-playground-templates', - }, -}; diff --git a/packages/cubejs-playground/charts-gen/package.json b/packages/cubejs-playground/charts-gen/package.json deleted file mode 100644 index b29ae3ba62814..0000000000000 --- a/packages/cubejs-playground/charts-gen/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "charts-gen", - "version": "1.0.0", - "description": "", - "author": "Cube Dev, Inc.", - "license": "MIT", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "dependencies": { - "@cubejs-backend/shared": "^0.28.2", - "@cubejs-backend/templates": "^0.28.2", - "@cubejs-templates/core": "^0.0.7", - "change-case": "^4.1.1", - "fs-extra": "^9.0.1", - "node-fetch": "^2.6.1", - "path": "^0.12.7", - "ramda": "^0.27.1" - } -} diff --git a/packages/cubejs-playground/charts-gen/react/build.sh b/packages/cubejs-playground/charts-gen/react/build.sh deleted file mode 100644 index e91bac7be17f2..0000000000000 --- a/packages/cubejs-playground/charts-gen/react/build.sh +++ /dev/null @@ -1,18 +0,0 @@ -echo 'Deleting the old build' - -rm -rf ../charts-dist/react 2> /dev/null -mkdir -p ../charts-dist/react - -echo 'Scaffolding the app' -node react/index.js - -echo 'Building the app' -cd ../charts-dist/react/react-charts && SKIP_PREFLIGHT_CHECK=true GENERATE_SOURCEMAP=false npm run build -cd - || exit - -echo 'Moving files' -rm -r ../public/chart-renderers/react 2> /dev/null -mkdir -p ../public/chart-renderers/react -node react/move.js - -echo 'Done!' diff --git a/packages/cubejs-playground/charts-gen/react/code-chunks-gen.js b/packages/cubejs-playground/charts-gen/react/code-chunks-gen.js deleted file mode 100644 index 19f3fe0b05b0f..0000000000000 --- a/packages/cubejs-playground/charts-gen/react/code-chunks-gen.js +++ /dev/null @@ -1,107 +0,0 @@ -const { TargetSource, SourceSnippet } = require('@cubejs-templates/core'); -const t = require('@babel/types'); -const traverse = require('@babel/traverse').default; -const generator = require('@babel/generator').default; - -function generateCodeChunks(chartRendererCode) { - const ts = new TargetSource('ChartRenderer.js', chartRendererCode); - - const imports = ts.imports.map((path) => { - if (!path.get('source').node.value.startsWith('.')) { - return generator(path.node, {}).code; - } - - return false; - }).filter(Boolean); - - const chartComponents = getChartComponents(ts).map(({ key, code }) => { - return ` - if (chartType === '${key}') { - return \`${SourceSnippet.formatCode(code)}\`; - } - `; - }); - - traverse(ts.ast, { - ImportDeclaration(path) { - path.remove(); - }, - ExportDefaultDeclaration(path) { - path.remove(); - }, - VariableDeclaration(path) { - if ( - path.get('declarations')[0].get('id').node.name === - 'TypeToChartComponent' - ) { - path.remove(); - } - }, - }); - - return ` - const imports = ${JSON.stringify(imports)}; - - export function getChartComponent(chartType) { - ${chartComponents.join('\n')} - } - - export function getCommon() { - return \`${SourceSnippet.formatCode(ts.code())}\`; - } - - export function getImports() { - return imports; - } - `; -} - -function getChartComponents(ts) { - let anchor = null; - const codeChunks = []; - - traverse(ts.ast, { - VariableDeclaration: (path) => { - if ( - path.get('declarations')[0].get('id').node.name === - 'TypeToChartComponent' - ) { - anchor = path; - } - }, - }); - - anchor && - traverse( - anchor.node, - { - ObjectProperty(path) { - if (path.parent.type === 'ObjectExpression') { - let code = ''; - - if ( - Array.isArray(path.node.value.body && path.node.value.body.body) - ) { - code = generator(t.program(path.node.value.body.body), {}).code; - } else { - code = generator(path.node.value.body, {}).code; - } - - codeChunks.push({ - key: path.node.key.name, - code, - }); - } - }, - }, - anchor.scope, - anchor.state, - anchor.parentPath - ); - - return codeChunks; -} - -module.exports = { - generateCodeChunks, -}; diff --git a/packages/cubejs-playground/charts-gen/react/index.js b/packages/cubejs-playground/charts-gen/react/index.js deleted file mode 100644 index 92ab9223ee535..0000000000000 --- a/packages/cubejs-playground/charts-gen/react/index.js +++ /dev/null @@ -1,152 +0,0 @@ -const fs = require('fs-extra'); -const { - SourceSnippet, - TargetSource, - utils, -} = require('@cubejs-templates/core'); -const { pascalCase } = require('change-case'); -const path = require('path'); -const { - DependencyTree, - AppContainer, - DevPackageFetcher, -} = require('@cubejs-backend/templates'); -const { executeCommand } = require('@cubejs-backend/shared'); - -const { generateCodeChunks } = require('./code-chunks-gen'); -const { REPOSITORY } = require('../env'); - -const chartingLibraryTemplates = [ - 'recharts-charts', - 'bizcharts-charts', - 'd3-charts', - 'chartjs-charts', -]; - -const packages = [ - // 'dev-cra', - 'create-react-app', - 'react-charts', -]; - -(async () => { - const fetcher = new DevPackageFetcher(REPOSITORY); - const manifest = await fetcher.manifestJSON(); - const { packagesPath } = await fetcher.downloadPackages(); - - const rootPath = path.resolve(`${__dirname}/../..`); - - const distPath = `${rootPath}/charts-dist/react`; - const reactChartsPath = `${distPath}/react-charts`; - - let dependencies = [['chart.js', '2.9.4']]; - - await Promise.all( - chartingLibraryTemplates.map(async (key) => { - const dashboardAppPath = `${distPath}/${key}`; - const dt = new DependencyTree(manifest, [ - 'react-charting-library', - 'antd-tables', - key, - ]); - - const appContainer = new AppContainer( - dt.getRootNode(), - { - appPath: dashboardAppPath, - packagesPath, - }, - {} - ); - - await appContainer.applyTemplates(); - dependencies = dependencies.concat( - Object.entries(appContainer.sourceContainer.importDependencies) - ); - }) - ); - - const dt = new DependencyTree(manifest, packages); - - const appContainer = new AppContainer(dt.getRootNode(), { - appPath: reactChartsPath, - packagesPath, - }); - - await appContainer.applyTemplates(); - - let code = ''; - const imports = []; - const libNames = []; - - await Promise.all( - chartingLibraryTemplates.map(async (key) => { - const fileContents = await utils.fileContentsRecursive( - `${distPath}/${key}` - ); - - const chartRendererContent = fileContents.find( - ({ fileName }) => fileName === '/src/components/ChartRenderer.js' - ); - - const codeChunksContent = generateCodeChunks( - chartRendererContent.content - ); - - await executeCommand('mv', [ - `${distPath}/${key}`, - `${reactChartsPath}/src`, - ]); - fs.writeFileSync( - `${reactChartsPath}/src/${key}/src/code-chunks.js`, - codeChunksContent - ); - - libNames.push(`${key.replace(/-([^-]+)/, '')}: ${pascalCase(key)}`); - imports.push( - `import ${pascalCase( - key - )} from './${key}/src/components/ChartRenderer';` - ); - }) - ); - - code += imports.join('\n'); - code += ` - const libs = { - ${libNames.join(',\n')} - }; - `; - - const libsSnippet = new SourceSnippet(code); - const appTarget = new TargetSource( - 'app.js', - fs.readFileSync(path.join(reactChartsPath, 'src/App.js'), 'utf-8') - ); - - libsSnippet.mergeTo(appTarget); - fs.writeFileSync(path.join(reactChartsPath, 'src/App.js'), appTarget.code()); - - appContainer.sourceContainer.addImportDependencies( - dependencies - .map(([d, v]) => ({ [d]: v })) - .reduce((a, b) => ({ ...a, ...b })) - ); - await appContainer.ensureDependencies(); - - try { - await executeCommand( - 'npm link @cubejs-client/react', - [], - { - shell: true, - cwd: reactChartsPath, - } - ); - } catch (error) { - console.log( - 'Error trying to link local core dependencies', - error.toString() - ); - } -})(); diff --git a/packages/cubejs-playground/charts-gen/react/move.js b/packages/cubejs-playground/charts-gen/react/move.js deleted file mode 100644 index 6959d83d7b887..0000000000000 --- a/packages/cubejs-playground/charts-gen/react/move.js +++ /dev/null @@ -1,20 +0,0 @@ -const fs = require('fs-extra'); -const path = require('path'); -const { moveRecursively } = require('../utils'); - -const dirPath = path.resolve('../charts-dist/react/react-charts/build'); - -let indexHtml = fs.readFileSync(path.join(dirPath, 'index.html'), 'utf-8'); -indexHtml = indexHtml.replace('', ''); -indexHtml = indexHtml.replace( - /"\/static\//g, - '"/chart-renderers/react/static/' -); - -fs.writeFileSync(path.join(dirPath, 'index.html'), indexHtml); - -moveRecursively(dirPath, path.resolve('../public/chart-renderers/react'), [ - /\.js$/, - /\.css$/, - /\.html$/, -]); diff --git a/packages/cubejs-playground/charts-gen/tsconfig.json b/packages/cubejs-playground/charts-gen/tsconfig.json deleted file mode 100644 index 64f1d894ff63e..0000000000000 --- a/packages/cubejs-playground/charts-gen/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "include": [ - "angular", - "react", - "vue", - "env.js" - ], - "compilerOptions": { - "outDir": "dist", - "rootDir": ".", - "baseUrl": ".", - "allowJs": true, - "checkJs": true, - "noImplicitAny": false, - "strictNullChecks": true, - "strictFunctionTypes": true, - "strictBindCallApply": true, - "strictPropertyInitialization": true, - } -} diff --git a/packages/cubejs-playground/charts-gen/utils.js b/packages/cubejs-playground/charts-gen/utils.js deleted file mode 100644 index 3e2283db3c376..0000000000000 --- a/packages/cubejs-playground/charts-gen/utils.js +++ /dev/null @@ -1,25 +0,0 @@ -const fs = require('fs-extra'); -const path = require('path'); - -function moveRecursively(from, to, includeRegexs = []) { - fs.readdir(from, (_, files) => { - files.forEach((name) => { - const nextFrom = path.join(from, name); - const nextTo = path.join(to, name); - if (fs.lstatSync(nextFrom).isDirectory()) { - moveRecursively(nextFrom, nextTo, includeRegexs); - } else { - if (includeRegexs.some((regex) => name.match(regex))) { - if (!fs.pathExistsSync(path.dirname(nextTo))) { - fs.mkdirSync(path.dirname(nextTo), { recursive: true }); - } - fs.copyFile(nextFrom, nextTo); - } - } - }); - }); -} - -module.exports = { - moveRecursively -} \ No newline at end of file diff --git a/packages/cubejs-playground/charts-gen/vue/build.sh b/packages/cubejs-playground/charts-gen/vue/build.sh deleted file mode 100644 index 6c39ea1abc8bd..0000000000000 --- a/packages/cubejs-playground/charts-gen/vue/build.sh +++ /dev/null @@ -1,18 +0,0 @@ -echo 'Deleting the old build' - -rm -rf ../charts-dist/vue 2> /dev/null -mkdir -p ../charts-dist/vue - -echo 'Scaffolding the app' -node vue/index.js - -echo 'Building the app' -cd ../charts-dist/vue/vue-charts && GENERATE_SOURCEMAP=false npm run build -- --skip-plugins @vue/cli-plugin-eslint -cd - || exit - -echo 'Moving files' -rm -r ../public/chart-renderers/vue 2> /dev/null -mkdir -p ../public/chart-renderers/vue -node vue/move.js - -echo 'Done!' diff --git a/packages/cubejs-playground/charts-gen/vue/code-chunks-gen.js b/packages/cubejs-playground/charts-gen/vue/code-chunks-gen.js deleted file mode 100644 index 99d12912b1ba0..0000000000000 --- a/packages/cubejs-playground/charts-gen/vue/code-chunks-gen.js +++ /dev/null @@ -1,165 +0,0 @@ -const { VueMainSnippet, TargetSource } = require('@cubejs-templates/core'); -const { uniq } = require('ramda'); - -const chartRenderer = ` - - - -`; - -const mainJs = ` -import Vue from "vue"; -import ChartRenderer from "./components/ChartRenderer.vue"; - -Vue.config.productionTip = false; - -new Vue({ - render: (h) => h(ChartRenderer) -}).$mount("#app"); -`; - -const varMap = [ - ['##Token##', 'cubejsToken', 'string'], - ['##ApiUrl##', 'apiUrl', 'string'], - ['##Query##', 'query'], - ['##PivotConfig##', 'pivotConfig'], - ['##ChartType##', 'chartType', 'string'], -]; - -const versionedDeps = { - 'vue-chartkick': '^0.6.0', - 'chart.js': '^2.9.4', -}; - -function generateCodeChunks(sourceContainers) { - const filesByLibrary = {}; - const dependenciesByLibrary = {}; - - sourceContainers.forEach(([libraryName, container]) => { - if (dependenciesByLibrary[libraryName] === undefined) { - dependenciesByLibrary[libraryName] = []; - } - - filesByLibrary[libraryName] = Object.entries(container.fileToTargetSource) - .map(([filePath, targetSource]) => { - if (filePath === '/src/main.js') { - const mainJsTargetSource = new TargetSource('main.js', mainJs); - const snippet = new VueMainSnippet(targetSource.snippet.source); - snippet.mergeTo(mainJsTargetSource); - - dependenciesByLibrary[libraryName] = dependenciesByLibrary[ - libraryName - ].concat(mainJsTargetSource.getImportDependencies()); - - return { - [filePath]: mainJsTargetSource.formattedCode(), - }; - } else if (filePath === '/src/components/ChartRenderer.vue') { - let source = chartRenderer.replace( - '##ChartTemplate##', - targetSource.snippet.templateSource - ); - - const target = new TargetSource('ChartRenderer.vue', source); - targetSource.snippet.mergeTo(target); - - source = target.formattedCode(); - - varMap.forEach(([name, value, type]) => { - const replacee = type === 'string' ? `${name}` : `'${name}'`; - source = source.replace( - replacee, - ['${props.', value, '}'].join('') - ); - }); - - dependenciesByLibrary[libraryName] = dependenciesByLibrary[ - libraryName - ].concat(target.getImportDependencies()); - - return { - [filePath]: source, - }; - } else { - dependenciesByLibrary[libraryName] = dependenciesByLibrary[ - libraryName - ].concat(targetSource.getImportDependencies()); - - return { - [filePath]: targetSource.formattedCode(), - }; - } - }) - .reduce((a, b) => ({ ...a, ...b })); - }); - - const deps = Object.entries(dependenciesByLibrary).reduce( - (memo, [library, dependencies]) => { - return { - ...memo, - [library]: uniq(dependencies).map((d) => - versionedDeps[d] ? [d, versionedDeps[d]] : d - ), - }; - }, - {} - ); - - const chunks = Object.entries(filesByLibrary).map(([libraryName, files]) => { - return ` - if (chartingLibrary === '${libraryName}') { - return { ${Object.entries(files) - .map(([name, content]) => `'${name.replace(/^\//, '')}': \`${content}\``) - .join(',')} }; - } - `; - }); - - return ` - const dependeciesByLibrary = ${JSON.stringify(deps)}; - - export function getCodesandboxFiles(chartingLibrary, props) { - ${chunks.join('\n')} - } - - export function getDependencies(chartingLibrary) { - return dependeciesByLibrary[chartingLibrary]; - } - `; -} - -module.exports = { - generateCodeChunks, -}; diff --git a/packages/cubejs-playground/charts-gen/vue/index.js b/packages/cubejs-playground/charts-gen/vue/index.js deleted file mode 100644 index 9812efe2783fe..0000000000000 --- a/packages/cubejs-playground/charts-gen/vue/index.js +++ /dev/null @@ -1,180 +0,0 @@ -const t = require('@babel/types'); -const traverse = require('@babel/traverse').default; -const fs = require('fs-extra'); -const { SourceSnippet, VueMainSnippet } = require('@cubejs-templates/core'); -const { pascalCase } = require('change-case'); -const path = require('path'); -const { - AppContainer, - DependencyTree, - DevPackageFetcher, -} = require('@cubejs-backend/templates'); -const { executeCommand } = require('@cubejs-backend/shared'); - -const { REPOSITORY } = require('../env'); -const { generateCodeChunks } = require('./code-chunks-gen'); - -const chartingLibraryTemplates = [ - 'vue-chartkick-charts', - // 'vue-chartjs-charts' -]; -const packages = ['dev-cva', 'vue-charts']; - -const rootPath = path.resolve(`${__dirname}/../..`); -const distPath = `${rootPath}/charts-dist/vue`; -const vueChartsPath = `${distPath}/vue-charts`; - -(async () => { - await executeCommand('rm -rf ../../charts-dist/vue', [], { - shell: true, - cwd: path.resolve(__dirname), - }); - - const fetcher = new DevPackageFetcher(REPOSITORY); - const manifest = await fetcher.manifestJSON(); - const { packagesPath } = await fetcher.downloadPackages(); - - let dependencies = [['chart.js', '2.9.4']]; - - const chartLibrarySourceContainers = []; - await Promise.all( - chartingLibraryTemplates.map(async (key) => { - const name = key.split('-')[1]; - const dashboardAppPath = `${distPath}/${key}`; - const dt = new DependencyTree(manifest, ['vue-charting-library', key]); - - const appContainer = new AppContainer( - dt.getRootNode(), - { - appPath: dashboardAppPath, - packagesPath, - }, - {} - ); - - await appContainer.applyTemplates(); - dependencies = dependencies.concat( - Object.entries(appContainer.sourceContainer.importDependencies) - ); - chartLibrarySourceContainers.push([name, appContainer.sourceContainer]); - }) - ); - - const dt = new DependencyTree(manifest, packages); - - const appContainer = new AppContainer(dt.getRootNode(), { - appPath: vueChartsPath, - packagesPath, - }); - - await appContainer.applyTemplates(); - - const chartRenderers = []; - - await Promise.all( - chartingLibraryTemplates.map(async (key) => { - const name = key.split('-')[1]; - if (!name) { - throw new Error(`Unable to parse name out of '${key}'`); - } - const className = pascalCase(`vue-${name}-renderer`); - chartRenderers.push([name, className, key]); - - await executeCommand('mv', [ - `${distPath}/${key}/src`, - `${vueChartsPath}/src/${name}`, - ]); - }) - ); - - const chartRendererTargetSource = appContainer.sourceContainer.getTargetSource( - '/src/ChartRenderer.vue' - ); - const mainTargetSource = appContainer.sourceContainer.getTargetSource( - '/src/main.js' - ); - - traverse(chartRendererTargetSource.ast, { - Property(path) { - if ( - t.isIdentifier(path.node.key) && - path.node.key.name === 'components' && - t.isObjectExpression(path.node.value) - ) { - chartRenderers.forEach(([key, value]) => { - path.node.value.properties.push( - t.objectProperty(t.identifier(key), t.identifier(value)) - ); - }); - } - }, - }); - - const importsContent = []; - chartRenderers.forEach(([key, value]) => { - importsContent.push( - `import ${value} from './${key}/components/ChartRenderer';` - ); - - const mainCode = fs.readFileSync( - path.join(vueChartsPath, 'src', key, 'main.js'), - 'utf-8' - ); - const mainSnippet = new VueMainSnippet(mainCode); - mainSnippet.mergeTo(mainTargetSource); - }); - - const importSnippet = new SourceSnippet(importsContent.join('\n')); - importSnippet.mergeTo(chartRendererTargetSource); - - fs.writeFileSync( - `${vueChartsPath}/src/ChartRenderer.vue`, - chartRendererTargetSource.formattedCode() - ); - fs.writeFileSync( - `${vueChartsPath}/src/main.js`, - mainTargetSource.formattedCode() - ); - - // update imports - chartRendererTargetSource.findAllImports(); - mainTargetSource.findAllImports(); - - await executeCommand( - 'rm ./src/App.vue && mv ./src/ChartContainer.vue src/App.vue', - [], - { - shell: true, - cwd: vueChartsPath, - } - ); - - const codeChunks = generateCodeChunks(chartLibrarySourceContainers); - fs.writeFileSync(`${vueChartsPath}/src/code-chunks.js`, codeChunks); - - appContainer.sourceContainer.addImportDependencies( - dependencies.reduce((memo, d) => { - const [key, version] = Array.isArray(d) ? d : [d, 'latest']; - if (!memo[key] || memo[key] === 'latest') { - memo[key] = version; - } - return memo; - }, {}) - ); - await appContainer.ensureDependencies(); - try { - await executeCommand( - 'npm link @cubejs-client/vue', - [], - { - shell: true, - cwd: vueChartsPath, - } - ); - } catch (error) { - console.log( - 'Error trying to link local core dependencies', - error.toString() - ); - } -})(); diff --git a/packages/cubejs-playground/charts-gen/vue/move.js b/packages/cubejs-playground/charts-gen/vue/move.js deleted file mode 100644 index ec2cad300bebe..0000000000000 --- a/packages/cubejs-playground/charts-gen/vue/move.js +++ /dev/null @@ -1,23 +0,0 @@ -const fs = require('fs-extra'); -const path = require('path'); -const { moveRecursively } = require('../utils'); - -const dirPath = path.resolve('../charts-dist/vue/vue-charts/dist'); - -let indexHtml = fs.readFileSync(path.join(dirPath, 'index.html'), 'utf-8'); - -indexHtml = indexHtml.replace( - //, - '' -); -indexHtml = indexHtml.replace(/\shref="/g, ' href="/chart-renderers/vue'); -indexHtml = indexHtml.replace(/src="/g, 'src="/chart-renderers/vue'); -indexHtml = indexHtml.replace('', ''); - -fs.writeFileSync(path.join(dirPath, 'index.html'), indexHtml); - -moveRecursively(dirPath, path.resolve('../public/chart-renderers/vue'), [ - /\.js$/, - /\.css$/, - /\.html$/, -]); diff --git a/packages/cubejs-playground/charts-gen/yarn.lock b/packages/cubejs-playground/charts-gen/yarn.lock deleted file mode 100644 index 4a8722954c344..0000000000000 --- a/packages/cubejs-playground/charts-gen/yarn.lock +++ /dev/null @@ -1,1129 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/generator@^7.12.15", "@babel/generator@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.8.tgz#bf86fd6af96cf3b74395a8ca409515f89423e070" - integrity sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg== - dependencies: - "@babel/types" "^7.14.8" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" - integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-create-class-features-plugin@^7.14.6": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.8.tgz#a6f8c3de208b1e5629424a9a63567f56501955fc" - integrity sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-member-expression-to-functions" "^7.14.7" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - -"@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== - dependencies: - "@babel/helper-get-function-arity" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-member-expression-to-functions@^7.14.5", "@babel/helper-member-expression-to-functions@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" - integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-plugin-utils@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-replace-supers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" - integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" - integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.12.16", "@babel/parser@^7.14.5", "@babel/parser@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" - integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== - -"@babel/plugin-syntax-typescript@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" - integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-typescript@^7.14.5": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz#6e9c2d98da2507ebe0a883b100cde3c7279df36c" - integrity sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.6" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-typescript" "^7.14.5" - -"@babel/preset-typescript@^7.12.16": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.14.5.tgz#aa98de119cf9852b79511f19e7f44a2d379bcce0" - integrity sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-typescript" "^7.14.5" - -"@babel/template@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/traverse@^7.12.9", "@babel/traverse@^7.14.5": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" - integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.8" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.8" - "@babel/types" "^7.14.8" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.12.13", "@babel/types@^7.14.5", "@babel/types@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.8.tgz#38109de8fcadc06415fbd9b74df0065d4d41c728" - integrity sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q== - dependencies: - "@babel/helper-validator-identifier" "^7.14.8" - to-fast-properties "^2.0.0" - -"@cubejs-backend/shared@^0.28.2": - version "0.28.2" - resolved "https://registry.yarnpkg.com/@cubejs-backend/shared/-/shared-0.28.2.tgz#cde1e12f6eaeb224842dd2eae592de7b40e3706e" - integrity sha512-VRTNnH/2FrHVUeigincLrp7ROM3r4Kor0K0MKPYm95BaIva7JIlzyVk3C2noP64gKrRN2xjAzBxDuGRyL73D9Q== - dependencies: - "@oclif/color" "^0.1.2" - bytes "^3.1.0" - cli-progress "^3.9.0" - cross-spawn "^7.0.3" - decompress "^4.2.1" - env-var "^6.3.0" - fs-extra "^9.1.0" - http-proxy-agent "^4.0.1" - moment-range "^4.0.1" - moment-timezone "^0.5.33" - node-fetch "^2.6.1" - throttle-debounce "^3.0.1" - -"@cubejs-backend/templates@^0.28.2": - version "0.28.2" - resolved "https://registry.yarnpkg.com/@cubejs-backend/templates/-/templates-0.28.2.tgz#846c7cf85a67342ace8488f88061abd5e482b2a2" - integrity sha512-zJQ0jIcoWTc80+lATWHjQ9wfFqeUKdlymcQ+eepr+fNrJCgoDHa7I2gY270wFx5kJrvAHaorTNd2H6xhJVGOSw== - dependencies: - "@cubejs-backend/shared" "^0.28.2" - cross-spawn "^7.0.3" - decompress "^4.2.1" - decompress-targz "^4.1.1" - fs-extra "^9.1.0" - node-fetch "^2.6.1" - ramda "^0.27.1" - source-map-support "^0.5.19" - -"@cubejs-templates/core@^0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@cubejs-templates/core/-/core-0.0.7.tgz#4028c6d4d652a6e540da93b38b46d78b23082bbb" - integrity sha512-a83qBU5Ff/VaDidQUCiM+WlReAL8yJWi1nTrIdS4//lsqxcDyNK1jYqGr7qKJMHCDEJz/UUWfzbO7nXq718J4Q== - dependencies: - "@babel/generator" "^7.12.15" - "@babel/parser" "^7.12.16" - "@babel/preset-typescript" "^7.12.16" - "@babel/traverse" "^7.12.9" - "@babel/types" "^7.12.13" - fs-extra "^9.0.1" - semver "^7.3.2" - -"@oclif/color@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@oclif/color/-/color-0.1.2.tgz#28b07e2850d9ce814d0b587ce3403b7ad8f7d987" - integrity sha512-M9o+DOrb8l603qvgz1FogJBUGLqcMFL1aFg2ZEL0FbXJofiNTLOWIeB4faeZTLwE6dt0xH9GpCVpzksMMzGbmA== - dependencies: - ansi-styles "^3.2.1" - chalk "^3.0.0" - strip-ansi "^5.2.0" - supports-color "^5.4.0" - tslib "^1" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bl@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" - integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer@^5.2.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bytes@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -capital-case@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" - integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -change-case@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" - integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== - dependencies: - camel-case "^4.1.2" - capital-case "^1.0.4" - constant-case "^3.0.4" - dot-case "^3.0.4" - header-case "^2.0.4" - no-case "^3.0.4" - param-case "^3.0.4" - pascal-case "^3.1.2" - path-case "^3.0.4" - sentence-case "^3.0.4" - snake-case "^3.0.4" - tslib "^2.0.3" - -cli-progress@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.9.0.tgz#25db83447deb812e62d05bac1af9aec5387ef3d4" - integrity sha512-g7rLWfhAo/7pF+a/STFH/xPyosaL1zgADhI0OM83hl3c7S43iGvJWEAV2QuDOnQ8i6EMBj/u4+NTd0d5L+4JfA== - dependencies: - colors "^1.1.2" - string-width "^4.2.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -commander@^2.8.1: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -constant-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" - integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case "^2.0.2" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -debug@4, debug@^4.1.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" - integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== - dependencies: - file-type "^5.2.0" - is-stream "^1.1.0" - tar-stream "^1.5.2" - -decompress-tarbz2@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" - integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== - dependencies: - decompress-tar "^4.1.0" - file-type "^6.1.0" - is-stream "^1.1.0" - seek-bzip "^1.0.5" - unbzip2-stream "^1.0.9" - -decompress-targz@^4.0.0, decompress-targz@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" - integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== - dependencies: - decompress-tar "^4.1.1" - file-type "^5.2.0" - is-stream "^1.1.0" - -decompress-unzip@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" - integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= - dependencies: - file-type "^3.8.0" - get-stream "^2.2.0" - pify "^2.3.0" - yauzl "^2.4.2" - -decompress@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" - integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== - dependencies: - decompress-tar "^4.0.0" - decompress-tarbz2 "^4.0.0" - decompress-targz "^4.0.0" - decompress-unzip "^4.0.1" - graceful-fs "^4.1.10" - make-dir "^1.0.0" - pify "^2.3.0" - strip-dirs "^2.0.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -end-of-stream@^1.0.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -env-var@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/env-var/-/env-var-6.3.0.tgz#b4ace5bcd1d293629a2c509ae7b46f8add2f8892" - integrity sha512-gaNzDZuVaJQJlP2SigAZLu/FieZN5MzdN7lgHNehESwlRanHwGQ/WUtJ7q//dhrj3aGBZM45yEaKOuvSJaf4mA== - -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.0, es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -file-type@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" - integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= - -file-type@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" - integrity sha1-LdvqfHP/42No365J3DOMBYwritY= - -file-type@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" - integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@^9.0.1, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -graceful-fs@^4.1.10, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -header-case@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" - integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== - dependencies: - capital-case "^1.0.4" - tslib "^2.0.3" - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-natural-number@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" - integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= - -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= - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -moment-range@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/moment-range/-/moment-range-4.0.2.tgz#f7c3863df2a1ed7fd1822ba5a7bcf53a78701be9" - integrity sha512-n8sceWwSTjmz++nFHzeNEUsYtDqjgXgcOBzsHi+BoXQU2FW+eU92LUaK8gqOiSu5PG57Q9sYj1Fz4LRDj4FtKA== - dependencies: - es6-symbol "^3.1.0" - -moment-timezone@^0.5.33: - version "0.5.33" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" - integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== - dependencies: - moment ">= 2.9.0" - -"moment@>= 2.9.0": - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" - integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path@^0.12.7: - version "0.12.7" - resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" - integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= - dependencies: - process "^0.11.1" - util "^0.10.3" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.1: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -ramda@^0.27.1: - version "0.27.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" - integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== - -readable-stream@^2.3.0, readable-stream@^2.3.5: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -safe-buffer@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -seek-bzip@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" - integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== - dependencies: - commander "^2.8.1" - -semver@^7.3.2: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -sentence-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" - integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -source-map-support@^0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-dirs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" - integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== - dependencies: - is-natural-number "^4.0.1" - -supports-color@^5.3.0, supports-color@^5.4.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -tar-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - -throttle-debounce@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" - integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== - -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= - -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -tslib@^1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" - integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== - -unbzip2-stream@^1.0.9: - version "1.4.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" - integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -upper-case-first@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" - integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== - dependencies: - tslib "^2.0.3" - -upper-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" - integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== - dependencies: - tslib "^2.0.3" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -xtend@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yauzl@^2.4.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" From c66cbbe06c0269351395583cef8df64c0d1720ab Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 14 Aug 2026 08:43:27 -0700 Subject: [PATCH 2/4] fix(deps): bump uuid from 8.3.2 to 11.1.1 across the packages that declare it (#11534) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(deps): bump uuid from 8.3.2 to 11.1.1 across the packages that declare it `uuid@^8.3.2` is affected by GHSA-w5hq-g745-h8pq (moderate) — "Missing buffer bounds check in v3/v5/v6 when buf is provided" — first patched in 11.1.1. Nine packages declared it: api-gateway, backend-native, backend-shared, clickhouse-driver, cubestore-driver, databricks-jdbc-driver, playground, schema-compiler and server-core. Chose `^11.1.1` rather than the newest 14.x deliberately: it is the lowest version that clears the advisory, and it dedupes with `cubejs-client-core`, which already declares `^11.1.0` — so the tree ends up with a single 11.1.1 rather than gaining a second modern major. The jump is 8 -> 11 but the API surface used here is unchanged. Every call site uses named imports, all of which v11 still exports: - `v4` (server-core, api-gateway x3, schema-compiler, cubestore-driver, clickhouse-driver, playground, backend-native test) - `v1` + `v5` (backend-shared `process.ts`) - `parse` (server-core `CompilerApi.ts`) Nothing imports the default export, which is what v7 removed. v11 ships dual CJS/ESM with a `require` condition, so the CommonJS consumers here resolve `dist/cjs/index.js` — no ESM interop change. Verified each shape against 11.1.1 rather than assuming: `v5(v1(), v1())` returns a well-formed v5 UUID, `parse(v4())` returns 16 bytes, and `v4()` is distinct across calls. `cubejs-backend-shared` typechecks clean and its 392 tests pass; `processUid` — the one non-v4 consumer — generates correctly from the built output. Note this does not remove uuid 8/9/10 from the lockfile: aws-sdk, sockjs, snowflake-sdk, @google-cloud/storage, @azure/msal-node, @cypress/request, dockerode and gaxios all pull their own copies transitively. Those are outside what this repo declares, and the advisory alert is raised against the declared dependency. Co-Authored-By: Claude Opus 5 (1M context) * fix(deps): actually dedupe uuid 11.x and drop the stale @types/uuid stubs Two review follow-ups, the first of which is a correction to this PR's own claim. **The lockfile did not dedupe.** The description asserted that `^11.1.1` collapses with `cubejs-client-core`'s `^11.1.0` into a single 11.1.1. It did not: yarn v1 kept the pre-existing `uuid@^11.1.0 -> 11.1.0` resolution rather than re-resolving it upward, so client-core and the transitive `@cubejs-backend/jdbc` still shipped **11.1.0** — which is before the GHSA-w5hq-g745-h8pq fix, i.e. exactly the version this PR exists to remove. The alert would have kept firing on that copy. Bumped `cubejs-client-core` to `^11.1.1` and dropped the stale lock entry so both ranges re-resolve together. Verified from the lockfile rather than asserted this time: `uuid@^11.1.0, uuid@^11.1.1` now share one entry at 11.1.1, and the only 11.x version present is 11.1.1. **Removed six now-obsolete `@types/uuid` declarations** (api-gateway, schema-compiler, server-core, playground, databricks-jdbc-driver, and query-orchestrator, which does not even declare `uuid`). uuid v11 bundles its own types and the DefinitelyTyped stub is deprecated for v7+. TS resolves the bundled `dist/cjs/index.d.ts` first, so this was not breaking a build today — but it left a v8-shaped stub in the tree that could take over under a `typeRoots`/`paths` setup or outlive the runtime dependency. Checked the types actually resolve without the stub: `v4()`, `v5(v1(), v1())` and `parse()` all typecheck under `strict` with `types: []`, against uuid's own declarations, and `@types/uuid` is now absent from both the lockfile and `node_modules`. Co-Authored-By: Claude Opus 5 (1M context) --------- Co-authored-by: Claude Opus 5 (1M context) --- packages/cubejs-api-gateway/package.json | 3 +-- packages/cubejs-backend-native/package.json | 2 +- packages/cubejs-backend-shared/package.json | 2 +- packages/cubejs-clickhouse-driver/package.json | 2 +- packages/cubejs-client-core/package.json | 2 +- packages/cubejs-cubestore-driver/package.json | 2 +- packages/cubejs-databricks-jdbc-driver/package.json | 3 +-- packages/cubejs-playground/package.json | 3 +-- packages/cubejs-query-orchestrator/package.json | 1 - packages/cubejs-schema-compiler/package.json | 3 +-- packages/cubejs-server-core/package.json | 3 +-- yarn.lock | 13 ++++--------- 12 files changed, 14 insertions(+), 25 deletions(-) diff --git a/packages/cubejs-api-gateway/package.json b/packages/cubejs-api-gateway/package.json index 2b1c78f8bfea3..b3412ea4f13a1 100644 --- a/packages/cubejs-api-gateway/package.json +++ b/packages/cubejs-api-gateway/package.json @@ -49,7 +49,7 @@ "nexus": "^1.1.0", "node-fetch": "^2.6.1", "ramda": "^0.27.0", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "zod": "^4.1.13" }, "devDependencies": { @@ -62,7 +62,6 @@ "@types/node-fetch": "^2.5.8", "@types/ramda": "^0.27.32", "@types/supertest": "^2.0.10", - "@types/uuid": "^8.3.1", "jest": "^29", "mysql": "^2.18.1", "should": "^13.2.3", diff --git a/packages/cubejs-backend-native/package.json b/packages/cubejs-backend-native/package.json index 320e9776a94fe..e9bfc6379aae7 100644 --- a/packages/cubejs-backend-native/package.json +++ b/packages/cubejs-backend-native/package.json @@ -47,7 +47,7 @@ "jest-bench": "^29", "pg": "^8.11.3", "typescript": "~5.2.2", - "uuid": "^8.3.2" + "uuid": "^11.1.1" }, "dependencies": { "@cubejs-backend/cubesql": "1.7.19", diff --git a/packages/cubejs-backend-shared/package.json b/packages/cubejs-backend-shared/package.json index 38f8770f6f1dc..39730b7180219 100644 --- a/packages/cubejs-backend-shared/package.json +++ b/packages/cubejs-backend-shared/package.json @@ -56,7 +56,7 @@ "shelljs": "^0.8.5", "tar": "^7.5.22", "throttle-debounce": "^3.0.1", - "uuid": "^8.3.2" + "uuid": "^11.1.1" }, "publishConfig": { "access": "public" diff --git a/packages/cubejs-clickhouse-driver/package.json b/packages/cubejs-clickhouse-driver/package.json index 7f2aed7c1947f..7fb1a4dcf08a0 100644 --- a/packages/cubejs-clickhouse-driver/package.json +++ b/packages/cubejs-clickhouse-driver/package.json @@ -33,7 +33,7 @@ "@cubejs-backend/shared": "1.7.19", "moment": "^2.24.0", "sqlstring": "^2.3.1", - "uuid": "^8.3.2" + "uuid": "^11.1.1" }, "license": "Apache-2.0", "devDependencies": { diff --git a/packages/cubejs-client-core/package.json b/packages/cubejs-client-core/package.json index 8db67b8dc0ae5..e0e297bc02277 100644 --- a/packages/cubejs-client-core/package.json +++ b/packages/cubejs-client-core/package.json @@ -40,7 +40,7 @@ "dayjs": "^1.10.4", "ramda": "^0.27.2", "url-search-params-polyfill": "^7.0.0", - "uuid": "^11.1.0" + "uuid": "^11.1.1" }, "scripts": { "build:client-core": "rm -rf dist && npm run tsc", diff --git a/packages/cubejs-cubestore-driver/package.json b/packages/cubejs-cubestore-driver/package.json index b63a020ae3911..fa795e02569fb 100644 --- a/packages/cubejs-cubestore-driver/package.json +++ b/packages/cubejs-cubestore-driver/package.json @@ -36,7 +36,7 @@ "node-fetch": "^2.6.1", "sqlstring": "^2.3.3", "tempy": "^1.0.1", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "ws": "^7.4.3" }, "devDependencies": { diff --git a/packages/cubejs-databricks-jdbc-driver/package.json b/packages/cubejs-databricks-jdbc-driver/package.json index 659f18f1a7718..5a165d6239b6f 100644 --- a/packages/cubejs-databricks-jdbc-driver/package.json +++ b/packages/cubejs-databricks-jdbc-driver/package.json @@ -37,14 +37,13 @@ "node-fetch": "^2.6.1", "ramda": "^0.27.2", "source-map-support": "^0.5.19", - "uuid": "^8.3.2" + "uuid": "^11.1.1" }, "devDependencies": { "@cubejs-backend/linter": "1.7.19", "@types/jest": "^29", "@types/node": "^22", "@types/ramda": "^0.27.34", - "@types/uuid": "^8.3.4", "jest": "^29", "typescript": "~5.2.2" }, diff --git a/packages/cubejs-playground/package.json b/packages/cubejs-playground/package.json index 995f1ae97beff..c5ad85e64dd7f 100644 --- a/packages/cubejs-playground/package.json +++ b/packages/cubejs-playground/package.json @@ -62,7 +62,7 @@ "recursive-readdir": "2.2.3", "sql-formatter": "^3.1.0", "throttle-debounce": "^3.0.1", - "uuid": "^8.3.2" + "uuid": "^11.1.1" }, "devDependencies": { "@ant-design/compatible": "^1.0.1", @@ -77,7 +77,6 @@ "@types/react-dom": "^18.3.0", "@types/react-router-dom": "^5.3.3", "@types/styled-components": "^5.1.34", - "@types/uuid": "^8.3.1", "@vitejs/plugin-react": "^6", "antd": "4.16.13", "eslint-config-airbnb": "^18.1.0", diff --git a/packages/cubejs-query-orchestrator/package.json b/packages/cubejs-query-orchestrator/package.json index 5954e63317953..43dd73e30e485 100644 --- a/packages/cubejs-query-orchestrator/package.json +++ b/packages/cubejs-query-orchestrator/package.json @@ -41,7 +41,6 @@ "@types/jest": "^29", "@types/node": "^22", "@types/ramda": "^0.27.32", - "@types/uuid": "^8.3.0", "jest": "^29", "ts-jest": "^29", "typescript": "~5.2.2" diff --git a/packages/cubejs-schema-compiler/package.json b/packages/cubejs-schema-compiler/package.json index 09b9cd3ddec3f..07c10f8ba960c 100644 --- a/packages/cubejs-schema-compiler/package.json +++ b/packages/cubejs-schema-compiler/package.json @@ -54,7 +54,7 @@ "node-dijkstra": "^2.5.0", "ramda": "^0.27.2", "syntax-error": "^1.3.0", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "workerpool": "^9.2.0", "yaml": "^2.7.1" }, @@ -74,7 +74,6 @@ "@types/ramda": "^0.27.34", "@types/sqlstring": "^2.3.0", "@types/syntax-error": "^1.4.1", - "@types/uuid": "^8.3.0", "jest": "^29", "moment": "^2.30.1", "mysql": "^2.18.1", diff --git a/packages/cubejs-server-core/package.json b/packages/cubejs-server-core/package.json index cd0b6f8fc71c1..8fcf5675d1cdf 100644 --- a/packages/cubejs-server-core/package.json +++ b/packages/cubejs-server-core/package.json @@ -58,7 +58,7 @@ "semver": "^7.6.3", "serve-static": "^1.13.2", "sqlstring": "^2.3.1", - "uuid": "^8.3.2", + "uuid": "^11.1.1", "ws": "^7.5.3" }, "devDependencies": { @@ -72,7 +72,6 @@ "@types/node": "^22", "@types/node-fetch": "^2.5.7", "@types/ramda": "^0.27.34", - "@types/uuid": "^8.3.0", "jest": "^29", "typescript": "~5.2.2" }, diff --git a/yarn.lock b/yarn.lock index 142b68dd722b5..b78a2371190e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8720,11 +8720,6 @@ resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.2.tgz#38ecb64f01aa0d02b7c8f4222d7c38af6316fef8" integrity sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g== -"@types/uuid@^8.3.0", "@types/uuid@^8.3.1", "@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - "@types/wrap-ansi@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd" @@ -24098,10 +24093,10 @@ uuid@^10.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== -uuid@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" - integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== +uuid@^11.1.0, uuid@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.1.tgz#f6d81d2e1c65d00762e5e29b16c5d2d995e208ad" + integrity sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ== uuid@^8.0.0, uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" From 33c88288728ba29244ecc950107bb5f9d16d6bde Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 14 Aug 2026 08:49:49 -0700 Subject: [PATCH 3/4] fix(deps): float handlebars, form-data and tar to clear two criticals (#11549) Lockfile-only. Three descriptors already admitted the patched versions; the lockfile was just stale. Deleted those blocks and re-resolved, leaving everything else untouched (24 insertions, 37 deletions). handlebars ^4.7.7 4.7.7 -> 4.7.9 CLOSES #7891 form-data ^2.3.1, ^2.5.0 2.5.1 -> 2.5.6 CLOSES #7589 tar ^7.4.0/^7.4.3/^7.5.2 7.4.3, 7.5.2 -> 7.5.22 (partial) form-data's 4.x copy is untouched: the advisory is `< 2.5.4`, so 4.0.5 was never affected. Note the open PR #11109 bumps 4.0.5 -> 4.0.6, which is the wrong copy and does not close #7589. tar does NOT close. Two vulnerable resolutions remain and neither can float: tar@7.5.11 an EXACT pin from lerna@^9.0.7 tar@6.2.1 the ^6.x cluster, a major boundary So this takes tar from five vulnerable resolutions to two; #8252 stays open pending a lerna bump or an override. Verified: no version downgraded (removed 2.5.1/4.7.7/7.4.3/7.5.2, added 2.5.6/4.7.9 plus hasown 2.0.4 as a new transitive), and `yarn install --frozen-lockfile` succeeds, which is the consistency gate CI applies. Co-authored-by: Claude Opus 5 (1M context) --- yarn.lock | 61 ++++++++++++++++++++++--------------------------------- 1 file changed, 24 insertions(+), 37 deletions(-) diff --git a/yarn.lock b/yarn.lock index b78a2371190e8..37cbf0af7f0ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11178,7 +11178,7 @@ columnify@1.6.0: strip-ansi "^6.0.1" wcwidth "^1.0.0" -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -14062,13 +14062,16 @@ forever-agent@~0.6.1: integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@^2.3.1, form-data@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + version "2.5.6" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.6.tgz#ef39b3d99e2fc9f25420c0db7962fe36cafcd244" + integrity sha512-Ogz/E85h9tlfJzpI6TuFpGcHZFhLrb9Gw8wq9v40CxSCPnv7ahKr6Xgtkn0KYCDQJ8DNn5VoMO8EXr9V5PadyA== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.4" + mime-types "^2.1.35" + safe-buffer "^5.2.1" form-data@^4.0.0, form-data@^4.0.5, form-data@~4.0.0: version "4.0.5" @@ -14742,12 +14745,12 @@ handle-thing@^2.0.0: integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + version "4.7.9" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.9.tgz#6f139082ab58dc4e5a0e51efe7db5ae890d56a0f" + integrity sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ== dependencies: minimist "^1.2.5" - neo-async "^2.6.0" + neo-async "^2.6.2" source-map "^0.6.1" wordwrap "^1.0.0" optionalDependencies: @@ -14843,6 +14846,13 @@ hasown@^2.0.0, hasown@^2.0.2: dependencies: function-bind "^1.1.2" +hasown@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.4.tgz#8c62d8cb90beb2aad5d0a5b67581ad9854c3f003" + integrity sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A== + dependencies: + function-bind "^1.1.2" + history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -17815,7 +17825,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.29, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.29, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -18336,7 +18346,7 @@ negotiator@^1.0.0: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a" integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== -neo-async@^2.6.0, neo-async@^2.6.2: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -21744,7 +21754,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -23076,30 +23086,7 @@ tar@^6.0.2, tar@^6.1.11, tar@^6.1.2, tar@^6.2.1: mkdirp "^1.0.3" yallist "^4.0.0" -tar@^7.4.0: - version "7.4.3" - resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571" - integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw== - dependencies: - "@isaacs/fs-minipass" "^4.0.0" - chownr "^3.0.0" - minipass "^7.1.2" - minizlib "^3.0.1" - mkdirp "^3.0.1" - yallist "^5.0.0" - -tar@^7.4.3, tar@^7.5.2: - version "7.5.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-7.5.2.tgz#115c061495ec51ff3c6745ff8f6d0871c5b1dedc" - integrity sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg== - dependencies: - "@isaacs/fs-minipass" "^4.0.0" - chownr "^3.0.0" - minipass "^7.1.2" - minizlib "^3.1.0" - yallist "^5.0.0" - -tar@^7.5.22: +tar@^7.4.0, tar@^7.4.3, tar@^7.5.2, tar@^7.5.22: version "7.5.22" resolved "https://registry.yarnpkg.com/tar/-/tar-7.5.22.tgz#a696f998136e71487dc3f869a85bba2c67971ba9" integrity sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA== From 53482ec36a684a6ca84aa06c80f4044789125182 Mon Sep 17 00:00:00 2001 From: Artyom Keydunov Date: Fri, 14 Aug 2026 12:12:26 -0700 Subject: [PATCH 4/4] docs(mcp): document the report read/update/delete tools (#11563) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs(mcp): document the report read/update/delete tools CUB-3906 (#14030 in cubejs-enterprise) added readReport, updateReport and deleteReport to the MCP server, taking the surface from 20 tools to 23 and the always-prompt destructive set from four to six. The directory listing syncs its tool list from the live server, so undocumented tools show up in a published listing with nothing to read about them. Documents all three, and carries over the warning their descriptions already give the model: a dashboard widget resolves its report from its own workbook's report list, so recreating a report instead of updating it in place — or moving one between workbooks — empties every tile pointing at it. Co-Authored-By: Claude Opus 5 * docs(mcp): fix the stale dashboard-tool count above the build sequence "The five dashboard tools" matched the old 5-row table; the report tools take it to 8. Splits the group the way the section actually uses it — four tools build a dashboard in the order the Steps block walks, four inspect or change an existing one — so the sentence stays true as the group grows and says something useful about which is which. --------- Co-authored-by: Claude Opus 5 --- .../docs/integrations/mcp-server.mdx | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/docs-mintlify/docs/integrations/mcp-server.mdx b/docs-mintlify/docs/integrations/mcp-server.mdx index aa01896cce835..71c05e89811a4 100644 --- a/docs-mintlify/docs/integrations/mcp-server.mdx +++ b/docs-mintlify/docs/integrations/mcp-server.mdx @@ -229,7 +229,7 @@ neither `listDeployments` nor the `chat` selection can reach an excluded deploym ## Available actions -The MCP server exposes 20 tools, grouped below. +The MCP server exposes 23 tools, grouped below. Every tool runs as the authenticated user. Queries respect the same [permissions][ref-roles] as the rest of Cube, including row-level security — MCP is a new @@ -239,9 +239,10 @@ way to reach your data, not a new access surface. Each tool is annotated as read-only or destructive. MCP clients that honor these annotations — including Claude — run read-only tools automatically and **always ask for -confirmation** before any of the four destructive ones: `updateDashboard`, -`publishDashboard`, `writeDataModelFile`, and `deleteDataModelFile`. Nothing that changes -a dashboard or your data model happens without an explicit approval. +confirmation** before any of the six destructive ones: `updateReport`, `deleteReport`, +`updateDashboard`, `publishDashboard`, `writeDataModelFile`, and `deleteDataModelFile`. +Nothing that changes a report, a dashboard, or your data model happens without an explicit +approval. ### Deployments and chat @@ -274,6 +275,9 @@ programmatically. Creating and editing workbooks requires the Explorer role or h | `readWorkbook` | Reads a workbook — its name and its current dashboard draft and published configs. | Read-only | | `createWorkbook` | Creates a new empty workbook, the container that holds reports and a dashboard. | Write | | `createReport` | Saves a query plus its visualization as a report inside a workbook, and returns the `reportId` a chart widget references. | Write | +| `readReport` | Reads one saved report by id — its title, SQL, chart spec, placement, and a shareable URL. | Read-only | +| `updateReport` | Edits an existing report in place, keeping its `reportId`. Send only the fields you want to change. | Destructive — prompts | +| `deleteReport` | Deletes a report. | Destructive — prompts | | `updateDashboard` | Saves the dashboard layout to the workbook **draft**. Replaces the full widget set and does not go live. | Destructive — prompts | | `publishDashboard` | Publishes the current draft to make it live. Idempotent — republishing an unchanged draft is a no-op. | Destructive — prompts | @@ -281,6 +285,13 @@ Drafts are the safety net here: `updateDashboard` only ever writes to the draft, published dashboard keeps serving its previous version until you approve `publishDashboard`. See [Build a dashboard](#build-a-dashboard) for the full sequence. +**To change an existing report, use `updateReport` — never recreate it.** A dashboard's +chart widget points at a specific `reportId`, so replacing a report with a new one orphans +every widget referencing it. The same caution applies to moving a report between workbooks: +a widget resolves its report from its *own* workbook's report list, so changing a report's +`workbookId` empties the tiles on the old workbook's dashboard. Call `readWorkbook` and +re-point those widgets with `updateDashboard` first. + ### Data model editing These tools read and edit the semantic model **source** files. They are registered only @@ -374,7 +385,9 @@ members, then run your own SQL with `runQuery`. ### Build a dashboard -The five dashboard tools are designed to be used in order. +Four of the dashboard tools build a new dashboard, and they are designed to be used in +order. The rest — `readWorkbook`, `readReport`, `updateReport`, `deleteReport` — are for +inspecting and changing one that already exists. @@ -398,7 +411,9 @@ The five dashboard tools are designed to be used in order. To change a dashboard later, call `readWorkbook` first and edit on top of the current -draft rather than overwriting it. +draft rather than overwriting it. To change one chart rather than the layout, call +`readReport` on the widget's `reportId` and edit it with `updateReport` — that keeps the +id, so every widget pointing at it keeps rendering. ### Edit the data model