@datarecce/ui 0.1.41 → 0.2.1-nightly.20260402

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.
Files changed (717) hide show
  1. package/README.md +28 -133
  2. package/dist/AuthModal-B38pWD3T.js +7 -0
  3. package/dist/AuthModal-B38pWD3T.js.map +1 -0
  4. package/dist/RouteConfigContext-DWFg6bll.d.ts +171 -0
  5. package/dist/RouteConfigContext-DWFg6bll.d.ts.map +1 -0
  6. package/dist/RunProgress-BCFXvUsE.d.ts +429 -0
  7. package/dist/RunProgress-BCFXvUsE.d.ts.map +1 -0
  8. package/dist/ScreenshotDataGrid-BAsPWcde.d.ts +63 -0
  9. package/dist/ScreenshotDataGrid-BAsPWcde.d.ts.map +1 -0
  10. package/dist/SplitPane-g8w-XF2_.d.ts +1607 -0
  11. package/dist/SplitPane-g8w-XF2_.d.ts.map +1 -0
  12. package/dist/advanced.d.ts +17 -0
  13. package/dist/advanced.d.ts.map +1 -0
  14. package/dist/advanced.js +3 -0
  15. package/dist/advanced.js.map +1 -0
  16. package/dist/api-BwiRz6pD.d.ts +254 -0
  17. package/dist/api-BwiRz6pD.d.ts.map +1 -0
  18. package/dist/api-CbzeUNef.js +3 -0
  19. package/dist/api-CbzeUNef.js.map +1 -0
  20. package/dist/api.d.ts +3 -2
  21. package/dist/api.js +2 -100
  22. package/dist/colors-BbPSDR1X.js +3 -0
  23. package/dist/colors-BbPSDR1X.js.map +1 -0
  24. package/dist/components-run.d.ts +5 -0
  25. package/dist/components-run.js +2 -0
  26. package/dist/components.d.ts +9 -2
  27. package/dist/components.js +2 -86
  28. package/dist/constants-D-hOGDbU.js +3 -0
  29. package/dist/constants-D-hOGDbU.js.map +1 -0
  30. package/dist/constants.d.ts +3 -0
  31. package/dist/constants.js +2 -0
  32. package/dist/contexts.d.ts +6 -0
  33. package/dist/contexts.js +2 -0
  34. package/dist/fetchClient-Bqjx8inP.js +3 -0
  35. package/dist/fetchClient-Bqjx8inP.js.map +1 -0
  36. package/dist/fetchClient-CTnJ39EA.d.ts +19 -0
  37. package/dist/fetchClient-CTnJ39EA.d.ts.map +1 -0
  38. package/dist/hooks.d.ts +3 -2
  39. package/dist/hooks.js +2 -43
  40. package/dist/index-B1IyNkDA.d.ts +472 -0
  41. package/dist/index-B1IyNkDA.d.ts.map +1 -0
  42. package/dist/index-BJOCIgE1.d.ts +148 -0
  43. package/dist/index-BJOCIgE1.d.ts.map +1 -0
  44. package/dist/index-C9nBECPv.d.ts +212 -0
  45. package/dist/index-C9nBECPv.d.ts.map +1 -0
  46. package/dist/index-CHJ0PCEg.d.ts +380 -0
  47. package/dist/index-CHJ0PCEg.d.ts.map +1 -0
  48. package/dist/index-CZ7gueQV.d.ts +13 -0
  49. package/dist/index-CZ7gueQV.d.ts.map +1 -0
  50. package/dist/index-CaKcjGJC.d.ts +1536 -0
  51. package/dist/index-CaKcjGJC.d.ts.map +1 -0
  52. package/dist/index-D-H3NTdf.d.ts +744 -0
  53. package/dist/index-D-H3NTdf.d.ts.map +1 -0
  54. package/dist/index-Dh6gw0NG.d.ts +351 -0
  55. package/dist/index-Dh6gw0NG.d.ts.map +1 -0
  56. package/dist/index-Dp-BUtpt.d.ts +704 -0
  57. package/dist/index-Dp-BUtpt.d.ts.map +1 -0
  58. package/dist/index.d.ts +17 -2
  59. package/dist/index.js +2 -198
  60. package/dist/instanceInfo-DNLFhkK8.d.ts +909 -0
  61. package/dist/instanceInfo-DNLFhkK8.d.ts.map +1 -0
  62. package/dist/keepAlive-Dj0q3fC9.js +3 -0
  63. package/dist/keepAlive-Dj0q3fC9.js.map +1 -0
  64. package/dist/lib/api/queryClient.d.ts +8 -0
  65. package/dist/lib/api/queryClient.d.ts.map +1 -0
  66. package/dist/lib/api/queryClient.js +3 -0
  67. package/dist/lib/api/queryClient.js.map +1 -0
  68. package/dist/lib/api/track.d.ts +137 -0
  69. package/dist/lib/api/track.d.ts.map +1 -0
  70. package/dist/lib/api/track.js +3 -0
  71. package/dist/lib/api/track.js.map +1 -0
  72. package/dist/lib/api/user.d.ts +16 -0
  73. package/dist/lib/api/user.d.ts.map +1 -0
  74. package/dist/lib/api/user.js +3 -0
  75. package/dist/lib/api/user.js.map +1 -0
  76. package/dist/lib/const.d.ts +8 -0
  77. package/dist/lib/const.d.ts.map +1 -0
  78. package/dist/lib/const.js +3 -0
  79. package/dist/lib/const.js.map +1 -0
  80. package/dist/lib/result/ResultErrorFallback.d.ts +8 -0
  81. package/dist/lib/result/ResultErrorFallback.d.ts.map +1 -0
  82. package/dist/lib/result/ResultErrorFallback.js +3 -0
  83. package/dist/lib/result/ResultErrorFallback.js.map +1 -0
  84. package/dist/lineage-DsKqx9yh.d.ts +1299 -0
  85. package/dist/lineage-DsKqx9yh.d.ts.map +1 -0
  86. package/dist/primitives-D8s_Rs5T.d.ts +1089 -0
  87. package/dist/primitives-D8s_Rs5T.d.ts.map +1 -0
  88. package/dist/primitives.d.ts +8 -0
  89. package/dist/primitives.js +2 -0
  90. package/dist/result.d.ts +3 -0
  91. package/dist/result.js +2 -0
  92. package/dist/src-BH-TT0Mt.js +12 -0
  93. package/dist/src-BH-TT0Mt.js.map +1 -0
  94. package/dist/style.css +290 -0
  95. package/dist/styles.css +478 -4
  96. package/dist/theme-B_XT39eO.js +3 -0
  97. package/dist/theme-B_XT39eO.js.map +1 -0
  98. package/dist/theme.d.ts +2 -2
  99. package/dist/theme.js +2 -9
  100. package/dist/types-DLRfpcrV.d.ts +234 -0
  101. package/dist/types-DLRfpcrV.d.ts.map +1 -0
  102. package/dist/types-qpgIe7MT.d.ts +171 -0
  103. package/dist/types-qpgIe7MT.d.ts.map +1 -0
  104. package/dist/types.d.ts +10 -2
  105. package/dist/types.js +3 -9
  106. package/dist/types.js.map +1 -0
  107. package/dist/useThemeColors-OwCMwSrx.d.ts +79 -0
  108. package/dist/useThemeColors-OwCMwSrx.d.ts.map +1 -0
  109. package/dist/utils-BwEuAiEd.js +3 -0
  110. package/dist/utils-BwEuAiEd.js.map +1 -0
  111. package/dist/utils-Crcz1Rb5.js +6 -0
  112. package/dist/utils-Crcz1Rb5.js.map +1 -0
  113. package/dist/utils.d.ts +3 -0
  114. package/dist/utils.js +2 -0
  115. package/package.json +142 -108
  116. package/LICENSE +0 -201
  117. package/dist/RecceCheckContext-BJprb2xR.js +0 -7968
  118. package/dist/RecceCheckContext-BJprb2xR.js.map +0 -1
  119. package/dist/RecceCheckContext-DPnWB_aU.css +0 -215
  120. package/dist/RecceCheckContext-DPnWB_aU.css.map +0 -1
  121. package/dist/RecceCheckContext-DbZ7BdRy.mjs +0 -7426
  122. package/dist/RecceCheckContext-DbZ7BdRy.mjs.map +0 -1
  123. package/dist/RecceCheckContext-DyxOeUsX.css +0 -215
  124. package/dist/RecceCheckContext-DyxOeUsX.css.map +0 -1
  125. package/dist/api.d.mts +0 -3
  126. package/dist/api.js.map +0 -1
  127. package/dist/api.mjs +0 -46
  128. package/dist/api.mjs.map +0 -1
  129. package/dist/components-BeAjVBV3.css +0 -70
  130. package/dist/components-BeAjVBV3.css.map +0 -1
  131. package/dist/components-DfXnN1Hx.js +0 -14689
  132. package/dist/components-DfXnN1Hx.js.map +0 -1
  133. package/dist/components-iUxcqtUB.css +0 -70
  134. package/dist/components-iUxcqtUB.css.map +0 -1
  135. package/dist/components-jh6r4tQn.mjs +0 -12348
  136. package/dist/components-jh6r4tQn.mjs.map +0 -1
  137. package/dist/components.d.mts +0 -3
  138. package/dist/components.mjs +0 -9
  139. package/dist/const-CaIm1Z8g.mjs +0 -12
  140. package/dist/const-CaIm1Z8g.mjs.map +0 -1
  141. package/dist/const-CvdZO0FN.js +0 -24
  142. package/dist/const-CvdZO0FN.js.map +0 -1
  143. package/dist/hooks-cQsBXBd1.js +0 -40
  144. package/dist/hooks-cQsBXBd1.js.map +0 -1
  145. package/dist/hooks-eaHm_yEp.mjs +0 -33
  146. package/dist/hooks-eaHm_yEp.mjs.map +0 -1
  147. package/dist/hooks.d.mts +0 -3
  148. package/dist/hooks.mjs +0 -8
  149. package/dist/html2canvas-pro.esm-CsuSOHXp.js +0 -7250
  150. package/dist/html2canvas-pro.esm-CsuSOHXp.js.map +0 -1
  151. package/dist/html2canvas-pro.esm-E7kpobrC.mjs +0 -7249
  152. package/dist/html2canvas-pro.esm-E7kpobrC.mjs.map +0 -1
  153. package/dist/index-B5bpmv0i.d.mts +0 -2172
  154. package/dist/index-B5bpmv0i.d.mts.map +0 -1
  155. package/dist/index-B9lSPJTi.d.ts +0 -2170
  156. package/dist/index-B9lSPJTi.d.ts.map +0 -1
  157. package/dist/index.d.mts +0 -3
  158. package/dist/index.js.map +0 -1
  159. package/dist/index.mjs +0 -20
  160. package/dist/index.mjs.map +0 -1
  161. package/dist/mui-theme-CUhybmBq.mjs +0 -696
  162. package/dist/mui-theme-CUhybmBq.mjs.map +0 -1
  163. package/dist/mui-theme-iBHkjXJq.js +0 -732
  164. package/dist/mui-theme-iBHkjXJq.js.map +0 -1
  165. package/dist/state-CTITyT0R.js +0 -795
  166. package/dist/state-CTITyT0R.js.map +0 -1
  167. package/dist/state-Sc2b4jri.mjs +0 -382
  168. package/dist/state-Sc2b4jri.mjs.map +0 -1
  169. package/dist/theme.d.mts +0 -3
  170. package/dist/theme.mjs +0 -4
  171. package/dist/tooltipMessage-BC5W7H3X.js +0 -13
  172. package/dist/tooltipMessage-BC5W7H3X.js.map +0 -1
  173. package/dist/tooltipMessage-B_xMIKWL.mjs +0 -7
  174. package/dist/tooltipMessage-B_xMIKWL.mjs.map +0 -1
  175. package/dist/types.d.mts +0 -3
  176. package/dist/types.mjs +0 -6
  177. package/dist/urls-BQW5wjg-.js +0 -13
  178. package/dist/urls-BQW5wjg-.js.map +0 -1
  179. package/dist/urls-DT7FVEcS.mjs +0 -7
  180. package/dist/urls-DT7FVEcS.mjs.map +0 -1
  181. package/dist/version-B9s8yne-.js +0 -300
  182. package/dist/version-B9s8yne-.js.map +0 -1
  183. package/dist/version-DP1kU_7v.mjs +0 -162
  184. package/dist/version-DP1kU_7v.mjs.map +0 -1
  185. package/recce-source/.editorconfig +0 -26
  186. package/recce-source/.flake8 +0 -37
  187. package/recce-source/.github/ISSUE_TEMPLATE/bug_report.yml +0 -67
  188. package/recce-source/.github/ISSUE_TEMPLATE/custom.md +0 -10
  189. package/recce-source/.github/ISSUE_TEMPLATE/feature_request.yml +0 -42
  190. package/recce-source/.github/PULL_REQUEST_TEMPLATE.md +0 -21
  191. package/recce-source/.github/copilot-instructions.md +0 -331
  192. package/recce-source/.github/instructions/backend-instructions.md +0 -541
  193. package/recce-source/.github/instructions/frontend-instructions.md +0 -317
  194. package/recce-source/.github/workflows/build-statics.yaml +0 -72
  195. package/recce-source/.github/workflows/bump.yaml +0 -48
  196. package/recce-source/.github/workflows/integration-tests-cloud.yaml +0 -92
  197. package/recce-source/.github/workflows/integration-tests-sqlmesh.yaml +0 -33
  198. package/recce-source/.github/workflows/integration-tests.yaml +0 -52
  199. package/recce-source/.github/workflows/nightly.yaml +0 -246
  200. package/recce-source/.github/workflows/release.yaml +0 -196
  201. package/recce-source/.github/workflows/tests-js.yaml +0 -58
  202. package/recce-source/.github/workflows/tests-python.yaml +0 -128
  203. package/recce-source/.pre-commit-config.yaml +0 -26
  204. package/recce-source/CLAUDE.md +0 -483
  205. package/recce-source/CODE_OF_CONDUCT.md +0 -128
  206. package/recce-source/CONTRIBUTING.md +0 -107
  207. package/recce-source/LICENSE +0 -201
  208. package/recce-source/Makefile +0 -126
  209. package/recce-source/README.md +0 -182
  210. package/recce-source/RECCE_CLOUD.md +0 -81
  211. package/recce-source/SECURITY.md +0 -25
  212. package/recce-source/docs/PACKAGING.md +0 -340
  213. package/recce-source/docs/README.md +0 -1
  214. package/recce-source/docs/plans/2024-12-31-csv-download-design.md +0 -121
  215. package/recce-source/docs/plans/2024-12-31-csv-download-implementation.md +0 -930
  216. package/recce-source/integration_tests/dbt/dbt_project.yml +0 -26
  217. package/recce-source/integration_tests/dbt/models/customers.sql +0 -69
  218. package/recce-source/integration_tests/dbt/models/docs.md +0 -14
  219. package/recce-source/integration_tests/dbt/models/orders.sql +0 -56
  220. package/recce-source/integration_tests/dbt/models/schema.yml +0 -82
  221. package/recce-source/integration_tests/dbt/models/staging/schema.yml +0 -31
  222. package/recce-source/integration_tests/dbt/models/staging/stg_customers.sql +0 -22
  223. package/recce-source/integration_tests/dbt/models/staging/stg_orders.sql +0 -23
  224. package/recce-source/integration_tests/dbt/models/staging/stg_payments.sql +0 -25
  225. package/recce-source/integration_tests/dbt/packages.yml +0 -7
  226. package/recce-source/integration_tests/dbt/profiles.yml +0 -8
  227. package/recce-source/integration_tests/dbt/seeds/raw_customers.csv +0 -101
  228. package/recce-source/integration_tests/dbt/seeds/raw_orders.csv +0 -100
  229. package/recce-source/integration_tests/dbt/seeds/raw_payments.csv +0 -114
  230. package/recce-source/integration_tests/dbt/seeds/raw_statuses.csv +0 -5
  231. package/recce-source/integration_tests/dbt/smoke_test.sh +0 -72
  232. package/recce-source/integration_tests/dbt/smoke_test_cloud.sh +0 -71
  233. package/recce-source/integration_tests/sqlmesh/__init__.py +0 -0
  234. package/recce-source/integration_tests/sqlmesh/audits/assert_item_price_above_zero.sql +0 -9
  235. package/recce-source/integration_tests/sqlmesh/audits/items.sql +0 -7
  236. package/recce-source/integration_tests/sqlmesh/audits/order_items.sql +0 -7
  237. package/recce-source/integration_tests/sqlmesh/config.py +0 -171
  238. package/recce-source/integration_tests/sqlmesh/helper.py +0 -20
  239. package/recce-source/integration_tests/sqlmesh/hooks/__init__.py +0 -0
  240. package/recce-source/integration_tests/sqlmesh/macros/__init__.py +0 -0
  241. package/recce-source/integration_tests/sqlmesh/macros/macros.py +0 -8
  242. package/recce-source/integration_tests/sqlmesh/macros/macros.sql +0 -8
  243. package/recce-source/integration_tests/sqlmesh/macros/utils.py +0 -11
  244. package/recce-source/integration_tests/sqlmesh/metrics/metrics.sql +0 -25
  245. package/recce-source/integration_tests/sqlmesh/models/customer_revenue_by_day.sql +0 -41
  246. package/recce-source/integration_tests/sqlmesh/models/customer_revenue_lifetime.sql +0 -60
  247. package/recce-source/integration_tests/sqlmesh/models/customers.sql +0 -32
  248. package/recce-source/integration_tests/sqlmesh/models/items.py +0 -95
  249. package/recce-source/integration_tests/sqlmesh/models/marketing.sql +0 -15
  250. package/recce-source/integration_tests/sqlmesh/models/order_items.py +0 -95
  251. package/recce-source/integration_tests/sqlmesh/models/orders.py +0 -70
  252. package/recce-source/integration_tests/sqlmesh/models/raw_marketing.py +0 -62
  253. package/recce-source/integration_tests/sqlmesh/models/top_waiters.sql +0 -23
  254. package/recce-source/integration_tests/sqlmesh/models/waiter_as_customer_by_day.sql +0 -29
  255. package/recce-source/integration_tests/sqlmesh/models/waiter_names.sql +0 -10
  256. package/recce-source/integration_tests/sqlmesh/models/waiter_revenue_by_day.sql +0 -29
  257. package/recce-source/integration_tests/sqlmesh/models/waiters.py +0 -62
  258. package/recce-source/integration_tests/sqlmesh/prep_env.sh +0 -16
  259. package/recce-source/integration_tests/sqlmesh/schema.yaml +0 -5
  260. package/recce-source/integration_tests/sqlmesh/seeds/waiter_names.csv +0 -11
  261. package/recce-source/integration_tests/sqlmesh/test_server.sh +0 -29
  262. package/recce-source/integration_tests/sqlmesh/tests/test_customer_revenue_by_day.yaml +0 -63
  263. package/recce-source/integration_tests/sqlmesh/tests/test_order_items.yaml +0 -72
  264. package/recce-source/js/.editorconfig +0 -27
  265. package/recce-source/js/.env.development +0 -5
  266. package/recce-source/js/.husky/pre-commit +0 -29
  267. package/recce-source/js/.nvmrc +0 -1
  268. package/recce-source/js/README.md +0 -39
  269. package/recce-source/js/app/(mainComponents)/DisplayModeToggle.tsx +0 -65
  270. package/recce-source/js/app/(mainComponents)/NavBar.tsx +0 -228
  271. package/recce-source/js/app/(mainComponents)/RecceVersionBadge.tsx +0 -107
  272. package/recce-source/js/app/(mainComponents)/TopBar.tsx +0 -252
  273. package/recce-source/js/app/@lineage/default.tsx +0 -20
  274. package/recce-source/js/app/@lineage/page.tsx +0 -14
  275. package/recce-source/js/app/MainLayout.tsx +0 -170
  276. package/recce-source/js/app/Providers.tsx +0 -49
  277. package/recce-source/js/app/checks/page.tsx +0 -296
  278. package/recce-source/js/app/error.tsx +0 -93
  279. package/recce-source/js/app/favicon.ico +0 -0
  280. package/recce-source/js/app/global-error.tsx +0 -115
  281. package/recce-source/js/app/global.css +0 -82
  282. package/recce-source/js/app/layout.tsx +0 -48
  283. package/recce-source/js/app/lineage/page.tsx +0 -15
  284. package/recce-source/js/app/page.tsx +0 -12
  285. package/recce-source/js/app/query/page.tsx +0 -8
  286. package/recce-source/js/biome.json +0 -313
  287. package/recce-source/js/jest.config.js +0 -34
  288. package/recce-source/js/jest.globals.d.ts +0 -32
  289. package/recce-source/js/jest.setup.js +0 -91
  290. package/recce-source/js/next.config.js +0 -16
  291. package/recce-source/js/package-lock.json +0 -13843
  292. package/recce-source/js/package.json +0 -123
  293. package/recce-source/js/pnpm-lock.yaml +0 -9235
  294. package/recce-source/js/pnpm-workspace.yaml +0 -6
  295. package/recce-source/js/postcss.config.js +0 -5
  296. package/recce-source/js/public/auth_callback.html +0 -68
  297. package/recce-source/js/public/imgs/feedback/thumbs-down.png +0 -0
  298. package/recce-source/js/public/imgs/feedback/thumbs-up.png +0 -0
  299. package/recce-source/js/public/imgs/reload-image.svg +0 -4
  300. package/recce-source/js/public/logo/recce-logo-white.png +0 -0
  301. package/recce-source/js/src/components/AuthModal/AuthModal.tsx +0 -202
  302. package/recce-source/js/src/components/app/AvatarDropdown.tsx +0 -159
  303. package/recce-source/js/src/components/app/EnvInfo.tsx +0 -357
  304. package/recce-source/js/src/components/app/Filename.tsx +0 -388
  305. package/recce-source/js/src/components/app/SetupConnectionPopover.tsx +0 -91
  306. package/recce-source/js/src/components/app/StateExporter.tsx +0 -57
  307. package/recce-source/js/src/components/app/StateImporter.tsx +0 -198
  308. package/recce-source/js/src/components/app/StateSharing.tsx +0 -145
  309. package/recce-source/js/src/components/app/StateSynchronizer.tsx +0 -205
  310. package/recce-source/js/src/components/charts/HistogramChart.tsx +0 -291
  311. package/recce-source/js/src/components/charts/SquareIcon.tsx +0 -51
  312. package/recce-source/js/src/components/charts/TopKSummaryList.tsx +0 -457
  313. package/recce-source/js/src/components/charts/chartTheme.ts +0 -74
  314. package/recce-source/js/src/components/check/CheckBreadcrumb.tsx +0 -97
  315. package/recce-source/js/src/components/check/CheckDescription.tsx +0 -134
  316. package/recce-source/js/src/components/check/CheckDetail.tsx +0 -797
  317. package/recce-source/js/src/components/check/CheckEmptyState.tsx +0 -84
  318. package/recce-source/js/src/components/check/CheckList.tsx +0 -320
  319. package/recce-source/js/src/components/check/LineageDiffView.tsx +0 -32
  320. package/recce-source/js/src/components/check/PresetCheckTemplateView.tsx +0 -48
  321. package/recce-source/js/src/components/check/SchemaDiffView.tsx +0 -290
  322. package/recce-source/js/src/components/check/check.ts +0 -25
  323. package/recce-source/js/src/components/check/timeline/CheckTimeline.tsx +0 -163
  324. package/recce-source/js/src/components/check/timeline/CommentInput.tsx +0 -84
  325. package/recce-source/js/src/components/check/timeline/TimelineEvent.tsx +0 -468
  326. package/recce-source/js/src/components/check/timeline/index.ts +0 -12
  327. package/recce-source/js/src/components/check/utils.ts +0 -12
  328. package/recce-source/js/src/components/data-grid/ScreenshotDataGrid.tsx +0 -333
  329. package/recce-source/js/src/components/data-grid/agGridStyles.css +0 -55
  330. package/recce-source/js/src/components/data-grid/agGridTheme.ts +0 -43
  331. package/recce-source/js/src/components/editor/CodeEditor.tsx +0 -107
  332. package/recce-source/js/src/components/editor/DiffEditor.tsx +0 -162
  333. package/recce-source/js/src/components/editor/index.ts +0 -12
  334. package/recce-source/js/src/components/errorboundary/ErrorBoundary.tsx +0 -87
  335. package/recce-source/js/src/components/histogram/HistogramDiffForm.tsx +0 -147
  336. package/recce-source/js/src/components/histogram/HistogramDiffResultView.tsx +0 -63
  337. package/recce-source/js/src/components/icons/index.tsx +0 -142
  338. package/recce-source/js/src/components/lineage/ActionControl.tsx +0 -63
  339. package/recce-source/js/src/components/lineage/ActionTag.tsx +0 -141
  340. package/recce-source/js/src/components/lineage/ChangeStatusLegend.tsx +0 -46
  341. package/recce-source/js/src/components/lineage/ColumnLevelLineageControl.tsx +0 -327
  342. package/recce-source/js/src/components/lineage/ColumnLevelLineageLegend.tsx +0 -57
  343. package/recce-source/js/src/components/lineage/GraphColumnNode.tsx +0 -199
  344. package/recce-source/js/src/components/lineage/GraphEdge.tsx +0 -59
  345. package/recce-source/js/src/components/lineage/GraphNode.tsx +0 -555
  346. package/recce-source/js/src/components/lineage/LineagePage.tsx +0 -10
  347. package/recce-source/js/src/components/lineage/LineageView.tsx +0 -1384
  348. package/recce-source/js/src/components/lineage/LineageViewContext.tsx +0 -86
  349. package/recce-source/js/src/components/lineage/LineageViewContextMenu.tsx +0 -637
  350. package/recce-source/js/src/components/lineage/LineageViewNotification.tsx +0 -64
  351. package/recce-source/js/src/components/lineage/LineageViewTopBar.tsx +0 -596
  352. package/recce-source/js/src/components/lineage/NodeSqlView.tsx +0 -136
  353. package/recce-source/js/src/components/lineage/NodeTag.tsx +0 -278
  354. package/recce-source/js/src/components/lineage/NodeView.tsx +0 -642
  355. package/recce-source/js/src/components/lineage/SandboxView.tsx +0 -436
  356. package/recce-source/js/src/components/lineage/ServerDisconnectedModalContent.tsx +0 -105
  357. package/recce-source/js/src/components/lineage/SetupConnectionBanner.tsx +0 -52
  358. package/recce-source/js/src/components/lineage/SingleEnvironmentQueryView.tsx +0 -152
  359. package/recce-source/js/src/components/lineage/graph.test.ts +0 -31
  360. package/recce-source/js/src/components/lineage/graph.ts +0 -58
  361. package/recce-source/js/src/components/lineage/lineage.test.ts +0 -169
  362. package/recce-source/js/src/components/lineage/lineage.ts +0 -521
  363. package/recce-source/js/src/components/lineage/styles.css +0 -42
  364. package/recce-source/js/src/components/lineage/styles.tsx +0 -165
  365. package/recce-source/js/src/components/lineage/useMultiNodesAction.ts +0 -352
  366. package/recce-source/js/src/components/lineage/useValueDiffAlertDialog.tsx +0 -108
  367. package/recce-source/js/src/components/onboarding-guide/Notification.tsx +0 -62
  368. package/recce-source/js/src/components/profile/ProfileDiffForm.tsx +0 -134
  369. package/recce-source/js/src/components/profile/ProfileDiffResultView.tsx +0 -243
  370. package/recce-source/js/src/components/query/ChangedOnlyCheckbox.tsx +0 -29
  371. package/recce-source/js/src/components/query/DiffText.tsx +0 -120
  372. package/recce-source/js/src/components/query/QueryDiffResultView.tsx +0 -468
  373. package/recce-source/js/src/components/query/QueryForm.tsx +0 -80
  374. package/recce-source/js/src/components/query/QueryPage.tsx +0 -282
  375. package/recce-source/js/src/components/query/QueryResultView.tsx +0 -180
  376. package/recce-source/js/src/components/query/SetupConnectionGuide.tsx +0 -57
  377. package/recce-source/js/src/components/query/SqlEditor.tsx +0 -245
  378. package/recce-source/js/src/components/query/ToggleSwitch.tsx +0 -84
  379. package/recce-source/js/src/components/query/styles.css +0 -21
  380. package/recce-source/js/src/components/routing/DirectUrlAccess.test.tsx +0 -428
  381. package/recce-source/js/src/components/routing/LineageStatePreservation.test.tsx +0 -311
  382. package/recce-source/js/src/components/routing/Navigation.test.tsx +0 -256
  383. package/recce-source/js/src/components/rowcount/RowCountDiffResultView.tsx +0 -108
  384. package/recce-source/js/src/components/rowcount/delta.test.ts +0 -51
  385. package/recce-source/js/src/components/rowcount/delta.ts +0 -16
  386. package/recce-source/js/src/components/run/RunList.tsx +0 -303
  387. package/recce-source/js/src/components/run/RunModal.tsx +0 -191
  388. package/recce-source/js/src/components/run/RunPage.tsx +0 -26
  389. package/recce-source/js/src/components/run/RunResultPane.tsx +0 -578
  390. package/recce-source/js/src/components/run/RunStatusAndDate.tsx +0 -106
  391. package/recce-source/js/src/components/run/RunToolbar.tsx +0 -70
  392. package/recce-source/js/src/components/run/RunView.tsx +0 -196
  393. package/recce-source/js/src/components/run/registry.ts +0 -214
  394. package/recce-source/js/src/components/run/types.ts +0 -14
  395. package/recce-source/js/src/components/schema/ColumnNameCell.test.tsx +0 -169
  396. package/recce-source/js/src/components/schema/ColumnNameCell.tsx +0 -198
  397. package/recce-source/js/src/components/schema/SchemaView.tsx +0 -336
  398. package/recce-source/js/src/components/schema/schemaDiff.ts +0 -32
  399. package/recce-source/js/src/components/schema/style.css +0 -134
  400. package/recce-source/js/src/components/screenshot/ScreenshotBox.tsx +0 -39
  401. package/recce-source/js/src/components/shared/HistoryToggle.tsx +0 -35
  402. package/recce-source/js/src/components/split/Split.tsx +0 -40
  403. package/recce-source/js/src/components/split/styles.css +0 -24
  404. package/recce-source/js/src/components/summary/ChangeSummary.tsx +0 -264
  405. package/recce-source/js/src/components/summary/SchemaSummary.tsx +0 -123
  406. package/recce-source/js/src/components/summary/SummaryView.tsx +0 -29
  407. package/recce-source/js/src/components/timeout/IdleTimeoutBadge.tsx +0 -48
  408. package/recce-source/js/src/components/top-k/TopKDiffForm.tsx +0 -58
  409. package/recce-source/js/src/components/top-k/TopKDiffResultView.tsx +0 -73
  410. package/recce-source/js/src/components/ui/dataGrid/DataFrameColumnGroupHeader.tsx +0 -228
  411. package/recce-source/js/src/components/ui/dataGrid/DataFrameColumnHeader.tsx +0 -113
  412. package/recce-source/js/src/components/ui/dataGrid/defaultRenderCell.tsx +0 -72
  413. package/recce-source/js/src/components/ui/dataGrid/index.ts +0 -23
  414. package/recce-source/js/src/components/ui/dataGrid/inlineRenderCell.test.tsx +0 -607
  415. package/recce-source/js/src/components/ui/dataGrid/inlineRenderCell.tsx +0 -211
  416. package/recce-source/js/src/components/ui/dataGrid/schemaCells.test.tsx +0 -452
  417. package/recce-source/js/src/components/ui/dataGrid/schemaCells.tsx +0 -142
  418. package/recce-source/js/src/components/ui/dataGrid/valueDiffCells.test.tsx +0 -178
  419. package/recce-source/js/src/components/ui/dataGrid/valueDiffCells.tsx +0 -275
  420. package/recce-source/js/src/components/ui/markdown/ExternalLinkConfirmDialog.tsx +0 -134
  421. package/recce-source/js/src/components/ui/markdown/MarkdownContent.tsx +0 -364
  422. package/recce-source/js/src/components/ui/mui/index.ts +0 -13
  423. package/recce-source/js/src/components/ui/mui-provider.tsx +0 -67
  424. package/recce-source/js/src/components/ui/mui-theme.ts +0 -1039
  425. package/recce-source/js/src/components/ui/mui-utils.ts +0 -113
  426. package/recce-source/js/src/components/ui/toaster.tsx +0 -288
  427. package/recce-source/js/src/components/valuediff/ValueDiffDetailResultView.tsx +0 -216
  428. package/recce-source/js/src/components/valuediff/ValueDiffForm.tsx +0 -246
  429. package/recce-source/js/src/components/valuediff/ValueDiffResultView.tsx +0 -81
  430. package/recce-source/js/src/components/valuediff/shared.ts +0 -33
  431. package/recce-source/js/src/constants/tooltipMessage.ts +0 -3
  432. package/recce-source/js/src/constants/urls.ts +0 -1
  433. package/recce-source/js/src/lib/UrlHash.ts +0 -12
  434. package/recce-source/js/src/lib/api/adhocQuery.ts +0 -70
  435. package/recce-source/js/src/lib/api/axiosClient.ts +0 -9
  436. package/recce-source/js/src/lib/api/cacheKeys.ts +0 -13
  437. package/recce-source/js/src/lib/api/checkEvents.ts +0 -252
  438. package/recce-source/js/src/lib/api/checks.ts +0 -129
  439. package/recce-source/js/src/lib/api/cll.ts +0 -53
  440. package/recce-source/js/src/lib/api/connectToCloud.ts +0 -13
  441. package/recce-source/js/src/lib/api/flag.ts +0 -37
  442. package/recce-source/js/src/lib/api/info.ts +0 -198
  443. package/recce-source/js/src/lib/api/instanceInfo.ts +0 -25
  444. package/recce-source/js/src/lib/api/keepAlive.ts +0 -108
  445. package/recce-source/js/src/lib/api/lineagecheck.ts +0 -35
  446. package/recce-source/js/src/lib/api/localStorageKeys.ts +0 -7
  447. package/recce-source/js/src/lib/api/models.ts +0 -59
  448. package/recce-source/js/src/lib/api/profile.ts +0 -65
  449. package/recce-source/js/src/lib/api/rowcount.ts +0 -19
  450. package/recce-source/js/src/lib/api/runs.ts +0 -174
  451. package/recce-source/js/src/lib/api/schemacheck.ts +0 -31
  452. package/recce-source/js/src/lib/api/select.ts +0 -25
  453. package/recce-source/js/src/lib/api/sessionStorageKeys.ts +0 -8
  454. package/recce-source/js/src/lib/api/state.ts +0 -117
  455. package/recce-source/js/src/lib/api/track.ts +0 -281
  456. package/recce-source/js/src/lib/api/types.ts +0 -284
  457. package/recce-source/js/src/lib/api/user.ts +0 -42
  458. package/recce-source/js/src/lib/api/valuediff.ts +0 -46
  459. package/recce-source/js/src/lib/api/version.ts +0 -40
  460. package/recce-source/js/src/lib/const.ts +0 -9
  461. package/recce-source/js/src/lib/csv/extractors.test.ts +0 -456
  462. package/recce-source/js/src/lib/csv/extractors.ts +0 -468
  463. package/recce-source/js/src/lib/csv/format.test.ts +0 -211
  464. package/recce-source/js/src/lib/csv/format.ts +0 -44
  465. package/recce-source/js/src/lib/csv/index.test.ts +0 -155
  466. package/recce-source/js/src/lib/csv/index.ts +0 -109
  467. package/recce-source/js/src/lib/dataGrid/crossFunctionConsistency.test.ts +0 -626
  468. package/recce-source/js/src/lib/dataGrid/dataGridFactory.test.ts +0 -2140
  469. package/recce-source/js/src/lib/dataGrid/dataGridFactory.ts +0 -397
  470. package/recce-source/js/src/lib/dataGrid/generators/rowCountUtils.test.ts +0 -132
  471. package/recce-source/js/src/lib/dataGrid/generators/rowCountUtils.ts +0 -126
  472. package/recce-source/js/src/lib/dataGrid/generators/toDataDiffGrid.test.ts +0 -1627
  473. package/recce-source/js/src/lib/dataGrid/generators/toDataDiffGrid.ts +0 -140
  474. package/recce-source/js/src/lib/dataGrid/generators/toDataGrid.ts +0 -67
  475. package/recce-source/js/src/lib/dataGrid/generators/toRowCountDataGrid.test.ts +0 -142
  476. package/recce-source/js/src/lib/dataGrid/generators/toRowCountDataGrid.ts +0 -71
  477. package/recce-source/js/src/lib/dataGrid/generators/toRowCountDiffDataGrid.test.ts +0 -258
  478. package/recce-source/js/src/lib/dataGrid/generators/toRowCountDiffDataGrid.ts +0 -153
  479. package/recce-source/js/src/lib/dataGrid/generators/toSchemaDataGrid.test.ts +0 -951
  480. package/recce-source/js/src/lib/dataGrid/generators/toSchemaDataGrid.ts +0 -221
  481. package/recce-source/js/src/lib/dataGrid/generators/toValueDataGrid.test.ts +0 -395
  482. package/recce-source/js/src/lib/dataGrid/generators/toValueDataGrid.ts +0 -184
  483. package/recce-source/js/src/lib/dataGrid/generators/toValueDiffGrid.test.ts +0 -884
  484. package/recce-source/js/src/lib/dataGrid/generators/toValueDiffGrid.ts +0 -113
  485. package/recce-source/js/src/lib/dataGrid/index.ts +0 -51
  486. package/recce-source/js/src/lib/dataGrid/propertyBased.test.ts +0 -858
  487. package/recce-source/js/src/lib/dataGrid/shared/columnBuilders.test.ts +0 -482
  488. package/recce-source/js/src/lib/dataGrid/shared/columnBuilders.ts +0 -345
  489. package/recce-source/js/src/lib/dataGrid/shared/dataTypeEdgeCases.test.ts +0 -698
  490. package/recce-source/js/src/lib/dataGrid/shared/diffColumnBuilder.test.tsx +0 -820
  491. package/recce-source/js/src/lib/dataGrid/shared/diffColumnBuilder.tsx +0 -277
  492. package/recce-source/js/src/lib/dataGrid/shared/gridUtils.test.ts +0 -785
  493. package/recce-source/js/src/lib/dataGrid/shared/gridUtils.ts +0 -370
  494. package/recce-source/js/src/lib/dataGrid/shared/index.ts +0 -81
  495. package/recce-source/js/src/lib/dataGrid/shared/rowBuilders.test.ts +0 -909
  496. package/recce-source/js/src/lib/dataGrid/shared/rowBuilders.ts +0 -325
  497. package/recce-source/js/src/lib/dataGrid/shared/simpleColumnBuilder.tsx +0 -240
  498. package/recce-source/js/src/lib/dataGrid/shared/toDiffColumn.test.tsx +0 -719
  499. package/recce-source/js/src/lib/dataGrid/shared/toDiffColumn.tsx +0 -231
  500. package/recce-source/js/src/lib/dataGrid/shared/validation.test.ts +0 -559
  501. package/recce-source/js/src/lib/dataGrid/shared/validation.ts +0 -367
  502. package/recce-source/js/src/lib/dataGrid/warehouseNamingConventions.test.ts +0 -1117
  503. package/recce-source/js/src/lib/formatSelect.ts +0 -50
  504. package/recce-source/js/src/lib/hooks/ApiConfigContext.tsx +0 -181
  505. package/recce-source/js/src/lib/hooks/IdleTimeoutContext.tsx +0 -177
  506. package/recce-source/js/src/lib/hooks/LineageGraphContext.tsx +0 -512
  507. package/recce-source/js/src/lib/hooks/RecceActionContext.tsx +0 -269
  508. package/recce-source/js/src/lib/hooks/RecceCheckContext.tsx +0 -33
  509. package/recce-source/js/src/lib/hooks/RecceContextProvider.tsx +0 -54
  510. package/recce-source/js/src/lib/hooks/RecceInstanceContext.tsx +0 -129
  511. package/recce-source/js/src/lib/hooks/RecceQueryContext.tsx +0 -98
  512. package/recce-source/js/src/lib/hooks/RecceShareStateContext.tsx +0 -59
  513. package/recce-source/js/src/lib/hooks/ScreenShot.tsx +0 -399
  514. package/recce-source/js/src/lib/hooks/useAppRouter.test.ts +0 -211
  515. package/recce-source/js/src/lib/hooks/useAppRouter.ts +0 -200
  516. package/recce-source/js/src/lib/hooks/useCSVExport.ts +0 -136
  517. package/recce-source/js/src/lib/hooks/useCheckEvents.ts +0 -99
  518. package/recce-source/js/src/lib/hooks/useCheckToast.tsx +0 -14
  519. package/recce-source/js/src/lib/hooks/useClipBoardToast.tsx +0 -27
  520. package/recce-source/js/src/lib/hooks/useCountdownToast.tsx +0 -102
  521. package/recce-source/js/src/lib/hooks/useFeedbackCollectionToast.tsx +0 -130
  522. package/recce-source/js/src/lib/hooks/useGuideToast.tsx +0 -45
  523. package/recce-source/js/src/lib/hooks/useIdleDetection.tsx +0 -185
  524. package/recce-source/js/src/lib/hooks/useModelColumns.tsx +0 -113
  525. package/recce-source/js/src/lib/hooks/useRecceInstanceInfo.tsx +0 -13
  526. package/recce-source/js/src/lib/hooks/useRecceServerFlag.tsx +0 -13
  527. package/recce-source/js/src/lib/hooks/useRun.tsx +0 -89
  528. package/recce-source/js/src/lib/hooks/useThemeColors.ts +0 -115
  529. package/recce-source/js/src/lib/mergeKeys.test.ts +0 -89
  530. package/recce-source/js/src/lib/mergeKeys.ts +0 -86
  531. package/recce-source/js/src/lib/result/ResultErrorFallback.tsx +0 -9
  532. package/recce-source/js/src/lib/utils/formatTime.ts +0 -84
  533. package/recce-source/js/src/lib/utils/urls.ts +0 -16
  534. package/recce-source/js/src/utils/DropdownValuesInput.tsx +0 -297
  535. package/recce-source/js/src/utils/formatters.tsx +0 -237
  536. package/recce-source/js/src/utils/transforms.ts +0 -81
  537. package/recce-source/js/tsconfig.json +0 -47
  538. package/recce-source/macros/README.md +0 -8
  539. package/recce-source/macros/recce_athena.sql +0 -73
  540. package/recce-source/pyproject.toml +0 -109
  541. package/recce-source/recce/VERSION +0 -1
  542. package/recce-source/recce/__init__.py +0 -84
  543. package/recce-source/recce/adapter/__init__.py +0 -0
  544. package/recce-source/recce/adapter/base.py +0 -109
  545. package/recce-source/recce/adapter/dbt_adapter/__init__.py +0 -1699
  546. package/recce-source/recce/adapter/dbt_adapter/dbt_version.py +0 -42
  547. package/recce-source/recce/adapter/sqlmesh_adapter.py +0 -141
  548. package/recce-source/recce/apis/__init__.py +0 -0
  549. package/recce-source/recce/apis/check_api.py +0 -203
  550. package/recce-source/recce/apis/check_events_api.py +0 -353
  551. package/recce-source/recce/apis/check_func.py +0 -130
  552. package/recce-source/recce/apis/run_api.py +0 -130
  553. package/recce-source/recce/apis/run_func.py +0 -258
  554. package/recce-source/recce/artifact.py +0 -266
  555. package/recce-source/recce/cli.py +0 -1846
  556. package/recce-source/recce/config.py +0 -127
  557. package/recce-source/recce/connect_to_cloud.py +0 -138
  558. package/recce-source/recce/core.py +0 -334
  559. package/recce-source/recce/diff.py +0 -26
  560. package/recce-source/recce/event/CONFIG +0 -1
  561. package/recce-source/recce/event/SENTRY_DNS +0 -1
  562. package/recce-source/recce/event/__init__.py +0 -304
  563. package/recce-source/recce/event/collector.py +0 -184
  564. package/recce-source/recce/event/track.py +0 -158
  565. package/recce-source/recce/exceptions.py +0 -21
  566. package/recce-source/recce/git.py +0 -77
  567. package/recce-source/recce/github.py +0 -222
  568. package/recce-source/recce/mcp_server.py +0 -885
  569. package/recce-source/recce/models/__init__.py +0 -6
  570. package/recce-source/recce/models/check.py +0 -481
  571. package/recce-source/recce/models/run.py +0 -46
  572. package/recce-source/recce/models/types.py +0 -218
  573. package/recce-source/recce/pull_request.py +0 -124
  574. package/recce-source/recce/run.py +0 -390
  575. package/recce-source/recce/server.py +0 -877
  576. package/recce-source/recce/state/__init__.py +0 -31
  577. package/recce-source/recce/state/cloud.py +0 -644
  578. package/recce-source/recce/state/const.py +0 -26
  579. package/recce-source/recce/state/local.py +0 -56
  580. package/recce-source/recce/state/state.py +0 -119
  581. package/recce-source/recce/state/state_loader.py +0 -174
  582. package/recce-source/recce/summary.py +0 -575
  583. package/recce-source/recce/tasks/__init__.py +0 -23
  584. package/recce-source/recce/tasks/core.py +0 -134
  585. package/recce-source/recce/tasks/dataframe.py +0 -170
  586. package/recce-source/recce/tasks/histogram.py +0 -433
  587. package/recce-source/recce/tasks/lineage.py +0 -19
  588. package/recce-source/recce/tasks/profile.py +0 -298
  589. package/recce-source/recce/tasks/query.py +0 -450
  590. package/recce-source/recce/tasks/rowcount.py +0 -277
  591. package/recce-source/recce/tasks/schema.py +0 -65
  592. package/recce-source/recce/tasks/top_k.py +0 -172
  593. package/recce-source/recce/tasks/utils.py +0 -147
  594. package/recce-source/recce/tasks/valuediff.py +0 -497
  595. package/recce-source/recce/util/__init__.py +0 -4
  596. package/recce-source/recce/util/api_token.py +0 -80
  597. package/recce-source/recce/util/breaking.py +0 -330
  598. package/recce-source/recce/util/cache.py +0 -25
  599. package/recce-source/recce/util/cll.py +0 -355
  600. package/recce-source/recce/util/cloud/__init__.py +0 -15
  601. package/recce-source/recce/util/cloud/base.py +0 -115
  602. package/recce-source/recce/util/cloud/check_events.py +0 -190
  603. package/recce-source/recce/util/cloud/checks.py +0 -242
  604. package/recce-source/recce/util/io.py +0 -120
  605. package/recce-source/recce/util/lineage.py +0 -83
  606. package/recce-source/recce/util/logger.py +0 -25
  607. package/recce-source/recce/util/onboarding_state.py +0 -45
  608. package/recce-source/recce/util/perf_tracking.py +0 -85
  609. package/recce-source/recce/util/pydantic_model.py +0 -22
  610. package/recce-source/recce/util/recce_cloud.py +0 -454
  611. package/recce-source/recce/util/singleton.py +0 -18
  612. package/recce-source/recce/util/startup_perf.py +0 -121
  613. package/recce-source/recce/yaml/__init__.py +0 -58
  614. package/recce-source/recce_cloud/README.md +0 -780
  615. package/recce-source/recce_cloud/VERSION +0 -1
  616. package/recce-source/recce_cloud/__init__.py +0 -24
  617. package/recce-source/recce_cloud/api/__init__.py +0 -17
  618. package/recce-source/recce_cloud/api/base.py +0 -132
  619. package/recce-source/recce_cloud/api/client.py +0 -186
  620. package/recce-source/recce_cloud/api/exceptions.py +0 -26
  621. package/recce-source/recce_cloud/api/factory.py +0 -63
  622. package/recce-source/recce_cloud/api/github.py +0 -106
  623. package/recce-source/recce_cloud/api/gitlab.py +0 -111
  624. package/recce-source/recce_cloud/artifact.py +0 -57
  625. package/recce-source/recce_cloud/ci_providers/__init__.py +0 -9
  626. package/recce-source/recce_cloud/ci_providers/base.py +0 -82
  627. package/recce-source/recce_cloud/ci_providers/detector.py +0 -147
  628. package/recce-source/recce_cloud/ci_providers/github_actions.py +0 -136
  629. package/recce-source/recce_cloud/ci_providers/gitlab_ci.py +0 -130
  630. package/recce-source/recce_cloud/cli.py +0 -434
  631. package/recce-source/recce_cloud/download.py +0 -230
  632. package/recce-source/recce_cloud/hatch_build.py +0 -20
  633. package/recce-source/recce_cloud/pyproject.toml +0 -49
  634. package/recce-source/recce_cloud/upload.py +0 -214
  635. package/recce-source/test.py +0 -0
  636. package/recce-source/tests/__init__.py +0 -0
  637. package/recce-source/tests/adapter/__init__.py +0 -0
  638. package/recce-source/tests/adapter/dbt_adapter/__init__.py +0 -0
  639. package/recce-source/tests/adapter/dbt_adapter/conftest.py +0 -17
  640. package/recce-source/tests/adapter/dbt_adapter/dbt_test_helper.py +0 -298
  641. package/recce-source/tests/adapter/dbt_adapter/test_dbt_adapter.py +0 -25
  642. package/recce-source/tests/adapter/dbt_adapter/test_dbt_cll.py +0 -717
  643. package/recce-source/tests/adapter/dbt_adapter/test_proj/dbt_project.yml +0 -4
  644. package/recce-source/tests/adapter/dbt_adapter/test_proj/manifest.json +0 -1
  645. package/recce-source/tests/adapter/dbt_adapter/test_proj/package-lock.yml +0 -8
  646. package/recce-source/tests/adapter/dbt_adapter/test_proj/packages.yml +0 -7
  647. package/recce-source/tests/adapter/dbt_adapter/test_proj/profiles.yml +0 -6
  648. package/recce-source/tests/adapter/dbt_adapter/test_selector.py +0 -205
  649. package/recce-source/tests/apis/__init__.py +0 -0
  650. package/recce-source/tests/apis/row_count_diff.json +0 -59
  651. package/recce-source/tests/apis/test_check_events_api.py +0 -615
  652. package/recce-source/tests/apis/test_run_func.py +0 -433
  653. package/recce-source/tests/catalog.json +0 -527
  654. package/recce-source/tests/data/manifest/base/catalog.json +0 -1
  655. package/recce-source/tests/data/manifest/base/manifest.json +0 -1
  656. package/recce-source/tests/data/manifest/pr2/catalog.json +0 -1
  657. package/recce-source/tests/data/manifest/pr2/manifest.json +0 -1
  658. package/recce-source/tests/manifest.json +0 -10655
  659. package/recce-source/tests/models/__init__.py +0 -0
  660. package/recce-source/tests/models/test_check.py +0 -731
  661. package/recce-source/tests/models/test_run_models.py +0 -295
  662. package/recce-source/tests/recce_cloud/__init__.py +0 -0
  663. package/recce-source/tests/recce_cloud/test_ci_providers.py +0 -351
  664. package/recce-source/tests/recce_cloud/test_cli.py +0 -735
  665. package/recce-source/tests/recce_cloud/test_client.py +0 -379
  666. package/recce-source/tests/recce_cloud/test_platform_clients.py +0 -483
  667. package/recce-source/tests/recce_state.json +0 -1
  668. package/recce-source/tests/state/test_cloud.py +0 -719
  669. package/recce-source/tests/state/test_local.py +0 -164
  670. package/recce-source/tests/state/test_state_loader.py +0 -211
  671. package/recce-source/tests/tasks/__init__.py +0 -0
  672. package/recce-source/tests/tasks/conftest.py +0 -4
  673. package/recce-source/tests/tasks/test_histogram.py +0 -129
  674. package/recce-source/tests/tasks/test_lineage.py +0 -55
  675. package/recce-source/tests/tasks/test_preset_checks.py +0 -64
  676. package/recce-source/tests/tasks/test_profile.py +0 -397
  677. package/recce-source/tests/tasks/test_query.py +0 -528
  678. package/recce-source/tests/tasks/test_row_count.py +0 -133
  679. package/recce-source/tests/tasks/test_schema.py +0 -122
  680. package/recce-source/tests/tasks/test_top_k.py +0 -77
  681. package/recce-source/tests/tasks/test_utils.py +0 -439
  682. package/recce-source/tests/tasks/test_valuediff.py +0 -361
  683. package/recce-source/tests/test_cli.py +0 -236
  684. package/recce-source/tests/test_cli_mcp_optional.py +0 -45
  685. package/recce-source/tests/test_cloud_listing_cli.py +0 -324
  686. package/recce-source/tests/test_config.py +0 -43
  687. package/recce-source/tests/test_connect_to_cloud.py +0 -82
  688. package/recce-source/tests/test_core.py +0 -174
  689. package/recce-source/tests/test_dbt.py +0 -36
  690. package/recce-source/tests/test_mcp_server.py +0 -505
  691. package/recce-source/tests/test_pull_request.py +0 -130
  692. package/recce-source/tests/test_server.py +0 -202
  693. package/recce-source/tests/test_server_lifespan.py +0 -138
  694. package/recce-source/tests/test_summary.py +0 -73
  695. package/recce-source/tests/util/__init__.py +0 -0
  696. package/recce-source/tests/util/cloud/__init__.py +0 -0
  697. package/recce-source/tests/util/cloud/test_check_events.py +0 -255
  698. package/recce-source/tests/util/cloud/test_checks.py +0 -204
  699. package/recce-source/tests/util/test_api_token.py +0 -119
  700. package/recce-source/tests/util/test_breaking.py +0 -1427
  701. package/recce-source/tests/util/test_cll.py +0 -706
  702. package/recce-source/tests/util/test_lineage.py +0 -122
  703. package/recce-source/tests/util/test_onboarding_state.py +0 -84
  704. package/recce-source/tests/util/test_recce_cloud.py +0 -231
  705. package/recce-source/tox.ini +0 -40
  706. package/recce-source/uv.lock +0 -3928
  707. package/src/api/index.ts +0 -32
  708. package/src/components/index.ts +0 -154
  709. package/src/global.d.ts +0 -14
  710. package/src/hooks/index.ts +0 -56
  711. package/src/index.ts +0 -17
  712. package/src/lib/hooks/RouteConfigContext.ts +0 -139
  713. package/src/lib/hooks/useAppRouter.ts +0 -240
  714. package/src/mui-augmentation.d.ts +0 -139
  715. package/src/theme/index.ts +0 -13
  716. package/src/theme.ts +0 -23
  717. package/src/types/index.ts +0 -23
@@ -1,719 +0,0 @@
1
- import unittest
2
- from unittest.mock import Mock, patch
3
-
4
- from recce.exceptions import RecceException
5
- from recce.state import CloudStateLoader, RecceState
6
- from recce.state.const import (
7
- RECCE_API_TOKEN_MISSING,
8
- RECCE_CLOUD_PASSWORD_MISSING,
9
- )
10
-
11
-
12
- class TestCloudStateLoader(unittest.TestCase):
13
-
14
- def test_init_with_defaults(self):
15
- with self.assertRaises(RecceException):
16
- CloudStateLoader()
17
-
18
- @patch("recce.state.state_loader.fetch_pr_metadata")
19
- def test_init_with_github_token(self, mock_fetch_pr):
20
- mock_pr_info = Mock()
21
- mock_pr_info.id = "123"
22
- mock_pr_info.repository = "owner/repo"
23
- mock_fetch_pr.return_value = mock_pr_info
24
-
25
- cloud_options = {"github_token": "test_token"}
26
- loader = CloudStateLoader(cloud_options=cloud_options)
27
-
28
- self.assertTrue(loader.cloud_mode)
29
- self.assertEqual(loader.catalog, "github")
30
- self.assertEqual(loader.pr_info, mock_pr_info)
31
-
32
- def test_init_with_api_token(self):
33
- cloud_options = {"api_token": "test_api_token", "share_id": "test_share"}
34
- loader = CloudStateLoader(cloud_options=cloud_options)
35
-
36
- self.assertTrue(loader.cloud_mode)
37
- self.assertEqual(loader.catalog, "preview")
38
- self.assertEqual(loader.share_id, "test_share")
39
-
40
- @patch("recce.state.state_loader.fetch_pr_metadata")
41
- def test_verify_github_mode_success(self, mock_fetch_pr):
42
- mock_pr_info = Mock()
43
- mock_pr_info.id = "123"
44
- mock_fetch_pr.return_value = mock_pr_info
45
-
46
- cloud_options = {"github_token": "test_token", "password": "test_pass"}
47
- loader = CloudStateLoader(cloud_options=cloud_options)
48
-
49
- self.assertTrue(loader.verify())
50
-
51
- def test_verify_github_mode_missing_token(self):
52
- # Test that creating CloudStateLoader without tokens raises exception
53
- with self.assertRaises(RecceException) as cm:
54
- CloudStateLoader(cloud_options={})
55
-
56
- self.assertEqual(str(cm.exception), RECCE_API_TOKEN_MISSING.error_message)
57
-
58
- @patch("recce.state.state_loader.fetch_pr_metadata")
59
- def test_verify_github_mode_missing_password(self, mock_fetch_pr):
60
- mock_pr_info = Mock()
61
- mock_pr_info.id = "123"
62
- mock_fetch_pr.return_value = mock_pr_info
63
-
64
- cloud_options = {"github_token": "test_token"}
65
- loader = CloudStateLoader(cloud_options=cloud_options)
66
-
67
- self.assertFalse(loader.verify())
68
- self.assertEqual(loader.error_message, RECCE_CLOUD_PASSWORD_MISSING.error_message)
69
- self.assertEqual(loader.hint_message, RECCE_CLOUD_PASSWORD_MISSING.hint_message)
70
-
71
- def test_verify_preview_mode_success(self):
72
- cloud_options = {"api_token": "test_token", "share_id": "test_share"}
73
- loader = CloudStateLoader(cloud_options=cloud_options)
74
- loader.catalog = "preview"
75
-
76
- self.assertTrue(loader.verify())
77
-
78
- def test_verify_preview_mode_missing_token(self):
79
- # Test that creating CloudStateLoader without api_token raises exception
80
- with self.assertRaises(RecceException) as cm:
81
- CloudStateLoader(cloud_options={"share_id": "test_share"})
82
-
83
- self.assertEqual(str(cm.exception), RECCE_API_TOKEN_MISSING.error_message)
84
-
85
- def test_verify_preview_mode_missing_share_id(self):
86
- cloud_options = {"api_token": "test_token"}
87
- loader = CloudStateLoader(cloud_options=cloud_options)
88
- loader.catalog = "preview"
89
- loader.cloud_options = cloud_options
90
-
91
- self.assertFalse(loader.verify())
92
- self.assertEqual(loader.error_message, "No share ID is provided for the preview catalog.")
93
-
94
- @patch("requests.get")
95
- def test_load_state_from_github_success(self, mock_get):
96
- # Setup
97
- mock_pr_info = Mock()
98
- mock_pr_info.id = "123"
99
- mock_pr_info.repository = "owner/repo"
100
-
101
- loader = CloudStateLoader(cloud_options={"api_token": "token"})
102
- loader.catalog = "github"
103
- loader.pr_info = mock_pr_info
104
- loader.cloud_options = {"password": "test_pass"}
105
-
106
- # Mock loader's RecceCloud instance
107
- loader.recce_cloud = Mock()
108
- loader.recce_cloud.get_presigned_url_by_github_repo.return_value = "http://presigned.url"
109
- loader.recce_cloud.get_artifact_metadata.return_value = {"etag": "test_etag"}
110
-
111
- # Mock HTTP response
112
- mock_response = Mock()
113
- mock_response.status_code = 200
114
- mock_response.content = b'{"runs": [], "checks": []}'
115
- mock_get.return_value = mock_response
116
-
117
- # Mock RecceState.from_file
118
- with patch("recce.state.cloud.RecceState") as mock_recce_state:
119
- mock_state = Mock()
120
- mock_recce_state.from_file.return_value = mock_state
121
-
122
- result_state, result_etag = loader._load_state_from_github()
123
-
124
- self.assertEqual(result_state, mock_state)
125
- self.assertEqual(result_etag, "test_etag")
126
- mock_get.assert_called_once()
127
- loader.recce_cloud.get_presigned_url_by_github_repo.assert_called_once()
128
-
129
- @patch("requests.get")
130
- def test_load_state_from_preview_success(self, mock_get):
131
- # Setup
132
- loader = CloudStateLoader(cloud_options={"api_token": "token", "share_id": "test_share"})
133
- loader.catalog = "preview"
134
- loader.share_id = "test_share"
135
-
136
- # Mock loader's RecceCloud instance
137
- loader.recce_cloud = Mock()
138
- loader.recce_cloud.get_presigned_url_by_share_id.return_value = "http://presigned.url"
139
-
140
- # Mock HTTP response
141
- mock_response = Mock()
142
- mock_response.status_code = 200
143
- mock_response.content = b'{"runs": [], "checks": []}'
144
- mock_get.return_value = mock_response
145
-
146
- # Mock RecceState.from_file
147
- with patch("recce.state.cloud.RecceState") as mock_recce_state:
148
- mock_state = Mock()
149
- mock_recce_state.from_file.return_value = mock_state
150
-
151
- result_state, result_etag = loader._load_state_from_preview()
152
-
153
- self.assertEqual(result_state, mock_state)
154
- self.assertIsNone(result_etag) # Preview doesn't use etag
155
- loader.recce_cloud.get_presigned_url_by_share_id.assert_called_once()
156
-
157
- @patch("requests.get")
158
- def test_load_state_from_preview_404_error(self, mock_get):
159
- # Setup
160
- loader = CloudStateLoader(cloud_options={"api_token": "token", "share_id": "test_share"})
161
- loader.catalog = "preview"
162
- loader.share_id = "test_share"
163
-
164
- # Mock loader's RecceCloud instance
165
- loader.recce_cloud = Mock()
166
- loader.recce_cloud.get_presigned_url_by_share_id.return_value = "http://presigned.url"
167
-
168
- # Mock HTTP 404 response
169
- mock_response = Mock()
170
- mock_response.status_code = 404
171
- mock_get.return_value = mock_response
172
-
173
- result_state, result_etag = loader._load_state_from_preview()
174
-
175
- self.assertIsNone(result_state)
176
- self.assertIsNone(result_etag)
177
- self.assertEqual(loader.error_message, "The state file is not found in Recce Cloud.")
178
-
179
- @patch("requests.get")
180
- def test_load_state_from_preview_auth_error(self, mock_get):
181
- # Setup
182
- loader = CloudStateLoader(cloud_options={"api_token": "token", "share_id": "test_share"})
183
- loader.catalog = "preview"
184
- loader.share_id = "test_share"
185
-
186
- # Mock loader's RecceCloud instance
187
- loader.recce_cloud = Mock()
188
- loader.recce_cloud.get_presigned_url_by_share_id.return_value = "http://presigned.url"
189
-
190
- # Mock HTTP 401 response
191
- mock_response = Mock()
192
- mock_response.status_code = 401
193
- mock_response.text = "Unauthorized"
194
- mock_get.return_value = mock_response
195
-
196
- with self.assertRaises(RecceException) as cm:
197
- loader._load_state_from_preview()
198
-
199
- self.assertIn("401 Failed to download", str(cm.exception))
200
-
201
- @patch("recce.state.cloud.CheckDAO")
202
- @patch("requests.put")
203
- def test_export_state_to_github_success(self, mock_put, mock_check_dao):
204
- # Setup
205
- mock_pr_info = Mock()
206
- mock_pr_info.id = "123"
207
- mock_pr_info.repository = "owner/repo"
208
-
209
- loader = CloudStateLoader(cloud_options={"api_token": "token"})
210
- loader.catalog = "github"
211
- loader.pr_info = mock_pr_info
212
- loader.cloud_options = {"password": "test_pass"}
213
- loader.state = RecceState()
214
-
215
- # Mock CheckDAO
216
- mock_check_dao_instance = Mock()
217
- mock_check_dao.return_value = mock_check_dao_instance
218
- mock_check_dao_instance.status.return_value = {"total": 5, "approved": 3}
219
-
220
- # Mock loader's RecceCloud instance
221
- loader.recce_cloud = Mock()
222
- loader.recce_cloud.get_presigned_url_by_github_repo.return_value = "http://presigned.url"
223
- loader.recce_cloud.get_artifact_metadata.return_value = {"etag": "test_etag"}
224
-
225
- # Mock HTTP response
226
- mock_response = Mock()
227
- mock_response.status_code = 200
228
- mock_put.return_value = mock_response
229
-
230
- result_message, result_etag = loader._export_state_to_github()
231
-
232
- self.assertIsNone(result_message) # Success returns None
233
- self.assertEqual(result_etag, "test_etag")
234
- mock_put.assert_called_once()
235
- loader.recce_cloud.get_presigned_url_by_github_repo.assert_called_once()
236
-
237
- @patch("requests.put")
238
- def test_export_state_to_preview_success(self, mock_put):
239
- # Setup
240
- loader = CloudStateLoader(cloud_options={"api_token": "token", "share_id": "test_share"})
241
- loader.catalog = "preview"
242
- loader.cloud_options = {"share_id": "test_share"}
243
- loader.state = RecceState()
244
-
245
- # Mock loader's RecceCloud instance
246
- loader.recce_cloud = Mock()
247
- loader.recce_cloud.get_presigned_url_by_share_id.return_value = "http://presigned.url"
248
-
249
- # Mock HTTP response
250
- mock_response = Mock()
251
- mock_response.status_code = 200
252
- mock_put.return_value = mock_response
253
-
254
- result_message, result_etag = loader._export_state_to_preview()
255
-
256
- self.assertIsNone(result_message) # Success returns None
257
- self.assertIsNone(result_etag) # Preview doesn't use etag
258
- loader.recce_cloud.get_presigned_url_by_share_id.assert_called_once()
259
-
260
- @patch("requests.put")
261
- def test_export_state_to_preview_failure(self, mock_put):
262
- # Setup
263
- loader = CloudStateLoader(cloud_options={"api_token": "token", "share_id": "test_share"})
264
- loader.catalog = "preview"
265
- loader.cloud_options = {"share_id": "test_share"}
266
- loader.state = RecceState()
267
-
268
- # Mock loader's RecceCloud instance
269
- loader.recce_cloud = Mock()
270
- loader.recce_cloud.get_presigned_url_by_share_id.return_value = "http://presigned.url"
271
-
272
- # Mock HTTP error response
273
- mock_response = Mock()
274
- mock_response.status_code = 500
275
- mock_response.text = "Internal Server Error"
276
- mock_put.return_value = mock_response
277
-
278
- result_message, result_etag = loader._export_state_to_preview()
279
-
280
- self.assertIn("Failed to upload", result_message)
281
- self.assertIn("Internal Server Error", result_message)
282
- self.assertIsNone(result_etag)
283
-
284
- @patch("recce.state.cloud.RecceCloudStateManager")
285
- def test_purge_success(self, mock_manager_class):
286
- # Setup
287
- loader = CloudStateLoader(cloud_options={"api_token": "token"})
288
-
289
- # Mock manager instance
290
- mock_manager = Mock()
291
- mock_manager_class.return_value = mock_manager
292
- mock_manager.purge_cloud_state.return_value = (True, None)
293
-
294
- result = loader.purge()
295
-
296
- self.assertTrue(result)
297
- self.assertIsNone(loader.error_message)
298
-
299
- @patch("recce.state.cloud.RecceCloudStateManager")
300
- def test_purge_failure(self, mock_manager_class):
301
- # Setup
302
- loader = CloudStateLoader(cloud_options={"api_token": "token"})
303
-
304
- # Mock manager instance
305
- mock_manager = Mock()
306
- mock_manager_class.return_value = mock_manager
307
- mock_manager.purge_cloud_state.return_value = (False, "Purge failed")
308
-
309
- result = loader.purge()
310
-
311
- self.assertFalse(result)
312
- self.assertEqual(loader.error_message, "Purge failed")
313
-
314
- def test_get_metadata_from_recce_cloud(self):
315
- # Setup
316
- mock_pr_info = Mock()
317
- loader = CloudStateLoader(cloud_options={"api_token": "token"})
318
- loader.pr_info = mock_pr_info
319
-
320
- # Mock loader's RecceCloud instance
321
- loader.recce_cloud = Mock()
322
- mock_metadata = {"etag": "test_etag", "total_checks": 5}
323
- loader.recce_cloud.get_artifact_metadata.return_value = mock_metadata
324
-
325
- result = loader._get_metadata_from_recce_cloud()
326
-
327
- self.assertEqual(result, mock_metadata)
328
- loader.recce_cloud.get_artifact_metadata.assert_called_once_with(pr_info=mock_pr_info)
329
-
330
- def test_get_metadata_from_recce_cloud_no_pr_info(self):
331
- loader = CloudStateLoader(cloud_options={"api_token": "token", "share_id": "test"})
332
- loader.pr_info = None
333
-
334
- result = loader._get_metadata_from_recce_cloud()
335
-
336
- self.assertIsNone(result)
337
-
338
- def test_inheritance_from_state_loader(self):
339
- from recce.state import RecceStateLoader
340
-
341
- cloud_options = {"api_token": "test_token", "share_id": "test_share"}
342
- loader = CloudStateLoader(cloud_options=cloud_options)
343
- self.assertIsInstance(loader, RecceStateLoader)
344
-
345
- def test_token_property_github(self):
346
- cloud_options = {"api_token": "test_api_token", "share_id": "test_share"}
347
- loader = CloudStateLoader(cloud_options=cloud_options)
348
- loader.cloud_options = {"github_token": "github_token_value"}
349
- self.assertEqual(loader.token, "github_token_value")
350
-
351
- def test_token_property_api(self):
352
- cloud_options = {"api_token": "api_token_value", "share_id": "test_share"}
353
- loader = CloudStateLoader(cloud_options=cloud_options)
354
- self.assertEqual(loader.token, "api_token_value")
355
-
356
- def test_token_property_both_tokens(self):
357
- cloud_options = {"api_token": "test_api_token", "share_id": "test_share"}
358
- loader = CloudStateLoader(cloud_options=cloud_options)
359
- loader.cloud_options = {"github_token": "github_token", "api_token": "api_token"}
360
- # Should return github_token first
361
- self.assertEqual(loader.token, "github_token")
362
-
363
- def test_init_with_session_id(self):
364
- cloud_options = {"api_token": "test_api_token", "session_id": "test_session"}
365
- loader = CloudStateLoader(cloud_options=cloud_options)
366
-
367
- self.assertTrue(loader.cloud_mode)
368
- self.assertEqual(loader.catalog, "session")
369
- self.assertEqual(loader.session_id, "test_session")
370
-
371
- def test_verify_session_mode_success(self):
372
- cloud_options = {"api_token": "test_token", "session_id": "test_session"}
373
- loader = CloudStateLoader(cloud_options=cloud_options)
374
- loader.catalog = "session"
375
-
376
- self.assertTrue(loader.verify())
377
-
378
- def test_verify_session_mode_missing_token(self):
379
- # Test that creating CloudStateLoader without api_token raises exception
380
- with self.assertRaises(RecceException) as cm:
381
- CloudStateLoader(cloud_options={"session_id": "test_session"})
382
-
383
- self.assertEqual(str(cm.exception), RECCE_API_TOKEN_MISSING.error_message)
384
-
385
- def test_verify_session_mode_missing_session_id(self):
386
- cloud_options = {"api_token": "test_token"}
387
- loader = CloudStateLoader(cloud_options=cloud_options)
388
- loader.catalog = "session"
389
- loader.cloud_options = cloud_options
390
-
391
- self.assertFalse(loader.verify())
392
- self.assertEqual(loader.error_message, "No session ID is provided for the session catalog.")
393
-
394
- @patch("requests.get")
395
- def test_load_state_from_session_success_with_existing_state(self, mock_get):
396
- # Setup
397
- loader = CloudStateLoader(cloud_options={"api_token": "token", "session_id": "test_session"})
398
- loader.catalog = "session"
399
- loader.session_id = "test_session"
400
-
401
- # Mock loader's RecceCloud instance
402
- loader.recce_cloud = Mock()
403
-
404
- # Mock get_session response
405
- mock_session = {"org_id": "org1", "project_id": "proj1"}
406
- loader.recce_cloud.get_session.return_value = mock_session
407
-
408
- # Mock get_download_urls_by_session_id response
409
- mock_download_urls = {
410
- "manifest_url": "http://manifest.url",
411
- "catalog_url": "http://catalog.url",
412
- "recce_state_url": "http://recce_state.url",
413
- }
414
- loader.recce_cloud.get_download_urls_by_session_id.return_value = mock_download_urls
415
-
416
- # Mock get_base_session_download_urls response
417
- mock_base_urls = {"manifest_url": "http://base_manifest.url", "catalog_url": "http://base_catalog.url"}
418
- loader.recce_cloud.get_base_session_download_urls.return_value = mock_base_urls
419
-
420
- # Mock HTTP responses for artifacts
421
- mock_response_200 = Mock()
422
- mock_response_200.status_code = 200
423
- mock_response_200.json.side_effect = [
424
- "current_manifest_data", # current manifest
425
- "current_catalog_data", # current catalog
426
- "base_manifest_data", # base manifest
427
- "base_catalog_data", # base catalog
428
- ]
429
-
430
- # Mock HTTP response for recce_state
431
- mock_state_response = Mock()
432
- mock_state_response.status_code = 200
433
- mock_state_response.content = b'{"runs": [{"id": "test"}], "checks": [{"id": "test"}]}'
434
-
435
- # Set up the mock_get to return different responses for different URLs
436
- def side_effect(url, **kwargs):
437
- if "recce_state" in url:
438
- return mock_state_response
439
- else:
440
- return mock_response_200
441
-
442
- mock_get.side_effect = side_effect
443
-
444
- # Mock RecceState.from_file for the recce_state
445
- with patch("recce.state.cloud.RecceState") as mock_recce_state:
446
- mock_state = Mock()
447
- mock_state.runs = [{"id": "test"}]
448
- mock_state.checks = [{"id": "test"}]
449
- mock_recce_state.from_file.return_value = mock_state
450
-
451
- result_state = loader._load_state_from_session()
452
-
453
- # Verify the state was loaded from recce_state_url
454
- self.assertEqual(result_state, mock_state)
455
-
456
- # Verify artifacts were set
457
- self.assertEqual(
458
- result_state.artifacts.current, {"manifest": "current_manifest_data", "catalog": "current_catalog_data"}
459
- )
460
- self.assertEqual(
461
- result_state.artifacts.base, {"manifest": "base_manifest_data", "catalog": "base_catalog_data"}
462
- )
463
-
464
- @patch("requests.get")
465
- def test_load_state_from_session_no_existing_state(self, mock_get):
466
- # Setup
467
- loader = CloudStateLoader(cloud_options={"api_token": "token", "session_id": "test_session"})
468
- loader.catalog = "session"
469
- loader.session_id = "test_session"
470
-
471
- # Mock loader's RecceCloud instance
472
- loader.recce_cloud = Mock()
473
-
474
- # Mock get_session response
475
- mock_session = {"org_id": "org1", "project_id": "proj1"}
476
- loader.recce_cloud.get_session.return_value = mock_session
477
-
478
- # Mock get_download_urls_by_session_id response (no recce_state_url)
479
- mock_download_urls = {"manifest_url": "http://manifest.url", "catalog_url": "http://catalog.url"}
480
- loader.recce_cloud.get_download_urls_by_session_id.return_value = mock_download_urls
481
-
482
- # Mock get_base_session_download_urls response
483
- mock_base_urls = {"manifest_url": "http://base_manifest.url", "catalog_url": "http://base_catalog.url"}
484
- loader.recce_cloud.get_base_session_download_urls.return_value = mock_base_urls
485
-
486
- # Mock HTTP responses for artifacts
487
- mock_response_200 = Mock()
488
- mock_response_200.status_code = 200
489
- mock_response_200.json.side_effect = [
490
- "current_manifest_data",
491
- "current_catalog_data",
492
- "base_manifest_data",
493
- "base_catalog_data",
494
- ]
495
- mock_get.return_value = mock_response_200
496
-
497
- # Mock RecceState constructor for empty state
498
- with patch("recce.state.cloud.RecceState") as mock_recce_state_class:
499
- mock_empty_state = Mock()
500
- mock_empty_state.runs = []
501
- mock_empty_state.checks = []
502
- mock_recce_state_class.return_value = mock_empty_state
503
-
504
- result_state = loader._load_state_from_session()
505
-
506
- # Verify empty state was created
507
- self.assertEqual(result_state, mock_empty_state)
508
- self.assertEqual(result_state.runs, [])
509
- self.assertEqual(result_state.checks, [])
510
-
511
- # Verify artifacts were set
512
- self.assertEqual(
513
- result_state.artifacts.current, {"manifest": "current_manifest_data", "catalog": "current_catalog_data"}
514
- )
515
- self.assertEqual(
516
- result_state.artifacts.base, {"manifest": "base_manifest_data", "catalog": "base_catalog_data"}
517
- )
518
-
519
- def test_load_state_from_session_missing_session_id(self):
520
- loader = CloudStateLoader(cloud_options={"api_token": "token"})
521
- loader.catalog = "session"
522
- loader.session_id = None
523
-
524
- with self.assertRaises(RecceException) as cm:
525
- loader._load_state_from_session()
526
-
527
- self.assertEqual(
528
- str(cm.exception), "Cannot load the session state from Recce Cloud. No session ID is provided."
529
- )
530
-
531
- def test_load_state_from_session_invalid_org_project(self):
532
- loader = CloudStateLoader(cloud_options={"api_token": "token", "session_id": "test_session"})
533
- loader.catalog = "session"
534
- loader.session_id = "test_session"
535
-
536
- # Mock loader's RecceCloud instance
537
- loader.recce_cloud = Mock()
538
-
539
- # Mock get_session response with missing org_id
540
- mock_session = {"project_id": "proj1"} # Missing org_id
541
- loader.recce_cloud.get_session.return_value = mock_session
542
-
543
- with self.assertRaises(RecceException) as cm:
544
- loader._load_state_from_session()
545
-
546
- self.assertEqual(str(cm.exception), "Session test_session does not belong to a valid organization or project.")
547
-
548
- @patch("requests.put")
549
- def test_export_state_to_session_success(self, mock_put):
550
- # Setup
551
- loader = CloudStateLoader(cloud_options={"api_token": "token", "session_id": "test_session"})
552
- loader.catalog = "session"
553
- loader.session_id = "test_session"
554
-
555
- # Create a mock state with runs and checks
556
- mock_runs = Mock()
557
- mock_runs.copy.return_value = [{"id": "run1"}, {"id": "run2"}]
558
- mock_checks = Mock()
559
- mock_checks.copy.return_value = [{"id": "check1"}]
560
-
561
- mock_state = Mock()
562
- mock_state.runs = mock_runs
563
- mock_state.checks = mock_checks
564
- loader.state = mock_state
565
-
566
- # Mock loader's RecceCloud instance
567
- loader.recce_cloud = Mock()
568
-
569
- # Mock get_session response
570
- mock_session = {"org_id": "org1", "project_id": "proj1"}
571
- loader.recce_cloud.get_session.return_value = mock_session
572
-
573
- # Mock get_upload_urls_by_session_id response
574
- mock_upload_urls = {"recce_state_url": "http://upload_recce_state.url"}
575
- loader.recce_cloud.get_upload_urls_by_session_id.return_value = mock_upload_urls
576
-
577
- # Mock HTTP response
578
- mock_response = Mock()
579
- mock_response.status_code = 200
580
- mock_put.return_value = mock_response
581
-
582
- # Mock RecceState constructor for upload state
583
- with patch("recce.state.cloud.RecceState") as mock_recce_state_class:
584
- mock_upload_state = Mock()
585
- mock_upload_state.to_json.return_value = '{"runs": [], "checks": []}'
586
- mock_recce_state_class.return_value = mock_upload_state
587
-
588
- result_message, result_etag = loader._export_state_to_session()
589
-
590
- # Verify success
591
- self.assertIsNone(result_message)
592
- self.assertIsNone(result_etag)
593
-
594
- # Verify RecceState was created with empty artifacts
595
- mock_recce_state_class.assert_called_once()
596
-
597
- # Verify runs and checks were copied
598
- self.assertEqual(mock_upload_state.runs, [{"id": "run1"}, {"id": "run2"}])
599
- self.assertEqual(mock_upload_state.checks, [])
600
-
601
- def test_export_state_to_session_missing_session_id(self):
602
- loader = CloudStateLoader(cloud_options={"api_token": "token"})
603
- loader.catalog = "session"
604
- loader.session_id = None
605
-
606
- with self.assertRaises(RecceException) as cm:
607
- loader._export_state_to_session()
608
-
609
- self.assertEqual(str(cm.exception), "Cannot export state to session. No session ID is provided.")
610
-
611
- def test_export_state_to_session_no_recce_state_url(self):
612
- loader = CloudStateLoader(cloud_options={"api_token": "token", "session_id": "test_session"})
613
- loader.catalog = "session"
614
- loader.session_id = "test_session"
615
- loader.state = Mock()
616
-
617
- # Mock loader's RecceCloud instance
618
- loader.recce_cloud = Mock()
619
-
620
- # Mock get_session response
621
- mock_session = {"org_id": "org1", "project_id": "proj1"}
622
- loader.recce_cloud.get_session.return_value = mock_session
623
-
624
- # Mock get_upload_urls_by_session_id response without recce_state_url
625
- mock_upload_urls = {}
626
- loader.recce_cloud.get_upload_urls_by_session_id.return_value = mock_upload_urls
627
-
628
- with self.assertRaises(RecceException) as cm:
629
- loader._export_state_to_session()
630
-
631
- self.assertEqual(str(cm.exception), "No recce_state_url found for session test_session")
632
-
633
- @patch("requests.put")
634
- def test_export_state_to_session_upload_failure(self, mock_put):
635
- # Setup
636
- loader = CloudStateLoader(cloud_options={"api_token": "token", "session_id": "test_session"})
637
- loader.catalog = "session"
638
- loader.session_id = "test_session"
639
-
640
- mock_runs = Mock()
641
- mock_runs.copy.return_value = []
642
- mock_checks = Mock()
643
- mock_checks.copy.return_value = []
644
-
645
- mock_state = Mock()
646
- mock_state.runs = mock_runs
647
- mock_state.checks = mock_checks
648
- loader.state = mock_state
649
-
650
- # Mock loader's RecceCloud instance
651
- loader.recce_cloud = Mock()
652
-
653
- # Mock get_session response
654
- mock_session = {"org_id": "org1", "project_id": "proj1"}
655
- loader.recce_cloud.get_session.return_value = mock_session
656
-
657
- # Mock get_upload_urls_by_session_id response
658
- mock_upload_urls = {"recce_state_url": "http://upload_recce_state.url"}
659
- loader.recce_cloud.get_upload_urls_by_session_id.return_value = mock_upload_urls
660
-
661
- # Mock HTTP error response
662
- mock_response = Mock()
663
- mock_response.status_code = 500
664
- mock_response.text = "Internal Server Error"
665
- mock_put.return_value = mock_response
666
-
667
- # Mock RecceState constructor for upload state
668
- with patch("recce.state.cloud.RecceState") as mock_recce_state_class:
669
- mock_upload_state = Mock()
670
- mock_upload_state.to_json.return_value = '{"runs": [], "checks": []}'
671
- mock_recce_state_class.return_value = mock_upload_state
672
-
673
- result_message, result_etag = loader._export_state_to_session()
674
-
675
- # Verify failure
676
- self.assertIn("Failed to upload", result_message)
677
- self.assertIn("Internal Server Error", result_message)
678
- self.assertIsNone(result_etag)
679
-
680
- @patch.object(CloudStateLoader, "_download_session_recce_state")
681
- @patch.object(CloudStateLoader, "_download_base_session_artifacts")
682
- @patch.object(CloudStateLoader, "_download_session_artifacts")
683
- def test_load_state_from_session_sets_pull_request_from_pr_link(
684
- self,
685
- mock_download_session_artifacts,
686
- mock_download_base_session_artifacts,
687
- mock_download_session_state,
688
- ):
689
- loader = CloudStateLoader(cloud_options={"api_token": "token", "session_id": "test_session"})
690
- loader.catalog = "session"
691
- loader.session_id = "test_session"
692
-
693
- loader.recce_cloud = Mock()
694
- loader.recce_cloud.get_session.return_value = {
695
- "org_id": "org1",
696
- "project_id": "proj1",
697
- "pr_link": "https://github.com/org/repo/pull/99",
698
- }
699
-
700
- mock_download_session_artifacts.return_value = {"manifest": "current_manifest", "catalog": "current_catalog"}
701
- mock_download_base_session_artifacts.return_value = {"manifest": "base_manifest", "catalog": "base_catalog"}
702
-
703
- state = RecceState()
704
- mock_download_session_state.return_value = state
705
-
706
- result_state = loader._load_state_from_session()
707
-
708
- mock_download_session_artifacts.assert_called_once()
709
- mock_download_base_session_artifacts.assert_called_once()
710
- mock_download_session_state.assert_called_once()
711
- self.assertIs(result_state, state)
712
- self.assertIsNotNone(loader.pr_info)
713
- self.assertEqual(str(loader.pr_info.id), "99")
714
- self.assertEqual(loader.pr_info.url, "https://github.com/org/repo/pull/99")
715
- self.assertIs(result_state.pull_request, loader.pr_info)
716
-
717
-
718
- if __name__ == "__main__":
719
- unittest.main()