@malloy-publisher/sdk 0.0.196-dev → 0.0.197-dev

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 (80) hide show
  1. package/README.md +77 -77
  2. package/TREE_SHAKING.md +11 -11
  3. package/dist/{ServerProvider-CvZTC0sJ.es.js → ServerProvider-DDScRRDc.es.js} +1393 -1393
  4. package/dist/ServerProvider-IhQ4aYBm.cjs.js +1 -0
  5. package/dist/client/api.d.ts +674 -674
  6. package/dist/client/configuration.d.ts +1 -1
  7. package/dist/client/index.cjs.js +1 -1
  8. package/dist/client/index.d.ts +1 -1
  9. package/dist/client/index.es.js +53 -53
  10. package/dist/components/Environment/Environment.d.ts +6 -0
  11. package/dist/components/Environment/index.d.ts +2 -0
  12. package/dist/components/Home/AddEnvironmentDialog.d.ts +1 -0
  13. package/dist/components/Home/DeleteEnvironmentDialog.d.ts +5 -0
  14. package/dist/components/Home/EditEnvironmentDialog.d.ts +7 -0
  15. package/dist/components/Home/Home.d.ts +2 -2
  16. package/dist/components/ServerProvider.d.ts +4 -4
  17. package/dist/components/index.d.ts +1 -1
  18. package/dist/{core-mP4paWtU.cjs.js → core-7-3Jcsb0.cjs.js} +1 -1
  19. package/dist/{core-BrfQApxh.es.js → core-w79IMXAG.es.js} +1 -1
  20. package/dist/hooks/useDimensionFiltersFromSpec.d.ts +3 -3
  21. package/dist/hooks/useDimensionFiltersQuery.d.ts +3 -3
  22. package/dist/hooks/useDimensionalFilterRangeData.d.ts +4 -4
  23. package/dist/{index-ClRkROAM.es.js → index-CN0_kZSF.es.js} +13067 -13033
  24. package/dist/{index-CW09s4Xx.cjs.js → index-Xo_ADux9.cjs.js} +34 -34
  25. package/dist/index.cjs.js +1 -1
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.es.js +21 -21
  28. package/dist/utils/formatting.d.ts +1 -1
  29. package/dist/utils/parsing.d.ts +2 -2
  30. package/package.json +1 -1
  31. package/src/components/Connections/DeleteConnectionDialog.tsx +1 -0
  32. package/src/components/Connections/EditConnectionDialog.tsx +2 -0
  33. package/src/components/{Project → Environment}/About.tsx +8 -4
  34. package/src/components/{Project → Environment}/AddPackageDialog.tsx +5 -3
  35. package/src/components/{Project → Environment}/ConnectionExplorer.tsx +14 -14
  36. package/src/components/{Project → Environment}/DeletePackageDialog.tsx +2 -2
  37. package/src/components/{Project → Environment}/EditPackageDialog.tsx +18 -13
  38. package/src/components/{Project/Project.tsx → Environment/Environment.tsx} +6 -6
  39. package/src/components/{Project → Environment}/Packages.tsx +6 -5
  40. package/src/components/Environment/index.ts +2 -0
  41. package/src/components/Home/{AddProjectDialog.tsx → AddEnvironmentDialog.tsx} +21 -18
  42. package/src/components/Home/{DeleteProjectDialog.tsx → DeleteEnvironmentDialog.tsx} +14 -13
  43. package/src/components/Home/{EditProjectDialog.tsx → EditEnvironmentDialog.tsx} +32 -28
  44. package/src/components/Home/Home.tsx +39 -38
  45. package/src/components/Model/ModelCell.tsx +2 -2
  46. package/src/components/Model/SourcesExplorer.tsx +2 -2
  47. package/src/components/Model/useModelData.ts +3 -3
  48. package/src/components/Notebook/Notebook.tsx +7 -7
  49. package/src/components/Package/Config.tsx +4 -4
  50. package/src/components/Package/Connections.tsx +15 -15
  51. package/src/components/Package/Databases.tsx +4 -4
  52. package/src/components/Package/Models.tsx +4 -4
  53. package/src/components/Package/Notebooks.tsx +4 -4
  54. package/src/components/QueryResult/QueryResult.tsx +6 -6
  55. package/src/components/ServerProvider.tsx +5 -5
  56. package/src/components/Workbook/ModelPicker.tsx +4 -4
  57. package/src/components/Workbook/Workbook.tsx +4 -4
  58. package/src/components/index.ts +1 -1
  59. package/src/hooks/useDimensionFiltersFromSpec.ts +5 -5
  60. package/src/hooks/useDimensionFiltersQuery.ts +6 -6
  61. package/src/hooks/useDimensionalFilterRangeData.ts +7 -7
  62. package/src/hooks/useRawQueryData.ts +3 -3
  63. package/src/index.ts +1 -1
  64. package/src/utils/formatting.spec.ts +22 -21
  65. package/src/utils/formatting.ts +8 -7
  66. package/src/utils/parsing.spec.ts +23 -19
  67. package/src/utils/parsing.ts +8 -6
  68. package/dist/ServerProvider-BMsmCksc.cjs.js +0 -1
  69. package/dist/components/Home/AddProjectDialog.d.ts +0 -1
  70. package/dist/components/Home/DeleteProjectDialog.d.ts +0 -5
  71. package/dist/components/Home/EditProjectDialog.d.ts +0 -7
  72. package/dist/components/Project/Project.d.ts +0 -6
  73. package/dist/components/Project/index.d.ts +0 -2
  74. package/src/components/Project/index.ts +0 -2
  75. /package/dist/components/{Project → Environment}/About.d.ts +0 -0
  76. /package/dist/components/{Project → Environment}/AddPackageDialog.d.ts +0 -0
  77. /package/dist/components/{Project → Environment}/ConnectionExplorer.d.ts +0 -0
  78. /package/dist/components/{Project → Environment}/DeletePackageDialog.d.ts +0 -0
  79. /package/dist/components/{Project → Environment}/EditPackageDialog.d.ts +0 -0
  80. /package/dist/components/{Project → Environment}/Packages.d.ts +0 -0
@@ -9,24 +9,24 @@ import DialogTitle from "@mui/material/DialogTitle";
9
9
  import { useState } from "react";
10
10
  import { Edit } from "@mui/icons-material";
11
11
  import { MenuItem, ListItemIcon, ListItemText, Snackbar } from "@mui/material";
12
- import { Project } from "../../client";
12
+ import { Environment } from "../../client";
13
13
  import {
14
- generateProjectReadme,
15
- getProjectDescription,
14
+ generateEnvironmentReadme,
15
+ getEnvironmentDescription,
16
16
  } from "../../utils/parsing";
17
17
  import { useQueryClient } from "@tanstack/react-query";
18
18
  import { useMutationWithApiError } from "../../hooks/useQueryWithApiError";
19
19
  import { useServer } from "../ServerProvider";
20
20
 
21
- interface EditProjectModalProps {
22
- project: Project;
21
+ interface EditEnvironmentModalProps {
22
+ environment: Environment;
23
23
  onCloseDialog: () => void;
24
24
  }
25
25
 
26
- export default function EditProjectDialog({
27
- project,
26
+ export default function EditEnvironmentDialog({
27
+ environment,
28
28
  onCloseDialog,
29
- }: EditProjectModalProps) {
29
+ }: EditEnvironmentModalProps) {
30
30
  const [open, setOpen] = useState(false);
31
31
  const { apiClients } = useServer();
32
32
  const queryClient = useQueryClient();
@@ -41,14 +41,14 @@ export default function EditProjectDialog({
41
41
  onCloseDialog();
42
42
  };
43
43
 
44
- const editProject = useMutationWithApiError({
44
+ const editEnvironment = useMutationWithApiError({
45
45
  async mutationFn(variables: { description: string }) {
46
- return apiClients.projects.updateProject(project.name, {
47
- name: project.name,
48
- readme: generateProjectReadme(
46
+ return apiClients.environments.updateEnvironment(environment.name, {
47
+ name: environment.name,
48
+ readme: generateEnvironmentReadme(
49
49
  {
50
- name: project.name,
51
- readme: project.readme,
50
+ name: environment.name,
51
+ readme: environment.readme,
52
52
  },
53
53
  variables.description,
54
54
  ),
@@ -56,8 +56,8 @@ export default function EditProjectDialog({
56
56
  },
57
57
  onSuccess() {
58
58
  handleClose();
59
- queryClient.invalidateQueries({ queryKey: ["projects"] });
60
- setNotificationMessage("Project updated successfully");
59
+ queryClient.invalidateQueries({ queryKey: ["environments"] });
60
+ setNotificationMessage("Environment updated successfully");
61
61
  },
62
62
  onError(error) {
63
63
  setNotificationMessage(
@@ -72,7 +72,7 @@ export default function EditProjectDialog({
72
72
  event.preventDefault();
73
73
  const formData = new FormData(event.currentTarget);
74
74
  const description = formData.get("description")?.toString();
75
- editProject.mutate({ description });
75
+ editEnvironment.mutate({ description });
76
76
  };
77
77
 
78
78
  return (
@@ -85,46 +85,50 @@ export default function EditProjectDialog({
85
85
  </MenuItem>
86
86
 
87
87
  <Dialog open={open} onClose={handleClose}>
88
- <DialogTitle>Edit Project</DialogTitle>
88
+ <DialogTitle>Edit Environment</DialogTitle>
89
89
  <DialogContent>
90
90
  <DialogContentText>
91
- Add a new project to start exploring semantic models and
92
- analyzing data.
91
+ Edit this environment&apos;s description.
93
92
  </DialogContentText>
94
- <form onSubmit={handleSubmit} id="project-form">
93
+ <form onSubmit={handleSubmit} id="environment-form">
95
94
  <TextField
96
95
  autoFocus
97
96
  required
98
97
  margin="dense"
99
98
  id="name"
100
99
  name="name"
101
- label="Project Name"
100
+ label="Environment Name"
102
101
  disabled
103
102
  type="text"
104
103
  fullWidth
105
104
  variant="standard"
106
- defaultValue={project.name}
105
+ defaultValue={environment.name}
107
106
  />
108
107
  <TextField
109
108
  margin="dense"
110
109
  id="description"
111
110
  name="description"
112
- label="Project Description"
111
+ label="Environment Description"
113
112
  type="text"
114
113
  fullWidth
115
114
  variant="standard"
116
- defaultValue={getProjectDescription(project.readme)}
115
+ defaultValue={getEnvironmentDescription(
116
+ environment.readme,
117
+ )}
117
118
  />
118
119
  </form>
119
120
  </DialogContent>
120
121
  <DialogActions>
121
- <Button disabled={editProject.isPending} onClick={handleClose}>
122
+ <Button
123
+ disabled={editEnvironment.isPending}
124
+ onClick={handleClose}
125
+ >
122
126
  Cancel
123
127
  </Button>
124
128
  <Button
125
129
  type="submit"
126
- form="project-form"
127
- loading={editProject.isPending}
130
+ form="environment-form"
131
+ loading={editEnvironment.isPending}
128
132
  >
129
133
  Save Changes
130
134
  </Button>
@@ -21,30 +21,30 @@ import {
21
21
  Typography,
22
22
  } from "@mui/material";
23
23
  import { useState } from "react";
24
- import { Project } from "../../client";
24
+ import { Environment } from "../../client";
25
25
  import { useQueryWithApiError } from "../../hooks/useQueryWithApiError";
26
- import { getProjectDescription } from "../../utils/parsing";
26
+ import { getEnvironmentDescription } from "../../utils/parsing";
27
27
  import { ApiErrorDisplay } from "../ApiErrorDisplay";
28
28
  import { Loading } from "../Loading";
29
29
  import { useServer } from "../ServerProvider";
30
- import AddProjectDialog from "./AddProjectDialog";
31
- import DeleteProjectDialog from "./DeleteProjectDialog";
32
- import EditProjectDialog from "./EditProjectDialog";
30
+ import AddEnvironmentDialog from "./AddEnvironmentDialog";
31
+ import DeleteEnvironmentDialog from "./DeleteEnvironmentDialog";
32
+ import EditEnvironmentDialog from "./EditEnvironmentDialog";
33
33
 
34
34
  interface HomeProps {
35
- onClickProject?: (to: string, event?: React.MouseEvent) => void;
35
+ onClickEnvironment?: (to: string, event?: React.MouseEvent) => void;
36
36
  }
37
37
 
38
- export default function Home({ onClickProject }: HomeProps) {
38
+ export default function Home({ onClickEnvironment }: HomeProps) {
39
39
  const { apiClients, mutable } = useServer();
40
40
 
41
41
  const { data, isSuccess, isError, error } = useQueryWithApiError({
42
- queryKey: ["projects"],
43
- queryFn: () => apiClients.projects.listProjects(),
42
+ queryKey: ["environments"],
43
+ queryFn: () => apiClients.environments.listEnvironments(),
44
44
  });
45
45
 
46
46
  if (isError) {
47
- return <ApiErrorDisplay error={error} context="Projects List" />;
47
+ return <ApiErrorDisplay error={error} context="Environments List" />;
48
48
  }
49
49
 
50
50
  if (isSuccess) {
@@ -247,7 +247,7 @@ export default function Home({ onClickProject }: HomeProps) {
247
247
 
248
248
  <Divider sx={{ my: 4 }} />
249
249
 
250
- {/* Project Selection Section */}
250
+ {/* Environment Selection Section */}
251
251
  {data.data.length > 0 ? (
252
252
  <>
253
253
  <Box sx={{ textAlign: "center", mb: 4 }}>
@@ -262,24 +262,24 @@ export default function Home({ onClickProject }: HomeProps) {
262
262
  sx={{ color: "primary.main", fontSize: 24 }}
263
263
  />
264
264
  <Typography variant="h4" fontWeight={600}>
265
- Select a Project
265
+ Select an Environment
266
266
  </Typography>
267
267
  </Stack>
268
268
  <Typography variant="body1" color="text.secondary">
269
- Choose a project to explore its semantic models and
269
+ Choose an environment to explore its semantic models and
270
270
  start analyzing your data
271
271
  </Typography>
272
- {mutable && <AddProjectDialog />}
272
+ {mutable && <AddEnvironmentDialog />}
273
273
  </Box>
274
274
  <Grid container spacing={3} justifyContent="center">
275
- {data.data.map((project) => (
275
+ {data.data.map((environment) => (
276
276
  <Grid
277
277
  size={{ xs: 12, sm: 6, md: 4 }}
278
- key={project.name}
278
+ key={environment.name}
279
279
  >
280
- <ProjectCard
281
- project={project}
282
- onClickProject={onClickProject}
280
+ <EnvironmentCard
281
+ environment={environment}
282
+ onClickEnvironment={onClickEnvironment}
283
283
  />
284
284
  </Grid>
285
285
  ))}
@@ -306,12 +306,12 @@ export default function Home({ onClickProject }: HomeProps) {
306
306
  color="text.secondary"
307
307
  sx={{ mb: 3 }}
308
308
  >
309
- No projects found. Create your first Malloy project to
310
- start exploring semantic models and building data
309
+ No environments found. Create your first Malloy environment
310
+ to start exploring semantic models and building data
311
311
  experiences.
312
312
  </Typography>
313
313
  {mutable ? (
314
- <AddProjectDialog />
314
+ <AddEnvironmentDialog />
315
315
  ) : (
316
316
  <Button
317
317
  variant="contained"
@@ -359,15 +359,15 @@ export default function Home({ onClickProject }: HomeProps) {
359
359
  </Container>
360
360
  );
361
361
  } else {
362
- return <Loading text="Loading projects..." />;
362
+ return <Loading text="Loading environments..." />;
363
363
  }
364
364
  }
365
- function ProjectCard({
366
- project,
367
- onClickProject,
365
+ function EnvironmentCard({
366
+ environment,
367
+ onClickEnvironment,
368
368
  }: {
369
- project: Project;
370
- onClickProject: (to: string, event?: React.MouseEvent) => void;
369
+ environment: Environment;
370
+ onClickEnvironment: (to: string, event?: React.MouseEvent) => void;
371
371
  }) {
372
372
  const { mutable } = useServer();
373
373
  const [menuAnchorEl, setMenuAnchorEl] = useState<null | HTMLElement>(null);
@@ -395,7 +395,8 @@ function ProjectCard({
395
395
  {mutable && (
396
396
  <>
397
397
  <IconButton
398
- aria-controls={isMenuOpen ? "project-menu" : undefined}
398
+ aria-label={`Environment actions for ${environment.name}`}
399
+ aria-controls={isMenuOpen ? "environment-menu" : undefined}
399
400
  aria-haspopup="true"
400
401
  aria-expanded={isMenuOpen ? "true" : undefined}
401
402
  onClick={openMenu}
@@ -404,7 +405,7 @@ function ProjectCard({
404
405
  <MoreVert fontSize="small" />
405
406
  </IconButton>
406
407
  <Menu
407
- id="project-menu"
408
+ id="environment-menu"
408
409
  aria-haspopup="true"
409
410
  aria-expanded={isMenuOpen ? "true" : undefined}
410
411
  open={isMenuOpen}
@@ -420,12 +421,12 @@ function ProjectCard({
420
421
  horizontal: "right",
421
422
  }}
422
423
  >
423
- <EditProjectDialog
424
- project={project}
424
+ <EditEnvironmentDialog
425
+ environment={environment}
425
426
  onCloseDialog={closeMenu}
426
427
  />
427
- <DeleteProjectDialog
428
- project={project}
428
+ <DeleteEnvironmentDialog
429
+ environment={environment}
429
430
  onCloseDialog={closeMenu}
430
431
  />
431
432
  </Menu>
@@ -440,14 +441,14 @@ function ProjectCard({
440
441
  }}
441
442
  />
442
443
  <Typography variant="h6" fontWeight={600} gutterBottom>
443
- {project.name}
444
+ {environment.name}
444
445
  </Typography>
445
446
  <Typography
446
447
  variant="body2"
447
448
  color="text.secondary"
448
449
  sx={{ mb: 2, minHeight: "60px" }}
449
450
  >
450
- {getProjectDescription(project.readme)}
451
+ {getEnvironmentDescription(environment.readme)}
451
452
  </Typography>
452
453
  <Button
453
454
  variant="contained"
@@ -455,10 +456,10 @@ function ProjectCard({
455
456
  endIcon={<ArrowForwardRoundedIcon />}
456
457
  fullWidth
457
458
  onClick={(event) =>
458
- onClickProject(`/${project.name}/`, event)
459
+ onClickEnvironment(`/${environment.name}/`, event)
459
460
  }
460
461
  >
461
- Open Project
462
+ Open Environment
462
463
  </Button>
463
464
  </CardContent>
464
465
  </Card>
@@ -32,7 +32,7 @@ export function ModelCell({
32
32
  const [resultsDialogOpen, setResultsDialogOpen] = React.useState(false);
33
33
  const [hasRun, setHasRun] = React.useState(false);
34
34
 
35
- const { packageName, projectName, versionId, modelPath } =
35
+ const { packageName, environmentName, versionId, modelPath } =
36
36
  parseResourceUri(resourceUri);
37
37
  const { apiClients } = useServer();
38
38
 
@@ -44,7 +44,7 @@ export function ModelCell({
44
44
  queryKey: ["namedQueryResult", resourceUri, queryName],
45
45
  queryFn: () =>
46
46
  apiClients.models.executeQueryModel(
47
- projectName,
47
+ environmentName,
48
48
  packageName,
49
49
  modelPath,
50
50
  {
@@ -142,7 +142,7 @@ function SourceExplorerComponentInner({
142
142
  }
143
143
  }, [onChange, query]);
144
144
  const {
145
- projectName: projectName,
145
+ environmentName: environmentName,
146
146
  packageName: packageName,
147
147
  versionId: versionId,
148
148
  } = parseResourceUri(resourceUri);
@@ -178,7 +178,7 @@ function SourceExplorerComponentInner({
178
178
  query: malloy,
179
179
  });
180
180
  return apiClients.models.executeQueryModel(
181
- projectName,
181
+ environmentName,
182
182
  packageName,
183
183
  sourceAndPath.modelPath,
184
184
  {
@@ -8,15 +8,15 @@ import { useServer } from "../ServerProvider";
8
8
  * useQueryWithApiError to fetch a compiled model.
9
9
  */
10
10
  export function useModelData(resourceUri: string, enabled: boolean = true) {
11
- const { modelPath, projectName, packageName, versionId } =
11
+ const { modelPath, environmentName, packageName, versionId } =
12
12
  parseResourceUri(resourceUri);
13
13
  const { apiClients } = useServer();
14
14
 
15
15
  return useQueryWithApiError<CompiledModel>({
16
- queryKey: ["package", projectName, packageName, modelPath, versionId],
16
+ queryKey: ["package", environmentName, packageName, modelPath, versionId],
17
17
  queryFn: async () => {
18
18
  const response = await apiClients.models.getModel(
19
- projectName,
19
+ environmentName,
20
20
  packageName,
21
21
  modelPath,
22
22
  versionId,
@@ -45,7 +45,7 @@ export default function Notebook({
45
45
  }: NotebookProps) {
46
46
  const { apiClients } = useServer();
47
47
  const {
48
- projectName,
48
+ environmentName,
49
49
  packageName,
50
50
  versionId,
51
51
  modelPath: notebookPath,
@@ -61,7 +61,7 @@ export default function Notebook({
61
61
  queryKey: [resourceUri],
62
62
  queryFn: async () => {
63
63
  const response = await apiClients.notebooks.getNotebook(
64
- projectName,
64
+ environmentName,
65
65
  packageName,
66
66
  notebookPath,
67
67
  versionId,
@@ -232,7 +232,7 @@ export default function Notebook({
232
232
  // current selection. Otherwise selecting "FORD" would hide every other
233
233
  // manufacturer from the dropdown.
234
234
  const { data: filterValuesData } = useDimensionalFilterRangeData({
235
- project: projectName,
235
+ environment: environmentName,
236
236
  package: packageName,
237
237
  dimensionSpecs,
238
238
  versionId,
@@ -316,7 +316,7 @@ export default function Notebook({
316
316
  // Use notebook cell execution API with optional filter_params
317
317
  const response =
318
318
  await apiClients.notebooks.executeNotebookCell(
319
- projectName,
319
+ environmentName,
320
320
  packageName,
321
321
  notebookPath,
322
322
  cellIndex,
@@ -381,7 +381,7 @@ export default function Notebook({
381
381
  notebook,
382
382
  useServerFilters,
383
383
  buildFilterParams,
384
- projectName,
384
+ environmentName,
385
385
  packageName,
386
386
  notebookPath,
387
387
  versionId,
@@ -533,7 +533,7 @@ export default function Notebook({
533
533
  {/* Error States */}
534
534
  {isError && error.status === 404 && (
535
535
  <Typography variant="body2" sx={{ color: "#666666" }}>
536
- <code>{`${projectName} > ${packageName} > ${notebookPath}`}</code>{" "}
536
+ <code>{`${environmentName} > ${packageName} > ${notebookPath}`}</code>{" "}
537
537
  not found.
538
538
  </Typography>
539
539
  )}
@@ -541,7 +541,7 @@ export default function Notebook({
541
541
  {isError && error.status !== 404 && (
542
542
  <ApiErrorDisplay
543
543
  error={error}
544
- context={`${projectName} > ${packageName} > ${notebookPath}`}
544
+ context={`${environmentName} > ${packageName} > ${notebookPath}`}
545
545
  />
546
546
  )}
547
547
 
@@ -18,16 +18,16 @@ type Props = {
18
18
  export default function Config({ resourceUri }: Props) {
19
19
  const { apiClients } = useServer();
20
20
  const {
21
- projectName: projectName,
21
+ environmentName: environmentName,
22
22
  packageName: packageName,
23
23
  versionId: versionId,
24
24
  } = parseResourceUri(resourceUri);
25
25
 
26
26
  const { data, isSuccess, isError, error } = useQueryWithApiError({
27
- queryKey: ["package", projectName, packageName, versionId],
27
+ queryKey: ["package", environmentName, packageName, versionId],
28
28
  queryFn: () =>
29
29
  apiClients.packages.getPackage(
30
- projectName,
30
+ environmentName,
31
31
  packageName,
32
32
  versionId,
33
33
  false,
@@ -86,7 +86,7 @@ export default function Config({ resourceUri }: Props) {
86
86
  {isError && (
87
87
  <ApiErrorDisplay
88
88
  error={error}
89
- context={`${projectName} > ${packageName} > ${versionId}`}
89
+ context={`${environmentName} > ${packageName} > ${versionId}`}
90
90
  />
91
91
  )}
92
92
  </List>
@@ -24,7 +24,7 @@ import { ApiErrorDisplay } from "../ApiErrorDisplay";
24
24
  import AddConnectionDialog from "../Connections/AddConnectionDialog";
25
25
  import DeleteConnectionDialog from "../Connections/DeleteConnectionDialog";
26
26
  import EditConnectionDialog from "../Connections/EditConnectionDialog";
27
- import ConnectionExplorer from "../Project/ConnectionExplorer";
27
+ import ConnectionExplorer from "../Environment/ConnectionExplorer";
28
28
  import { useServer } from "../ServerProvider";
29
29
  import {
30
30
  PackageCard,
@@ -115,19 +115,19 @@ type ConnectionsProps = {
115
115
  export default function Connections({ resourceUri }: ConnectionsProps) {
116
116
  const { apiClients, mutable } = useServer();
117
117
  const queryClient = useQueryClient();
118
- const { projectName: projectName } = parseResourceUri(resourceUri);
118
+ const { environmentName: environmentName } = parseResourceUri(resourceUri);
119
119
  const [notificationMessage, setNotificationMessage] = useState("");
120
120
  const [selectedConnection, setSelectedConnection] = useState<string | null>(
121
121
  null,
122
122
  );
123
123
  const selectedConnectionResourceUri = encodeResourceUri({
124
- projectName: projectName,
124
+ environmentName: environmentName,
125
125
  connectionName: selectedConnection,
126
126
  });
127
127
 
128
128
  const { data, isSuccess, isError, error } = useQueryWithApiError({
129
- queryKey: ["connections", projectName],
130
- queryFn: () => apiClients.connections.listConnections(projectName),
129
+ queryKey: ["connections", environmentName],
130
+ queryFn: () => apiClients.connections.listConnections(environmentName),
131
131
  });
132
132
 
133
133
  const handleConnectionClick = (connectionName: string) => {
@@ -140,15 +140,15 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
140
140
 
141
141
  const addConnection = useMutationWithApiError({
142
142
  mutationFn: (payload: ApiConnection) => {
143
- return apiClients.projects.updateProject(projectName, {
144
- name: projectName,
143
+ return apiClients.environments.updateEnvironment(environmentName, {
144
+ name: environmentName,
145
145
  connections: [...data.data, payload],
146
146
  });
147
147
  },
148
148
  onSuccess() {
149
149
  setNotificationMessage("Connection added successfully");
150
150
  queryClient.invalidateQueries({
151
- queryKey: ["connections", projectName],
151
+ queryKey: ["connections", environmentName],
152
152
  });
153
153
  },
154
154
  onError(error) {
@@ -158,8 +158,8 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
158
158
 
159
159
  const updateConnection = useMutationWithApiError({
160
160
  mutationFn: (payload: ApiConnection) => {
161
- return apiClients.projects.updateProject(projectName, {
162
- name: projectName,
161
+ return apiClients.environments.updateEnvironment(environmentName, {
162
+ name: environmentName,
163
163
  connections: data.data.map((conn) =>
164
164
  conn.name === payload.name ? payload : conn,
165
165
  ),
@@ -170,7 +170,7 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
170
170
  `Connection ${variables.name} updated successfully`,
171
171
  );
172
172
  queryClient.invalidateQueries({
173
- queryKey: ["connections", projectName],
173
+ queryKey: ["connections", environmentName],
174
174
  });
175
175
  },
176
176
  onError(error) {
@@ -180,8 +180,8 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
180
180
 
181
181
  const deleteConnection = useMutationWithApiError({
182
182
  mutationFn: (payload: ApiConnection) => {
183
- return apiClients.projects.updateProject(projectName, {
184
- name: projectName,
183
+ return apiClients.environments.updateEnvironment(environmentName, {
184
+ name: environmentName,
185
185
  connections: data.data.filter((conn) => conn.name !== payload.name),
186
186
  });
187
187
  },
@@ -190,7 +190,7 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
190
190
  `Connection ${variables.name} deleted successfully`,
191
191
  );
192
192
  queryClient.invalidateQueries({
193
- queryKey: ["connections", projectName],
193
+ queryKey: ["connections", environmentName],
194
194
  });
195
195
  },
196
196
  onError(error) {
@@ -305,7 +305,7 @@ export default function Connections({ resourceUri }: ConnectionsProps) {
305
305
  {isError && (
306
306
  <ApiErrorDisplay
307
307
  error={error}
308
- context={`${projectName} > Connections`}
308
+ context={`${environmentName} > Connections`}
309
309
  />
310
310
  )}
311
311
  </Box>
@@ -33,7 +33,7 @@ type Props = {
33
33
  export default function Databases({ resourceUri }: Props) {
34
34
  const { apiClients } = useServer();
35
35
  const {
36
- projectName: projectName,
36
+ environmentName: environmentName,
37
37
  packageName: packageName,
38
38
  versionId: versionId,
39
39
  } = parseResourceUri(resourceUri);
@@ -53,10 +53,10 @@ export default function Databases({ resourceUri }: Props) {
53
53
  };
54
54
 
55
55
  const { data, isError, error, isSuccess } = useQueryWithApiError({
56
- queryKey: ["databases", projectName, packageName, versionId],
56
+ queryKey: ["databases", environmentName, packageName, versionId],
57
57
  queryFn: () =>
58
58
  apiClients.databases.listDatabases(
59
- projectName,
59
+ environmentName,
60
60
  packageName,
61
61
  versionId,
62
62
  ),
@@ -89,7 +89,7 @@ export default function Databases({ resourceUri }: Props) {
89
89
  {isError && (
90
90
  <ApiErrorDisplay
91
91
  error={error}
92
- context={`${projectName} > ${packageName} > Databases`}
92
+ context={`${environmentName} > ${packageName} > Databases`}
93
93
  />
94
94
  )}
95
95
  {isSuccess && data.data.length > 0 && (
@@ -20,16 +20,16 @@ interface ModelsProps {
20
20
 
21
21
  export default function Models({ onClickModelFile, resourceUri }: ModelsProps) {
22
22
  const {
23
- projectName: projectName,
23
+ environmentName: environmentName,
24
24
  packageName: packageName,
25
25
  versionId: versionId,
26
26
  } = parseResourceUri(resourceUri);
27
27
  const { apiClients } = useServer();
28
28
 
29
29
  const { data, isError, error, isSuccess } = useQueryWithApiError({
30
- queryKey: ["models", projectName, packageName, versionId],
30
+ queryKey: ["models", environmentName, packageName, versionId],
31
31
  queryFn: () =>
32
- apiClients.models.listModels(projectName, packageName, versionId),
32
+ apiClients.models.listModels(environmentName, packageName, versionId),
33
33
  });
34
34
 
35
35
  return (
@@ -46,7 +46,7 @@ export default function Models({ onClickModelFile, resourceUri }: ModelsProps) {
46
46
  {isError && (
47
47
  <ApiErrorDisplay
48
48
  error={error}
49
- context={`${projectName} > ${packageName} > Models`}
49
+ context={`${environmentName} > ${packageName} > Models`}
50
50
  />
51
51
  )}
52
52
  {isSuccess && data.data.length > 0 && (
@@ -24,16 +24,16 @@ export default function Notebooks({
24
24
  }: NotebooksProps) {
25
25
  const { apiClients } = useServer();
26
26
  const {
27
- projectName: projectName,
27
+ environmentName: environmentName,
28
28
  packageName: packageName,
29
29
  versionId: versionId,
30
30
  } = parseResourceUri(resourceUri);
31
31
 
32
32
  const { data, isError, error, isSuccess } = useQueryWithApiError({
33
- queryKey: ["notebooks", projectName, packageName, versionId],
33
+ queryKey: ["notebooks", environmentName, packageName, versionId],
34
34
  queryFn: () =>
35
35
  apiClients.notebooks.listNotebooks(
36
- projectName,
36
+ environmentName,
37
37
  packageName,
38
38
  versionId,
39
39
  ),
@@ -55,7 +55,7 @@ export default function Notebooks({
55
55
  {isError && (
56
56
  <ApiErrorDisplay
57
57
  error={error}
58
- context={`${projectName} > ${packageName} > Notebooks`}
58
+ context={`${environmentName} > ${packageName} > Notebooks`}
59
59
  />
60
60
  )}
61
61
  {isSuccess && data.data.length > 0 && (