diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 9fe44b6..38c8d6c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -9,7 +9,12 @@ repos:
- id: mixed-line-ending
args: ['--fix=auto']
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
- rev: v2.0.0
+ rev: v2.15.0
hooks:
- id: pretty-format-java
- args: [--autofix, --google-java-formatter-version=1.7]
+ args: [--autofix, --google-java-formatter-version=1.28.0]
+ - repo: https://github.com/commitizen-tools/commitizen
+ rev: v3.10.0
+ hooks:
+ - id: commitizen
+ stages: [commit-msg]
diff --git a/BlankCanvasDB.zip b/AnimalDB.zip
similarity index 99%
rename from BlankCanvasDB.zip
rename to AnimalDB.zip
index 9623552..ae3d896 100644
Binary files a/BlankCanvasDB.zip and b/AnimalDB.zip differ
diff --git a/README.md b/README.md
index e5018ed..7810ea2 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# SEMOSS Blank Canvas Template App
+# SEMOSS Template App
## Overview
@@ -76,8 +76,8 @@ To make changes visible to users:
2. Rename `assets` to `old-assets`.
3. Open a terminal at this location.
4. Clone this repository:
- `git clone git@github.com:Deloitte-US/SemossBlankCanvas.git`, if using SSH keys
-5. Rename the cloned `SemossBlankCanvas` folder to `assets`.
+ `git clone git@github.com:Deloitte-US/Template.git`, if using SSH keys
+5. Rename the cloned `Template` folder to `assets`.
6. Open `assets` in your code editor (VS Code recommended).
---
diff --git a/client/.DS_Store b/client/.DS_Store
index 394d668..8eae11e 100644
Binary files a/client/.DS_Store and b/client/.DS_Store differ
diff --git a/client/package.json b/client/package.json
index 09fc3c6..3a01744 100644
--- a/client/package.json
+++ b/client/package.json
@@ -8,22 +8,22 @@
"dependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
- "@mui/icons-material": "^7.3.1",
- "@mui/material": "^7.3.1",
- "@mui/x-data-grid": "^8.10.2",
- "@mui/x-date-pickers": "^8.10.2",
+ "@mui/icons-material": "^7.3.2",
+ "@mui/material": "^7.3.2",
+ "@mui/x-data-grid": "^8.11.2",
+ "@mui/x-date-pickers": "^8.11.2",
"@semoss/sdk": "1.0.0-beta.29",
"@semoss/sdk-react": "1.0.0-beta.20",
"css-loader": "^7.1.2",
- "dayjs": "^1.11.15",
+ "dayjs": "^1.11.18",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router": "^7.8.2"
},
"devDependencies": {
- "@types/node": "^24.3.0",
+ "@types/node": "^24.3.1",
"@types/react": "^19.1.12",
- "dotenv": "^17.2.1",
+ "dotenv": "^17.2.2",
"html-webpack-plugin": "^5.6.4",
"ts-loader": "^9.5.4",
"typescript": "^5.9.2",
diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml
index 7b38076..a77df1b 100644
--- a/client/pnpm-lock.yaml
+++ b/client/pnpm-lock.yaml
@@ -14,17 +14,17 @@ importers:
specifier: ^11.14.1
version: 11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
'@mui/icons-material':
- specifier: ^7.3.1
- version: 7.3.1(@mui/material@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
+ specifier: ^7.3.2
+ version: 7.3.2(@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
'@mui/material':
- specifier: ^7.3.1
- version: 7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^7.3.2
+ version: 7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mui/x-data-grid':
- specifier: ^8.10.2
- version: 8.10.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@mui/material@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^8.11.2
+ version: 8.11.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mui/x-date-pickers':
- specifier: ^8.10.2
- version: 8.10.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@mui/material@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(dayjs@1.11.15)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: ^8.11.2
+ version: 8.11.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(dayjs@1.11.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@semoss/sdk':
specifier: 1.0.0-beta.29
version: 1.0.0-beta.29(react@18.3.1)
@@ -35,8 +35,8 @@ importers:
specifier: ^7.1.2
version: 7.1.2(webpack@5.101.3)
dayjs:
- specifier: ^1.11.15
- version: 1.11.15
+ specifier: ^1.11.18
+ version: 1.11.18
react:
specifier: ^18.3.1
version: 18.3.1
@@ -48,14 +48,14 @@ importers:
version: 7.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
devDependencies:
'@types/node':
- specifier: ^24.3.0
- version: 24.3.0
+ specifier: ^24.3.1
+ version: 24.3.1
'@types/react':
specifier: ^19.1.12
version: 19.1.12
dotenv:
- specifier: ^17.2.1
- version: 17.2.1
+ specifier: ^17.2.2
+ version: 17.2.2
html-webpack-plugin:
specifier: ^5.6.4
version: 5.6.4(webpack@5.101.3)
@@ -121,18 +121,18 @@ packages:
}
engines: { node: '>=6.9.0' }
- '@babel/parser@7.28.3':
+ '@babel/parser@7.28.4':
resolution:
{
- integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==,
+ integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==,
}
engines: { node: '>=6.0.0' }
hasBin: true
- '@babel/runtime@7.28.3':
+ '@babel/runtime@7.28.4':
resolution:
{
- integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==,
+ integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==,
}
engines: { node: '>=6.9.0' }
@@ -143,17 +143,17 @@ packages:
}
engines: { node: '>=6.9.0' }
- '@babel/traverse@7.28.3':
+ '@babel/traverse@7.28.4':
resolution:
{
- integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==,
+ integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==,
}
engines: { node: '>=6.9.0' }
- '@babel/types@7.28.2':
+ '@babel/types@7.28.4':
resolution:
{
- integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==,
+ integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==,
}
engines: { node: '>=6.9.0' }
@@ -182,10 +182,10 @@ packages:
integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==,
}
- '@emotion/is-prop-valid@1.3.1':
+ '@emotion/is-prop-valid@1.4.0':
resolution:
{
- integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==,
+ integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==,
}
'@emotion/memoize@0.9.0':
@@ -282,10 +282,10 @@ packages:
integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==,
}
- '@jridgewell/trace-mapping@0.3.30':
+ '@jridgewell/trace-mapping@0.3.31':
resolution:
{
- integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==,
+ integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==,
}
'@jsonjoy.com/base64@1.1.2':
@@ -348,36 +348,36 @@ packages:
integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==,
}
- '@mui/core-downloads-tracker@7.3.1':
+ '@mui/core-downloads-tracker@7.3.2':
resolution:
{
- integrity: sha512-+mIK1Z0BhOaQ0vCgOkT1mSrIpEHLo338h4/duuL4TBLXPvUMit732mnwJY3W40Avy30HdeSfwUAAGRkKmwRaEQ==,
+ integrity: sha512-AOyfHjyDKVPGJJFtxOlept3EYEdLoar/RvssBTWVAvDJGIE676dLi2oT/Kx+FoVXFoA/JdV7DEMq/BVWV3KHRw==,
}
- '@mui/icons-material@7.3.1':
+ '@mui/icons-material@7.3.2':
resolution:
{
- integrity: sha512-upzCtG6awpL6noEZlJ5Z01khZ9VnLNLaj7tb6iPbN6G97eYfUTs8e9OyPKy3rEms3VQWmVBfri7jzeaRxdFIzA==,
+ integrity: sha512-TZWazBjWXBjR6iGcNkbKklnwodcwj0SrChCNHc9BhD9rBgET22J1eFhHsEmvSvru9+opDy3umqAimQjokhfJlQ==,
}
engines: { node: '>=14.0.0' }
peerDependencies:
- '@mui/material': ^7.3.1
+ '@mui/material': ^7.3.2
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
optional: true
- '@mui/material@7.3.1':
+ '@mui/material@7.3.2':
resolution:
{
- integrity: sha512-Xf6Shbo03YmcBedZMwSpEFOwpYDtU7tC+rhAHTrA9FHk0FpsDqiQ9jUa1j/9s3HLs7KWb5mDcGnlwdh9Q9KAag==,
+ integrity: sha512-qXvbnawQhqUVfH1LMgMaiytP+ZpGoYhnGl7yYq2x57GYzcFL/iPzSZ3L30tlbwEjSVKNYcbiKO8tANR1tadjUg==,
}
engines: { node: '>=14.0.0' }
peerDependencies:
'@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0
- '@mui/material-pigment-css': ^7.3.1
+ '@mui/material-pigment-css': ^7.3.2
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -391,10 +391,10 @@ packages:
'@types/react':
optional: true
- '@mui/private-theming@7.3.1':
+ '@mui/private-theming@7.3.2':
resolution:
{
- integrity: sha512-WU3YLkKXii/x8ZEKnrLKsPwplCVE11yZxUvlaaZSIzCcI3x2OdFC8eMlNy74hVeUsYQvzzX1Es/k4ARPlFvpPQ==,
+ integrity: sha512-ha7mFoOyZGJr75xeiO9lugS3joRROjc8tG1u4P50dH0KR7bwhHznVMcYg7MouochUy0OxooJm/OOSpJ7gKcMvg==,
}
engines: { node: '>=14.0.0' }
peerDependencies:
@@ -404,10 +404,10 @@ packages:
'@types/react':
optional: true
- '@mui/styled-engine@7.3.1':
+ '@mui/styled-engine@7.3.2':
resolution:
{
- integrity: sha512-Nqo6OHjvJpXJ1+9TekTE//+8RybgPQUKwns2Lh0sq+8rJOUSUKS3KALv4InSOdHhIM9Mdi8/L7LTF1/Ky6D6TQ==,
+ integrity: sha512-PkJzW+mTaek4e0nPYZ6qLnW5RGa0KN+eRTf5FA2nc7cFZTeM+qebmGibaTLrgQBy3UpcpemaqfzToBNkzuxqew==,
}
engines: { node: '>=14.0.0' }
peerDependencies:
@@ -420,10 +420,10 @@ packages:
'@emotion/styled':
optional: true
- '@mui/system@7.3.1':
+ '@mui/system@7.3.2':
resolution:
{
- integrity: sha512-mIidecvcNVpNJMdPDmCeoSL5zshKBbYPcphjuh6ZMjhybhqhZ4mX6k9zmIWh6XOXcqRQMg5KrcjnO0QstrNj3w==,
+ integrity: sha512-9d8JEvZW+H6cVkaZ+FK56R53vkJe3HsTpcjMUtH8v1xK6Y1TjzHdZ7Jck02mGXJsE6MQGWVs3ogRHTQmS9Q/rA==,
}
engines: { node: '>=14.0.0' }
peerDependencies:
@@ -439,10 +439,10 @@ packages:
'@types/react':
optional: true
- '@mui/types@7.4.5':
+ '@mui/types@7.4.6':
resolution:
{
- integrity: sha512-ZPwlAOE3e8C0piCKbaabwrqZbW4QvWz0uapVPWya7fYj6PeDkl5sSJmomT7wjOcZGPB48G/a6Ubidqreptxz4g==,
+ integrity: sha512-NVBbIw+4CDMMppNamVxyTccNv0WxtDb7motWDlMeSC8Oy95saj1TIZMGynPpFLePt3yOD8TskzumeqORCgRGWw==,
}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -450,10 +450,10 @@ packages:
'@types/react':
optional: true
- '@mui/utils@7.3.1':
+ '@mui/utils@7.3.2':
resolution:
{
- integrity: sha512-/31y4wZqVWa0jzMnzo6JPjxwP6xXy4P3+iLbosFg/mJQowL1KIou0LC+lquWW60FKVbKz5ZUWBg2H3jausa0pw==,
+ integrity: sha512-4DMWQGenOdLnM3y/SdFQFwKsCLM+mqxzvoWp9+x2XdEzXapkznauHLiXtSohHs/mc0+5/9UACt1GdugCX2te5g==,
}
engines: { node: '>=14.0.0' }
peerDependencies:
@@ -463,10 +463,10 @@ packages:
'@types/react':
optional: true
- '@mui/x-data-grid@8.10.2':
+ '@mui/x-data-grid@8.11.2':
resolution:
{
- integrity: sha512-3RnGJ/J55yQxao97TbjUZO8WadLNhEZLLqUjCsJq+O2TN1XNFj5LaCkG+5xGmVhP+OsAhlTm5UDht7wX6/T1Mg==,
+ integrity: sha512-GSMDD4SuqTtsbZQMnTDFlVtewbPINmxTcGDeMQpJAQG8DMgV24UaoT1FYTqJiBkqnib6avz8ME0q/6i6BQGt3w==,
}
engines: { node: '>=14.0.0' }
peerDependencies:
@@ -482,10 +482,10 @@ packages:
'@emotion/styled':
optional: true
- '@mui/x-date-pickers@8.10.2':
+ '@mui/x-date-pickers@8.11.2':
resolution:
{
- integrity: sha512-eS5t1jUojN/jL2FeJ8gtpCBxIEswUp9kLjM64aJ5LUKrNgM7X9dwsEHyplS+x07kWLiEAhO3nX3mepnS3Z43qg==,
+ integrity: sha512-izosRFdlo0Aq4nrQ2klOQBLB+yCX3bIlErF/gxZfaXK/kb8NToweZjhHdiyy+hr+VrxK0A71AWI6LkPyfG2WCg==,
}
engines: { node: '>=14.0.0' }
peerDependencies:
@@ -522,19 +522,19 @@ packages:
moment-jalaali:
optional: true
- '@mui/x-internals@8.10.2':
+ '@mui/x-internals@8.11.2':
resolution:
{
- integrity: sha512-dlC0BQRRBdiWtqn1yDppaHYRUjU3OuPWTxy0UtqxDaJjJf4pfR8ALr243nbxgJAFqvQyWPWyO4A6p9x9eJMJEQ==,
+ integrity: sha512-3BFZ0Njgih+eWQBzSsdKEkRMlHtKRGFWz+/CGUrSBb5IApO0apkUSvG4v5augNYASsjksqWOXVlds7Wwznd0Lg==,
}
engines: { node: '>=14.0.0' }
peerDependencies:
react: ^17.0.0 || ^18.0.0 || ^19.0.0
- '@mui/x-virtualizer@0.1.3':
+ '@mui/x-virtualizer@0.1.6':
resolution:
{
- integrity: sha512-hD/hPoyFP6L/s/ewsni01xVHp2HfaDkrtNxgk8g87bJlZRZL6HbksaDMwkdHYHdTe/lm+9oe+zuA46NRM0eoIA==,
+ integrity: sha512-rZBS1+Y8micorIDs06REFsjQGMW+CJ0OiRnko32R2fvC7Wy5FrgZ/PK5im1vXG6a86lSg5YLKT9wr59/6NqRjQ==,
}
engines: { node: '>=14.0.0' }
peerDependencies:
@@ -658,10 +658,10 @@ packages:
integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==,
}
- '@types/node@24.3.0':
+ '@types/node@24.3.1':
resolution:
{
- integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==,
+ integrity: sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==,
}
'@types/parse-json@4.0.2':
@@ -1066,10 +1066,10 @@ packages:
integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==,
}
- caniuse-lite@1.0.30001737:
+ caniuse-lite@1.0.30001741:
resolution:
{
- integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==,
+ integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==,
}
chalk@4.1.2:
@@ -1283,10 +1283,10 @@ packages:
integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==,
}
- dayjs@1.11.15:
+ dayjs@1.11.18:
resolution:
{
- integrity: sha512-MC+DfnSWiM9APs7fpiurHGCoeIx0Gdl6QZBy+5lu8MbYKN5FZEXqOgrundfibdfhGZ15o9hzmZ2xJjZnbvgKXQ==,
+ integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==,
}
debug@2.6.9:
@@ -1410,10 +1410,10 @@ packages:
integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==,
}
- dotenv@17.2.1:
+ dotenv@17.2.2:
resolution:
{
- integrity: sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==,
+ integrity: sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==,
}
engines: { node: '>=12' }
@@ -1430,10 +1430,10 @@ packages:
integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==,
}
- electron-to-chromium@1.5.211:
+ electron-to-chromium@1.5.217:
resolution:
{
- integrity: sha512-IGBvimJkotaLzFnwIVgW9/UD/AOJ2tByUmeOrtqBfACSbAw5b1G0XpvdaieKyc7ULmbwXVx+4e4Be8pOPBrYkw==,
+ integrity: sha512-Pludfu5iBxp9XzNl0qq2G87hdD17ZV7h5T4n6rQXDi3nCyloBV3jreE9+8GC6g4X/5yxqVgXEURpcLtM0WS4jA==,
}
encodeurl@1.0.2:
@@ -2122,10 +2122,10 @@ packages:
}
engines: { node: '>= 0.6' }
- memfs@4.38.2:
+ memfs@4.39.0:
resolution:
{
- integrity: sha512-FpWsVHpAkoSh/LfY1BgAl72BVd374ooMRtDi2VqzBycX4XEfvC0XKACCe0C9VRZoYq5viuoyTv6lYXZ/Q7TrLQ==,
+ integrity: sha512-tFRr2IkSXl2B6IAJsxjHIMTOsfLt9W+8+t2uNxCeQcz4tFqgQR8DYk8hlLH2HsucTctLuoHq3U0G08atyBE3yw==,
}
engines: { node: '>= 4.0.0' }
@@ -2176,6 +2176,13 @@ packages:
}
engines: { node: '>= 0.6' }
+ mime-types@3.0.1:
+ resolution:
+ {
+ integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==,
+ }
+ engines: { node: '>= 0.6' }
+
mime@1.6.0:
resolution:
{
@@ -2250,10 +2257,10 @@ packages:
}
engines: { node: '>= 6.13.0' }
- node-releases@2.0.19:
+ node-releases@2.0.20:
resolution:
{
- integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==,
+ integrity: sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==,
}
normalize-path@3.0.0:
@@ -2683,10 +2690,10 @@ packages:
}
engines: { node: '>= 4' }
- run-applescript@7.0.0:
+ run-applescript@7.1.0:
resolution:
{
- integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==,
+ integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==,
}
engines: { node: '>=18' }
@@ -2988,10 +2995,10 @@ packages:
uglify-js:
optional: true
- terser@5.43.1:
+ terser@5.44.0:
resolution:
{
- integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==,
+ integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==,
}
engines: { node: '>=10' }
hasBin: true
@@ -3025,10 +3032,10 @@ packages:
}
engines: { node: '>=0.6' }
- tree-dump@1.0.3:
+ tree-dump@1.1.0:
resolution:
{
- integrity: sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==,
+ integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==,
}
engines: { node: '>=10.0' }
peerDependencies:
@@ -3158,10 +3165,10 @@ packages:
webpack-dev-server:
optional: true
- webpack-dev-middleware@7.4.2:
+ webpack-dev-middleware@7.4.3:
resolution:
{
- integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==,
+ integrity: sha512-5kA/PzpZzDz5mNOkcNLmU1UdjGeSSxd7rt1akWpI70jMNHLASiBPRaQZn0hgyhvhawfIwSnnLfDABIxL3ueyFg==,
}
engines: { node: '>= 18.12.0' }
peerDependencies:
@@ -3294,18 +3301,18 @@ snapshots:
'@babel/generator@7.28.3':
dependencies:
- '@babel/parser': 7.28.3
- '@babel/types': 7.28.2
+ '@babel/parser': 7.28.4
+ '@babel/types': 7.28.4
'@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.30
+ '@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
'@babel/helper-globals@7.28.0': {}
'@babel/helper-module-imports@7.27.1':
dependencies:
- '@babel/traverse': 7.28.3
- '@babel/types': 7.28.2
+ '@babel/traverse': 7.28.4
+ '@babel/types': 7.28.4
transitivePeerDependencies:
- supports-color
@@ -3313,31 +3320,31 @@ snapshots:
'@babel/helper-validator-identifier@7.27.1': {}
- '@babel/parser@7.28.3':
+ '@babel/parser@7.28.4':
dependencies:
- '@babel/types': 7.28.2
+ '@babel/types': 7.28.4
- '@babel/runtime@7.28.3': {}
+ '@babel/runtime@7.28.4': {}
'@babel/template@7.27.2':
dependencies:
'@babel/code-frame': 7.27.1
- '@babel/parser': 7.28.3
- '@babel/types': 7.28.2
+ '@babel/parser': 7.28.4
+ '@babel/types': 7.28.4
- '@babel/traverse@7.28.3':
+ '@babel/traverse@7.28.4':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/generator': 7.28.3
'@babel/helper-globals': 7.28.0
- '@babel/parser': 7.28.3
+ '@babel/parser': 7.28.4
'@babel/template': 7.27.2
- '@babel/types': 7.28.2
+ '@babel/types': 7.28.4
debug: 4.4.1
transitivePeerDependencies:
- supports-color
- '@babel/types@7.28.2':
+ '@babel/types@7.28.4':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
@@ -3347,7 +3354,7 @@ snapshots:
'@emotion/babel-plugin@11.13.5':
dependencies:
'@babel/helper-module-imports': 7.27.1
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
'@emotion/hash': 0.9.2
'@emotion/memoize': 0.9.0
'@emotion/serialize': 1.3.3
@@ -3370,7 +3377,7 @@ snapshots:
'@emotion/hash@0.9.2': {}
- '@emotion/is-prop-valid@1.3.1':
+ '@emotion/is-prop-valid@1.4.0':
dependencies:
'@emotion/memoize': 0.9.0
@@ -3378,7 +3385,7 @@ snapshots:
'@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5
'@emotion/cache': 11.14.0
'@emotion/serialize': 1.3.3
@@ -3404,9 +3411,9 @@ snapshots:
'@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5
- '@emotion/is-prop-valid': 1.3.1
+ '@emotion/is-prop-valid': 1.4.0
'@emotion/react': 11.14.0(@types/react@19.1.12)(react@18.3.1)
'@emotion/serialize': 1.3.3
'@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1)
@@ -3430,18 +3437,18 @@ snapshots:
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
- '@jridgewell/trace-mapping': 0.3.30
+ '@jridgewell/trace-mapping': 0.3.31
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/source-map@0.3.11':
dependencies:
'@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.30
+ '@jridgewell/trace-mapping': 0.3.31
'@jridgewell/sourcemap-codec@1.5.5': {}
- '@jridgewell/trace-mapping@0.3.30':
+ '@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
@@ -3483,23 +3490,23 @@ snapshots:
'@leichtgewicht/ip-codec@2.0.5': {}
- '@mui/core-downloads-tracker@7.3.1': {}
+ '@mui/core-downloads-tracker@7.3.2': {}
- '@mui/icons-material@7.3.1(@mui/material@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)':
+ '@mui/icons-material@7.3.2(@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
- '@mui/material': 7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@babel/runtime': 7.28.4
+ '@mui/material': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
optionalDependencies:
'@types/react': 19.1.12
- '@mui/material@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
- '@mui/core-downloads-tracker': 7.3.1
- '@mui/system': 7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
- '@mui/types': 7.4.5(@types/react@19.1.12)
- '@mui/utils': 7.3.1(@types/react@19.1.12)(react@18.3.1)
+ '@babel/runtime': 7.28.4
+ '@mui/core-downloads-tracker': 7.3.2
+ '@mui/system': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
+ '@mui/types': 7.4.6(@types/react@19.1.12)
+ '@mui/utils': 7.3.2(@types/react@19.1.12)(react@18.3.1)
'@popperjs/core': 2.11.8
'@types/react-transition-group': 4.4.12(@types/react@19.1.12)
clsx: 2.1.1
@@ -3514,18 +3521,18 @@ snapshots:
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
'@types/react': 19.1.12
- '@mui/private-theming@7.3.1(@types/react@19.1.12)(react@18.3.1)':
+ '@mui/private-theming@7.3.2(@types/react@19.1.12)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
- '@mui/utils': 7.3.1(@types/react@19.1.12)(react@18.3.1)
+ '@babel/runtime': 7.28.4
+ '@mui/utils': 7.3.2(@types/react@19.1.12)(react@18.3.1)
prop-types: 15.8.1
react: 18.3.1
optionalDependencies:
'@types/react': 19.1.12
- '@mui/styled-engine@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(react@18.3.1)':
+ '@mui/styled-engine@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
'@emotion/cache': 11.14.0
'@emotion/serialize': 1.3.3
'@emotion/sheet': 1.4.0
@@ -3536,13 +3543,13 @@ snapshots:
'@emotion/react': 11.14.0(@types/react@19.1.12)(react@18.3.1)
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
- '@mui/system@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)':
+ '@mui/system@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
- '@mui/private-theming': 7.3.1(@types/react@19.1.12)(react@18.3.1)
- '@mui/styled-engine': 7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(react@18.3.1)
- '@mui/types': 7.4.5(@types/react@19.1.12)
- '@mui/utils': 7.3.1(@types/react@19.1.12)(react@18.3.1)
+ '@babel/runtime': 7.28.4
+ '@mui/private-theming': 7.3.2(@types/react@19.1.12)(react@18.3.1)
+ '@mui/styled-engine': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(react@18.3.1)
+ '@mui/types': 7.4.6(@types/react@19.1.12)
+ '@mui/utils': 7.3.2(@types/react@19.1.12)(react@18.3.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
@@ -3552,16 +3559,16 @@ snapshots:
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
'@types/react': 19.1.12
- '@mui/types@7.4.5(@types/react@19.1.12)':
+ '@mui/types@7.4.6(@types/react@19.1.12)':
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
optionalDependencies:
'@types/react': 19.1.12
- '@mui/utils@7.3.1(@types/react@19.1.12)(react@18.3.1)':
+ '@mui/utils@7.3.2(@types/react@19.1.12)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
- '@mui/types': 7.4.5(@types/react@19.1.12)
+ '@babel/runtime': 7.28.4
+ '@mui/types': 7.4.6(@types/react@19.1.12)
'@types/prop-types': 15.7.15
clsx: 2.1.1
prop-types: 15.8.1
@@ -3570,14 +3577,14 @@ snapshots:
optionalDependencies:
'@types/react': 19.1.12
- '@mui/x-data-grid@8.10.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@mui/material@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mui/x-data-grid@8.11.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
- '@mui/material': 7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mui/system': 7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
- '@mui/utils': 7.3.1(@types/react@19.1.12)(react@18.3.1)
- '@mui/x-internals': 8.10.2(@types/react@19.1.12)(react@18.3.1)
- '@mui/x-virtualizer': 0.1.3(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@babel/runtime': 7.28.4
+ '@mui/material': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mui/system': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
+ '@mui/utils': 7.3.2(@types/react@19.1.12)(react@18.3.1)
+ '@mui/x-internals': 8.11.2(@types/react@19.1.12)(react@18.3.1)
+ '@mui/x-virtualizer': 0.1.6(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
clsx: 2.1.1
prop-types: 15.8.1
react: 18.3.1
@@ -3589,13 +3596,13 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@mui/x-date-pickers@8.10.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@mui/material@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(dayjs@1.11.15)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mui/x-date-pickers@8.11.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(dayjs@1.11.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
- '@mui/material': 7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mui/system': 7.3.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
- '@mui/utils': 7.3.1(@types/react@19.1.12)(react@18.3.1)
- '@mui/x-internals': 8.10.2(@types/react@19.1.12)(react@18.3.1)
+ '@babel/runtime': 7.28.4
+ '@mui/material': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mui/system': 7.3.2(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
+ '@mui/utils': 7.3.2(@types/react@19.1.12)(react@18.3.1)
+ '@mui/x-internals': 8.11.2(@types/react@19.1.12)(react@18.3.1)
'@types/react-transition-group': 4.4.12(@types/react@19.1.12)
clsx: 2.1.1
prop-types: 15.8.1
@@ -3605,25 +3612,25 @@ snapshots:
optionalDependencies:
'@emotion/react': 11.14.0(@types/react@19.1.12)(react@18.3.1)
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.1.12)(react@18.3.1))(@types/react@19.1.12)(react@18.3.1)
- dayjs: 1.11.15
+ dayjs: 1.11.18
transitivePeerDependencies:
- '@types/react'
- '@mui/x-internals@8.10.2(@types/react@19.1.12)(react@18.3.1)':
+ '@mui/x-internals@8.11.2(@types/react@19.1.12)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
- '@mui/utils': 7.3.1(@types/react@19.1.12)(react@18.3.1)
+ '@babel/runtime': 7.28.4
+ '@mui/utils': 7.3.2(@types/react@19.1.12)(react@18.3.1)
react: 18.3.1
reselect: 5.1.1
use-sync-external-store: 1.5.0(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
- '@mui/x-virtualizer@0.1.3(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mui/x-virtualizer@0.1.6(@types/react@19.1.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.28.3
- '@mui/utils': 7.3.1(@types/react@19.1.12)(react@18.3.1)
- '@mui/x-internals': 8.10.2(@types/react@19.1.12)(react@18.3.1)
+ '@babel/runtime': 7.28.4
+ '@mui/utils': 7.3.2(@types/react@19.1.12)(react@18.3.1)
+ '@mui/x-internals': 8.11.2(@types/react@19.1.12)(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
transitivePeerDependencies:
@@ -3644,20 +3651,20 @@ snapshots:
'@types/body-parser@1.19.6':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
'@types/bonjour@3.5.13':
dependencies:
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
'@types/connect-history-api-fallback@1.5.4':
dependencies:
'@types/express-serve-static-core': 4.19.6
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
'@types/connect@3.4.38':
dependencies:
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
'@types/eslint-scope@3.7.7':
dependencies:
@@ -3673,7 +3680,7 @@ snapshots:
'@types/express-serve-static-core@4.19.6':
dependencies:
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
'@types/qs': 6.14.0
'@types/range-parser': 1.2.7
'@types/send': 0.17.5
@@ -3691,7 +3698,7 @@ snapshots:
'@types/http-proxy@1.17.16':
dependencies:
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
'@types/json-schema@7.0.15': {}
@@ -3699,9 +3706,9 @@ snapshots:
'@types/node-forge@1.3.14':
dependencies:
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
- '@types/node@24.3.0':
+ '@types/node@24.3.1':
dependencies:
undici-types: 7.10.0
@@ -3726,7 +3733,7 @@ snapshots:
'@types/send@0.17.5':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
'@types/serve-index@1.9.4':
dependencies:
@@ -3735,16 +3742,16 @@ snapshots:
'@types/serve-static@1.15.8':
dependencies:
'@types/http-errors': 2.0.5
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
'@types/send': 0.17.5
'@types/sockjs@0.3.36':
dependencies:
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
'@types/ws@8.18.1':
dependencies:
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
'@webassemblyjs/ast@1.14.1':
dependencies:
@@ -3889,7 +3896,7 @@ snapshots:
babel-plugin-macros@3.1.0:
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
cosmiconfig: 7.1.0
resolve: 1.22.10
@@ -3927,16 +3934,16 @@ snapshots:
browserslist@4.25.4:
dependencies:
- caniuse-lite: 1.0.30001737
- electron-to-chromium: 1.5.211
- node-releases: 2.0.19
+ caniuse-lite: 1.0.30001741
+ electron-to-chromium: 1.5.217
+ node-releases: 2.0.20
update-browserslist-db: 1.1.3(browserslist@4.25.4)
buffer-from@1.1.2: {}
bundle-name@4.1.0:
dependencies:
- run-applescript: 7.0.0
+ run-applescript: 7.1.0
bytes@3.1.2: {}
@@ -3957,7 +3964,7 @@ snapshots:
pascal-case: 3.1.2
tslib: 2.8.1
- caniuse-lite@1.0.30001737: {}
+ caniuse-lite@1.0.30001741: {}
chalk@4.1.2:
dependencies:
@@ -4081,7 +4088,7 @@ snapshots:
csstype@3.1.3: {}
- dayjs@1.11.15: {}
+ dayjs@1.11.18: {}
debug@2.6.9:
dependencies:
@@ -4118,7 +4125,7 @@ snapshots:
dom-helpers@5.2.1:
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
csstype: 3.1.3
dom-serializer@1.4.1:
@@ -4144,7 +4151,7 @@ snapshots:
no-case: 3.0.4
tslib: 2.8.1
- dotenv@17.2.1: {}
+ dotenv@17.2.2: {}
dunder-proto@1.0.1:
dependencies:
@@ -4154,7 +4161,7 @@ snapshots:
ee-first@1.1.1: {}
- electron-to-chromium@1.5.211: {}
+ electron-to-chromium@1.5.217: {}
encodeurl@1.0.2: {}
@@ -4353,7 +4360,7 @@ snapshots:
he: 1.2.0
param-case: 3.0.4
relateurl: 0.2.7
- terser: 5.43.1
+ terser: 5.44.0
html-webpack-plugin@5.6.4(webpack@5.101.3):
dependencies:
@@ -4485,7 +4492,7 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 24.3.0
+ '@types/node': 24.3.1
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -4526,13 +4533,13 @@ snapshots:
media-typer@0.3.0: {}
- memfs@4.38.2:
+ memfs@4.39.0:
dependencies:
'@jsonjoy.com/json-pack': 1.11.0(tslib@2.8.1)
'@jsonjoy.com/util': 1.9.0(tslib@2.8.1)
glob-to-regex.js: 1.0.1(tslib@2.8.1)
thingies: 2.5.0(tslib@2.8.1)
- tree-dump: 1.0.3(tslib@2.8.1)
+ tree-dump: 1.1.0(tslib@2.8.1)
tslib: 2.8.1
merge-descriptors@1.0.3: {}
@@ -4554,6 +4561,10 @@ snapshots:
dependencies:
mime-db: 1.52.0
+ mime-types@3.0.1:
+ dependencies:
+ mime-db: 1.54.0
+
mime@1.6.0: {}
minimalistic-assert@1.0.1: {}
@@ -4582,7 +4593,7 @@ snapshots:
node-forge@1.3.1: {}
- node-releases@2.0.19: {}
+ node-releases@2.0.20: {}
normalize-path@3.0.0: {}
@@ -4757,7 +4768,7 @@ snapshots:
react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@babel/runtime': 7.28.3
+ '@babel/runtime': 7.28.4
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -4824,7 +4835,7 @@ snapshots:
retry@0.13.1: {}
- run-applescript@7.0.0: {}
+ run-applescript@7.1.0: {}
safe-buffer@5.1.2: {}
@@ -5015,14 +5026,14 @@ snapshots:
terser-webpack-plugin@5.3.14(webpack@5.101.3):
dependencies:
- '@jridgewell/trace-mapping': 0.3.30
+ '@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.2
serialize-javascript: 6.0.2
- terser: 5.43.1
+ terser: 5.44.0
webpack: 5.101.3(webpack-cli@6.0.1)
- terser@5.43.1:
+ terser@5.44.0:
dependencies:
'@jridgewell/source-map': 0.3.11
acorn: 8.15.0
@@ -5041,7 +5052,7 @@ snapshots:
toidentifier@1.0.1: {}
- tree-dump@1.0.3(tslib@2.8.1):
+ tree-dump@1.1.0(tslib@2.8.1):
dependencies:
tslib: 2.8.1
@@ -5116,11 +5127,11 @@ snapshots:
optionalDependencies:
webpack-dev-server: 5.2.2(webpack-cli@6.0.1)(webpack@5.101.3)
- webpack-dev-middleware@7.4.2(webpack@5.101.3):
+ webpack-dev-middleware@7.4.3(webpack@5.101.3):
dependencies:
colorette: 2.0.20
- memfs: 4.38.2
- mime-types: 2.1.35
+ memfs: 4.39.0
+ mime-types: 3.0.1
on-finished: 2.4.1
range-parser: 1.2.1
schema-utils: 4.3.2
@@ -5155,7 +5166,7 @@ snapshots:
serve-index: 1.9.1
sockjs: 0.3.24
spdy: 4.0.2
- webpack-dev-middleware: 7.4.2(webpack@5.101.3)
+ webpack-dev-middleware: 7.4.3(webpack@5.101.3)
ws: 8.18.3
optionalDependencies:
webpack: 5.101.3(webpack-cli@6.0.1)
diff --git a/client/src/components/base/MainNavigation.tsx b/client/src/components/base/MainNavigation.tsx
index f0963ad..bbe0bb1 100644
--- a/client/src/components/base/MainNavigation.tsx
+++ b/client/src/components/base/MainNavigation.tsx
@@ -84,7 +84,7 @@ export const MainNavigation = () => {
fontWeight="bold"
whiteSpace="nowrap"
>
- SEMOSS Blank Canvas
+ SEMOSS Template
diff --git a/client/src/components/examples/AddAnimalModal.tsx b/client/src/components/examples/AddAnimalModal.tsx
index 5f29c85..2c0085c 100644
--- a/client/src/components/examples/AddAnimalModal.tsx
+++ b/client/src/components/examples/AddAnimalModal.tsx
@@ -39,7 +39,7 @@ export const AddAnimalModal = ({ open, onClose }: AddAnimalModalProps) => {
*/
const handleSubmitClick = async () => {
addAnimal(
- `AddAnimal(animal_name=${JSON.stringify(animalName)}, animal_type=${JSON.stringify(animalType)}, date_of_birth=${JSON.stringify(dateOfBirth)})`,
+ `AddAnimal(animalName=${JSON.stringify(animalName)}, animalType=${JSON.stringify(animalType)}, dateOfBirth=${JSON.stringify(dateOfBirth)})`,
() => handleClose(true),
);
};
diff --git a/client/src/pages/Router.tsx b/client/src/pages/Router.tsx
index a6c125d..2be5ab3 100644
--- a/client/src/pages/Router.tsx
+++ b/client/src/pages/Router.tsx
@@ -3,8 +3,7 @@ import {
ROUTE_PATH_LOGIN_PAGE,
ROUTE_PATH_ANIMAL_PAGE,
} from './routes.constants';
-import { InitializedLayout } from './InitializedLayout';
-import { AuthorizedLayout } from './AuthorizedLayout';
+import { AuthorizedLayout, InitializedLayout } from './layouts';
import { HomePage } from './HomePage';
import { LoginPage } from './LoginPage';
import { AnimalPage } from './AnimalPage';
diff --git a/client/src/pages/AuthorizedLayout.tsx b/client/src/pages/layouts/AuthorizedLayout.tsx
similarity index 95%
rename from client/src/pages/AuthorizedLayout.tsx
rename to client/src/pages/layouts/AuthorizedLayout.tsx
index 960466a..28c61a5 100644
--- a/client/src/pages/AuthorizedLayout.tsx
+++ b/client/src/pages/layouts/AuthorizedLayout.tsx
@@ -1,6 +1,6 @@
import { useInsight } from '@semoss/sdk-react';
import { Navigate, Outlet, useLocation } from 'react-router';
-import { ROUTE_PATH_LOGIN_PAGE } from './routes.constants';
+import { ROUTE_PATH_LOGIN_PAGE } from '../routes.constants';
import { useAppContext } from '@/contexts';
import { LoadingScreen } from '@/components';
diff --git a/client/src/pages/InitializedLayout.tsx b/client/src/pages/layouts/InitializedLayout.tsx
similarity index 100%
rename from client/src/pages/InitializedLayout.tsx
rename to client/src/pages/layouts/InitializedLayout.tsx
diff --git a/client/src/pages/layouts/index.ts b/client/src/pages/layouts/index.ts
new file mode 100644
index 0000000..abb451a
--- /dev/null
+++ b/client/src/pages/layouts/index.ts
@@ -0,0 +1,2 @@
+export * from './AuthorizedLayout';
+export * from './InitializedLayout';
diff --git a/client/src/template.html b/client/src/template.html
index 2486858..2050d01 100644
--- a/client/src/template.html
+++ b/client/src/template.html
@@ -8,7 +8,7 @@
rel="stylesheet"
/>
-
SEMOSS Blank Canvas
+ SEMOSS Template
diff --git a/java/README.md b/java/README.md
index cfbbf7c..4247e34 100644
--- a/java/README.md
+++ b/java/README.md
@@ -8,10 +8,10 @@ Following the core SEMOSS install instructions, we will focus on using Eclipse a
### Project Import
-Install the project with `File > Import > Existing Maven Projects > Browse`. Navigate to the the SEMOSS project directory where you installed these files (e.g., `C:\workspace\Semoss\project\SemossBlankCanvas__[APP_ID]\app_root\version\assets`), and click `Select Folder`. Click `Finish`.
+Install the project with `File > Import > Existing Maven Projects > Browse`. Navigate to the the SEMOSS project directory where you installed these files (e.g., `C:\workspace\Semoss\project\SemossTemplate__[APP_ID]\app_root\version\assets`), and click `Select Folder`. Click `Finish`.
This should import the reactor files into your workspace. You may not see the project appear in your `Project Explorer` panel by default since it is nested in the `Semoss` project from the SEMOSS install instructions. You can click the vertical triple dots button to the top right of your project explorer and check that `Projects Presentation` shows as `Flat` instead of `Hierarchical` to get it to appear non-nested.
### Code Style
-The Blank Canvas repository enforces the Google Java Style Guide as a pre-commit hook to enforce code style. Code changes will be performed automatically at commit time to align with the guide, but you may want to update Eclipse's Java formatter to make these changes before commit time. You can install Google's formatter plugin by following the instructions [here](https://github.com/google/google-java-format?tab=readme-ov-file#eclipse). In short: download the (plugin)[https://github.com/google/google-java-format/releases/download/v1.23.0/google-java-format-eclipse-plugin-1.23.0.jar], and copy to `C:\Users\\eclipse\dropins` (or wherever you installed Eclipse). Once there you can right click your TQMC project, choose `Properties > Java Code Style > Formatter`, click the checkbox to `Enable project specific settings` and choose `google-java-format` in the dropdown for `Formatter implementation:`. After applying, you should be able to format a given source file to the new style guide with `Ctrl+Shift+F` or via `Source > Format` as per usual.
+The Template repository enforces the Google Java Style Guide as a pre-commit hook to enforce code style. Code changes will be performed automatically at commit time to align with the guide, but you may want to update Eclipse's Java formatter to make these changes before commit time. You can install Google's formatter plugin by following the instructions [here](https://github.com/google/google-java-format?tab=readme-ov-file#eclipse). In short: download the (plugin)[https://github.com/google/google-java-format/releases/download/v1.23.0/google-java-format-eclipse-plugin-1.23.0.jar], and copy to `C:\Users\\eclipse\dropins` (or wherever you installed Eclipse). Once there you can right click your TQMC project, choose `Properties > Java Code Style > Formatter`, click the checkbox to `Enable project specific settings` and choose `google-java-format` in the dropdown for `Formatter implementation:`. After applying, you should be able to format a given source file to the new style guide with `Ctrl+Shift+F` or via `Source > Format` as per usual.
diff --git a/java/src/domain/examples/AnimalData.java b/java/src/domain/examples/AnimalData.java
index 2095657..d158c7b 100644
--- a/java/src/domain/examples/AnimalData.java
+++ b/java/src/domain/examples/AnimalData.java
@@ -1,47 +1,47 @@
package domain.examples;
public class AnimalData {
- private int animal_id;
- private String animal_type;
- private String animal_name;
- private String date_of_birth;
+ private String animalId;
+ private String animalType;
+ private String animalName;
+ private String dateOfBirth;
- public AnimalData(int animal_id, String animal_type, String animal_name, String date_of_birth) {
- this.animal_id = animal_id;
- this.animal_type = animal_type;
- this.animal_name = animal_name;
- this.date_of_birth = date_of_birth;
+ public AnimalData(String animalId, String animalType, String animalName, String dateOfBirth) {
+ this.animalId = animalId;
+ this.animalType = animalType;
+ this.animalName = animalName;
+ this.dateOfBirth = dateOfBirth;
}
- public String getName() {
- return animal_name;
+ public String getAnimalName() {
+ return animalName;
}
- public void setName(String name) {
- this.animal_name = name;
+ public void setAnimalName(String animalName) {
+ this.animalName = animalName;
}
- public int getId() {
- return animal_id;
+ public String getAnimalId() {
+ return animalId;
}
- public void setId(int id) {
- this.animal_id = id;
+ public void setAnimalId(String animalId) {
+ this.animalId = animalId;
}
public String getDateOfBirth() {
- return date_of_birth;
+ return dateOfBirth;
}
public void setDateOfBirth(String dateOfBirth) {
- this.date_of_birth = dateOfBirth;
+ this.dateOfBirth = dateOfBirth;
}
- public String getType() {
- return animal_type;
+ public String getAnimalType() {
+ return animalType;
}
- public void setType(String type) {
- this.animal_type = type;
+ public void setAnimalType(String animalType) {
+ this.animalType = animalType;
}
}
diff --git a/java/src/reactors/AbstractProjectReactor.java b/java/src/reactors/AbstractProjectReactor.java
index cc8ddc4..b2cd317 100644
--- a/java/src/reactors/AbstractProjectReactor.java
+++ b/java/src/reactors/AbstractProjectReactor.java
@@ -2,13 +2,10 @@
import domain.base.ErrorCode;
import domain.base.ProjectException;
-import java.sql.Connection;
-import java.sql.SQLException;
-import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import prerna.auth.User;
-import prerna.engine.api.IRDBMSEngine;
+import prerna.engine.impl.rdbms.RDBMSNativeEngine;
import prerna.reactor.AbstractReactor;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.PixelOperationType;
@@ -21,11 +18,12 @@ public abstract class AbstractProjectReactor extends AbstractReactor {
private static final Logger LOGGER = LogManager.getLogger(AbstractProjectReactor.class);
protected User user;
-
protected String projectId;
protected ProjectProperties projectProperties;
- protected String engineId;
+ // intialize protected variables you would like your reactors to have access to
+ protected String databaseId;
+ protected RDBMSNativeEngine database;
protected NounMetadata result = null;
@@ -33,42 +31,7 @@ public abstract class AbstractProjectReactor extends AbstractReactor {
public NounMetadata execute() {
try {
preExecute();
-
- IRDBMSEngine engine = (IRDBMSEngine) Utility.getEngine(engineId);
- if (engine == null) {
- throw new ProjectException(ErrorCode.INTERNAL_SERVER_ERROR, "Unable to find database");
- }
- Connection con = null;
- try {
- con = engine.makeConnection();
-
- if (isReadOnly()) {
- result = doExecute(con);
- } else {
- boolean isAutoCommit = con.getAutoCommit();
- con.setAutoCommit(false);
- try {
- result = doExecute(con);
- con.commit();
- } catch (Exception e) {
- con.rollback();
- ProjectException ex = null;
- if (e instanceof ProjectException) {
- ex = (ProjectException) e;
- } else {
- ex = new ProjectException(ErrorCode.INTERNAL_SERVER_ERROR, e);
- }
- throw ex;
- } finally {
- con.setAutoCommit(isAutoCommit);
- }
- }
- } finally {
- if (engine.isConnectionPooling() && con != null) {
- con.close();
- }
- }
- return result;
+ return doExecute();
} catch (Exception e) {
ProjectException ex = null;
if (e instanceof ProjectException) {
@@ -78,15 +41,6 @@ public NounMetadata execute() {
}
LOGGER.error(String.format("Reactor %s threw an error", this.getClass().getSimpleName()), e);
- NounMetadata result =
- new NounMetadata(ex.getAsMap(), PixelDataType.MAP, PixelOperationType.ERROR);
- if (projectProperties != null && projectProperties.getDebuggingEnabled()) {
- result.addAdditionalReturn(
- new NounMetadata(
- ExceptionUtils.getFullStackTrace(e),
- PixelDataType.CONST_STRING,
- PixelOperationType.ERROR));
- }
return new NounMetadata(ex.getAsMap(), PixelDataType.MAP, PixelOperationType.ERROR);
}
}
@@ -98,16 +52,17 @@ protected void preExecute() {
}
projectProperties = ProjectProperties.getInstance(projectId);
- engineId = projectProperties.getEngineId();
+
+ // Update protected variables
+ databaseId = projectProperties.getDatabaseId();
+ if (databaseId != null) {
+ database = (RDBMSNativeEngine) Utility.getDatabase(databaseId);
+ }
user = this.insight.getUser();
organizeKeys();
}
- protected abstract NounMetadata doExecute(Connection con) throws SQLException;
-
- protected boolean isReadOnly() {
- return false;
- }
+ protected abstract NounMetadata doExecute();
}
diff --git a/java/src/reactors/HelloWorldReactor.java b/java/src/reactors/HelloWorldReactor.java
new file mode 100644
index 0000000..f7c73ef
--- /dev/null
+++ b/java/src/reactors/HelloWorldReactor.java
@@ -0,0 +1,19 @@
+package reactors;
+
+import prerna.sablecc2.om.PixelDataType;
+import prerna.sablecc2.om.nounmeta.NounMetadata;
+import util.Constants;
+
+public class HelloWorldReactor extends AbstractProjectReactor {
+
+ // Note: Has access to protected variables defined in AbstractProjectReactor
+
+ @Override
+ protected NounMetadata doExecute() {
+
+ // grabbing user from AbstractProjectReactor
+ String response = Constants.HELLO_WORLD + " " + user.getPrimaryLoginToken().getId();
+
+ return new NounMetadata(response, PixelDataType.CONST_STRING);
+ }
+}
diff --git a/java/src/reactors/examples/AddAnimalReactor.java b/java/src/reactors/examples/AddAnimalReactor.java
index 17be39f..a320e37 100644
--- a/java/src/reactors/examples/AddAnimalReactor.java
+++ b/java/src/reactors/examples/AddAnimalReactor.java
@@ -2,52 +2,35 @@
import domain.base.ErrorCode;
import domain.base.ProjectException;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
+import org.apache.commons.lang3.StringUtils;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import reactors.AbstractProjectReactor;
+import util.Constants;
+import util.HelperMethods;
public class AddAnimalReactor extends AbstractProjectReactor {
- public static final String animalNameColumn = "animal_name";
- public static final String animalTypeColumn = "animal_type";
- public static final String dateOfBirthColumn = "date_of_birth";
-
public AddAnimalReactor() {
- this.keysToGet = new String[] {animalNameColumn, animalTypeColumn, dateOfBirthColumn};
+ this.keysToGet =
+ new String[] {Constants.ANIMAL_NAME, Constants.ANIMAL_TYPE, Constants.DATE_OF_BIRTH};
this.keyRequired = new int[] {1, 1, 1};
}
@Override
- protected NounMetadata doExecute(Connection con) {
- String animalName = this.keyValue.get(animalNameColumn);
- String animalType = this.keyValue.get(animalTypeColumn);
- String dateOfBirth = this.keyValue.get(dateOfBirthColumn);
-
- if (animalName == null
- || animalName.isEmpty()
- || animalType == null
- || animalType.isEmpty()
- || dateOfBirth == null
- || dateOfBirth.isEmpty()) {
+ protected NounMetadata doExecute() {
+ String animalName = this.keyValue.get(Constants.ANIMAL_NAME);
+ String animalType = this.keyValue.get(Constants.ANIMAL_TYPE);
+ String dateOfBirth = this.keyValue.get(Constants.DATE_OF_BIRTH);
+
+ if (StringUtils.trimToNull(animalName) == null
+ || StringUtils.trimToNull(animalType) == null
+ || StringUtils.trimToNull(dateOfBirth) == null) {
throw new ProjectException(
ErrorCode.BAD_REQUEST, "Animal name, type, and date of birth cannot be empty");
}
- try (PreparedStatement ps =
- con.prepareStatement(
- "INSERT INTO animal (animal_name, animal_type, date_of_birth)\n"
- + "VALUES (?, ?, ?);")) {
- int parameterIndex = 1;
- ps.setString(parameterIndex++, animalName);
- ps.setString(parameterIndex++, animalType);
- ps.setString(parameterIndex++, dateOfBirth);
- ps.execute();
- } catch (SQLException e) {
- throw new ProjectException(ErrorCode.INTERNAL_SERVER_ERROR, "Error adding animal");
- }
+ HelperMethods.addAnimal(database, animalName, animalType, dateOfBirth);
return new NounMetadata(true, PixelDataType.BOOLEAN);
}
diff --git a/java/src/reactors/examples/DeleteAnimalReactor.java b/java/src/reactors/examples/DeleteAnimalReactor.java
index 56a76b7..96c9128 100644
--- a/java/src/reactors/examples/DeleteAnimalReactor.java
+++ b/java/src/reactors/examples/DeleteAnimalReactor.java
@@ -2,38 +2,33 @@
import domain.base.ErrorCode;
import domain.base.ProjectException;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
+import java.util.List;
+import java.util.Map;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import reactors.AbstractProjectReactor;
+import util.Constants;
import util.HelperMethods;
public class DeleteAnimalReactor extends AbstractProjectReactor {
- public static final String animalIdColumn = "animal_id";
-
public DeleteAnimalReactor() {
- this.keysToGet = new String[] {animalIdColumn};
+ this.keysToGet = new String[] {Constants.ANIMAL_ID};
this.keyRequired = new int[] {1};
}
@Override
- protected NounMetadata doExecute(Connection con) throws SQLException {
- int animalId = Integer.parseInt(this.keyValue.get(animalIdColumn));
+ protected NounMetadata doExecute() {
+ String animalId = this.keyValue.get(Constants.ANIMAL_ID);
// The below method will throw an exception if the animal does not exist
- HelperMethods.getAnimalByIdHelper(con, animalId);
-
- try (PreparedStatement ps = con.prepareStatement("DELETE FROM animal WHERE animal_id = ?")) {
- int parameterIndex = 1;
- ps.setInt(parameterIndex++, animalId);
- ps.execute();
- } catch (SQLException e) {
- throw new ProjectException(ErrorCode.INTERNAL_SERVER_ERROR, "Error deleting animal");
+ List