@budibase/server 1.2.58-alpha.3 → 1.2.58-alpha.6

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 (161) hide show
  1. package/builder/assets/{index.4039c694.js → index.7ba6d256.js} +155 -155
  2. package/builder/index.html +1 -1
  3. package/coverage/clover.xml +114 -114
  4. package/coverage/coverage-final.json +11 -11
  5. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  6. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  7. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/index.html +1 -1
  14. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  43. package/coverage/lcov-report/api/index.html +1 -1
  44. package/coverage/lcov-report/api/index.js.html +5 -5
  45. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/index.html +1 -1
  56. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  70. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  73. package/coverage/lcov-report/automations/actions.js.html +1 -1
  74. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  75. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  76. package/coverage/lcov-report/automations/index.html +1 -1
  77. package/coverage/lcov-report/automations/index.js.html +1 -1
  78. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/index.html +1 -1
  85. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  95. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  104. package/coverage/lcov-report/constants/index.html +1 -1
  105. package/coverage/lcov-report/constants/index.js.html +1 -1
  106. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  107. package/coverage/lcov-report/constants/screens.js.html +1 -1
  108. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  109. package/coverage/lcov-report/db/index.html +1 -1
  110. package/coverage/lcov-report/db/index.js.html +1 -1
  111. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  112. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  115. package/coverage/lcov-report/db/newid.js.html +2 -2
  116. package/coverage/lcov-report/db/utils.js.html +13 -13
  117. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  118. package/coverage/lcov-report/events/index.html +1 -1
  119. package/coverage/lcov-report/events/index.js.html +1 -1
  120. package/coverage/lcov-report/events/utils.js.html +1 -1
  121. package/coverage/lcov-report/index.html +1 -1
  122. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  123. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  124. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  125. package/coverage/lcov-report/middleware/builder.js.html +11 -11
  126. package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
  127. package/coverage/lcov-report/middleware/index.html +1 -1
  128. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  129. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  130. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  131. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  132. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  133. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  134. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  135. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  136. package/coverage/lcov-report/utilities/global.js.html +16 -16
  137. package/coverage/lcov-report/utilities/index.html +1 -1
  138. package/coverage/lcov-report/utilities/index.js.html +2 -2
  139. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  140. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  141. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  142. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  143. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  144. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  146. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  147. package/coverage/lcov-report/utilities/security.js.html +1 -1
  148. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  149. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  150. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +20 -20
  151. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  152. package/coverage/lcov-report/utilities/users.js.html +1 -1
  153. package/coverage/lcov-report/utilities/workerRequests.js.html +13 -13
  154. package/coverage/lcov.info +205 -205
  155. package/dist/api/controllers/application.js +80 -14
  156. package/dist/package.json +6 -6
  157. package/dist/tsconfig.build.tsbuildinfo +1 -1
  158. package/package.json +7 -7
  159. package/src/api/controllers/application.ts +96 -15
  160. package/src/api/routes/tests/application.spec.js +26 -0
  161. package/src/api/routes/tests/data/old-app.txt +3 -0
@@ -36,6 +36,7 @@ const rows_1 = require("../../utilities/usageQuota/rows");
36
36
  const pro_1 = require("@budibase/pro");
37
37
  const backend_core_2 = require("@budibase/backend-core");
38
38
  const types_1 = require("@budibase/types");
39
+ const layouts_1 = require("../../constants/layouts");
39
40
  const URL_REGEX_SLASH = /\/|\\/g;
40
41
  // utility function, need to do away with this
41
42
  function getLayouts() {
@@ -209,26 +210,17 @@ const performAppCreate = (ctx) => __awaiter(void 0, void 0, void 0, function* ()
209
210
  const instance = yield createInstance(instanceConfig);
210
211
  const appId = instance._id;
211
212
  const db = backend_core_1.context.getAppDB();
212
- let _rev;
213
- try {
214
- // if template there will be an existing doc
215
- const existing = yield db.get(utils_1.DocumentType.APP_METADATA);
216
- _rev = existing._rev;
217
- }
218
- catch (err) {
219
- // nothing to do
220
- }
221
- const newApplication = {
213
+ let newApplication = {
222
214
  _id: utils_1.DocumentType.APP_METADATA,
223
- _rev,
224
- appId: instance._id,
215
+ _rev: undefined,
216
+ appId,
225
217
  type: "app",
226
218
  version: package_json_1.default.version,
227
219
  componentLibraries: ["@budibase/standard-components"],
228
220
  name: name,
229
221
  url: url,
230
- template: ctx.request.body.template,
231
- instance: instance,
222
+ template: templateKey,
223
+ instance,
232
224
  tenantId: getTenantId(),
233
225
  updatedAt: new Date().toISOString(),
234
226
  createdAt: new Date().toISOString(),
@@ -250,6 +242,34 @@ const performAppCreate = (ctx) => __awaiter(void 0, void 0, void 0, function* ()
250
242
  buttonBorderRadius: "16px",
251
243
  },
252
244
  };
245
+ // If we used a template or imported an app there will be an existing doc.
246
+ // Fetch and migrate some metadata from the existing app.
247
+ try {
248
+ const existing = yield db.get(utils_1.DocumentType.APP_METADATA);
249
+ const keys = [
250
+ "_rev",
251
+ "navigation",
252
+ "theme",
253
+ "customTheme",
254
+ "icon",
255
+ ];
256
+ keys.forEach(key => {
257
+ if (existing[key]) {
258
+ // @ts-ignore
259
+ newApplication[key] = existing[key];
260
+ }
261
+ });
262
+ // Migrate navigation settings and screens if required
263
+ if (existing && !existing.navigation) {
264
+ const navigation = yield migrateAppNavigation();
265
+ if (navigation) {
266
+ newApplication.navigation = navigation;
267
+ }
268
+ }
269
+ }
270
+ catch (err) {
271
+ // Nothing to do
272
+ }
253
273
  const response = yield db.put(newApplication, { force: true });
254
274
  newApplication._rev = response.rev;
255
275
  /* istanbul ignore next */
@@ -511,3 +531,49 @@ const updateAppPackage = (appPackage, appId) => __awaiter(void 0, void 0, void 0
511
531
  return newAppPackage;
512
532
  }));
513
533
  });
534
+ const migrateAppNavigation = () => __awaiter(void 0, void 0, void 0, function* () {
535
+ const db = backend_core_1.context.getAppDB();
536
+ const existing = yield db.get(utils_1.DocumentType.APP_METADATA);
537
+ const layouts = yield getLayouts();
538
+ const screens = yield getScreens();
539
+ // Migrate all screens, removing custom layouts
540
+ for (let screen of screens) {
541
+ if (!screen.layoutId) {
542
+ return;
543
+ }
544
+ const layout = layouts.find(layout => layout._id === screen.layoutId);
545
+ screen.layoutId = undefined;
546
+ screen.showNavigation = (layout === null || layout === void 0 ? void 0 : layout.props.navigation) !== "None";
547
+ screen.width = (layout === null || layout === void 0 ? void 0 : layout.props.width) || "Large";
548
+ yield db.put(screen);
549
+ }
550
+ // Migrate layout navigation settings
551
+ const { name, customTheme } = existing;
552
+ const layout = layouts === null || layouts === void 0 ? void 0 : layouts.find((layout) => layout._id === layouts_1.BASE_LAYOUT_PROP_IDS.PRIVATE);
553
+ if (layout) {
554
+ let navigationSettings = {
555
+ navigation: "Top",
556
+ title: name,
557
+ navWidth: "Large",
558
+ navBackground: (customTheme === null || customTheme === void 0 ? void 0 : customTheme.navBackground) || "var(--spectrum-global-color-gray-50)",
559
+ navTextColor: (customTheme === null || customTheme === void 0 ? void 0 : customTheme.navTextColor) || "var(--spectrum-global-color-gray-800)",
560
+ };
561
+ if (layout) {
562
+ navigationSettings.hideLogo = layout.props.hideLogo;
563
+ navigationSettings.hideTitle = layout.props.hideTitle;
564
+ navigationSettings.title = layout.props.title || name;
565
+ navigationSettings.logoUrl = layout.props.logoUrl;
566
+ navigationSettings.links = layout.props.links;
567
+ navigationSettings.navigation = layout.props.navigation || "Top";
568
+ navigationSettings.sticky = layout.props.sticky;
569
+ navigationSettings.navWidth = layout.props.width || "Large";
570
+ if (navigationSettings.navigation === "None") {
571
+ navigationSettings.navigation = "Top";
572
+ }
573
+ }
574
+ return navigationSettings;
575
+ }
576
+ else {
577
+ return null;
578
+ }
579
+ });
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.2.58-alpha.2",
4
+ "version": "1.2.58-alpha.5",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -77,11 +77,11 @@
77
77
  "license": "GPL-3.0",
78
78
  "dependencies": {
79
79
  "@apidevtools/swagger-parser": "10.0.3",
80
- "@budibase/backend-core": "1.2.58-alpha.2",
81
- "@budibase/client": "1.2.58-alpha.2",
82
- "@budibase/pro": "1.2.58-alpha.2",
83
- "@budibase/string-templates": "1.2.58-alpha.2",
84
- "@budibase/types": "1.2.58-alpha.2",
80
+ "@budibase/backend-core": "1.2.58-alpha.5",
81
+ "@budibase/client": "1.2.58-alpha.5",
82
+ "@budibase/pro": "1.2.58-alpha.5",
83
+ "@budibase/string-templates": "1.2.58-alpha.5",
84
+ "@budibase/types": "1.2.58-alpha.5",
85
85
  "@bull-board/api": "3.7.0",
86
86
  "@bull-board/koa": "3.9.4",
87
87
  "@elastic/elasticsearch": "7.10.0",