@datarecce/ui 0.1.41 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -133
- package/dist/AuthModal-C8LetZNB.js +23 -0
- package/dist/AuthModal-C8LetZNB.js.map +1 -0
- package/dist/LineageCanvas-CR38SDYr.d.ts +41 -0
- package/dist/LineageCanvas-CR38SDYr.d.ts.map +1 -0
- package/dist/ResultErrorFallback-C7c-TN1p.js +3 -0
- package/dist/ResultErrorFallback-C7c-TN1p.js.map +1 -0
- package/dist/RouteConfigContext-z8YNimdP.d.ts +172 -0
- package/dist/RouteConfigContext-z8YNimdP.d.ts.map +1 -0
- package/dist/RunProgress-DyFIALbI.d.ts +429 -0
- package/dist/RunProgress-DyFIALbI.d.ts.map +1 -0
- package/dist/ScreenshotDataGrid-BfxYUThx.d.ts +64 -0
- package/dist/ScreenshotDataGrid-BfxYUThx.d.ts.map +1 -0
- package/dist/SplitPane-B-BLxZaQ.d.ts +1427 -0
- package/dist/SplitPane-B-BLxZaQ.d.ts.map +1 -0
- package/dist/advanced.d.ts +18 -0
- package/dist/advanced.d.ts.map +1 -0
- package/dist/advanced.js +3 -0
- package/dist/advanced.js.map +1 -0
- package/dist/api-ZZ4cc9b9.d.ts +255 -0
- package/dist/api-ZZ4cc9b9.d.ts.map +1 -0
- package/dist/api-_i6BZPkM.js +3 -0
- package/dist/api-_i6BZPkM.js.map +1 -0
- package/dist/api.d.ts +3 -2
- package/dist/api.js +2 -100
- package/dist/colors--47Kkns4.js +3 -0
- package/dist/colors--47Kkns4.js.map +1 -0
- package/dist/colors-vY9Yzui0.d.ts +255 -0
- package/dist/colors-vY9Yzui0.d.ts.map +1 -0
- package/dist/components-run.d.ts +8 -0
- package/dist/components-run.js +2 -0
- package/dist/components.d.ts +22 -2
- package/dist/components.js +2 -86
- package/dist/const-DbXBkrxT.js +3 -0
- package/dist/const-DbXBkrxT.js.map +1 -0
- package/dist/constants-DD5vJv2q.js +3 -0
- package/dist/constants-DD5vJv2q.js.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.js +2 -0
- package/dist/contexts.d.ts +7 -0
- package/dist/contexts.js +2 -0
- package/dist/flag-CiR2E5oz.d.ts +898 -0
- package/dist/flag-CiR2E5oz.d.ts.map +1 -0
- package/dist/flag-koeDAqr3.js +3 -0
- package/dist/flag-koeDAqr3.js.map +1 -0
- package/dist/hooks.d.ts +15 -2
- package/dist/hooks.js +2 -43
- package/dist/index-BFkbe0aF.d.ts +698 -0
- package/dist/index-BFkbe0aF.d.ts.map +1 -0
- package/dist/index-Ba3hp2Ng.d.ts +471 -0
- package/dist/index-Ba3hp2Ng.d.ts.map +1 -0
- package/dist/index-C_kD4ZQ3.d.ts +1079 -0
- package/dist/index-C_kD4ZQ3.d.ts.map +1 -0
- package/dist/index-CiPcALu4.d.ts +146 -0
- package/dist/index-CiPcALu4.d.ts.map +1 -0
- package/dist/index-CkXLPYZY.d.ts +13 -0
- package/dist/index-CkXLPYZY.d.ts.map +1 -0
- package/dist/index-DTCpHvX_.d.ts +211 -0
- package/dist/index-DTCpHvX_.d.ts.map +1 -0
- package/dist/index-DVoQsx5c.d.ts +349 -0
- package/dist/index-DVoQsx5c.d.ts.map +1 -0
- package/dist/index-DmwYRgDR.d.ts +192 -0
- package/dist/index-DmwYRgDR.d.ts.map +1 -0
- package/dist/index-N8N7XmRj.d.ts +130 -0
- package/dist/index-N8N7XmRj.d.ts.map +1 -0
- package/dist/index-h_fw6R9U.d.ts +1501 -0
- package/dist/index-h_fw6R9U.d.ts.map +1 -0
- package/dist/index-o48TPoFN.d.ts +734 -0
- package/dist/index-o48TPoFN.d.ts.map +1 -0
- package/dist/index.d.ts +24 -2
- package/dist/index.js +2 -198
- package/dist/keepAlive-CEzyrDfg.js +3 -0
- package/dist/keepAlive-CEzyrDfg.js.map +1 -0
- package/dist/lib/api/axiosClient.d.ts +8 -0
- package/dist/lib/api/axiosClient.d.ts.map +1 -0
- package/dist/lib/api/axiosClient.js +3 -0
- package/dist/lib/api/axiosClient.js.map +1 -0
- package/dist/lib/api/track.d.ts +137 -0
- package/dist/lib/api/track.d.ts.map +1 -0
- package/dist/lib/api/track.js +2 -0
- package/dist/lib/api/user.d.ts +16 -0
- package/dist/lib/api/user.d.ts.map +1 -0
- package/dist/lib/api/user.js +2 -0
- package/dist/lib/const.d.ts +8 -0
- package/dist/lib/const.d.ts.map +1 -0
- package/dist/lib/const.js +2 -0
- package/dist/lib/result/ResultErrorFallback.d.ts +8 -0
- package/dist/lib/result/ResultErrorFallback.d.ts.map +1 -0
- package/dist/lib/result/ResultErrorFallback.js +2 -0
- package/dist/primitives-CgGUvwHB.d.ts +914 -0
- package/dist/primitives-CgGUvwHB.d.ts.map +1 -0
- package/dist/primitives.d.ts +12 -0
- package/dist/primitives.js +2 -0
- package/dist/result.d.ts +4 -0
- package/dist/result.js +2 -0
- package/dist/src-BgHSbbHk.js +67 -0
- package/dist/src-BgHSbbHk.js.map +1 -0
- package/dist/styles.css +478 -4
- package/dist/theme-CeWzymUn.js +64 -0
- package/dist/theme-CeWzymUn.js.map +1 -0
- package/dist/theme.d.ts +3 -2
- package/dist/theme.js +2 -9
- package/dist/track-9ZQpBlUK.js +3 -0
- package/dist/track-9ZQpBlUK.js.map +1 -0
- package/dist/types-CFbNxrx2.d.ts +171 -0
- package/dist/types-CFbNxrx2.d.ts.map +1 -0
- package/dist/types-CZre3j02.d.ts +231 -0
- package/dist/types-CZre3j02.d.ts.map +1 -0
- package/dist/types.d.ts +14 -2
- package/dist/types.js +3 -9
- package/dist/types.js.map +1 -0
- package/dist/useRecceServerFlag-Bg5R67J4.js +3 -0
- package/dist/useRecceServerFlag-Bg5R67J4.js.map +1 -0
- package/dist/useThemeColors--prVbMmM.js +3 -0
- package/dist/useThemeColors--prVbMmM.js.map +1 -0
- package/dist/useThemeColors-DHEroo8f.d.ts +104 -0
- package/dist/useThemeColors-DHEroo8f.d.ts.map +1 -0
- package/dist/user-DMT7E0fc.js +3 -0
- package/dist/user-DMT7E0fc.js.map +1 -0
- package/dist/utils-CW2skXm_.js +3 -0
- package/dist/utils-CW2skXm_.js.map +1 -0
- package/dist/utils-CXWhfyxC.js +5 -0
- package/dist/utils-CXWhfyxC.js.map +1 -0
- package/dist/utils.d.ts +7 -0
- package/dist/utils.js +2 -0
- package/package.json +115 -107
- package/LICENSE +0 -201
- package/dist/RecceCheckContext-BJprb2xR.js +0 -7968
- package/dist/RecceCheckContext-BJprb2xR.js.map +0 -1
- package/dist/RecceCheckContext-DPnWB_aU.css +0 -215
- package/dist/RecceCheckContext-DPnWB_aU.css.map +0 -1
- package/dist/RecceCheckContext-DbZ7BdRy.mjs +0 -7426
- package/dist/RecceCheckContext-DbZ7BdRy.mjs.map +0 -1
- package/dist/RecceCheckContext-DyxOeUsX.css +0 -215
- package/dist/RecceCheckContext-DyxOeUsX.css.map +0 -1
- package/dist/api.d.mts +0 -3
- package/dist/api.js.map +0 -1
- package/dist/api.mjs +0 -46
- package/dist/api.mjs.map +0 -1
- package/dist/components-BeAjVBV3.css +0 -70
- package/dist/components-BeAjVBV3.css.map +0 -1
- package/dist/components-DfXnN1Hx.js +0 -14689
- package/dist/components-DfXnN1Hx.js.map +0 -1
- package/dist/components-iUxcqtUB.css +0 -70
- package/dist/components-iUxcqtUB.css.map +0 -1
- package/dist/components-jh6r4tQn.mjs +0 -12348
- package/dist/components-jh6r4tQn.mjs.map +0 -1
- package/dist/components.d.mts +0 -3
- package/dist/components.mjs +0 -9
- package/dist/const-CaIm1Z8g.mjs +0 -12
- package/dist/const-CaIm1Z8g.mjs.map +0 -1
- package/dist/const-CvdZO0FN.js +0 -24
- package/dist/const-CvdZO0FN.js.map +0 -1
- package/dist/hooks-cQsBXBd1.js +0 -40
- package/dist/hooks-cQsBXBd1.js.map +0 -1
- package/dist/hooks-eaHm_yEp.mjs +0 -33
- package/dist/hooks-eaHm_yEp.mjs.map +0 -1
- package/dist/hooks.d.mts +0 -3
- package/dist/hooks.mjs +0 -8
- package/dist/html2canvas-pro.esm-CsuSOHXp.js +0 -7250
- package/dist/html2canvas-pro.esm-CsuSOHXp.js.map +0 -1
- package/dist/html2canvas-pro.esm-E7kpobrC.mjs +0 -7249
- package/dist/html2canvas-pro.esm-E7kpobrC.mjs.map +0 -1
- package/dist/index-B5bpmv0i.d.mts +0 -2172
- package/dist/index-B5bpmv0i.d.mts.map +0 -1
- package/dist/index-B9lSPJTi.d.ts +0 -2170
- package/dist/index-B9lSPJTi.d.ts.map +0 -1
- package/dist/index.d.mts +0 -3
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -20
- package/dist/index.mjs.map +0 -1
- package/dist/mui-theme-CUhybmBq.mjs +0 -696
- package/dist/mui-theme-CUhybmBq.mjs.map +0 -1
- package/dist/mui-theme-iBHkjXJq.js +0 -732
- package/dist/mui-theme-iBHkjXJq.js.map +0 -1
- package/dist/state-CTITyT0R.js +0 -795
- package/dist/state-CTITyT0R.js.map +0 -1
- package/dist/state-Sc2b4jri.mjs +0 -382
- package/dist/state-Sc2b4jri.mjs.map +0 -1
- package/dist/theme.d.mts +0 -3
- package/dist/theme.mjs +0 -4
- package/dist/tooltipMessage-BC5W7H3X.js +0 -13
- package/dist/tooltipMessage-BC5W7H3X.js.map +0 -1
- package/dist/tooltipMessage-B_xMIKWL.mjs +0 -7
- package/dist/tooltipMessage-B_xMIKWL.mjs.map +0 -1
- package/dist/types.d.mts +0 -3
- package/dist/types.mjs +0 -6
- package/dist/urls-BQW5wjg-.js +0 -13
- package/dist/urls-BQW5wjg-.js.map +0 -1
- package/dist/urls-DT7FVEcS.mjs +0 -7
- package/dist/urls-DT7FVEcS.mjs.map +0 -1
- package/dist/version-B9s8yne-.js +0 -300
- package/dist/version-B9s8yne-.js.map +0 -1
- package/dist/version-DP1kU_7v.mjs +0 -162
- package/dist/version-DP1kU_7v.mjs.map +0 -1
- package/recce-source/.editorconfig +0 -26
- package/recce-source/.flake8 +0 -37
- package/recce-source/.github/ISSUE_TEMPLATE/bug_report.yml +0 -67
- package/recce-source/.github/ISSUE_TEMPLATE/custom.md +0 -10
- package/recce-source/.github/ISSUE_TEMPLATE/feature_request.yml +0 -42
- package/recce-source/.github/PULL_REQUEST_TEMPLATE.md +0 -21
- package/recce-source/.github/copilot-instructions.md +0 -331
- package/recce-source/.github/instructions/backend-instructions.md +0 -541
- package/recce-source/.github/instructions/frontend-instructions.md +0 -317
- package/recce-source/.github/workflows/build-statics.yaml +0 -72
- package/recce-source/.github/workflows/bump.yaml +0 -48
- package/recce-source/.github/workflows/integration-tests-cloud.yaml +0 -92
- package/recce-source/.github/workflows/integration-tests-sqlmesh.yaml +0 -33
- package/recce-source/.github/workflows/integration-tests.yaml +0 -52
- package/recce-source/.github/workflows/nightly.yaml +0 -246
- package/recce-source/.github/workflows/release.yaml +0 -196
- package/recce-source/.github/workflows/tests-js.yaml +0 -58
- package/recce-source/.github/workflows/tests-python.yaml +0 -128
- package/recce-source/.pre-commit-config.yaml +0 -26
- package/recce-source/CLAUDE.md +0 -483
- package/recce-source/CODE_OF_CONDUCT.md +0 -128
- package/recce-source/CONTRIBUTING.md +0 -107
- package/recce-source/LICENSE +0 -201
- package/recce-source/Makefile +0 -126
- package/recce-source/README.md +0 -182
- package/recce-source/RECCE_CLOUD.md +0 -81
- package/recce-source/SECURITY.md +0 -25
- package/recce-source/docs/PACKAGING.md +0 -340
- package/recce-source/docs/README.md +0 -1
- package/recce-source/docs/plans/2024-12-31-csv-download-design.md +0 -121
- package/recce-source/docs/plans/2024-12-31-csv-download-implementation.md +0 -930
- package/recce-source/integration_tests/dbt/dbt_project.yml +0 -26
- package/recce-source/integration_tests/dbt/models/customers.sql +0 -69
- package/recce-source/integration_tests/dbt/models/docs.md +0 -14
- package/recce-source/integration_tests/dbt/models/orders.sql +0 -56
- package/recce-source/integration_tests/dbt/models/schema.yml +0 -82
- package/recce-source/integration_tests/dbt/models/staging/schema.yml +0 -31
- package/recce-source/integration_tests/dbt/models/staging/stg_customers.sql +0 -22
- package/recce-source/integration_tests/dbt/models/staging/stg_orders.sql +0 -23
- package/recce-source/integration_tests/dbt/models/staging/stg_payments.sql +0 -25
- package/recce-source/integration_tests/dbt/packages.yml +0 -7
- package/recce-source/integration_tests/dbt/profiles.yml +0 -8
- package/recce-source/integration_tests/dbt/seeds/raw_customers.csv +0 -101
- package/recce-source/integration_tests/dbt/seeds/raw_orders.csv +0 -100
- package/recce-source/integration_tests/dbt/seeds/raw_payments.csv +0 -114
- package/recce-source/integration_tests/dbt/seeds/raw_statuses.csv +0 -5
- package/recce-source/integration_tests/dbt/smoke_test.sh +0 -72
- package/recce-source/integration_tests/dbt/smoke_test_cloud.sh +0 -71
- package/recce-source/integration_tests/sqlmesh/__init__.py +0 -0
- package/recce-source/integration_tests/sqlmesh/audits/assert_item_price_above_zero.sql +0 -9
- package/recce-source/integration_tests/sqlmesh/audits/items.sql +0 -7
- package/recce-source/integration_tests/sqlmesh/audits/order_items.sql +0 -7
- package/recce-source/integration_tests/sqlmesh/config.py +0 -171
- package/recce-source/integration_tests/sqlmesh/helper.py +0 -20
- package/recce-source/integration_tests/sqlmesh/hooks/__init__.py +0 -0
- package/recce-source/integration_tests/sqlmesh/macros/__init__.py +0 -0
- package/recce-source/integration_tests/sqlmesh/macros/macros.py +0 -8
- package/recce-source/integration_tests/sqlmesh/macros/macros.sql +0 -8
- package/recce-source/integration_tests/sqlmesh/macros/utils.py +0 -11
- package/recce-source/integration_tests/sqlmesh/metrics/metrics.sql +0 -25
- package/recce-source/integration_tests/sqlmesh/models/customer_revenue_by_day.sql +0 -41
- package/recce-source/integration_tests/sqlmesh/models/customer_revenue_lifetime.sql +0 -60
- package/recce-source/integration_tests/sqlmesh/models/customers.sql +0 -32
- package/recce-source/integration_tests/sqlmesh/models/items.py +0 -95
- package/recce-source/integration_tests/sqlmesh/models/marketing.sql +0 -15
- package/recce-source/integration_tests/sqlmesh/models/order_items.py +0 -95
- package/recce-source/integration_tests/sqlmesh/models/orders.py +0 -70
- package/recce-source/integration_tests/sqlmesh/models/raw_marketing.py +0 -62
- package/recce-source/integration_tests/sqlmesh/models/top_waiters.sql +0 -23
- package/recce-source/integration_tests/sqlmesh/models/waiter_as_customer_by_day.sql +0 -29
- package/recce-source/integration_tests/sqlmesh/models/waiter_names.sql +0 -10
- package/recce-source/integration_tests/sqlmesh/models/waiter_revenue_by_day.sql +0 -29
- package/recce-source/integration_tests/sqlmesh/models/waiters.py +0 -62
- package/recce-source/integration_tests/sqlmesh/prep_env.sh +0 -16
- package/recce-source/integration_tests/sqlmesh/schema.yaml +0 -5
- package/recce-source/integration_tests/sqlmesh/seeds/waiter_names.csv +0 -11
- package/recce-source/integration_tests/sqlmesh/test_server.sh +0 -29
- package/recce-source/integration_tests/sqlmesh/tests/test_customer_revenue_by_day.yaml +0 -63
- package/recce-source/integration_tests/sqlmesh/tests/test_order_items.yaml +0 -72
- package/recce-source/js/.editorconfig +0 -27
- package/recce-source/js/.env.development +0 -5
- package/recce-source/js/.husky/pre-commit +0 -29
- package/recce-source/js/.nvmrc +0 -1
- package/recce-source/js/README.md +0 -39
- package/recce-source/js/app/(mainComponents)/DisplayModeToggle.tsx +0 -65
- package/recce-source/js/app/(mainComponents)/NavBar.tsx +0 -228
- package/recce-source/js/app/(mainComponents)/RecceVersionBadge.tsx +0 -107
- package/recce-source/js/app/(mainComponents)/TopBar.tsx +0 -252
- package/recce-source/js/app/@lineage/default.tsx +0 -20
- package/recce-source/js/app/@lineage/page.tsx +0 -14
- package/recce-source/js/app/MainLayout.tsx +0 -170
- package/recce-source/js/app/Providers.tsx +0 -49
- package/recce-source/js/app/checks/page.tsx +0 -296
- package/recce-source/js/app/error.tsx +0 -93
- package/recce-source/js/app/favicon.ico +0 -0
- package/recce-source/js/app/global-error.tsx +0 -115
- package/recce-source/js/app/global.css +0 -82
- package/recce-source/js/app/layout.tsx +0 -48
- package/recce-source/js/app/lineage/page.tsx +0 -15
- package/recce-source/js/app/page.tsx +0 -12
- package/recce-source/js/app/query/page.tsx +0 -8
- package/recce-source/js/biome.json +0 -313
- package/recce-source/js/jest.config.js +0 -34
- package/recce-source/js/jest.globals.d.ts +0 -32
- package/recce-source/js/jest.setup.js +0 -91
- package/recce-source/js/next.config.js +0 -16
- package/recce-source/js/package-lock.json +0 -13843
- package/recce-source/js/package.json +0 -123
- package/recce-source/js/pnpm-lock.yaml +0 -9235
- package/recce-source/js/pnpm-workspace.yaml +0 -6
- package/recce-source/js/postcss.config.js +0 -5
- package/recce-source/js/public/auth_callback.html +0 -68
- package/recce-source/js/public/imgs/feedback/thumbs-down.png +0 -0
- package/recce-source/js/public/imgs/feedback/thumbs-up.png +0 -0
- package/recce-source/js/public/imgs/reload-image.svg +0 -4
- package/recce-source/js/public/logo/recce-logo-white.png +0 -0
- package/recce-source/js/src/components/AuthModal/AuthModal.tsx +0 -202
- package/recce-source/js/src/components/app/AvatarDropdown.tsx +0 -159
- package/recce-source/js/src/components/app/EnvInfo.tsx +0 -357
- package/recce-source/js/src/components/app/Filename.tsx +0 -388
- package/recce-source/js/src/components/app/SetupConnectionPopover.tsx +0 -91
- package/recce-source/js/src/components/app/StateExporter.tsx +0 -57
- package/recce-source/js/src/components/app/StateImporter.tsx +0 -198
- package/recce-source/js/src/components/app/StateSharing.tsx +0 -145
- package/recce-source/js/src/components/app/StateSynchronizer.tsx +0 -205
- package/recce-source/js/src/components/charts/HistogramChart.tsx +0 -291
- package/recce-source/js/src/components/charts/SquareIcon.tsx +0 -51
- package/recce-source/js/src/components/charts/TopKSummaryList.tsx +0 -457
- package/recce-source/js/src/components/charts/chartTheme.ts +0 -74
- package/recce-source/js/src/components/check/CheckBreadcrumb.tsx +0 -97
- package/recce-source/js/src/components/check/CheckDescription.tsx +0 -134
- package/recce-source/js/src/components/check/CheckDetail.tsx +0 -797
- package/recce-source/js/src/components/check/CheckEmptyState.tsx +0 -84
- package/recce-source/js/src/components/check/CheckList.tsx +0 -320
- package/recce-source/js/src/components/check/LineageDiffView.tsx +0 -32
- package/recce-source/js/src/components/check/PresetCheckTemplateView.tsx +0 -48
- package/recce-source/js/src/components/check/SchemaDiffView.tsx +0 -290
- package/recce-source/js/src/components/check/check.ts +0 -25
- package/recce-source/js/src/components/check/timeline/CheckTimeline.tsx +0 -163
- package/recce-source/js/src/components/check/timeline/CommentInput.tsx +0 -84
- package/recce-source/js/src/components/check/timeline/TimelineEvent.tsx +0 -468
- package/recce-source/js/src/components/check/timeline/index.ts +0 -12
- package/recce-source/js/src/components/check/utils.ts +0 -12
- package/recce-source/js/src/components/data-grid/ScreenshotDataGrid.tsx +0 -333
- package/recce-source/js/src/components/data-grid/agGridStyles.css +0 -55
- package/recce-source/js/src/components/data-grid/agGridTheme.ts +0 -43
- package/recce-source/js/src/components/editor/CodeEditor.tsx +0 -107
- package/recce-source/js/src/components/editor/DiffEditor.tsx +0 -162
- package/recce-source/js/src/components/editor/index.ts +0 -12
- package/recce-source/js/src/components/errorboundary/ErrorBoundary.tsx +0 -87
- package/recce-source/js/src/components/histogram/HistogramDiffForm.tsx +0 -147
- package/recce-source/js/src/components/histogram/HistogramDiffResultView.tsx +0 -63
- package/recce-source/js/src/components/icons/index.tsx +0 -142
- package/recce-source/js/src/components/lineage/ActionControl.tsx +0 -63
- package/recce-source/js/src/components/lineage/ActionTag.tsx +0 -141
- package/recce-source/js/src/components/lineage/ChangeStatusLegend.tsx +0 -46
- package/recce-source/js/src/components/lineage/ColumnLevelLineageControl.tsx +0 -327
- package/recce-source/js/src/components/lineage/ColumnLevelLineageLegend.tsx +0 -57
- package/recce-source/js/src/components/lineage/GraphColumnNode.tsx +0 -199
- package/recce-source/js/src/components/lineage/GraphEdge.tsx +0 -59
- package/recce-source/js/src/components/lineage/GraphNode.tsx +0 -555
- package/recce-source/js/src/components/lineage/LineagePage.tsx +0 -10
- package/recce-source/js/src/components/lineage/LineageView.tsx +0 -1384
- package/recce-source/js/src/components/lineage/LineageViewContext.tsx +0 -86
- package/recce-source/js/src/components/lineage/LineageViewContextMenu.tsx +0 -637
- package/recce-source/js/src/components/lineage/LineageViewNotification.tsx +0 -64
- package/recce-source/js/src/components/lineage/LineageViewTopBar.tsx +0 -596
- package/recce-source/js/src/components/lineage/NodeSqlView.tsx +0 -136
- package/recce-source/js/src/components/lineage/NodeTag.tsx +0 -278
- package/recce-source/js/src/components/lineage/NodeView.tsx +0 -642
- package/recce-source/js/src/components/lineage/SandboxView.tsx +0 -436
- package/recce-source/js/src/components/lineage/ServerDisconnectedModalContent.tsx +0 -105
- package/recce-source/js/src/components/lineage/SetupConnectionBanner.tsx +0 -52
- package/recce-source/js/src/components/lineage/SingleEnvironmentQueryView.tsx +0 -152
- package/recce-source/js/src/components/lineage/graph.test.ts +0 -31
- package/recce-source/js/src/components/lineage/graph.ts +0 -58
- package/recce-source/js/src/components/lineage/lineage.test.ts +0 -169
- package/recce-source/js/src/components/lineage/lineage.ts +0 -521
- package/recce-source/js/src/components/lineage/styles.css +0 -42
- package/recce-source/js/src/components/lineage/styles.tsx +0 -165
- package/recce-source/js/src/components/lineage/useMultiNodesAction.ts +0 -352
- package/recce-source/js/src/components/lineage/useValueDiffAlertDialog.tsx +0 -108
- package/recce-source/js/src/components/onboarding-guide/Notification.tsx +0 -62
- package/recce-source/js/src/components/profile/ProfileDiffForm.tsx +0 -134
- package/recce-source/js/src/components/profile/ProfileDiffResultView.tsx +0 -243
- package/recce-source/js/src/components/query/ChangedOnlyCheckbox.tsx +0 -29
- package/recce-source/js/src/components/query/DiffText.tsx +0 -120
- package/recce-source/js/src/components/query/QueryDiffResultView.tsx +0 -468
- package/recce-source/js/src/components/query/QueryForm.tsx +0 -80
- package/recce-source/js/src/components/query/QueryPage.tsx +0 -282
- package/recce-source/js/src/components/query/QueryResultView.tsx +0 -180
- package/recce-source/js/src/components/query/SetupConnectionGuide.tsx +0 -57
- package/recce-source/js/src/components/query/SqlEditor.tsx +0 -245
- package/recce-source/js/src/components/query/ToggleSwitch.tsx +0 -84
- package/recce-source/js/src/components/query/styles.css +0 -21
- package/recce-source/js/src/components/routing/DirectUrlAccess.test.tsx +0 -428
- package/recce-source/js/src/components/routing/LineageStatePreservation.test.tsx +0 -311
- package/recce-source/js/src/components/routing/Navigation.test.tsx +0 -256
- package/recce-source/js/src/components/rowcount/RowCountDiffResultView.tsx +0 -108
- package/recce-source/js/src/components/rowcount/delta.test.ts +0 -51
- package/recce-source/js/src/components/rowcount/delta.ts +0 -16
- package/recce-source/js/src/components/run/RunList.tsx +0 -303
- package/recce-source/js/src/components/run/RunModal.tsx +0 -191
- package/recce-source/js/src/components/run/RunPage.tsx +0 -26
- package/recce-source/js/src/components/run/RunResultPane.tsx +0 -578
- package/recce-source/js/src/components/run/RunStatusAndDate.tsx +0 -106
- package/recce-source/js/src/components/run/RunToolbar.tsx +0 -70
- package/recce-source/js/src/components/run/RunView.tsx +0 -196
- package/recce-source/js/src/components/run/registry.ts +0 -214
- package/recce-source/js/src/components/run/types.ts +0 -14
- package/recce-source/js/src/components/schema/ColumnNameCell.test.tsx +0 -169
- package/recce-source/js/src/components/schema/ColumnNameCell.tsx +0 -198
- package/recce-source/js/src/components/schema/SchemaView.tsx +0 -336
- package/recce-source/js/src/components/schema/schemaDiff.ts +0 -32
- package/recce-source/js/src/components/schema/style.css +0 -134
- package/recce-source/js/src/components/screenshot/ScreenshotBox.tsx +0 -39
- package/recce-source/js/src/components/shared/HistoryToggle.tsx +0 -35
- package/recce-source/js/src/components/split/Split.tsx +0 -40
- package/recce-source/js/src/components/split/styles.css +0 -24
- package/recce-source/js/src/components/summary/ChangeSummary.tsx +0 -264
- package/recce-source/js/src/components/summary/SchemaSummary.tsx +0 -123
- package/recce-source/js/src/components/summary/SummaryView.tsx +0 -29
- package/recce-source/js/src/components/timeout/IdleTimeoutBadge.tsx +0 -48
- package/recce-source/js/src/components/top-k/TopKDiffForm.tsx +0 -58
- package/recce-source/js/src/components/top-k/TopKDiffResultView.tsx +0 -73
- package/recce-source/js/src/components/ui/dataGrid/DataFrameColumnGroupHeader.tsx +0 -228
- package/recce-source/js/src/components/ui/dataGrid/DataFrameColumnHeader.tsx +0 -113
- package/recce-source/js/src/components/ui/dataGrid/defaultRenderCell.tsx +0 -72
- package/recce-source/js/src/components/ui/dataGrid/index.ts +0 -23
- package/recce-source/js/src/components/ui/dataGrid/inlineRenderCell.test.tsx +0 -607
- package/recce-source/js/src/components/ui/dataGrid/inlineRenderCell.tsx +0 -211
- package/recce-source/js/src/components/ui/dataGrid/schemaCells.test.tsx +0 -452
- package/recce-source/js/src/components/ui/dataGrid/schemaCells.tsx +0 -142
- package/recce-source/js/src/components/ui/dataGrid/valueDiffCells.test.tsx +0 -178
- package/recce-source/js/src/components/ui/dataGrid/valueDiffCells.tsx +0 -275
- package/recce-source/js/src/components/ui/markdown/ExternalLinkConfirmDialog.tsx +0 -134
- package/recce-source/js/src/components/ui/markdown/MarkdownContent.tsx +0 -364
- package/recce-source/js/src/components/ui/mui/index.ts +0 -13
- package/recce-source/js/src/components/ui/mui-provider.tsx +0 -67
- package/recce-source/js/src/components/ui/mui-theme.ts +0 -1039
- package/recce-source/js/src/components/ui/mui-utils.ts +0 -113
- package/recce-source/js/src/components/ui/toaster.tsx +0 -288
- package/recce-source/js/src/components/valuediff/ValueDiffDetailResultView.tsx +0 -216
- package/recce-source/js/src/components/valuediff/ValueDiffForm.tsx +0 -246
- package/recce-source/js/src/components/valuediff/ValueDiffResultView.tsx +0 -81
- package/recce-source/js/src/components/valuediff/shared.ts +0 -33
- package/recce-source/js/src/constants/tooltipMessage.ts +0 -3
- package/recce-source/js/src/constants/urls.ts +0 -1
- package/recce-source/js/src/lib/UrlHash.ts +0 -12
- package/recce-source/js/src/lib/api/adhocQuery.ts +0 -70
- package/recce-source/js/src/lib/api/axiosClient.ts +0 -9
- package/recce-source/js/src/lib/api/cacheKeys.ts +0 -13
- package/recce-source/js/src/lib/api/checkEvents.ts +0 -252
- package/recce-source/js/src/lib/api/checks.ts +0 -129
- package/recce-source/js/src/lib/api/cll.ts +0 -53
- package/recce-source/js/src/lib/api/connectToCloud.ts +0 -13
- package/recce-source/js/src/lib/api/flag.ts +0 -37
- package/recce-source/js/src/lib/api/info.ts +0 -198
- package/recce-source/js/src/lib/api/instanceInfo.ts +0 -25
- package/recce-source/js/src/lib/api/keepAlive.ts +0 -108
- package/recce-source/js/src/lib/api/lineagecheck.ts +0 -35
- package/recce-source/js/src/lib/api/localStorageKeys.ts +0 -7
- package/recce-source/js/src/lib/api/models.ts +0 -59
- package/recce-source/js/src/lib/api/profile.ts +0 -65
- package/recce-source/js/src/lib/api/rowcount.ts +0 -19
- package/recce-source/js/src/lib/api/runs.ts +0 -174
- package/recce-source/js/src/lib/api/schemacheck.ts +0 -31
- package/recce-source/js/src/lib/api/select.ts +0 -25
- package/recce-source/js/src/lib/api/sessionStorageKeys.ts +0 -8
- package/recce-source/js/src/lib/api/state.ts +0 -117
- package/recce-source/js/src/lib/api/track.ts +0 -281
- package/recce-source/js/src/lib/api/types.ts +0 -284
- package/recce-source/js/src/lib/api/user.ts +0 -42
- package/recce-source/js/src/lib/api/valuediff.ts +0 -46
- package/recce-source/js/src/lib/api/version.ts +0 -40
- package/recce-source/js/src/lib/const.ts +0 -9
- package/recce-source/js/src/lib/csv/extractors.test.ts +0 -456
- package/recce-source/js/src/lib/csv/extractors.ts +0 -468
- package/recce-source/js/src/lib/csv/format.test.ts +0 -211
- package/recce-source/js/src/lib/csv/format.ts +0 -44
- package/recce-source/js/src/lib/csv/index.test.ts +0 -155
- package/recce-source/js/src/lib/csv/index.ts +0 -109
- package/recce-source/js/src/lib/dataGrid/crossFunctionConsistency.test.ts +0 -626
- package/recce-source/js/src/lib/dataGrid/dataGridFactory.test.ts +0 -2140
- package/recce-source/js/src/lib/dataGrid/dataGridFactory.ts +0 -397
- package/recce-source/js/src/lib/dataGrid/generators/rowCountUtils.test.ts +0 -132
- package/recce-source/js/src/lib/dataGrid/generators/rowCountUtils.ts +0 -126
- package/recce-source/js/src/lib/dataGrid/generators/toDataDiffGrid.test.ts +0 -1627
- package/recce-source/js/src/lib/dataGrid/generators/toDataDiffGrid.ts +0 -140
- package/recce-source/js/src/lib/dataGrid/generators/toDataGrid.ts +0 -67
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDataGrid.test.ts +0 -142
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDataGrid.ts +0 -71
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDiffDataGrid.test.ts +0 -258
- package/recce-source/js/src/lib/dataGrid/generators/toRowCountDiffDataGrid.ts +0 -153
- package/recce-source/js/src/lib/dataGrid/generators/toSchemaDataGrid.test.ts +0 -951
- package/recce-source/js/src/lib/dataGrid/generators/toSchemaDataGrid.ts +0 -221
- package/recce-source/js/src/lib/dataGrid/generators/toValueDataGrid.test.ts +0 -395
- package/recce-source/js/src/lib/dataGrid/generators/toValueDataGrid.ts +0 -184
- package/recce-source/js/src/lib/dataGrid/generators/toValueDiffGrid.test.ts +0 -884
- package/recce-source/js/src/lib/dataGrid/generators/toValueDiffGrid.ts +0 -113
- package/recce-source/js/src/lib/dataGrid/index.ts +0 -51
- package/recce-source/js/src/lib/dataGrid/propertyBased.test.ts +0 -858
- package/recce-source/js/src/lib/dataGrid/shared/columnBuilders.test.ts +0 -482
- package/recce-source/js/src/lib/dataGrid/shared/columnBuilders.ts +0 -345
- package/recce-source/js/src/lib/dataGrid/shared/dataTypeEdgeCases.test.ts +0 -698
- package/recce-source/js/src/lib/dataGrid/shared/diffColumnBuilder.test.tsx +0 -820
- package/recce-source/js/src/lib/dataGrid/shared/diffColumnBuilder.tsx +0 -277
- package/recce-source/js/src/lib/dataGrid/shared/gridUtils.test.ts +0 -785
- package/recce-source/js/src/lib/dataGrid/shared/gridUtils.ts +0 -370
- package/recce-source/js/src/lib/dataGrid/shared/index.ts +0 -81
- package/recce-source/js/src/lib/dataGrid/shared/rowBuilders.test.ts +0 -909
- package/recce-source/js/src/lib/dataGrid/shared/rowBuilders.ts +0 -325
- package/recce-source/js/src/lib/dataGrid/shared/simpleColumnBuilder.tsx +0 -240
- package/recce-source/js/src/lib/dataGrid/shared/toDiffColumn.test.tsx +0 -719
- package/recce-source/js/src/lib/dataGrid/shared/toDiffColumn.tsx +0 -231
- package/recce-source/js/src/lib/dataGrid/shared/validation.test.ts +0 -559
- package/recce-source/js/src/lib/dataGrid/shared/validation.ts +0 -367
- package/recce-source/js/src/lib/dataGrid/warehouseNamingConventions.test.ts +0 -1117
- package/recce-source/js/src/lib/formatSelect.ts +0 -50
- package/recce-source/js/src/lib/hooks/ApiConfigContext.tsx +0 -181
- package/recce-source/js/src/lib/hooks/IdleTimeoutContext.tsx +0 -177
- package/recce-source/js/src/lib/hooks/LineageGraphContext.tsx +0 -512
- package/recce-source/js/src/lib/hooks/RecceActionContext.tsx +0 -269
- package/recce-source/js/src/lib/hooks/RecceCheckContext.tsx +0 -33
- package/recce-source/js/src/lib/hooks/RecceContextProvider.tsx +0 -54
- package/recce-source/js/src/lib/hooks/RecceInstanceContext.tsx +0 -129
- package/recce-source/js/src/lib/hooks/RecceQueryContext.tsx +0 -98
- package/recce-source/js/src/lib/hooks/RecceShareStateContext.tsx +0 -59
- package/recce-source/js/src/lib/hooks/ScreenShot.tsx +0 -399
- package/recce-source/js/src/lib/hooks/useAppRouter.test.ts +0 -211
- package/recce-source/js/src/lib/hooks/useAppRouter.ts +0 -200
- package/recce-source/js/src/lib/hooks/useCSVExport.ts +0 -136
- package/recce-source/js/src/lib/hooks/useCheckEvents.ts +0 -99
- package/recce-source/js/src/lib/hooks/useCheckToast.tsx +0 -14
- package/recce-source/js/src/lib/hooks/useClipBoardToast.tsx +0 -27
- package/recce-source/js/src/lib/hooks/useCountdownToast.tsx +0 -102
- package/recce-source/js/src/lib/hooks/useFeedbackCollectionToast.tsx +0 -130
- package/recce-source/js/src/lib/hooks/useGuideToast.tsx +0 -45
- package/recce-source/js/src/lib/hooks/useIdleDetection.tsx +0 -185
- package/recce-source/js/src/lib/hooks/useModelColumns.tsx +0 -113
- package/recce-source/js/src/lib/hooks/useRecceInstanceInfo.tsx +0 -13
- package/recce-source/js/src/lib/hooks/useRecceServerFlag.tsx +0 -13
- package/recce-source/js/src/lib/hooks/useRun.tsx +0 -89
- package/recce-source/js/src/lib/hooks/useThemeColors.ts +0 -115
- package/recce-source/js/src/lib/mergeKeys.test.ts +0 -89
- package/recce-source/js/src/lib/mergeKeys.ts +0 -86
- package/recce-source/js/src/lib/result/ResultErrorFallback.tsx +0 -9
- package/recce-source/js/src/lib/utils/formatTime.ts +0 -84
- package/recce-source/js/src/lib/utils/urls.ts +0 -16
- package/recce-source/js/src/utils/DropdownValuesInput.tsx +0 -297
- package/recce-source/js/src/utils/formatters.tsx +0 -237
- package/recce-source/js/src/utils/transforms.ts +0 -81
- package/recce-source/js/tsconfig.json +0 -47
- package/recce-source/macros/README.md +0 -8
- package/recce-source/macros/recce_athena.sql +0 -73
- package/recce-source/pyproject.toml +0 -109
- package/recce-source/recce/VERSION +0 -1
- package/recce-source/recce/__init__.py +0 -84
- package/recce-source/recce/adapter/__init__.py +0 -0
- package/recce-source/recce/adapter/base.py +0 -109
- package/recce-source/recce/adapter/dbt_adapter/__init__.py +0 -1699
- package/recce-source/recce/adapter/dbt_adapter/dbt_version.py +0 -42
- package/recce-source/recce/adapter/sqlmesh_adapter.py +0 -141
- package/recce-source/recce/apis/__init__.py +0 -0
- package/recce-source/recce/apis/check_api.py +0 -203
- package/recce-source/recce/apis/check_events_api.py +0 -353
- package/recce-source/recce/apis/check_func.py +0 -130
- package/recce-source/recce/apis/run_api.py +0 -130
- package/recce-source/recce/apis/run_func.py +0 -258
- package/recce-source/recce/artifact.py +0 -266
- package/recce-source/recce/cli.py +0 -1846
- package/recce-source/recce/config.py +0 -127
- package/recce-source/recce/connect_to_cloud.py +0 -138
- package/recce-source/recce/core.py +0 -334
- package/recce-source/recce/diff.py +0 -26
- package/recce-source/recce/event/CONFIG +0 -1
- package/recce-source/recce/event/SENTRY_DNS +0 -1
- package/recce-source/recce/event/__init__.py +0 -304
- package/recce-source/recce/event/collector.py +0 -184
- package/recce-source/recce/event/track.py +0 -158
- package/recce-source/recce/exceptions.py +0 -21
- package/recce-source/recce/git.py +0 -77
- package/recce-source/recce/github.py +0 -222
- package/recce-source/recce/mcp_server.py +0 -885
- package/recce-source/recce/models/__init__.py +0 -6
- package/recce-source/recce/models/check.py +0 -481
- package/recce-source/recce/models/run.py +0 -46
- package/recce-source/recce/models/types.py +0 -218
- package/recce-source/recce/pull_request.py +0 -124
- package/recce-source/recce/run.py +0 -390
- package/recce-source/recce/server.py +0 -877
- package/recce-source/recce/state/__init__.py +0 -31
- package/recce-source/recce/state/cloud.py +0 -644
- package/recce-source/recce/state/const.py +0 -26
- package/recce-source/recce/state/local.py +0 -56
- package/recce-source/recce/state/state.py +0 -119
- package/recce-source/recce/state/state_loader.py +0 -174
- package/recce-source/recce/summary.py +0 -575
- package/recce-source/recce/tasks/__init__.py +0 -23
- package/recce-source/recce/tasks/core.py +0 -134
- package/recce-source/recce/tasks/dataframe.py +0 -170
- package/recce-source/recce/tasks/histogram.py +0 -433
- package/recce-source/recce/tasks/lineage.py +0 -19
- package/recce-source/recce/tasks/profile.py +0 -298
- package/recce-source/recce/tasks/query.py +0 -450
- package/recce-source/recce/tasks/rowcount.py +0 -277
- package/recce-source/recce/tasks/schema.py +0 -65
- package/recce-source/recce/tasks/top_k.py +0 -172
- package/recce-source/recce/tasks/utils.py +0 -147
- package/recce-source/recce/tasks/valuediff.py +0 -497
- package/recce-source/recce/util/__init__.py +0 -4
- package/recce-source/recce/util/api_token.py +0 -80
- package/recce-source/recce/util/breaking.py +0 -330
- package/recce-source/recce/util/cache.py +0 -25
- package/recce-source/recce/util/cll.py +0 -355
- package/recce-source/recce/util/cloud/__init__.py +0 -15
- package/recce-source/recce/util/cloud/base.py +0 -115
- package/recce-source/recce/util/cloud/check_events.py +0 -190
- package/recce-source/recce/util/cloud/checks.py +0 -242
- package/recce-source/recce/util/io.py +0 -120
- package/recce-source/recce/util/lineage.py +0 -83
- package/recce-source/recce/util/logger.py +0 -25
- package/recce-source/recce/util/onboarding_state.py +0 -45
- package/recce-source/recce/util/perf_tracking.py +0 -85
- package/recce-source/recce/util/pydantic_model.py +0 -22
- package/recce-source/recce/util/recce_cloud.py +0 -454
- package/recce-source/recce/util/singleton.py +0 -18
- package/recce-source/recce/util/startup_perf.py +0 -121
- package/recce-source/recce/yaml/__init__.py +0 -58
- package/recce-source/recce_cloud/README.md +0 -780
- package/recce-source/recce_cloud/VERSION +0 -1
- package/recce-source/recce_cloud/__init__.py +0 -24
- package/recce-source/recce_cloud/api/__init__.py +0 -17
- package/recce-source/recce_cloud/api/base.py +0 -132
- package/recce-source/recce_cloud/api/client.py +0 -186
- package/recce-source/recce_cloud/api/exceptions.py +0 -26
- package/recce-source/recce_cloud/api/factory.py +0 -63
- package/recce-source/recce_cloud/api/github.py +0 -106
- package/recce-source/recce_cloud/api/gitlab.py +0 -111
- package/recce-source/recce_cloud/artifact.py +0 -57
- package/recce-source/recce_cloud/ci_providers/__init__.py +0 -9
- package/recce-source/recce_cloud/ci_providers/base.py +0 -82
- package/recce-source/recce_cloud/ci_providers/detector.py +0 -147
- package/recce-source/recce_cloud/ci_providers/github_actions.py +0 -136
- package/recce-source/recce_cloud/ci_providers/gitlab_ci.py +0 -130
- package/recce-source/recce_cloud/cli.py +0 -434
- package/recce-source/recce_cloud/download.py +0 -230
- package/recce-source/recce_cloud/hatch_build.py +0 -20
- package/recce-source/recce_cloud/pyproject.toml +0 -49
- package/recce-source/recce_cloud/upload.py +0 -214
- package/recce-source/test.py +0 -0
- package/recce-source/tests/__init__.py +0 -0
- package/recce-source/tests/adapter/__init__.py +0 -0
- package/recce-source/tests/adapter/dbt_adapter/__init__.py +0 -0
- package/recce-source/tests/adapter/dbt_adapter/conftest.py +0 -17
- package/recce-source/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -298
- package/recce-source/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -25
- package/recce-source/tests/adapter/dbt_adapter/test_dbt_cll.py +0 -717
- package/recce-source/tests/adapter/dbt_adapter/test_proj/dbt_project.yml +0 -4
- package/recce-source/tests/adapter/dbt_adapter/test_proj/manifest.json +0 -1
- package/recce-source/tests/adapter/dbt_adapter/test_proj/package-lock.yml +0 -8
- package/recce-source/tests/adapter/dbt_adapter/test_proj/packages.yml +0 -7
- package/recce-source/tests/adapter/dbt_adapter/test_proj/profiles.yml +0 -6
- package/recce-source/tests/adapter/dbt_adapter/test_selector.py +0 -205
- package/recce-source/tests/apis/__init__.py +0 -0
- package/recce-source/tests/apis/row_count_diff.json +0 -59
- package/recce-source/tests/apis/test_check_events_api.py +0 -615
- package/recce-source/tests/apis/test_run_func.py +0 -433
- package/recce-source/tests/catalog.json +0 -527
- package/recce-source/tests/data/manifest/base/catalog.json +0 -1
- package/recce-source/tests/data/manifest/base/manifest.json +0 -1
- package/recce-source/tests/data/manifest/pr2/catalog.json +0 -1
- package/recce-source/tests/data/manifest/pr2/manifest.json +0 -1
- package/recce-source/tests/manifest.json +0 -10655
- package/recce-source/tests/models/__init__.py +0 -0
- package/recce-source/tests/models/test_check.py +0 -731
- package/recce-source/tests/models/test_run_models.py +0 -295
- package/recce-source/tests/recce_cloud/__init__.py +0 -0
- package/recce-source/tests/recce_cloud/test_ci_providers.py +0 -351
- package/recce-source/tests/recce_cloud/test_cli.py +0 -735
- package/recce-source/tests/recce_cloud/test_client.py +0 -379
- package/recce-source/tests/recce_cloud/test_platform_clients.py +0 -483
- package/recce-source/tests/recce_state.json +0 -1
- package/recce-source/tests/state/test_cloud.py +0 -719
- package/recce-source/tests/state/test_local.py +0 -164
- package/recce-source/tests/state/test_state_loader.py +0 -211
- package/recce-source/tests/tasks/__init__.py +0 -0
- package/recce-source/tests/tasks/conftest.py +0 -4
- package/recce-source/tests/tasks/test_histogram.py +0 -129
- package/recce-source/tests/tasks/test_lineage.py +0 -55
- package/recce-source/tests/tasks/test_preset_checks.py +0 -64
- package/recce-source/tests/tasks/test_profile.py +0 -397
- package/recce-source/tests/tasks/test_query.py +0 -528
- package/recce-source/tests/tasks/test_row_count.py +0 -133
- package/recce-source/tests/tasks/test_schema.py +0 -122
- package/recce-source/tests/tasks/test_top_k.py +0 -77
- package/recce-source/tests/tasks/test_utils.py +0 -439
- package/recce-source/tests/tasks/test_valuediff.py +0 -361
- package/recce-source/tests/test_cli.py +0 -236
- package/recce-source/tests/test_cli_mcp_optional.py +0 -45
- package/recce-source/tests/test_cloud_listing_cli.py +0 -324
- package/recce-source/tests/test_config.py +0 -43
- package/recce-source/tests/test_connect_to_cloud.py +0 -82
- package/recce-source/tests/test_core.py +0 -174
- package/recce-source/tests/test_dbt.py +0 -36
- package/recce-source/tests/test_mcp_server.py +0 -505
- package/recce-source/tests/test_pull_request.py +0 -130
- package/recce-source/tests/test_server.py +0 -202
- package/recce-source/tests/test_server_lifespan.py +0 -138
- package/recce-source/tests/test_summary.py +0 -73
- package/recce-source/tests/util/__init__.py +0 -0
- package/recce-source/tests/util/cloud/__init__.py +0 -0
- package/recce-source/tests/util/cloud/test_check_events.py +0 -255
- package/recce-source/tests/util/cloud/test_checks.py +0 -204
- package/recce-source/tests/util/test_api_token.py +0 -119
- package/recce-source/tests/util/test_breaking.py +0 -1427
- package/recce-source/tests/util/test_cll.py +0 -706
- package/recce-source/tests/util/test_lineage.py +0 -122
- package/recce-source/tests/util/test_onboarding_state.py +0 -84
- package/recce-source/tests/util/test_recce_cloud.py +0 -231
- package/recce-source/tox.ini +0 -40
- package/recce-source/uv.lock +0 -3928
- package/src/api/index.ts +0 -32
- package/src/components/index.ts +0 -154
- package/src/global.d.ts +0 -14
- package/src/hooks/index.ts +0 -56
- package/src/index.ts +0 -17
- package/src/lib/hooks/RouteConfigContext.ts +0 -139
- package/src/lib/hooks/useAppRouter.ts +0 -240
- package/src/mui-augmentation.d.ts +0 -139
- package/src/theme/index.ts +0 -13
- package/src/theme.ts +0 -23
- package/src/types/index.ts +0 -23
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# Recce Cloud CLI
|
|
2
|
-
|
|
3
|
-
A lightweight, standalone CLI for managing Recce Cloud operations in CI/CD environments.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The `recce-cloud` package provides a minimal CLI tool specifically designed for cloud operations, without the heavy dependencies of the full `recce` package. This makes it ideal for CI/CD pipelines where installation speed matters.
|
|
8
|
-
|
|
9
|
-
## Dependency Comparison
|
|
10
|
-
|
|
11
|
-
**recce-cloud** (3 dependencies):
|
|
12
|
-
- click
|
|
13
|
-
- requests
|
|
14
|
-
- rich
|
|
15
|
-
|
|
16
|
-
**recce** (20+ dependencies):
|
|
17
|
-
- boto3, click, deepdiff, fastapi, GitPython, itsdangerous, jinja2, packaging, portalocker, py-markdown-table, pydantic, PyGithub, python-dateutil, python-multipart, pytz, requests, rich, ruamel.yaml, sentry-sdk, sqlglot, uvicorn, watchdog, websockets
|
|
18
|
-
|
|
19
|
-
## Installation
|
|
20
|
-
|
|
21
|
-
### Development Mode
|
|
22
|
-
|
|
23
|
-
From the repository root:
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
python setup_cloud.py develop
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Production Install (when published to PyPI)
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
pip install recce-cloud
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Usage
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
# Check version
|
|
39
|
-
recce-cloud --version
|
|
40
|
-
|
|
41
|
-
# Get help
|
|
42
|
-
recce-cloud --help
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Package Structure
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
recce_cloud/
|
|
49
|
-
├── __init__.py # Package initialization and version
|
|
50
|
-
├── cli.py # Main CLI entry point
|
|
51
|
-
└── VERSION # Version file (synced with main recce)
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## CI/CD Integration Example
|
|
55
|
-
|
|
56
|
-
```yaml
|
|
57
|
-
# GitHub Actions example
|
|
58
|
-
- name: Install recce-cloud
|
|
59
|
-
run: pip install recce-cloud
|
|
60
|
-
|
|
61
|
-
- name: Use recce-cloud
|
|
62
|
-
run: recce-cloud --version
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Development
|
|
66
|
-
|
|
67
|
-
The `recce-cloud` package is developed within the same repository as `recce` but is packaged and distributed separately:
|
|
68
|
-
|
|
69
|
-
- **Main package**: `setup.py` → installs `recce` command
|
|
70
|
-
- **Cloud package**: `setup_cloud.py` → installs `recce-cloud` command
|
|
71
|
-
|
|
72
|
-
Both packages share the same VERSION file to keep versions synchronized.
|
|
73
|
-
|
|
74
|
-
## Future Commands
|
|
75
|
-
|
|
76
|
-
The CLI is designed to be extended with cloud-specific commands such as:
|
|
77
|
-
- `recce-cloud list-sessions` - List Recce Cloud sessions
|
|
78
|
-
- `recce-cloud purge` - Purge cloud state files
|
|
79
|
-
- `recce-cloud upload` - Upload state files to cloud
|
|
80
|
-
|
|
81
|
-
Currently, only the basic CLI structure with version command is implemented.
|
package/recce-source/SECURITY.md
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Security Policy
|
|
2
|
-
|
|
3
|
-
## Supported Versions
|
|
4
|
-
|
|
5
|
-
| Version | Supported |
|
|
6
|
-
| ------- | ------------------ |
|
|
7
|
-
| 0.x | :white_check_mark: |
|
|
8
|
-
|
|
9
|
-
## Reporting a Vulnerability
|
|
10
|
-
|
|
11
|
-
Please report (suspected) security vulnerabilities to **dev@infuseai.io**. You will receive a response from us within 48 hours. In the response, we will confirm whether the vulnerability was indeed found, and we will discuss the steps towards a solution.
|
|
12
|
-
|
|
13
|
-
It's important to never publicly disclose a security vulnerability before it has been fully resolved, as this can potentially put the wider community at risk.
|
|
14
|
-
|
|
15
|
-
### Security Vulnerability Response
|
|
16
|
-
|
|
17
|
-
* Acknowledgement of receipt of the report
|
|
18
|
-
* Regular updates about the progress towards fixing the vulnerability
|
|
19
|
-
* An announced release date for the patch fixing the vulnerability
|
|
20
|
-
|
|
21
|
-
### Public Disclosure Timing
|
|
22
|
-
|
|
23
|
-
After the initial reply to your report, we will keep you informed of the progress towards a fix and full announcement. We aim to handle all security vulnerabilities in a timely manner. After the vulnerability has been fixed, we will publish a security advisory along with credit to the reporter if desired.
|
|
24
|
-
|
|
25
|
-
Thank you for helping to keep Recce and its users safe!
|
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
# Recce Packaging Guide
|
|
2
|
-
|
|
3
|
-
This document explains how `recce` and `recce-cloud` packages are structured, built, and published.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The Recce repository contains two separate Python packages:
|
|
8
|
-
|
|
9
|
-
1. **`recce`** - Full-featured CLI for local development and review
|
|
10
|
-
2. **`recce-cloud`** - Lightweight CLI for CI/CD environments
|
|
11
|
-
|
|
12
|
-
Both packages share the same version number from `recce/VERSION`.
|
|
13
|
-
|
|
14
|
-
## Package Structure
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
recce/
|
|
18
|
-
├── recce/ # Main package (full-featured)
|
|
19
|
-
│ ├── VERSION # Single source of truth for both packages
|
|
20
|
-
│ └── ...
|
|
21
|
-
├── recce_cloud/ # Lightweight cloud package
|
|
22
|
-
│ ├── VERSION # Synced from recce/VERSION during build
|
|
23
|
-
│ ├── __init__.py # Reads VERSION with fallback
|
|
24
|
-
│ └── ...
|
|
25
|
-
├── setup.py # Build config for 'recce' package
|
|
26
|
-
├── setup_cloud.py # Build config for 'recce-cloud' package
|
|
27
|
-
├── pyproject.toml # Modern Python build system config
|
|
28
|
-
└── Makefile # Build automation
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Version Management
|
|
32
|
-
|
|
33
|
-
### Single Source of Truth
|
|
34
|
-
|
|
35
|
-
All version information comes from `recce/VERSION`:
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
1.24.0
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### How Versioning Works
|
|
42
|
-
|
|
43
|
-
1. **Build time**: `setup.py` and `setup_cloud.py` read `recce/VERSION`
|
|
44
|
-
2. **Build process**: `make build-cloud` copies `recce/VERSION` to `recce_cloud/VERSION`
|
|
45
|
-
3. **Runtime**: `recce_cloud/__init__.py` reads VERSION with fallback logic:
|
|
46
|
-
- First tries `recce_cloud/VERSION` (for installed package)
|
|
47
|
-
- Falls back to `../recce/VERSION` (for development)
|
|
48
|
-
|
|
49
|
-
### Updating Version
|
|
50
|
-
|
|
51
|
-
To release a new version:
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
# 1. Update the version file
|
|
55
|
-
echo "1.25.0" > recce/VERSION
|
|
56
|
-
|
|
57
|
-
# 2. Commit the change
|
|
58
|
-
git add recce/VERSION
|
|
59
|
-
git commit -m "chore: bump version to 1.25.0"
|
|
60
|
-
|
|
61
|
-
# 3. Tag the release
|
|
62
|
-
git tag v1.25.0
|
|
63
|
-
git push && git push --tags
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## Development Workflow
|
|
67
|
-
|
|
68
|
-
### Installing for Development
|
|
69
|
-
|
|
70
|
-
**Install recce (full package):**
|
|
71
|
-
```bash
|
|
72
|
-
make install-dev
|
|
73
|
-
# OR
|
|
74
|
-
pip install -e .[dev]
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Install recce-cloud (lightweight package):**
|
|
78
|
-
```bash
|
|
79
|
-
make install-cloud-dev
|
|
80
|
-
# OR
|
|
81
|
-
cd /path/to/recce
|
|
82
|
-
python setup_cloud.py develop
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
**Install both packages:**
|
|
86
|
-
```bash
|
|
87
|
-
make install-dev
|
|
88
|
-
make install-cloud-dev
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Running Tests
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
# Test recce
|
|
95
|
-
make test
|
|
96
|
-
|
|
97
|
-
# Test recce-cloud
|
|
98
|
-
pytest tests/recce_cloud/
|
|
99
|
-
|
|
100
|
-
# Test with coverage
|
|
101
|
-
make test-coverage
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Code Quality
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
# Format code (both packages)
|
|
108
|
-
make format
|
|
109
|
-
make format-cloud
|
|
110
|
-
|
|
111
|
-
# Check code quality (both packages)
|
|
112
|
-
make check
|
|
113
|
-
make check-cloud
|
|
114
|
-
|
|
115
|
-
# Lint (both packages)
|
|
116
|
-
make flake8
|
|
117
|
-
make flake8-cloud
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Build Process
|
|
121
|
-
|
|
122
|
-
### Building Packages
|
|
123
|
-
|
|
124
|
-
**Build recce only:**
|
|
125
|
-
```bash
|
|
126
|
-
make build
|
|
127
|
-
```
|
|
128
|
-
This will:
|
|
129
|
-
1. Clean build artifacts
|
|
130
|
-
2. Build frontend (pnpm install + pnpm build)
|
|
131
|
-
3. Build Python package (python setup.py sdist bdist_wheel)
|
|
132
|
-
|
|
133
|
-
**Build recce-cloud only:**
|
|
134
|
-
```bash
|
|
135
|
-
make build-cloud
|
|
136
|
-
```
|
|
137
|
-
This will:
|
|
138
|
-
1. Clean build artifacts
|
|
139
|
-
2. Sync VERSION file to recce_cloud/
|
|
140
|
-
3. Build Python package (python setup_cloud.py sdist bdist_wheel)
|
|
141
|
-
|
|
142
|
-
**Build both packages:**
|
|
143
|
-
```bash
|
|
144
|
-
make build-all
|
|
145
|
-
```
|
|
146
|
-
This will:
|
|
147
|
-
1. Clean build artifacts
|
|
148
|
-
2. Build frontend
|
|
149
|
-
3. Build both recce and recce-cloud packages
|
|
150
|
-
|
|
151
|
-
**Build frontend only:**
|
|
152
|
-
```bash
|
|
153
|
-
make build-frontend
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
**Clean build artifacts:**
|
|
157
|
-
```bash
|
|
158
|
-
make clean-build
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
This creates packages in `dist/`:
|
|
162
|
-
- `recce-1.24.0.tar.gz` (source distribution)
|
|
163
|
-
- `recce-1.24.0-py3-none-any.whl` (wheel)
|
|
164
|
-
- `recce-cloud-1.24.0.tar.gz` (source distribution)
|
|
165
|
-
- `recce_cloud-1.24.0-py3-none-any.whl` (wheel)
|
|
166
|
-
|
|
167
|
-
## Publishing to PyPI
|
|
168
|
-
|
|
169
|
-
### Prerequisites
|
|
170
|
-
|
|
171
|
-
1. Install publishing tools:
|
|
172
|
-
```bash
|
|
173
|
-
pip install twine
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
2. Configure PyPI credentials:
|
|
177
|
-
```bash
|
|
178
|
-
# Create ~/.pypirc with:
|
|
179
|
-
[pypi]
|
|
180
|
-
username = __token__
|
|
181
|
-
password = pypi-<your-token>
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### Publishing Workflow
|
|
185
|
-
|
|
186
|
-
**1. Build both packages:**
|
|
187
|
-
```bash
|
|
188
|
-
make build-all
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
**2. Check packages:**
|
|
192
|
-
```bash
|
|
193
|
-
twine check dist/*
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
**3. Upload to TestPyPI (optional):**
|
|
197
|
-
```bash
|
|
198
|
-
twine upload --repository testpypi dist/*
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
**4. Upload to PyPI:**
|
|
202
|
-
```bash
|
|
203
|
-
# Upload recce-cloud first
|
|
204
|
-
twine upload dist/recce-cloud-*
|
|
205
|
-
|
|
206
|
-
# Then upload recce
|
|
207
|
-
twine upload dist/recce-*
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
**Note:** Always publish `recce-cloud` before `recce` to ensure the dependency is available.
|
|
211
|
-
|
|
212
|
-
### Future: Add recce → recce-cloud Dependency
|
|
213
|
-
|
|
214
|
-
When ready, update `setup.py`:
|
|
215
|
-
|
|
216
|
-
```python
|
|
217
|
-
install_requires=[
|
|
218
|
-
"recce-cloud", # Add this line
|
|
219
|
-
"boto3",
|
|
220
|
-
# ... other deps
|
|
221
|
-
]
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
This makes `pip install recce` automatically install `recce-cloud`.
|
|
225
|
-
|
|
226
|
-
## Installation Scenarios
|
|
227
|
-
|
|
228
|
-
### Scenario 1: Lightweight (CI/CD)
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
pip install recce-cloud
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
**Result:**
|
|
235
|
-
- Only `recce-cloud` installed
|
|
236
|
-
- 3 dependencies (click, requests, rich)
|
|
237
|
-
- ~5MB installed size
|
|
238
|
-
- Only `recce-cloud` command available
|
|
239
|
-
|
|
240
|
-
### Scenario 2: Full (Development)
|
|
241
|
-
|
|
242
|
-
```bash
|
|
243
|
-
pip install recce
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
**Result:**
|
|
247
|
-
- Only `recce` installed (currently)
|
|
248
|
-
- 20+ dependencies
|
|
249
|
-
- ~50MB+ installed size
|
|
250
|
-
- Only `recce` command available
|
|
251
|
-
|
|
252
|
-
**Future (when dependency added):**
|
|
253
|
-
- Both `recce` and `recce-cloud` installed
|
|
254
|
-
- `recce-cloud` downloaded automatically from PyPI
|
|
255
|
-
- Both commands available
|
|
256
|
-
|
|
257
|
-
## Troubleshooting
|
|
258
|
-
|
|
259
|
-
### VERSION file not found
|
|
260
|
-
|
|
261
|
-
**Error:**
|
|
262
|
-
```
|
|
263
|
-
FileNotFoundError: [Errno 2] No such file or directory: 'VERSION'
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
**Solution:**
|
|
267
|
-
Ensure you're running build commands from the repository root, or use Makefile targets.
|
|
268
|
-
|
|
269
|
-
### recce-cloud command not found after install
|
|
270
|
-
|
|
271
|
-
**Cause:** Package not installed correctly or not in PATH
|
|
272
|
-
|
|
273
|
-
**Solution:**
|
|
274
|
-
```bash
|
|
275
|
-
# Verify installation
|
|
276
|
-
pip show recce-cloud
|
|
277
|
-
|
|
278
|
-
# Check entry point
|
|
279
|
-
pip show -f recce-cloud | grep recce-cloud
|
|
280
|
-
|
|
281
|
-
# Reinstall
|
|
282
|
-
pip uninstall recce-cloud
|
|
283
|
-
pip install recce-cloud
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
### Development install doesn't work
|
|
287
|
-
|
|
288
|
-
**Issue:** `python setup_cloud.py develop` fails with path errors
|
|
289
|
-
|
|
290
|
-
**Solution:**
|
|
291
|
-
Run from repository root:
|
|
292
|
-
```bash
|
|
293
|
-
cd /path/to/recce
|
|
294
|
-
python setup_cloud.py develop
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
Or use Makefile:
|
|
298
|
-
```bash
|
|
299
|
-
make install-cloud-dev
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
## Reference
|
|
303
|
-
|
|
304
|
-
### Makefile Targets
|
|
305
|
-
|
|
306
|
-
| Command | Description |
|
|
307
|
-
|---------|-------------|
|
|
308
|
-
| `make install` | Install recce package |
|
|
309
|
-
| `make install-dev` | Install recce with dev dependencies |
|
|
310
|
-
| `make install-cloud` | Install recce-cloud package |
|
|
311
|
-
| `make install-cloud-dev` | Install recce-cloud in development mode |
|
|
312
|
-
| `make build` | Build recce package |
|
|
313
|
-
| `make build-cloud` | Build recce-cloud package |
|
|
314
|
-
| `make build-all` | Build both packages |
|
|
315
|
-
| `make clean-build` | Clean build artifacts |
|
|
316
|
-
| `make test` | Run tests |
|
|
317
|
-
| `make format` | Format code (recce) |
|
|
318
|
-
| `make format-cloud` | Format code (recce-cloud) |
|
|
319
|
-
| `make check` | Check code quality (recce) |
|
|
320
|
-
| `make check-cloud` | Check code quality (recce-cloud) |
|
|
321
|
-
|
|
322
|
-
### Package Dependencies
|
|
323
|
-
|
|
324
|
-
**recce-cloud:**
|
|
325
|
-
- `click>=7.1`
|
|
326
|
-
- `requests>=2.28.1`
|
|
327
|
-
- `rich>=12.0.0`
|
|
328
|
-
|
|
329
|
-
**recce:**
|
|
330
|
-
- All recce-cloud dependencies (when dependency added)
|
|
331
|
-
- Plus: boto3, fastapi, uvicorn, pydantic, dbt, etc.
|
|
332
|
-
|
|
333
|
-
## Best Practices
|
|
334
|
-
|
|
335
|
-
1. **Always build both packages together** using `make build-all`
|
|
336
|
-
2. **Test installation** in a clean virtual environment before publishing
|
|
337
|
-
3. **Publish recce-cloud first** to ensure dependency is available
|
|
338
|
-
4. **Use Makefile targets** for consistent builds
|
|
339
|
-
5. **Keep VERSION in sync** by only editing `recce/VERSION`
|
|
340
|
-
6. **Run tests** before publishing: `make test && pytest tests/recce_cloud/`
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Please check the [Recce documentation](https://datarecce.io/docs/)
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
# CSV Download Feature Design
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Add CSV export capabilities to the Run Result pane, refactoring the existing "Copy to Clipboard" button into a menu with multiple export options.
|
|
6
|
-
|
|
7
|
-
## Requirements
|
|
8
|
-
|
|
9
|
-
- Refactor "Copy to Clipboard" button into a dropdown menu
|
|
10
|
-
- Rename screenshot functionality to "Copy as Image"
|
|
11
|
-
- Add "Copy as CSV" option (copies CSV text to clipboard)
|
|
12
|
-
- Add "Download as CSV" option (downloads CSV file)
|
|
13
|
-
- Support all tabular result types
|
|
14
|
-
- Excel-friendly CSV format with UTF-8 BOM
|
|
15
|
-
- Context-aware filenames with timestamps
|
|
16
|
-
|
|
17
|
-
## Menu Structure
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
┌─────────────────────┐
|
|
21
|
-
│ Copy as Image │ ← renamed from "Copy to Clipboard"
|
|
22
|
-
│ Copy as CSV │ ← new (disabled if not tabular)
|
|
23
|
-
│ Download as CSV │ ← new (disabled if not tabular)
|
|
24
|
-
├─────────────────────┤
|
|
25
|
-
│ Share to Cloud │ ← existing (only if share enabled)
|
|
26
|
-
└─────────────────────┘
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Button label remains "Share" for consistency.
|
|
30
|
-
|
|
31
|
-
## New Files
|
|
32
|
-
|
|
33
|
-
### `js/src/lib/csv.ts`
|
|
34
|
-
|
|
35
|
-
CSV utility functions:
|
|
36
|
-
|
|
37
|
-
```typescript
|
|
38
|
-
// Convert tabular data to CSV string (Excel-friendly with BOM)
|
|
39
|
-
export function toCSV(columns: string[], rows: unknown[][]): string
|
|
40
|
-
|
|
41
|
-
// Trigger browser download of CSV file
|
|
42
|
-
export function downloadCSV(content: string, filename: string): void
|
|
43
|
-
|
|
44
|
-
// Copy CSV content to clipboard
|
|
45
|
-
export function copyCSVToClipboard(content: string): Promise<void>
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
CSV formatting rules:
|
|
49
|
-
- UTF-8 BOM prefix (`\uFEFF`) for Excel compatibility
|
|
50
|
-
- Values containing commas, quotes, or newlines wrapped in double-quotes
|
|
51
|
-
- Double-quotes escaped as `""`
|
|
52
|
-
- NULL values exported as empty string
|
|
53
|
-
- Numbers exported without locale formatting (raw values)
|
|
54
|
-
- Booleans as `true`/`false`
|
|
55
|
-
|
|
56
|
-
### `js/src/lib/csvExtractors.ts`
|
|
57
|
-
|
|
58
|
-
Data extraction functions per result type:
|
|
59
|
-
|
|
60
|
-
```typescript
|
|
61
|
-
interface CSVData {
|
|
62
|
-
columns: string[];
|
|
63
|
-
rows: unknown[][];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Returns CSVData or null if not supported
|
|
67
|
-
export function extractCSVData(runType: string, result: unknown): CSVData | null
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## Supported Result Types
|
|
71
|
-
|
|
72
|
-
| Run Type | Data Location | Columns | Rows |
|
|
73
|
-
|----------|---------------|---------|------|
|
|
74
|
-
| `query` | `result.base` or `result.current` | `result.*.columns[].name` | `result.*.data` |
|
|
75
|
-
| `query_diff` | `result.base` + `result.current` | merged columns | merged rows with base/current markers |
|
|
76
|
-
| `query_base` | `result.base` | `result.base.columns[].name` | `result.base.data` |
|
|
77
|
-
| `profile` | `result.base` + `result.current` | profile metrics as columns | one row per column profiled |
|
|
78
|
-
| `row_count` | `result` | `[node, base_count, current_count, diff]` | one row per node |
|
|
79
|
-
| `value_diff` | `result` | value columns | diff rows |
|
|
80
|
-
| `top_k` | `result` | category + count columns | top-k rows |
|
|
81
|
-
|
|
82
|
-
## Filename Generation
|
|
83
|
-
|
|
84
|
-
Format: `{runType}-{nodeName}-{timestamp}.csv`
|
|
85
|
-
|
|
86
|
-
Timestamp format: `YYYYMMDD-HHmmss` (compact, sortable, filesystem-safe)
|
|
87
|
-
|
|
88
|
-
Examples:
|
|
89
|
-
- `query-diff-orders-20241231-143022.csv`
|
|
90
|
-
- `profile-customers-20241231-143022.csv`
|
|
91
|
-
- `row-count-20241231-143022.csv`
|
|
92
|
-
- `query-result-20241231-143022.csv` (fallback when no node name)
|
|
93
|
-
|
|
94
|
-
## Component Changes
|
|
95
|
-
|
|
96
|
-
### `RunResultPane.tsx`
|
|
97
|
-
|
|
98
|
-
Update `RunResultShareMenu` component:
|
|
99
|
-
- Rename "Copy to Clipboard" → "Copy as Image"
|
|
100
|
-
- Add "Copy as CSV" menu item
|
|
101
|
-
- Add "Download as CSV" menu item
|
|
102
|
-
- Pass `run` object to menu for data extraction
|
|
103
|
-
- Disable CSV options when `extractCSVData()` returns null
|
|
104
|
-
|
|
105
|
-
Standalone button case (when `featureToggles.disableShare` is true):
|
|
106
|
-
- Convert single button into dropdown menu
|
|
107
|
-
- Same options minus "Share to Cloud"
|
|
108
|
-
|
|
109
|
-
### Menu Item Disabled States
|
|
110
|
-
|
|
111
|
-
| Option | Disabled when |
|
|
112
|
-
|--------|---------------|
|
|
113
|
-
| Copy as Image | No result, error, or not on "Result" tab |
|
|
114
|
-
| Copy as CSV | Above + result type not tabular |
|
|
115
|
-
| Download as CSV | Above + result type not tabular |
|
|
116
|
-
| Share to Cloud | No result or error |
|
|
117
|
-
|
|
118
|
-
## User Feedback
|
|
119
|
-
|
|
120
|
-
- Toast notification on success: "Copied to clipboard", "Downloaded {filename}"
|
|
121
|
-
- Toast notification on error: "Failed to copy", "Failed to download"
|