@datarecce/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
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 =\n | \"raw\"\n | \"percent\"\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9;\n\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 { 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(): Promise<RunsAggregated> {\n // input should be AggregateRunsIn\n const response = await axiosClient.post<\n unknown,\n AxiosResponse<RunsAggregated>\n >(`/api/runs/aggregate`, {});\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 { 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(): Promise<RecceServerFlags> {\n return (\n await axiosClient.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(): Promise<void> {\n try {\n await axiosClient.post<never, AxiosResponse<never>>(\n \"/api/onboarding/completed\",\n );\n } catch (_error) {\n // skip any errors\n }\n}\n\nexport async function markRelaunchHintCompleted(): Promise<void> {\n try {\n await axiosClient.post<never, AxiosResponse<never>>(\n \"/api/relaunch-hint/completed\",\n );\n } catch (_error) {\n // skip any errors\n }\n}\n","import { AxiosError, 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(): Promise<ServerInfoResult> {\n return (\n await axiosClient.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"]}
package/dist/api.mjs ADDED
@@ -0,0 +1,437 @@
1
+ import { QueryClient, useQuery } from '@tanstack/react-query';
2
+ import axios, { AxiosError, isAxiosError } from 'axios';
3
+ import '@amplitude/unified';
4
+ import { useState, useEffect } from 'react';
5
+
6
+ // recce-source/js/src/lib/const.ts
7
+ var apiUrl = process.env.NEXT_PUBLIC_API_URL;
8
+ apiUrl ??= typeof window !== "undefined" ? window.location.origin : "";
9
+ var PUBLIC_API_URL = apiUrl;
10
+ process.env.NEXT_PUBLIC_CLOUD_WEB_URL;
11
+
12
+ // recce-source/js/src/lib/api/axiosClient.ts
13
+ var axiosClient = axios.create({
14
+ baseURL: PUBLIC_API_URL
15
+ });
16
+ var reactQueryClient = new QueryClient();
17
+
18
+ // recce-source/js/src/lib/api/types.ts
19
+ function isQueryRun(run) {
20
+ return run.type === "query";
21
+ }
22
+
23
+ // recce-source/js/src/lib/api/runs.ts
24
+ function mutateAddKey(run) {
25
+ if (run.result == null) {
26
+ return run;
27
+ }
28
+ if (isQueryRun(run)) {
29
+ run.result.columns = run.result.columns.map((c) => {
30
+ if (c.key) {
31
+ return c;
32
+ }
33
+ c.key = c.name;
34
+ return c;
35
+ });
36
+ }
37
+ return run;
38
+ }
39
+ async function submitRun(type, params, options) {
40
+ const track_props = options?.trackProps ? { ...options.trackProps } : {};
41
+ const response = await axiosClient.post("/api/runs", {
42
+ type,
43
+ params,
44
+ nowait: options?.nowait,
45
+ track_props
46
+ });
47
+ return response.data;
48
+ }
49
+ async function getRun(runId) {
50
+ const response = await axiosClient.get(
51
+ `/api/runs/${runId}`
52
+ );
53
+ return response.data;
54
+ }
55
+ async function waitRun(runId, timeout) {
56
+ const response = await axiosClient.get(
57
+ `/api/runs/${runId}/wait`,
58
+ {
59
+ params: {
60
+ timeout
61
+ }
62
+ }
63
+ );
64
+ return mutateAddKey(response.data);
65
+ }
66
+ async function cancelRun(runId) {
67
+ return await axiosClient.post(
68
+ `/api/runs/${runId}/cancel`
69
+ );
70
+ }
71
+ async function submitRunFromCheck(checkId, options) {
72
+ const response = await axiosClient.post(`/api/checks/${checkId}/run`, {
73
+ nowait: options?.nowait
74
+ });
75
+ return response.data;
76
+ }
77
+ async function searchRuns(type, params, limit) {
78
+ const response = await axiosClient.post(
79
+ `/api/runs/search`,
80
+ {
81
+ type,
82
+ params,
83
+ limit
84
+ }
85
+ );
86
+ return response.data;
87
+ }
88
+ async function listRuns() {
89
+ const response = await axiosClient.get(
90
+ "/api/runs"
91
+ );
92
+ return response.data;
93
+ }
94
+ async function aggregateRuns() {
95
+ const response = await axiosClient.post(`/api/runs/aggregate`, {});
96
+ return response.data;
97
+ }
98
+
99
+ // recce-source/js/src/lib/api/adhocQuery.ts
100
+ async function submitQuery(params, options) {
101
+ return await submitRun("query", params, options);
102
+ }
103
+ async function submitQueryBase(params, options) {
104
+ return await submitRun("query_base", params, options);
105
+ }
106
+ async function submitQueryDiff(params, options) {
107
+ return await submitRun("query_diff", params, options);
108
+ }
109
+
110
+ // recce-source/js/src/lib/api/cacheKeys.ts
111
+ var cacheKeys = {
112
+ rowCount: (model) => ["row_count", model],
113
+ lineage: () => ["lineage"],
114
+ checks: () => ["checks", "list"],
115
+ check: (checkId) => ["checks", checkId],
116
+ checkEvents: (checkId) => ["checks", checkId, "events"],
117
+ runs: () => ["runs"],
118
+ run: (runId) => ["runs", runId],
119
+ runsAggregated: () => ["runs_aggregated"],
120
+ flag: () => ["flag"],
121
+ instanceInfo: () => ["instance_info"],
122
+ user: () => ["user"]
123
+ };
124
+
125
+ // recce-source/js/src/lib/api/checks.ts
126
+ async function createSimpleCheck() {
127
+ const response = await axiosClient.post("/api/checks", {
128
+ type: "simple"
129
+ });
130
+ return response.data;
131
+ }
132
+ async function createCheckByRun(runId, viewOptions) {
133
+ const track_props = {};
134
+ const response = await axiosClient.post("/api/checks", {
135
+ run_id: runId,
136
+ view_options: viewOptions,
137
+ track_props
138
+ });
139
+ return response.data;
140
+ }
141
+ async function listChecks() {
142
+ return (await axiosClient.get("/api/checks")).data;
143
+ }
144
+ function useChecks(enabled) {
145
+ return useQuery({
146
+ queryKey: cacheKeys.checks(),
147
+ queryFn: listChecks,
148
+ enabled
149
+ });
150
+ }
151
+ async function getCheck(checkId) {
152
+ const response = await axiosClient.get(`/api/checks/${checkId}`);
153
+ return response.data;
154
+ }
155
+ async function updateCheck(checkId, payload) {
156
+ const response = await axiosClient.patch(`/api/checks/${checkId}`, payload);
157
+ return response.data;
158
+ }
159
+ async function deleteCheck(checkId) {
160
+ const response = await axiosClient.delete(`/api/checks/${checkId}`);
161
+ return response.data;
162
+ }
163
+ async function reorderChecks(order) {
164
+ return await axiosClient.post("/api/checks/reorder", order);
165
+ }
166
+ async function markAsPresetCheck(checkId) {
167
+ await axiosClient.post(`/api/checks/${checkId}/mark-as-preset`);
168
+ }
169
+
170
+ // recce-source/js/src/lib/api/cll.ts
171
+ async function getCll(input) {
172
+ const response = await axiosClient.post("/api/cll", input);
173
+ return response.data;
174
+ }
175
+
176
+ // recce-source/js/src/lib/api/connectToCloud.ts
177
+ async function connectToCloud() {
178
+ const data = await axiosClient.post("/api/connect");
179
+ return data.data;
180
+ }
181
+
182
+ // recce-source/js/src/lib/api/flag.ts
183
+ async function getServerFlag() {
184
+ return (await axiosClient.get("/api/flag")).data;
185
+ }
186
+ async function markOnboardingCompleted() {
187
+ try {
188
+ await axiosClient.post(
189
+ "/api/onboarding/completed"
190
+ );
191
+ } catch (_error) {
192
+ }
193
+ }
194
+ async function markRelaunchHintCompleted() {
195
+ try {
196
+ await axiosClient.post(
197
+ "/api/relaunch-hint/completed"
198
+ );
199
+ } catch (_error) {
200
+ }
201
+ }
202
+ async function getLineage(base = false) {
203
+ const response = await axiosClient.get(
204
+ `/api/lineage?base=${base}`
205
+ );
206
+ return response.data;
207
+ }
208
+ async function getLineageWithError(base = false) {
209
+ try {
210
+ const data = await getLineage(base);
211
+ return { data };
212
+ } catch (err) {
213
+ if (err instanceof AxiosError) {
214
+ const data = err.response?.data;
215
+ const detail = data?.detail;
216
+ if (detail) {
217
+ return { error: detail };
218
+ } else {
219
+ return { error: err.message };
220
+ }
221
+ } else if (err instanceof Error) {
222
+ return { error: err.message };
223
+ } else {
224
+ return { error: "An unknown error occurred" };
225
+ }
226
+ }
227
+ }
228
+ async function getLineageDiff() {
229
+ const [base, current] = await Promise.all([
230
+ getLineageWithError(true),
231
+ getLineageWithError(false)
232
+ ]);
233
+ return {
234
+ base: base.data,
235
+ current: current.data,
236
+ base_error: base.error,
237
+ current_error: current.error
238
+ };
239
+ }
240
+ async function getServerInfo() {
241
+ return (await axiosClient.get(`/api/info`)).data;
242
+ }
243
+ async function getModelInfo(model) {
244
+ return (await axiosClient.get(
245
+ `/api/model/${model}`
246
+ )).data;
247
+ }
248
+
249
+ // recce-source/js/src/lib/api/lineagecheck.ts
250
+ async function createLineageDiffCheck(viewOptions) {
251
+ const response = await axiosClient.post("/api/checks", {
252
+ type: "lineage_diff",
253
+ params: {},
254
+ view_options: viewOptions
255
+ });
256
+ return response.data;
257
+ }
258
+
259
+ // recce-source/js/src/lib/api/rowcount.ts
260
+ async function submitRowCountDiff(params, options) {
261
+ return await submitRun("row_count_diff", params, options);
262
+ }
263
+
264
+ // recce-source/js/src/lib/api/models.ts
265
+ async function fetchModelRowCount(modelName) {
266
+ const response = await axiosClient.get(
267
+ `/api/models/${modelName}/row_count`
268
+ );
269
+ return response.data;
270
+ }
271
+ async function queryModelRowCount(modelName) {
272
+ const { result } = await queryRowCount([modelName]);
273
+ return result[modelName];
274
+ }
275
+ async function queryRowCount(modelNames) {
276
+ if (modelNames.length === 0) {
277
+ throw new Error("No model names provided");
278
+ }
279
+ const { run_id } = await submitRowCountDiff(
280
+ { node_names: modelNames },
281
+ { nowait: true }
282
+ );
283
+ const run = await waitRun(run_id);
284
+ return {
285
+ runId: run_id,
286
+ result: run.result
287
+ };
288
+ }
289
+
290
+ // recce-source/js/src/lib/api/profile.ts
291
+ async function submitProfileDiff(params, options) {
292
+ return await submitRun("profile_diff", params, options);
293
+ }
294
+
295
+ // recce-source/js/src/lib/api/schemacheck.ts
296
+ async function createSchemaDiffCheck(params) {
297
+ const response = await axiosClient.post("/api/checks", {
298
+ type: "schema_diff",
299
+ params
300
+ });
301
+ return response.data;
302
+ }
303
+
304
+ // recce-source/js/src/lib/api/select.ts
305
+ async function select(input) {
306
+ return (await axiosClient.post(
307
+ `/api/select`,
308
+ input
309
+ )).data;
310
+ }
311
+ async function saveAs(input) {
312
+ return (await axiosClient.post(
313
+ "/api/save-as",
314
+ input
315
+ )).data;
316
+ }
317
+ async function rename(input) {
318
+ return (await axiosClient.post(
319
+ "/api/rename",
320
+ input
321
+ )).data;
322
+ }
323
+ async function exportState() {
324
+ return (await axiosClient.post("/api/export")).data;
325
+ }
326
+ async function importState(file, checksOnly) {
327
+ const formData = new FormData();
328
+ formData.append("file", file);
329
+ formData.append("checks_only", (!!checksOnly).toString());
330
+ return (await axiosClient.post(
331
+ "/api/import",
332
+ formData
333
+ )).data;
334
+ }
335
+ async function isStateSyncing() {
336
+ const response = await axiosClient.get(
337
+ "/api/sync"
338
+ );
339
+ return response.status === 208;
340
+ }
341
+ async function syncState(input) {
342
+ try {
343
+ const response = await axiosClient.post("/api/sync", input);
344
+ if (response.status === 202) {
345
+ return {
346
+ status: "accepted"
347
+ };
348
+ }
349
+ if (response.status === 208) {
350
+ return {
351
+ status: "syncing"
352
+ };
353
+ }
354
+ } catch (error) {
355
+ if (isAxiosError(error)) {
356
+ if (error.response?.status === 409) {
357
+ return { status: "conflict" };
358
+ }
359
+ }
360
+ }
361
+ throw new Error("Failed to sync state");
362
+ }
363
+ async function shareState() {
364
+ return (await axiosClient.post(
365
+ "/api/share"
366
+ )).data;
367
+ }
368
+ async function fetchUser() {
369
+ try {
370
+ const response = await axiosClient.get(
371
+ "/api/users"
372
+ );
373
+ return response.data;
374
+ } catch (error) {
375
+ console.error("Error fetching user data:", error);
376
+ throw error;
377
+ }
378
+ }
379
+ async function fetchGitHubAvatar(userId) {
380
+ try {
381
+ const response = await axios.get(
382
+ `https://api.github.com/user/${userId}`
383
+ );
384
+ return response.data.avatar_url;
385
+ } catch (error) {
386
+ console.warn("Failed to fetch GitHub avatar:", error);
387
+ return null;
388
+ }
389
+ }
390
+
391
+ // recce-source/js/src/lib/api/valuediff.ts
392
+ async function submitValueDiff(params, options) {
393
+ return await submitRun("value_diff", params, options);
394
+ }
395
+ async function submitValueDiffDetail(params, options) {
396
+ return await submitRun("value_diff_detail", params, options);
397
+ }
398
+ function useVersionNumber() {
399
+ const [version, setVersion] = useState("");
400
+ const [latestVersion, setLatestVersion] = useState("");
401
+ useEffect(() => {
402
+ async function fetchVersion() {
403
+ try {
404
+ const { version: version2, latestVersion: latestVersion2 } = (await axiosClient.get(
405
+ "/api/version"
406
+ )).data;
407
+ setVersion(version2);
408
+ setLatestVersion(latestVersion2);
409
+ } catch (error) {
410
+ console.error("Error fetching version number:", error);
411
+ }
412
+ }
413
+ void fetchVersion();
414
+ }, []);
415
+ return { version, latestVersion };
416
+ }
417
+
418
+ // recce-source/js/src/lib/api/localStorageKeys.ts
419
+ var prefix = "recce-";
420
+ var localStorageKeys = {
421
+ bypassSaveOverwrite: `${prefix}-bypass-save-overwrite`,
422
+ previewChangeFeedbackID: `${prefix}-preview-change-feedback`,
423
+ prepareEnvGuideID: `${prefix}-prepare-env`
424
+ };
425
+
426
+ // recce-source/js/src/lib/api/sessionStorageKeys.ts
427
+ var prefix2 = "recce";
428
+ var sessionStorageKeys = {
429
+ recommendationIgnored: `${prefix2}-recommendation-ignored`,
430
+ recommendationShowed: `${prefix2}-recommendation-showed`,
431
+ prevRefreshTimeStamp: `${prefix2}-prev-refresh-timestamp`,
432
+ lineageNotificationDismissed: `${prefix2}-lineage-notification-dismissed`
433
+ };
434
+
435
+ export { aggregateRuns, axiosClient, cancelRun, connectToCloud, createCheckByRun, createLineageDiffCheck, createSchemaDiffCheck, createSimpleCheck, deleteCheck, exportState, fetchGitHubAvatar, fetchModelRowCount, fetchUser, getCheck, getCll, getLineage, getLineageDiff, getLineageWithError, getModelInfo, getRun, getServerFlag, getServerInfo, importState, isStateSyncing, listChecks, listRuns, localStorageKeys, markAsPresetCheck, markOnboardingCompleted, markRelaunchHintCompleted, queryModelRowCount, queryRowCount, reactQueryClient, rename, reorderChecks, saveAs, searchRuns, select, sessionStorageKeys, shareState, submitProfileDiff, submitQuery, submitQueryBase, submitQueryDiff, submitRowCountDiff, submitRun, submitRunFromCheck, submitValueDiff, submitValueDiffDetail, syncState, updateCheck, useChecks, useVersionNumber, waitRun };
436
+ //# sourceMappingURL=api.mjs.map
437
+ //# sourceMappingURL=api.mjs.map