Merge branch 'main' of github.com:fleetbase/fleetbase into cloud

This commit is contained in:
Ronald A. Richardson
2025-11-06 21:29:34 +08:00
32 changed files with 994 additions and 325 deletions

View File

@@ -1,12 +1,21 @@
# 🚀 Fleetbase v0.7.15 — 2025-11-01
# 🚀 Fleetbase v0.7.16 — 2025-11-06
> "Optimization tune-up, prevent queue blockage"
> "New onboarding orchestrator, improved password security, UI improvements, bug fixes"
---
## ✨ Highlights
- Create surgical optimziations around metadata option data, as well as order methods to prevent trigger lifecycle jobs.
- Updated order `setDistanceAndTime` to prevent lifecycle job triggers, order estimation tracking limited to orders within past 2 days instead of month, now runs every 10 minutes instead of 5 minutes.
- New onboarding orchestrator to build more robust onboarding flows
- Made the `LogApiRequests` middleware more robust
- Fixed controller validation handling
- Added microsoft365/graph mail driver
- Improved password requirements (including breached password check)
- Patched creating duplicate users by email in IAM
- Patch env mapper
- Vehicle/driver tracking API doesnt fire resource lifecycle events or log requests - only tracking events
- Patched `<ModelCoordinatesInput />` component
- Security patch on Storefront customers API
- Styling updates on Storefront
---

View File

@@ -20,10 +20,10 @@
"require": {
"php": "^8.0",
"appstract/laravel-opcache": "^4.0",
"fleetbase/core-api": "^1.6.22",
"fleetbase/fleetops-api": "^0.6.23",
"fleetbase/core-api": "^1.6.23",
"fleetbase/fleetops-api": "^0.6.24",
"fleetbase/registry-bridge": "^0.1.0",
"fleetbase/storefront-api": "^0.4.4",
"fleetbase/storefront-api": "^0.4.5",
"fleetbase/billing-api": "^0.1.10",
"fleetbase/internals-api": "^0.0.21",
"fleetbase/aws-marketplace": "^0.0.6",

163
api/composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "49969a99fbaecba613b6076807881c43",
"content-hash": "7d23973ccd720dde9162b8c0dd32cf10",
"packages": [
{
"name": "appstract/laravel-opcache",
@@ -124,16 +124,16 @@
},
{
"name": "aws/aws-sdk-php",
"version": "3.359.3",
"version": "3.359.6",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "a32e4c9522f0b61c947fafa1713d3a24b397a757"
"reference": "8d2ab3687196f15209c316080a431911f2e02bb5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/a32e4c9522f0b61c947fafa1713d3a24b397a757",
"reference": "a32e4c9522f0b61c947fafa1713d3a24b397a757",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/8d2ab3687196f15209c316080a431911f2e02bb5",
"reference": "8d2ab3687196f15209c316080a431911f2e02bb5",
"shasum": ""
},
"require": {
@@ -215,9 +215,9 @@
"support": {
"forum": "https://github.com/aws/aws-sdk-php/discussions",
"issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.359.3"
"source": "https://github.com/aws/aws-sdk-php/tree/3.359.6"
},
"time": "2025-10-31T18:15:22+00:00"
"time": "2025-11-05T19:08:10+00:00"
},
{
"name": "aws/aws-sdk-php-laravel",
@@ -2252,7 +2252,7 @@
"version": "0.1.10",
"dist": {
"type": "tar",
"url": "https://s3.ap-southeast-1.amazonaws.com/fleetbase-registry-production/flb/%40fleetbase/billing-engine/billing-engine-0.1.10.tgz?AWSAccessKeyId=ASIA26E6KG6WMWWH24YC&Expires=1761978868&Signature=tNdwVTrpx4yVlq5MnDwSy1lqVGs%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEF4aDmFwLXNvdXRoZWFzdC0xIkgwRgIhAI7q8WL5C3zqGm9ONXxttDL5HLfAStsiC4pO3Lz3tMUGAiEA4iPd4dR61Knmb9Lcs5xPXcwOlC%2Fel359OoUK%2FK1WM50qlgQIJxAAGgw3NTE5NTEyOTY0MjgiDPqlJG4eAv%2FMuRtWpirzA9Worhz0K%2BTy0SlvInapxbCbA%2Bl47ypEfZLacaSi92NUjE0H1L8TAgG%2BwO6MZoS2ZOO5u4e%2Fb06UCYAsK6ygoSeQ6elrywdSmgkW4BUyclwx%2B2f0P7%2FyfUdt1TbHIKWuYxGHnnjLHcV050rO2Sn5Kc0rT6XHQkM7aFF7gFZ44qX1uLXDq%2FNrsUJx9isv9d0nF4z2nxdE8xcHxPvvIfpxNHLvb%2F7Btkeq5SFsHYtxKN%2F3%2B%2FFUKdP5VsrfGfm6JoNkOJEv9C79AjXPHymWcnj8Ue4S96TxH8NkQj%2FphaXuKCBcrGcsDoaoKo2qoeBlvWmLrphNRYaUPCJYwY8HKyYGslB%2FuvLX0nl4AAGSotN%2FSUchD9XfZArrmsNdVEcjPjx%2BDjNut8tPITxcUUKysjmng2DnJ2k3PzIo794MIB5lPI9DWunuslflo4RFlHdqW3qunCcxERgexdnX9CtlO%2BuWMGc%2BjwfKuqtEWP2HpU3Qa7itvG7tBvqqS5i1E7d%2FeKSeLauW88IYsny3Bq92yqjisgMng0PzUH%2FvcZEkozNat8JB%2BtVyOkSTLde8sRRWM6ZRUkDZ2ZimtwixGG0mFJeDp443cTE1%2F9ox5ByLFFEJ8%2BZM1E6GPus2ED2OgUC58aya3dj20FEDiA7v7WUF%2F2Yf5LkOuw0w9MOWyAY6pQEHesqYYf6bfUipc%2BK5NjGdXKbTYQ9ywPoae%2FDQf1IuZC8ZGEYLluAgOS1TXFBkTpkTI06DBUBUMCVSS%2FJH9XLTKSGTnimF72sUuITK2Fl8o%2BDFkjfs7ehSjoJt3z1yBnX0hPUFfk3zjfQkXNqvY2vW6y6r6IK66Bxr0y4PSZyCYBKJW26W2tk6SCBJUtI6yLzlc4%2BUZ7V8F19oDHHY%2BobkXZdFg00%3D"
"url": "https://s3.ap-southeast-1.amazonaws.com/fleetbase-registry-production/flb/%40fleetbase/billing-engine/billing-engine-0.1.10.tgz?AWSAccessKeyId=ASIA26E6KG6WN4HXRYIU&Expires=1762436591&Signature=i8YDhvKmYMgUkJh0iouoyVQbZgg%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEN3%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLXNvdXRoZWFzdC0xIkcwRQIhAL71eLeDZolyabzrt3dv%2BdsDqKNb21gFw8TNsgNNDm6%2FAiAI10AR7Yv%2FRfX7CNSsfdApp5QLw4TE0W3FjbLBU5tWJSqfBAim%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDc1MTk1MTI5NjQyOCIMWPq2mMqi84mhCGbXKvMDp1vwY6qgtUWdYjRX2d4V7jneV%2FhsvUu%2Bn1uo8zckQ9B6t%2F8k4u7Mvg5lN41NxHgvRUZrgv91PEoCQdyH4hYgolG3ne2hHM4WPgA1p4N7LuZZ2NI5PXu6i85xOSoDYAG5p%2FUwN0JsXBCSbiP4frWFU1MzH%2BKTYYLXlbSqA5E6eNcBHBQFhTOsFQpVpu4IZqB%2BOx8FRyS5Meq3%2B7kIsTNS%2BhHlh2VdIMztgyLUj7T6R2iBL28f1Qt5H1vLKb7F1QBabEAAPxfVcVrzQ%2FmvK5cWSdhQ%2FZb7BSaeEJKs%2FLxakrZWaE0PCuZB6ec53rcy2yotUP4WmD%2F%2Fg1y5jF8ER6I1OwdNv0YqpUpCGtqQoG96tMROwpmfAYPNtihRd3XbJqw5Mp7Tizgg5u2Nx9iuIE2RJVDAsmmMEdu93nijbUr83yEe%2FdWWs%2FyDxS2GdAnW%2Fv%2FeCPMviNIwJnfjNdGlJBTRcW9efczLaHVJmR1bVgXLV4zuBAX2mpSlC7dVk0gTy%2FWGC9PoYKTjAqGKqde33%2Biaasm6ft79DPvtS7Vdp60xQXDg6tkWLZhneC5SXTCorF0azCbQF16yGpW%2B7yGcci3rI1RQMKeWxXJJakBsBp3PYK%2B2RsZrKJDGOLzyHPzbNGcLVyoHsoCLzHgScE1dp9Txm75jSTC%2BwbLIBjqmARb7MVs89cx959v7f4KB3z89%2FYC518Kfc9x8bGbsx63gZp5sbE6cBtPjf0H9wCtbJ%2Fjzp0unUTrhAGuqbsoJvmBmhCfGN3y7n%2FT%2F5OLI5q6gTa%2FqkbwbjdJO3vA9PILcUUs2YejHolCl9faqAOO22vwR9UTfeWnH%2B9Krtsl%2BYm1%2F%2FqhCoNBlrC1yUo9XEELIuUw496YvOk%2BCB95XM33QMMnVHD1VujI%3D"
},
"require": {
"fleetbase/core-api": "*",
@@ -2347,16 +2347,16 @@
},
{
"name": "fleetbase/core-api",
"version": "1.6.22",
"version": "1.6.23",
"source": {
"type": "git",
"url": "https://github.com/fleetbase/core-api.git",
"reference": "7ba3d4563e0a167bf0901652db3c643fb33e0c6d"
"reference": "7093703521e6915aab6ad93afb4997eb6e9559c3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fleetbase/core-api/zipball/7ba3d4563e0a167bf0901652db3c643fb33e0c6d",
"reference": "7ba3d4563e0a167bf0901652db3c643fb33e0c6d",
"url": "https://api.github.com/repos/fleetbase/core-api/zipball/7093703521e6915aab6ad93afb4997eb6e9559c3",
"reference": "7093703521e6915aab6ad93afb4997eb6e9559c3",
"shasum": ""
},
"require": {
@@ -2376,6 +2376,7 @@
"illuminate/routing": "^9.0|^10.0",
"illuminate/support": "^9.0|^10.0",
"inkrot/php-compress-json": "^0.1.1",
"innoge/laravel-msgraph-mail": "^1.4",
"jdorn/sql-formatter": "^1.2",
"laravel-notification-channels/apn": "^5.0",
"laravel-notification-channels/fcm": "^4.1",
@@ -2441,9 +2442,9 @@
],
"support": {
"issues": "https://github.com/fleetbase/core-api/issues",
"source": "https://github.com/fleetbase/core-api/tree/v1.6.22"
"source": "https://github.com/fleetbase/core-api/tree/v1.6.23"
},
"time": "2025-11-01T05:53:44+00:00"
"time": "2025-11-06T11:50:01+00:00"
},
{
"name": "fleetbase/countries",
@@ -2515,7 +2516,7 @@
"version": "0.0.8",
"dist": {
"type": "tar",
"url": "https://s3.ap-southeast-1.amazonaws.com/fleetbase-registry-production/flb/%40fleetbase/customer-portal-engine/customer-portal-engine-0.0.8.tgz?AWSAccessKeyId=ASIA26E6KG6WMWWH24YC&Expires=1761978868&Signature=sQF0FxrhipXeRB7hbrgYJ%2BcWzXU%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEF4aDmFwLXNvdXRoZWFzdC0xIkgwRgIhAI7q8WL5C3zqGm9ONXxttDL5HLfAStsiC4pO3Lz3tMUGAiEA4iPd4dR61Knmb9Lcs5xPXcwOlC%2Fel359OoUK%2FK1WM50qlgQIJxAAGgw3NTE5NTEyOTY0MjgiDPqlJG4eAv%2FMuRtWpirzA9Worhz0K%2BTy0SlvInapxbCbA%2Bl47ypEfZLacaSi92NUjE0H1L8TAgG%2BwO6MZoS2ZOO5u4e%2Fb06UCYAsK6ygoSeQ6elrywdSmgkW4BUyclwx%2B2f0P7%2FyfUdt1TbHIKWuYxGHnnjLHcV050rO2Sn5Kc0rT6XHQkM7aFF7gFZ44qX1uLXDq%2FNrsUJx9isv9d0nF4z2nxdE8xcHxPvvIfpxNHLvb%2F7Btkeq5SFsHYtxKN%2F3%2B%2FFUKdP5VsrfGfm6JoNkOJEv9C79AjXPHymWcnj8Ue4S96TxH8NkQj%2FphaXuKCBcrGcsDoaoKo2qoeBlvWmLrphNRYaUPCJYwY8HKyYGslB%2FuvLX0nl4AAGSotN%2FSUchD9XfZArrmsNdVEcjPjx%2BDjNut8tPITxcUUKysjmng2DnJ2k3PzIo794MIB5lPI9DWunuslflo4RFlHdqW3qunCcxERgexdnX9CtlO%2BuWMGc%2BjwfKuqtEWP2HpU3Qa7itvG7tBvqqS5i1E7d%2FeKSeLauW88IYsny3Bq92yqjisgMng0PzUH%2FvcZEkozNat8JB%2BtVyOkSTLde8sRRWM6ZRUkDZ2ZimtwixGG0mFJeDp443cTE1%2F9ox5ByLFFEJ8%2BZM1E6GPus2ED2OgUC58aya3dj20FEDiA7v7WUF%2F2Yf5LkOuw0w9MOWyAY6pQEHesqYYf6bfUipc%2BK5NjGdXKbTYQ9ywPoae%2FDQf1IuZC8ZGEYLluAgOS1TXFBkTpkTI06DBUBUMCVSS%2FJH9XLTKSGTnimF72sUuITK2Fl8o%2BDFkjfs7ehSjoJt3z1yBnX0hPUFfk3zjfQkXNqvY2vW6y6r6IK66Bxr0y4PSZyCYBKJW26W2tk6SCBJUtI6yLzlc4%2BUZ7V8F19oDHHY%2BobkXZdFg00%3D"
"url": "https://s3.ap-southeast-1.amazonaws.com/fleetbase-registry-production/flb/%40fleetbase/customer-portal-engine/customer-portal-engine-0.0.8.tgz?AWSAccessKeyId=ASIA26E6KG6WN4HXRYIU&Expires=1762436591&Signature=sy7UAPTfME38M%2Baw35am1zl%2FIVY%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEN3%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLXNvdXRoZWFzdC0xIkcwRQIhAL71eLeDZolyabzrt3dv%2BdsDqKNb21gFw8TNsgNNDm6%2FAiAI10AR7Yv%2FRfX7CNSsfdApp5QLw4TE0W3FjbLBU5tWJSqfBAim%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDc1MTk1MTI5NjQyOCIMWPq2mMqi84mhCGbXKvMDp1vwY6qgtUWdYjRX2d4V7jneV%2FhsvUu%2Bn1uo8zckQ9B6t%2F8k4u7Mvg5lN41NxHgvRUZrgv91PEoCQdyH4hYgolG3ne2hHM4WPgA1p4N7LuZZ2NI5PXu6i85xOSoDYAG5p%2FUwN0JsXBCSbiP4frWFU1MzH%2BKTYYLXlbSqA5E6eNcBHBQFhTOsFQpVpu4IZqB%2BOx8FRyS5Meq3%2B7kIsTNS%2BhHlh2VdIMztgyLUj7T6R2iBL28f1Qt5H1vLKb7F1QBabEAAPxfVcVrzQ%2FmvK5cWSdhQ%2FZb7BSaeEJKs%2FLxakrZWaE0PCuZB6ec53rcy2yotUP4WmD%2F%2Fg1y5jF8ER6I1OwdNv0YqpUpCGtqQoG96tMROwpmfAYPNtihRd3XbJqw5Mp7Tizgg5u2Nx9iuIE2RJVDAsmmMEdu93nijbUr83yEe%2FdWWs%2FyDxS2GdAnW%2Fv%2FeCPMviNIwJnfjNdGlJBTRcW9efczLaHVJmR1bVgXLV4zuBAX2mpSlC7dVk0gTy%2FWGC9PoYKTjAqGKqde33%2Biaasm6ft79DPvtS7Vdp60xQXDg6tkWLZhneC5SXTCorF0azCbQF16yGpW%2B7yGcci3rI1RQMKeWxXJJakBsBp3PYK%2B2RsZrKJDGOLzyHPzbNGcLVyoHsoCLzHgScE1dp9Txm75jSTC%2BwbLIBjqmARb7MVs89cx959v7f4KB3z89%2FYC518Kfc9x8bGbsx63gZp5sbE6cBtPjf0H9wCtbJ%2Fjzp0unUTrhAGuqbsoJvmBmhCfGN3y7n%2FT%2F5OLI5q6gTa%2FqkbwbjdJO3vA9PILcUUs2YejHolCl9faqAOO22vwR9UTfeWnH%2B9Krtsl%2BYm1%2F%2FqhCoNBlrC1yUo9XEELIuUw496YvOk%2BCB95XM33QMMnVHD1VujI%3D"
},
"require": {
"fleetbase/core-api": "*",
@@ -2590,16 +2591,16 @@
},
{
"name": "fleetbase/fleetops-api",
"version": "0.6.23",
"version": "0.6.24",
"source": {
"type": "git",
"url": "https://github.com/fleetbase/fleetops.git",
"reference": "49360c081ba4872fea3de5aabfc69a188bc1145f"
"reference": "8d5f1f3707236b13d6a43b7a1131e644a446bc71"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fleetbase/fleetops/zipball/49360c081ba4872fea3de5aabfc69a188bc1145f",
"reference": "49360c081ba4872fea3de5aabfc69a188bc1145f",
"url": "https://api.github.com/repos/fleetbase/fleetops/zipball/8d5f1f3707236b13d6a43b7a1131e644a446bc71",
"reference": "8d5f1f3707236b13d6a43b7a1131e644a446bc71",
"shasum": ""
},
"require": {
@@ -2674,16 +2675,16 @@
],
"support": {
"issues": "https://github.com/fleetbase/fleetops/issues",
"source": "https://github.com/fleetbase/fleetops/tree/v0.6.23"
"source": "https://github.com/fleetbase/fleetops/tree/v0.6.24"
},
"time": "2025-11-01T05:57:03+00:00"
"time": "2025-11-06T12:20:51+00:00"
},
{
"name": "fleetbase/flespi-integration",
"version": "0.1.14",
"dist": {
"type": "tar",
"url": "https://s3.ap-southeast-1.amazonaws.com/fleetbase-registry-production/flb/%40fleetbase/flespi-engine/flespi-engine-0.1.14.tgz?AWSAccessKeyId=ASIA26E6KG6WMWWH24YC&Expires=1761978868&Signature=XMkQOGKC0GWOCOBvBhKPeJnnVu8%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEF4aDmFwLXNvdXRoZWFzdC0xIkgwRgIhAI7q8WL5C3zqGm9ONXxttDL5HLfAStsiC4pO3Lz3tMUGAiEA4iPd4dR61Knmb9Lcs5xPXcwOlC%2Fel359OoUK%2FK1WM50qlgQIJxAAGgw3NTE5NTEyOTY0MjgiDPqlJG4eAv%2FMuRtWpirzA9Worhz0K%2BTy0SlvInapxbCbA%2Bl47ypEfZLacaSi92NUjE0H1L8TAgG%2BwO6MZoS2ZOO5u4e%2Fb06UCYAsK6ygoSeQ6elrywdSmgkW4BUyclwx%2B2f0P7%2FyfUdt1TbHIKWuYxGHnnjLHcV050rO2Sn5Kc0rT6XHQkM7aFF7gFZ44qX1uLXDq%2FNrsUJx9isv9d0nF4z2nxdE8xcHxPvvIfpxNHLvb%2F7Btkeq5SFsHYtxKN%2F3%2B%2FFUKdP5VsrfGfm6JoNkOJEv9C79AjXPHymWcnj8Ue4S96TxH8NkQj%2FphaXuKCBcrGcsDoaoKo2qoeBlvWmLrphNRYaUPCJYwY8HKyYGslB%2FuvLX0nl4AAGSotN%2FSUchD9XfZArrmsNdVEcjPjx%2BDjNut8tPITxcUUKysjmng2DnJ2k3PzIo794MIB5lPI9DWunuslflo4RFlHdqW3qunCcxERgexdnX9CtlO%2BuWMGc%2BjwfKuqtEWP2HpU3Qa7itvG7tBvqqS5i1E7d%2FeKSeLauW88IYsny3Bq92yqjisgMng0PzUH%2FvcZEkozNat8JB%2BtVyOkSTLde8sRRWM6ZRUkDZ2ZimtwixGG0mFJeDp443cTE1%2F9ox5ByLFFEJ8%2BZM1E6GPus2ED2OgUC58aya3dj20FEDiA7v7WUF%2F2Yf5LkOuw0w9MOWyAY6pQEHesqYYf6bfUipc%2BK5NjGdXKbTYQ9ywPoae%2FDQf1IuZC8ZGEYLluAgOS1TXFBkTpkTI06DBUBUMCVSS%2FJH9XLTKSGTnimF72sUuITK2Fl8o%2BDFkjfs7ehSjoJt3z1yBnX0hPUFfk3zjfQkXNqvY2vW6y6r6IK66Bxr0y4PSZyCYBKJW26W2tk6SCBJUtI6yLzlc4%2BUZ7V8F19oDHHY%2BobkXZdFg00%3D"
"url": "https://s3.ap-southeast-1.amazonaws.com/fleetbase-registry-production/flb/%40fleetbase/flespi-engine/flespi-engine-0.1.14.tgz?AWSAccessKeyId=ASIA26E6KG6WN4HXRYIU&Expires=1762436591&Signature=JI%2BkBTavJef4cnCCwp5DzHSkuzE%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEN3%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLXNvdXRoZWFzdC0xIkcwRQIhAL71eLeDZolyabzrt3dv%2BdsDqKNb21gFw8TNsgNNDm6%2FAiAI10AR7Yv%2FRfX7CNSsfdApp5QLw4TE0W3FjbLBU5tWJSqfBAim%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8BEAAaDDc1MTk1MTI5NjQyOCIMWPq2mMqi84mhCGbXKvMDp1vwY6qgtUWdYjRX2d4V7jneV%2FhsvUu%2Bn1uo8zckQ9B6t%2F8k4u7Mvg5lN41NxHgvRUZrgv91PEoCQdyH4hYgolG3ne2hHM4WPgA1p4N7LuZZ2NI5PXu6i85xOSoDYAG5p%2FUwN0JsXBCSbiP4frWFU1MzH%2BKTYYLXlbSqA5E6eNcBHBQFhTOsFQpVpu4IZqB%2BOx8FRyS5Meq3%2B7kIsTNS%2BhHlh2VdIMztgyLUj7T6R2iBL28f1Qt5H1vLKb7F1QBabEAAPxfVcVrzQ%2FmvK5cWSdhQ%2FZb7BSaeEJKs%2FLxakrZWaE0PCuZB6ec53rcy2yotUP4WmD%2F%2Fg1y5jF8ER6I1OwdNv0YqpUpCGtqQoG96tMROwpmfAYPNtihRd3XbJqw5Mp7Tizgg5u2Nx9iuIE2RJVDAsmmMEdu93nijbUr83yEe%2FdWWs%2FyDxS2GdAnW%2Fv%2FeCPMviNIwJnfjNdGlJBTRcW9efczLaHVJmR1bVgXLV4zuBAX2mpSlC7dVk0gTy%2FWGC9PoYKTjAqGKqde33%2Biaasm6ft79DPvtS7Vdp60xQXDg6tkWLZhneC5SXTCorF0azCbQF16yGpW%2B7yGcci3rI1RQMKeWxXJJakBsBp3PYK%2B2RsZrKJDGOLzyHPzbNGcLVyoHsoCLzHgScE1dp9Txm75jSTC%2BwbLIBjqmARb7MVs89cx959v7f4KB3z89%2FYC518Kfc9x8bGbsx63gZp5sbE6cBtPjf0H9wCtbJ%2Fjzp0unUTrhAGuqbsoJvmBmhCfGN3y7n%2FT%2F5OLI5q6gTa%2FqkbwbjdJO3vA9PILcUUs2YejHolCl9faqAOO22vwR9UTfeWnH%2B9Krtsl%2BYm1%2F%2FqhCoNBlrC1yUo9XEELIuUw496YvOk%2BCB95XM33QMMnVHD1VujI%3D"
},
"require": {
"fleetbase/core-api": "*",
@@ -3088,16 +3089,16 @@
},
{
"name": "fleetbase/storefront-api",
"version": "0.4.4",
"version": "0.4.5",
"source": {
"type": "git",
"url": "https://github.com/fleetbase/storefront.git",
"reference": "3c86e4f8ad8f15ade883967a498990428ee0a0fa"
"reference": "ede69c8c3875c451a68b26207214108e9bea8d6e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fleetbase/storefront/zipball/3c86e4f8ad8f15ade883967a498990428ee0a0fa",
"reference": "3c86e4f8ad8f15ade883967a498990428ee0a0fa",
"url": "https://api.github.com/repos/fleetbase/storefront/zipball/ede69c8c3875c451a68b26207214108e9bea8d6e",
"reference": "ede69c8c3875c451a68b26207214108e9bea8d6e",
"shasum": ""
},
"require": {
@@ -3165,9 +3166,9 @@
],
"support": {
"issues": "https://github.com/fleetbase/storefront/issues",
"source": "https://github.com/fleetbase/storefront/tree/v0.4.4"
"source": "https://github.com/fleetbase/storefront/tree/v0.4.5"
},
"time": "2025-10-30T09:01:04+00:00"
"time": "2025-11-06T12:24:08+00:00"
},
{
"name": "fleetbase/twilio",
@@ -4043,16 +4044,16 @@
},
{
"name": "google/apiclient-services",
"version": "v0.418.0",
"version": "v0.419.0",
"source": {
"type": "git",
"url": "https://github.com/googleapis/google-api-php-client-services.git",
"reference": "87ad3c880a87f57eb200da0f021527d29128d7e5"
"reference": "14c42f3ebf1cf7fbd214a7a19f2318dd5b3d22b2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/87ad3c880a87f57eb200da0f021527d29128d7e5",
"reference": "87ad3c880a87f57eb200da0f021527d29128d7e5",
"url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/14c42f3ebf1cf7fbd214a7a19f2318dd5b3d22b2",
"reference": "14c42f3ebf1cf7fbd214a7a19f2318dd5b3d22b2",
"shasum": ""
},
"require": {
@@ -4081,9 +4082,9 @@
],
"support": {
"issues": "https://github.com/googleapis/google-api-php-client-services/issues",
"source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.418.0"
"source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.419.0"
},
"time": "2025-10-27T00:58:22+00:00"
"time": "2025-11-03T01:08:24+00:00"
},
{
"name": "google/auth",
@@ -5247,6 +5248,74 @@
},
"time": "2025-07-04T10:13:38+00:00"
},
{
"name": "innoge/laravel-msgraph-mail",
"version": "1.4.2",
"source": {
"type": "git",
"url": "https://github.com/InnoGE/laravel-msgraph-mail.git",
"reference": "288a9a6c7b28537111822549712f5ec04eba011e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/InnoGE/laravel-msgraph-mail/zipball/288a9a6c7b28537111822549712f5ec04eba011e",
"reference": "288a9a6c7b28537111822549712f5ec04eba011e",
"shasum": ""
},
"require": {
"illuminate/contracts": "^9.38|^10.0|^11.0|^12.0",
"php": "^8.1",
"spatie/laravel-package-tools": "^1.14.0",
"symfony/mailer": "^6.0|^7.0"
},
"require-dev": {
"composer/semver": "^3.4",
"guzzlehttp/guzzle": "^7.5",
"laravel/pint": "^1.0",
"nunomaduro/larastan": "^2.0.1|^3.0",
"orchestra/testbench": "^7.0|^8.0|^9.0|^10.0",
"pestphp/pest": "^1.21|^2.0|^3.0",
"pestphp/pest-plugin-laravel": "^1.21|^2.0|^3.0",
"phpstan/extension-installer": "^1.1",
"spatie/laravel-ray": "^1.26"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"InnoGE\\LaravelMsGraphMail\\LaravelMsGraphMailServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"InnoGE\\LaravelMsGraphMail\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Tim Geisendoerfer",
"email": "geisi@users.noreply.github.com",
"role": "Developer"
}
],
"description": "Laravel Mail driver for Microsoft Office 365 using the MSGraph API",
"homepage": "https://github.com/innoge/laravel-msgraph-mail",
"keywords": [
"innoge",
"laravel",
"laravel-msgraph-mail"
],
"support": {
"issues": "https://github.com/InnoGE/laravel-msgraph-mail/issues",
"source": "https://github.com/InnoGE/laravel-msgraph-mail/tree/1.4.2"
},
"time": "2025-10-08T11:55:06+00:00"
},
{
"name": "jdorn/sql-formatter",
"version": "v1.2.17",
@@ -11308,16 +11377,16 @@
},
{
"name": "sentry/sentry",
"version": "4.17.1",
"version": "4.18.0",
"source": {
"type": "git",
"url": "https://github.com/getsentry/sentry-php.git",
"reference": "5c696b8de57e841a2bf3b6f6eecfd99acfdda80c"
"reference": "75f7efb7d435d24767c93d0081b8edf228be5772"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/5c696b8de57e841a2bf3b6f6eecfd99acfdda80c",
"reference": "5c696b8de57e841a2bf3b6f6eecfd99acfdda80c",
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/75f7efb7d435d24767c93d0081b8edf228be5772",
"reference": "75f7efb7d435d24767c93d0081b8edf228be5772",
"shasum": ""
},
"require": {
@@ -11328,7 +11397,7 @@
"jean85/pretty-package-versions": "^1.5|^2.0.4",
"php": "^7.2|^8.0",
"psr/log": "^1.0|^2.0|^3.0",
"symfony/options-resolver": "^4.4.30|^5.0.11|^6.0|^7.0"
"symfony/options-resolver": "^4.4.30|^5.0.11|^6.0|^7.0|^8.0"
},
"conflict": {
"raven/raven": "*"
@@ -11380,7 +11449,7 @@
],
"support": {
"issues": "https://github.com/getsentry/sentry-php/issues",
"source": "https://github.com/getsentry/sentry-php/tree/4.17.1"
"source": "https://github.com/getsentry/sentry-php/tree/4.18.0"
},
"funding": [
{
@@ -11392,7 +11461,7 @@
"type": "custom"
}
],
"time": "2025-10-23T15:19:24+00:00"
"time": "2025-11-05T14:37:07+00:00"
},
{
"name": "sentry/sentry-laravel",
@@ -11710,16 +11779,16 @@
},
{
"name": "spatie/laravel-permission",
"version": "6.22.0",
"version": "6.23.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-permission.git",
"reference": "8c87966ddc21893bfda54b792047473703992625"
"reference": "9e41247bd512b1e6c229afbc1eb528f7565ae3bb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-permission/zipball/8c87966ddc21893bfda54b792047473703992625",
"reference": "8c87966ddc21893bfda54b792047473703992625",
"url": "https://api.github.com/repos/spatie/laravel-permission/zipball/9e41247bd512b1e6c229afbc1eb528f7565ae3bb",
"reference": "9e41247bd512b1e6c229afbc1eb528f7565ae3bb",
"shasum": ""
},
"require": {
@@ -11781,7 +11850,7 @@
],
"support": {
"issues": "https://github.com/spatie/laravel-permission/issues",
"source": "https://github.com/spatie/laravel-permission/tree/6.22.0"
"source": "https://github.com/spatie/laravel-permission/tree/6.23.0"
},
"funding": [
{
@@ -11789,7 +11858,7 @@
"type": "github"
}
],
"time": "2025-10-27T21:58:45+00:00"
"time": "2025-11-03T20:16:13+00:00"
},
{
"name": "spatie/laravel-responsecache",

View File

@@ -66,6 +66,18 @@ return [
'resend' => [],
'microsoft-graph' => [
'transport' => 'microsoft-graph',
'client_id' => env('MICROSOFT_GRAPH_CLIENT_ID'),
'client_secret' => env('MICROSOFT_GRAPH_CLIENT_SECRET'),
'tenant_id' => env('MICROSOFT_GRAPH_TENANT_ID'),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@fleetbase.io'),
'name' => env('MAIL_FROM_NAME', env('APP_NAME', 'Fleetbase')),
],
'save_to_sent_items' => env('MAIL_SAVE_TO_SENT_ITEMS', false),
],
'sendmail' => [
'transport' => 'sendmail',
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -t -i'),

View File

@@ -13,6 +13,14 @@
<InputGroup @name="SMTP Timeout" @value={{this.smtpTimeout}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="SMTP Auth Mode" @value={{this.smtpAuth_mode}} disabled={{this.loadConfigValues.isRunning}} />
{{/if}}
{{#if (eq this.mailer "microsoft-graph")}}
<InputGroup @name="Client ID" @value={{this.microsoftGraphClient_id}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="Client Secret" @value={{this.microsoftGraphClient_secret}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="Tenant ID" @value={{this.microsoftGraphTenant_id}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup>
<Toggle @isToggled={{this.microsoftGraphSave_to_sent_items}} @onToggle={{fn (mut this.microsoftGraphSave_to_sent_items)}} @label="Save to sent items" />
</InputGroup>
{{/if}}
{{#if (eq this.mailer "mailgun")}}
<InputGroup @name="Mailgun Domain" @value={{this.mailgunDomain}} disabled={{this.loadConfigValues.isRunning}} />
<InputGroup @name="Mailgun Endpoint" @value={{this.mailgunEndpoint}} disabled={{this.loadConfigValues.isRunning}} />

View File

@@ -26,6 +26,10 @@ export default class ConfigureMailComponent extends Component {
@tracked postmarkToken = null;
@tracked sendgridApi_key = null;
@tracked resendKey = null;
@tracked microsoftGraphClient_id = null;
@tracked microsoftGraphClient_secret = null;
@tracked microsoftGraphTenant_id = null;
@tracked microsoftGraphSave_to_sent_items = false;
/**
* Creates an instance of ConfigureFilesystemComponent.
@@ -64,6 +68,19 @@ export default class ConfigureMailComponent extends Component {
};
}
@action serializeMicrosoftGraphConfig() {
return {
client_id: this.microsoftGraphClient_id,
client_secret: this.microsoftGraphClient_secret,
tenant_id: this.microsoftGraphTenant_id,
save_to_sent_items: this.microsoftGraphSave_to_sent_items,
from: {
address: this.fromAddress,
name: this.fromName,
},
};
}
@action serializeMailgunConfig() {
return {
domain: this.mailgunDomain,
@@ -112,6 +129,7 @@ export default class ConfigureMailComponent extends Component {
postmark: this.serializePostmarkConfig(),
sendgrid: this.serializeSendgridConfig(),
resend: this.serializeResendConfig(),
microsoftGraph: this.serializeMicrosoftGraphConfig(),
});
} catch (error) {
this.notifications.serverError(error);
@@ -131,6 +149,7 @@ export default class ConfigureMailComponent extends Component {
postmark: this.serializePostmarkConfig(),
sendgrid: this.serializeSendgridConfig(),
resend: this.serializeResendConfig(),
microsoftGraph: this.serializeMicrosoftGraphConfig(),
});
this.notifications.success('Mail configuration saved.');
} catch (error) {

View File

@@ -0,0 +1,42 @@
<div class="bg-white dark:bg-gray-800 py-5 px-4 shadow rounded-lg w-full">
<div class="mb-4">
<Image src={{@brand.logo_url}} @fallbackSrc="/images/fleetbase-logo-svg.svg" alt={{t "app.name"}} height="56" class="h-10 object-contain mx-auto" />
<div class="mt-2">
<h2 class="text-center text-lg font-extrabold text-gray-900 dark:text-white truncate">
{{t "onboard.index.title"}}
</h2>
</div>
</div>
<div class="flex px-3 py-2 mb-4 rounded-md shadow-sm bg-blue-200">
<div>
<FaIcon @icon="hand-spock" @size="lg" class="text-blue-900 mr-4" />
</div>
<p class="flex-1 text-sm text-blue-900 dark:text-blue-900">
{{t "onboard.index.welcome-title" htmlSafe=true companyName=(t "app.name")}}
{{t "onboard.index.welcome-text"}}
</p>
</div>
<form {{on "submit" (perform this.onboard)}}>
{{#if this.error}}
<InfoBlock @icon="exclamation-triangle" @text={{this.error}} class="mb-6 px-3 py-2 bg-red-300 text-red-900" @textClass="text-red-900" />
{{/if}}
<InputGroup @name={{t "onboard.index.full-name"}} @value={{this.name}} @helpText={{t "onboard.index.full-name-help-text"}} @inputClass="input-lg" />
<InputGroup @name={{t "onboard.index.your-email"}} @type="email" @value={{this.email}} @helpText={{t "onboard.index.your-email-help-text"}} @inputClass="input-lg" />
<InputGroup @name={{t "onboard.index.phone"}} @helpText={{t "onboard.index.phone-help-text"}}>
<PhoneInput @onInput={{fn (mut this.phone)}} class="form-input input-lg w-full" />
</InputGroup>
<InputGroup @name={{t "onboard.index.organization-name"}} @value={{this.organization_name}} @helpText={{t "onboard.index.organization-help-text"}} @inputClass="input-lg" />
<InputGroup @name={{t "onboard.index.password"}} @value={{this.password}} @type="password" @helpText={{t "onboard.index.password-help-text"}} @inputClass="input-lg" />
<InputGroup @name={{t "onboard.index.confirm-password"}} @value={{this.password_confirmation}} @type="password" @helpText={{t "onboard.index.confirm-password-help-text"}} @inputClass="input-lg" />
<div class="flex items-center justify-end mt-5">
<Button @buttonType="submit" @icon="check" @iconPrefix="fas" @type="primary" @size="lg" @text={{t "onboard.index.continue-button-text"}} @isLoading={{this.onboard.isRunning}} @disabled={{not this.filled}} />
</div>
</form>
<RegistryYield @registry="onboard" as |YieldedComponent ctx|>
<YieldedComponent @context={{ctx}} />
</RegistryYield>
</div>

View File

@@ -0,0 +1,77 @@
import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
import { action, getProperties } from '@ember/object';
import { isBlank } from '@ember/utils';
import { task } from 'ember-concurrency';
import OnboardValidations from '../../validations/onboard';
import lookupValidator from 'ember-changeset-validations';
import Changeset from 'ember-changeset';
export default class OnboardingFormComponent extends Component {
@service fetch;
@service session;
@service router;
@service notifications;
@service urlSearchParams;
@tracked name;
@tracked email;
@tracked phone;
@tracked organization_name;
@tracked password;
@tracked password_confirmation;
@tracked error;
get filled() {
// eslint-disable-next-line ember/no-get
const input = getProperties(this, 'name', 'email', 'phone', 'organization_name', 'password', 'password_confirmation');
return Object.values(input).every((val) => !isBlank(val));
}
@task *onboard(event) {
event?.preventDefault?.();
// eslint-disable-next-line ember/no-get
const input = getProperties(this, 'name', 'email', 'phone', 'organization_name', 'password', 'password_confirmation');
const changeset = new Changeset(input, lookupValidator(OnboardValidations), OnboardValidations);
yield changeset.validate();
if (changeset.get('isInvalid')) {
const errorMessage = changeset.errors.firstObject.validation.firstObject;
this.notifications.error(errorMessage);
return;
}
// Set user timezone
input.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
try {
const { status, skipVerification, token, session } = yield this.fetch.post('onboard/create-account', input);
if (status !== 'success') {
this.notifications.error('Onboard failed');
return;
}
// save session
this.args.context.persist('session', session);
if (skipVerification === true && token) {
// only manually authenticate if skip verification
this.session.isOnboarding().manuallyAuthenticate(token);
yield this.router.transitionTo('console');
return this.notifications.success('Welcome to Fleetbase!');
} else {
this.args.orchestrator.next();
this.urlSearchParams.setParamsToCurrentUrl({
step: this.args.orchestrator?.current?.id,
session,
});
}
} catch (err) {
this.notifications.serverError(err);
}
}
}

View File

@@ -0,0 +1,78 @@
{{page-title (t "onboard.verify-email.header-title")}}
{{#if this.initialized}}
<div class="bg-white dark:bg-gray-800 py-8 px-4 shadow rounded-lg w-full">
<div class="mb-6">
<LinkTo @route="console" class="flex items-center justify-center">
<LogoIcon @size="12" class="rounded-md" />
</LinkTo>
<h2 class="mt-6 text-center text-lg font-extrabold text-gray-900 dark:text-white truncate">
{{t "onboard.verify-email.title"}}
</h2>
</div>
<InfoBlock @type="info" @icon="shield-halved" @iconSize="lg">
{{t "onboard.verify-email.message-text" htmlSafe=true}}
</InfoBlock>
<form class="mt-8 space-y-6" {{on "submit" (perform this.verify)}}>
<InputGroup
@type="tel"
@name={{t "onboard.verify-email.verification-input-label"}}
@value={{this.code}}
@helpText={{t "onboard.verify-email.verification-code-text"}}
@inputClass="input-lg"
{{on "input" this.verification.validateInput}}
{{did-insert this.verification.validateInput}}
/>
<div class="flex flex-row items-center space-x-4">
<Button
@icon="check"
@iconPrefix="fas"
@buttonType="submit"
@type="primary"
@size="lg"
@text="Verify & Continue"
@isLoading={{this.verify.isRunning}}
@disabled={{not this.verification.ready}}
/>
<a href="#" {{on "click" this.verification.didntReceiveCode}} class="text-sm text-blue-400 hover:text-blue-300">{{t "onboard.verify-email.didnt-receive-a-code"}}</a>
</div>
{{#if this.verification.waiting}}
<div class="flex flex-col flex-grow-0 flex-shrink-0 text-sm bg-yellow-800 border border-yellow-600 px-2 py-2 rounded-md text-yellow-100 my-4 transition-all">
<div class="flex flex-row items-start mb-2">
<div class="w-8 flex-grow-0 flex-shrink-0">
<FaIcon @icon="triangle-exclamation" @size="xl" class="pt-1" />
</div>
<div class="flex-1">
<div class="flex-1 text-sm text-yellow-100">
<div>{{t "auth.verification.didnt-receive-a-code" htmlSafe=true}}</div>
<div>{{t "auth.verification.not-sent.alternative-choice" htmlSafe=true}}</div>
</div>
</div>
</div>
<div class="flex items-center space-x-2">
<Button
@text={{t "auth.verification.not-sent.resend-email"}}
@buttonType="button"
@type="link"
class="text-yellow-100"
@wrapperClass="px-4 py-2 bg-gray-900 bg-opacity-25 hover:opacity-50"
@onClick={{this.verification.resendEmail}}
/>
<Button
@text={{t "auth.verification.not-sent.send-by-sms"}}
@buttonType="button"
@type="link"
class="text-yellow-100"
@wrapperClass="px-4 py-2 bg-gray-900 bg-opacity-25 hover:opacity-50"
@onClick={{this.verification.resendBySms}}
/>
</div>
</div>
{{/if}}
</form>
</div>
{{/if}}

View File

@@ -0,0 +1,53 @@
import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { later, next } from '@ember/runloop';
import { not } from '@ember/object/computed';
import { task } from 'ember-concurrency';
export default class OnboardingVerifyEmailComponent extends Component {
@service('session') authSession;
@service('user-verification') verification;
@service fetch;
@service notifications;
@service router;
@service urlSearchParams;
@tracked code;
@tracked session;
@tracked initialized = false;
constructor() {
super(...arguments);
next(() => this.#initialize());
}
#initialize() {
this.code = this.urlSearchParams.get('code');
this.session = this.args.context.get('session') ?? this.urlSearchParams.get('session');
this.initialized = true;
this.verification.start();
}
@task *verify(event) {
event?.preventDefault?.();
try {
const { status, token } = yield this.fetch.post('onboard/verify-email', { session: this.session, code: this.code });
if (status === 'ok') {
this.notifications.success('Email successfully verified!');
if (token) {
this.notifications.info('Welcome to Fleetbase!');
this.authSession.manuallyAuthenticate(token);
return this.router.transitionTo('console');
}
return this.router.transitionTo('auth.login');
}
} catch (error) {
this.notifications.serverError(error);
}
}
}

View File

@@ -0,0 +1,11 @@
<section class="onboarding step-host">
{{#if this.initialized}}
{{#if this.currentComponent}}
{{component this.currentComponent context=this.context orchestrator=this.orchestrator brand=@brand}}
{{/if}}
{{else}}
<div class="flex items-center justify-center min-h-24">
<Spinner />
</div>
{{/if}}
</section>

View File

@@ -0,0 +1,27 @@
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { next } from '@ember/runloop';
export default class OnboardingYieldComponent extends Component {
@service('onboarding-orchestrator') orchestrator;
@service('onboarding-context') context;
@tracked initialized = false;
get currentComponent() {
return this.orchestrator.current && this.orchestrator.current.component;
}
constructor(owner, { step, session, code }) {
super(...arguments);
next(() => this.#initialize(step, session, code));
}
#initialize(step, session, code) {
if (step) this.orchestrator.goto(step);
if (session) this.context.persist('session', session);
if (code) this.context.set('code', code);
this.initialized = true;
}
}

View File

@@ -1,151 +1,8 @@
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
import { action, getProperties } from '@ember/object';
import OnboardValidations from '../../validations/onboard';
import lookupValidator from 'ember-changeset-validations';
import Changeset from 'ember-changeset';
export default class OnboardIndexController extends Controller {
/**
* Inject the `fetch` service
*
* @memberof OnboardIndexController
*/
@service fetch;
/**
* Inject the `session` service
*
* @memberof OnboardIndexController
*/
@service session;
/**
* Inject the `router` service
*
* @memberof OnboardIndexController
*/
@service router;
/**
* Inject the `notifications` service
*
* @memberof OnboardIndexController
*/
@service notifications;
/**
* The name input field.
*
* @memberof OnboardIndexController
*/
@tracked name;
/**
* The email input field.
*
* @memberof OnboardIndexController
*/
@tracked email;
/**
* The phone input field.
*
* @memberof OnboardIndexController
*/
@tracked phone;
/**
* The organization_name input field.
*
* @memberof OnboardIndexController
*/
@tracked organization_name;
/**
* The password input field.
*
* @memberof OnboardIndexController
*/
@tracked password;
/**
* The name password confirmation field.
*
* @memberof OnboardIndexController
*/
@tracked password_confirmation;
/**
* The property for error message.
*
* @memberof OnboardIndexController
*/
@tracked error;
/**
* The loading state of the onboard request.
*
* @memberof OnboardIndexController
*/
@tracked isLoading = false;
/**
* The ready state for the form.
*
* @memberof OnboardIndexController
*/
@tracked readyToSubmit = false;
/**
* Start the onboard process.
*
* @return {Promise}
* @memberof OnboardIndexController
*/
@action async startOnboard(event) {
event.preventDefault();
// eslint-disable-next-line ember/no-get
const input = getProperties(this, 'name', 'email', 'phone', 'organization_name', 'password', 'password_confirmation');
const changeset = new Changeset(input, lookupValidator(OnboardValidations), OnboardValidations);
await changeset.validate();
if (changeset.get('isInvalid')) {
const errorMessage = changeset.errors.firstObject.validation.firstObject;
this.notifications.error(errorMessage);
return;
}
// Set user timezone
input.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
this.isLoading = true;
return this.fetch
.post('onboard/create-account', input)
.then(({ status, skipVerification, token, session }) => {
if (status === 'success') {
if (skipVerification === true && token) {
// only manually authenticate if skip verification
this.session.isOnboarding().manuallyAuthenticate(token);
return this.router.transitionTo('console').then(() => {
this.notifications.success('Welcome to Fleetbase!');
});
}
return this.router.transitionTo('onboard.verify-email', { queryParams: { hello: session } });
}
})
.catch((error) => {
this.notifications.serverError(error);
})
.finally(() => {
this.isLoading = false;
});
}
@tracked step;
@tracked session;
@tracked code;
}

View File

@@ -0,0 +1,19 @@
export function initialize(owner) {
const registry = owner.lookup('service:onboarding-registry');
if (registry) {
const defaultFlow = {
id: 'default@v1',
entry: 'signup',
steps: [
{ id: 'signup', component: 'onboarding/form', next: 'verify-email' },
{ id: 'verify-email', component: 'onboarding/verify-email' },
],
};
registry.registerFlow(defaultFlow);
}
}
export default {
initialize,
};

View File

@@ -3,6 +3,17 @@ import { inject as service } from '@ember/service';
export default class OnboardIndexRoute extends Route {
@service store;
@service('onboarding-orchestrator') orchestrator;
queryParams = {
step: { refreshModel: false },
session: { refreshModel: false },
code: { refreshModel: false },
};
beforeModel() {
this.orchestrator.start();
}
model() {
return this.store.findRecord('brand', 1);

View File

@@ -0,0 +1,39 @@
import Service, { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
export default class OnboardingContextService extends Service {
@service appCache;
@tracked data = {};
get(key) {
return this.data[key] ?? this.appCache.get(`onboarding:context:${key}`);
}
getFromCache(key) {
return this.appCache.get(`onboarding:context:${key}`);
}
set(key, value, options = {}) {
this.data = { ...this.data, [key]: value };
if (options?.persist === true) {
this.appCache.set(`onboarding:context:${key}`, value);
}
}
persist(key, value) {
this.set(key, value, { persist: true });
}
del(key) {
const { [key]: _drop, ...rest } = this.data; // eslint-disable-line no-unused-vars
this.data = rest;
this.appCache.set(`onboarding:context:${key}`, undefined);
}
reset() {
for (let key in this.data) {
this.appCache.set(`onboarding:context:${key}`, undefined);
}
this.data = {};
}
}

View File

@@ -0,0 +1,71 @@
import Service from '@ember/service';
import { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
export default class OnboardingOrchestratorService extends Service {
@service onboardingRegistry;
@service onboardingContext;
@tracked flow = null;
@tracked current = null;
@tracked history = [];
@tracked sessionId = null;
start(flowId = null, opts = {}) {
const flow = this.onboardingRegistry.getFlow(flowId ?? this.onboardingRegistry.defaultFlow);
if (!flow) throw new Error(`Onboarding flow '${flowId}' not found`);
this.flow = flow;
this.sessionId = opts.sessionId || null;
this.history = [];
this.goto(flow.entry);
}
async goto(stepId) {
if (!this.flow) throw new Error('No active onboarding flow');
const step = this.flow.steps.find((s) => s.id === stepId);
if (!step) throw new Error(`Step '${stepId}' not found`);
if (typeof step.guard === 'function' && !step.guard(this.onboardingContext)) {
return this.next();
}
if (typeof step.beforeEnter === 'function') {
await step.beforeEnter(this.onboardingContext);
}
this.current = step;
}
async next() {
if (!this.flow || !this.current) return;
const leaving = this.current;
if (typeof leaving.afterLeave === 'function') {
await leaving.afterLeave(this.onboardingContext);
}
if (!this.history.includes(leaving)) this.history.push(leaving);
let nextId;
if (typeof leaving.next === 'function') {
nextId = leaving.next(this.onboardingContext);
} else {
nextId = leaving.next;
}
if (!nextId) {
this.current = null; // finished
return;
}
return this.goto(nextId);
}
async back() {
if (!this.flow || this.history.length === 0) return;
const prev = this.history[this.history.length - 1];
if (prev && prev.allowBack === false) return;
this.history = this.history.slice(0, -1);
await this.goto(prev.id);
}
}

View File

@@ -0,0 +1,31 @@
import Service from '@ember/service';
import { tracked } from '@glimmer/tracking';
export default class OnboardingRegistryService extends Service {
flows = new Map();
@tracked defaultFlow = 'default@v1';
useFlow(flowId) {
this.defaultFlow = flowId;
}
registerFlow(flow) {
if (!flow || !flow.id || !flow.entry || !Array.isArray(flow.steps)) {
throw new Error('Invalid FlowDef: id, entry, steps are required');
}
const ids = new Set(flow.steps.map((s) => s.id));
if (!ids.has(flow.entry)) {
throw new Error(`Flow '${flow.id}' entry '${flow.entry}' not found in steps`);
}
for (const s of flow.steps) {
if (typeof s.next === 'string' && s.next && !ids.has(s.next)) {
throw new Error(`Flow '${flow.id}' step '${s.id}' has unknown next '${s.next}'`);
}
}
this.flows.set(flow.id, flow);
}
getFlow(id) {
return this.flows.get(id);
}
}

View File

@@ -0,0 +1,114 @@
import Service, { inject as service } from '@ember/service';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { later } from '@ember/runloop';
import { task } from 'ember-concurrency';
export default class UserVerificationService extends Service {
@service fetch;
@service notifications;
@service modalsManager;
@service currentUser;
@service router;
@service session;
@service intl;
@tracked token;
@tracked code;
@tracked ready;
@tracked waiting = false;
@action start(options = {}) {
this.#wait(options?.timeout ?? 75000);
}
@action didntReceiveCode() {
this.waiting = true;
}
@action validateInput(event) {
const value = event instanceof HTMLElement ? event.value : (event?.target?.value ?? '');
this.ready = value?.length > 5;
}
@action resendBySms() {
this.modalsManager.show('modals/verify-by-sms', {
title: 'Verify Account by Phone',
acceptButtonText: 'Send',
phone: this.currentUser.phone,
confirm: async (modal) => {
modal.startLoading();
const phone = modal.getOption('phone');
if (!phone) {
this.notifications.error('No phone number provided.');
}
try {
await this.fetch.post('onboard/send-verification-sms', { phone, session: this.hello });
this.notifications.success('Verification code SMS sent!');
modal.done();
} catch (error) {
this.notifications.serverError(error);
modal.stopLoading();
}
},
});
}
@action resendEmail() {
this.modalsManager.show('modals/resend-verification-email', {
title: 'Resend Verification Code',
acceptButtonText: 'Send',
email: this.currentUser.email,
confirm: async (modal) => {
modal.startLoading();
const email = modal.getOption('email');
if (!email) {
this.notifications.error('No email number provided.');
}
try {
await this.fetch.post('onboard/send-verification-email', { email, session: this.hello });
this.notifications.success('Verification code email sent!');
modal.done();
} catch (error) {
this.notifications.serverError(error);
modal.stopLoading();
}
},
});
}
@task *verifyCode() {
try {
const { status, token } = yield this.fetch.post('auth/verify-email', { token: this.token, code: this.code, email: this.email, authenticate: true });
if (status === 'ok') {
this.notifications.success('Email successfully verified!');
if (token) {
this.notifications.info(`Welcome to ${this.intl.t('app.name')}`);
this.session.manuallyAuthenticate(token);
return this.router.transitionTo('console');
}
return this.router.transitionTo('auth.login');
}
} catch (error) {
this.notifications.serverError(error);
}
}
setToken(token) {
this.token = token;
}
setCode(code) {
this.code = code;
}
#wait(timeout = 75000) {
return later(this, () => {
this.waiting = true;
}, timeout);
}
}

View File

@@ -1,42 +1 @@
<div class="bg-white dark:bg-gray-800 py-5 px-4 shadow rounded-lg w-full">
<div class="mb-4">
<Image src={{@model.logo_url}} @fallbackSrc="/images/fleetbase-logo-svg.svg" alt={{t "app.name"}} height="56" class="h-10 object-contain mx-auto" />
<div class="mt-2">
<h2 class="text-center text-lg font-extrabold text-gray-900 dark:text-white truncate">
{{t "onboard.index.title"}}
</h2>
</div>
</div>
<div class="flex px-3 py-2 mb-4 rounded-md shadow-sm bg-blue-200">
<div>
<FaIcon @icon="hand-spock" @size="lg" class="text-blue-900 mr-4" />
</div>
<p class="flex-1 text-sm text-blue-900 dark:text-blue-900">
{{t "onboard.index.welcome-title" htmlSafe=true companyName=(t "app.name")}}
{{t "onboard.index.welcome-text"}}
</p>
</div>
<form {{on "submit" this.startOnboard}}>
{{#if this.error}}
<InfoBlock @icon="exclamation-triangle" @text={{this.error}} class="mb-6 px-3 py-2 bg-red-300 text-red-900" @textClass="text-red-900" />
{{/if}}
<InputGroup @name={{t "onboard.index.full-name"}} @value={{this.name}} @helpText={{t "onboard.index.full-name-help-text"}} @inputClass="input-lg" />
<InputGroup @name={{t "onboard.index.your-email"}} @type="email" @value={{this.email}} @helpText={{t "onboard.index.your-email-help-text"}} @inputClass="input-lg" />
<InputGroup @name={{t "onboard.index.phone"}} @helpText={{t "onboard.index.phone-help-text"}}>
<PhoneInput @onInput={{fn (mut this.phone)}} class="form-input input-lg w-full" />
</InputGroup>
<InputGroup @name={{t "onboard.index.organization-name"}} @value={{this.organization_name}} @helpText={{t "onboard.index.organization-help-text"}} @inputClass="input-lg" />
<InputGroup @name={{t "onboard.index.password"}} @value={{this.password}} @type="password" @helpText={{t "onboard.index.password-help-text"}} @inputClass="input-lg" />
<InputGroup @name={{t "onboard.index.confirm-password"}} @value={{this.password_confirmation}} @type="password" @helpText={{t "onboard.index.confirm-password-help-text"}} @inputClass="input-lg" />
<div class="flex items-center justify-end mt-5">
<Button @icon="check" @iconPrefix="fas" @type="primary" @size="lg" @text={{t "onboard.index.continue-button-text"}} @isLoading={{this.isLoading}} @disabled={{this.readyToSubmit}} @onClick={{this.startOnboard}} />
</div>
</form>
<RegistryYield @registry="onboard" as |YieldedComponent ctx|>
<YieldedComponent @context={{ctx}} />
</RegistryYield>
</div>
<Onboarding::Yield @step={{this.step}} @session={{this.session}} @code={{this.code}} @brand={{@model}} />

View File

@@ -1,6 +1,6 @@
{
"name": "@fleetbase/console",
"version": "0.7.15",
"version": "0.7.16",
"private": true,
"description": "Modular logistics and supply chain operating system (LSOS)",
"repository": "https://github.com/fleetbase/fleetbase",
@@ -32,7 +32,7 @@
"@fleetbase/ember-core": "latest",
"@fleetbase/ember-ui": "latest",
"@fleetbase/fleetops-data": "latest",
"@fleetbase/fleetops-engine": "^0.6.23",
"@fleetbase/fleetops-engine": "^0.6.24",
"@fleetbase/iam-engine": "^0.1.4",
"@fleetbase/billing-engine": "^0.1.10",
"@fleetbase/internals-engine": "^0.0.21",
@@ -44,7 +44,7 @@
"@fleetbase/valhalla-engine": "^0.0.1",
"@fleetbase/dev-engine": "^0.2.10",
"@fleetbase/registry-bridge-engine": "^0.1.0",
"@fleetbase/storefront-engine": "^0.4.4",
"@fleetbase/storefront-engine": "^0.4.5",
"@fleetbase/leaflet-routing-machine": "^3.2.17",
"@formatjs/intl-datetimeformat": "^6.18.2",
"@formatjs/intl-numberformat": "^8.15.6",

152
console/pnpm-lock.yaml generated
View File

@@ -33,13 +33,13 @@ importers:
version: 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui':
specifier: latest
version: 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
version: 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/fleetops-data':
specifier: latest
version: 0.1.21(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/fleetops-engine':
specifier: ^0.6.23
version: 0.6.23(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
specifier: ^0.6.24
version: 0.6.24(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/flespi-engine':
specifier: ^0.1.14
version: 0.1.14(@babel/core@7.28.5)(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
@@ -59,8 +59,8 @@ importers:
specifier: ^0.0.1
version: 0.0.1(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/storefront-engine':
specifier: ^0.4.4
version: 0.4.4(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
specifier: ^0.4.5
version: 0.4.5(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/valhalla-engine':
specifier: ^0.0.1
version: 0.0.1(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
@@ -196,7 +196,7 @@ importers:
version: 2.11.1(webpack@5.102.1)
ember-cli:
specifier: ~5.4.2
version: 5.4.2(@types/node@24.9.2)(babel-core@6.26.3)(handlebars@4.7.8)(underscore@1.13.7)
version: 5.4.2(@types/node@24.10.0)(babel-core@6.26.3)(handlebars@4.7.8)(underscore@1.13.7)
ember-cli-app-version:
specifier: ^6.0.1
version: 6.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))
@@ -208,7 +208,7 @@ importers:
version: 3.0.0
ember-cli-dependency-checker:
specifier: ^3.3.2
version: 3.3.3(ember-cli@5.4.2(@types/node@24.9.2)(babel-core@6.26.3)(handlebars@4.7.8)(underscore@1.13.7))
version: 3.3.3(ember-cli@5.4.2(@types/node@24.10.0)(babel-core@6.26.3)(handlebars@4.7.8)(underscore@1.13.7))
ember-cli-dotenv:
specifier: ^3.1.0
version: 3.1.0
@@ -1569,16 +1569,16 @@ packages:
resolution: {integrity: sha512-OUXH27VT2UdKRfJpWkFW0CUUHiA+DgsW56E5KrbK/AWoEv8PQKOJhMMMLRjhNcjqIsvFV8DaxXiL9GvMgQjtDQ==, tarball: https://npm.pkg.github.com/download/@fleetbase/ember-core/0.3.6/c640b7019c30b8f3ff4f40fd96314f7fba4e3d4d}
engines: {node: '>= 18'}
'@fleetbase/ember-ui@0.3.8':
resolution: {integrity: sha512-ayXyLMLqKKFf/9I20yp7aB9FukflHTe66WmEPxmzA98jEUzU8ztND2lpSERsq8H8HaXikiiGIivvI8MSs+6uZw==, tarball: https://npm.pkg.github.com/download/@fleetbase/ember-ui/0.3.8/43b11b5edcefeb58dad29b95f95703861779a35b}
'@fleetbase/ember-ui@0.3.9':
resolution: {integrity: sha512-n5LRa544fCARKzZNlaGU9KFdEF+STEUcIKxNGge7Yc72oSx7ZLvHtw+IR7J4oU0WVHQnpyhJkMRkFKtoQMvbBA==, tarball: https://npm.pkg.github.com/download/@fleetbase/ember-ui/0.3.9/17694ab872b5ee8ddcd02e185fa7065978c12395}
engines: {node: '>= 18'}
'@fleetbase/fleetops-data@0.1.21':
resolution: {integrity: sha512-fmLa1pIdZorhvO9e9ic5xk11Bp3T6GT5cZvZ+1jC44iloDgl9f9MbQvsQb7W6u6JRqQFIwBPx/BpEk9VTRGUrA==, tarball: https://npm.pkg.github.com/download/@fleetbase/fleetops-data/0.1.21/56e9026d6eee11837911b617e876f7848620b7c2}
engines: {node: '>= 18'}
'@fleetbase/fleetops-engine@0.6.23':
resolution: {integrity: sha512-QIcofSAAlsXGKcXRQo4V+xGGYnvmE9mssrLf8PG5u/CPnXHzEDzWuZ3nogSzopj0C84EJp4414I8VE31fpipZA==, tarball: https://npm.pkg.github.com/download/@fleetbase/fleetops-engine/0.6.23/2fe17c2f674761b5c58a51363ea43938e863c0c0}
'@fleetbase/fleetops-engine@0.6.24':
resolution: {integrity: sha512-gns4SP8VLfY3KzXo94PEYAjsxIWIjnwR2b9V21C9NHJb5ky4YXAukOVEiwcKxPA1Ck4nISRuIQ053NpqSB1tVw==, tarball: https://npm.pkg.github.com/download/@fleetbase/fleetops-engine/0.6.24/501bd2db87fd923dd328f340467171ae91e06221}
engines: {node: '>= 18'}
peerDependencies:
ember-engines: ^0.9.0
@@ -1620,8 +1620,8 @@ packages:
peerDependencies:
ember-engines: ^0.9.0
'@fleetbase/storefront-engine@0.4.4':
resolution: {integrity: sha512-h/X0fSW061N4pIM5z/aQqLctWkRBD8AZ5BrlWxD23tJ1zCNLqUSS/cLcZFRSD1EeyGrucgt/zYDy9tOINntPdw==, tarball: https://npm.pkg.github.com/download/@fleetbase/storefront-engine/0.4.4/058b4175cd4f6d01420272285855400d9d5f377c}
'@fleetbase/storefront-engine@0.4.5':
resolution: {integrity: sha512-ZWCL/reeSS9s5DYu7YgewTaXduliCsLmOh5TNzFMaPR9Y6Q5MKHNnbDdeZkCx8WTMhiKjBPvnYG23fIh3E04gw==, tarball: https://npm.pkg.github.com/download/@fleetbase/storefront-engine/0.4.5/86b3a1e5a1f4d3c452b169f018cdb1e775581020}
engines: {node: '>= 18'}
peerDependencies:
ember-engines: ^0.9.0
@@ -2271,8 +2271,8 @@ packages:
'@types/minimist@1.2.5':
resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
'@types/node@24.9.2':
resolution: {integrity: sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==}
'@types/node@24.10.0':
resolution: {integrity: sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==}
'@types/node@9.6.61':
resolution: {integrity: sha512-/aKAdg5c8n468cYLy2eQrcR5k6chlbNwZNGUj3TboyPa2hcO2QAJcfymlqPzMiRj8B6nYKXjzQz36minFE0RwQ==}
@@ -2877,8 +2877,8 @@ packages:
resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
engines: {node: '>=0.10.0'}
baseline-browser-mapping@2.8.22:
resolution: {integrity: sha512-/tk9kky/d8T8CTXIQYASLyhAxR5VwL3zct1oAoVTaOUHwrmsGnfbRwNdEq+vOl2BN8i3PcDdP0o4Q+jjKQoFbQ==}
baseline-browser-mapping@2.8.25:
resolution: {integrity: sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==}
hasBin: true
basic-auth@2.0.1:
@@ -3263,8 +3263,8 @@ packages:
caniuse-api@3.0.0:
resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
caniuse-lite@1.0.30001752:
resolution: {integrity: sha512-vKUk7beoukxE47P5gcVNKkDRzXdVofotshHwfR9vmpeFKxmI5PBpgOMC18LUJUA/DvJ70Y7RveasIBraqsyO/g==}
caniuse-lite@1.0.30001754:
resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==}
capture-exit@2.0.0:
resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==}
@@ -4074,8 +4074,8 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
electron-to-chromium@1.5.244:
resolution: {integrity: sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw==}
electron-to-chromium@1.5.245:
resolution: {integrity: sha512-rdmGfW47ZhL/oWEJAY4qxRtdly2B98ooTJ0pdEI4jhVLZ6tNf8fPtov2wS1IRKwFJT92le3x4Knxiwzl7cPPpQ==}
element-closest@3.0.2:
resolution: {integrity: sha512-JxKQiJKX0Zr5Q2/bCaTx8P+UbfyMET1OQd61qu5xQFeWr1km3fGaxelSJtnfT27XQ5Uoztn2yIyeamAc/VX13g==}
@@ -6554,8 +6554,8 @@ packages:
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
nan@2.23.0:
resolution: {integrity: sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==}
nan@2.23.1:
resolution: {integrity: sha512-r7bBUGKzlqk8oPBDYxt6Z0aEdF1G1rwlMcLk8LCOMbOzf0mG+JUfUzG4fIMWwHWP0iyaLWEQZJmtB7nOHEm/qw==}
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
@@ -8499,8 +8499,8 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
terser@5.44.0:
resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==}
terser@5.44.1:
resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==}
engines: {node: '>=10'}
hasBin: true
@@ -10597,7 +10597,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
'@fortawesome/free-brands-svg-icons': 6.4.0
@@ -10645,7 +10645,7 @@ snapshots:
'@adopted-ember-addons/ember-stripe-elements': 2.0.5
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
'@fortawesome/free-brands-svg-icons': 6.4.0
@@ -10689,7 +10689,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/leaflet-routing-machine': 3.2.17
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
@@ -10738,7 +10738,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
'@fortawesome/free-brands-svg-icons': 6.4.0
@@ -10818,7 +10818,7 @@ snapshots:
- utf-8-validate
- webpack
'@fleetbase/ember-ui@0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)':
'@fleetbase/ember-ui@0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)':
dependencies:
'@babel/core': 7.28.5
'@ember/render-modifiers': 2.1.0(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))
@@ -10941,11 +10941,11 @@ snapshots:
- utf-8-validate
- webpack
'@fleetbase/fleetops-engine@0.6.23(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)':
'@fleetbase/fleetops-engine@0.6.24(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)':
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/fleetops-data': 0.1.21(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/leaflet-routing-machine': 3.2.17
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
@@ -11004,7 +11004,7 @@ snapshots:
'@fleetbase/flespi-engine@0.1.14(@babel/core@7.28.5)(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)':
dependencies:
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/fleetops-data': 0.1.21(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
@@ -11050,7 +11050,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
'@fortawesome/free-brands-svg-icons': 6.4.0
@@ -11094,7 +11094,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
'@fortawesome/free-brands-svg-icons': 6.4.0
@@ -11150,7 +11150,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
'@fortawesome/free-brands-svg-icons': 6.4.0
@@ -11196,7 +11196,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
'@fortawesome/free-brands-svg-icons': 6.4.0
@@ -11237,11 +11237,11 @@ snapshots:
- webpack-command
- yaml
'@fleetbase/storefront-engine@0.4.4(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)':
'@fleetbase/storefront-engine@0.4.5(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-engines@0.9.0(@ember/legacy-built-in-components@0.4.2(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)':
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/fleetops-data': 0.1.21(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
@@ -11283,7 +11283,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/leaflet-routing-machine': 3.2.17
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
@@ -11329,7 +11329,7 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@fleetbase/ember-core': 0.3.6(@ember/string@3.1.1)(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(eslint@8.57.1)(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.8(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fleetbase/ember-ui': 0.3.9(@ember/test-helpers@3.3.1(@babel/core@7.28.5)(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(webpack@5.102.1))(@glimmer/component@1.1.2(@babel/core@7.28.5))(@glimmer/tracking@1.1.2)(ember-resolver@11.0.1(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1)))(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(postcss@8.5.6)(rollup@2.79.2)(tracked-built-ins@3.4.0(@babel/core@7.28.5))(webpack@5.102.1)
'@fortawesome/ember-fontawesome': 2.0.0(ember-source@5.4.1(@babel/core@7.28.5)(@glimmer/component@1.1.2(@babel/core@7.28.5))(rsvp@4.8.5)(webpack@5.102.1))(rollup@2.79.2)(webpack@5.102.1)
'@fortawesome/fontawesome-svg-core': 6.4.0
'@fortawesome/free-brands-svg-icons': 6.4.0
@@ -11732,12 +11732,12 @@ snapshots:
'@humanwhocodes/object-schema@2.0.3': {}
'@inquirer/external-editor@1.0.2(@types/node@24.9.2)':
'@inquirer/external-editor@1.0.2(@types/node@24.10.0)':
dependencies:
chardet: 2.1.1
iconv-lite: 0.7.0
optionalDependencies:
'@types/node': 24.9.2
'@types/node': 24.10.0
'@inquirer/figures@1.0.14': {}
@@ -12107,7 +12107,7 @@ snapshots:
'@types/body-parser@1.19.6':
dependencies:
'@types/connect': 3.4.38
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/broccoli-plugin@3.0.4':
dependencies:
@@ -12123,11 +12123,11 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/cors@2.8.19':
dependencies:
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/eslint-scope@3.7.7':
dependencies:
@@ -12148,7 +12148,7 @@ snapshots:
'@types/express-serve-static-core@4.19.7':
dependencies:
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/qs': 6.14.0
'@types/range-parser': 1.2.7
'@types/send': 1.2.1
@@ -12162,18 +12162,18 @@ snapshots:
'@types/fs-extra@5.1.0':
dependencies:
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/fs-extra@8.1.5':
dependencies:
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/geojson@7946.0.16': {}
'@types/glob@7.2.0':
dependencies:
'@types/minimatch': 6.0.0
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/glob@9.0.0':
dependencies:
@@ -12202,7 +12202,7 @@ snapshots:
'@types/minimist@1.2.5': {}
'@types/node@24.9.2':
'@types/node@24.10.0':
dependencies:
undici-types: 7.16.0
@@ -12219,21 +12219,21 @@ snapshots:
'@types/rimraf@2.0.5':
dependencies:
'@types/glob': 9.0.0
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/send@0.17.6':
dependencies:
'@types/mime': 1.3.5
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/send@1.2.1':
dependencies:
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/serve-static@1.15.10':
dependencies:
'@types/http-errors': 2.0.5
'@types/node': 24.9.2
'@types/node': 24.10.0
'@types/send': 0.17.6
'@types/symlink-or-copy@1.2.2': {}
@@ -12698,7 +12698,7 @@ snapshots:
autoprefixer@10.4.21(postcss@8.5.6):
dependencies:
browserslist: 4.27.0
caniuse-lite: 1.0.30001752
caniuse-lite: 1.0.30001754
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.1.1
@@ -12945,7 +12945,7 @@ snapshots:
mixin-deep: 1.3.2
pascalcase: 0.1.1
baseline-browser-mapping@2.8.22: {}
baseline-browser-mapping@2.8.25: {}
basic-auth@2.0.1:
dependencies:
@@ -13592,7 +13592,7 @@ snapshots:
lodash.defaultsdeep: 4.6.1
matcher-collection: 2.0.1
symlink-or-copy: 1.3.1
terser: 5.44.0
terser: 5.44.1
walk-sync: 2.2.0
workerpool: 6.5.1
transitivePeerDependencies:
@@ -13675,9 +13675,9 @@ snapshots:
browserslist@4.27.0:
dependencies:
baseline-browser-mapping: 2.8.22
caniuse-lite: 1.0.30001752
electron-to-chromium: 1.5.244
baseline-browser-mapping: 2.8.25
caniuse-lite: 1.0.30001754
electron-to-chromium: 1.5.245
node-releases: 2.0.27
update-browserslist-db: 1.1.4(browserslist@4.27.0)
@@ -13790,11 +13790,11 @@ snapshots:
caniuse-api@3.0.0:
dependencies:
browserslist: 4.27.0
caniuse-lite: 1.0.30001752
caniuse-lite: 1.0.30001754
lodash.memoize: 4.1.2
lodash.uniq: 4.5.0
caniuse-lite@1.0.30001752: {}
caniuse-lite@1.0.30001754: {}
capture-exit@2.0.0:
dependencies:
@@ -14465,7 +14465,7 @@ snapshots:
ee-first@1.1.1: {}
electron-to-chromium@1.5.244: {}
electron-to-chromium@1.5.245: {}
element-closest@3.0.2: {}
@@ -14772,10 +14772,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
ember-cli-dependency-checker@3.3.3(ember-cli@5.4.2(@types/node@24.9.2)(babel-core@6.26.3)(handlebars@4.7.8)(underscore@1.13.7)):
ember-cli-dependency-checker@3.3.3(ember-cli@5.4.2(@types/node@24.10.0)(babel-core@6.26.3)(handlebars@4.7.8)(underscore@1.13.7)):
dependencies:
chalk: 2.4.2
ember-cli: 5.4.2(@types/node@24.9.2)(babel-core@6.26.3)(handlebars@4.7.8)(underscore@1.13.7)
ember-cli: 5.4.2(@types/node@24.10.0)(babel-core@6.26.3)(handlebars@4.7.8)(underscore@1.13.7)
find-yarn-workspace-root: 2.0.0
is-git-url: 1.0.0
resolve: 1.22.11
@@ -15074,7 +15074,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
ember-cli@5.4.2(@types/node@24.9.2)(babel-core@6.26.3)(handlebars@4.7.8)(underscore@1.13.7):
ember-cli@5.4.2(@types/node@24.10.0)(babel-core@6.26.3)(handlebars@4.7.8)(underscore@1.13.7):
dependencies:
'@pnpm/find-workspace-dir': 6.0.3
broccoli: 3.5.2
@@ -15125,7 +15125,7 @@ snapshots:
heimdalljs-logger: 0.1.10
http-proxy: 1.18.1
inflection: 2.0.1
inquirer: 9.3.8(@types/node@24.9.2)
inquirer: 9.3.8(@types/node@24.10.0)
is-git-url: 1.0.0
is-language-code: 3.1.0
isbinaryfile: 5.0.6
@@ -16027,7 +16027,7 @@ snapshots:
engine.io@6.6.4:
dependencies:
'@types/cors': 2.8.19
'@types/node': 24.9.2
'@types/node': 24.10.0
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.7.2
@@ -16877,7 +16877,7 @@ snapshots:
fsevents@1.2.13:
dependencies:
bindings: 1.5.0
nan: 2.23.0
nan: 2.23.1
optional: true
fsevents@2.3.3:
@@ -17365,9 +17365,9 @@ snapshots:
strip-ansi: 6.0.1
through: 2.3.8
inquirer@9.3.8(@types/node@24.9.2):
inquirer@9.3.8(@types/node@24.10.0):
dependencies:
'@inquirer/external-editor': 1.0.2(@types/node@24.9.2)
'@inquirer/external-editor': 1.0.2(@types/node@24.10.0)
'@inquirer/figures': 1.0.14
ansi-escapes: 4.3.2
cli-width: 4.1.0
@@ -17667,7 +17667,7 @@ snapshots:
jest-worker@27.5.1:
dependencies:
'@types/node': 24.9.2
'@types/node': 24.10.0
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -18244,7 +18244,7 @@ snapshots:
object-assign: 4.1.1
thenify-all: 1.6.0
nan@2.23.0:
nan@2.23.1:
optional: true
nanoid@3.3.11: {}
@@ -20493,7 +20493,7 @@ snapshots:
jest-worker: 27.5.1
schema-utils: 4.3.3
serialize-javascript: 6.0.2
terser: 5.44.0
terser: 5.44.1
webpack: 5.102.1
terser@4.8.1:
@@ -20503,7 +20503,7 @@ snapshots:
source-map: 0.6.1
source-map-support: 0.5.21
terser@5.44.0:
terser@5.44.1:
dependencies:
'@jridgewell/source-map': 0.3.11
acorn: 8.15.0

View File

@@ -9,9 +9,7 @@ export default class Router extends EmberRouter {
Router.map(function () {
this.route('virtual', { path: '/:slug' });
this.route('install');
this.route('onboard', function () {
this.route('verify-email');
});
this.route('onboard');
this.route('auth', function () {
this.route('login', { path: '/' });
this.route('forgot-password');

View File

@@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from '@fleetbase/console/tests/helpers';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | onboarding/form', function (hooks) {
setupRenderingTest(hooks);
test('it renders', async function (assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<Onboarding::Form />`);
assert.dom().hasText('');
// Template block usage:
await render(hbs`
<Onboarding::Form>
template block text
</Onboarding::Form>
`);
assert.dom().hasText('template block text');
});
});

View File

@@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from '@fleetbase/console/tests/helpers';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | onboarding/verify-email', function (hooks) {
setupRenderingTest(hooks);
test('it renders', async function (assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<Onboarding::VerifyEmail />`);
assert.dom().hasText('');
// Template block usage:
await render(hbs`
<Onboarding::VerifyEmail>
template block text
</Onboarding::VerifyEmail>
`);
assert.dom().hasText('template block text');
});
});

View File

@@ -0,0 +1,26 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from '@fleetbase/console/tests/helpers';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
module('Integration | Component | onboarding/yield', function (hooks) {
setupRenderingTest(hooks);
test('it renders', async function (assert) {
// Set any properties with this.set('myProperty', 'value');
// Handle any actions with this.set('myAction', function(val) { ... });
await render(hbs`<Onboarding::Yield />`);
assert.dom().hasText('');
// Template block usage:
await render(hbs`
<Onboarding::Yield>
template block text
</Onboarding::Yield>
`);
assert.dom().hasText('template block text');
});
});

View File

@@ -0,0 +1,39 @@
import Application from '@ember/application';
import config from '@fleetbase/console/config/environment';
import { initialize } from '@fleetbase/console/instance-initializers/register-default-onboarding-flow';
import { module, test } from 'qunit';
import Resolver from 'ember-resolver';
import { run } from '@ember/runloop';
module('Unit | Instance Initializer | register-default-onboarding-flow', function (hooks) {
hooks.beforeEach(function () {
this.TestApplication = class TestApplication extends Application {
modulePrefix = config.modulePrefix;
podModulePrefix = config.podModulePrefix;
Resolver = Resolver;
};
this.TestApplication.instanceInitializer({
name: 'initializer under test',
initialize,
});
this.application = this.TestApplication.create({
autoboot: false,
});
this.instance = this.application.buildInstance();
});
hooks.afterEach(function () {
run(this.instance, 'destroy');
run(this.application, 'destroy');
});
// TODO: Replace this with your real tests.
test('it works', async function (assert) {
await this.instance.boot();
assert.ok(true);
});
});

View File

@@ -0,0 +1,12 @@
import { module, test } from 'qunit';
import { setupTest } from '@fleetbase/console/tests/helpers';
module('Unit | Service | onboarding-context', function (hooks) {
setupTest(hooks);
// TODO: Replace this with your real tests.
test('it exists', function (assert) {
let service = this.owner.lookup('service:onboarding-context');
assert.ok(service);
});
});

View File

@@ -0,0 +1,12 @@
import { module, test } from 'qunit';
import { setupTest } from '@fleetbase/console/tests/helpers';
module('Unit | Service | onboarding-orchestrator', function (hooks) {
setupTest(hooks);
// TODO: Replace this with your real tests.
test('it exists', function (assert) {
let service = this.owner.lookup('service:onboarding-orchestrator');
assert.ok(service);
});
});

View File

@@ -0,0 +1,12 @@
import { module, test } from 'qunit';
import { setupTest } from '@fleetbase/console/tests/helpers';
module('Unit | Service | onboarding-registry', function (hooks) {
setupTest(hooks);
// TODO: Replace this with your real tests.
test('it exists', function (assert) {
let service = this.owner.lookup('service:onboarding-registry');
assert.ok(service);
});
});

View File

@@ -0,0 +1,12 @@
import { module, test } from 'qunit';
import { setupTest } from '@fleetbase/console/tests/helpers';
module('Unit | Service | user-verification', function (hooks) {
setupTest(hooks);
// TODO: Replace this with your real tests.
test('it exists', function (assert) {
let service = this.owner.lookup('service:user-verification');
assert.ok(service);
});
});

View File

@@ -75,7 +75,7 @@ ENV QUEUE_CONNECTION=redis
ENV CADDYFILE_PATH=/fleetbase/Caddyfile
ENV CONSOLE_PATH=/fleetbase/console
ENV OCTANE_SERVER=frankenphp
ENV FLEETBASE_VERSION=0.7.15
ENV FLEETBASE_VERSION=0.7.16
# Set environment
ARG ENVIRONMENT=production