@postgres.ai/shared 4.0.3 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitlab-ci.yml +77 -0
- package/components/AlertSnackbar/index.tsx +23 -0
- package/components/AlertSnackbar/useAlertSnackbar.tsx +65 -0
- package/components/Button/index.tsx +79 -0
- package/components/Button2/index.tsx +43 -0
- package/components/DestroyCloneModal/index.tsx +52 -0
- package/components/DestroyCloneRestrictionModal/index.tsx +50 -0
- package/components/ErrorStub/index.tsx +83 -0
- package/components/FormattedText/index.tsx +44 -0
- package/components/GatewayLink/index.tsx +33 -0
- package/components/HorizontalScrollContainer/index.tsx +131 -0
- package/components/HorizontalScrollContainer/types.ts +12 -0
- package/components/HorizontalScrollContainer/utils.ts +16 -0
- package/components/ImportantText/index.tsx +29 -0
- package/components/Link2/index.tsx +31 -0
- package/components/MenuButton/index.tsx +88 -0
- package/components/Modal/index.tsx +93 -0
- package/components/PageSpinner/index.tsx +18 -0
- package/components/ResetCloneModal/index.tsx +149 -0
- package/components/SectionTitle/index.tsx +74 -0
- package/components/Select/index.tsx +43 -0
- package/components/SimpleModalControls/index.tsx +56 -0
- package/components/Spinner/icon.tsx +29 -0
- package/components/Spinner/index.tsx +16 -0
- package/components/Status/index.tsx +61 -0
- package/components/StubContainer/index.tsx +41 -0
- package/components/StubSpinner/index.tsx +49 -0
- package/components/StubSpinnerFlex/index.tsx +20 -0
- package/components/SyntaxHighlight/index.tsx +107 -0
- package/components/Table/RowMenu/index.tsx +111 -0
- package/components/Table/index.tsx +140 -0
- package/components/Text/index.tsx +28 -0
- package/components/TextField/index.tsx +119 -0
- package/components/Tooltip/index.tsx +52 -0
- package/config/index.ts +32 -0
- package/config/links.ts +6 -0
- package/dist/components/Button2/styles.module.scss +82 -0
- package/dist/components/FormattedText/styles.module.scss +34 -0
- package/dist/components/Link2/styles.module.scss +12 -0
- package/dist/components/MenuButton/styles.module.scss +42 -0
- package/dist/components/PageSpinner/styles.module.scss +13 -0
- package/{components → dist/components}/Select/index.d.ts +1 -0
- package/dist/components/Spinner/styles.module.scss +33 -0
- package/dist/components/Status/styles.module.scss +45 -0
- package/dist/components/StubSpinnerFlex/styles.module.scss +20 -0
- package/{components → dist/components}/TextField/index.d.ts +2 -1
- package/{components → dist/components}/TextField/index.js +1 -1
- package/dist/helpers/getEntropy.d.ts +11 -0
- package/{helpers → dist/helpers}/getEntropy.js +39 -0
- package/dist/icons/PostgresSQL/index.js +2 -0
- package/dist/meta.json +1 -0
- package/dist/package.json +54 -0
- package/{pages → dist/pages}/Clone/index.js +49 -6
- package/{pages → dist/pages}/Clone/stores/Main.d.ts +1 -1
- package/{pages → dist/pages}/Clone/stores/Main.js +8 -2
- package/{pages → dist/pages}/CreateBranch/useForm.d.ts +1 -1
- package/{pages → dist/pages}/CreateClone/index.js +75 -24
- package/{pages → dist/pages}/CreateClone/stores/Main.d.ts +1 -1
- package/{pages → dist/pages}/CreateClone/stores/Main.js +2 -1
- package/dist/pages/CreateClone/styles.module.scss +128 -0
- package/{pages → dist/pages}/CreateClone/useForm.d.ts +3 -2
- package/{pages → dist/pages}/CreateClone/useForm.js +3 -2
- package/{pages → dist/pages}/CreateClone/utils/index.d.ts +1 -1
- package/dist/pages/CreateClone/utils/index.js +29 -0
- package/{pages → dist/pages}/CreateSnapshot/useForm.d.ts +1 -1
- package/dist/pages/Instance/Clones/ClonesList/styles.module.scss +42 -0
- package/dist/pages/Instance/Clones/Header/Item/styles.module.scss +17 -0
- package/dist/pages/Instance/Clones/Header/styles.module.scss +14 -0
- package/{pages → dist/pages}/Instance/Configuration/index.js +3 -1
- package/dist/pages/Instance/Configuration/styles.module.scss +122 -0
- package/{pages → dist/pages}/Instance/Configuration/useForm.d.ts +1 -1
- package/{pages → dist/pages}/Instance/Info/Disks/Disk/ProgressBar/index.d.ts +2 -1
- package/{pages → dist/pages}/Instance/Info/Disks/Disk/ProgressBar/index.js +1 -1
- package/{pages/Instance/Info/Disks/Disk → dist/pages/Instance/Info/Disks/PoolSection/DatasetRow}/index.d.ts +6 -8
- package/dist/pages/Instance/Info/Disks/PoolSection/DatasetRow/index.js +52 -0
- package/dist/pages/Instance/Info/Disks/PoolSection/index.d.ts +10 -0
- package/dist/pages/Instance/Info/Disks/PoolSection/index.js +64 -0
- package/dist/pages/Instance/Info/Disks/index.js +68 -0
- package/dist/pages/Instance/Info/Retrieval/RefreshFailedAlert/styles.module.scss +33 -0
- package/dist/pages/Instance/Info/Retrieval/RetrievalModal/styles.module.scss +6 -0
- package/dist/pages/Instance/Info/Retrieval/RetrievalTable/styles.module.scss +29 -0
- package/dist/pages/Instance/Info/Status/InstanceResponseModal/styles.module.scss +3 -0
- package/dist/pages/Instance/Info/Status/styles.module.scss +12 -0
- package/dist/pages/Instance/Info/components/Property/styles.module.scss +21 -0
- package/{pages → dist/pages}/Instance/Snapshots/components/SnapshotsList/index.js +1 -1
- package/dist/pages/Instance/styles.scss +37 -0
- package/dist/react-app-env.d.ts +64 -0
- package/dist/styles/global.scss +29 -0
- package/dist/styles/mixins.scss +30 -0
- package/dist/styles/vars.scss +43 -0
- package/dist/tsconfig.build.json +36 -0
- package/dist/tsconfig.json +30 -0
- package/{types → dist/types}/api/endpoints/createClone.d.ts +1 -1
- package/{types → dist/types}/api/endpoints/updateClone.d.ts +1 -0
- package/{types → dist/types}/api/entities/clone.d.ts +7 -0
- package/{types → dist/types}/api/entities/clone.js +1 -0
- package/{types → dist/types}/api/entities/config.js +8 -8
- package/{types → dist/types}/api/entities/instance.d.ts +6 -0
- package/{types → dist/types}/api/entities/instanceState.d.ts +8 -0
- package/{types → dist/types}/api/entities/instanceState.js +4 -2
- package/helpers/getEntropy.ts +278 -0
- package/helpers/localStorage.ts +15 -0
- package/helpers/request.ts +47 -0
- package/hooks/useWindowDimensions.ts +16 -0
- package/icons/ArrowDropDown/index.tsx +31 -0
- package/icons/Circle/index.tsx +27 -0
- package/icons/External/index.tsx +14 -0
- package/icons/Info/index.tsx +12 -0
- package/icons/PostgresSQL/index.tsx +18 -0
- package/icons/Renewable/index.tsx +65 -0
- package/icons/Shield/index.tsx +33 -0
- package/icons/Warning/index.tsx +29 -0
- package/package.json +25 -18
- package/pages/Branches/Branch/context.ts +25 -0
- package/pages/Branches/Branch/index.tsx +434 -0
- package/pages/Branches/Branch/stores/Main.ts +138 -0
- package/pages/Branches/Branch/useCreatedStores.ts +10 -0
- package/pages/Branches/components/BranchesTable/index.tsx +194 -0
- package/pages/Branches/components/Modals/DeleteBranchModal/index.tsx +84 -0
- package/pages/Branches/components/Modals/types.ts +4 -0
- package/pages/Branches/index.tsx +128 -0
- package/pages/Clone/Status/index.tsx +73 -0
- package/pages/Clone/context.ts +24 -0
- package/pages/Clone/index.tsx +756 -0
- package/pages/Clone/stores/Main.ts +215 -0
- package/pages/Clone/useCreatedStores.ts +11 -0
- package/pages/Clone/utils/index.ts +15 -0
- package/pages/CreateBranch/index.tsx +322 -0
- package/pages/CreateBranch/stores/Main.ts +99 -0
- package/pages/CreateBranch/useCreatedStores.ts +11 -0
- package/pages/CreateBranch/useForm.ts +60 -0
- package/pages/CreateBranch/utils/index.ts +18 -0
- package/pages/CreateClone/index.tsx +520 -0
- package/pages/CreateClone/stores/Main.ts +139 -0
- package/pages/CreateClone/styles.module.scss +14 -0
- package/pages/CreateClone/useCreatedStores.ts +11 -0
- package/pages/CreateClone/useForm.ts +51 -0
- package/pages/CreateClone/utils/index.ts +38 -0
- package/pages/CreateSnapshot/index.tsx +253 -0
- package/pages/CreateSnapshot/stores/Main.ts +70 -0
- package/pages/CreateSnapshot/useCreatedStores.ts +11 -0
- package/pages/CreateSnapshot/useForm.ts +34 -0
- package/pages/CreateSnapshot/utils/index.ts +8 -0
- package/pages/Instance/Clones/ClonesList/ConnectionModal/index.tsx +196 -0
- package/pages/Instance/Clones/ClonesList/MenuCell/index.tsx +98 -0
- package/pages/Instance/Clones/ClonesList/MenuCell/utils.ts +21 -0
- package/pages/Instance/Clones/ClonesList/index.tsx +246 -0
- package/pages/Instance/Clones/ClonesModal/index.tsx +71 -0
- package/pages/Instance/Clones/ClonesModal/utils.ts +21 -0
- package/pages/Instance/Clones/Header/Item/index.tsx +15 -0
- package/pages/Instance/Clones/Header/index.tsx +74 -0
- package/pages/Instance/Clones/index.tsx +141 -0
- package/pages/Instance/Configuration/Header/index.tsx +84 -0
- package/pages/Instance/Configuration/InputWithTooltip/index.tsx +240 -0
- package/pages/Instance/Configuration/ResponseMessage/index.tsx +71 -0
- package/pages/Instance/Configuration/configOptions.ts +60 -0
- package/pages/Instance/Configuration/index.tsx +1233 -0
- package/pages/Instance/Configuration/tooltipText.tsx +170 -0
- package/pages/Instance/Configuration/useForm.ts +108 -0
- package/pages/Instance/Configuration/utils/index.ts +236 -0
- package/pages/Instance/InactiveInstance/index.tsx +157 -0
- package/pages/Instance/InactiveInstance/utils.ts +9 -0
- package/pages/Instance/Info/Connection/ConnectModal/Content/index.tsx +176 -0
- package/pages/Instance/Info/Connection/ConnectModal/Content/utils.ts +24 -0
- package/pages/Instance/Info/Connection/ConnectModal/index.tsx +36 -0
- package/pages/Instance/Info/Connection/index.tsx +81 -0
- package/pages/Instance/Info/Details/index.tsx +20 -0
- package/pages/Instance/Info/Disks/Disk/ActionsMenu/index.tsx +100 -0
- package/pages/Instance/Info/Disks/Disk/ProgressBar/PointerIcon.tsx +20 -0
- package/pages/Instance/Info/Disks/Disk/ProgressBar/index.tsx +76 -0
- package/pages/Instance/Info/Disks/Disk/Status/index.tsx +75 -0
- package/pages/Instance/Info/Disks/PoolSection/DatasetRow/index.tsx +117 -0
- package/pages/Instance/Info/Disks/PoolSection/index.tsx +112 -0
- package/pages/Instance/Info/Disks/index.tsx +114 -0
- package/pages/Instance/Info/Icons/index.tsx +39 -0
- package/pages/Instance/Info/Retrieval/ConfirmFullRefreshModal/index.tsx +109 -0
- package/pages/Instance/Info/Retrieval/RefreshFailedAlert/index.tsx +32 -0
- package/pages/Instance/Info/Retrieval/RetrievalModal/index.tsx +43 -0
- package/pages/Instance/Info/Retrieval/RetrievalTable/index.tsx +53 -0
- package/pages/Instance/Info/Retrieval/index.tsx +113 -0
- package/pages/Instance/Info/Retrieval/utils.ts +10 -0
- package/pages/Instance/Info/Snapshots/Calendar/Day/index.tsx +125 -0
- package/pages/Instance/Info/Snapshots/Calendar/index.tsx +133 -0
- package/pages/Instance/Info/Snapshots/Calendar/utils.ts +74 -0
- package/pages/Instance/Info/Snapshots/TimeLine/Day/index.tsx +79 -0
- package/pages/Instance/Info/Snapshots/TimeLine/index.tsx +57 -0
- package/pages/Instance/Info/Snapshots/index.tsx +102 -0
- package/pages/Instance/Info/Snapshots/utils.ts +31 -0
- package/pages/Instance/Info/Status/InstanceResponseModal/index.tsx +32 -0
- package/pages/Instance/Info/Status/index.tsx +89 -0
- package/pages/Instance/Info/Status/utils.ts +24 -0
- package/pages/Instance/Info/components/Property/index.tsx +32 -0
- package/pages/Instance/Info/components/Section/index.tsx +50 -0
- package/pages/Instance/Info/components/ValueStatus/index.tsx +51 -0
- package/pages/Instance/Info/index.tsx +137 -0
- package/pages/Instance/Snapshots/components/SnapshotHeader/index.tsx +77 -0
- package/pages/Instance/Snapshots/components/SnapshotsList/index.tsx +285 -0
- package/pages/Instance/Snapshots/components/SnapshotsModal/utils.ts +17 -0
- package/pages/Instance/Snapshots/components/SnapshotsTable/index.tsx +231 -0
- package/pages/Instance/Snapshots/index.tsx +171 -0
- package/pages/Instance/Snapshots/utils/index.ts +39 -0
- package/pages/Instance/SnapshotsModal/index.tsx +159 -0
- package/pages/Instance/Tabs/PlatformTabs.tsx +83 -0
- package/pages/Instance/Tabs/index.tsx +140 -0
- package/pages/Instance/Tabs/styles.ts +68 -0
- package/pages/Instance/components/ErrorStub/index.tsx +77 -0
- package/pages/Instance/components/ModalReloadButton/index.tsx +42 -0
- package/pages/Instance/components/Tags/Tag/index.tsx +60 -0
- package/pages/Instance/components/Tags/index.tsx +42 -0
- package/pages/Instance/context.ts +46 -0
- package/pages/Instance/index.tsx +257 -0
- package/pages/Instance/stores/ClonesModal.ts +35 -0
- package/pages/Instance/stores/Main.ts +484 -0
- package/pages/Instance/stores/SnapshotsModal.ts +35 -0
- package/pages/Instance/useCreatedStores.ts +14 -0
- package/pages/Logs/Icons/PlusIcon.tsx +9 -0
- package/pages/Logs/constants/index.ts +7 -0
- package/pages/Logs/hooks/useWsScroll.tsx +47 -0
- package/pages/Logs/index.tsx +287 -0
- package/pages/Logs/utils/index.ts +20 -0
- package/pages/Logs/wsLogs.ts +126 -0
- package/pages/Logs/wsSnackbar.ts +26 -0
- package/pages/Snapshots/Snapshot/DestorySnapshotModal/index.tsx +144 -0
- package/pages/Snapshots/Snapshot/context.ts +26 -0
- package/pages/Snapshots/Snapshot/index.tsx +485 -0
- package/pages/Snapshots/Snapshot/stores/Main.ts +120 -0
- package/pages/Snapshots/Snapshot/useCreatedStores.ts +10 -0
- package/postgres.ai-shared-4.1.0.tgz +0 -0
- package/react-app-env.d.ts +0 -7
- package/scripts/copy-assets.js +30 -0
- package/scripts/pack.js +70 -0
- package/stores/Snapshots.ts +97 -0
- package/styles/colors.ts +67 -0
- package/styles/icons.tsx +1917 -0
- package/styles/styles.ts +87 -0
- package/styles/theme.ts +53 -0
- package/styles/vars.ts +40 -0
- package/tsconfig.build.json +0 -1
- package/types/api/endpoints/createBranch.ts +14 -0
- package/types/api/endpoints/createClone.ts +11 -0
- package/types/api/endpoints/createSnapshot.ts +10 -0
- package/types/api/endpoints/deleteBranch.ts +4 -0
- package/types/api/endpoints/destroyClone.ts +7 -0
- package/types/api/endpoints/destroySnapshot.ts +8 -0
- package/types/api/endpoints/fullRefresh.ts +6 -0
- package/types/api/endpoints/getBranchSnapshot.ts +6 -0
- package/types/api/endpoints/getBranches.ts +22 -0
- package/types/api/endpoints/getClone.ts +6 -0
- package/types/api/endpoints/getConfig.ts +6 -0
- package/types/api/endpoints/getEngine.ts +13 -0
- package/types/api/endpoints/getFullConfig.ts +4 -0
- package/types/api/endpoints/getInstance.ts +6 -0
- package/types/api/endpoints/getInstanceRetrieval.ts +6 -0
- package/types/api/endpoints/getSeImages.ts +22 -0
- package/types/api/endpoints/getSnapshotList.ts +14 -0
- package/types/api/endpoints/getSnapshots.ts +6 -0
- package/types/api/endpoints/getWSToken.ts +6 -0
- package/types/api/endpoints/initWS.ts +1 -0
- package/types/api/endpoints/refreshInstance.ts +4 -0
- package/types/api/endpoints/resetClone.ts +8 -0
- package/types/api/endpoints/testDbSource.ts +48 -0
- package/types/api/endpoints/updateClone.ts +11 -0
- package/types/api/endpoints/updateConfig.ts +9 -0
- package/types/api/entities/branchSnapshot.ts +8 -0
- package/types/api/entities/branchSnapshots.ts +10 -0
- package/types/api/entities/clone.ts +47 -0
- package/types/api/entities/config.ts +117 -0
- package/types/api/entities/createBranch.ts +7 -0
- package/types/api/entities/createSnapshot.ts +7 -0
- package/types/api/entities/dbSource.ts +14 -0
- package/types/api/entities/instance.ts +67 -0
- package/types/api/entities/instanceRetrieval.ts +46 -0
- package/types/api/entities/instanceState.ts +106 -0
- package/types/api/entities/pool.ts +27 -0
- package/types/api/entities/snapshot.ts +22 -0
- package/types/api/entities/wsToken.ts +7 -0
- package/types/byte-size/index.d.ts +22 -0
- package/utils/api.ts +30 -0
- package/utils/clone.ts +31 -0
- package/utils/connection.ts +38 -0
- package/utils/date.ts +136 -0
- package/utils/instance.ts +10 -0
- package/utils/numbers.ts +11 -0
- package/utils/react.ts +10 -0
- package/utils/snapshot.ts +8 -0
- package/utils/strings.ts +11 -0
- package/utils/units.ts +23 -0
- package/helpers/getEntropy.d.ts +0 -3
- package/icons/PostgresSQL/index.js +0 -40
- package/pages/CreateClone/utils/index.js +0 -17
- package/pages/Instance/Info/Disks/Disk/Marker/index.d.ts +0 -6
- package/pages/Instance/Info/Disks/Disk/Marker/index.js +0 -15
- package/pages/Instance/Info/Disks/Disk/index.js +0 -71
- package/pages/Instance/Info/Disks/index.js +0 -24
- /package/{components → dist/components}/AlertSnackbar/index.d.ts +0 -0
- /package/{components → dist/components}/AlertSnackbar/index.js +0 -0
- /package/{components → dist/components}/AlertSnackbar/useAlertSnackbar.d.ts +0 -0
- /package/{components → dist/components}/AlertSnackbar/useAlertSnackbar.js +0 -0
- /package/{components → dist/components}/Button/index.d.ts +0 -0
- /package/{components → dist/components}/Button/index.js +0 -0
- /package/{components → dist/components}/Button2/index.d.ts +0 -0
- /package/{components → dist/components}/Button2/index.js +0 -0
- /package/{components → dist/components}/DestroyCloneModal/index.d.ts +0 -0
- /package/{components → dist/components}/DestroyCloneModal/index.js +0 -0
- /package/{components → dist/components}/DestroyCloneRestrictionModal/index.d.ts +0 -0
- /package/{components → dist/components}/DestroyCloneRestrictionModal/index.js +0 -0
- /package/{components → dist/components}/ErrorStub/index.d.ts +0 -0
- /package/{components → dist/components}/ErrorStub/index.js +0 -0
- /package/{components → dist/components}/FormattedText/index.d.ts +0 -0
- /package/{components → dist/components}/FormattedText/index.js +0 -0
- /package/{components → dist/components}/GatewayLink/index.d.ts +0 -0
- /package/{components → dist/components}/GatewayLink/index.js +0 -0
- /package/{components → dist/components}/HorizontalScrollContainer/index.d.ts +0 -0
- /package/{components → dist/components}/HorizontalScrollContainer/index.js +0 -0
- /package/{components → dist/components}/HorizontalScrollContainer/types.d.ts +0 -0
- /package/{components → dist/components}/HorizontalScrollContainer/types.js +0 -0
- /package/{components → dist/components}/HorizontalScrollContainer/utils.d.ts +0 -0
- /package/{components → dist/components}/HorizontalScrollContainer/utils.js +0 -0
- /package/{components → dist/components}/ImportantText/index.d.ts +0 -0
- /package/{components → dist/components}/ImportantText/index.js +0 -0
- /package/{components → dist/components}/Link2/index.d.ts +0 -0
- /package/{components → dist/components}/Link2/index.js +0 -0
- /package/{components → dist/components}/MenuButton/index.d.ts +0 -0
- /package/{components → dist/components}/MenuButton/index.js +0 -0
- /package/{components → dist/components}/Modal/index.d.ts +0 -0
- /package/{components → dist/components}/Modal/index.js +0 -0
- /package/{components → dist/components}/PageSpinner/index.d.ts +0 -0
- /package/{components → dist/components}/PageSpinner/index.js +0 -0
- /package/{components → dist/components}/ResetCloneModal/index.d.ts +0 -0
- /package/{components → dist/components}/ResetCloneModal/index.js +0 -0
- /package/{components → dist/components}/SectionTitle/index.d.ts +0 -0
- /package/{components → dist/components}/SectionTitle/index.js +0 -0
- /package/{components → dist/components}/Select/index.js +0 -0
- /package/{components → dist/components}/SimpleModalControls/index.d.ts +0 -0
- /package/{components → dist/components}/SimpleModalControls/index.js +0 -0
- /package/{components → dist/components}/Spinner/icon.d.ts +0 -0
- /package/{components → dist/components}/Spinner/icon.js +0 -0
- /package/{components → dist/components}/Spinner/index.d.ts +0 -0
- /package/{components → dist/components}/Spinner/index.js +0 -0
- /package/{components → dist/components}/Status/index.d.ts +0 -0
- /package/{components → dist/components}/Status/index.js +0 -0
- /package/{components → dist/components}/StubContainer/index.d.ts +0 -0
- /package/{components → dist/components}/StubContainer/index.js +0 -0
- /package/{components → dist/components}/StubSpinner/index.d.ts +0 -0
- /package/{components → dist/components}/StubSpinner/index.js +0 -0
- /package/{components → dist/components}/StubSpinnerFlex/index.d.ts +0 -0
- /package/{components → dist/components}/StubSpinnerFlex/index.js +0 -0
- /package/{components → dist/components}/SyntaxHighlight/index.d.ts +0 -0
- /package/{components → dist/components}/SyntaxHighlight/index.js +0 -0
- /package/{components → dist/components}/Table/RowMenu/index.d.ts +0 -0
- /package/{components → dist/components}/Table/RowMenu/index.js +0 -0
- /package/{components → dist/components}/Table/index.d.ts +0 -0
- /package/{components → dist/components}/Table/index.js +0 -0
- /package/{components → dist/components}/Text/index.d.ts +0 -0
- /package/{components → dist/components}/Text/index.js +0 -0
- /package/{components → dist/components}/Tooltip/index.d.ts +0 -0
- /package/{components → dist/components}/Tooltip/index.js +0 -0
- /package/{config → dist/config}/index.d.ts +0 -0
- /package/{config → dist/config}/index.js +0 -0
- /package/{config → dist/config}/links.d.ts +0 -0
- /package/{config → dist/config}/links.js +0 -0
- /package/{helpers → dist/helpers}/localStorage.d.ts +0 -0
- /package/{helpers → dist/helpers}/localStorage.js +0 -0
- /package/{helpers → dist/helpers}/request.d.ts +0 -0
- /package/{helpers → dist/helpers}/request.js +0 -0
- /package/{hooks → dist/hooks}/useWindowDimensions.d.ts +0 -0
- /package/{hooks → dist/hooks}/useWindowDimensions.js +0 -0
- /package/{icons → dist/icons}/ArrowDropDown/index.d.ts +0 -0
- /package/{icons → dist/icons}/ArrowDropDown/index.js +0 -0
- /package/{icons → dist/icons}/Circle/index.d.ts +0 -0
- /package/{icons → dist/icons}/Circle/index.js +0 -0
- /package/{icons → dist/icons}/External/index.d.ts +0 -0
- /package/{icons → dist/icons}/External/index.js +0 -0
- /package/{icons → dist/icons}/Info/index.d.ts +0 -0
- /package/{icons → dist/icons}/Info/index.js +0 -0
- /package/{icons → dist/icons}/PostgresSQL/index.d.ts +0 -0
- /package/{icons → dist/icons}/Renewable/index.d.ts +0 -0
- /package/{icons → dist/icons}/Renewable/index.js +0 -0
- /package/{icons → dist/icons}/Shield/index.d.ts +0 -0
- /package/{icons → dist/icons}/Shield/index.js +0 -0
- /package/{icons → dist/icons}/Warning/index.d.ts +0 -0
- /package/{icons → dist/icons}/Warning/index.js +0 -0
- /package/{pages → dist/pages}/Branches/Branch/context.d.ts +0 -0
- /package/{pages → dist/pages}/Branches/Branch/context.js +0 -0
- /package/{pages → dist/pages}/Branches/Branch/index.d.ts +0 -0
- /package/{pages → dist/pages}/Branches/Branch/index.js +0 -0
- /package/{pages → dist/pages}/Branches/Branch/stores/Main.d.ts +0 -0
- /package/{pages → dist/pages}/Branches/Branch/stores/Main.js +0 -0
- /package/{pages → dist/pages}/Branches/Branch/useCreatedStores.d.ts +0 -0
- /package/{pages → dist/pages}/Branches/Branch/useCreatedStores.js +0 -0
- /package/{pages → dist/pages}/Branches/components/BranchesTable/index.d.ts +0 -0
- /package/{pages → dist/pages}/Branches/components/BranchesTable/index.js +0 -0
- /package/{pages → dist/pages}/Branches/components/Modals/DeleteBranchModal/index.d.ts +0 -0
- /package/{pages → dist/pages}/Branches/components/Modals/DeleteBranchModal/index.js +0 -0
- /package/{pages → dist/pages}/Branches/components/Modals/types.d.ts +0 -0
- /package/{pages → dist/pages}/Branches/components/Modals/types.js +0 -0
- /package/{pages → dist/pages}/Branches/index.d.ts +0 -0
- /package/{pages → dist/pages}/Branches/index.js +0 -0
- /package/{pages → dist/pages}/Clone/Status/index.d.ts +0 -0
- /package/{pages → dist/pages}/Clone/Status/index.js +0 -0
- /package/{pages → dist/pages}/Clone/context.d.ts +0 -0
- /package/{pages → dist/pages}/Clone/context.js +0 -0
- /package/{pages → dist/pages}/Clone/index.d.ts +0 -0
- /package/{pages → dist/pages}/Clone/useCreatedStores.d.ts +0 -0
- /package/{pages → dist/pages}/Clone/useCreatedStores.js +0 -0
- /package/{pages → dist/pages}/Clone/utils/index.d.ts +0 -0
- /package/{pages → dist/pages}/Clone/utils/index.js +0 -0
- /package/{pages → dist/pages}/CreateBranch/index.d.ts +0 -0
- /package/{pages → dist/pages}/CreateBranch/index.js +0 -0
- /package/{pages → dist/pages}/CreateBranch/stores/Main.d.ts +0 -0
- /package/{pages → dist/pages}/CreateBranch/stores/Main.js +0 -0
- /package/{pages → dist/pages}/CreateBranch/useCreatedStores.d.ts +0 -0
- /package/{pages → dist/pages}/CreateBranch/useCreatedStores.js +0 -0
- /package/{pages → dist/pages}/CreateBranch/useForm.js +0 -0
- /package/{pages → dist/pages}/CreateBranch/utils/index.d.ts +0 -0
- /package/{pages → dist/pages}/CreateBranch/utils/index.js +0 -0
- /package/{pages → dist/pages}/CreateClone/index.d.ts +0 -0
- /package/{pages → dist/pages}/CreateClone/useCreatedStores.d.ts +0 -0
- /package/{pages → dist/pages}/CreateClone/useCreatedStores.js +0 -0
- /package/{pages → dist/pages}/CreateSnapshot/index.d.ts +0 -0
- /package/{pages → dist/pages}/CreateSnapshot/index.js +0 -0
- /package/{pages → dist/pages}/CreateSnapshot/stores/Main.d.ts +0 -0
- /package/{pages → dist/pages}/CreateSnapshot/stores/Main.js +0 -0
- /package/{pages → dist/pages}/CreateSnapshot/useCreatedStores.d.ts +0 -0
- /package/{pages → dist/pages}/CreateSnapshot/useCreatedStores.js +0 -0
- /package/{pages → dist/pages}/CreateSnapshot/useForm.js +0 -0
- /package/{pages → dist/pages}/CreateSnapshot/utils/index.d.ts +0 -0
- /package/{pages → dist/pages}/CreateSnapshot/utils/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesList/ConnectionModal/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesList/ConnectionModal/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesList/MenuCell/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesList/MenuCell/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesList/MenuCell/utils.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesList/MenuCell/utils.js +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesList/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesList/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesModal/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesModal/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesModal/utils.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Clones/ClonesModal/utils.js +0 -0
- /package/{pages → dist/pages}/Instance/Clones/Header/Item/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Clones/Header/Item/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Clones/Header/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Clones/Header/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Clones/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Clones/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/Header/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/Header/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/InputWithTooltip/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/InputWithTooltip/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/ResponseMessage/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/ResponseMessage/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/configOptions.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/configOptions.js +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/tooltipText.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/tooltipText.js +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/useForm.js +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/utils/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Configuration/utils/index.js +0 -0
- /package/{pages → dist/pages}/Instance/InactiveInstance/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/InactiveInstance/index.js +0 -0
- /package/{pages → dist/pages}/Instance/InactiveInstance/utils.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/InactiveInstance/utils.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Connection/ConnectModal/Content/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Connection/ConnectModal/Content/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Connection/ConnectModal/Content/utils.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Connection/ConnectModal/Content/utils.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Connection/ConnectModal/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Connection/ConnectModal/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Connection/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Connection/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Details/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Details/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Disks/Disk/ActionsMenu/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Disks/Disk/ActionsMenu/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Disks/Disk/ProgressBar/PointerIcon.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Disks/Disk/ProgressBar/PointerIcon.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Disks/Disk/Status/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Disks/Disk/Status/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Disks/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Icons/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Icons/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/ConfirmFullRefreshModal/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/ConfirmFullRefreshModal/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/RefreshFailedAlert/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/RefreshFailedAlert/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/RetrievalModal/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/RetrievalModal/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/RetrievalTable/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/RetrievalTable/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/utils.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Retrieval/utils.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/Calendar/Day/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/Calendar/Day/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/Calendar/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/Calendar/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/Calendar/utils.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/Calendar/utils.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/TimeLine/Day/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/TimeLine/Day/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/TimeLine/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/TimeLine/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/utils.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Snapshots/utils.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Status/InstanceResponseModal/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Status/InstanceResponseModal/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Status/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Status/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/Status/utils.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/Status/utils.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/components/Property/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/components/Property/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/components/Section/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/components/Section/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/components/ValueStatus/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/components/ValueStatus/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Info/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Info/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/components/SnapshotHeader/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/components/SnapshotHeader/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/components/SnapshotsList/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/components/SnapshotsModal/utils.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/components/SnapshotsModal/utils.js +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/components/SnapshotsTable/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/components/SnapshotsTable/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/utils/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Snapshots/utils/index.js +0 -0
- /package/{pages → dist/pages}/Instance/SnapshotsModal/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/SnapshotsModal/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Tabs/PlatformTabs.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Tabs/PlatformTabs.js +0 -0
- /package/{pages → dist/pages}/Instance/Tabs/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Tabs/index.js +0 -0
- /package/{pages → dist/pages}/Instance/Tabs/styles.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/Tabs/styles.js +0 -0
- /package/{pages → dist/pages}/Instance/components/ErrorStub/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/components/ErrorStub/index.js +0 -0
- /package/{pages → dist/pages}/Instance/components/ModalReloadButton/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/components/ModalReloadButton/index.js +0 -0
- /package/{pages → dist/pages}/Instance/components/Tags/Tag/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/components/Tags/Tag/index.js +0 -0
- /package/{pages → dist/pages}/Instance/components/Tags/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/components/Tags/index.js +0 -0
- /package/{pages → dist/pages}/Instance/context.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/context.js +0 -0
- /package/{pages → dist/pages}/Instance/index.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/index.js +0 -0
- /package/{pages → dist/pages}/Instance/stores/ClonesModal.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/stores/ClonesModal.js +0 -0
- /package/{pages → dist/pages}/Instance/stores/Main.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/stores/Main.js +0 -0
- /package/{pages → dist/pages}/Instance/stores/SnapshotsModal.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/stores/SnapshotsModal.js +0 -0
- /package/{pages → dist/pages}/Instance/useCreatedStores.d.ts +0 -0
- /package/{pages → dist/pages}/Instance/useCreatedStores.js +0 -0
- /package/{pages → dist/pages}/Logs/Icons/PlusIcon.d.ts +0 -0
- /package/{pages → dist/pages}/Logs/Icons/PlusIcon.js +0 -0
- /package/{pages → dist/pages}/Logs/constants/index.d.ts +0 -0
- /package/{pages → dist/pages}/Logs/constants/index.js +0 -0
- /package/{pages → dist/pages}/Logs/hooks/useWsScroll.d.ts +0 -0
- /package/{pages → dist/pages}/Logs/hooks/useWsScroll.js +0 -0
- /package/{pages → dist/pages}/Logs/index.d.ts +0 -0
- /package/{pages → dist/pages}/Logs/index.js +0 -0
- /package/{pages → dist/pages}/Logs/utils/index.d.ts +0 -0
- /package/{pages → dist/pages}/Logs/utils/index.js +0 -0
- /package/{pages → dist/pages}/Logs/wsLogs.d.ts +0 -0
- /package/{pages → dist/pages}/Logs/wsLogs.js +0 -0
- /package/{pages → dist/pages}/Logs/wsSnackbar.d.ts +0 -0
- /package/{pages → dist/pages}/Logs/wsSnackbar.js +0 -0
- /package/{pages → dist/pages}/Snapshots/Snapshot/DestorySnapshotModal/index.d.ts +0 -0
- /package/{pages → dist/pages}/Snapshots/Snapshot/DestorySnapshotModal/index.js +0 -0
- /package/{pages → dist/pages}/Snapshots/Snapshot/context.d.ts +0 -0
- /package/{pages → dist/pages}/Snapshots/Snapshot/context.js +0 -0
- /package/{pages → dist/pages}/Snapshots/Snapshot/index.d.ts +0 -0
- /package/{pages → dist/pages}/Snapshots/Snapshot/index.js +0 -0
- /package/{pages → dist/pages}/Snapshots/Snapshot/stores/Main.d.ts +0 -0
- /package/{pages → dist/pages}/Snapshots/Snapshot/stores/Main.js +0 -0
- /package/{pages → dist/pages}/Snapshots/Snapshot/useCreatedStores.d.ts +0 -0
- /package/{pages → dist/pages}/Snapshots/Snapshot/useCreatedStores.js +0 -0
- /package/{stores → dist/stores}/Snapshots.d.ts +0 -0
- /package/{stores → dist/stores}/Snapshots.js +0 -0
- /package/{styles → dist/styles}/colors.d.ts +0 -0
- /package/{styles → dist/styles}/colors.js +0 -0
- /package/{styles → dist/styles}/icons.d.ts +0 -0
- /package/{styles → dist/styles}/icons.js +0 -0
- /package/{styles → dist/styles}/styles.d.ts +0 -0
- /package/{styles → dist/styles}/styles.js +0 -0
- /package/{styles → dist/styles}/theme.d.ts +0 -0
- /package/{styles → dist/styles}/theme.js +0 -0
- /package/{styles → dist/styles}/vars.d.ts +0 -0
- /package/{styles → dist/styles}/vars.js +0 -0
- /package/{types → dist/types}/api/endpoints/createBranch.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/createBranch.js +0 -0
- /package/{types → dist/types}/api/endpoints/createClone.js +0 -0
- /package/{types → dist/types}/api/endpoints/createSnapshot.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/createSnapshot.js +0 -0
- /package/{types → dist/types}/api/endpoints/deleteBranch.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/deleteBranch.js +0 -0
- /package/{types → dist/types}/api/endpoints/destroyClone.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/destroyClone.js +0 -0
- /package/{types → dist/types}/api/endpoints/destroySnapshot.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/destroySnapshot.js +0 -0
- /package/{types → dist/types}/api/endpoints/fullRefresh.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/fullRefresh.js +0 -0
- /package/{types → dist/types}/api/endpoints/getBranchSnapshot.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getBranchSnapshot.js +0 -0
- /package/{types → dist/types}/api/endpoints/getBranches.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getBranches.js +0 -0
- /package/{types → dist/types}/api/endpoints/getClone.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getClone.js +0 -0
- /package/{types → dist/types}/api/endpoints/getConfig.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getConfig.js +0 -0
- /package/{types → dist/types}/api/endpoints/getEngine.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getEngine.js +0 -0
- /package/{types → dist/types}/api/endpoints/getFullConfig.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getFullConfig.js +0 -0
- /package/{types → dist/types}/api/endpoints/getInstance.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getInstance.js +0 -0
- /package/{types → dist/types}/api/endpoints/getInstanceRetrieval.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getInstanceRetrieval.js +0 -0
- /package/{types → dist/types}/api/endpoints/getSeImages.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getSeImages.js +0 -0
- /package/{types → dist/types}/api/endpoints/getSnapshotList.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getSnapshotList.js +0 -0
- /package/{types → dist/types}/api/endpoints/getSnapshots.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getSnapshots.js +0 -0
- /package/{types → dist/types}/api/endpoints/getWSToken.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/getWSToken.js +0 -0
- /package/{types → dist/types}/api/endpoints/initWS.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/initWS.js +0 -0
- /package/{types → dist/types}/api/endpoints/refreshInstance.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/refreshInstance.js +0 -0
- /package/{types → dist/types}/api/endpoints/resetClone.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/resetClone.js +0 -0
- /package/{types → dist/types}/api/endpoints/testDbSource.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/testDbSource.js +0 -0
- /package/{types → dist/types}/api/endpoints/updateClone.js +0 -0
- /package/{types → dist/types}/api/endpoints/updateConfig.d.ts +0 -0
- /package/{types → dist/types}/api/endpoints/updateConfig.js +0 -0
- /package/{types → dist/types}/api/entities/branchSnapshot.d.ts +0 -0
- /package/{types → dist/types}/api/entities/branchSnapshot.js +0 -0
- /package/{types → dist/types}/api/entities/branchSnapshots.d.ts +0 -0
- /package/{types → dist/types}/api/entities/branchSnapshots.js +0 -0
- /package/{types → dist/types}/api/entities/config.d.ts +0 -0
- /package/{types → dist/types}/api/entities/createBranch.d.ts +0 -0
- /package/{types → dist/types}/api/entities/createBranch.js +0 -0
- /package/{types → dist/types}/api/entities/createSnapshot.d.ts +0 -0
- /package/{types → dist/types}/api/entities/createSnapshot.js +0 -0
- /package/{types → dist/types}/api/entities/dbSource.d.ts +0 -0
- /package/{types → dist/types}/api/entities/dbSource.js +0 -0
- /package/{types → dist/types}/api/entities/instance.js +0 -0
- /package/{types → dist/types}/api/entities/instanceRetrieval.d.ts +0 -0
- /package/{types → dist/types}/api/entities/instanceRetrieval.js +0 -0
- /package/{types → dist/types}/api/entities/pool.d.ts +0 -0
- /package/{types → dist/types}/api/entities/pool.js +0 -0
- /package/{types → dist/types}/api/entities/snapshot.d.ts +0 -0
- /package/{types → dist/types}/api/entities/snapshot.js +0 -0
- /package/{types → dist/types}/api/entities/wsToken.d.ts +0 -0
- /package/{types → dist/types}/api/entities/wsToken.js +0 -0
- /package/{utils → dist/utils}/api.d.ts +0 -0
- /package/{utils → dist/utils}/api.js +0 -0
- /package/{utils → dist/utils}/clone.d.ts +0 -0
- /package/{utils → dist/utils}/clone.js +0 -0
- /package/{utils → dist/utils}/connection.d.ts +0 -0
- /package/{utils → dist/utils}/connection.js +0 -0
- /package/{utils → dist/utils}/date.d.ts +0 -0
- /package/{utils → dist/utils}/date.js +0 -0
- /package/{utils → dist/utils}/instance.d.ts +0 -0
- /package/{utils → dist/utils}/instance.js +0 -0
- /package/{utils → dist/utils}/numbers.d.ts +0 -0
- /package/{utils → dist/utils}/numbers.js +0 -0
- /package/{utils → dist/utils}/react.d.ts +0 -0
- /package/{utils → dist/utils}/react.js +0 -0
- /package/{utils → dist/utils}/snapshot.d.ts +0 -0
- /package/{utils → dist/utils}/snapshot.js +0 -0
- /package/{utils → dist/utils}/strings.d.ts +0 -0
- /package/{utils → dist/utils}/strings.js +0 -0
- /package/{utils → dist/utils}/units.d.ts +0 -0
- /package/{utils → dist/utils}/units.js +0 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import styles from './styles.module.scss'
|
|
2
|
+
|
|
3
|
+
export const tooltipText = {
|
|
4
|
+
dockerTag: () => (
|
|
5
|
+
<div>
|
|
6
|
+
Docker image version — the latest ones are listed first. If you are unsure,
|
|
7
|
+
pick the first one.
|
|
8
|
+
</div>
|
|
9
|
+
),
|
|
10
|
+
dockerImage: () => (
|
|
11
|
+
<div>
|
|
12
|
+
Major PostgreSQL version (e.g., "9.6", "15"). For logical provisioning
|
|
13
|
+
mode, the version used by DBLab does not need to match the version on the
|
|
14
|
+
source, although matching versions is recommended. <br />
|
|
15
|
+
If you need a version that is not listed here, contact support.
|
|
16
|
+
</div>
|
|
17
|
+
),
|
|
18
|
+
dockerImageType: () => (
|
|
19
|
+
<div>
|
|
20
|
+
Docker image used to run all database containers — clones, snapshot
|
|
21
|
+
preparation containers, and sync containers. Although such images are based on
|
|
22
|
+
traditional Docker images for PostgreSQL, DBLab expects slightly different
|
|
23
|
+
behavior: for example, PostgreSQL is not the first process used to start the
|
|
24
|
+
container, so PostgreSQL restarts do not trigger a container state change.
|
|
25
|
+
For details, see{' '}
|
|
26
|
+
<a
|
|
27
|
+
target={'_blank'}
|
|
28
|
+
href={'https://postgres.ai/docs/database-lab/supported-databases'}
|
|
29
|
+
className={styles.externalLink}
|
|
30
|
+
>
|
|
31
|
+
the docs
|
|
32
|
+
</a>
|
|
33
|
+
.
|
|
34
|
+
</div>
|
|
35
|
+
),
|
|
36
|
+
sharedBuffers: () => (
|
|
37
|
+
<div>
|
|
38
|
+
Defines the default buffer pool size for each PostgreSQL instance managed by
|
|
39
|
+
DBLab. Note that this amount of RAM is immediately allocated at PostgreSQL
|
|
40
|
+
startup time. For example, if the machine running DBLab has 32 GiB of RAM and
|
|
41
|
+
the value used here is '1GB', then the theoretical limit of clones is 32.
|
|
42
|
+
Practically, this limit is even lower because some memory is consumed by
|
|
43
|
+
other processes. If you need more clones, reduce the value of{' '}
|
|
44
|
+
<span className={styles.firaCodeFont}>configs.shared_buffers</span>.
|
|
45
|
+
</div>
|
|
46
|
+
),
|
|
47
|
+
sharedPreloadLibraries: () => (
|
|
48
|
+
<div>
|
|
49
|
+
Specifies one or more shared libraries (comma-separated list) to be
|
|
50
|
+
preloaded at PostgreSQL server start (
|
|
51
|
+
<a
|
|
52
|
+
target={'_blank'}
|
|
53
|
+
href={'https://postgresqlco.nf/doc/en/param/shared_preload_libraries/'}
|
|
54
|
+
className={styles.externalLink}
|
|
55
|
+
>
|
|
56
|
+
details
|
|
57
|
+
</a>
|
|
58
|
+
). If some libraries or extensions are missing, PostgreSQL fails to start,
|
|
59
|
+
so make sure that <span className={styles.firaCodeFont}>dockerImage</span>{' '}
|
|
60
|
+
used above contains all required extensions.
|
|
61
|
+
</div>
|
|
62
|
+
),
|
|
63
|
+
host: () => (
|
|
64
|
+
<div>
|
|
65
|
+
Hostname or IP of the database that will be used as the source for data
|
|
66
|
+
retrieval (full data refresh).
|
|
67
|
+
</div>
|
|
68
|
+
),
|
|
69
|
+
port: () => (
|
|
70
|
+
<div>
|
|
71
|
+
Port of the database that will be used as the source for data retrieval
|
|
72
|
+
(full data refresh).
|
|
73
|
+
</div>
|
|
74
|
+
),
|
|
75
|
+
username: () => (
|
|
76
|
+
<div>
|
|
77
|
+
Username used to connect to the database that will be used as the source
|
|
78
|
+
for data retrieval (full data refresh).
|
|
79
|
+
</div>
|
|
80
|
+
),
|
|
81
|
+
password: () => (
|
|
82
|
+
<div>
|
|
83
|
+
Password used to connect to the database that will be used as the source
|
|
84
|
+
for data retrieval (full data refresh).
|
|
85
|
+
</div>
|
|
86
|
+
),
|
|
87
|
+
dbname: () => (
|
|
88
|
+
<div>
|
|
89
|
+
Database name used to connect to the source to run diagnostic queries.
|
|
90
|
+
This database is not necessarily copied (another field,{' '}
|
|
91
|
+
<span className={styles.firaCodeFont}>databases</span>, defines which
|
|
92
|
+
database to copy).
|
|
93
|
+
</div>
|
|
94
|
+
),
|
|
95
|
+
databases: () => (
|
|
96
|
+
<div>
|
|
97
|
+
Specifies the list of databases the PostgreSQL server will copy during data
|
|
98
|
+
retrieval (full data refresh). To specify multiple database names, provide
|
|
99
|
+
each value on a separate line or use spaces as dividers. To copy all
|
|
100
|
+
available databases, leave this value empty.
|
|
101
|
+
</div>
|
|
102
|
+
),
|
|
103
|
+
dumpParallelJobs: () => (
|
|
104
|
+
<div>
|
|
105
|
+
Number of parallel workers used to dump the source databases to disk. If
|
|
106
|
+
the source is a production server under load, it is not recommended to use
|
|
107
|
+
more than 50% of its available vCPUs. Increasing this number speeds up
|
|
108
|
+
dumping but increases the risk of performance issues on the source (e.g.,
|
|
109
|
+
due to CPU or disk I/O saturation).
|
|
110
|
+
</div>
|
|
111
|
+
),
|
|
112
|
+
pgDumpCustomOptions: () => (
|
|
113
|
+
<div>
|
|
114
|
+
pg_dump options to be used to create a database dump, for example:
|
|
115
|
+
'--exclude-schema=repack --exclude-schema="camelStyleSchemaName"'. Note
|
|
116
|
+
that due to security reasons, the current implementation supports only
|
|
117
|
+
letters, numbers, hyphen, underscore, equal sign, and double quotes.
|
|
118
|
+
</div>
|
|
119
|
+
),
|
|
120
|
+
restoreParallelJobs: () => (
|
|
121
|
+
<div>
|
|
122
|
+
Number of parallel workers used to restore databases from dump to
|
|
123
|
+
PostgreSQL managed by DBLab. For initial data retrieval (the first data
|
|
124
|
+
refresh), it is recommended to match the number of available vCPUs on the
|
|
125
|
+
machine running DBLab. This yields faster restore times but can increase
|
|
126
|
+
CPU and disk I/O usage on that machine (up to temporary resource
|
|
127
|
+
saturation). For subsequent refreshes, if DBLab is in continuous use, it is
|
|
128
|
+
recommended to reduce this value by 50% to reserve capacity for normal
|
|
129
|
+
DBLab operations (such as working with clones).
|
|
130
|
+
</div>
|
|
131
|
+
),
|
|
132
|
+
pgRestoreCustomOptions: () => (
|
|
133
|
+
<div>
|
|
134
|
+
pg_restore options to be used to restore from a database dump, for
|
|
135
|
+
example: '--exclude-schema=repack
|
|
136
|
+
--exclude-schema="camelStyleSchemaName"'. Note that due to security
|
|
137
|
+
reasons, the current implementation supports only letters, numbers,
|
|
138
|
+
hyphen, underscore, equal sign, and double quotes.
|
|
139
|
+
</div>
|
|
140
|
+
),
|
|
141
|
+
timetable: () => (
|
|
142
|
+
<div>
|
|
143
|
+
Schedule for full data refreshes, in{' '}
|
|
144
|
+
<a
|
|
145
|
+
target={'_blank'}
|
|
146
|
+
href={'https://en.wikipedia.org/wiki/Cron#Overview'}
|
|
147
|
+
className={styles.externalLink}
|
|
148
|
+
>
|
|
149
|
+
crontab format
|
|
150
|
+
</a>
|
|
151
|
+
.
|
|
152
|
+
</div>
|
|
153
|
+
),
|
|
154
|
+
tuningParams: () => (
|
|
155
|
+
<div>
|
|
156
|
+
Query tuning parameters. These are essential to ensure that cloned
|
|
157
|
+
PostgreSQL instances generate the same plans as the source (specifically,
|
|
158
|
+
they are crucial for query performance troubleshooting and optimization,
|
|
159
|
+
including working with EXPLAIN plans). For details, see the{' '}
|
|
160
|
+
<a
|
|
161
|
+
target={'_blank'}
|
|
162
|
+
href={'https://postgres.ai/docs/how-to-guides/administration/postgresql-configuration#postgresql-configuration-in-clones'}
|
|
163
|
+
className={styles.externalLink}
|
|
164
|
+
>
|
|
165
|
+
docs
|
|
166
|
+
</a>
|
|
167
|
+
.
|
|
168
|
+
</div>
|
|
169
|
+
),
|
|
170
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) 2019-2021, Postgres.ai, Nikolay Samokhvalov nik@postgres.ai
|
|
3
|
+
* All Rights Reserved. Proprietary and confidential.
|
|
4
|
+
* Unauthorized copying of this file, via any medium is strictly prohibited
|
|
5
|
+
*--------------------------------------------------------------------------
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { useFormik } from 'formik'
|
|
9
|
+
import * as Yup from 'yup'
|
|
10
|
+
|
|
11
|
+
export type FormValues = {
|
|
12
|
+
debug: boolean
|
|
13
|
+
dockerImage: string
|
|
14
|
+
dockerTag: string
|
|
15
|
+
dockerPath: string
|
|
16
|
+
dockerImageType: string
|
|
17
|
+
sharedBuffers: string
|
|
18
|
+
sharedPreloadLibraries: string
|
|
19
|
+
tuningParams: string
|
|
20
|
+
timetable: string
|
|
21
|
+
dbname: string
|
|
22
|
+
host: string
|
|
23
|
+
port: string
|
|
24
|
+
username: string
|
|
25
|
+
password: string
|
|
26
|
+
databases: string
|
|
27
|
+
dumpParallelJobs: string
|
|
28
|
+
dumpIgnoreErrors: boolean
|
|
29
|
+
restoreParallelJobs: string
|
|
30
|
+
restoreIgnoreErrors: boolean
|
|
31
|
+
pgDumpCustomOptions: string
|
|
32
|
+
pgRestoreCustomOptions: string
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const Schema = Yup.object().shape({
|
|
36
|
+
dockerImage: Yup.string().required('Docker image is required'),
|
|
37
|
+
dbname: Yup.string().required('Dbname is required'),
|
|
38
|
+
host: Yup.string().required('Host is required'),
|
|
39
|
+
port: Yup.string().required('Port is required'),
|
|
40
|
+
username: Yup.string().required('Username is required'),
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
export const useForm = (onSubmit: (values: FormValues) => void) => {
|
|
44
|
+
const formik = useFormik<FormValues>({
|
|
45
|
+
initialValues: {
|
|
46
|
+
debug: false,
|
|
47
|
+
dockerImage: '',
|
|
48
|
+
dockerTag: '',
|
|
49
|
+
dockerPath: '',
|
|
50
|
+
dockerImageType: '',
|
|
51
|
+
sharedBuffers: '',
|
|
52
|
+
sharedPreloadLibraries: '',
|
|
53
|
+
tuningParams: '',
|
|
54
|
+
timetable: '',
|
|
55
|
+
dbname: '',
|
|
56
|
+
host: '',
|
|
57
|
+
port: '',
|
|
58
|
+
username: '',
|
|
59
|
+
password: '',
|
|
60
|
+
databases: '',
|
|
61
|
+
dumpParallelJobs: '',
|
|
62
|
+
restoreParallelJobs: '',
|
|
63
|
+
pgDumpCustomOptions: '',
|
|
64
|
+
pgRestoreCustomOptions: '',
|
|
65
|
+
dumpIgnoreErrors: false,
|
|
66
|
+
restoreIgnoreErrors: false,
|
|
67
|
+
},
|
|
68
|
+
validationSchema: Schema,
|
|
69
|
+
onSubmit,
|
|
70
|
+
validateOnBlur: false,
|
|
71
|
+
validateOnChange: false,
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
const formatDatabaseArray = (database: string) => {
|
|
75
|
+
let databases = []
|
|
76
|
+
const splitDatabaseArray = database.split(/[,(\s)(\n)(\r)(\t)(\r\n)]/)
|
|
77
|
+
|
|
78
|
+
for (let i = 0; i < splitDatabaseArray.length; i++) {
|
|
79
|
+
if (splitDatabaseArray[i] !== '') {
|
|
80
|
+
databases.push(splitDatabaseArray[i])
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return databases
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const connectionData = {
|
|
88
|
+
host: formik.values.host,
|
|
89
|
+
port: formik.values.port,
|
|
90
|
+
username: formik.values.username,
|
|
91
|
+
password: formik.values.password,
|
|
92
|
+
dbname: formik.values.dbname,
|
|
93
|
+
...(formik.values.databases && {
|
|
94
|
+
db_list: formatDatabaseArray(formik.values.databases),
|
|
95
|
+
}),
|
|
96
|
+
...(formik.values.dockerImageType === 'custom' && {
|
|
97
|
+
dockerImage: formik.values.dockerImage,
|
|
98
|
+
}),
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const isConnectionDataValid =
|
|
102
|
+
formik.values.host &&
|
|
103
|
+
formik.values.port &&
|
|
104
|
+
formik.values.username &&
|
|
105
|
+
formik.values.dbname
|
|
106
|
+
|
|
107
|
+
return [{ formik, connectionData, isConnectionDataValid }]
|
|
108
|
+
}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { DatabaseType } from '@postgres.ai/shared/types/api/entities/config'
|
|
2
|
+
|
|
3
|
+
import { dockerImageOptions } from '../configOptions'
|
|
4
|
+
import { FormValues } from '../useForm'
|
|
5
|
+
|
|
6
|
+
const seContainerRegistry = 'se-images'
|
|
7
|
+
const genericImagePrefix = 'postgresai/extended-postgres'
|
|
8
|
+
// Predefined list of Docker images for UI display
|
|
9
|
+
// This list is shown to users for convenient selection
|
|
10
|
+
// IMPORTANT: if user specified an image in config that's not in this list,
|
|
11
|
+
// it will be automatically added via createEnhancedDockerImages()
|
|
12
|
+
const dockerImagesConfig = {
|
|
13
|
+
'9.6': ['0.5.3', '0.5.2', '0.5.1'],
|
|
14
|
+
'10': ['0.5.3', '0.5.2', '0.5.1'],
|
|
15
|
+
'11': ['0.5.3', '0.5.2', '0.5.1'],
|
|
16
|
+
'12': ['0.5.3', '0.5.2', '0.5.1'],
|
|
17
|
+
'13': ['0.5.3', '0.5.2', '0.5.1'],
|
|
18
|
+
'14': ['0.5.3', '0.5.2', '0.5.1'],
|
|
19
|
+
'15': ['0.5.3', '0.5.2', '0.5.1'],
|
|
20
|
+
'16': ['0.5.3', '0.5.2', '0.5.1'],
|
|
21
|
+
'17': ['0.5.3', '0.5.2', '0.5.1'],
|
|
22
|
+
'18': ['0.6.1'],
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type FormValuesKey = keyof FormValues
|
|
26
|
+
|
|
27
|
+
interface DockerImage {
|
|
28
|
+
package_group: string
|
|
29
|
+
pg_major_version: string
|
|
30
|
+
tag: string
|
|
31
|
+
location: string
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
type DockerImagesConfig = Record<string, string[]>
|
|
35
|
+
|
|
36
|
+
export const uniqueChipValue = (values: string) => {
|
|
37
|
+
const splitChipArray = values.split(/[,(\s)(\n)(\r)(\t)(\r\n)]/)
|
|
38
|
+
let databaseArray = []
|
|
39
|
+
|
|
40
|
+
for (let i in splitChipArray) {
|
|
41
|
+
if (
|
|
42
|
+
splitChipArray[i] !== '' &&
|
|
43
|
+
databaseArray.indexOf(splitChipArray[i]) === -1
|
|
44
|
+
) {
|
|
45
|
+
databaseArray.push(splitChipArray[i])
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return databaseArray.join(' ')
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export const postUniqueDatabases = (values: string) => {
|
|
53
|
+
const splitDatabaseArray = values.split(/[,(\s)(\n)(\r)(\t)(\r\n)]/)
|
|
54
|
+
|
|
55
|
+
const databases = splitDatabaseArray.reduce((acc: DatabaseType, curr) => {
|
|
56
|
+
acc[curr] = {}
|
|
57
|
+
return acc
|
|
58
|
+
}, {})
|
|
59
|
+
|
|
60
|
+
const nonEmptyDatabase = Object.fromEntries(
|
|
61
|
+
Object.entries(databases).filter(([name]) => name != ''),
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
return values.length !== 0 ? nonEmptyDatabase : null
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const createDockerImages = (
|
|
68
|
+
dockerImagesConfig: DockerImagesConfig,
|
|
69
|
+
): DockerImage[] => {
|
|
70
|
+
const dockerImages: DockerImage[] = []
|
|
71
|
+
|
|
72
|
+
for (const pg_major_version in dockerImagesConfig) {
|
|
73
|
+
if (dockerImagesConfig.hasOwnProperty(pg_major_version)) {
|
|
74
|
+
const customTags = dockerImagesConfig[pg_major_version]
|
|
75
|
+
|
|
76
|
+
customTags.forEach((tag) => {
|
|
77
|
+
const image: DockerImage = {
|
|
78
|
+
package_group: 'postgresai',
|
|
79
|
+
pg_major_version,
|
|
80
|
+
tag: `${pg_major_version}-${tag}`,
|
|
81
|
+
location: `${genericImagePrefix}:${pg_major_version}-${tag}`,
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
dockerImages.push(image)
|
|
85
|
+
})
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return dockerImages
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export const genericDockerImages = createDockerImages(dockerImagesConfig)
|
|
93
|
+
|
|
94
|
+
export const isSeDockerImage = (dockerImage: string | undefined) => {
|
|
95
|
+
const dockerImageType =
|
|
96
|
+
dockerImage?.includes(seContainerRegistry) &&
|
|
97
|
+
dockerImage.split(`${seContainerRegistry}/`)[1]?.split(':')[0]
|
|
98
|
+
|
|
99
|
+
return dockerImageOptions.some((element) => element.type === dockerImageType)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export const getImageType = (imageUrl: string) => {
|
|
103
|
+
const postgresCustomImageType =
|
|
104
|
+
imageUrl.includes(seContainerRegistry) &&
|
|
105
|
+
imageUrl.split(`${seContainerRegistry}/`)[1]?.split(':')[0]
|
|
106
|
+
|
|
107
|
+
if (imageUrl.includes(genericImagePrefix)) {
|
|
108
|
+
return 'Generic Postgres'
|
|
109
|
+
} else if (postgresCustomImageType && isSeDockerImage(imageUrl)) {
|
|
110
|
+
return postgresCustomImageType
|
|
111
|
+
} else {
|
|
112
|
+
return 'custom'
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export const getImageMajorVersion = (pgImage: string | undefined) => {
|
|
117
|
+
if (!pgImage) return undefined
|
|
118
|
+
|
|
119
|
+
try {
|
|
120
|
+
const pgImageVersion = pgImage.split(':')[1]
|
|
121
|
+
if (!pgImageVersion) return undefined
|
|
122
|
+
|
|
123
|
+
const pgServerVersion = pgImageVersion.split('-')[0]
|
|
124
|
+
if (!pgServerVersion) return undefined
|
|
125
|
+
|
|
126
|
+
return pgServerVersion.includes('.')
|
|
127
|
+
? pgServerVersion.split('.')[0]
|
|
128
|
+
: pgServerVersion
|
|
129
|
+
} catch (error) {
|
|
130
|
+
// Return undefined for malformed image strings
|
|
131
|
+
return undefined
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export const formatDatabases = (databases: DatabaseType | null) => {
|
|
136
|
+
let formattedDatabases = ''
|
|
137
|
+
|
|
138
|
+
if (databases !== null) {
|
|
139
|
+
Object.keys(databases).forEach(function (key) {
|
|
140
|
+
formattedDatabases += key + ' '
|
|
141
|
+
})
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return formattedDatabases
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export const formatDumpCustomOptions = (options: string[] | null) => {
|
|
148
|
+
let formattedOptions = ''
|
|
149
|
+
|
|
150
|
+
if (options !== null) {
|
|
151
|
+
options.forEach(function (key) {
|
|
152
|
+
formattedOptions += key + ' '
|
|
153
|
+
})
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return formattedOptions
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export const postUniqueCustomOptions = (options: string) => {
|
|
160
|
+
const splitOptionsArray = options.split(/[,(\s)(\n)(\r)(\t)(\r\n)]/)
|
|
161
|
+
const uniqueOptions = splitOptionsArray.filter(
|
|
162
|
+
(item, index) => splitOptionsArray.indexOf(item) === index && item !== '',
|
|
163
|
+
)
|
|
164
|
+
return uniqueOptions
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export const customOrGenericImage = (dockerImage: string | undefined) =>
|
|
168
|
+
dockerImage === 'Generic Postgres' || dockerImage === 'custom'
|
|
169
|
+
|
|
170
|
+
export const createFallbackDockerImage = (
|
|
171
|
+
dockerPath: string,
|
|
172
|
+
dockerTag: string,
|
|
173
|
+
): DockerImage => {
|
|
174
|
+
const majorVersion = getImageMajorVersion(dockerPath) || '18' // Default to 18 if version can't be extracted
|
|
175
|
+
|
|
176
|
+
return {
|
|
177
|
+
package_group: 'postgresai',
|
|
178
|
+
pg_major_version: majorVersion,
|
|
179
|
+
tag: dockerTag || `${majorVersion}-custom`,
|
|
180
|
+
location: dockerPath,
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Creates enhanced list of Docker images, including image from configuration
|
|
185
|
+
export const createEnhancedDockerImages = (
|
|
186
|
+
configDockerPath?: string,
|
|
187
|
+
configDockerTag?: string,
|
|
188
|
+
): DockerImage[] => {
|
|
189
|
+
let enhancedImages = [...genericDockerImages]
|
|
190
|
+
|
|
191
|
+
// If there's an image in config, check if we need to add it
|
|
192
|
+
if (configDockerPath && configDockerTag) {
|
|
193
|
+
const existingImage = genericDockerImages.find(
|
|
194
|
+
(image) => image.location === configDockerPath || image.tag === configDockerTag
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
// If image not found in predefined list, add it
|
|
198
|
+
if (!existingImage) {
|
|
199
|
+
// Check if this is a Generic Postgres image
|
|
200
|
+
if (configDockerPath.includes(genericImagePrefix)) {
|
|
201
|
+
// For Generic Postgres images create proper structure
|
|
202
|
+
const majorVersion = getImageMajorVersion(configDockerPath)
|
|
203
|
+
if (majorVersion) {
|
|
204
|
+
const configImage: DockerImage = {
|
|
205
|
+
package_group: 'postgresai',
|
|
206
|
+
pg_major_version: majorVersion,
|
|
207
|
+
tag: configDockerTag,
|
|
208
|
+
location: configDockerPath,
|
|
209
|
+
}
|
|
210
|
+
enhancedImages.push(configImage)
|
|
211
|
+
} else {
|
|
212
|
+
// Fallback if version extraction failed
|
|
213
|
+
const configImage = createFallbackDockerImage(configDockerPath, configDockerTag)
|
|
214
|
+
enhancedImages.push(configImage)
|
|
215
|
+
}
|
|
216
|
+
} else {
|
|
217
|
+
// For custom images use fallback
|
|
218
|
+
const configImage = createFallbackDockerImage(configDockerPath, configDockerTag)
|
|
219
|
+
enhancedImages.push(configImage)
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
return enhancedImages
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Checks if image is loaded from configuration (not from predefined list)
|
|
228
|
+
export const isConfigLoadedImage = (
|
|
229
|
+
dockerPath: string,
|
|
230
|
+
dockerTag: string,
|
|
231
|
+
): boolean => {
|
|
232
|
+
const existingImage = genericDockerImages.find(
|
|
233
|
+
(image) => image.location === dockerPath || image.tag === dockerTag
|
|
234
|
+
)
|
|
235
|
+
return !existingImage
|
|
236
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { Tooltip } from '@material-ui/core'
|
|
2
|
+
import { makeStyles } from '@material-ui/core'
|
|
3
|
+
import { formatDistanceSafe } from '@postgres.ai/shared/utils/date'
|
|
4
|
+
|
|
5
|
+
import { Link } from '@postgres.ai/shared/components/Link2'
|
|
6
|
+
import { Instance } from '@postgres.ai/shared/types/api/entities/instance'
|
|
7
|
+
|
|
8
|
+
import { formatTimestampUtc } from './utils'
|
|
9
|
+
|
|
10
|
+
const useStyles = makeStyles(
|
|
11
|
+
{
|
|
12
|
+
container: {
|
|
13
|
+
maxWidth: '650px',
|
|
14
|
+
width: '100%',
|
|
15
|
+
},
|
|
16
|
+
timeLabel: {
|
|
17
|
+
lineHeight: '16px',
|
|
18
|
+
fontSize: 14,
|
|
19
|
+
cursor: 'pointer',
|
|
20
|
+
flex: '2 1 0',
|
|
21
|
+
|
|
22
|
+
'& span': {
|
|
23
|
+
fontWeight: 'normal !important',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
toolTip: {
|
|
27
|
+
fontSize: '10px !important',
|
|
28
|
+
maxWidth: '100%',
|
|
29
|
+
},
|
|
30
|
+
content: {
|
|
31
|
+
margin: '25px 0',
|
|
32
|
+
},
|
|
33
|
+
flexContainer: {
|
|
34
|
+
display: 'flex',
|
|
35
|
+
alignItems: 'center',
|
|
36
|
+
flexDirection: 'row',
|
|
37
|
+
padding: '10px 0',
|
|
38
|
+
borderBottom: '1px solid rgba(224, 224, 224, 1)',
|
|
39
|
+
|
|
40
|
+
'& span:first-child': {
|
|
41
|
+
flex: '1 1 0',
|
|
42
|
+
fontWeight: '500',
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
'& span': {
|
|
46
|
+
flex: '2 1 0',
|
|
47
|
+
margin: '0',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
{ index: 1 },
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
export const InactiveInstance = ({
|
|
55
|
+
org,
|
|
56
|
+
instance,
|
|
57
|
+
}: {
|
|
58
|
+
org: string
|
|
59
|
+
instance: Instance | null
|
|
60
|
+
}) => {
|
|
61
|
+
const classes = useStyles()
|
|
62
|
+
|
|
63
|
+
const getVersionDigits = (str: string | undefined | null) => {
|
|
64
|
+
if (!str) {
|
|
65
|
+
return 'N/A'
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const digits = str.match(/\d+/g)
|
|
69
|
+
|
|
70
|
+
if (digits && digits.length > 0) {
|
|
71
|
+
return `${digits[0]}.${digits[1]}.${digits[2]}`
|
|
72
|
+
}
|
|
73
|
+
return ''
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<div className={classes.container}>
|
|
78
|
+
<div className={classes.flexContainer}>
|
|
79
|
+
<span>Plan</span>
|
|
80
|
+
<span>{instance?.dto.plan || '---'}</span>
|
|
81
|
+
</div>
|
|
82
|
+
<div className={classes.flexContainer}>
|
|
83
|
+
<span>Version</span>
|
|
84
|
+
<span>
|
|
85
|
+
{getVersionDigits(
|
|
86
|
+
instance?.state && (instance?.state?.engine?.version as string),
|
|
87
|
+
)}
|
|
88
|
+
</span>
|
|
89
|
+
</div>
|
|
90
|
+
<div className={classes.flexContainer}>
|
|
91
|
+
<span>Registered</span>
|
|
92
|
+
<span className={classes.timeLabel}>
|
|
93
|
+
<Tooltip
|
|
94
|
+
title={formatTimestampUtc(instance?.createdAt) ?? ''}
|
|
95
|
+
classes={{ tooltip: classes.toolTip }}
|
|
96
|
+
>
|
|
97
|
+
<span>
|
|
98
|
+
{instance?.createdAt ? formatDistanceSafe(new Date(instance?.createdAt)) : '-'}
|
|
99
|
+
</span>
|
|
100
|
+
</Tooltip>
|
|
101
|
+
</span>
|
|
102
|
+
</div>
|
|
103
|
+
{instance?.telemetryLastReportedAt && (
|
|
104
|
+
<div className={classes.flexContainer}>
|
|
105
|
+
<span>Telemetry last reported</span>
|
|
106
|
+
<span className={classes.timeLabel}>
|
|
107
|
+
<Tooltip
|
|
108
|
+
title={
|
|
109
|
+
formatTimestampUtc(instance?.telemetryLastReportedAt) ?? ''
|
|
110
|
+
}
|
|
111
|
+
classes={{ tooltip: classes.toolTip }}
|
|
112
|
+
>
|
|
113
|
+
<span>
|
|
114
|
+
{instance?.telemetryLastReportedAt ? formatDistanceSafe(new Date(instance?.telemetryLastReportedAt)) : '-'}
|
|
115
|
+
</span>
|
|
116
|
+
</Tooltip>
|
|
117
|
+
</span>
|
|
118
|
+
</div>
|
|
119
|
+
)}
|
|
120
|
+
<div className={classes.flexContainer}>
|
|
121
|
+
<span>Instance ID</span>
|
|
122
|
+
<span>
|
|
123
|
+
<span
|
|
124
|
+
style={{
|
|
125
|
+
fontWeight: 'normal',
|
|
126
|
+
}}
|
|
127
|
+
>
|
|
128
|
+
<Link to={`/${org}/instances/${instance?.id}`}>{instance?.id}</Link>
|
|
129
|
+
(self-assigned:{' '}
|
|
130
|
+
{instance?.dto?.selfassigned_instance_id || 'N/A'})
|
|
131
|
+
</span>
|
|
132
|
+
</span>
|
|
133
|
+
</div>
|
|
134
|
+
{instance?.dto.plan !== 'CE' && (
|
|
135
|
+
<div className={classes.flexContainer}>
|
|
136
|
+
<span>Billing data</span>
|
|
137
|
+
<span>
|
|
138
|
+
<Link to={`/${org}/billing`}>Billing data</Link>
|
|
139
|
+
</span>
|
|
140
|
+
</div>
|
|
141
|
+
)}
|
|
142
|
+
<p className={classes.content}>
|
|
143
|
+
To work with this instance, access its UI or API directly. Full
|
|
144
|
+
integration of UI to the Platform is currently available only to the EE
|
|
145
|
+
users. If you have any questions, reach out to{' '}
|
|
146
|
+
<a
|
|
147
|
+
href="https://postgres.ai/contact"
|
|
148
|
+
target="_blank"
|
|
149
|
+
rel="noopener noreferrer"
|
|
150
|
+
>
|
|
151
|
+
the Postgres.ai team
|
|
152
|
+
</a>
|
|
153
|
+
.
|
|
154
|
+
</p>
|
|
155
|
+
</div>
|
|
156
|
+
)
|
|
157
|
+
}
|