@datarecce/ui 0.1.22 → 0.1.24

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 (56) hide show
  1. package/dist/{RecceCheckContext-DNKi97uE.js → RecceCheckContext-Cb41gigE.js} +4 -3
  2. package/dist/RecceCheckContext-Cb41gigE.js.map +1 -0
  3. package/dist/{RecceCheckContext-BETsmiD5.mjs → RecceCheckContext-CzsuuXxT.mjs} +4 -3
  4. package/dist/RecceCheckContext-CzsuuXxT.mjs.map +1 -0
  5. package/dist/api.d.mts +2 -2
  6. package/dist/api.d.ts +2 -2
  7. package/dist/api.js +12 -37
  8. package/dist/api.mjs +3 -29
  9. package/dist/{components-C735_oqD.mjs → components-BHxcVq0D.mjs} +1353 -69
  10. package/dist/components-BHxcVq0D.mjs.map +1 -0
  11. package/dist/{components-DeA4kqxK.js → components-Bmc5X473.js} +1557 -248
  12. package/dist/components-Bmc5X473.js.map +1 -0
  13. package/dist/components.d.mts +2 -2
  14. package/dist/components.d.ts +2 -2
  15. package/dist/components.js +8 -4
  16. package/dist/components.mjs +5 -5
  17. package/dist/{hooks-Ba-AoxcK.mjs → hooks-B0XGswIh.mjs} +3 -3
  18. package/dist/{hooks-Ba-AoxcK.mjs.map → hooks-B0XGswIh.mjs.map} +1 -1
  19. package/dist/{hooks-D6xvNXEc.js → hooks-C99PZcmB.js} +3 -3
  20. package/dist/{hooks-D6xvNXEc.js.map → hooks-C99PZcmB.js.map} +1 -1
  21. package/dist/hooks.d.mts +2 -2
  22. package/dist/hooks.d.ts +2 -2
  23. package/dist/hooks.js +4 -3
  24. package/dist/hooks.mjs +4 -4
  25. package/dist/{index-Sj_wOmNH.d.mts → index-04n48ic2.d.mts} +129 -105
  26. package/dist/index-04n48ic2.d.mts.map +1 -0
  27. package/dist/{index-DYduBYD8.d.ts → index-CgyLTrll.d.ts} +129 -105
  28. package/dist/index-CgyLTrll.d.ts.map +1 -0
  29. package/dist/index.d.mts +2 -2
  30. package/dist/index.d.ts +2 -2
  31. package/dist/index.js +20 -14
  32. package/dist/index.mjs +7 -7
  33. package/dist/{state-BjKRZMwY.js → state-Ct-DP81O.js} +108 -79
  34. package/dist/state-Ct-DP81O.js.map +1 -0
  35. package/dist/{state-BySLlIE7.mjs → state-CwepO01b.mjs} +91 -80
  36. package/dist/state-CwepO01b.mjs.map +1 -0
  37. package/dist/types.d.mts +1 -1
  38. package/dist/types.d.ts +1 -1
  39. package/dist/{user-Dt_n5IJX.js → version-BgsW-hXj.js} +50 -10
  40. package/dist/version-BgsW-hXj.js.map +1 -0
  41. package/dist/version-Bz2CiMHD.mjs +93 -0
  42. package/dist/version-Bz2CiMHD.mjs.map +1 -0
  43. package/package.json +5 -4
  44. package/dist/RecceCheckContext-BETsmiD5.mjs.map +0 -1
  45. package/dist/RecceCheckContext-DNKi97uE.js.map +0 -1
  46. package/dist/api.js.map +0 -1
  47. package/dist/api.mjs.map +0 -1
  48. package/dist/components-C735_oqD.mjs.map +0 -1
  49. package/dist/components-DeA4kqxK.js.map +0 -1
  50. package/dist/index-DYduBYD8.d.ts.map +0 -1
  51. package/dist/index-Sj_wOmNH.d.mts.map +0 -1
  52. package/dist/state-BjKRZMwY.js.map +0 -1
  53. package/dist/state-BySLlIE7.mjs.map +0 -1
  54. package/dist/user-BHOgMaBf.mjs +0 -65
  55. package/dist/user-BHOgMaBf.mjs.map +0 -1
  56. package/dist/user-Dt_n5IJX.js.map +0 -1
package/dist/types.d.mts CHANGED
@@ -1,3 +1,3 @@
1
1
 
2
- import { $n as ColumnRenderMode, G as RECCE_SUPPORT_CALENDAR_URL, H as PUBLIC_API_URL, J as isSchemaChanged, K as deltaPercentageString, Qn as AxiosQueryParams, Sr as isValueDiffRun, U as PUBLIC_CLOUD_WEB_URL, W as DisableTooltipMessages, X as buildQuery, Xn as RunFormProps, Y as buildDescription, Z as buildTitle, Zn as RunResultViewProps, _r as isRowCountRun, ar as RowObjectType, br as isTopKDiffRun, cr as SchemaDiffParams, dr as isProfileDiffRun, er as ColumnType, fr as isProfileRun, gr as isRowCountDiffRun, hr as isQueryRun, ir as RowDataTypes, lr as isHistogramDiffRun, mr as isQueryDiffRun, nr as LineageDiffParams, or as Run, pr as isQueryBaseRun, q as columnPrecisionSelectOptions, rr as RowData, sr as RunParamTypes, tr as DataFrame, ur as isLineageDiffRun, vr as isSchemaDiffRun, xr as isValueDiffDetailRun, yr as isSimpleRun } from "./index-Sj_wOmNH.mjs";
2
+ import { Cr as isRowCountDiffRun, Dr as isTopKDiffRun, Er as isSimpleRun, G as DisableTooltipMessages, J as columnPrecisionSelectOptions, K as RECCE_SUPPORT_CALENDAR_URL, Or as isValueDiffDetailRun, Q as buildTitle, Sr as isQueryRun, Tr as isSchemaDiffRun, U as PUBLIC_API_URL, W as PUBLIC_CLOUD_WEB_URL, X as buildDescription, Y as isSchemaChanged, Z as buildQuery, _r as isLineageDiffRun, ar as AxiosQueryParams, br as isQueryBaseRun, cr as DataFrame, dr as RowDataTypes, fr as RowObjectType, gr as isHistogramDiffRun, hr as SchemaDiffParams, ir as RunResultViewProps, kr as isValueDiffRun, lr as LineageDiffParams, mr as RunParamTypes, or as ColumnRenderMode, pr as Run, q as deltaPercentageString, rr as RunFormProps, sr as ColumnType, ur as RowData, vr as isProfileDiffRun, wr as isRowCountRun, xr as isQueryDiffRun, yr as isProfileRun } from "./index-04n48ic2.mjs";
3
3
  export { AxiosQueryParams, ColumnRenderMode, ColumnType, DataFrame, DisableTooltipMessages, LineageDiffParams, PUBLIC_API_URL, PUBLIC_CLOUD_WEB_URL, RECCE_SUPPORT_CALENDAR_URL, RowData, RowDataTypes, RowObjectType, Run, RunFormProps, RunParamTypes, RunResultViewProps, SchemaDiffParams, buildDescription, buildQuery, buildTitle, columnPrecisionSelectOptions, deltaPercentageString, isHistogramDiffRun, isLineageDiffRun, isProfileDiffRun, isProfileRun, isQueryBaseRun, isQueryDiffRun, isQueryRun, isRowCountDiffRun, isRowCountRun, isSchemaChanged, isSchemaDiffRun, isSimpleRun, isTopKDiffRun, isValueDiffDetailRun, isValueDiffRun };
package/dist/types.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
 
2
- import { $n as ColumnRenderMode, G as RECCE_SUPPORT_CALENDAR_URL, H as PUBLIC_API_URL, J as isSchemaChanged, K as deltaPercentageString, Qn as AxiosQueryParams, Sr as isValueDiffRun, U as PUBLIC_CLOUD_WEB_URL, W as DisableTooltipMessages, X as buildQuery, Xn as RunFormProps, Y as buildDescription, Z as buildTitle, Zn as RunResultViewProps, _r as isRowCountRun, ar as RowObjectType, br as isTopKDiffRun, cr as SchemaDiffParams, dr as isProfileDiffRun, er as ColumnType, fr as isProfileRun, gr as isRowCountDiffRun, hr as isQueryRun, ir as RowDataTypes, lr as isHistogramDiffRun, mr as isQueryDiffRun, nr as LineageDiffParams, or as Run, pr as isQueryBaseRun, q as columnPrecisionSelectOptions, rr as RowData, sr as RunParamTypes, tr as DataFrame, ur as isLineageDiffRun, vr as isSchemaDiffRun, xr as isValueDiffDetailRun, yr as isSimpleRun } from "./index-DYduBYD8.js";
2
+ import { Cr as isRowCountDiffRun, Dr as isTopKDiffRun, Er as isSimpleRun, G as DisableTooltipMessages, J as columnPrecisionSelectOptions, K as RECCE_SUPPORT_CALENDAR_URL, Or as isValueDiffDetailRun, Q as buildTitle, Sr as isQueryRun, Tr as isSchemaDiffRun, U as PUBLIC_API_URL, W as PUBLIC_CLOUD_WEB_URL, X as buildDescription, Y as isSchemaChanged, Z as buildQuery, _r as isLineageDiffRun, ar as AxiosQueryParams, br as isQueryBaseRun, cr as DataFrame, dr as RowDataTypes, fr as RowObjectType, gr as isHistogramDiffRun, hr as SchemaDiffParams, ir as RunResultViewProps, kr as isValueDiffRun, lr as LineageDiffParams, mr as RunParamTypes, or as ColumnRenderMode, pr as Run, q as deltaPercentageString, rr as RunFormProps, sr as ColumnType, ur as RowData, vr as isProfileDiffRun, wr as isRowCountRun, xr as isQueryDiffRun, yr as isProfileRun } from "./index-CgyLTrll.js";
3
3
  export { AxiosQueryParams, ColumnRenderMode, ColumnType, DataFrame, DisableTooltipMessages, LineageDiffParams, PUBLIC_API_URL, PUBLIC_CLOUD_WEB_URL, RECCE_SUPPORT_CALENDAR_URL, RowData, RowDataTypes, RowObjectType, Run, RunFormProps, RunParamTypes, RunResultViewProps, SchemaDiffParams, buildDescription, buildQuery, buildTitle, columnPrecisionSelectOptions, deltaPercentageString, isHistogramDiffRun, isLineageDiffRun, isProfileDiffRun, isProfileRun, isQueryBaseRun, isQueryDiffRun, isQueryRun, isRowCountDiffRun, isRowCountRun, isSchemaChanged, isSchemaDiffRun, isSimpleRun, isTopKDiffRun, isValueDiffDetailRun, isValueDiffRun };
@@ -1,11 +1,12 @@
1
1
  "use client"
2
- const require_state = require('./state-BjKRZMwY.js');
2
+ const require_state = require('./state-Ct-DP81O.js');
3
+ let react = require("react");
3
4
  let axios = require("axios");
4
5
  axios = require_state.__toESM(axios);
5
6
 
6
7
  //#region recce-source/js/src/lib/api/schemacheck.ts
7
- async function createSchemaDiffCheck(params) {
8
- return (await require_state.axiosClient.post("/api/checks", {
8
+ async function createSchemaDiffCheck(params, client = require_state.axiosClient) {
9
+ return (await client.post("/api/checks", {
9
10
  type: "schema_diff",
10
11
  params
11
12
  })).data;
@@ -13,8 +14,8 @@ async function createSchemaDiffCheck(params) {
13
14
 
14
15
  //#endregion
15
16
  //#region recce-source/js/src/lib/api/select.ts
16
- async function select(input) {
17
- return (await require_state.axiosClient.post(`/api/select`, input)).data;
17
+ async function select(input, client = require_state.axiosClient) {
18
+ return (await client.post(`/api/select`, input)).data;
18
19
  }
19
20
 
20
21
  //#endregion
@@ -38,15 +39,15 @@ const localStorageKeys = {
38
39
 
39
40
  //#endregion
40
41
  //#region recce-source/js/src/lib/api/connectToCloud.ts
41
- async function connectToCloud() {
42
- return (await require_state.axiosClient.post("/api/connect")).data;
42
+ async function connectToCloud(client = require_state.axiosClient) {
43
+ return (await client.post("/api/connect")).data;
43
44
  }
44
45
 
45
46
  //#endregion
46
47
  //#region recce-source/js/src/lib/api/user.ts
47
- async function fetchUser() {
48
+ async function fetchUser(client = require_state.axiosClient) {
48
49
  try {
49
- return (await require_state.axiosClient.get("/api/users")).data;
50
+ return (await client.get("/api/users")).data;
50
51
  } catch (error) {
51
52
  console.error("Error fetching user data:", error);
52
53
  throw error;
@@ -61,6 +62,33 @@ async function fetchGitHubAvatar(userId) {
61
62
  }
62
63
  }
63
64
 
65
+ //#endregion
66
+ //#region recce-source/js/src/lib/api/version.ts
67
+ async function getVersion(client = require_state.axiosClient) {
68
+ return (await client.get("/api/version")).data;
69
+ }
70
+ function useVersionNumber() {
71
+ const [version, setVersion] = (0, react.useState)("");
72
+ const [latestVersion, setLatestVersion] = (0, react.useState)("");
73
+ const { apiClient } = require_state.useApiConfig();
74
+ (0, react.useEffect)(() => {
75
+ async function fetchVersion() {
76
+ try {
77
+ const { version: version$1, latestVersion: latestVersion$1 } = await getVersion(apiClient);
78
+ setVersion(version$1);
79
+ setLatestVersion(latestVersion$1);
80
+ } catch (error) {
81
+ console.error("Error fetching version number:", error);
82
+ }
83
+ }
84
+ fetchVersion();
85
+ }, [apiClient]);
86
+ return {
87
+ version,
88
+ latestVersion
89
+ };
90
+ }
91
+
64
92
  //#endregion
65
93
  Object.defineProperty(exports, 'connectToCloud', {
66
94
  enumerable: true,
@@ -86,6 +114,12 @@ Object.defineProperty(exports, 'fetchUser', {
86
114
  return fetchUser;
87
115
  }
88
116
  });
117
+ Object.defineProperty(exports, 'getVersion', {
118
+ enumerable: true,
119
+ get: function () {
120
+ return getVersion;
121
+ }
122
+ });
89
123
  Object.defineProperty(exports, 'localStorageKeys', {
90
124
  enumerable: true,
91
125
  get: function () {
@@ -104,4 +138,10 @@ Object.defineProperty(exports, 'sessionStorageKeys', {
104
138
  return sessionStorageKeys;
105
139
  }
106
140
  });
107
- //# sourceMappingURL=user-Dt_n5IJX.js.map
141
+ Object.defineProperty(exports, 'useVersionNumber', {
142
+ enumerable: true,
143
+ get: function () {
144
+ return useVersionNumber;
145
+ }
146
+ });
147
+ //# sourceMappingURL=version-BgsW-hXj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-BgsW-hXj.js","names":["axiosClient","axiosClient","prefix","axiosClient","axiosClient","axiosClient","useApiConfig","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 { AxiosInstance, 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 client: AxiosInstance = axiosClient,\n): Promise<Check> {\n const response = await client.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 { AxiosInstance, 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(\n input: SelectInput,\n client: AxiosInstance = axiosClient,\n): Promise<SelectOutput> {\n return (\n await client.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 { AxiosInstance } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\nexport interface ConnectToCloud {\n connection_url: string;\n}\n\nexport async function connectToCloud(\n client: AxiosInstance = axiosClient,\n): Promise<ConnectToCloud> {\n const data = await client.post<ConnectToCloud>(\"/api/connect\");\n return data.data;\n}\n","import axios, { AxiosInstance, 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(\n client: AxiosInstance = axiosClient,\n): Promise<User> {\n try {\n const response = await client.get<never, AxiosResponse<User>>(\"/api/users\");\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 { AxiosInstance, AxiosResponse } from \"axios\";\nimport { useEffect, useState } from \"react\";\nimport { useApiConfig } from \"../hooks/ApiConfigContext\";\nimport { axiosClient } from \"./axiosClient\";\n\ninterface VersionResponse {\n version: string;\n latestVersion: string;\n}\n\nexport async function getVersion(\n client: AxiosInstance = axiosClient,\n): Promise<VersionResponse> {\n const response = await client.get<never, AxiosResponse<VersionResponse>>(\n \"/api/version\",\n );\n return response.data;\n}\n\nexport function useVersionNumber() {\n const [version, setVersion] = useState(\"\");\n const [latestVersion, setLatestVersion] = useState(\"\");\n const { apiClient } = useApiConfig();\n\n useEffect(() => {\n async function fetchVersion() {\n try {\n const { version, latestVersion } = await getVersion(apiClient);\n\n setVersion(version);\n setLatestVersion(latestVersion);\n } catch (error) {\n console.error(\"Error fetching version number:\", error);\n }\n }\n void fetchVersion();\n }, [apiClient]);\n\n return { version, latestVersion };\n}\n"],"mappings":";;;;;;;AAiBA,eAAsB,sBACpB,QACA,SAAwBA,2BACR;AAShB,SARiB,MAAM,OAAO,KAG5B,eAAe;EACf,MAAM;EACE;EACT,CAAC,EAEc;;;;;ACflB,eAAsB,OACpB,OACA,SAAwBC,2BACD;AACvB,SACE,MAAM,OAAO,KACX,eACA,MACD,EACD;;;;;ACvBJ,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;;;;ACCD,eAAsB,eACpB,SAAwBC,2BACC;AAEzB,SADa,MAAM,OAAO,KAAqB,eAAe,EAClD;;;;;ACMd,eAAsB,UACpB,SAAwBC,2BACT;AACf,KAAI;AAEF,UADiB,MAAM,OAAO,IAAgC,aAAa,EAC3D;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;;;;;;AC7BX,eAAsB,WACpB,SAAwBC,2BACE;AAI1B,SAHiB,MAAM,OAAO,IAC5B,eACD,EACe;;AAGlB,SAAgB,mBAAmB;CACjC,MAAM,CAAC,SAAS,kCAAuB,GAAG;CAC1C,MAAM,CAAC,eAAe,wCAA6B,GAAG;CACtD,MAAM,EAAE,cAAcC,4BAAc;AAEpC,4BAAgB;EACd,eAAe,eAAe;AAC5B,OAAI;IACF,MAAM,EAAE,oBAAS,mCAAkB,MAAM,WAAW,UAAU;AAE9D,eAAWC,UAAQ;AACnB,qBAAiBC,gBAAc;YACxB,OAAO;AACd,YAAQ,MAAM,kCAAkC,MAAM;;;AAG1D,EAAK,cAAc;IAClB,CAAC,UAAU,CAAC;AAEf,QAAO;EAAE;EAAS;EAAe"}
@@ -0,0 +1,93 @@
1
+ "use client"
2
+ import { Mn as axiosClient, St as useApiConfig } from "./state-CwepO01b.mjs";
3
+ import { useEffect, useState } from "react";
4
+ import axios, { AxiosInstance, AxiosResponse } from "axios";
5
+
6
+ //#region recce-source/js/src/lib/api/schemacheck.ts
7
+ async function createSchemaDiffCheck(params, client = axiosClient) {
8
+ return (await client.post("/api/checks", {
9
+ type: "schema_diff",
10
+ params
11
+ })).data;
12
+ }
13
+
14
+ //#endregion
15
+ //#region recce-source/js/src/lib/api/select.ts
16
+ async function select(input, client = axiosClient) {
17
+ return (await client.post(`/api/select`, input)).data;
18
+ }
19
+
20
+ //#endregion
21
+ //#region recce-source/js/src/lib/api/sessionStorageKeys.ts
22
+ const prefix$1 = "recce";
23
+ const sessionStorageKeys = {
24
+ recommendationIgnored: `${prefix$1}-recommendation-ignored`,
25
+ recommendationShowed: `${prefix$1}-recommendation-showed`,
26
+ prevRefreshTimeStamp: `${prefix$1}-prev-refresh-timestamp`,
27
+ lineageNotificationDismissed: `${prefix$1}-lineage-notification-dismissed`
28
+ };
29
+
30
+ //#endregion
31
+ //#region recce-source/js/src/lib/api/localStorageKeys.ts
32
+ const prefix = "recce-";
33
+ const localStorageKeys = {
34
+ bypassSaveOverwrite: `${prefix}-bypass-save-overwrite`,
35
+ previewChangeFeedbackID: `${prefix}-preview-change-feedback`,
36
+ prepareEnvGuideID: `${prefix}-prepare-env`
37
+ };
38
+
39
+ //#endregion
40
+ //#region recce-source/js/src/lib/api/connectToCloud.ts
41
+ async function connectToCloud(client = axiosClient) {
42
+ return (await client.post("/api/connect")).data;
43
+ }
44
+
45
+ //#endregion
46
+ //#region recce-source/js/src/lib/api/user.ts
47
+ async function fetchUser(client = axiosClient) {
48
+ try {
49
+ return (await client.get("/api/users")).data;
50
+ } catch (error) {
51
+ console.error("Error fetching user data:", error);
52
+ throw error;
53
+ }
54
+ }
55
+ async function fetchGitHubAvatar(userId) {
56
+ try {
57
+ return (await axios.get(`https://api.github.com/user/${userId}`)).data.avatar_url;
58
+ } catch (error) {
59
+ console.warn("Failed to fetch GitHub avatar:", error);
60
+ return null;
61
+ }
62
+ }
63
+
64
+ //#endregion
65
+ //#region recce-source/js/src/lib/api/version.ts
66
+ async function getVersion(client = axiosClient) {
67
+ return (await client.get("/api/version")).data;
68
+ }
69
+ function useVersionNumber() {
70
+ const [version, setVersion] = useState("");
71
+ const [latestVersion, setLatestVersion] = useState("");
72
+ const { apiClient } = useApiConfig();
73
+ useEffect(() => {
74
+ async function fetchVersion() {
75
+ try {
76
+ const { version: version$1, latestVersion: latestVersion$1 } = await getVersion(apiClient);
77
+ setVersion(version$1);
78
+ setLatestVersion(latestVersion$1);
79
+ } catch (error) {
80
+ console.error("Error fetching version number:", error);
81
+ }
82
+ }
83
+ fetchVersion();
84
+ }, [apiClient]);
85
+ return {
86
+ version,
87
+ latestVersion
88
+ };
89
+ }
90
+
91
+ //#endregion
92
+ export { connectToCloud as a, select as c, fetchUser as i, createSchemaDiffCheck as l, useVersionNumber as n, localStorageKeys as o, fetchGitHubAvatar as r, sessionStorageKeys as s, getVersion as t };
93
+ //# sourceMappingURL=version-Bz2CiMHD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-Bz2CiMHD.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 { AxiosInstance, 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 client: AxiosInstance = axiosClient,\n): Promise<Check> {\n const response = await client.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 { AxiosInstance, 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(\n input: SelectInput,\n client: AxiosInstance = axiosClient,\n): Promise<SelectOutput> {\n return (\n await client.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 { AxiosInstance } from \"axios\";\nimport { axiosClient } from \"./axiosClient\";\n\nexport interface ConnectToCloud {\n connection_url: string;\n}\n\nexport async function connectToCloud(\n client: AxiosInstance = axiosClient,\n): Promise<ConnectToCloud> {\n const data = await client.post<ConnectToCloud>(\"/api/connect\");\n return data.data;\n}\n","import axios, { AxiosInstance, 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(\n client: AxiosInstance = axiosClient,\n): Promise<User> {\n try {\n const response = await client.get<never, AxiosResponse<User>>(\"/api/users\");\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 { AxiosInstance, AxiosResponse } from \"axios\";\nimport { useEffect, useState } from \"react\";\nimport { useApiConfig } from \"../hooks/ApiConfigContext\";\nimport { axiosClient } from \"./axiosClient\";\n\ninterface VersionResponse {\n version: string;\n latestVersion: string;\n}\n\nexport async function getVersion(\n client: AxiosInstance = axiosClient,\n): Promise<VersionResponse> {\n const response = await client.get<never, AxiosResponse<VersionResponse>>(\n \"/api/version\",\n );\n return response.data;\n}\n\nexport function useVersionNumber() {\n const [version, setVersion] = useState(\"\");\n const [latestVersion, setLatestVersion] = useState(\"\");\n const { apiClient } = useApiConfig();\n\n useEffect(() => {\n async function fetchVersion() {\n try {\n const { version, latestVersion } = await getVersion(apiClient);\n\n setVersion(version);\n setLatestVersion(latestVersion);\n } catch (error) {\n console.error(\"Error fetching version number:\", error);\n }\n }\n void fetchVersion();\n }, [apiClient]);\n\n return { version, latestVersion };\n}\n"],"mappings":";;;;;;AAiBA,eAAsB,sBACpB,QACA,SAAwB,aACR;AAShB,SARiB,MAAM,OAAO,KAG5B,eAAe;EACf,MAAM;EACE;EACT,CAAC,EAEc;;;;;ACflB,eAAsB,OACpB,OACA,SAAwB,aACD;AACvB,SACE,MAAM,OAAO,KACX,eACA,MACD,EACD;;;;;ACvBJ,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;;;;ACCD,eAAsB,eACpB,SAAwB,aACC;AAEzB,SADa,MAAM,OAAO,KAAqB,eAAe,EAClD;;;;;ACMd,eAAsB,UACpB,SAAwB,aACT;AACf,KAAI;AAEF,UADiB,MAAM,OAAO,IAAgC,aAAa,EAC3D;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;;;;;;AC7BX,eAAsB,WACpB,SAAwB,aACE;AAI1B,SAHiB,MAAM,OAAO,IAC5B,eACD,EACe;;AAGlB,SAAgB,mBAAmB;CACjC,MAAM,CAAC,SAAS,cAAc,SAAS,GAAG;CAC1C,MAAM,CAAC,eAAe,oBAAoB,SAAS,GAAG;CACtD,MAAM,EAAE,cAAc,cAAc;AAEpC,iBAAgB;EACd,eAAe,eAAe;AAC5B,OAAI;IACF,MAAM,EAAE,oBAAS,mCAAkB,MAAM,WAAW,UAAU;AAE9D,eAAWC,UAAQ;AACnB,qBAAiBC,gBAAc;YACxB,OAAO;AACd,YAAQ,MAAM,kCAAkC,MAAM;;;AAG1D,EAAK,cAAc;IAClB,CAAC,UAAU,CAAC;AAEf,QAAO;EAAE;EAAS;EAAe"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datarecce/ui",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
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",
@@ -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,7 @@
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",
96
+ "@mui/material": "^7.3.6",
95
97
  "@sentry/react": "^10.32.1",
96
98
  "@types/js-cookie": "^3.0.6",
97
99
  "@uiw/codemirror-theme-github": "^4.25.4",
@@ -107,7 +109,6 @@
107
109
  "html2canvas-pro": "^1.6.1",
108
110
  "js-cookie": "^3.0.5",
109
111
  "lodash": "^4.17.21",
110
- "next-themes": "^0.4.6",
111
112
  "react-chartjs-2": "^5.3.1",
112
113
  "react-icons": "^5.5.0",
113
114
  "react-markdown": "^10.1.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecceCheckContext-BETsmiD5.mjs","names":["nodeCount"],"sources":["../recce-source/js/src/lib/hooks/RecceQueryContext.tsx","../recce-source/js/src/lib/hooks/RecceShareStateContext.tsx","../recce-source/js/src/components/lineage/useValueDiffAlertDialog.tsx","../recce-source/js/src/lib/hooks/useCheckToast.tsx","../recce-source/js/src/lib/hooks/RecceCheckContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from \"react\";\n\nexport interface QueryContext {\n sqlQuery: string;\n setSqlQuery: (sqlQuery: string) => void;\n primaryKeys: string[] | undefined;\n setPrimaryKeys: (primaryKeys: string[] | undefined) => void;\n isCustomQueries: boolean;\n setCustomQueries: (isCustomQueries: boolean) => void;\n baseSqlQuery?: string;\n setBaseSqlQuery?: (baseSqlQuery: string) => void;\n}\n\nexport const defaultSqlQuery = 'select * from {{ ref(\"mymodel\") }}';\n\nconst defaultQueryContext: QueryContext = {\n sqlQuery: defaultSqlQuery,\n setSqlQuery: () => {\n return void 0;\n },\n primaryKeys: undefined,\n setPrimaryKeys: () => {\n return void 0;\n },\n isCustomQueries: false,\n setCustomQueries: () => {\n return void 0;\n },\n baseSqlQuery: defaultSqlQuery,\n setBaseSqlQuery: () => {\n return void 0;\n },\n};\n\nconst RecceQueryContext = createContext(defaultQueryContext);\n\ninterface QueryContextProps {\n children: React.ReactNode;\n}\n\nexport function RecceQueryContextProvider({ children }: QueryContextProps) {\n const [sqlQuery, setSqlQuery] = React.useState<string>(defaultSqlQuery);\n const [baseSqlQuery, setBaseSqlQuery] =\n React.useState<string>(defaultSqlQuery);\n const [isCustomQueries, setCustomQueries] = React.useState<boolean>(false);\n const [primaryKeys, setPrimaryKeys] = React.useState<string[] | undefined>();\n return (\n <RecceQueryContext.Provider\n value={{\n setSqlQuery,\n sqlQuery,\n setPrimaryKeys,\n primaryKeys,\n isCustomQueries,\n setCustomQueries,\n baseSqlQuery,\n setBaseSqlQuery,\n }}\n >\n {children}\n </RecceQueryContext.Provider>\n );\n}\n\nexport const useRecceQueryContext = () => useContext(RecceQueryContext);\n\nexport interface RowCountStateContext {\n isNodesFetching: string[];\n setIsNodesFetching: (nodes: string[]) => void;\n}\n\nconst defaultRowCountStateContext: RowCountStateContext = {\n isNodesFetching: [],\n setIsNodesFetching: () => {\n return void 0;\n },\n};\n\nconst RowCountStateContext = createContext(defaultRowCountStateContext);\n\ninterface RowCountStateContextProps {\n children: React.ReactNode;\n}\n\nexport function RowCountStateContextProvider({\n children,\n}: RowCountStateContextProps) {\n const [isNodesFetching, setIsNodesFetching] = React.useState<string[]>([]);\n return (\n <RowCountStateContext.Provider\n value={{ isNodesFetching, setIsNodesFetching }}\n >\n {children}\n </RowCountStateContext.Provider>\n );\n}\n\nexport const useRowCountStateContext = () => useContext(RowCountStateContext);\n","import React, { createContext, useContext, useState } from \"react\";\nimport { shareState } from \"@/lib/api/state\";\n\ninterface ShareStateProps {\n shareUrl?: string;\n isLoading: boolean;\n error?: string;\n handleShareClick: () => Promise<void>;\n}\n\nconst ShareState = createContext<ShareStateProps | undefined>(undefined);\n\nexport function RecceShareStateContextProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const [shareUrl, setShareUrl] = useState<string>();\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>();\n\n const handleShareClick = async () => {\n setIsLoading(true);\n setError(undefined);\n setShareUrl(undefined);\n try {\n const response = await shareState();\n if (response.status !== \"success\") {\n setError(response.message);\n return;\n }\n setShareUrl(response.share_url);\n } catch (err) {\n setError((err as Error).message);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <ShareState.Provider\n value={{ shareUrl, isLoading, error, handleShareClick }}\n >\n {children}\n </ShareState.Provider>\n );\n}\n\nexport const useRecceShareStateContext = () => {\n const context = useContext(ShareState);\n if (!context) {\n throw new Error(\n \"useRecceShareStateContext must be used within a RecceShareStateContextProvider\",\n );\n }\n return context;\n};\n","import Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport MuiDialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Stack from \"@mui/material/Stack\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport { IoClose } from \"react-icons/io5\";\nimport {\n EXPLORE_ACTION,\n EXPLORE_FORM_EVENT,\n trackExploreActionForm,\n} from \"@/lib/api/track\";\n\nfunction useValueDiffAlertDialog() {\n const [open, setOpen] = useState(false);\n const [nodeCount, setNodeCount] = useState(0);\n const [resolvePromise, setResolvePromise] =\n useState<(value: boolean) => void>();\n const cancelRef = useRef<HTMLButtonElement>(null);\n\n const confirm = useCallback((nodeCount: number) => {\n setNodeCount(nodeCount);\n return new Promise<boolean>((resolve) => {\n setResolvePromise(() => resolve);\n setOpen(true);\n });\n }, []);\n\n const handleConfirm = () => {\n trackExploreActionForm({\n action: EXPLORE_ACTION.VALUE_DIFF,\n event: EXPLORE_FORM_EVENT.EXECUTE,\n });\n resolvePromise?.(true);\n setOpen(false);\n };\n\n const handleCancel = () => {\n trackExploreActionForm({\n action: EXPLORE_ACTION.VALUE_DIFF,\n event: EXPLORE_FORM_EVENT.CANCEL,\n });\n resolvePromise?.(false);\n setOpen(false);\n };\n\n const ValueDiffAlertDialog = (\n <MuiDialog\n open={open}\n onClose={handleCancel}\n maxWidth=\"md\"\n fullWidth\n aria-labelledby=\"value-diff-alert-dialog-title\"\n >\n <DialogTitle\n id=\"value-diff-alert-dialog-title\"\n sx={{ fontSize: \"1.125rem\", fontWeight: \"bold\" }}\n >\n Value Diff on {nodeCount} nodes\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={handleCancel}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: \"grey.500\",\n }}\n >\n <IoClose />\n </IconButton>\n <DialogContent>\n <Stack spacing=\"20px\">\n <Box>\n Value diff will be executed on {nodeCount} nodes in the Lineage,\n which can add extra costs to your bill.\n </Box>\n </Stack>\n </DialogContent>\n <DialogActions sx={{ gap: 0.5 }}>\n <Button\n ref={cancelRef}\n onClick={handleCancel}\n variant=\"outlined\"\n color=\"neutral\"\n >\n Cancel\n </Button>\n <Button\n color=\"iochmara\"\n variant=\"contained\"\n onClick={handleConfirm}\n sx={{ ml: 1.5 }}\n >\n Execute\n </Button>\n </DialogActions>\n </MuiDialog>\n );\n\n return { confirm, AlertDialog: ValueDiffAlertDialog };\n}\n\nexport default useValueDiffAlertDialog;\n","import { toaster } from \"@/components/ui/toaster\";\n\nexport function useCheckToast() {\n function markedAsApprovedToast() {\n toaster.create({\n title: \"Marked as approved\",\n type: \"success\",\n duration: 2000,\n });\n }\n return {\n markedAsApprovedToast,\n };\n}\n","import React, { createContext, useContext } from \"react\";\n\nexport interface CheckContext {\n latestSelectedCheckId: string;\n setLatestSelectedCheckId: (selectCheckId: string) => void;\n}\n\ninterface CheckContextProps {\n children: React.ReactNode;\n}\n\nconst RecceCheckContext = createContext<CheckContext>({\n latestSelectedCheckId: \"\",\n setLatestSelectedCheckId: () => {\n return void 0;\n },\n});\n\nexport function RecceCheckContextProvider({ children }: CheckContextProps) {\n const [selectCheckId, setSelectCheckId] = React.useState<string>(\"\");\n return (\n <RecceCheckContext.Provider\n value={{\n setLatestSelectedCheckId: setSelectCheckId,\n latestSelectedCheckId: selectCheckId,\n }}\n >\n {children}\n </RecceCheckContext.Provider>\n );\n}\n\nexport const useRecceCheckContext = () => useContext(RecceCheckContext);\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecceCheckContext-DNKi97uE.js","names":["React","shareState","nodeCount","EXPLORE_ACTION","EXPLORE_FORM_EVENT","MuiDialog","DialogTitle","IconButton","IoClose","DialogContent","Stack","Box","DialogActions","Button","React"],"sources":["../recce-source/js/src/lib/hooks/RecceQueryContext.tsx","../recce-source/js/src/lib/hooks/RecceShareStateContext.tsx","../recce-source/js/src/components/lineage/useValueDiffAlertDialog.tsx","../recce-source/js/src/lib/hooks/useCheckToast.tsx","../recce-source/js/src/lib/hooks/RecceCheckContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from \"react\";\n\nexport interface QueryContext {\n sqlQuery: string;\n setSqlQuery: (sqlQuery: string) => void;\n primaryKeys: string[] | undefined;\n setPrimaryKeys: (primaryKeys: string[] | undefined) => void;\n isCustomQueries: boolean;\n setCustomQueries: (isCustomQueries: boolean) => void;\n baseSqlQuery?: string;\n setBaseSqlQuery?: (baseSqlQuery: string) => void;\n}\n\nexport const defaultSqlQuery = 'select * from {{ ref(\"mymodel\") }}';\n\nconst defaultQueryContext: QueryContext = {\n sqlQuery: defaultSqlQuery,\n setSqlQuery: () => {\n return void 0;\n },\n primaryKeys: undefined,\n setPrimaryKeys: () => {\n return void 0;\n },\n isCustomQueries: false,\n setCustomQueries: () => {\n return void 0;\n },\n baseSqlQuery: defaultSqlQuery,\n setBaseSqlQuery: () => {\n return void 0;\n },\n};\n\nconst RecceQueryContext = createContext(defaultQueryContext);\n\ninterface QueryContextProps {\n children: React.ReactNode;\n}\n\nexport function RecceQueryContextProvider({ children }: QueryContextProps) {\n const [sqlQuery, setSqlQuery] = React.useState<string>(defaultSqlQuery);\n const [baseSqlQuery, setBaseSqlQuery] =\n React.useState<string>(defaultSqlQuery);\n const [isCustomQueries, setCustomQueries] = React.useState<boolean>(false);\n const [primaryKeys, setPrimaryKeys] = React.useState<string[] | undefined>();\n return (\n <RecceQueryContext.Provider\n value={{\n setSqlQuery,\n sqlQuery,\n setPrimaryKeys,\n primaryKeys,\n isCustomQueries,\n setCustomQueries,\n baseSqlQuery,\n setBaseSqlQuery,\n }}\n >\n {children}\n </RecceQueryContext.Provider>\n );\n}\n\nexport const useRecceQueryContext = () => useContext(RecceQueryContext);\n\nexport interface RowCountStateContext {\n isNodesFetching: string[];\n setIsNodesFetching: (nodes: string[]) => void;\n}\n\nconst defaultRowCountStateContext: RowCountStateContext = {\n isNodesFetching: [],\n setIsNodesFetching: () => {\n return void 0;\n },\n};\n\nconst RowCountStateContext = createContext(defaultRowCountStateContext);\n\ninterface RowCountStateContextProps {\n children: React.ReactNode;\n}\n\nexport function RowCountStateContextProvider({\n children,\n}: RowCountStateContextProps) {\n const [isNodesFetching, setIsNodesFetching] = React.useState<string[]>([]);\n return (\n <RowCountStateContext.Provider\n value={{ isNodesFetching, setIsNodesFetching }}\n >\n {children}\n </RowCountStateContext.Provider>\n );\n}\n\nexport const useRowCountStateContext = () => useContext(RowCountStateContext);\n","import React, { createContext, useContext, useState } from \"react\";\nimport { shareState } from \"@/lib/api/state\";\n\ninterface ShareStateProps {\n shareUrl?: string;\n isLoading: boolean;\n error?: string;\n handleShareClick: () => Promise<void>;\n}\n\nconst ShareState = createContext<ShareStateProps | undefined>(undefined);\n\nexport function RecceShareStateContextProvider({\n children,\n}: {\n children: React.ReactNode;\n}) {\n const [shareUrl, setShareUrl] = useState<string>();\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>();\n\n const handleShareClick = async () => {\n setIsLoading(true);\n setError(undefined);\n setShareUrl(undefined);\n try {\n const response = await shareState();\n if (response.status !== \"success\") {\n setError(response.message);\n return;\n }\n setShareUrl(response.share_url);\n } catch (err) {\n setError((err as Error).message);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <ShareState.Provider\n value={{ shareUrl, isLoading, error, handleShareClick }}\n >\n {children}\n </ShareState.Provider>\n );\n}\n\nexport const useRecceShareStateContext = () => {\n const context = useContext(ShareState);\n if (!context) {\n throw new Error(\n \"useRecceShareStateContext must be used within a RecceShareStateContextProvider\",\n );\n }\n return context;\n};\n","import Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport MuiDialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Stack from \"@mui/material/Stack\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport { IoClose } from \"react-icons/io5\";\nimport {\n EXPLORE_ACTION,\n EXPLORE_FORM_EVENT,\n trackExploreActionForm,\n} from \"@/lib/api/track\";\n\nfunction useValueDiffAlertDialog() {\n const [open, setOpen] = useState(false);\n const [nodeCount, setNodeCount] = useState(0);\n const [resolvePromise, setResolvePromise] =\n useState<(value: boolean) => void>();\n const cancelRef = useRef<HTMLButtonElement>(null);\n\n const confirm = useCallback((nodeCount: number) => {\n setNodeCount(nodeCount);\n return new Promise<boolean>((resolve) => {\n setResolvePromise(() => resolve);\n setOpen(true);\n });\n }, []);\n\n const handleConfirm = () => {\n trackExploreActionForm({\n action: EXPLORE_ACTION.VALUE_DIFF,\n event: EXPLORE_FORM_EVENT.EXECUTE,\n });\n resolvePromise?.(true);\n setOpen(false);\n };\n\n const handleCancel = () => {\n trackExploreActionForm({\n action: EXPLORE_ACTION.VALUE_DIFF,\n event: EXPLORE_FORM_EVENT.CANCEL,\n });\n resolvePromise?.(false);\n setOpen(false);\n };\n\n const ValueDiffAlertDialog = (\n <MuiDialog\n open={open}\n onClose={handleCancel}\n maxWidth=\"md\"\n fullWidth\n aria-labelledby=\"value-diff-alert-dialog-title\"\n >\n <DialogTitle\n id=\"value-diff-alert-dialog-title\"\n sx={{ fontSize: \"1.125rem\", fontWeight: \"bold\" }}\n >\n Value Diff on {nodeCount} nodes\n </DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={handleCancel}\n sx={{\n position: \"absolute\",\n right: 8,\n top: 8,\n color: \"grey.500\",\n }}\n >\n <IoClose />\n </IconButton>\n <DialogContent>\n <Stack spacing=\"20px\">\n <Box>\n Value diff will be executed on {nodeCount} nodes in the Lineage,\n which can add extra costs to your bill.\n </Box>\n </Stack>\n </DialogContent>\n <DialogActions sx={{ gap: 0.5 }}>\n <Button\n ref={cancelRef}\n onClick={handleCancel}\n variant=\"outlined\"\n color=\"neutral\"\n >\n Cancel\n </Button>\n <Button\n color=\"iochmara\"\n variant=\"contained\"\n onClick={handleConfirm}\n sx={{ ml: 1.5 }}\n >\n Execute\n </Button>\n </DialogActions>\n </MuiDialog>\n );\n\n return { confirm, AlertDialog: ValueDiffAlertDialog };\n}\n\nexport default useValueDiffAlertDialog;\n","import { toaster } from \"@/components/ui/toaster\";\n\nexport function useCheckToast() {\n function markedAsApprovedToast() {\n toaster.create({\n title: \"Marked as approved\",\n type: \"success\",\n duration: 2000,\n });\n }\n return {\n markedAsApprovedToast,\n };\n}\n","import React, { createContext, useContext } from \"react\";\n\nexport interface CheckContext {\n latestSelectedCheckId: string;\n setLatestSelectedCheckId: (selectCheckId: string) => void;\n}\n\ninterface CheckContextProps {\n children: React.ReactNode;\n}\n\nconst RecceCheckContext = createContext<CheckContext>({\n latestSelectedCheckId: \"\",\n setLatestSelectedCheckId: () => {\n return void 0;\n },\n});\n\nexport function RecceCheckContextProvider({ children }: CheckContextProps) {\n const [selectCheckId, setSelectCheckId] = React.useState<string>(\"\");\n return (\n <RecceCheckContext.Provider\n value={{\n setLatestSelectedCheckId: setSelectCheckId,\n latestSelectedCheckId: selectCheckId,\n }}\n >\n {children}\n </RecceCheckContext.Provider>\n );\n}\n\nexport const useRecceCheckContext = () => useContext(RecceCheckContext);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAa,kBAAkB;AAqB/B,MAAM,6CAnBoC;CACxC,UAAU;CACV,mBAAmB;CAGnB,aAAa;CACb,sBAAsB;CAGtB,iBAAiB;CACjB,wBAAwB;CAGxB,cAAc;CACd,uBAAuB;CAGxB,CAE2D;AAM5D,SAAgB,0BAA0B,EAAE,YAA+B;CACzE,MAAM,CAAC,UAAU,eAAeA,cAAM,SAAiB,gBAAgB;CACvE,MAAM,CAAC,cAAc,mBACnBA,cAAM,SAAiB,gBAAgB;CACzC,MAAM,CAAC,iBAAiB,oBAAoBA,cAAM,SAAkB,MAAM;CAC1E,MAAM,CAAC,aAAa,kBAAkBA,cAAM,UAAgC;AAC5E,QACE,2CAAC,kBAAkB;EACjB,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EAEA;GAC0B;;AAIjC,MAAa,mDAAwC,kBAAkB;AAcvE,MAAM,gDAPoD;CACxD,iBAAiB,EAAE;CACnB,0BAA0B;CAG3B,CAEsE;AAMvE,SAAgB,6BAA6B,EAC3C,YAC4B;CAC5B,MAAM,CAAC,iBAAiB,sBAAsBA,cAAM,SAAmB,EAAE,CAAC;AAC1E,QACE,2CAAC,qBAAqB;EACpB,OAAO;GAAE;GAAiB;GAAoB;EAE7C;GAC6B;;AAIpC,MAAa,sDAA2C,qBAAqB;;;;ACvF7E,MAAM,sCAAwD,OAAU;AAExE,SAAgB,+BAA+B,EAC7C,YAGC;CACD,MAAM,CAAC,UAAU,oCAAiC;CAClD,MAAM,CAAC,WAAW,oCAAyB,MAAM;CACjD,MAAM,CAAC,OAAO,iCAA8B;CAE5C,MAAM,mBAAmB,YAAY;AACnC,eAAa,KAAK;AAClB,WAAS,OAAU;AACnB,cAAY,OAAU;AACtB,MAAI;GACF,MAAM,WAAW,MAAMC,0BAAY;AACnC,OAAI,SAAS,WAAW,WAAW;AACjC,aAAS,SAAS,QAAQ;AAC1B;;AAEF,eAAY,SAAS,UAAU;WACxB,KAAK;AACZ,YAAU,IAAc,QAAQ;YACxB;AACR,gBAAa,MAAM;;;AAIvB,QACE,2CAAC,WAAW;EACV,OAAO;GAAE;GAAU;GAAW;GAAO;GAAkB;EAEtD;GACmB;;AAI1B,MAAa,kCAAkC;CAC7C,MAAM,gCAAqB,WAAW;AACtC,KAAI,CAAC,QACH,OAAM,IAAI,MACR,iFACD;AAEH,QAAO;;;;;ACvCT,SAAS,0BAA0B;CACjC,MAAM,CAAC,MAAM,+BAAoB,MAAM;CACvC,MAAM,CAAC,WAAW,oCAAyB,EAAE;CAC7C,MAAM,CAAC,gBAAgB,0CACe;CACtC,MAAM,8BAAsC,KAAK;CAEjD,MAAM,kCAAuB,gBAAsB;AACjD,eAAaC,YAAU;AACvB,SAAO,IAAI,SAAkB,YAAY;AACvC,2BAAwB,QAAQ;AAChC,WAAQ,KAAK;IACb;IACD,EAAE,CAAC;CAEN,MAAM,sBAAsB;AAC1B,uCAAuB;GACrB,QAAQC,6BAAe;GACvB,OAAOC,iCAAmB;GAC3B,CAAC;AACF,mBAAiB,KAAK;AACtB,UAAQ,MAAM;;CAGhB,MAAM,qBAAqB;AACzB,uCAAuB;GACrB,QAAQD,6BAAe;GACvB,OAAOC,iCAAmB;GAC3B,CAAC;AACF,mBAAiB,MAAM;AACvB,UAAQ,MAAM;;AA0DhB,QAAO;EAAE;EAAS,aAtDhB,4CAACC;GACO;GACN,SAAS;GACT,UAAS;GACT;GACA,mBAAgB;;IAEhB,4CAACC;KACC,IAAG;KACH,IAAI;MAAE,UAAU;MAAY,YAAY;MAAQ;;MACjD;MACgB;MAAU;;MACb;IACd,2CAACC;KACC,cAAW;KACX,SAAS;KACT,IAAI;MACF,UAAU;MACV,OAAO;MACP,KAAK;MACL,OAAO;MACR;eAED,2CAACC,4BAAU;MACA;IACb,2CAACC,iDACC,2CAACC;KAAM,SAAQ;eACb,4CAACC;MAAI;MAC6B;MAAU;SAEtC;MACA,GACM;IAChB,4CAACC;KAAc,IAAI,EAAE,KAAK,IAAK;gBAC7B,2CAACC;MACC,KAAK;MACL,SAAS;MACT,SAAQ;MACR,OAAM;gBACP;OAEQ,EACT,2CAACA;MACC,OAAM;MACN,SAAQ;MACR,SAAS;MACT,IAAI,EAAE,IAAI,KAAK;gBAChB;OAEQ;MACK;;IACN;EAGuC;;AAGvD,sCAAe;;;;ACzGf,SAAgB,gBAAgB;CAC9B,SAAS,wBAAwB;AAC/B,wBAAQ,OAAO;GACb,OAAO;GACP,MAAM;GACN,UAAU;GACX,CAAC;;AAEJ,QAAO,EACL,uBACD;;;;;ACDH,MAAM,6CAAgD;CACpD,uBAAuB;CACvB,gCAAgC;CAGjC,CAAC;AAEF,SAAgB,0BAA0B,EAAE,YAA+B;CACzE,MAAM,CAAC,eAAe,oBAAoBC,cAAM,SAAiB,GAAG;AACpE,QACE,2CAAC,kBAAkB;EACjB,OAAO;GACL,0BAA0B;GAC1B,uBAAuB;GACxB;EAEA;GAC0B;;AAIjC,MAAa,mDAAwC,kBAAkB"}
package/dist/api.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","names":["axiosClient","version","latestVersion"],"sources":["../recce-source/js/src/lib/api/version.ts"],"sourcesContent":["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":";;;;;;;;AASA,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,MAAMA,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/dist/api.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.mjs","names":["version","latestVersion"],"sources":["../recce-source/js/src/lib/api/version.ts"],"sourcesContent":["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":";;;;;;;;AASA,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,eAAWA,UAAQ;AACnB,qBAAiBC,gBAAc;YACxB,OAAO;AACd,YAAQ,MAAM,kCAAkC,MAAM;;;AAG1D,EAAK,cAAc;IAClB,EAAE,CAAC;AAEN,QAAO;EAAE;EAAS;EAAe"}