@budibase/server 1.0.13-alpha.0 → 1.0.13

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 (209) hide show
  1. package/builder/assets/{index.9337c392.css → index.4fb3f887.css} +1 -1
  2. package/builder/assets/{index.73db2de9.js → index.ae7f408b.js} +164 -164
  3. package/builder/assets/{vendor.a9288856.js → vendor.470042a4.js} +1 -1
  4. package/builder/index.html +3 -3
  5. package/coverage/clover.xml +178 -208
  6. package/coverage/coverage-final.json +8 -9
  7. package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/application.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +14 -14
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/index.html +29 -14
  19. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/{query/index.js.html → query.js.html} +24 -150
  24. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/webhook.js.html +6 -18
  47. package/coverage/lcov-report/api/index.html +1 -1
  48. package/coverage/lcov-report/api/index.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/application.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/index.html +9 -9
  62. package/coverage/lcov-report/api/routes/index.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/query.js.html +98 -11
  68. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/row.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/static.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  75. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  77. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  78. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  79. package/coverage/lcov-report/automations/actions.js.html +1 -1
  80. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  81. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  82. package/coverage/lcov-report/automations/index.html +1 -1
  83. package/coverage/lcov-report/automations/index.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/index.html +1 -1
  93. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  99. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  100. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  101. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  108. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  109. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  110. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  111. package/coverage/lcov-report/automations/utils.js.html +1 -1
  112. package/coverage/lcov-report/constants/index.html +1 -1
  113. package/coverage/lcov-report/constants/index.js.html +1 -1
  114. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  115. package/coverage/lcov-report/constants/screens.js.html +1 -1
  116. package/coverage/lcov-report/db/client.js.html +1 -1
  117. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  118. package/coverage/lcov-report/db/index.html +1 -1
  119. package/coverage/lcov-report/db/index.js.html +1 -1
  120. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  121. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  122. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  123. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  124. package/coverage/lcov-report/db/newid.js.html +4 -4
  125. package/coverage/lcov-report/db/utils.js.html +58 -58
  126. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  127. package/coverage/lcov-report/events/index.html +1 -1
  128. package/coverage/lcov-report/events/index.js.html +1 -1
  129. package/coverage/lcov-report/events/utils.js.html +1 -1
  130. package/coverage/lcov-report/index.html +25 -40
  131. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  132. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  133. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  134. package/coverage/lcov-report/middleware/authorized.js.html +2 -2
  135. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  136. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  137. package/coverage/lcov-report/middleware/index.html +1 -1
  138. package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
  139. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  140. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  141. package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
  142. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  143. package/coverage/lcov-report/threads/automation.js.html +1 -1
  144. package/coverage/lcov-report/threads/index.html +1 -1
  145. package/coverage/lcov-report/threads/index.js.html +1 -1
  146. package/coverage/lcov-report/threads/query.js.html +1 -1
  147. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  148. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  149. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  150. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  151. package/coverage/lcov-report/utilities/global.js.html +1 -1
  152. package/coverage/lcov-report/utilities/index.html +1 -1
  153. package/coverage/lcov-report/utilities/index.js.html +1 -1
  154. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  155. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  156. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  157. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  158. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  159. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  160. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  161. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  162. package/coverage/lcov-report/utilities/security.js.html +1 -1
  163. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  164. package/coverage/lcov-report/utilities/users.js.html +1 -1
  165. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  166. package/coverage/lcov.info +240 -279
  167. package/dist/api/controllers/{query/index.js → query.js} +4 -38
  168. package/dist/api/controllers/webhook.js +0 -4
  169. package/dist/api/routes/query.js +32 -2
  170. package/dist/package.json +0 -4
  171. package/dist/tsconfig.tsbuildinfo +1 -1
  172. package/package.json +5 -9
  173. package/src/api/controllers/{query/index.js → query.js} +4 -46
  174. package/src/api/controllers/webhook.js +0 -4
  175. package/src/api/routes/query.js +34 -5
  176. package/src/definitions/common.ts +0 -22
  177. package/src/integrations/oracle.ts +1 -1
  178. package/coverage/lcov-report/api/controllers/query/index.html +0 -126
  179. package/coverage/lcov-report/api/controllers/query/validation.js.html +0 -200
  180. package/dist/api/controllers/query/import/index.js +0 -79
  181. package/dist/api/controllers/query/import/sources/base/index.js +0 -63
  182. package/dist/api/controllers/query/import/sources/base/openapi.js +0 -42
  183. package/dist/api/controllers/query/import/sources/curl.js +0 -90
  184. package/dist/api/controllers/query/import/sources/openapi2.js +0 -139
  185. package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
  186. package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
  187. package/dist/api/controllers/query/validation.js +0 -36
  188. package/src/api/controllers/query/import/index.ts +0 -85
  189. package/src/api/controllers/query/import/sources/base/index.ts +0 -86
  190. package/src/api/controllers/query/import/sources/base/openapi.ts +0 -24
  191. package/src/api/controllers/query/import/sources/curl.ts +0 -94
  192. package/src/api/controllers/query/import/sources/openapi2.ts +0 -159
  193. package/src/api/controllers/query/import/sources/tests/curl/curl.spec.js +0 -104
  194. package/src/api/controllers/query/import/sources/tests/curl/data/delete.txt +0 -1
  195. package/src/api/controllers/query/import/sources/tests/curl/data/empty-body.txt +0 -2
  196. package/src/api/controllers/query/import/sources/tests/curl/data/get.txt +0 -1
  197. package/src/api/controllers/query/import/sources/tests/curl/data/headers.txt +0 -3
  198. package/src/api/controllers/query/import/sources/tests/curl/data/patch.txt +0 -2
  199. package/src/api/controllers/query/import/sources/tests/curl/data/path.txt +0 -1
  200. package/src/api/controllers/query/import/sources/tests/curl/data/post.txt +0 -2
  201. package/src/api/controllers/query/import/sources/tests/curl/data/put.txt +0 -2
  202. package/src/api/controllers/query/import/sources/tests/curl/data/query.txt +0 -1
  203. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
  204. package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.yaml +0 -160
  205. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
  206. package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.yaml +0 -711
  207. package/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js +0 -239
  208. package/src/api/controllers/query/import/tests/index.spec.js +0 -115
  209. package/src/api/controllers/query/validation.js +0 -40
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.0.13-alpha.0",
4
+ "version": "1.0.13",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -69,10 +69,9 @@
69
69
  "author": "Budibase",
70
70
  "license": "GPL-3.0",
71
71
  "dependencies": {
72
- "@apidevtools/swagger-parser": "^10.0.3",
73
- "@budibase/auth": "^1.0.13-alpha.0",
74
- "@budibase/client": "^1.0.13-alpha.0",
75
- "@budibase/string-templates": "^1.0.13-alpha.0",
72
+ "@budibase/auth": "^1.0.13",
73
+ "@budibase/client": "^1.0.13",
74
+ "@budibase/string-templates": "^1.0.13",
76
75
  "@bull-board/api": "^3.7.0",
77
76
  "@bull-board/koa": "^3.7.0",
78
77
  "@elastic/elasticsearch": "7.10.0",
@@ -86,14 +85,12 @@
86
85
  "bull": "^3.22.4",
87
86
  "chmodr": "1.2.0",
88
87
  "csvtojson": "2.0.10",
89
- "curlconverter": "^3.21.0",
90
88
  "dotenv": "8.2.0",
91
89
  "download": "8.0.0",
92
90
  "fix-path": "3.0.0",
93
91
  "fs-extra": "8.1.0",
94
92
  "jimp": "0.16.1",
95
93
  "joi": "17.2.1",
96
- "js-yaml": "^4.1.0",
97
94
  "jsonschema": "1.4.0",
98
95
  "knex": "^0.95.6",
99
96
  "koa": "2.7.0",
@@ -149,7 +146,6 @@
149
146
  "eslint": "^6.8.0",
150
147
  "jest": "^27.0.5",
151
148
  "nodemon": "^2.0.4",
152
- "openapi-types": "^9.3.1",
153
149
  "path-to-regexp": "^6.2.0",
154
150
  "prettier": "^2.3.1",
155
151
  "rimraf": "^3.0.2",
@@ -162,5 +158,5 @@
162
158
  "optionalDependencies": {
163
159
  "oracledb": "^5.3.0"
164
160
  },
165
- "gitHead": "5038db170c10bebe665bf94e5db72df2c5f387a0"
161
+ "gitHead": "e5ea78169ceaa446bf5f174fbd17d3c4aac6a178"
166
162
  }
@@ -1,14 +1,12 @@
1
1
  const { processString } = require("@budibase/string-templates")
2
- const CouchDB = require("../../../db")
2
+ const CouchDB = require("../../db")
3
3
  const {
4
4
  generateQueryID,
5
5
  getQueryParams,
6
6
  isProdAppID,
7
- } = require("../../../db/utils")
8
- const { BaseQueryVerbs } = require("../../../constants")
9
- const { Thread, ThreadType } = require("../../../threads")
10
- const { save: saveDatasource } = require("../datasource")
11
- const { RestImporter } = require("./import")
7
+ } = require("../../db/utils")
8
+ const { BaseQueryVerbs } = require("../../constants")
9
+ const { Thread, ThreadType } = require("../../threads")
12
10
 
13
11
  const Runner = new Thread(ThreadType.QUERY, { timeoutMs: 10000 })
14
12
 
@@ -32,49 +30,9 @@ exports.fetch = async function (ctx) {
32
30
  include_docs: true,
33
31
  })
34
32
  )
35
-
36
33
  ctx.body = enrichQueries(body.rows.map(row => row.doc))
37
34
  }
38
35
 
39
- exports.import = async ctx => {
40
- const body = ctx.request.body
41
- const data = body.data
42
-
43
- const importer = new RestImporter(data)
44
- await importer.init()
45
-
46
- let datasourceId
47
- if (!body.datasourceId) {
48
- // construct new datasource
49
- const info = await importer.getInfo()
50
- let datasource = {
51
- type: "datasource",
52
- source: "REST",
53
- config: {
54
- url: info.url,
55
- defaultHeaders: [],
56
- },
57
- name: info.name,
58
- }
59
- // save the datasource
60
- const datasourceCtx = { ...ctx }
61
- datasourceCtx.request.body.datasource = datasource
62
- await saveDatasource(datasourceCtx)
63
- datasourceId = datasourceCtx.body.datasource._id
64
- } else {
65
- // use existing datasource
66
- datasourceId = body.datasourceId
67
- }
68
-
69
- const importResult = await importer.importQueries(ctx.appId, datasourceId)
70
-
71
- ctx.body = {
72
- ...importResult,
73
- datasourceId,
74
- }
75
- ctx.status = 200
76
- }
77
-
78
36
  exports.save = async function (ctx) {
79
37
  const db = new CouchDB(ctx.appId)
80
38
  const query = ctx.request.body
@@ -65,10 +65,6 @@ exports.buildSchema = async ctx => {
65
65
  let automation = await db.get(webhook.action.target)
66
66
  const autoOutputs = automation.definition.trigger.schema.outputs
67
67
  let properties = webhook.bodySchema.properties
68
- // reset webhook outputs
69
- autoOutputs.properties = {
70
- body: autoOutputs.properties.body,
71
- }
72
68
  for (let prop of Object.keys(properties)) {
73
69
  autoOutputs.properties[prop] = {
74
70
  type: properties[prop].type,
@@ -1,23 +1,53 @@
1
1
  const Router = require("@koa/router")
2
2
  const queryController = require("../controllers/query")
3
3
  const authorized = require("../../middleware/authorized")
4
+ const Joi = require("joi")
4
5
  const {
5
6
  PermissionLevels,
6
7
  PermissionTypes,
7
8
  BUILDER,
8
9
  } = require("@budibase/auth/permissions")
10
+ const joiValidator = require("../../middleware/joi-validator")
9
11
  const {
10
12
  bodyResource,
11
13
  bodySubResource,
12
14
  paramResource,
13
15
  } = require("../../middleware/resourceId")
14
- const {
15
- generateQueryPreviewValidation,
16
- generateQueryValidation,
17
- } = require("../controllers/query/validation")
18
16
 
19
17
  const router = Router()
20
18
 
19
+ function generateQueryValidation() {
20
+ // prettier-ignore
21
+ return joiValidator.body(Joi.object({
22
+ _id: Joi.string(),
23
+ _rev: Joi.string(),
24
+ name: Joi.string().required(),
25
+ fields: Joi.object().required(),
26
+ datasourceId: Joi.string().required(),
27
+ readable: Joi.boolean(),
28
+ parameters: Joi.array().items(Joi.object({
29
+ name: Joi.string(),
30
+ default: Joi.string().allow(""),
31
+ })),
32
+ queryVerb: Joi.string().allow().required(),
33
+ extra: Joi.object().optional(),
34
+ schema: Joi.object({}).required().unknown(true),
35
+ transformer: Joi.string().optional(),
36
+ }))
37
+ }
38
+
39
+ function generateQueryPreviewValidation() {
40
+ // prettier-ignore
41
+ return joiValidator.body(Joi.object({
42
+ fields: Joi.object().required(),
43
+ queryVerb: Joi.string().allow().required(),
44
+ extra: Joi.object().optional(),
45
+ datasourceId: Joi.string().required(),
46
+ transformer: Joi.string().optional(),
47
+ parameters: Joi.object({}).required().unknown(true)
48
+ }))
49
+ }
50
+
21
51
  router
22
52
  .get("/api/queries", authorized(BUILDER), queryController.fetch)
23
53
  .post(
@@ -27,7 +57,6 @@ router
27
57
  generateQueryValidation(),
28
58
  queryController.save
29
59
  )
30
- .post("/api/queries/import", authorized(BUILDER), queryController.import)
31
60
  .post(
32
61
  "/api/queries/preview",
33
62
  bodyResource("datasourceId"),
@@ -107,25 +107,3 @@ export interface Datasource extends Base {
107
107
  [key: string]: Table
108
108
  }
109
109
  }
110
-
111
- export interface QueryParameter {
112
- name: string
113
- default: string
114
- }
115
-
116
- export interface Query {
117
- _id?: string
118
- datasourceId: string
119
- name: string
120
- parameters: QueryParameter[]
121
- fields: {
122
- headers: object
123
- queryString: string | null
124
- path: string
125
- requestBody: string | undefined
126
- }
127
- transformer: string | null
128
- schema: any
129
- readable: boolean
130
- queryVerb: string
131
- }
@@ -450,7 +450,7 @@ module OracleModule {
450
450
  })
451
451
  return lastRow.rows
452
452
  } else {
453
- return [{ [operation.toLowerCase()]: true }]
453
+ return [{ [ operation.toLowerCase() ]: true }]
454
454
  }
455
455
  }
456
456
  }
@@ -1,126 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for api/controllers/query</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> api/controllers/query</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">73.19% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>71/97</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">44.44% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>12/27</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">92.3% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>12/13</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">72.91% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>70/96</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- </div>
58
- <div class='status-line medium'></div>
59
- <div class="pad1">
60
- <table class="coverage-summary">
61
- <thead>
62
- <tr>
63
- <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
64
- <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
65
- <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
66
- <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
67
- <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
68
- <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
69
- <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
70
- <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
71
- <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
72
- <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
73
- </tr>
74
- </thead>
75
- <tbody><tr>
76
- <td class="file medium" data-value="index.js"><a href="index.js.html">index.js</a></td>
77
- <td data-value="70.78" class="pic medium">
78
- <div class="chart"><div class="cover-fill" style="width: 70%"></div><div class="cover-empty" style="width: 30%"></div></div>
79
- </td>
80
- <td data-value="70.78" class="pct medium">70.78%</td>
81
- <td data-value="89" class="abs medium">63/89</td>
82
- <td data-value="44.44" class="pct low">44.44%</td>
83
- <td data-value="27" class="abs low">12/27</td>
84
- <td data-value="90" class="pct high">90%</td>
85
- <td data-value="10" class="abs high">9/10</td>
86
- <td data-value="70.45" class="pct medium">70.45%</td>
87
- <td data-value="88" class="abs medium">62/88</td>
88
- </tr>
89
-
90
- <tr>
91
- <td class="file high" data-value="validation.js"><a href="validation.js.html">validation.js</a></td>
92
- <td data-value="100" class="pic high">
93
- <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
94
- </td>
95
- <td data-value="100" class="pct high">100%</td>
96
- <td data-value="8" class="abs high">8/8</td>
97
- <td data-value="100" class="pct high">100%</td>
98
- <td data-value="0" class="abs high">0/0</td>
99
- <td data-value="100" class="pct high">100%</td>
100
- <td data-value="3" class="abs high">3/3</td>
101
- <td data-value="100" class="pct high">100%</td>
102
- <td data-value="8" class="abs high">8/8</td>
103
- </tr>
104
-
105
- </tbody>
106
- </table>
107
- </div>
108
- <div class='push'></div><!-- for sticky footer -->
109
- </div><!-- /wrapper -->
110
- <div class='footer quiet pad2 space-top1 center small'>
111
- Code coverage generated by
112
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
113
- at Fri Dec 10 2021 10:37:27 GMT+0000 (Coordinated Universal Time)
114
- </div>
115
- </div>
116
- <script src="../../../prettify.js"></script>
117
- <script>
118
- window.onload = function () {
119
- prettyPrint();
120
- };
121
- </script>
122
- <script src="../../../sorter.js"></script>
123
- <script src="../../../block-navigation.js"></script>
124
- </body>
125
- </html>
126
-
@@ -1,200 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for api/controllers/query/validation.js</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> / <a href="index.html">api/controllers/query</a> validation.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>8/8</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/0</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>3/3</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>8/8</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- </div>
58
- <div class='status-line high'></div>
59
- <pre><table class="coverage">
60
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
- <a name='L2'></a><a href='#L2'>2</a>
62
- <a name='L3'></a><a href='#L3'>3</a>
63
- <a name='L4'></a><a href='#L4'>4</a>
64
- <a name='L5'></a><a href='#L5'>5</a>
65
- <a name='L6'></a><a href='#L6'>6</a>
66
- <a name='L7'></a><a href='#L7'>7</a>
67
- <a name='L8'></a><a href='#L8'>8</a>
68
- <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a>
70
- <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a>
72
- <a name='L13'></a><a href='#L13'>13</a>
73
- <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a>
75
- <a name='L16'></a><a href='#L16'>16</a>
76
- <a name='L17'></a><a href='#L17'>17</a>
77
- <a name='L18'></a><a href='#L18'>18</a>
78
- <a name='L19'></a><a href='#L19'>19</a>
79
- <a name='L20'></a><a href='#L20'>20</a>
80
- <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a>
83
- <a name='L24'></a><a href='#L24'>24</a>
84
- <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a>
86
- <a name='L27'></a><a href='#L27'>27</a>
87
- <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a>
89
- <a name='L30'></a><a href='#L30'>30</a>
90
- <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a>
92
- <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a>
96
- <a name='L37'></a><a href='#L37'>37</a>
97
- <a name='L38'></a><a href='#L38'>38</a>
98
- <a name='L39'></a><a href='#L39'>39</a>
99
- <a name='L40'></a><a href='#L40'>40</a>
100
- <a name='L41'></a><a href='#L41'>41</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">35x</span>
101
- <span class="cline-any cline-yes">35x</span>
102
- <span class="cline-any cline-neutral">&nbsp;</span>
103
- <span class="cline-any cline-yes">35x</span>
104
- <span class="cline-any cline-yes">28x</span>
105
- <span class="cline-any cline-neutral">&nbsp;</span>
106
- <span class="cline-any cline-neutral">&nbsp;</span>
107
- <span class="cline-any cline-neutral">&nbsp;</span>
108
- <span class="cline-any cline-neutral">&nbsp;</span>
109
- <span class="cline-any cline-neutral">&nbsp;</span>
110
- <span class="cline-any cline-neutral">&nbsp;</span>
111
- <span class="cline-any cline-neutral">&nbsp;</span>
112
- <span class="cline-any cline-neutral">&nbsp;</span>
113
- <span class="cline-any cline-neutral">&nbsp;</span>
114
- <span class="cline-any cline-neutral">&nbsp;</span>
115
- <span class="cline-any cline-neutral">&nbsp;</span>
116
- <span class="cline-any cline-neutral">&nbsp;</span>
117
- <span class="cline-any cline-neutral">&nbsp;</span>
118
- <span class="cline-any cline-neutral">&nbsp;</span>
119
- <span class="cline-any cline-neutral">&nbsp;</span>
120
- <span class="cline-any cline-neutral">&nbsp;</span>
121
- <span class="cline-any cline-neutral">&nbsp;</span>
122
- <span class="cline-any cline-neutral">&nbsp;</span>
123
- <span class="cline-any cline-neutral">&nbsp;</span>
124
- <span class="cline-any cline-yes">35x</span>
125
- <span class="cline-any cline-neutral">&nbsp;</span>
126
- <span class="cline-any cline-yes">23x</span>
127
- <span class="cline-any cline-neutral">&nbsp;</span>
128
- <span class="cline-any cline-neutral">&nbsp;</span>
129
- <span class="cline-any cline-yes">35x</span>
130
- <span class="cline-any cline-neutral">&nbsp;</span>
131
- <span class="cline-any cline-yes">23x</span>
132
- <span class="cline-any cline-neutral">&nbsp;</span>
133
- <span class="cline-any cline-neutral">&nbsp;</span>
134
- <span class="cline-any cline-neutral">&nbsp;</span>
135
- <span class="cline-any cline-neutral">&nbsp;</span>
136
- <span class="cline-any cline-neutral">&nbsp;</span>
137
- <span class="cline-any cline-neutral">&nbsp;</span>
138
- <span class="cline-any cline-neutral">&nbsp;</span>
139
- <span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const joiValidator = require("../../../middleware/joi-validator")
141
- const Joi = require("joi")
142
- &nbsp;
143
- exports.queryValidation = () =&gt; {
144
- return Joi.object({
145
- _id: Joi.string(),
146
- _rev: Joi.string(),
147
- name: Joi.string().required(),
148
- fields: Joi.object().required(),
149
- datasourceId: Joi.string().required(),
150
- readable: Joi.boolean(),
151
- parameters: Joi.array().items(
152
- Joi.object({
153
- name: Joi.string(),
154
- default: Joi.string().allow(""),
155
- })
156
- ),
157
- queryVerb: Joi.string().allow().required(),
158
- extra: Joi.object().optional(),
159
- schema: Joi.object({}).required().unknown(true),
160
- transformer: Joi.string().optional(),
161
- })
162
- }
163
- &nbsp;
164
- exports.generateQueryValidation = () =&gt; {
165
- // prettier-ignore
166
- return joiValidator.body(exports.queryValidation())
167
- }
168
- &nbsp;
169
- exports.generateQueryPreviewValidation = () =&gt; {
170
- // prettier-ignore
171
- return joiValidator.body(Joi.object({
172
- fields: Joi.object().required(),
173
- queryVerb: Joi.string().allow().required(),
174
- extra: Joi.object().optional(),
175
- datasourceId: Joi.string().required(),
176
- transformer: Joi.string().optional(),
177
- parameters: Joi.object({}).required().unknown(true)
178
- }))
179
- }
180
- &nbsp;</pre></td></tr></table></pre>
181
-
182
- <div class='push'></div><!-- for sticky footer -->
183
- </div><!-- /wrapper -->
184
- <div class='footer quiet pad2 space-top1 center small'>
185
- Code coverage generated by
186
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
187
- at Fri Dec 10 2021 10:37:27 GMT+0000 (Coordinated Universal Time)
188
- </div>
189
- </div>
190
- <script src="../../../prettify.js"></script>
191
- <script>
192
- window.onload = function () {
193
- prettyPrint();
194
- };
195
- </script>
196
- <script src="../../../sorter.js"></script>
197
- <script src="../../../block-navigation.js"></script>
198
- </body>
199
- </html>
200
-
@@ -1,79 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.RestImporter = void 0;
16
- const db_1 = __importDefault(require("../../../../db"));
17
- const validation_1 = require("../validation");
18
- const utils_1 = require("../../../../db/utils");
19
- const openapi2_1 = require("./sources/openapi2");
20
- const curl_1 = require("./sources/curl");
21
- class RestImporter {
22
- constructor(data) {
23
- this.init = () => __awaiter(this, void 0, void 0, function* () {
24
- for (let source of this.sources) {
25
- if (yield source.isSupported(this.data)) {
26
- this.source = source;
27
- break;
28
- }
29
- }
30
- });
31
- this.getInfo = () => __awaiter(this, void 0, void 0, function* () {
32
- return this.source.getInfo();
33
- });
34
- this.importQueries = (appId, datasourceId) => __awaiter(this, void 0, void 0, function* () {
35
- // constuct the queries
36
- let queries = yield this.source.getQueries(datasourceId);
37
- // validate queries
38
- const errorQueries = [];
39
- const schema = validation_1.queryValidation();
40
- queries = queries
41
- .filter(query => {
42
- const validation = schema.validate(query);
43
- if (validation.error) {
44
- errorQueries.push(query);
45
- return false;
46
- }
47
- return true;
48
- })
49
- .map(query => {
50
- query._id = utils_1.generateQueryID(query.datasourceId);
51
- return query;
52
- });
53
- // persist queries
54
- const db = new db_1.default(appId);
55
- const response = yield db.bulkDocs(queries);
56
- // create index to seperate queries and errors
57
- const queryIndex = queries.reduce((acc, query) => {
58
- if (query._id) {
59
- acc[query._id] = query;
60
- }
61
- return acc;
62
- }, {});
63
- // check for failed writes
64
- response.forEach((query) => {
65
- if (!query.ok) {
66
- errorQueries.push(queryIndex[query.id]);
67
- delete queryIndex[query.id];
68
- }
69
- });
70
- return {
71
- errorQueries,
72
- queries: Object.values(queryIndex),
73
- };
74
- });
75
- this.data = data;
76
- this.sources = [new openapi2_1.OpenAPI2(), new curl_1.Curl()];
77
- }
78
- }
79
- exports.RestImporter = RestImporter;