@elyx-code/editor-ui 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/README.md +2 -0
  2. package/package.json +109 -0
  3. package/src/App.tsx +31 -0
  4. package/src/Router.tsx +115 -0
  5. package/src/__mocks__/defaultModuleMock.ts +1 -0
  6. package/src/__mocks__/fileMock.ts +1 -0
  7. package/src/__mocks__/styleMock.ts +1 -0
  8. package/src/assets/Clock-11.1s-18px.svg +16 -0
  9. package/src/assets/Clock-11.1s-28px.svg +16 -0
  10. package/src/assets/authentication.svg +1 -0
  11. package/src/assets/canvas-backdrop-0.png +0 -0
  12. package/src/assets/canvas-backdrop-1.png +0 -0
  13. package/src/assets/canvas-backdrop-2.png +0 -0
  14. package/src/assets/canvas-backdrop-3.png +0 -0
  15. package/src/assets/canvas-backdrop-4.png +0 -0
  16. package/src/assets/canvas-backdrop-5.png +0 -0
  17. package/src/assets/canvas-backdrop.png +0 -0
  18. package/src/assets/checkmark-animation.gif +0 -0
  19. package/src/assets/checkmark-animation.mp4 +0 -0
  20. package/src/assets/code-formatting/format-black.svg +6 -0
  21. package/src/assets/code-formatting/format-dark-grey.svg +6 -0
  22. package/src/assets/code-formatting/format-light-grey.svg +6 -0
  23. package/src/assets/code-formatting/format-white.svg +6 -0
  24. package/src/assets/code-formatting/inline-black.svg +5 -0
  25. package/src/assets/code-formatting/inline-dark-grey.svg +5 -0
  26. package/src/assets/code-formatting/inline-light-grey.svg +5 -0
  27. package/src/assets/code-formatting/inline-white.svg +5 -0
  28. package/src/assets/contained-logo-full-word.png +0 -0
  29. package/src/assets/cron-job-color.png +0 -0
  30. package/src/assets/cron-job.png +0 -0
  31. package/src/assets/database-table-color.png +0 -0
  32. package/src/assets/database-table.png +0 -0
  33. package/src/assets/datatype-icons/black/any.svg +1 -0
  34. package/src/assets/datatype-icons/black/binary.svg +1 -0
  35. package/src/assets/datatype-icons/black/boolean.svg +3 -0
  36. package/src/assets/datatype-icons/black/date-time.svg +3 -0
  37. package/src/assets/datatype-icons/black/definition-entity.svg +6 -0
  38. package/src/assets/datatype-icons/black/key-file.svg +1 -0
  39. package/src/assets/datatype-icons/black/list.svg +3 -0
  40. package/src/assets/datatype-icons/black/null.svg +3 -0
  41. package/src/assets/datatype-icons/black/number.svg +13 -0
  42. package/src/assets/datatype-icons/black/project.svg +12 -0
  43. package/src/assets/datatype-icons/black/sql-program.svg +2 -0
  44. package/src/assets/datatype-icons/black/text.svg +3 -0
  45. package/src/assets/datatype-icons/black/unknown.svg +3 -0
  46. package/src/assets/datatype-icons/black/uuid.svg +4 -0
  47. package/src/assets/datatype-icons/black/void.svg +1 -0
  48. package/src/assets/datatype-icons/dark-grey/any.svg +1 -0
  49. package/src/assets/datatype-icons/dark-grey/boolean.svg +3 -0
  50. package/src/assets/datatype-icons/dark-grey/date-time.svg +3 -0
  51. package/src/assets/datatype-icons/dark-grey/definition-entity.svg +6 -0
  52. package/src/assets/datatype-icons/dark-grey/list.svg +3 -0
  53. package/src/assets/datatype-icons/dark-grey/null.svg +3 -0
  54. package/src/assets/datatype-icons/dark-grey/number.svg +13 -0
  55. package/src/assets/datatype-icons/dark-grey/project.svg +12 -0
  56. package/src/assets/datatype-icons/dark-grey/sql-program.svg +2 -0
  57. package/src/assets/datatype-icons/dark-grey/text.svg +3 -0
  58. package/src/assets/datatype-icons/dark-grey/unknown.svg +3 -0
  59. package/src/assets/datatype-icons/dark-grey/uuid.svg +4 -0
  60. package/src/assets/datatype-icons/dark-grey/void.svg +1 -0
  61. package/src/assets/datatype-icons/light-grey/any.svg +1 -0
  62. package/src/assets/datatype-icons/light-grey/boolean.svg +3 -0
  63. package/src/assets/datatype-icons/light-grey/date-time.svg +3 -0
  64. package/src/assets/datatype-icons/light-grey/definition-entity.svg +6 -0
  65. package/src/assets/datatype-icons/light-grey/list.svg +3 -0
  66. package/src/assets/datatype-icons/light-grey/null.svg +3 -0
  67. package/src/assets/datatype-icons/light-grey/number.svg +13 -0
  68. package/src/assets/datatype-icons/light-grey/project.svg +12 -0
  69. package/src/assets/datatype-icons/light-grey/sql-program.svg +2 -0
  70. package/src/assets/datatype-icons/light-grey/text.svg +3 -0
  71. package/src/assets/datatype-icons/light-grey/unknown.svg +3 -0
  72. package/src/assets/datatype-icons/light-grey/uuid.svg +4 -0
  73. package/src/assets/datatype-icons/light-grey/void.svg +1 -0
  74. package/src/assets/edit.png +0 -0
  75. package/src/assets/execution.svg +13 -0
  76. package/src/assets/favicon.svg +14 -0
  77. package/src/assets/file-search.svg +1 -0
  78. package/src/assets/http-endpoint.png +0 -0
  79. package/src/assets/image-input-placeholder.png +0 -0
  80. package/src/assets/logo-full-word-white.png +0 -0
  81. package/src/assets/logo-full-word.png +0 -0
  82. package/src/assets/password.svg +85 -0
  83. package/src/assets/pencil.png +0 -0
  84. package/src/assets/publish-project-rich-icon-2.svg +1 -0
  85. package/src/assets/publish-project-rich-icon.svg +1 -0
  86. package/src/assets/relational-database.png +0 -0
  87. package/src/assets/resources.svg +3 -0
  88. package/src/assets/resume-icon-14px.png +0 -0
  89. package/src/assets/server.png +0 -0
  90. package/src/assets/small-status/checkmark.svg +4 -0
  91. package/src/assets/small-status/error.svg +4 -0
  92. package/src/assets/small-status/loading.svg +4 -0
  93. package/src/assets/small-status/skipped.svg +11 -0
  94. package/src/assets/sql-connection-config.svg +1 -0
  95. package/src/assets/sql-row-transformer.svg +1 -0
  96. package/src/assets/ssl-certificate-config.svg +1 -0
  97. package/src/assets/sync.svg +1 -0
  98. package/src/assets/testing-logic-icon.svg +1 -0
  99. package/src/assets/versions.svg +25 -0
  100. package/src/assets/visual-programming-icon.svg +1 -0
  101. package/src/assets/warning-sign-24px.png +0 -0
  102. package/src/auth/index.ts +318 -0
  103. package/src/components/DialogLoader.tsx +94 -0
  104. package/src/components/EntityDialogHeader.tsx +110 -0
  105. package/src/components/EntityDialogSectionHeader.tsx +214 -0
  106. package/src/components/GalleryAddExternalIntegrationInfoDialog.tsx +87 -0
  107. package/src/components/GenerateProjectStartingLogicPromptDialog.tsx +281 -0
  108. package/src/components/LegacyRouteRedirector.tsx +55 -0
  109. package/src/components/ProPlanChip.tsx +23 -0
  110. package/src/components/ReportBugDialog.tsx +412 -0
  111. package/src/components/RequestIntegrationAccessDialog.tsx +261 -0
  112. package/src/components/UseTemplateProjectDialog.tsx +193 -0
  113. package/src/components/WorkspaceLayout.tsx +152 -0
  114. package/src/components/animated-svg/AnimatedCheckmark.tsx +41 -0
  115. package/src/components/animated-svg/AnimatedCrossmark.tsx +51 -0
  116. package/src/components/animated-svg/AnimatedEmailSending.tsx +38 -0
  117. package/src/components/animated-svg/AnimatedLoading.tsx +72 -0
  118. package/src/components/animated-svg/animated-svg.css +239 -0
  119. package/src/components/canvas/Canvas.tsx +16 -0
  120. package/src/components/canvas/CreateEntityMenu.tsx +2020 -0
  121. package/src/components/canvas/canvas.css +10 -0
  122. package/src/components/canvas/create-entity-menu.css +579 -0
  123. package/src/components/canvas-search/CanvasSearch.tsx +501 -0
  124. package/src/components/canvas-search/canvas-search.css +126 -0
  125. package/src/components/canvas-settings-menu/CanvasSettingsMenuButton.tsx +515 -0
  126. package/src/components/canvas-settings-menu/canvas-settings-menu.css +96 -0
  127. package/src/components/circular-image-upload/CircularImageUpload.tsx +113 -0
  128. package/src/components/circular-image-upload/circular-image-upload.css +69 -0
  129. package/src/components/costs/CostsDialog.tsx +459 -0
  130. package/src/components/data-type/DataTypeBuilder.tsx +3127 -0
  131. package/src/components/data-type/data-type-builder.css +45 -0
  132. package/src/components/dialogs/BetaAcknowledgeDialog.tsx +43 -0
  133. package/src/components/dialogs/ComplexDataDialog.tsx +458 -0
  134. package/src/components/dialogs/CronBuilderDialog.tsx +2145 -0
  135. package/src/components/dialogs/ExternalIntegrationConnections.tsx +565 -0
  136. package/src/components/dialogs/JsonEditorDialog.tsx +1392 -0
  137. package/src/components/dialogs/StringEditorDialog.tsx +268 -0
  138. package/src/components/dialogs/argument-declaration/ArgumentDeclaration.tsx +1167 -0
  139. package/src/components/dialogs/argument-declaration/ArgumentDeclarationDialogContent.tsx +128 -0
  140. package/src/components/dialogs/beta-dialog.css +165 -0
  141. package/src/components/dialogs/condition/Condition.tsx +431 -0
  142. package/src/components/dialogs/condition/ConditionDialogContent.tsx +126 -0
  143. package/src/components/dialogs/definition-entity/DefinitionEntityDialogContent.tsx +973 -0
  144. package/src/components/dialogs/function-call/FunctionCall.tsx +442 -0
  145. package/src/components/dialogs/function-call/FunctionCallDialogContent.tsx +126 -0
  146. package/src/components/dialogs/function-declaration/FunctionDeclaration.tsx +926 -0
  147. package/src/components/dialogs/function-declaration/FunctionDeclarationDialogContent.tsx +124 -0
  148. package/src/components/dialogs/generating-project-starting-logic-overlay/GeneratingProjectStartingLogicOverlay.tsx +176 -0
  149. package/src/components/dialogs/generating-project-starting-logic-overlay/generating-project-starting-logic-overlay.css +13 -0
  150. package/src/components/dialogs/global-event/GlobalEvent.tsx +475 -0
  151. package/src/components/dialogs/global-event/GlobalEventDialogContent.tsx +126 -0
  152. package/src/components/dialogs/help/HelpDialog.tsx +217 -0
  153. package/src/components/dialogs/help/HelpDilalogHomeContent.tsx +178 -0
  154. package/src/components/dialogs/help/help-dialog.css +116 -0
  155. package/src/components/dialogs/help/help-icon/HelpIconButton.tsx +41 -0
  156. package/src/components/dialogs/help/help-icon/help-icon.css +9 -0
  157. package/src/components/dialogs/input-map/InputMap.tsx +635 -0
  158. package/src/components/dialogs/input-map/InputMapDialogContent.tsx +126 -0
  159. package/src/components/dialogs/json-editor-dialog.css +4 -0
  160. package/src/components/dialogs/loop/Loop.tsx +650 -0
  161. package/src/components/dialogs/loop/LoopDialogContent.tsx +122 -0
  162. package/src/components/dialogs/operation/Operation.tsx +440 -0
  163. package/src/components/dialogs/operation/OperationDialogContent.tsx +126 -0
  164. package/src/components/dialogs/output-map/OutputMap.tsx +536 -0
  165. package/src/components/dialogs/output-map/OutputMapDialogContent.tsx +126 -0
  166. package/src/components/dialogs/property/Property.tsx +1490 -0
  167. package/src/components/dialogs/property/PropertyDialogContent.tsx +106 -0
  168. package/src/components/dialogs/search-statement/ColumnSelector.tsx +334 -0
  169. package/src/components/dialogs/search-statement/ConditionBuilder.tsx +750 -0
  170. package/src/components/dialogs/search-statement/DataAggregationSection.tsx +621 -0
  171. package/src/components/dialogs/search-statement/DataSourceSelection.tsx +734 -0
  172. package/src/components/dialogs/search-statement/EntityMetadataSection.tsx +135 -0
  173. package/src/components/dialogs/search-statement/FilterConditionsSection.tsx +151 -0
  174. package/src/components/dialogs/search-statement/InlineInputMap.tsx +153 -0
  175. package/src/components/dialogs/search-statement/LiteralValue.tsx +616 -0
  176. package/src/components/dialogs/search-statement/MainSourceAndInputsSection.tsx +271 -0
  177. package/src/components/dialogs/search-statement/NestedSearchStatementBuilder.tsx +170 -0
  178. package/src/components/dialogs/search-statement/OutputFormatSection.tsx +1779 -0
  179. package/src/components/dialogs/search-statement/ResultsSection.tsx +344 -0
  180. package/src/components/dialogs/search-statement/SearchStatementBuilder.tsx +251 -0
  181. package/src/components/dialogs/search-statement/SearchStatementDialogContent.tsx +398 -0
  182. package/src/components/dialogs/search-statement/ValueSelector.tsx +766 -0
  183. package/src/components/dialogs/search-statement/search-statement-context.tsx +1630 -0
  184. package/src/components/dialogs/search-statement/search-statement-dialog.css +56 -0
  185. package/src/components/dialogs/search-statement/test.sql +111 -0
  186. package/src/components/dialogs/value-descriptor/ValueDescriptor.tsx +824 -0
  187. package/src/components/dialogs/value-descriptor/ValueDescriptorDialogContent.tsx +124 -0
  188. package/src/components/dialogs/variable-declaration/VariableDeclaration.tsx +836 -0
  189. package/src/components/dialogs/variable-declaration/VariableDeclarationDialogContent.tsx +106 -0
  190. package/src/components/dialogs/variable-instance/VariableInstance.tsx +443 -0
  191. package/src/components/dialogs/variable-instance/VariableInstanceDialogContent.tsx +124 -0
  192. package/src/components/draggable-entity-card/ArgumentDeclaration.tsx +736 -0
  193. package/src/components/draggable-entity-card/CollapseEntityButton.tsx +170 -0
  194. package/src/components/draggable-entity-card/ConditionCard.tsx +1062 -0
  195. package/src/components/draggable-entity-card/ConnectionDeleteButton.tsx +309 -0
  196. package/src/components/draggable-entity-card/DataTypeIcon.tsx +624 -0
  197. package/src/components/draggable-entity-card/DraggableEntityCard.tsx +617 -0
  198. package/src/components/draggable-entity-card/ErrorMapProperty.tsx +464 -0
  199. package/src/components/draggable-entity-card/EventCard.tsx +700 -0
  200. package/src/components/draggable-entity-card/ExecutionInProgressValue.tsx +327 -0
  201. package/src/components/draggable-entity-card/FunctionDeclarationCard.tsx +819 -0
  202. package/src/components/draggable-entity-card/InputMapProperty.tsx +1067 -0
  203. package/src/components/draggable-entity-card/InternalCall.tsx +978 -0
  204. package/src/components/draggable-entity-card/InternalCallExecutionNode.tsx +643 -0
  205. package/src/components/draggable-entity-card/LogicScopeCallerNode.tsx +262 -0
  206. package/src/components/draggable-entity-card/LoopCard.tsx +791 -0
  207. package/src/components/draggable-entity-card/MainValueInput.tsx +523 -0
  208. package/src/components/draggable-entity-card/MainValueOutput.tsx +458 -0
  209. package/src/components/draggable-entity-card/MethodDeclaration.tsx +1088 -0
  210. package/src/components/draggable-entity-card/NestedCondition.tsx +1025 -0
  211. package/src/components/draggable-entity-card/OutputMapProperty.tsx +843 -0
  212. package/src/components/draggable-entity-card/PassthroughEntityCard.tsx +1247 -0
  213. package/src/components/draggable-entity-card/ReturnedError.tsx +549 -0
  214. package/src/components/draggable-entity-card/SmallSuccessFailureNodes.tsx +523 -0
  215. package/src/components/draggable-entity-card/SuccessFailureNodes.tsx +509 -0
  216. package/src/components/draggable-entity-card/TestEntityButton.tsx +946 -0
  217. package/src/components/draggable-entity-card/TestMenu.tsx +523 -0
  218. package/src/components/draggable-entity-card/TestMenuValidationDropdown.tsx +84 -0
  219. package/src/components/draggable-entity-card/UnreachableMarker.tsx +114 -0
  220. package/src/components/draggable-entity-card/VariableCard.tsx +1577 -0
  221. package/src/components/draggable-entity-card/VariableScopeMarker.tsx +117 -0
  222. package/src/components/draggable-entity-card/collapse-entity-button.css +44 -0
  223. package/src/components/draggable-entity-card/definition-entity/DefinitionEntityCard.tsx +1181 -0
  224. package/src/components/draggable-entity-card/definition-entity/DefinitionEntityIcon.tsx +36 -0
  225. package/src/components/draggable-entity-card/definition-entity/DefinitionEntityProperty.tsx +478 -0
  226. package/src/components/draggable-entity-card/definition-entity/DynamicFooterActions.tsx +112 -0
  227. package/src/components/draggable-entity-card/definition-entity/actions/external-integration-connection/ExportCredentialsFooterAction.tsx +461 -0
  228. package/src/components/draggable-entity-card/definition-entity/actions/external-integration-connection/RestablishConnectionFooterAction.tsx +199 -0
  229. package/src/components/draggable-entity-card/definition-entity/actions/external-integration-connection/restablish-connection-footer-action.css +85 -0
  230. package/src/components/draggable-entity-card/definition-entity/actions/google-drive/GoogleDriveFilePickerAPIFooterAction.tsx +277 -0
  231. package/src/components/draggable-entity-card/definition-entity/actions/google-drive/google-drive-file-picker-api-footer-action.css +107 -0
  232. package/src/components/draggable-entity-card/definition-entity/actions/persisted-entity/DatabaseFooterAction.tsx +452 -0
  233. package/src/components/draggable-entity-card/definition-entity/actions/persisted-entity/database-footer-action.css +86 -0
  234. package/src/components/draggable-entity-card/definition-entity/definition-entity-card.css +17 -0
  235. package/src/components/draggable-entity-card/draggable-entity-card.css +1140 -0
  236. package/src/components/draggable-entity-card/entity-locked-icon/EntityLockedIcon.tsx +133 -0
  237. package/src/components/draggable-entity-card/entity-locked-icon/entity-locked.css +8 -0
  238. package/src/components/draggable-entity-card/expand-properties-icon-button/ExpandPropertiesIconButton.tsx +84 -0
  239. package/src/components/draggable-entity-card/expand-properties-icon-button/expand-properties-icon-button.css +21 -0
  240. package/src/components/draggable-entity-card/implement-entity-icon/ImplementEntityIcon.tsx +74 -0
  241. package/src/components/draggable-entity-card/implement-entity-icon/implement-entity-icon.css +13 -0
  242. package/src/components/draggable-entity-card/logic-error/LogicErrorIconMenu.tsx +424 -0
  243. package/src/components/draggable-entity-card/logic-error/logic-error.css +23 -0
  244. package/src/components/draggable-entity-card/new-card-input-button/NewCardInputButton.tsx +193 -0
  245. package/src/components/draggable-entity-card/new-card-input-button/NewDynamicInputButton.tsx +214 -0
  246. package/src/components/draggable-entity-card/new-card-input-button/new-card-input-button.css +71 -0
  247. package/src/components/draggable-entity-card/new-card-output-button/NewCardOutputButton.tsx +192 -0
  248. package/src/components/draggable-entity-card/new-card-output-button/new-card-output-button.css +71 -0
  249. package/src/components/draggable-entity-card/termination-statement/TerminationStatementCard.tsx +1543 -0
  250. package/src/components/draggable-entity-card/termination-statement/termination-statement-card.css +17 -0
  251. package/src/components/draggable-entity-card/test-entity-button.css +55 -0
  252. package/src/components/draggable-entity-card/test-menu.css +181 -0
  253. package/src/components/draggable-entity-card/unreachable-marker.css +43 -0
  254. package/src/components/draggable-entity-card/variable-scope-marker.css +22 -0
  255. package/src/components/dynamic-value/DynamicValue.tsx +2395 -0
  256. package/src/components/dynamic-value/DynamicValueEntry.tsx +1957 -0
  257. package/src/components/dynamic-value/dynamic-value.css +230 -0
  258. package/src/components/editor/ElyxMonacoEditor.tsx +38 -0
  259. package/src/components/entity-error/EntityErrorListItem.tsx +47 -0
  260. package/src/components/entity-error/entity-error.css +198 -0
  261. package/src/components/entity-icon/EntityIcon.tsx +292 -0
  262. package/src/components/entity-icon/entity-icon.css +39 -0
  263. package/src/components/gallery-card/CreateNewProject.tsx +222 -0
  264. package/src/components/gallery-card/GalleryCard.tsx +171 -0
  265. package/src/components/gallery-card/MarketplaceCard.tsx +87 -0
  266. package/src/components/gallery-card/ProjectDuplicationCard.tsx +575 -0
  267. package/src/components/gallery-card/gallery-card.css +25 -0
  268. package/src/components/notifications/NotificationsIconButton.tsx +124 -0
  269. package/src/components/notifications/NotificationsPanel.tsx +385 -0
  270. package/src/components/notifications/notifications.css +189 -0
  271. package/src/components/online-users/LocalOnlineUsers.tsx +175 -0
  272. package/src/components/online-users/PageOnlineUsers.tsx +297 -0
  273. package/src/components/online-users/online-users.css +72 -0
  274. package/src/components/page-backdrop/PageBackdrop.tsx +8 -0
  275. package/src/components/page-backdrop/page-backdrop.css +7 -0
  276. package/src/components/project-configuration/DeleteProjectConfirmationDialog.tsx +134 -0
  277. package/src/components/project-configuration/ProjectConfigurationDialog.tsx +972 -0
  278. package/src/components/project-configuration/ProjectDataForm.tsx +121 -0
  279. package/src/components/project-configuration/UnpublishProjectConfirmationDialog.tsx +162 -0
  280. package/src/components/project-configuration/project-configuration-content.css +209 -0
  281. package/src/components/project-name/ProjectName.tsx +2025 -0
  282. package/src/components/project-name/project-name.css +599 -0
  283. package/src/components/publishing/Publication.tsx +133 -0
  284. package/src/components/publishing/history/PublicationHistoryContent.tsx +414 -0
  285. package/src/components/publishing/history/PublicationHistoryDialog.tsx +234 -0
  286. package/src/components/publishing/preview/PublicationPreviewDialog.tsx +1158 -0
  287. package/src/components/publishing/preview/PublishingPriceForecast.tsx +160 -0
  288. package/src/components/publishing/preview/PublishingResourcesDetails.tsx +91 -0
  289. package/src/components/publishing/publication-sequence/PublishingSequenceContent.tsx +375 -0
  290. package/src/components/publishing/publication-sequence/PublishingSequenceDialog.tsx +344 -0
  291. package/src/components/publishing/publishing-dialog.css +142 -0
  292. package/src/components/publishing/utils.ts +227 -0
  293. package/src/components/resources/ResourcesDialog.tsx +591 -0
  294. package/src/components/resources/UpgradeBanner.tsx +102 -0
  295. package/src/components/resources/codebase/CodebaseDetails.tsx +156 -0
  296. package/src/components/resources/cron-job/CronJobsList.tsx +532 -0
  297. package/src/components/resources/functions/FunctionsList.tsx +454 -0
  298. package/src/components/resources/http-api/HttpAPI.tsx +566 -0
  299. package/src/components/resources/http-api/HttpAPIClientModule.tsx +37 -0
  300. package/src/components/resources/logs/LogsViewer.tsx +768 -0
  301. package/src/components/resources/query.ts +74 -0
  302. package/src/components/resources/relational-database/DatabaseTable.tsx +905 -0
  303. package/src/components/resources/relational-database/RelationalDatabase.tsx +83 -0
  304. package/src/components/resources/relational-database/RelationalDatabaseSecrets.tsx +361 -0
  305. package/src/components/resources/resources-dialog.css +74 -0
  306. package/src/components/test-relational-database/DatabaseTable.tsx +913 -0
  307. package/src/components/test-relational-database/TestDatabaseDialogContent.tsx +670 -0
  308. package/src/components/test-relational-database/query.ts +74 -0
  309. package/src/components/toolbar/ToolBar.tsx +236 -0
  310. package/src/components/toolbar/toolbar.css +78 -0
  311. package/src/components/transaction-history/TransactionHistoryDialog.tsx +268 -0
  312. package/src/components/user/CurrentUserAvatar.tsx +65 -0
  313. package/src/components/user/UserChip.tsx +62 -0
  314. package/src/components/user/user.css +39 -0
  315. package/src/components/user-profile/ChangePasswordForm.tsx +67 -0
  316. package/src/components/user-profile/OwnUserProfileContent.tsx +665 -0
  317. package/src/components/user-profile/PublicUserProfileContent.tsx +99 -0
  318. package/src/components/user-profile/UserDataForm.tsx +75 -0
  319. package/src/components/user-profile/UserProfileDialog.tsx +110 -0
  320. package/src/components/user-profile/user-profile-content.css +25 -0
  321. package/src/config.ts +130 -0
  322. package/src/globals.d.ts +13 -0
  323. package/src/index.html +27 -0
  324. package/src/index.tsx +23 -0
  325. package/src/lib/badge/Badge.tsx +35 -0
  326. package/src/lib/badge/badge.css +32 -0
  327. package/src/lib/button/Button.tsx +129 -0
  328. package/src/lib/button/button.css +145 -0
  329. package/src/lib/canvas/canvas-undo-redo.ts +263 -0
  330. package/src/lib/canvas/defs.ts +170 -0
  331. package/src/lib/canvas/index.test.ts +189 -0
  332. package/src/lib/canvas/index.ts +6999 -0
  333. package/src/lib/canvas/utils.ts +59 -0
  334. package/src/lib/card/Card.tsx +62 -0
  335. package/src/lib/card/LoadingCard.tsx +82 -0
  336. package/src/lib/card/card.css +259 -0
  337. package/src/lib/chip/Chip.tsx +79 -0
  338. package/src/lib/chip/chip.css +0 -0
  339. package/src/lib/dialog/Dialog.tsx +122 -0
  340. package/src/lib/dialog/SmallDialog.tsx +61 -0
  341. package/src/lib/dialog/dialog.css +40 -0
  342. package/src/lib/display-data-structure/index.tsx +21 -0
  343. package/src/lib/dropdown/CanvasDropdownMenuCard.tsx +68 -0
  344. package/src/lib/dropdown/CanvasDropdownMenuCardOption.tsx +136 -0
  345. package/src/lib/dropdown/DropdownButton.tsx +104 -0
  346. package/src/lib/dropdown/DropdownMenuCard.tsx +324 -0
  347. package/src/lib/dropdown/DropdownMenuPopup.tsx +27 -0
  348. package/src/lib/dropdown/dropdown-button.css +76 -0
  349. package/src/lib/dropdown/dropdown-menu.css +151 -0
  350. package/src/lib/json-editor/RawJsonEditor.tsx +137 -0
  351. package/src/lib/json-editor/json-editor.css +35 -0
  352. package/src/lib/loader/Loader.tsx +120 -0
  353. package/src/lib/loader/loader.css +38 -0
  354. package/src/lib/pagination/Pagination.tsx +64 -0
  355. package/src/lib/popup/CanvasPopupBaseComponent.tsx +103 -0
  356. package/src/lib/popup/Popup.tsx +243 -0
  357. package/src/lib/popup/popup.css +16 -0
  358. package/src/lib/table/RowForm.tsx +301 -0
  359. package/src/lib/table/Table.tsx +1069 -0
  360. package/src/lib/table/table.css +249 -0
  361. package/src/lib/table/types.ts +108 -0
  362. package/src/lib/text-area/TextArea.tsx +183 -0
  363. package/src/lib/text-area/text-area.css +156 -0
  364. package/src/lib/text-field/TextField.tsx +218 -0
  365. package/src/lib/text-field/index.ts +8 -0
  366. package/src/lib/text-field/text-field.css +201 -0
  367. package/src/lib/tooltip/Tooltip.tsx +24 -0
  368. package/src/lib/tooltip/tooltip.css +17 -0
  369. package/src/localization/index.ts +47 -0
  370. package/src/main.css +343 -0
  371. package/src/pages/Auth.tsx +848 -0
  372. package/src/pages/Editor.tsx +883 -0
  373. package/src/pages/ErrorPage.tsx +179 -0
  374. package/src/pages/Gallery.tsx +1693 -0
  375. package/src/pages/NewPaymentMethodCallback.tsx +53 -0
  376. package/src/pages/NotFoundPage.tsx +126 -0
  377. package/src/pages/PricingPlans.tsx +155 -0
  378. package/src/pages/auth.css +304 -0
  379. package/src/pages/gallery.css +421 -0
  380. package/src/payments/index.ts +187 -0
  381. package/src/popup-notification/index.ts +90 -0
  382. package/src/services/database/index.ts +1 -0
  383. package/src/services/database/utils.ts +1301 -0
  384. package/src/services/editor/CanvasElement.tsx +2934 -0
  385. package/src/services/editor/CanvasElementConnectionDeleteButton.ts +204 -0
  386. package/src/services/editor/CanvasPopup.tsx +749 -0
  387. package/src/services/editor/EditorService.ts +8157 -0
  388. package/src/services/editor/area.ts +1312 -0
  389. package/src/services/editor/connections.ts +1019 -0
  390. package/src/services/editor/create/condition.ts +25 -0
  391. package/src/services/editor/create/definition-entity.ts +29 -0
  392. package/src/services/editor/create/function-call.ts +25 -0
  393. package/src/services/editor/create/global-event.ts +33 -0
  394. package/src/services/editor/create/loop.ts +25 -0
  395. package/src/services/editor/create/operation.ts +30 -0
  396. package/src/services/editor/create/utils.ts +140 -0
  397. package/src/services/editor/create/variable-declaration.ts +135 -0
  398. package/src/services/editor/create/variable-instance.ts +100 -0
  399. package/src/services/editor/editor-ui-extensions-context.ts +43 -0
  400. package/src/services/editor/entities-metadata.json +9310 -0
  401. package/src/services/editor/icons.ts +1093 -0
  402. package/src/services/editor/index.ts +1 -0
  403. package/src/services/editor/layout.ts +102 -0
  404. package/src/services/editor/modules/built-in-function-implementations/base.ts +14 -0
  405. package/src/services/editor/modules/built-in-function-implementations/create-persisted-entity/index.ts +56 -0
  406. package/src/services/editor/modules/built-in-function-implementations/delete-persisted-entity/index.ts +55 -0
  407. package/src/services/editor/modules/built-in-function-implementations/index.ts +4 -0
  408. package/src/services/editor/modules/built-in-function-implementations/update-persisted-entity/index.ts +56 -0
  409. package/src/services/editor/modules/operations-implementations/external-integrations/google-drive/get-files.ts +183 -0
  410. package/src/services/editor/modules/operations-implementations/external-integrations/google-drive/list-drives.ts +124 -0
  411. package/src/services/editor/modules/operations-implementations/external-integrations/google-drive/list-root-folders.ts +125 -0
  412. package/src/services/editor/modules/operations-implementations/external-integrations/google-drive/smart-fetch-document.ts +702 -0
  413. package/src/services/editor/modules/operations-implementations/external-integrations/google-drive/upload-document.ts +535 -0
  414. package/src/services/editor/modules/operations-implementations/external-integrations/google-gemini/generate-content.ts +193 -0
  415. package/src/services/editor/modules/operations-implementations/external-integrations/google-mail/get-emails.ts +586 -0
  416. package/src/services/editor/modules/operations-implementations/external-integrations/google-mail/send-email.ts +386 -0
  417. package/src/services/editor/modules/operations-implementations/external-integrations/index.ts +12 -0
  418. package/src/services/editor/modules/operations-implementations/external-integrations/slack/channels.ts +240 -0
  419. package/src/services/editor/modules/operations-implementations/external-integrations/slack/messages.ts +210 -0
  420. package/src/services/editor/modules/operations-implementations/external-integrations/slack/replies.ts +200 -0
  421. package/src/services/editor/modules/operations-implementations/external-integrations/slack/send-message.ts +177 -0
  422. package/src/services/editor/modules/operations-implementations/index.ts +1 -0
  423. package/src/services/editor/modules/search-node-implementation/index.ts +42 -0
  424. package/src/services/editor/modules/sql-migrations-generation.tsx +1054 -0
  425. package/src/services/editor/publication/publication.ts +578 -0
  426. package/src/services/editor/ui.ts +1348 -0
  427. package/src/services/editor/utils.ts +5868 -0
  428. package/src/services/editor/value-store.ts +619 -0
  429. package/src/services/execution/built-in-function-implementations.ts +422 -0
  430. package/src/services/execution/index.ts +4747 -0
  431. package/src/services/execution/logic.ts +121 -0
  432. package/src/services/execution/test-instance.tsx +2296 -0
  433. package/src/services/execution/utils.ts +33 -0
  434. package/src/services/execution/value-resolution.test.ts +424 -0
  435. package/src/services/execution/value-resolution.ts +4087 -0
  436. package/src/services/integrations/ExternalIntegrationsService.ts +439 -0
  437. package/src/services/integrations/api.ts +175 -0
  438. package/src/services/local-relational-database/idb_helper.ts +66 -0
  439. package/src/services/local-relational-database/index.ts +3308 -0
  440. package/src/services/local-relational-database/utils.ts +403 -0
  441. package/src/services/notifications/index.ts +525 -0
  442. package/src/services/user/index.ts +144 -0
  443. package/src/setupTests.ts +1 -0
  444. package/src/socket/socket.ts +248 -0
  445. package/src/socket/utils.ts +10 -0
  446. package/src/store/workspace.ts +12 -0
  447. package/src/theme.ts +19 -0
  448. package/src/utils/DOM.ts +39 -0
  449. package/src/utils/date.ts +169 -0
  450. package/src/utils/index.ts +158 -0
  451. package/src/utils/react.tsx +679 -0
  452. package/src/utils/testing.ts +103 -0
@@ -0,0 +1,344 @@
1
+ import React, { useCallback, useEffect, useState } from 'react';
2
+ import '../publishing-dialog.css';
3
+ import VersionsIcon from '../../../assets/versions.svg';
4
+ import Button from '../../../lib/button/Button';
5
+ import PublishingSequenceContent from './PublishingSequenceContent';
6
+ import Tooltip from '../../../lib/tooltip/Tooltip';
7
+ import { EditorService } from '../../../services/editor';
8
+ import DialogLoader from '../../DialogLoader';
9
+ import { getCurrentUserOrLogoutRedirect } from '../../../auth';
10
+ import {
11
+ InfrastructureResourceType,
12
+ IUser,
13
+ PublicationStatus,
14
+ } from '@elyx-code/definitions';
15
+ import { PublicationRun } from '../../../services/editor/publication/publication';
16
+ import dayjs from 'dayjs';
17
+ import UserChip from '../../user/UserChip';
18
+ import { popupNotification } from '../../../popup-notification';
19
+ import axios from 'axios';
20
+ import { envConfig } from '../../../config';
21
+
22
+ export interface IPublishingSequenceDialogProps {
23
+ onClose: (event: any) => void;
24
+ contentHeight?: boolean;
25
+ project: EditorService;
26
+ }
27
+
28
+ const PublishingSequenceDialog: React.FC<IPublishingSequenceDialogProps> = ({
29
+ onClose,
30
+ project,
31
+ }) => {
32
+ const [user, setUser] = useState<IUser | null>(null);
33
+ const [
34
+ isPublicationCompletedSuccessfully,
35
+ setIsPublicationCompletedSuccessfully,
36
+ ] = useState<boolean>(
37
+ project.publication?.finalStatus === PublicationStatus.Success,
38
+ );
39
+ const [activePub, setActivePub] = useState(project.publication);
40
+
41
+ const onPublicationCompleted = useCallback(() => {
42
+ setIsPublicationCompletedSuccessfully(true);
43
+ }, []);
44
+
45
+ const onSpecificPublicationLoaded = useCallback((pub: PublicationRun) => {
46
+ setActivePub(pub);
47
+ }, []);
48
+
49
+ const onPublicationUpdated = useCallback((pub: PublicationRun) => {
50
+ if (activePub && pub.id === activePub.id) {
51
+ setActivePub(pub);
52
+ }
53
+ }, [activePub]);
54
+
55
+ useEffect(() => {
56
+ project.on('project-publication-completed', onPublicationCompleted);
57
+
58
+ project.on('specific-publication-loaded', onSpecificPublicationLoaded);
59
+
60
+ project.on('publication-updated', onPublicationUpdated);
61
+
62
+ return () => {
63
+ project.off('project-publication-completed', onPublicationCompleted);
64
+ project.off('specific-publication-loaded', onSpecificPublicationLoaded);
65
+ project.off('publication-updated', onPublicationUpdated);
66
+
67
+ };
68
+ }, [onPublicationCompleted, onSpecificPublicationLoaded]);
69
+
70
+ useEffect(() => {
71
+ const fetchUser = async () => {
72
+ const user = await getCurrentUserOrLogoutRedirect();
73
+ setUser(user);
74
+ };
75
+
76
+ fetchUser();
77
+ }, [project]);
78
+
79
+ if (!project || !project.logic || !project.ready) {
80
+ return (
81
+ <DialogLoader
82
+ title='Project publication'
83
+ subtitle={
84
+ activePub?.status === PublicationStatus.Running
85
+ ? 'Publishing your project to the cloud'
86
+ : 'Publication sequence'
87
+ }
88
+ onClose={onClose}
89
+ />
90
+ );
91
+ }
92
+
93
+ let header = 'Publishing version';
94
+
95
+ if (activePub?.status === PublicationStatus.Success) {
96
+ header = 'Published version';
97
+ } else if (
98
+ activePub?.status === PublicationStatus.Failed ||
99
+ activePub?.finalStatus === PublicationStatus.Failed
100
+ ) {
101
+ header = 'Publication failed';
102
+ } else if (
103
+ activePub?.status === PublicationStatus.Reverted ||
104
+ activePub?.status === PublicationStatus.Unpublished
105
+ ) {
106
+ header = 'Publication reverted';
107
+ }
108
+
109
+ return (
110
+ <div
111
+ style={{
112
+ display: 'flex',
113
+ flexDirection: 'column',
114
+ height: '100%',
115
+ gap: '4px',
116
+ padding: '40px',
117
+ }}
118
+ >
119
+ <div style={{ display: 'flex', alignItems: 'center', gap: '16px' }}>
120
+ <button className='dialog_back_button' onClick={onClose}>
121
+ <i className='fa-solid fa-arrow-left' />
122
+ </button>
123
+ <h1 style={{ margin: 0, fontWeight: 500, fontSize: '28px' }}>
124
+ Project publication
125
+ </h1>
126
+ </div>
127
+ <a
128
+ style={{
129
+ display: 'flex',
130
+ gap: '6px',
131
+ marginLeft: '42px',
132
+ textDecoration: 'none',
133
+ }}
134
+ href=''
135
+ onClick={(event) => {
136
+ event.preventDefault();
137
+ EditorService.navigate(
138
+ `${project?.editorBasePath}/publication/history`,
139
+ );
140
+ }}
141
+ >
142
+ <img src={VersionsIcon} alt='Versions' />
143
+ <p style={{ margin: 0, color: 'rgba(0,0,0,0.7)' }}>Publication history</p>
144
+ </a>
145
+
146
+ <div style={{ flex: 1, margin: '0 42px', marginTop: '30px' }}>
147
+ <div
148
+ style={{
149
+ display: 'flex',
150
+ flexDirection: 'column',
151
+ minHeight: '80%',
152
+ height: '100%',
153
+ }}
154
+ >
155
+ <h3
156
+ style={{
157
+ display: 'flex',
158
+ gap: '6px',
159
+ fontWeight: 'normal',
160
+ margin: 0,
161
+ }}
162
+ >
163
+ <span>{header}</span>
164
+ <span style={{ fontWeight: 'bold' }}>
165
+ {project.publication?.projectPublishedSemanticVersion}
166
+ </span>
167
+ </h3>
168
+ {activePub?.status === PublicationStatus.Running ? (
169
+ <div
170
+ style={{ display: 'flex', flexDirection: 'column', gap: '10px' }}
171
+ >
172
+ <p
173
+ style={{
174
+ margin: 0,
175
+ fontSize: '14px',
176
+ marginTop: '6px',
177
+ color: 'rgba(0,0,0,0.54)',
178
+ }}
179
+ >
180
+ This is where the magic happens.
181
+ </p>
182
+ <p
183
+ style={{
184
+ margin: 0,
185
+ fontSize: '14px',
186
+ marginTop: '6px',
187
+ color: 'rgba(0,0,0,0.54)',
188
+ }}
189
+ >
190
+ Work equivalent to 10 full-time software engineers over a few
191
+ months is being generated.
192
+ <br />
193
+ The first time a project is published it might take a few
194
+ minutes.
195
+ </p>
196
+ <p
197
+ style={{
198
+ margin: 0,
199
+ fontSize: '14px',
200
+ marginTop: '6px',
201
+ color: 'rgba(0,0,0,0.54)',
202
+ }}
203
+ >
204
+ {`You will receive an email at `}
205
+ <b>{user?.email}</b>
206
+ {` once the new version is published.`}
207
+ </p>
208
+ </div>
209
+ ) : (
210
+ <div
211
+ style={{ display: 'flex', flexDirection: 'column', gap: '10px' }}
212
+ >
213
+ <p
214
+ style={{
215
+ margin: 0,
216
+ fontSize: '14px',
217
+ marginTop: '6px',
218
+ color: 'rgba(0,0,0,0.54)',
219
+ }}
220
+ >
221
+ Summary of publication from{' '}
222
+ {dayjs(activePub?.createdAt).format('MMM D, YYYY h:mm A')}
223
+ </p>
224
+ <p
225
+ style={{
226
+ margin: 0,
227
+ fontSize: '14px',
228
+ marginTop: '6px',
229
+ color: 'rgba(0,0,0,0.54)',
230
+ }}
231
+ >
232
+ Published by
233
+ </p>
234
+ <UserChip user={{ id: activePub.triggeredBy }} />
235
+ </div>
236
+ )}
237
+ <PublishingSequenceContent
238
+ project={project}
239
+ onClose={onClose}
240
+ />
241
+ </div>
242
+ </div>
243
+ <div
244
+ style={{
245
+ display: 'flex',
246
+ flexDirection: 'row',
247
+ justifyContent: 'space-between',
248
+ width: '100%',
249
+ }}
250
+ >
251
+ <div>
252
+ {!!activePub && (
253
+ <>
254
+ <Button
255
+ id='abort-publication-button'
256
+ disabled={
257
+ !activePub || PublicationStatus.Running !== activePub.status
258
+ }
259
+ onClick={async () => {
260
+ try {
261
+ const accessToken = await project.getAccessToken();
262
+
263
+ await axios.post(
264
+ `${envConfig.API_BASE_URL}/publishing-service/v1/${project.projectId}/publications/${activePub?.id}/abort`,
265
+ {},
266
+ {
267
+ headers: {
268
+ Authorization: 'Bearer ' + accessToken,
269
+ },
270
+ },
271
+ );
272
+
273
+ const updatedPu = await project.loadGivenPublication(activePub.id);
274
+ setActivePub(updatedPu);
275
+ // Refresh the page
276
+ // window.location.reload();
277
+ } catch (error) {
278
+ popupNotification({
279
+ text: 'Failed to abort publication',
280
+ color: 'error',
281
+ });
282
+ }
283
+ }}
284
+ color='error'
285
+ >
286
+ Abort
287
+ </Button>
288
+ <Tooltip
289
+ anchorQuerySelector='#abort-publication-button'
290
+ placement='bottom'
291
+ >
292
+ {!activePub || PublicationStatus.Running !== activePub.status
293
+ ? 'The publication is not currently running'
294
+ : 'Abort the publication process. This will stop all ongoing steps of the publication.'}
295
+ </Tooltip>
296
+ </>
297
+ )}
298
+ </div>
299
+ <div
300
+ style={{
301
+ alignSelf: 'flex-start',
302
+ display: 'flex',
303
+ flexDirection: 'row',
304
+ justifyContent: 'flex-end',
305
+ width: '100%',
306
+ gap: '16px',
307
+ }}
308
+ >
309
+ <Button
310
+ onClick={() => {
311
+ EditorService.navigate(`${project?.editorBasePath}`);
312
+ }}
313
+ color='primary'
314
+ variant='text'
315
+ >
316
+ Back to canvas
317
+ </Button>
318
+ <Button
319
+ onClick={() => {
320
+ EditorService.navigate(
321
+ `${project?.editorBasePath}/resources/${InfrastructureResourceType.HttpApi}`,
322
+ );
323
+ }}
324
+ disabled={!isPublicationCompletedSuccessfully}
325
+ id='see-live-resources-publication-button'
326
+ color='primary'
327
+ >
328
+ See live assets
329
+ </Button>
330
+ <Tooltip
331
+ anchorQuerySelector='#see-live-resources-publication-button'
332
+ placement='bottom'
333
+ >
334
+ {isPublicationCompletedSuccessfully
335
+ ? 'See the cloud resources employed by this project after its publication'
336
+ : 'The resources are being provisioned. This might take a few minutes.'}
337
+ </Tooltip>
338
+ </div>
339
+ </div>
340
+ </div>
341
+ );
342
+ };
343
+
344
+ export default PublishingSequenceDialog;
@@ -0,0 +1,142 @@
1
+ /* Animation Keyframes */
2
+ @keyframes shine {
3
+ to {
4
+ background-position-x: -200%;
5
+ }
6
+ }
7
+
8
+ .forecast-pricing {
9
+ display: flex;
10
+ width: 100%;
11
+ justify-content: space-between;
12
+ gap: 30px;
13
+ }
14
+
15
+ /* Responsive: stack columns on smaller screens */
16
+ @media (max-width: 950px) {
17
+ .forecast-pricing {
18
+ flex-direction: column;
19
+ }
20
+ }
21
+
22
+ /* --- Left Column --- */
23
+ .forecast-pricing--left-col {
24
+ /* Flex grow if needed, or default block */
25
+ }
26
+
27
+ .forecast-pricing--heading {
28
+ display: flex;
29
+ gap: 6px;
30
+ font-weight: normal;
31
+ margin: 0 0 20px 0;
32
+ /* Matching standard h3 size/margin from your app usually, explicit here: */
33
+ font-size: 1.17em;
34
+ }
35
+
36
+ .forecast-pricing--list {
37
+ padding: 0;
38
+ margin: 0;
39
+ list-style: none;
40
+ }
41
+
42
+ .forecast-pricing--list-item {
43
+ display: flex;
44
+ gap: 12px;
45
+ justify-content: space-between;
46
+ font-size: 12px;
47
+ margin-top: 12px; /* Increased slightly for breathing room with 2 lines */
48
+ align-items: flex-start;
49
+ }
50
+
51
+ .forecast-pricing--item-meta {
52
+ display: flex;
53
+ flex-direction: column;
54
+ }
55
+
56
+ .forecast-pricing--item-name {
57
+ text-transform: uppercase;
58
+ color: rgba(0, 0, 0, 0.87);
59
+ }
60
+
61
+ .forecast-pricing--item-subtext {
62
+ font-size: 11px;
63
+ color: rgba(0, 0, 0, 0.54);
64
+ margin-top: 4px;
65
+ }
66
+
67
+ .forecast-pricing--item-price {
68
+ text-transform: uppercase;
69
+ color: rgba(0, 0, 0, 0.87);
70
+ white-space: nowrap; /* Prevent price wrapping */
71
+ }
72
+
73
+ /* Discount Modifier */
74
+ .forecast-pricing--list-item.is-discount .forecast-pricing--item-name,
75
+ .forecast-pricing--list-item.is-discount .forecast-pricing--item-price {
76
+ color: var(--color-main-success);
77
+ }
78
+
79
+ .forecast-pricing--divider {
80
+ border: 0;
81
+ border-top: 1px solid rgba(0, 0, 0, 0.25);
82
+ margin: 16px 0;
83
+ }
84
+
85
+ .forecast-pricing--total-row {
86
+ display: flex;
87
+ gap: 12px;
88
+ justify-content: space-between;
89
+ text-transform: uppercase;
90
+ font-weight: bold;
91
+ font-size: 12px;
92
+ }
93
+
94
+ .forecast-pricing--tax-label {
95
+ margin: 2px 0 0 0;
96
+ font-size: 10px;
97
+ color: rgba(0, 0, 0, 0.54);
98
+ }
99
+
100
+ /* --- Right Column --- */
101
+ .forecast-pricing--right-col {
102
+ display: flex;
103
+ flex-direction: column;
104
+ gap: 10px;
105
+ width: 362px;
106
+ maxWidth: 100%;
107
+ }
108
+
109
+ .forecast-pricing--loading-container {
110
+ width: 100%;
111
+ display: flex;
112
+ flex-direction: column;
113
+ gap: 8px;
114
+ }
115
+
116
+ .forecast-pricing--loading-bar {
117
+ height: 12px;
118
+ border-radius: 4px;
119
+ background: linear-gradient(110deg, #ececec 8%, #f5f5f5 18%, #ececec 33%);
120
+ background-size: 200% 100%;
121
+ animation: 1s shine linear infinite;
122
+ }
123
+
124
+ .forecast-pricing--disclaimer {
125
+ margin: 2px 0 0 0;
126
+ font-size: 12px;
127
+ color: rgba(0, 0, 0, 0.54);
128
+ line-height: 1.5;
129
+ }
130
+
131
+ .forecast-pricing--link {
132
+ text-decoration: underline;
133
+ cursor: pointer;
134
+ color: inherit; /* Inherit parent color */
135
+ }
136
+
137
+ .forecast-pricing--error {
138
+ margin: 2px 0 0 0;
139
+ font-size: 12px;
140
+ color: var(--color-main-error);
141
+ line-height: 1.5;
142
+ }
@@ -0,0 +1,227 @@
1
+ import {
2
+ ProjectPublicationEventName,
3
+ PublishingSequenceStep,
4
+ InfrastructureResourceType,
5
+ PublicationStepStatus,
6
+ } from '@elyx-code/definitions';
7
+ import { toSentenceCase } from '@elyx-code/project-logic-tree';
8
+
9
+ export function getStepNameFromDefinition(
10
+ stepType: PublishingSequenceStep
11
+ ): string {
12
+ switch (stepType) {
13
+ case PublishingSequenceStep.CodeCompilation:
14
+ return 'Code generation';
15
+ case PublishingSequenceStep.RelationalDatabaseDeployment:
16
+ return 'Database creation';
17
+ case PublishingSequenceStep.HttpApiDeployment:
18
+ return 'HTTP gateway creation';
19
+ case PublishingSequenceStep.InfrastructureValuesCodebaseInterpolation:
20
+ return 'Link code with resources';
21
+ case PublishingSequenceStep.BundleCodebase:
22
+ return 'Bundle code';
23
+ case PublishingSequenceStep.MigrateRelationalDatabase:
24
+ return 'Database structure migration';
25
+ case PublishingSequenceStep.BusinessLogicCodebaseDeployment:
26
+ return 'Update servers with new code';
27
+ case PublishingSequenceStep.CodebaseCleanup:
28
+ return 'Code cleanup';
29
+ case PublishingSequenceStep.HttpApiDeletion:
30
+ return 'HTTP gateway deletion';
31
+ case PublishingSequenceStep.RelationalDatabaseDeletion:
32
+ return 'Database deletion';
33
+ case PublishingSequenceStep.ExecutePublicationCompletedEvent:
34
+ return 'Execute custom publication completed logic';
35
+ case PublishingSequenceStep.AWSTenantAccountProvisioning:
36
+ return 'Provision private cloud';
37
+ default:
38
+ return toSentenceCase(stepType);
39
+ }
40
+ }
41
+
42
+ export function getEventNameFromDefinition(event: ProjectPublicationEventName): string {
43
+ switch (event) {
44
+ case ProjectPublicationEventName.DeploymentCompleted:
45
+ return 'Successfully published';
46
+ case ProjectPublicationEventName.DeploymentStarted:
47
+ return 'Publication started';
48
+ case ProjectPublicationEventName.DeploymentFailed:
49
+ return 'Publication failed';
50
+ case ProjectPublicationEventName.BillingSubscriptionUpdateFailed:
51
+ return 'Billing subscription update failed';
52
+ case ProjectPublicationEventName.AllInfrastructureSuccessfullyProvisioned:
53
+ return 'All infrastructure successfully provisioned';
54
+ case ProjectPublicationEventName.RequestPayloadValidationFailed:
55
+ return 'Request payload validation failed';
56
+ case ProjectPublicationEventName.ProjectStateValidationFailedMissingName:
57
+ return 'Project state validation failed: missing name';
58
+ case ProjectPublicationEventName.ProjectStateValidationFailedMissingAnyFunctionality:
59
+ return 'Project state validation failed: missing any functionality';
60
+ case ProjectPublicationEventName.RelationalDatabaseDeploymentStarted:
61
+ return 'Database creation started';
62
+ case ProjectPublicationEventName.RelationalDatabaseDeploymentCompleted:
63
+ return 'Database creation completed';
64
+ case ProjectPublicationEventName.RelationalDatabaseDeploymentFailed:
65
+ return 'Database creation failed';
66
+ case ProjectPublicationEventName.CreatingNewRelationalDatabase:
67
+ return 'Creating new database (up to 5 mins)';
68
+ case ProjectPublicationEventName.WaitingForPreviousRelationalDatabaseDeployment:
69
+ return 'Waiting for previous database creation';
70
+ case ProjectPublicationEventName.RelationalDatabaseAlreadyExists:
71
+ return 'Database already exists';
72
+ case ProjectPublicationEventName.HttpApiDeploymentStarted:
73
+ return 'HTTP gateway creation started';
74
+ case ProjectPublicationEventName.HttpApiDeploymentCompleted:
75
+ return 'HTTP gateway creation completed';
76
+ case ProjectPublicationEventName.HttpApiDeploymentFailed:
77
+ return 'HTTP gateway creation failed';
78
+ case ProjectPublicationEventName.CreatingNewHttpApi:
79
+ return 'Creating new HTTP gateway';
80
+ case ProjectPublicationEventName.HttpApiAlreadyExists:
81
+ return 'HTTP gateway already exists';
82
+ case ProjectPublicationEventName.BusinessLogicCodebaseDeploymentStarted:
83
+ return 'Update servers with new code started';
84
+ case ProjectPublicationEventName.BusinessLogicCodebaseDeploymentCompleted:
85
+ return 'Update servers with new code completed';
86
+ case ProjectPublicationEventName.BusinessLogicCodebaseDeploymentFailed:
87
+ return 'Update servers with new code failed';
88
+ case ProjectPublicationEventName.BundlingCodebaseForDownload:
89
+ return 'Bundling code for download';
90
+ case ProjectPublicationEventName.UploadingCodebaseToCloudStorage:
91
+ return 'Uploading code to cloud storage';
92
+ case ProjectPublicationEventName.InfrastructureValuesCodebaseInterpolationStarted:
93
+ return 'Linking code with resources started';
94
+ case ProjectPublicationEventName.InfrastructureValuesCodebaseInterpolationCompleted:
95
+ return 'Linking code with resources completed';
96
+ case ProjectPublicationEventName.InfrastructureValuesCodebaseInterpolationFailed:
97
+ return 'Linking code with resources failed';
98
+ case ProjectPublicationEventName.CodeCompilationStarted:
99
+ return 'Code generation started';
100
+ case ProjectPublicationEventName.CodeCompilationCompleted:
101
+ return 'Code generation completed';
102
+ case ProjectPublicationEventName.CodeCompilationFailed:
103
+ return 'Code generation failed';
104
+ case ProjectPublicationEventName.BundleCodebaseStarted:
105
+ return 'Code bundling started';
106
+ case ProjectPublicationEventName.BundleCodebaseCompleted:
107
+ return 'Code bundling completed';
108
+ case ProjectPublicationEventName.BundleCodebaseFailed:
109
+ return 'Code bundling failed';
110
+ case ProjectPublicationEventName.InstallingCodebaseDependenciesStarted:
111
+ return 'Installing code dependencies';
112
+ case ProjectPublicationEventName.InstallingCodebaseDependenciesCompleted:
113
+ return 'Installing code dependencies completed';
114
+ case ProjectPublicationEventName.InstallingCodebaseDependenciesFailed:
115
+ return 'Installing code dependencies failed';
116
+ case ProjectPublicationEventName.MigrateRelationalDatabaseStarted:
117
+ return 'Database structure migration started';
118
+ case ProjectPublicationEventName.MigrateRelationalDatabaseCompleted:
119
+ return 'Database structure migration completed';
120
+ case ProjectPublicationEventName.MigrateRelationalDatabaseFailed:
121
+ return 'Database structure migration failed';
122
+ case ProjectPublicationEventName.ProjectAlreadyBeingPublished:
123
+ return 'Project already being published. You need to wait for the previous publication to complete';
124
+ case ProjectPublicationEventName.ProjectNotFound:
125
+ return 'Project not found';
126
+ case ProjectPublicationEventName.ProjectPublishRequestAcknowledged:
127
+ return 'Project publish request acknowledged';
128
+ case ProjectPublicationEventName.UploadingCodebaseToCloudStorageCompleted:
129
+ return 'Uploading code to cloud storage completed';
130
+ case ProjectPublicationEventName.UploadingCodebaseToCloudStorageFailed:
131
+ return 'Uploading code to cloud storage failed';
132
+ case ProjectPublicationEventName.HttpApiDeletionCompleted:
133
+ return 'HTTP gateway deletion completed';
134
+ case ProjectPublicationEventName.HttpApiDeletionFailed:
135
+ return 'HTTP gateway deletion failed';
136
+ case ProjectPublicationEventName.HttpApiDeletionStarted:
137
+ return 'HTTP gateway deletion started';
138
+ case ProjectPublicationEventName.PublicationStepFailedReasonUnknown:
139
+ return 'Publication step failed: reason unknown';
140
+ case ProjectPublicationEventName.WaitingForPreviousHttpApiDeletion:
141
+ return 'Waiting for previous HTTP gateway deletion';
142
+ case ProjectPublicationEventName.RelationalDatabaseDeletionStarted:
143
+ return 'Database deletion started';
144
+ case ProjectPublicationEventName.RelationalDatabaseDeletionCompleted:
145
+ return 'Database deletion completed';
146
+ case ProjectPublicationEventName.RelationalDatabaseDeletionFailed:
147
+ return 'Database deletion failed';
148
+ case ProjectPublicationEventName.WaitingForPreviousRelationalDatabaseDeletion:
149
+ return 'Waiting for previous database deletion';
150
+ case ProjectPublicationEventName.ExecutePublicationCompletedEventCompleted:
151
+ return 'Execution completed';
152
+ case ProjectPublicationEventName.ExecutePublicationCompletedEventFailed:
153
+ return 'Execution failed';
154
+ case ProjectPublicationEventName.ExecutePublicationCompletedEventStarted:
155
+ return 'Execution started';
156
+ default: {
157
+ if (!!event) {
158
+ return toSentenceCase(event);
159
+ }
160
+ return 'Unknown event';
161
+ }
162
+ }
163
+ }
164
+
165
+ export enum PUBLISHING_DISABLED_REASONS {
166
+ NO_LOGIC = 'NO_LOGIC',
167
+ NO_NAME = 'NO_NAME',
168
+ NO_CHANGES = 'NO_CHANGES',
169
+ PROJECT_PUBLICATION_ALREADY_ONGOING = 'PROJECT_PUBLICATION_ALREADY_ONGOING',
170
+ LOGIC_ERRORS = 'LOGIC_ERRORS',
171
+ MISSING_ROW_TRANSFORMERS = 'MISSING_ROW_TRANSFORMERS',
172
+ }
173
+
174
+ export function fromPublishingDisabledCodeToReadable(
175
+ code: PUBLISHING_DISABLED_REASONS
176
+ ): string {
177
+ switch (code) {
178
+ case PUBLISHING_DISABLED_REASONS.NO_LOGIC:
179
+ return 'This project has no logic';
180
+ case PUBLISHING_DISABLED_REASONS.NO_NAME:
181
+ return 'This project has no name';
182
+ case PUBLISHING_DISABLED_REASONS.NO_CHANGES:
183
+ return 'This version has already been published';
184
+ case PUBLISHING_DISABLED_REASONS.PROJECT_PUBLICATION_ALREADY_ONGOING:
185
+ return 'This project is already being published';
186
+ case PUBLISHING_DISABLED_REASONS.LOGIC_ERRORS:
187
+ return 'This project has errors in the logic. Resolve them before publishing';
188
+ case PUBLISHING_DISABLED_REASONS.MISSING_ROW_TRANSFORMERS:
189
+ return 'Some persisted data structures changed and need row transformers before publishing';
190
+ default:
191
+ return 'Publishing is currently not available. Try again later';
192
+ }
193
+ }
194
+
195
+ export function resolveResourceNameFromType(
196
+ resourceType: InfrastructureResourceType
197
+ ): string {
198
+ switch (resourceType) {
199
+ case InfrastructureResourceType.RelationalDatabase:
200
+ return 'Relational databases';
201
+ case InfrastructureResourceType.HttpEndpoint:
202
+ case InfrastructureResourceType.HttpApi:
203
+ return 'HTTP endpoints';
204
+ case InfrastructureResourceType.ServerlessFunction:
205
+ case InfrastructureResourceType.CloudHostedCodebase:
206
+ return 'Server code functions';
207
+ default:
208
+ return 'Resources';
209
+ }
210
+ }
211
+
212
+ export function resolvePublicationStepStatusFromType(
213
+ eventType: PublicationStepStatus
214
+ ): string {
215
+ switch (eventType) {
216
+ case PublicationStepStatus.Running:
217
+ return 'In progress';
218
+ case PublicationStepStatus.Failed:
219
+ return 'Failed';
220
+ case PublicationStepStatus.Success:
221
+ return 'Succeeded';
222
+ case PublicationStepStatus.Skipped:
223
+ return 'Skipped';
224
+ default:
225
+ return 'Queued';
226
+ }
227
+ }