@datarecce/ui 0.1.21 → 0.1.23
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/dist/RecceCheckContext-DIQjrvH8.mjs +228 -0
- package/dist/RecceCheckContext-DIQjrvH8.mjs.map +1 -0
- package/dist/RecceCheckContext-_xzNlnbJ.js +302 -0
- package/dist/RecceCheckContext-_xzNlnbJ.js.map +1 -0
- package/dist/api.d.mts +2 -102
- package/dist/api.d.ts +2 -102
- package/dist/api.js +59 -497
- package/dist/api.mjs +5 -437
- package/dist/components-CfY72Lq2.mjs +11686 -0
- package/dist/components-CfY72Lq2.mjs.map +1 -0
- package/dist/{styles-JV3V5MVO.css → components-D2DRqJsz.css} +28 -0
- package/dist/components-D2DRqJsz.css.map +1 -0
- package/dist/components-DXbVq9Cw.js +14038 -0
- package/dist/components-DXbVq9Cw.js.map +1 -0
- package/dist/components-dVXbmdqd.css +70 -0
- package/dist/components-dVXbmdqd.css.map +1 -0
- package/dist/components.d.mts +2 -471
- package/dist/components.d.ts +2 -471
- package/dist/components.js +85 -27392
- package/dist/components.mjs +8 -27250
- package/dist/hooks-C4jkoryM.js +40 -0
- package/dist/hooks-C4jkoryM.js.map +1 -0
- package/dist/hooks-C8pyX9m_.mjs +34 -0
- package/dist/hooks-C8pyX9m_.mjs.map +1 -0
- package/dist/hooks.d.mts +2 -296
- package/dist/hooks.d.ts +2 -296
- package/dist/hooks.js +33 -7583
- package/dist/hooks.mjs +6 -7521
- package/dist/html2canvas-pro.esm-BR5xeFe-.mjs +7249 -0
- package/dist/html2canvas-pro.esm-BR5xeFe-.mjs.map +1 -0
- package/dist/html2canvas-pro.esm-CVOsBdk0.js +7250 -0
- package/dist/html2canvas-pro.esm-CVOsBdk0.js.map +1 -0
- package/dist/index-CVPmrztP.d.ts +1825 -0
- package/dist/index-CVPmrztP.d.ts.map +1 -0
- package/dist/index-DIHuswfP.d.mts +1827 -0
- package/dist/index-DIHuswfP.d.mts.map +1 -0
- package/dist/index.d.mts +2 -29
- package/dist/index.d.ts +2 -29
- package/dist/index.js +177 -28784
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +16 -28555
- package/dist/index.mjs.map +1 -1
- package/dist/state-AeoqV9ja.js +9176 -0
- package/dist/state-AeoqV9ja.js.map +1 -0
- package/dist/state-BbgVwFV2.mjs +8204 -0
- package/dist/state-BbgVwFV2.mjs.map +1 -0
- package/dist/{style-466WWZLM.css → state-IA7HWYOs.css} +81 -0
- package/dist/state-IA7HWYOs.css.map +1 -0
- package/dist/state-eEsMhIy4.css +215 -0
- package/dist/state-eEsMhIy4.css.map +1 -0
- package/dist/tooltipMessage-CrXjOmVM.mjs +7 -0
- package/dist/tooltipMessage-CrXjOmVM.mjs.map +1 -0
- package/dist/tooltipMessage-Dbi1kkfi.js +13 -0
- package/dist/tooltipMessage-Dbi1kkfi.js.map +1 -0
- package/dist/types.d.mts +2 -32
- package/dist/types.d.ts +2 -32
- package/dist/types.js +8 -24
- package/dist/types.mjs +4 -18
- package/dist/urls-D7PrPolY.mjs +16 -0
- package/dist/urls-D7PrPolY.mjs.map +1 -0
- package/dist/urls-SazAekCZ.js +34 -0
- package/dist/urls-SazAekCZ.js.map +1 -0
- package/dist/version-C2NU3xyx.mjs +89 -0
- package/dist/version-C2NU3xyx.mjs.map +1 -0
- package/dist/version-MxW9vrDY.js +137 -0
- package/dist/version-MxW9vrDY.js.map +1 -0
- package/package.json +7 -7
- package/dist/LineageViewContext-DEa54ZNF.d.mts +0 -103
- package/dist/LineageViewContext-DPVC8ak8.d.ts +0 -103
- package/dist/agGridStyles-VYALGSJU.css +0 -55
- package/dist/api.js.map +0 -1
- package/dist/api.mjs.map +0 -1
- package/dist/components.js.map +0 -1
- package/dist/components.mjs.map +0 -1
- package/dist/hooks.js.map +0 -1
- package/dist/hooks.mjs.map +0 -1
- package/dist/lineagecheck-BQaKAQzn.d.mts +0 -597
- package/dist/lineagecheck-BQaKAQzn.d.ts +0 -597
- package/dist/styles-QUPOR3LM.css +0 -24
- package/dist/styles-TU5BYTIL.css +0 -21
- package/dist/types.js.map +0 -1
- package/dist/types.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-C2NU3xyx.mjs","names":["prefix","version","latestVersion"],"sources":["../recce-source/js/src/lib/api/schemacheck.ts","../recce-source/js/src/lib/api/select.ts","../recce-source/js/src/lib/api/sessionStorageKeys.ts","../recce-source/js/src/lib/api/localStorageKeys.ts","../recce-source/js/src/lib/api/connectToCloud.ts","../recce-source/js/src/lib/api/user.ts","../recce-source/js/src/lib/api/version.ts"],"sourcesContent":["import { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\nimport { Check } from \"./checks\";\n\nexport interface SchemaDiffViewParams {\n node_id?: string | string[];\n select?: string;\n exclude?: string;\n view_mode?: \"all\" | \"changed_models\";\n packages?: string[];\n}\n\ninterface CreateSchemaDiffCheckBody {\n type: string;\n params: SchemaDiffViewParams;\n}\n\nexport async function createSchemaDiffCheck(\n params: SchemaDiffViewParams,\n): Promise<Check> {\n const response = await axiosClient.post<\n CreateSchemaDiffCheckBody,\n AxiosResponse<Check>\n >(\"/api/checks\", {\n type: \"schema_diff\",\n params: params,\n });\n\n return response.data;\n}\n","import { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\nexport interface SelectInput {\n select?: string;\n exclude?: string;\n packages?: string[];\n view_mode?: \"all\" | \"changed_models\";\n}\n\nexport interface SelectOutput {\n nodes: string[];\n}\n\nexport async function select(input: SelectInput): Promise<SelectOutput> {\n return (\n await axiosClient.post<SelectInput, AxiosResponse<SelectOutput>>(\n `/api/select`,\n input,\n )\n ).data;\n}\n","const prefix = \"recce\";\n\nexport const sessionStorageKeys = {\n recommendationIgnored: `${prefix}-recommendation-ignored`,\n recommendationShowed: `${prefix}-recommendation-showed`,\n prevRefreshTimeStamp: `${prefix}-prev-refresh-timestamp`,\n lineageNotificationDismissed: `${prefix}-lineage-notification-dismissed`,\n};\n","const prefix = \"recce-\";\n\nexport const localStorageKeys = {\n bypassSaveOverwrite: `${prefix}-bypass-save-overwrite`,\n previewChangeFeedbackID: `${prefix}-preview-change-feedback`,\n prepareEnvGuideID: `${prefix}-prepare-env`,\n};\n","import { axiosClient } from \"./axiosClient\";\n\nexport interface ConnectToCloud {\n connection_url: string;\n}\n\nexport async function connectToCloud(): Promise<ConnectToCloud> {\n const data = await axiosClient.post<ConnectToCloud>(\"/api/connect\");\n return data.data;\n}\n","import axios, { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\nexport interface User {\n id: string;\n login: string;\n login_type: string;\n email: string;\n onboarding_state: string;\n}\n\ninterface GitHubUser {\n login: string;\n id: number;\n avatar_url: string;\n}\n\nexport async function fetchUser(): Promise<User> {\n try {\n const response = await axiosClient.get<never, AxiosResponse<User>>(\n \"/api/users\",\n );\n return response.data;\n } catch (error) {\n console.error(\"Error fetching user data:\", error);\n throw error;\n }\n}\n\nexport async function fetchGitHubAvatar(\n userId: string,\n): Promise<string | null> {\n try {\n const response = await axios.get<GitHubUser>(\n `https://api.github.com/user/${userId}`,\n );\n return response.data.avatar_url;\n } catch (error) {\n console.warn(\"Failed to fetch GitHub avatar:\", error);\n return null;\n }\n}\n","import { AxiosResponse } from \"axios\";\nimport { useEffect, useState } from \"react\";\nimport { axiosClient } from \"./axiosClient\";\n\ninterface VersionResponse {\n version: string;\n latestVersion: string;\n}\n\nexport function useVersionNumber() {\n const [version, setVersion] = useState(\"\");\n const [latestVersion, setLatestVersion] = useState(\"\");\n\n useEffect(() => {\n async function fetchVersion() {\n try {\n const { version, latestVersion } = (\n await axiosClient.get<never, AxiosResponse<VersionResponse>>(\n \"/api/version\",\n )\n ).data;\n\n setVersion(version);\n setLatestVersion(latestVersion);\n } catch (error) {\n console.error(\"Error fetching version number:\", error);\n }\n }\n void fetchVersion();\n }, []);\n\n return { version, latestVersion };\n}\n"],"mappings":";;;;;;AAiBA,eAAsB,sBACpB,QACgB;AAShB,SARiB,MAAM,YAAY,KAGjC,eAAe;EACf,MAAM;EACE;EACT,CAAC,EAEc;;;;;ACdlB,eAAsB,OAAO,OAA2C;AACtE,SACE,MAAM,YAAY,KAChB,eACA,MACD,EACD;;;;;ACpBJ,MAAMA,WAAS;AAEf,MAAa,qBAAqB;CAChC,uBAAuB,GAAGA,SAAO;CACjC,sBAAsB,GAAGA,SAAO;CAChC,sBAAsB,GAAGA,SAAO;CAChC,8BAA8B,GAAGA,SAAO;CACzC;;;;ACPD,MAAM,SAAS;AAEf,MAAa,mBAAmB;CAC9B,qBAAqB,GAAG,OAAO;CAC/B,yBAAyB,GAAG,OAAO;CACnC,mBAAmB,GAAG,OAAO;CAC9B;;;;ACAD,eAAsB,iBAA0C;AAE9D,SADa,MAAM,YAAY,KAAqB,eAAe,EACvD;;;;;ACSd,eAAsB,YAA2B;AAC/C,KAAI;AAIF,UAHiB,MAAM,YAAY,IACjC,aACD,EACe;UACT,OAAO;AACd,UAAQ,MAAM,6BAA6B,MAAM;AACjD,QAAM;;;AAIV,eAAsB,kBACpB,QACwB;AACxB,KAAI;AAIF,UAHiB,MAAM,MAAM,IAC3B,+BAA+B,SAChC,EACe,KAAK;UACd,OAAO;AACd,UAAQ,KAAK,kCAAkC,MAAM;AACrD,SAAO;;;;;;AC9BX,SAAgB,mBAAmB;CACjC,MAAM,CAAC,SAAS,cAAc,SAAS,GAAG;CAC1C,MAAM,CAAC,eAAe,oBAAoB,SAAS,GAAG;AAEtD,iBAAgB;EACd,eAAe,eAAe;AAC5B,OAAI;IACF,MAAM,EAAE,oBAAS,oCACf,MAAM,YAAY,IAChB,eACD,EACD;AAEF,eAAWC,UAAQ;AACnB,qBAAiBC,gBAAc;YACxB,OAAO;AACd,YAAQ,MAAM,kCAAkC,MAAM;;;AAG1D,EAAK,cAAc;IAClB,EAAE,CAAC;AAEN,QAAO;EAAE;EAAS;EAAe"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
const require_state = require('./state-AeoqV9ja.js');
|
|
3
|
+
let react = require("react");
|
|
4
|
+
let axios = require("axios");
|
|
5
|
+
axios = require_state.__toESM(axios);
|
|
6
|
+
|
|
7
|
+
//#region recce-source/js/src/lib/api/schemacheck.ts
|
|
8
|
+
async function createSchemaDiffCheck(params) {
|
|
9
|
+
return (await require_state.axiosClient.post("/api/checks", {
|
|
10
|
+
type: "schema_diff",
|
|
11
|
+
params
|
|
12
|
+
})).data;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
//#region recce-source/js/src/lib/api/select.ts
|
|
17
|
+
async function select(input) {
|
|
18
|
+
return (await require_state.axiosClient.post(`/api/select`, input)).data;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region recce-source/js/src/lib/api/sessionStorageKeys.ts
|
|
23
|
+
const prefix$1 = "recce";
|
|
24
|
+
const sessionStorageKeys = {
|
|
25
|
+
recommendationIgnored: `${prefix$1}-recommendation-ignored`,
|
|
26
|
+
recommendationShowed: `${prefix$1}-recommendation-showed`,
|
|
27
|
+
prevRefreshTimeStamp: `${prefix$1}-prev-refresh-timestamp`,
|
|
28
|
+
lineageNotificationDismissed: `${prefix$1}-lineage-notification-dismissed`
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region recce-source/js/src/lib/api/localStorageKeys.ts
|
|
33
|
+
const prefix = "recce-";
|
|
34
|
+
const localStorageKeys = {
|
|
35
|
+
bypassSaveOverwrite: `${prefix}-bypass-save-overwrite`,
|
|
36
|
+
previewChangeFeedbackID: `${prefix}-preview-change-feedback`,
|
|
37
|
+
prepareEnvGuideID: `${prefix}-prepare-env`
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region recce-source/js/src/lib/api/connectToCloud.ts
|
|
42
|
+
async function connectToCloud() {
|
|
43
|
+
return (await require_state.axiosClient.post("/api/connect")).data;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region recce-source/js/src/lib/api/user.ts
|
|
48
|
+
async function fetchUser() {
|
|
49
|
+
try {
|
|
50
|
+
return (await require_state.axiosClient.get("/api/users")).data;
|
|
51
|
+
} catch (error) {
|
|
52
|
+
console.error("Error fetching user data:", error);
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function fetchGitHubAvatar(userId) {
|
|
57
|
+
try {
|
|
58
|
+
return (await axios.default.get(`https://api.github.com/user/${userId}`)).data.avatar_url;
|
|
59
|
+
} catch (error) {
|
|
60
|
+
console.warn("Failed to fetch GitHub avatar:", error);
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region recce-source/js/src/lib/api/version.ts
|
|
67
|
+
function useVersionNumber() {
|
|
68
|
+
const [version, setVersion] = (0, react.useState)("");
|
|
69
|
+
const [latestVersion, setLatestVersion] = (0, react.useState)("");
|
|
70
|
+
(0, react.useEffect)(() => {
|
|
71
|
+
async function fetchVersion() {
|
|
72
|
+
try {
|
|
73
|
+
const { version: version$1, latestVersion: latestVersion$1 } = (await require_state.axiosClient.get("/api/version")).data;
|
|
74
|
+
setVersion(version$1);
|
|
75
|
+
setLatestVersion(latestVersion$1);
|
|
76
|
+
} catch (error) {
|
|
77
|
+
console.error("Error fetching version number:", error);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
fetchVersion();
|
|
81
|
+
}, []);
|
|
82
|
+
return {
|
|
83
|
+
version,
|
|
84
|
+
latestVersion
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
//#endregion
|
|
89
|
+
Object.defineProperty(exports, 'connectToCloud', {
|
|
90
|
+
enumerable: true,
|
|
91
|
+
get: function () {
|
|
92
|
+
return connectToCloud;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
Object.defineProperty(exports, 'createSchemaDiffCheck', {
|
|
96
|
+
enumerable: true,
|
|
97
|
+
get: function () {
|
|
98
|
+
return createSchemaDiffCheck;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
Object.defineProperty(exports, 'fetchGitHubAvatar', {
|
|
102
|
+
enumerable: true,
|
|
103
|
+
get: function () {
|
|
104
|
+
return fetchGitHubAvatar;
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
Object.defineProperty(exports, 'fetchUser', {
|
|
108
|
+
enumerable: true,
|
|
109
|
+
get: function () {
|
|
110
|
+
return fetchUser;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
Object.defineProperty(exports, 'localStorageKeys', {
|
|
114
|
+
enumerable: true,
|
|
115
|
+
get: function () {
|
|
116
|
+
return localStorageKeys;
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
Object.defineProperty(exports, 'select', {
|
|
120
|
+
enumerable: true,
|
|
121
|
+
get: function () {
|
|
122
|
+
return select;
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
Object.defineProperty(exports, 'sessionStorageKeys', {
|
|
126
|
+
enumerable: true,
|
|
127
|
+
get: function () {
|
|
128
|
+
return sessionStorageKeys;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
Object.defineProperty(exports, 'useVersionNumber', {
|
|
132
|
+
enumerable: true,
|
|
133
|
+
get: function () {
|
|
134
|
+
return useVersionNumber;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=version-MxW9vrDY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-MxW9vrDY.js","names":["axiosClient","axiosClient","prefix","axiosClient","axiosClient","axiosClient","version","latestVersion"],"sources":["../recce-source/js/src/lib/api/schemacheck.ts","../recce-source/js/src/lib/api/select.ts","../recce-source/js/src/lib/api/sessionStorageKeys.ts","../recce-source/js/src/lib/api/localStorageKeys.ts","../recce-source/js/src/lib/api/connectToCloud.ts","../recce-source/js/src/lib/api/user.ts","../recce-source/js/src/lib/api/version.ts"],"sourcesContent":["import { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\nimport { Check } from \"./checks\";\n\nexport interface SchemaDiffViewParams {\n node_id?: string | string[];\n select?: string;\n exclude?: string;\n view_mode?: \"all\" | \"changed_models\";\n packages?: string[];\n}\n\ninterface CreateSchemaDiffCheckBody {\n type: string;\n params: SchemaDiffViewParams;\n}\n\nexport async function createSchemaDiffCheck(\n params: SchemaDiffViewParams,\n): Promise<Check> {\n const response = await axiosClient.post<\n CreateSchemaDiffCheckBody,\n AxiosResponse<Check>\n >(\"/api/checks\", {\n type: \"schema_diff\",\n params: params,\n });\n\n return response.data;\n}\n","import { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\nexport interface SelectInput {\n select?: string;\n exclude?: string;\n packages?: string[];\n view_mode?: \"all\" | \"changed_models\";\n}\n\nexport interface SelectOutput {\n nodes: string[];\n}\n\nexport async function select(input: SelectInput): Promise<SelectOutput> {\n return (\n await axiosClient.post<SelectInput, AxiosResponse<SelectOutput>>(\n `/api/select`,\n input,\n )\n ).data;\n}\n","const prefix = \"recce\";\n\nexport const sessionStorageKeys = {\n recommendationIgnored: `${prefix}-recommendation-ignored`,\n recommendationShowed: `${prefix}-recommendation-showed`,\n prevRefreshTimeStamp: `${prefix}-prev-refresh-timestamp`,\n lineageNotificationDismissed: `${prefix}-lineage-notification-dismissed`,\n};\n","const prefix = \"recce-\";\n\nexport const localStorageKeys = {\n bypassSaveOverwrite: `${prefix}-bypass-save-overwrite`,\n previewChangeFeedbackID: `${prefix}-preview-change-feedback`,\n prepareEnvGuideID: `${prefix}-prepare-env`,\n};\n","import { axiosClient } from \"./axiosClient\";\n\nexport interface ConnectToCloud {\n connection_url: string;\n}\n\nexport async function connectToCloud(): Promise<ConnectToCloud> {\n const data = await axiosClient.post<ConnectToCloud>(\"/api/connect\");\n return data.data;\n}\n","import axios, { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\nexport interface User {\n id: string;\n login: string;\n login_type: string;\n email: string;\n onboarding_state: string;\n}\n\ninterface GitHubUser {\n login: string;\n id: number;\n avatar_url: string;\n}\n\nexport async function fetchUser(): Promise<User> {\n try {\n const response = await axiosClient.get<never, AxiosResponse<User>>(\n \"/api/users\",\n );\n return response.data;\n } catch (error) {\n console.error(\"Error fetching user data:\", error);\n throw error;\n }\n}\n\nexport async function fetchGitHubAvatar(\n userId: string,\n): Promise<string | null> {\n try {\n const response = await axios.get<GitHubUser>(\n `https://api.github.com/user/${userId}`,\n );\n return response.data.avatar_url;\n } catch (error) {\n console.warn(\"Failed to fetch GitHub avatar:\", error);\n return null;\n }\n}\n","import { AxiosResponse } from \"axios\";\nimport { useEffect, useState } from \"react\";\nimport { axiosClient } from \"./axiosClient\";\n\ninterface VersionResponse {\n version: string;\n latestVersion: string;\n}\n\nexport function useVersionNumber() {\n const [version, setVersion] = useState(\"\");\n const [latestVersion, setLatestVersion] = useState(\"\");\n\n useEffect(() => {\n async function fetchVersion() {\n try {\n const { version, latestVersion } = (\n await axiosClient.get<never, AxiosResponse<VersionResponse>>(\n \"/api/version\",\n )\n ).data;\n\n setVersion(version);\n setLatestVersion(latestVersion);\n } catch (error) {\n console.error(\"Error fetching version number:\", error);\n }\n }\n void fetchVersion();\n }, []);\n\n return { version, latestVersion };\n}\n"],"mappings":";;;;;;;AAiBA,eAAsB,sBACpB,QACgB;AAShB,SARiB,MAAMA,0BAAY,KAGjC,eAAe;EACf,MAAM;EACE;EACT,CAAC,EAEc;;;;;ACdlB,eAAsB,OAAO,OAA2C;AACtE,SACE,MAAMC,0BAAY,KAChB,eACA,MACD,EACD;;;;;ACpBJ,MAAMC,WAAS;AAEf,MAAa,qBAAqB;CAChC,uBAAuB,GAAGA,SAAO;CACjC,sBAAsB,GAAGA,SAAO;CAChC,sBAAsB,GAAGA,SAAO;CAChC,8BAA8B,GAAGA,SAAO;CACzC;;;;ACPD,MAAM,SAAS;AAEf,MAAa,mBAAmB;CAC9B,qBAAqB,GAAG,OAAO;CAC/B,yBAAyB,GAAG,OAAO;CACnC,mBAAmB,GAAG,OAAO;CAC9B;;;;ACAD,eAAsB,iBAA0C;AAE9D,SADa,MAAMC,0BAAY,KAAqB,eAAe,EACvD;;;;;ACSd,eAAsB,YAA2B;AAC/C,KAAI;AAIF,UAHiB,MAAMC,0BAAY,IACjC,aACD,EACe;UACT,OAAO;AACd,UAAQ,MAAM,6BAA6B,MAAM;AACjD,QAAM;;;AAIV,eAAsB,kBACpB,QACwB;AACxB,KAAI;AAIF,UAHiB,MAAM,cAAM,IAC3B,+BAA+B,SAChC,EACe,KAAK;UACd,OAAO;AACd,UAAQ,KAAK,kCAAkC,MAAM;AACrD,SAAO;;;;;;AC9BX,SAAgB,mBAAmB;CACjC,MAAM,CAAC,SAAS,kCAAuB,GAAG;CAC1C,MAAM,CAAC,eAAe,wCAA6B,GAAG;AAEtD,4BAAgB;EACd,eAAe,eAAe;AAC5B,OAAI;IACF,MAAM,EAAE,oBAAS,oCACf,MAAMC,0BAAY,IAChB,eACD,EACD;AAEF,eAAWC,UAAQ;AACnB,qBAAiBC,gBAAc;YACxB,OAAO;AACd,YAAQ,MAAM,kCAAkC,MAAM;;;AAG1D,EAAK,cAAc;IAClB,EAAE,CAAC;AAEN,QAAO;EAAE;EAAS;EAAe"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datarecce/ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.23",
|
|
4
4
|
"description": "Recce UI Components Library - Reusable React components for data validation and review",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"README.md"
|
|
42
42
|
],
|
|
43
43
|
"scripts": {
|
|
44
|
-
"dev": "
|
|
45
|
-
"build": "
|
|
44
|
+
"dev": "tsdown --watch",
|
|
45
|
+
"build": "tsdown",
|
|
46
46
|
"type:check": "tsc --noEmit 2>&1 | grep -E '^src/' || echo 'Type check passed (OSS errors filtered)'",
|
|
47
47
|
"type:check:strict": "tsc --noEmit",
|
|
48
48
|
"type:check:all": "tsc --noEmit",
|
|
@@ -77,9 +77,11 @@
|
|
|
77
77
|
"@amplitude/unified": "^1.0.0-beta.9",
|
|
78
78
|
"@emotion/react": "^11.0.0",
|
|
79
79
|
"@mui/material": "^7.0.0",
|
|
80
|
+
"@mui/system": "^7.0.0",
|
|
80
81
|
"@tanstack/react-query": "^5.0.0",
|
|
81
82
|
"@xyflow/react": "^12.0.0",
|
|
82
|
-
"axios": "^1.0.0"
|
|
83
|
+
"axios": "^1.0.0",
|
|
84
|
+
"next-themes": "^0.4.0"
|
|
83
85
|
},
|
|
84
86
|
"dependencies": {
|
|
85
87
|
"@codemirror/lang-sql": "^6.10.0",
|
|
@@ -91,7 +93,6 @@
|
|
|
91
93
|
"@emotion/styled": "^11.14.1",
|
|
92
94
|
"@hello-pangea/dnd": "^18.0.1",
|
|
93
95
|
"@jeromefitz/date-fns-tz": "3.0.0-canary.8",
|
|
94
|
-
"@mui/system": "^7.3.6",
|
|
95
96
|
"@sentry/react": "^10.32.1",
|
|
96
97
|
"@types/js-cookie": "^3.0.6",
|
|
97
98
|
"@uiw/codemirror-theme-github": "^4.25.4",
|
|
@@ -107,7 +108,6 @@
|
|
|
107
108
|
"html2canvas-pro": "^1.6.1",
|
|
108
109
|
"js-cookie": "^3.0.5",
|
|
109
110
|
"lodash": "^4.17.21",
|
|
110
|
-
"next-themes": "^0.4.6",
|
|
111
111
|
"react-chartjs-2": "^5.3.1",
|
|
112
112
|
"react-icons": "^5.5.0",
|
|
113
113
|
"react-markdown": "^10.1.0",
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
"@types/react-dom": "19.2.3",
|
|
132
132
|
"@types/react-syntax-highlighter": "^15.5.13",
|
|
133
133
|
"next": "^16.1.0",
|
|
134
|
-
"
|
|
134
|
+
"tsdown": "^0.18.2",
|
|
135
135
|
"typescript": "^5.9.3"
|
|
136
136
|
},
|
|
137
137
|
"overrides": {
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import React__default from 'react';
|
|
2
|
-
import { y as NodeData, M as ManifestMetadata, A as CatalogMetadata, w as ColumnLineageData, Y as LineageDiffViewOptions, aL as Run, t as CllInput } from './lineagecheck-BQaKAQzn.mjs';
|
|
3
|
-
import { Node, Edge } from '@xyflow/react';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* The types for internal data structures.
|
|
7
|
-
*/
|
|
8
|
-
type LineageFrom = "both" | "base" | "current";
|
|
9
|
-
type LineageGraphNode = Node<{
|
|
10
|
-
id: string;
|
|
11
|
-
name: string;
|
|
12
|
-
from: LineageFrom;
|
|
13
|
-
data: {
|
|
14
|
-
base?: NodeData;
|
|
15
|
-
current?: NodeData;
|
|
16
|
-
};
|
|
17
|
-
changeStatus?: "added" | "removed" | "modified";
|
|
18
|
-
change?: {
|
|
19
|
-
category: "breaking" | "non_breaking" | "partial_breaking" | "unknown";
|
|
20
|
-
columns: Record<string, "added" | "removed" | "modified"> | null;
|
|
21
|
-
};
|
|
22
|
-
resourceType?: string;
|
|
23
|
-
packageName?: string;
|
|
24
|
-
parents: Record<string, LineageGraphEdge>;
|
|
25
|
-
children: Record<string, LineageGraphEdge>;
|
|
26
|
-
}, "lineageGraphNode">;
|
|
27
|
-
type LineageGraphColumnNode = Node<{
|
|
28
|
-
node: LineageGraphNode["data"];
|
|
29
|
-
column: string;
|
|
30
|
-
type: string;
|
|
31
|
-
transformationType?: string;
|
|
32
|
-
changeStatus?: "added" | "removed" | "modified";
|
|
33
|
-
}, "lineageGraphColumnNode">;
|
|
34
|
-
type LineageGraphEdge = Edge<{
|
|
35
|
-
from: LineageFrom;
|
|
36
|
-
changeStatus?: "added" | "removed";
|
|
37
|
-
}, "lineageGraphEdge">;
|
|
38
|
-
type LineageGraphNodes = LineageGraphNode | LineageGraphColumnNode;
|
|
39
|
-
interface LineageGraph {
|
|
40
|
-
nodes: Record<string, LineageGraphNode>;
|
|
41
|
-
edges: Record<string, LineageGraphEdge>;
|
|
42
|
-
modifiedSet: string[];
|
|
43
|
-
manifestMetadata: {
|
|
44
|
-
base?: ManifestMetadata;
|
|
45
|
-
current?: ManifestMetadata;
|
|
46
|
-
};
|
|
47
|
-
catalogMetadata: {
|
|
48
|
-
base?: CatalogMetadata;
|
|
49
|
-
current?: CatalogMetadata;
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
type NewType = LineageDiffViewOptions;
|
|
54
|
-
type ActionMode = "per_node" | "multi_nodes";
|
|
55
|
-
interface NodeAction {
|
|
56
|
-
mode: ActionMode;
|
|
57
|
-
status?: "pending" | "running" | "success" | "failure" | "skipped";
|
|
58
|
-
skipReason?: string;
|
|
59
|
-
run?: Run;
|
|
60
|
-
}
|
|
61
|
-
interface ActionState {
|
|
62
|
-
mode: ActionMode;
|
|
63
|
-
status: "pending" | "running" | "canceling" | "canceled" | "completed";
|
|
64
|
-
currentRun?: Partial<Run>;
|
|
65
|
-
completed: number;
|
|
66
|
-
total: number;
|
|
67
|
-
actions: Record<string, NodeAction>;
|
|
68
|
-
}
|
|
69
|
-
interface LineageViewContextType {
|
|
70
|
-
interactive: boolean;
|
|
71
|
-
nodes: LineageGraphNodes[];
|
|
72
|
-
focusedNode?: LineageGraphNode;
|
|
73
|
-
selectedNodes: LineageGraphNode[];
|
|
74
|
-
cll: ColumnLineageData | undefined;
|
|
75
|
-
showContextMenu: (event: React__default.MouseEvent, node: LineageGraphNodes) => void;
|
|
76
|
-
viewOptions: LineageDiffViewOptions;
|
|
77
|
-
onViewOptionsChanged: (options: NewType) => void;
|
|
78
|
-
selectMode: "selecting" | "action_result" | undefined;
|
|
79
|
-
selectNode: (nodeId: string) => void;
|
|
80
|
-
selectParentNodes: (nodeId: string, degree?: number) => void;
|
|
81
|
-
selectChildNodes: (nodeId: string, degree?: number) => void;
|
|
82
|
-
deselect: () => void;
|
|
83
|
-
isNodeHighlighted: (nodeId: string) => boolean;
|
|
84
|
-
isNodeSelected: (nodeId: string) => boolean;
|
|
85
|
-
isEdgeHighlighted: (source: string, target: string) => boolean;
|
|
86
|
-
getNodeAction: (nodeId: string) => NodeAction;
|
|
87
|
-
getNodeColumnSet: (nodeId: string) => Set<string>;
|
|
88
|
-
isNodeShowingChangeAnalysis: (nodeId: string) => boolean;
|
|
89
|
-
runRowCount: () => Promise<void>;
|
|
90
|
-
runRowCountDiff: () => Promise<void>;
|
|
91
|
-
runValueDiff: () => Promise<void>;
|
|
92
|
-
addLineageDiffCheck: (viewMode?: string) => void;
|
|
93
|
-
addSchemaDiffCheck: () => void;
|
|
94
|
-
cancel: () => void;
|
|
95
|
-
actionState: ActionState;
|
|
96
|
-
centerNode: (nodeId: string) => void;
|
|
97
|
-
showColumnLevelLineage: (cll?: CllInput) => Promise<void>;
|
|
98
|
-
resetColumnLevelLineage: (previous?: boolean) => Promise<void>;
|
|
99
|
-
}
|
|
100
|
-
declare const LineageViewContext: React__default.Context<LineageViewContextType>;
|
|
101
|
-
declare const useLineageViewContext: () => LineageViewContextType | undefined;
|
|
102
|
-
|
|
103
|
-
export { LineageViewContext as L, type LineageGraphNode as a, type LineageGraphEdge as b, type LineageGraphColumnNode as c, type LineageGraph as d, useLineageViewContext as u };
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import React__default from 'react';
|
|
2
|
-
import { y as NodeData, M as ManifestMetadata, A as CatalogMetadata, w as ColumnLineageData, Y as LineageDiffViewOptions, aL as Run, t as CllInput } from './lineagecheck-BQaKAQzn.js';
|
|
3
|
-
import { Node, Edge } from '@xyflow/react';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* The types for internal data structures.
|
|
7
|
-
*/
|
|
8
|
-
type LineageFrom = "both" | "base" | "current";
|
|
9
|
-
type LineageGraphNode = Node<{
|
|
10
|
-
id: string;
|
|
11
|
-
name: string;
|
|
12
|
-
from: LineageFrom;
|
|
13
|
-
data: {
|
|
14
|
-
base?: NodeData;
|
|
15
|
-
current?: NodeData;
|
|
16
|
-
};
|
|
17
|
-
changeStatus?: "added" | "removed" | "modified";
|
|
18
|
-
change?: {
|
|
19
|
-
category: "breaking" | "non_breaking" | "partial_breaking" | "unknown";
|
|
20
|
-
columns: Record<string, "added" | "removed" | "modified"> | null;
|
|
21
|
-
};
|
|
22
|
-
resourceType?: string;
|
|
23
|
-
packageName?: string;
|
|
24
|
-
parents: Record<string, LineageGraphEdge>;
|
|
25
|
-
children: Record<string, LineageGraphEdge>;
|
|
26
|
-
}, "lineageGraphNode">;
|
|
27
|
-
type LineageGraphColumnNode = Node<{
|
|
28
|
-
node: LineageGraphNode["data"];
|
|
29
|
-
column: string;
|
|
30
|
-
type: string;
|
|
31
|
-
transformationType?: string;
|
|
32
|
-
changeStatus?: "added" | "removed" | "modified";
|
|
33
|
-
}, "lineageGraphColumnNode">;
|
|
34
|
-
type LineageGraphEdge = Edge<{
|
|
35
|
-
from: LineageFrom;
|
|
36
|
-
changeStatus?: "added" | "removed";
|
|
37
|
-
}, "lineageGraphEdge">;
|
|
38
|
-
type LineageGraphNodes = LineageGraphNode | LineageGraphColumnNode;
|
|
39
|
-
interface LineageGraph {
|
|
40
|
-
nodes: Record<string, LineageGraphNode>;
|
|
41
|
-
edges: Record<string, LineageGraphEdge>;
|
|
42
|
-
modifiedSet: string[];
|
|
43
|
-
manifestMetadata: {
|
|
44
|
-
base?: ManifestMetadata;
|
|
45
|
-
current?: ManifestMetadata;
|
|
46
|
-
};
|
|
47
|
-
catalogMetadata: {
|
|
48
|
-
base?: CatalogMetadata;
|
|
49
|
-
current?: CatalogMetadata;
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
type NewType = LineageDiffViewOptions;
|
|
54
|
-
type ActionMode = "per_node" | "multi_nodes";
|
|
55
|
-
interface NodeAction {
|
|
56
|
-
mode: ActionMode;
|
|
57
|
-
status?: "pending" | "running" | "success" | "failure" | "skipped";
|
|
58
|
-
skipReason?: string;
|
|
59
|
-
run?: Run;
|
|
60
|
-
}
|
|
61
|
-
interface ActionState {
|
|
62
|
-
mode: ActionMode;
|
|
63
|
-
status: "pending" | "running" | "canceling" | "canceled" | "completed";
|
|
64
|
-
currentRun?: Partial<Run>;
|
|
65
|
-
completed: number;
|
|
66
|
-
total: number;
|
|
67
|
-
actions: Record<string, NodeAction>;
|
|
68
|
-
}
|
|
69
|
-
interface LineageViewContextType {
|
|
70
|
-
interactive: boolean;
|
|
71
|
-
nodes: LineageGraphNodes[];
|
|
72
|
-
focusedNode?: LineageGraphNode;
|
|
73
|
-
selectedNodes: LineageGraphNode[];
|
|
74
|
-
cll: ColumnLineageData | undefined;
|
|
75
|
-
showContextMenu: (event: React__default.MouseEvent, node: LineageGraphNodes) => void;
|
|
76
|
-
viewOptions: LineageDiffViewOptions;
|
|
77
|
-
onViewOptionsChanged: (options: NewType) => void;
|
|
78
|
-
selectMode: "selecting" | "action_result" | undefined;
|
|
79
|
-
selectNode: (nodeId: string) => void;
|
|
80
|
-
selectParentNodes: (nodeId: string, degree?: number) => void;
|
|
81
|
-
selectChildNodes: (nodeId: string, degree?: number) => void;
|
|
82
|
-
deselect: () => void;
|
|
83
|
-
isNodeHighlighted: (nodeId: string) => boolean;
|
|
84
|
-
isNodeSelected: (nodeId: string) => boolean;
|
|
85
|
-
isEdgeHighlighted: (source: string, target: string) => boolean;
|
|
86
|
-
getNodeAction: (nodeId: string) => NodeAction;
|
|
87
|
-
getNodeColumnSet: (nodeId: string) => Set<string>;
|
|
88
|
-
isNodeShowingChangeAnalysis: (nodeId: string) => boolean;
|
|
89
|
-
runRowCount: () => Promise<void>;
|
|
90
|
-
runRowCountDiff: () => Promise<void>;
|
|
91
|
-
runValueDiff: () => Promise<void>;
|
|
92
|
-
addLineageDiffCheck: (viewMode?: string) => void;
|
|
93
|
-
addSchemaDiffCheck: () => void;
|
|
94
|
-
cancel: () => void;
|
|
95
|
-
actionState: ActionState;
|
|
96
|
-
centerNode: (nodeId: string) => void;
|
|
97
|
-
showColumnLevelLineage: (cll?: CllInput) => Promise<void>;
|
|
98
|
-
resetColumnLevelLineage: (previous?: boolean) => Promise<void>;
|
|
99
|
-
}
|
|
100
|
-
declare const LineageViewContext: React__default.Context<LineageViewContextType>;
|
|
101
|
-
declare const useLineageViewContext: () => LineageViewContextType | undefined;
|
|
102
|
-
|
|
103
|
-
export { LineageViewContext as L, type LineageGraphNode as a, type LineageGraphEdge as b, type LineageGraphColumnNode as c, type LineageGraph as d, useLineageViewContext as u };
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file agGridStyles.css
|
|
3
|
-
* @description Custom AG Grid styles for Recce data grids
|
|
4
|
-
*
|
|
5
|
-
* Provides header layout customization to ensure proper flex alignment:
|
|
6
|
-
* - Header cells use flex layout with items centered vertically
|
|
7
|
-
* - Labels aligned to the left
|
|
8
|
-
* - Actions (menu, sort icons) aligned to the right
|
|
9
|
-
* - Sticky headers when scrolling vertically
|
|
10
|
-
*
|
|
11
|
-
* Uses CSS custom properties from global.css for theme-aware colors.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/* AG Grid Viewport - uses theme-aware background */
|
|
15
|
-
.ag-body-viewport,
|
|
16
|
-
.ag-center-cols-viewport {
|
|
17
|
-
background-color: var(--recce-bg-muted);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/* Sticky header - stays visible when scrolling vertically */
|
|
21
|
-
.ag-header {
|
|
22
|
-
position: sticky;
|
|
23
|
-
top: 0;
|
|
24
|
-
z-index: 1;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/* Header cell flex layout */
|
|
28
|
-
.ag-header-cell-comp-wrapper {
|
|
29
|
-
display: flex;
|
|
30
|
-
align-items: center;
|
|
31
|
-
width: 100%;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/* Header label takes available space and aligns left */
|
|
35
|
-
.ag-header-cell-label {
|
|
36
|
-
flex: 1;
|
|
37
|
-
display: flex;
|
|
38
|
-
align-items: center;
|
|
39
|
-
overflow: hidden;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/* Sort icons stay with the label */
|
|
43
|
-
.ag-header-cell-label .ag-sort-indicator-container {
|
|
44
|
-
margin-left: 4px;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/* Actions container (menu button, etc.) aligned right */
|
|
48
|
-
.ag-header-cell-menu-button {
|
|
49
|
-
margin-left: auto;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/* Ensure header icons don't shrink */
|
|
53
|
-
.ag-header-icon {
|
|
54
|
-
flex-shrink: 0;
|
|
55
|
-
}
|
package/dist/api.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../recce-source/js/src/lib/const.ts","../recce-source/js/src/lib/api/axiosClient.ts","../recce-source/js/src/lib/api/types.ts","../recce-source/js/src/lib/api/runs.ts","../recce-source/js/src/lib/api/adhocQuery.ts","../recce-source/js/src/lib/api/cacheKeys.ts","../recce-source/js/src/lib/api/checks.ts","../recce-source/js/src/lib/api/cll.ts","../recce-source/js/src/lib/api/connectToCloud.ts","../recce-source/js/src/lib/api/flag.ts","../recce-source/js/src/lib/api/info.ts","../recce-source/js/src/lib/api/lineagecheck.ts","../recce-source/js/src/lib/api/rowcount.ts","../recce-source/js/src/lib/api/models.ts","../recce-source/js/src/lib/api/profile.ts","../recce-source/js/src/lib/api/schemacheck.ts","../recce-source/js/src/lib/api/select.ts","../recce-source/js/src/lib/api/state.ts","../recce-source/js/src/lib/api/user.ts","../recce-source/js/src/lib/api/valuediff.ts","../recce-source/js/src/lib/api/version.ts","../recce-source/js/src/lib/api/localStorageKeys.ts","../recce-source/js/src/lib/api/sessionStorageKeys.ts"],"names":["axios","QueryClient","useQuery","AxiosError","isAxiosError","useState","useEffect","version","latestVersion","prefix"],"mappings":"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","file":"api.js","sourcesContent":["let apiUrl = process.env.NEXT_PUBLIC_API_URL;\napiUrl ??= typeof window !== \"undefined\" ? window.location.origin : \"\";\n\nexport const PUBLIC_API_URL = apiUrl;\n\nlet cloudWebUrl = process.env.NEXT_PUBLIC_CLOUD_WEB_URL;\ncloudWebUrl ??= \"https://cloud.datarecce.io\";\n\nexport const PUBLIC_CLOUD_WEB_URL = cloudWebUrl;\n","import { QueryClient } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport { PUBLIC_API_URL } from \"@/lib/const\";\n\nexport const axiosClient = axios.create({\n baseURL: PUBLIC_API_URL,\n});\n\nexport const reactQueryClient = new QueryClient();\n","// ============================================================================\n// Base Types\n// ============================================================================\n\nexport type AxiosQueryParams = Record<\n string,\n string | string[] | number | number[] | undefined\n>;\n\nexport type RowDataTypes = number | string | boolean | null | undefined;\nexport type RowData = RowDataTypes[];\n\nexport type RowObjectType = Record<string, RowDataTypes> & {\n __status: \"added\" | \"removed\" | \"modified\" | undefined;\n _index?: number;\n};\n\nexport type ColumnType =\n | \"number\"\n | \"integer\"\n | \"text\"\n | \"boolean\"\n | \"date\"\n | \"datetime\"\n | \"timedelta\"\n | \"unknown\";\n\nexport type ColumnRenderMode = \"raw\" | \"percent\" | \"delta\" | 2;\nexport interface DataFrame {\n columns: {\n key: string;\n name: string;\n type: ColumnType;\n }[];\n data: RowData[];\n limit?: number;\n more?: boolean;\n}\n\n// ============================================================================\n// Run Types - Strict enum without string union\n// ============================================================================\n\n// ============================================================================\n// Inline Param Definitions (defined here to avoid circular dependencies)\n// ============================================================================\n\n// Import types that are defined in other files\nimport { RunType } from \"@/components/run/registry\";\nimport type {\n QueryDiffParams,\n QueryDiffResult,\n QueryResult,\n QueryRunParams,\n} from \"./adhocQuery\";\nimport type { LineageDiffResult } from \"./info\";\nimport type {\n HistogramDiffParams,\n HistogramDiffResult,\n ProfileDiffParams,\n ProfileDiffResult,\n TopKDiffParams,\n TopKDiffResult,\n} from \"./profile\";\nimport type {\n RowCountDiffParams,\n RowCountDiffResult,\n RowCountParams,\n RowCountResult,\n} from \"./rowcount\";\nimport type {\n ValueDiffDetailParams,\n ValueDiffDetailResult,\n ValueDiffParams,\n ValueDiffResult,\n} from \"./valuediff\";\n\n// Define params that don't have their own files yet\nexport interface SchemaDiffParams {\n node_id?: string | string[];\n select?: string;\n exclude?: string;\n packages?: string[];\n view_mode?: \"all\" | \"changed_models\";\n}\n\nexport interface LineageDiffParams {\n select?: string;\n exclude?: string;\n packages?: string[];\n view_mode?: \"all\" | \"changed_models\";\n}\n\n// ============================================================================\n// Run - Discriminated Union Type\n// ============================================================================\n\nexport type RunParamTypes =\n | QueryRunParams\n | QueryDiffParams\n | ValueDiffParams\n | SchemaDiffParams\n | ProfileDiffParams\n | RowCountParams\n | RowCountDiffParams\n | LineageDiffParams\n | TopKDiffParams\n | HistogramDiffParams\n | undefined;\n\ninterface BaseRun {\n type: RunType;\n run_id: string;\n run_at: string;\n name?: string;\n check_id?: string;\n progress?: {\n message?: string;\n percentage?: number;\n };\n error?: string;\n status?: \"finished\" | \"failed\" | \"cancelled\" | \"running\";\n}\n\nexport type Run =\n | (BaseRun & {\n type: \"simple\";\n params?: undefined;\n result?: undefined;\n })\n | (BaseRun & {\n type: \"sandbox\";\n params?: undefined;\n result?: undefined;\n })\n | (BaseRun & {\n type: \"query\";\n params?: QueryRunParams;\n result?: QueryResult;\n })\n | (BaseRun & {\n type: \"query_base\";\n params?: QueryRunParams;\n result?: QueryResult;\n })\n | (BaseRun & {\n type: \"query_diff\";\n params?: QueryDiffParams;\n result?: QueryDiffResult;\n })\n | (BaseRun & {\n type: \"value_diff\";\n params?: ValueDiffParams;\n result?: ValueDiffResult;\n })\n | (BaseRun & {\n type: \"value_diff_detail\";\n params?: ValueDiffDetailParams;\n result?: ValueDiffDetailResult;\n })\n | (BaseRun & {\n type: \"schema_diff\";\n params?: SchemaDiffParams;\n result?: undefined;\n })\n | (BaseRun & {\n type: \"profile\";\n params?: ProfileDiffParams;\n result?: ProfileDiffResult;\n })\n | (BaseRun & {\n type: \"profile_diff\";\n params?: ProfileDiffParams;\n result?: ProfileDiffResult;\n })\n | (BaseRun & {\n type: \"row_count\";\n params?: RowCountParams;\n result?: RowCountResult;\n })\n | (BaseRun & {\n type: \"row_count_diff\";\n params?: RowCountDiffParams;\n result?: RowCountDiffResult;\n })\n | (BaseRun & {\n type: \"lineage_diff\";\n params?: LineageDiffParams;\n result?: LineageDiffResult;\n })\n | (BaseRun & {\n type: \"top_k_diff\";\n params?: TopKDiffParams;\n result?: TopKDiffResult;\n })\n | (BaseRun & {\n type: \"histogram_diff\";\n params?: HistogramDiffParams;\n result?: HistogramDiffResult;\n });\n\n// ============================================================================\n// Type Guards\n// ============================================================================\n\nexport function isSimpleRun(run: Run): run is Extract<Run, { type: \"simple\" }> {\n return run.type === \"simple\";\n}\n\nexport function isQueryRun(run: Run): run is Extract<Run, { type: \"query\" }> {\n return run.type === \"query\";\n}\n\nexport function isQueryBaseRun(\n run: Run,\n): run is Extract<Run, { type: \"query_base\" }> {\n return run.type === \"query_base\";\n}\n\nexport function isQueryDiffRun(\n run: Run,\n): run is Extract<Run, { type: \"query_diff\" }> {\n return run.type === \"query_diff\";\n}\n\nexport function isValueDiffRun(\n run: Run,\n): run is Extract<Run, { type: \"value_diff\" }> {\n return run.type === \"value_diff\";\n}\n\nexport function isValueDiffDetailRun(\n run: Run,\n): run is Extract<Run, { type: \"value_diff_detail\" }> {\n return run.type === \"value_diff_detail\";\n}\n\nexport function isSchemaDiffRun(\n run: Run,\n): run is Extract<Run, { type: \"schema_diff\" }> {\n return run.type === \"schema_diff\";\n}\n\nexport function isProfileRun(\n run: Run,\n): run is Extract<Run, { type: \"profile\" }> {\n return run.type === \"profile\";\n}\n\nexport function isProfileDiffRun(\n run: Run,\n): run is Extract<Run, { type: \"profile_diff\" }> {\n return run.type === \"profile_diff\";\n}\n\nexport function isRowCountRun(\n run: Run,\n): run is Extract<Run, { type: \"row_count\" }> {\n return run.type === \"row_count\";\n}\n\nexport function isRowCountDiffRun(\n run: Run,\n): run is Extract<Run, { type: \"row_count_diff\" }> {\n return run.type === \"row_count_diff\";\n}\n\nexport function isLineageDiffRun(\n run: Run,\n): run is Extract<Run, { type: \"lineage_diff\" }> {\n return run.type === \"lineage_diff\";\n}\n\nexport function isTopKDiffRun(\n run: Run,\n): run is Extract<Run, { type: \"top_k_diff\" }> {\n return run.type === \"top_k_diff\";\n}\n\nexport function isHistogramDiffRun(\n run: Run,\n): run is Extract<Run, { type: \"histogram_diff\" }> {\n return run.type === \"histogram_diff\";\n}\n","import { AxiosInstance, AxiosResponse } from \"axios\";\nimport { RunType } from \"@/components/run/registry\";\nimport { axiosClient } from \"./axiosClient\";\nimport { getExperimentTrackingBreakingChangeEnabled } from \"./track\";\nimport { AxiosQueryParams, isQueryRun, Run, RunParamTypes } from \"./types\";\n\nexport interface SubmitRunTrackProps {\n breaking_change_analysis?: boolean;\n source?: \"lineage_model_node\" | \"lineage_column_node\";\n [key: string]: unknown;\n}\n\nexport interface SubmitOptions {\n nowait?: boolean;\n trackProps?: SubmitRunTrackProps;\n}\n\ninterface SubmitRunBody {\n type: RunType;\n params?: Record<string, unknown>;\n nowait?: boolean;\n track_props: SubmitRunTrackProps;\n}\n\nfunction mutateAddKey(run: Run): Run {\n if (run.result == null) {\n // no result, don't do anything\n return run;\n }\n if (isQueryRun(run)) {\n run.result.columns = run.result.columns.map((c) => {\n if (c.key) {\n return c;\n }\n c.key = c.name;\n return c;\n });\n }\n return run;\n}\n\nexport async function submitRun(\n type: RunType,\n params?: RunParamTypes,\n options?: SubmitOptions,\n) {\n const track_props = options?.trackProps ? { ...options.trackProps } : {};\n if (getExperimentTrackingBreakingChangeEnabled()) {\n track_props.breaking_change_analysis = true;\n }\n\n const response = await axiosClient.post<\n SubmitRunBody,\n AxiosResponse<Run | Pick<Run, \"run_id\">>\n >(\"/api/runs\", {\n type,\n params,\n nowait: options?.nowait,\n track_props,\n });\n\n return response.data;\n}\n\nexport async function getRun(runId: string) {\n const response = await axiosClient.get<never, AxiosResponse<Run>>(\n `/api/runs/${runId}`,\n );\n return response.data;\n}\n\ninterface WaitRunBody {\n params: {\n timeout?: number;\n };\n}\n\nexport async function waitRun(runId: string, timeout?: number) {\n const response = await axiosClient.get<WaitRunBody, AxiosResponse<Run>>(\n `/api/runs/${runId}/wait`,\n {\n params: {\n timeout,\n },\n },\n );\n\n return mutateAddKey(response.data);\n}\n\nexport async function cancelRun(runId: string) {\n return await axiosClient.post<never, AxiosResponse<never>>(\n `/api/runs/${runId}/cancel`,\n );\n}\n\nexport async function submitRunFromCheck(\n checkId: string,\n options?: SubmitOptions,\n) {\n const response = await axiosClient.post<\n { nowait?: boolean },\n AxiosResponse<Run | Pick<Run, \"run_id\">>\n >(`/api/checks/${checkId}/run`, {\n nowait: options?.nowait,\n });\n\n return response.data;\n}\n\ninterface SearchRunsBody {\n type: string;\n params: Record<string, unknown>;\n limit?: number;\n}\n\nexport async function searchRuns(\n type: string,\n params?: AxiosQueryParams,\n limit?: number,\n) {\n const response = await axiosClient.post<SearchRunsBody, AxiosResponse<Run[]>>(\n `/api/runs/search`,\n {\n type,\n params,\n limit,\n },\n );\n\n return response.data;\n}\n\nexport async function listRuns(): Promise<Run[]> {\n const response = await axiosClient.get<never, AxiosResponse<Run[]>>(\n \"/api/runs\",\n );\n return response.data;\n}\n\nexport type RunsAggregated = Record<\n string,\n Record<\n \"row_count_diff\" | \"value_diff\" | \"row_count\",\n {\n run_id: string;\n result: unknown;\n }\n >\n>;\nexport async function aggregateRuns(\n client: AxiosInstance = axiosClient,\n): Promise<RunsAggregated> {\n // input should be AggregateRunsIn\n const response = await client.post<unknown, AxiosResponse<RunsAggregated>>(\n `/api/runs/aggregate`,\n {},\n );\n\n return response.data;\n}\n","import { SubmitOptions, submitRun } from \"./runs\";\nimport { ColumnRenderMode, DataFrame } from \"./types\";\n\nexport interface QueryParams\n extends QueryRunParams,\n QueryDiffParams,\n QueryPreviewChangeParams {}\n\nexport interface QueryPreviewChangeParams {\n current_model?: string;\n sql_template: string;\n primary_keys?: string[];\n}\n\nexport interface QueryRunParams {\n sql_template: string;\n}\n\nexport interface QueryViewOptions {\n pinned_columns?: string[];\n columnsRenderMode?: Record<string, ColumnRenderMode>;\n}\n\nexport type QueryResult = DataFrame;\n\nexport interface QueryDiffParams {\n sql_template: string;\n base_sql_template?: string;\n primary_keys?: string[];\n}\n\nexport interface QueryDiffResult {\n base?: DataFrame;\n current?: DataFrame;\n diff?: DataFrame;\n}\n\nexport interface QueryDiffViewOptions {\n changed_only?: boolean;\n primary_keys?: string[];\n pinned_columns?: string[];\n display_mode?: \"inline\" | \"side_by_side\";\n columnsRenderMode?: Record<string, ColumnRenderMode>;\n}\n\nexport async function submitQuery(\n params: QueryRunParams,\n options?: SubmitOptions,\n) {\n return await submitRun(\"query\", params, options);\n}\n\nexport async function submitQueryBase(\n params: QueryRunParams,\n options?: SubmitOptions,\n) {\n return await submitRun(\"query_base\", params, options);\n}\n\nexport async function submitQueryDiff(\n params: QueryDiffParams,\n options?: SubmitOptions,\n) {\n return await submitRun(\"query_diff\", params, options);\n}\n","export const cacheKeys = {\n rowCount: (model: string) => [\"row_count\", model],\n lineage: () => [\"lineage\"],\n checks: () => [\"checks\", \"list\"],\n check: (checkId: string) => [\"checks\", checkId],\n checkEvents: (checkId: string) => [\"checks\", checkId, \"events\"],\n runs: () => [\"runs\"],\n run: (runId: string) => [\"runs\", runId],\n runsAggregated: () => [\"runs_aggregated\"],\n flag: () => [\"flag\"],\n instanceInfo: () => [\"instance_info\"],\n user: () => [\"user\"],\n};\n","import { useQuery } from \"@tanstack/react-query\";\nimport { AxiosResponse } from \"axios\";\nimport { RunType } from \"@/components/run/registry\";\nimport { axiosClient } from \"./axiosClient\";\nimport { cacheKeys } from \"./cacheKeys\";\nimport { getExperimentTrackingBreakingChangeEnabled } from \"./track\";\nimport { Run, RunParamTypes } from \"./types\";\n\nexport interface Check<PT = unknown, VO = unknown> {\n check_id: string;\n name: string;\n description?: string;\n type: RunType;\n params?: PT;\n view_options?: VO;\n is_checked?: boolean;\n is_preset?: boolean;\n last_run?: Run;\n}\n\nexport interface CreateCheckBody {\n name?: string;\n description?: string;\n run_id?: string;\n type?: RunType;\n params?: Record<string, string | boolean>;\n view_options?: Record<string, string | boolean>;\n track_props?: Record<string, string | boolean>;\n}\n\nexport async function createSimpleCheck(): Promise<Check> {\n const response = await axiosClient.post<\n CreateCheckBody,\n AxiosResponse<Check>\n >(\"/api/checks\", {\n type: \"simple\",\n });\n return response.data;\n}\n\nexport async function createCheckByRun(\n runId: string,\n viewOptions?: Record<string, unknown>,\n): Promise<Check> {\n const track_props = getExperimentTrackingBreakingChangeEnabled()\n ? { breaking_change_analysis: true }\n : {};\n const response = await axiosClient.post<\n CreateCheckBody,\n AxiosResponse<Check>\n >(\"/api/checks\", {\n run_id: runId,\n view_options: viewOptions,\n track_props,\n });\n return response.data;\n}\n\nexport async function listChecks(): Promise<Check[]> {\n return (await axiosClient.get<never, AxiosResponse<Check[]>>(\"/api/checks\"))\n .data;\n}\n\nexport function useChecks(enabled: boolean) {\n return useQuery({\n queryKey: cacheKeys.checks(),\n queryFn: listChecks,\n enabled,\n });\n}\n\nexport async function getCheck(checkId: string): Promise<Check<RunParamTypes>> {\n const response = await axiosClient.get<\n never,\n AxiosResponse<Check<RunParamTypes>>\n >(`/api/checks/${checkId}`);\n return response.data;\n}\n\nexport async function updateCheck(\n checkId: string,\n payload: Partial<Check>,\n): Promise<Check> {\n const response = await axiosClient.patch<\n Partial<Check>,\n AxiosResponse<Check>\n >(`/api/checks/${checkId}`, payload);\n return response.data;\n}\n\nexport async function deleteCheck(checkId: string) {\n const response = await axiosClient.delete<\n never,\n AxiosResponse<Pick<Check, \"check_id\">>\n >(`/api/checks/${checkId}`);\n return response.data;\n}\n\nexport async function reorderChecks(order: {\n source: number;\n destination: number;\n}) {\n return await axiosClient.post<\n { source: number; destination: number },\n AxiosResponse<unknown>\n >(\"/api/checks/reorder\", order);\n}\n\nexport async function markAsPresetCheck(checkId: string): Promise<void> {\n await axiosClient.post(`/api/checks/${checkId}/mark-as-preset`);\n}\n","import { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\nimport { NodeColumnData } from \"./info\";\n\nexport interface CllInput {\n node_id?: string;\n column?: string;\n change_analysis?: boolean;\n no_cll?: boolean;\n no_upstream?: boolean;\n no_downstream?: boolean;\n}\n\nexport interface ImpactRadiusParams {\n node_id: string;\n}\n\nexport interface CllNodeData {\n id: string;\n name: string;\n source_name: string;\n resource_type: string;\n raw_code?: string;\n change_status?: \"added\" | \"removed\" | \"modified\";\n change_category?:\n | \"breaking\"\n | \"non_breaking\"\n | \"partial_breaking\"\n | \"unknown\";\n impacted?: boolean;\n columns?: Record<string, NodeColumnData>;\n}\n\nexport interface ColumnLineageData {\n current: {\n nodes: Record<string, CllNodeData>;\n columns: Record<string, NodeColumnData>;\n parent_map: Record<string, Set<string>>;\n child_map: Record<string, Set<string>>;\n };\n}\n\nexport async function getCll(input: CllInput): Promise<ColumnLineageData> {\n const response = await axiosClient.post<\n CllInput,\n AxiosResponse<ColumnLineageData>\n >(\"/api/cll\", input);\n\n return response.data;\n}\n","import { axiosClient } from \"./axiosClient\";\n\nexport interface ConnectToCloud {\n connection_url: string;\n}\n\nexport async function connectToCloud(): Promise<ConnectToCloud> {\n const data = await axiosClient.post<ConnectToCloud>(\"/api/connect\");\n return data.data;\n}\n","import { AxiosInstance, AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\nexport interface RecceServerFlags {\n single_env_onboarding: boolean;\n show_relaunch_hint: boolean;\n}\n\nexport async function getServerFlag(\n client: AxiosInstance = axiosClient,\n): Promise<RecceServerFlags> {\n return (await client.get<never, AxiosResponse<RecceServerFlags>>(\"/api/flag\"))\n .data;\n}\n\n// This was used for showing onboarding guide. Check DRC-1320 for more detials\nexport async function markOnboardingCompleted(\n client: AxiosInstance = axiosClient,\n): Promise<void> {\n try {\n await client.post<never, AxiosResponse<never>>(\"/api/onboarding/completed\");\n } catch (_error) {\n // skip any errors\n }\n}\n\nexport async function markRelaunchHintCompleted(\n client: AxiosInstance = axiosClient,\n): Promise<void> {\n try {\n await client.post<never, AxiosResponse<never>>(\n \"/api/relaunch-hint/completed\",\n );\n } catch (_error) {\n // skip any errors\n }\n}\n","import { AxiosError, AxiosInstance, AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\n/**\n * The data from the API\n */\nexport interface NodeColumnData {\n name: string;\n type: string;\n transformation_type?: string;\n change_status?: \"added\" | \"removed\" | \"modified\";\n not_null?: boolean;\n unique?: boolean;\n}\nexport interface NodeData {\n id: string;\n unique_id: string;\n name: string;\n schema?: string;\n checksum?: {\n name: string;\n checksum: string;\n };\n raw_code?: string;\n resource_type?: string;\n package_name?: string;\n columns?: Record<string, NodeColumnData | undefined>;\n primary_key?: string;\n}\n\n// https://docs.getdbt.com/reference/artifacts/dbt-artifacts#common-metadata\ninterface ArtifactMetadata {\n dbt_version: string;\n dbt_schema_version: string;\n generated_at: string;\n adapter_type: string;\n env: Record<string, string>;\n invocation_id: string;\n}\nexport interface ManifestMetadata extends ArtifactMetadata {\n project_id?: string;\n project_name?: string;\n user_id?: string;\n}\nexport interface SQLMeshInfo {\n base_env: string;\n current_env: string;\n}\n\nexport type CatalogMetadata = ArtifactMetadata;\n\nexport interface LineageData {\n metadata: {\n pr_url: string;\n git_branch?: string;\n };\n nodes: Record<string, NodeData>;\n parent_map: Record<string, string[]>;\n manifest_metadata?: ManifestMetadata | null;\n catalog_metadata?: CatalogMetadata | null;\n}\n\nexport interface LineageDataFromMetadata extends Omit<LineageData, \"nodes\"> {\n nodes: Record<string, NodeData | undefined>;\n}\n\nexport type LineageDiffData = Record<\n string,\n {\n change_status: \"added\" | \"removed\" | \"modified\";\n change: {\n category: \"breaking\" | \"non_breaking\" | \"partial_breaking\" | \"unknown\";\n columns: Record<string, \"added\" | \"removed\" | \"modified\"> | null;\n } | null;\n }\n>;\n\ninterface LineageOutput {\n error?: string;\n data?: LineageData;\n}\n\nexport async function getLineage(base = false): Promise<LineageData> {\n const response = await axiosClient.get<LineageData>(\n `/api/lineage?base=${base}`,\n );\n return response.data;\n}\n\nexport async function getLineageWithError(\n base = false,\n): Promise<LineageOutput> {\n try {\n const data = await getLineage(base);\n return { data };\n } catch (err: unknown) {\n if (err instanceof AxiosError) {\n const data = err.response?.data as Record<string, unknown> | undefined;\n const detail = data?.detail as string | undefined;\n if (detail) {\n return { error: detail };\n } else {\n return { error: err.message };\n }\n } else if (err instanceof Error) {\n return { error: err.message };\n } else {\n return { error: \"An unknown error occurred\" };\n }\n }\n}\n\nexport interface LineageDiffResult {\n base?: LineageData;\n current?: LineageData;\n base_error?: string;\n current_error?: string;\n}\n\nexport async function getLineageDiff(): Promise<LineageDiffResult> {\n const [base, current] = await Promise.all([\n getLineageWithError(true),\n getLineageWithError(false),\n ]);\n\n return {\n base: base.data,\n current: current.data,\n base_error: base.error,\n current_error: current.error,\n };\n}\n\nexport interface stateMetadata {\n schema_version: string;\n recce_version: string;\n generated_at: string;\n}\n\nexport interface gitInfo {\n branch?: string;\n}\n\nexport interface pullRequestInfo {\n id?: string | number;\n title?: string;\n url?: string;\n branch?: string;\n base_branch?: string;\n}\n\nexport interface ServerInfoResult {\n state_metadata: stateMetadata;\n adapter_type: string;\n review_mode: boolean;\n cloud_mode: boolean;\n file_mode: boolean;\n filename?: string;\n git?: gitInfo;\n pull_request?: pullRequestInfo;\n sqlmesh?: SQLMeshInfo;\n lineage: {\n base: LineageData;\n current: LineageData;\n diff: LineageDiffData;\n };\n demo: boolean;\n codespace: boolean;\n support_tasks: Record<string, boolean>;\n}\n\nexport async function getServerInfo(\n client: AxiosInstance = axiosClient,\n): Promise<ServerInfoResult> {\n return (await client.get<never, AxiosResponse<ServerInfoResult>>(`/api/info`))\n .data;\n}\n\nexport interface ModelInfoResult {\n model: {\n base: {\n columns?: Record<string, NodeColumnData>;\n primary_key?: string;\n };\n current: {\n columns?: Record<string, NodeColumnData>;\n primary_key?: string;\n };\n };\n}\n\nexport async function getModelInfo(model: string): Promise<ModelInfoResult> {\n return (\n await axiosClient.get<never, AxiosResponse<ModelInfoResult>>(\n `/api/model/${model}`,\n )\n ).data;\n}\n","import { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\nimport { Check } from \"./checks\";\nimport { CllInput } from \"./cll\";\n\nexport interface LineageDiffViewOptions {\n view_mode?: \"changed_models\" | \"all\";\n node_ids?: string[];\n packages?: string[];\n select?: string;\n exclude?: string;\n column_level_lineage?: CllInput;\n}\n\ninterface CreateLineageDiffCheckBody {\n type: string;\n params: Record<string, string | boolean | number>;\n view_options: LineageDiffViewOptions;\n}\n\nexport async function createLineageDiffCheck(\n viewOptions: LineageDiffViewOptions,\n): Promise<Check> {\n const response = await axiosClient.post<\n CreateLineageDiffCheckBody,\n AxiosResponse<Check>\n >(\"/api/checks\", {\n type: \"lineage_diff\",\n params: {},\n view_options: viewOptions,\n });\n\n return response.data;\n}\n","import { RowCount, RowCountDiff } from \"./models\";\nimport { SubmitOptions, submitRun } from \"./runs\";\nexport interface RowCountParams {\n node_names: string[];\n}\nexport type RowCountResult = Record<string, RowCount>;\nexport interface RowCountDiffParams {\n node_names: string[];\n}\nexport type RowCountDiffResult = Record<string, RowCountDiff>;\nexport async function submitRowCountDiff(\n params: RowCountDiffParams,\n options?: SubmitOptions,\n) {\n return await submitRun(\"row_count_diff\", params, options);\n}\n","import { axiosClient } from \"./axiosClient\";\nimport { RowCountDiffResult, submitRowCountDiff } from \"./rowcount\";\nimport { waitRun } from \"./runs\";\n\nexport interface RowCount {\n name?: string;\n curr: number | null;\n}\n\nexport interface RowCountDiff {\n name?: string;\n base: number | null;\n curr: number | null;\n}\n\nexport interface QueryRowCountResult {\n runId: string;\n result: RowCountDiffResult;\n}\n\nexport async function fetchModelRowCount(\n modelName: string,\n): Promise<RowCountDiff> {\n const response = await axiosClient.get<RowCountDiff>(\n `/api/models/${modelName}/row_count`,\n );\n return response.data;\n}\n\nexport async function queryModelRowCount(\n modelName: string,\n): Promise<RowCountDiff> {\n const { result } = await queryRowCount([modelName]);\n return result[modelName];\n}\n\nexport async function queryRowCount(\n modelNames: string[],\n): Promise<QueryRowCountResult> {\n if (modelNames.length === 0) {\n throw new Error(\"No model names provided\");\n }\n\n const { run_id } = await submitRowCountDiff(\n { node_names: modelNames },\n { nowait: true },\n );\n const run = await waitRun(run_id);\n\n return {\n runId: run_id,\n result: run.result as RowCountDiffResult,\n };\n}\n","import { SubmitOptions, submitRun } from \"./runs\";\nimport { ColumnRenderMode, DataFrame } from \"./types\";\n\nexport interface ProfileDiffParams {\n model: string;\n columns?: string[];\n}\n\nexport interface ProfileDiffResult {\n base?: DataFrame;\n current?: DataFrame;\n}\n\nexport interface ProfileDiffViewOptions {\n pinned_columns?: string[];\n display_mode?: \"side_by_side\" | \"inline\";\n columnsRenderMode?: Record<string, ColumnRenderMode>;\n}\n\nexport async function submitProfileDiff(\n params: ProfileDiffParams,\n options?: SubmitOptions,\n) {\n return await submitRun(\"profile_diff\", params, options);\n}\n\nexport interface TopKDiffParams {\n model: string;\n column_name: string;\n k: number;\n}\n\nexport interface TopKResult {\n values: (string | number | undefined)[];\n counts: number[];\n valids: number;\n}\n\nexport interface TopKDiffResult {\n base: TopKResult;\n current: TopKResult;\n}\n\nexport interface HistogramDiffParams {\n model: string;\n column_name: string;\n column_type: string;\n}\n\nexport interface HistogramResult {\n counts: number[];\n total: number;\n}\n\nexport interface HistogramDiffResult {\n base: HistogramResult;\n current: HistogramResult;\n min: number;\n max: number;\n bin_edges: number[];\n labels?: string[];\n}\n","import { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\nimport { Check } from \"./checks\";\n\nexport interface SchemaDiffViewParams {\n node_id?: string | string[];\n select?: string;\n exclude?: string;\n view_mode?: \"all\" | \"changed_models\";\n packages?: string[];\n}\n\ninterface CreateSchemaDiffCheckBody {\n type: string;\n params: SchemaDiffViewParams;\n}\n\nexport async function createSchemaDiffCheck(\n params: SchemaDiffViewParams,\n): Promise<Check> {\n const response = await axiosClient.post<\n CreateSchemaDiffCheckBody,\n AxiosResponse<Check>\n >(\"/api/checks\", {\n type: \"schema_diff\",\n params: params,\n });\n\n return response.data;\n}\n","import { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\nexport interface SelectInput {\n select?: string;\n exclude?: string;\n packages?: string[];\n view_mode?: \"all\" | \"changed_models\";\n}\n\nexport interface SelectOutput {\n nodes: string[];\n}\n\nexport async function select(input: SelectInput): Promise<SelectOutput> {\n return (\n await axiosClient.post<SelectInput, AxiosResponse<SelectOutput>>(\n `/api/select`,\n input,\n )\n ).data;\n}\n","import { AxiosResponse, isAxiosError } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\nexport interface SaveAsInput {\n filename: string;\n overwrite?: boolean;\n}\n\nexport interface ImportedState {\n runs: number;\n checks: number;\n}\n\nexport async function saveAs(input: SaveAsInput): Promise<void> {\n return (\n await axiosClient.post<SaveAsInput, AxiosResponse<void>>(\n \"/api/save-as\",\n input,\n )\n ).data;\n}\n\nexport async function rename(input: SaveAsInput): Promise<void> {\n return (\n await axiosClient.post<SaveAsInput, AxiosResponse<void>>(\n \"/api/rename\",\n input,\n )\n ).data;\n}\n\nexport async function exportState(): Promise<string> {\n return (await axiosClient.post<never, AxiosResponse<string>>(\"/api/export\"))\n .data;\n}\n\ninterface ImportStateBody {\n file: File;\n checks_only: \"true\" | \"false\";\n}\n\nexport async function importState(\n file: File,\n checksOnly?: boolean,\n): Promise<ImportedState> {\n const formData = new FormData();\n formData.append(\"file\", file);\n formData.append(\"checks_only\", (!!checksOnly).toString());\n\n return (\n await axiosClient.post<ImportStateBody, AxiosResponse<ImportedState>>(\n \"/api/import\",\n formData,\n )\n ).data;\n}\n\nexport async function isStateSyncing(): Promise<boolean> {\n const response = await axiosClient.get<never, AxiosResponse<boolean>>(\n \"/api/sync\",\n );\n return response.status === 208;\n}\n\nexport interface SyncStateInput {\n method?: \"overwrite\" | \"revert\" | \"merge\";\n}\nexport interface SyncStateResponse {\n status: \"accepted\" | \"conflict\" | \"syncing\";\n}\n\nexport async function syncState(\n input: SyncStateInput,\n): Promise<SyncStateResponse> {\n try {\n const response = await axiosClient.post<\n SyncStateInput,\n AxiosResponse<SyncStateResponse>\n >(\"/api/sync\", input);\n\n if (response.status === 202) {\n return {\n status: \"accepted\",\n };\n }\n if (response.status === 208) {\n return {\n status: \"syncing\",\n };\n }\n } catch (error) {\n if (isAxiosError(error)) {\n if (error.response?.status === 409) {\n // 409 conflict case\n return { status: \"conflict\" };\n }\n }\n }\n throw new Error(\"Failed to sync state\");\n}\n\nexport interface ShareStateResponse {\n status: string;\n message: string;\n share_url?: string;\n}\n\nexport async function shareState(): Promise<ShareStateResponse> {\n return (\n await axiosClient.post<never, AxiosResponse<ShareStateResponse>>(\n \"/api/share\",\n )\n ).data;\n}\n","import axios, { AxiosResponse } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\nexport interface User {\n id: string;\n login: string;\n login_type: string;\n email: string;\n onboarding_state: string;\n}\n\ninterface GitHubUser {\n login: string;\n id: number;\n avatar_url: string;\n}\n\nexport async function fetchUser(): Promise<User> {\n try {\n const response = await axiosClient.get<never, AxiosResponse<User>>(\n \"/api/users\",\n );\n return response.data;\n } catch (error) {\n console.error(\"Error fetching user data:\", error);\n throw error;\n }\n}\n\nexport async function fetchGitHubAvatar(\n userId: string,\n): Promise<string | null> {\n try {\n const response = await axios.get<GitHubUser>(\n `https://api.github.com/user/${userId}`,\n );\n return response.data.avatar_url;\n } catch (error) {\n console.warn(\"Failed to fetch GitHub avatar:\", error);\n return null;\n }\n}\n","import { SubmitOptions, submitRun } from \"./runs\";\nimport { ColumnRenderMode, DataFrame } from \"./types\";\n\nexport interface ValueDiffResult {\n summary: {\n total: number;\n added: number;\n removed: number;\n };\n data: DataFrame;\n}\n\nexport interface ValueDiffParams {\n model: string;\n primary_key: string | string[];\n columns?: string[];\n}\n\nexport async function submitValueDiff(\n params: ValueDiffParams,\n options?: SubmitOptions,\n) {\n return await submitRun(\"value_diff\", params, options);\n}\n\nexport type ValueDiffDetailResult = DataFrame;\n\nexport type ValueDiffDetailParams = ValueDiffParams;\n\nexport interface ValueDiffDetailViewOptions {\n changed_only?: boolean;\n pinned_columns?: string[];\n display_mode?: \"inline\" | \"side_by_side\";\n columnsRenderMode?: Record<string, ColumnRenderMode>;\n}\n\nexport async function submitValueDiffDetail(\n params: ValueDiffParams,\n options?: SubmitOptions,\n) {\n return await submitRun(\"value_diff_detail\", params, options);\n}\n","import { AxiosResponse } from \"axios\";\nimport { useEffect, useState } from \"react\";\nimport { axiosClient } from \"./axiosClient\";\n\ninterface VersionResponse {\n version: string;\n latestVersion: string;\n}\n\nexport function useVersionNumber() {\n const [version, setVersion] = useState(\"\");\n const [latestVersion, setLatestVersion] = useState(\"\");\n\n useEffect(() => {\n async function fetchVersion() {\n try {\n const { version, latestVersion } = (\n await axiosClient.get<never, AxiosResponse<VersionResponse>>(\n \"/api/version\",\n )\n ).data;\n\n setVersion(version);\n setLatestVersion(latestVersion);\n } catch (error) {\n console.error(\"Error fetching version number:\", error);\n }\n }\n void fetchVersion();\n }, []);\n\n return { version, latestVersion };\n}\n","const prefix = \"recce-\";\n\nexport const localStorageKeys = {\n bypassSaveOverwrite: `${prefix}-bypass-save-overwrite`,\n previewChangeFeedbackID: `${prefix}-preview-change-feedback`,\n prepareEnvGuideID: `${prefix}-prepare-env`,\n};\n","const prefix = \"recce\";\n\nexport const sessionStorageKeys = {\n recommendationIgnored: `${prefix}-recommendation-ignored`,\n recommendationShowed: `${prefix}-recommendation-showed`,\n prevRefreshTimeStamp: `${prefix}-prev-refresh-timestamp`,\n lineageNotificationDismissed: `${prefix}-lineage-notification-dismissed`,\n};\n"]}
|