@budibase/server 1.3.21-alpha.1 → 1.3.21

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 (308) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.8d12d461.css +6 -0
  3. package/builder/assets/index.d354271c.js +879 -0
  4. package/builder/assets/vendor.5e1fe644.css +1 -0
  5. package/builder/assets/vendor.67dbd8fa.js +248 -0
  6. package/builder/index.html +4 -2
  7. package/coverage/clover.xml +390 -451
  8. package/coverage/coverage-final.json +21 -21
  9. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +8 -41
  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 +11 -68
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +34 -73
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +46 -46
  18. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  19. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/migrations.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.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  28. package/coverage/lcov-report/api/controllers/row/index.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/staticFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/screen.js.html +12 -207
  34. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.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 +1 -1
  47. package/coverage/lcov-report/api/index.html +1 -1
  48. package/coverage/lcov-report/api/index.js.html +13 -13
  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/auth.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.html +1 -1
  60. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  71. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/utils/index.html +9 -9
  74. package/coverage/lcov-report/api/routes/utils/validators.js.html +12 -75
  75. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  77. package/coverage/lcov-report/automations/actions.js.html +1 -1
  78. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  79. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  80. package/coverage/lcov-report/automations/index.html +1 -1
  81. package/coverage/lcov-report/automations/index.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/index.html +1 -1
  89. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  108. package/coverage/lcov-report/constants/index.html +1 -1
  109. package/coverage/lcov-report/constants/index.js.html +1 -1
  110. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  111. package/coverage/lcov-report/constants/screens.js.html +1 -1
  112. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  113. package/coverage/lcov-report/db/index.html +18 -18
  114. package/coverage/lcov-report/db/index.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  117. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  118. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  119. package/coverage/lcov-report/db/newid.js.html +2 -2
  120. package/coverage/lcov-report/db/utils.js.html +20 -56
  121. package/coverage/lcov-report/events/AutomationEmitter.js.html +3 -3
  122. package/coverage/lcov-report/events/index.html +1 -1
  123. package/coverage/lcov-report/events/index.js.html +1 -1
  124. package/coverage/lcov-report/events/utils.js.html +1 -1
  125. package/coverage/lcov-report/index.html +46 -46
  126. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  127. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  128. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  129. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  130. package/coverage/lcov-report/middleware/currentapp.js.html +40 -46
  131. package/coverage/lcov-report/middleware/index.html +15 -15
  132. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  133. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  134. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  135. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  136. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  137. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  138. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  139. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  140. package/coverage/lcov-report/utilities/global.js.html +16 -16
  141. package/coverage/lcov-report/utilities/index.html +15 -15
  142. package/coverage/lcov-report/utilities/index.js.html +24 -24
  143. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  144. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  146. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  150. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  151. package/coverage/lcov-report/utilities/security.js.html +2 -2
  152. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  156. package/coverage/lcov-report/utilities/users.js.html +1 -1
  157. package/coverage/lcov-report/utilities/workerRequests.js.html +8 -32
  158. package/coverage/lcov.info +672 -798
  159. package/dist/api/controllers/application.js +5 -5
  160. package/dist/api/controllers/auth.js +0 -9
  161. package/dist/api/controllers/component.js +1 -14
  162. package/dist/api/controllers/datasource.js +8 -21
  163. package/dist/api/controllers/deploy/index.js +8 -1
  164. package/dist/api/controllers/integration.js +4 -4
  165. package/dist/api/controllers/row/external.js +1 -1
  166. package/dist/api/controllers/screen.js +2 -52
  167. package/dist/api/controllers/static/index.js +0 -1
  168. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -10
  169. package/dist/api/controllers/static/templates/preview.hbs +1 -5
  170. package/dist/api/index.js +1 -1
  171. package/dist/api/routes/application.js +2 -3
  172. package/dist/api/routes/index.js +0 -2
  173. package/dist/api/routes/public/rows.js +82 -1
  174. package/dist/api/routes/public/tables.js +1 -1
  175. package/dist/api/routes/table.js +1 -1
  176. package/dist/api/routes/utils/validators.js +2 -20
  177. package/dist/app.js +1 -16
  178. package/dist/db/utils.js +1 -10
  179. package/dist/environment.js +0 -1
  180. package/dist/integrations/airtable.js +129 -126
  181. package/dist/integrations/arangodb.js +89 -86
  182. package/dist/integrations/base/query.js +2 -2
  183. package/dist/integrations/base/sqlTable.js +1 -3
  184. package/dist/integrations/couchdb.js +83 -80
  185. package/dist/integrations/dynamodb.js +164 -161
  186. package/dist/integrations/elasticsearch.js +138 -135
  187. package/dist/integrations/firebase.js +157 -154
  188. package/dist/integrations/googlesheets.js +327 -323
  189. package/dist/integrations/index.js +51 -99
  190. package/dist/integrations/microsoftSqlServer.js +243 -240
  191. package/dist/integrations/mongodb.js +242 -239
  192. package/dist/integrations/mysql.js +219 -215
  193. package/dist/integrations/oracle.js +322 -318
  194. package/dist/integrations/postgres.js +265 -262
  195. package/dist/integrations/redis.js +139 -134
  196. package/dist/integrations/rest.js +292 -289
  197. package/dist/integrations/s3.js +64 -61
  198. package/dist/integrations/snowflake.js +86 -83
  199. package/dist/middleware/currentapp.js +0 -2
  200. package/dist/migrations/functions/backfill/global.js +3 -0
  201. package/dist/migrations/functions/developerQuota.js +49 -0
  202. package/dist/{api/routes/plugin.js → migrations/functions/publishedAppsQuota.js} +21 -13
  203. package/dist/{api/controllers/plugin/url.js → migrations/functions/usageQuotas/syncDevelopers.js} +13 -13
  204. package/dist/{api/controllers/plugin/file.js → migrations/functions/usageQuotas/syncPublishedApps.js} +15 -13
  205. package/dist/migrations/index.js +10 -0
  206. package/dist/package.json +6 -9
  207. package/dist/tests/utilities/TestConfiguration.js +1 -1
  208. package/dist/threads/query.js +2 -2
  209. package/dist/tsconfig.build.tsbuildinfo +1 -1
  210. package/dist/utilities/fileSystem/index.js +1 -111
  211. package/dist/utilities/workerRequests.js +0 -4
  212. package/package.json +7 -10
  213. package/scripts/dev/manage.js +0 -4
  214. package/scripts/localdomain.js +1 -3
  215. package/specs/openapi.json +112 -115
  216. package/specs/openapi.yaml +94 -96
  217. package/specs/resources/misc.js +0 -116
  218. package/specs/resources/query.js +1 -1
  219. package/src/api/controllers/application.ts +2 -1
  220. package/src/api/controllers/auth.js +0 -11
  221. package/src/api/controllers/component.js +2 -21
  222. package/src/api/controllers/datasource.js +8 -21
  223. package/src/api/controllers/deploy/index.ts +6 -1
  224. package/src/api/controllers/integration.js +4 -4
  225. package/src/api/controllers/public/mapping/types.ts +0 -8
  226. package/src/api/controllers/row/external.js +1 -1
  227. package/src/api/controllers/screen.js +1 -66
  228. package/src/api/controllers/static/index.ts +1 -1
  229. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -10
  230. package/src/api/controllers/static/templates/preview.hbs +1 -5
  231. package/src/api/index.js +1 -1
  232. package/src/api/routes/application.ts +2 -13
  233. package/src/api/routes/index.ts +0 -2
  234. package/src/api/routes/public/rows.ts +82 -1
  235. package/src/api/routes/public/tables.ts +1 -1
  236. package/src/api/routes/table.js +1 -1
  237. package/src/api/routes/tests/query.spec.js +25 -8
  238. package/src/api/routes/tests/user.spec.js +2 -0
  239. package/src/api/routes/utils/validators.js +5 -26
  240. package/src/app.ts +2 -25
  241. package/src/db/utils.js +0 -12
  242. package/src/definitions/openapi.ts +55 -56
  243. package/src/environment.js +0 -1
  244. package/src/integrations/airtable.ts +118 -116
  245. package/src/integrations/arangodb.ts +89 -87
  246. package/src/integrations/base/query.ts +2 -2
  247. package/src/integrations/base/sqlTable.ts +1 -3
  248. package/src/integrations/couchdb.ts +89 -83
  249. package/src/integrations/dynamodb.ts +175 -173
  250. package/src/integrations/elasticsearch.ts +122 -120
  251. package/src/integrations/firebase.ts +159 -157
  252. package/src/integrations/googlesheets.ts +338 -328
  253. package/src/integrations/index.ts +21 -64
  254. package/src/integrations/microsoftSqlServer.ts +251 -249
  255. package/src/integrations/mongodb.ts +258 -261
  256. package/src/integrations/mysql.ts +234 -229
  257. package/src/integrations/oracle.ts +380 -373
  258. package/src/integrations/postgres.ts +268 -264
  259. package/src/integrations/redis.ts +132 -128
  260. package/src/integrations/rest.ts +329 -324
  261. package/src/integrations/s3.ts +71 -68
  262. package/src/integrations/snowflake.ts +82 -80
  263. package/src/integrations/tests/{airtable.spec.ts → airtable.spec.js} +18 -21
  264. package/src/integrations/tests/{arangodb.spec.ts → arangodb.spec.js} +9 -12
  265. package/src/integrations/tests/{couchdb.spec.ts → couchdb.spec.js} +27 -33
  266. package/src/integrations/tests/{dynamodb.spec.ts → dynamodb.spec.js} +41 -45
  267. package/src/integrations/tests/{elasticsearch.spec.ts → elasticsearch.spec.js} +21 -22
  268. package/src/integrations/tests/{firebase.spec.ts → firebase.spec.js} +28 -33
  269. package/src/integrations/tests/{microsoftSqlServer.spec.ts → microsoftSqlServer.spec.js} +11 -12
  270. package/src/integrations/tests/{mongo.spec.ts → mongo.spec.js} +35 -46
  271. package/src/integrations/tests/{mysql.spec.ts → mysql.spec.js} +15 -17
  272. package/src/integrations/tests/{oracle.spec.ts → oracle.spec.js} +17 -19
  273. package/src/integrations/tests/{postgres.spec.ts → postgres.spec.js} +17 -19
  274. package/src/integrations/tests/{redis.spec.ts → redis.spec.js} +18 -27
  275. package/src/integrations/tests/{rest.spec.ts → rest.spec.js} +14 -22
  276. package/src/integrations/tests/{s3.spec.ts → s3.spec.js} +8 -10
  277. package/src/integrations/tests/{sql.spec.ts → sql.spec.js} +177 -228
  278. package/src/middleware/currentapp.js +0 -2
  279. package/src/migrations/functions/backfill/global.ts +3 -0
  280. package/src/migrations/functions/developerQuota.ts +15 -0
  281. package/src/migrations/functions/publishedAppsQuota.ts +13 -0
  282. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +19 -0
  283. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +21 -0
  284. package/src/migrations/index.ts +16 -0
  285. package/src/module.d.ts +0 -2
  286. package/src/tests/utilities/TestConfiguration.js +1 -1
  287. package/src/threads/query.ts +2 -2
  288. package/src/utilities/fileSystem/index.js +0 -130
  289. package/src/utilities/workerRequests.js +0 -8
  290. package/builder/assets/index.c9d3f9e8.js +0 -1005
  291. package/builder/assets/index.f1b70f52.css +0 -6
  292. package/dist/api/controllers/plugin/github.js +0 -69
  293. package/dist/api/controllers/plugin/index.js +0 -200
  294. package/dist/api/controllers/plugin/npm.js +0 -58
  295. package/dist/api/controllers/plugin/uploaders.js +0 -11
  296. package/dist/api/controllers/plugin/utils.js +0 -26
  297. package/dist/watch.js +0 -77
  298. package/dist/websocket.js +0 -22
  299. package/src/api/controllers/plugin/file.ts +0 -15
  300. package/src/api/controllers/plugin/github.ts +0 -75
  301. package/src/api/controllers/plugin/index.ts +0 -215
  302. package/src/api/controllers/plugin/npm.ts +0 -56
  303. package/src/api/controllers/plugin/uploaders.ts +0 -4
  304. package/src/api/controllers/plugin/url.ts +0 -12
  305. package/src/api/controllers/plugin/utils.ts +0 -19
  306. package/src/api/routes/plugin.ts +0 -14
  307. package/src/watch.ts +0 -38
  308. package/src/websocket.ts +0 -26
@@ -17,231 +17,235 @@ const utils_1 = require("./utils");
17
17
  const dayjs_1 = __importDefault(require("dayjs"));
18
18
  const { NUMBER_REGEX } = require("../utilities");
19
19
  const sql_1 = __importDefault(require("./base/sql"));
20
- const mysql = require("mysql2/promise");
21
- const SCHEMA = {
22
- docs: "https://github.com/sidorares/node-mysql2",
23
- plus: true,
24
- friendlyName: "MySQL",
25
- type: "Relational",
26
- description: "MySQL Database Service is a fully managed database service to deploy cloud-native applications. ",
27
- datasource: {
28
- host: {
29
- type: types_1.DatasourceFieldType.STRING,
30
- default: "localhost",
31
- required: true,
20
+ var MySQLModule;
21
+ (function (MySQLModule) {
22
+ const mysql = require("mysql2/promise");
23
+ const SCHEMA = {
24
+ docs: "https://github.com/sidorares/node-mysql2",
25
+ plus: true,
26
+ friendlyName: "MySQL",
27
+ type: "Relational",
28
+ description: "MySQL Database Service is a fully managed database service to deploy cloud-native applications. ",
29
+ datasource: {
30
+ host: {
31
+ type: types_1.DatasourceFieldType.STRING,
32
+ default: "localhost",
33
+ required: true,
34
+ },
35
+ port: {
36
+ type: types_1.DatasourceFieldType.NUMBER,
37
+ default: 3306,
38
+ required: false,
39
+ },
40
+ user: {
41
+ type: types_1.DatasourceFieldType.STRING,
42
+ default: "root",
43
+ required: true,
44
+ },
45
+ password: {
46
+ type: types_1.DatasourceFieldType.PASSWORD,
47
+ default: "root",
48
+ required: true,
49
+ },
50
+ database: {
51
+ type: types_1.DatasourceFieldType.STRING,
52
+ required: true,
53
+ },
54
+ ssl: {
55
+ type: types_1.DatasourceFieldType.OBJECT,
56
+ required: false,
57
+ },
58
+ rejectUnauthorized: {
59
+ type: types_1.DatasourceFieldType.BOOLEAN,
60
+ default: true,
61
+ required: false,
62
+ },
32
63
  },
33
- port: {
34
- type: types_1.DatasourceFieldType.NUMBER,
35
- default: 3306,
36
- required: false,
64
+ query: {
65
+ create: {
66
+ type: types_1.QueryType.SQL,
67
+ },
68
+ read: {
69
+ type: types_1.QueryType.SQL,
70
+ },
71
+ update: {
72
+ type: types_1.QueryType.SQL,
73
+ },
74
+ delete: {
75
+ type: types_1.QueryType.SQL,
76
+ },
37
77
  },
38
- user: {
39
- type: types_1.DatasourceFieldType.STRING,
40
- default: "root",
41
- required: true,
42
- },
43
- password: {
44
- type: types_1.DatasourceFieldType.PASSWORD,
45
- default: "root",
46
- required: true,
47
- },
48
- database: {
49
- type: types_1.DatasourceFieldType.STRING,
50
- required: true,
51
- },
52
- ssl: {
53
- type: types_1.DatasourceFieldType.OBJECT,
54
- required: false,
55
- },
56
- rejectUnauthorized: {
57
- type: types_1.DatasourceFieldType.BOOLEAN,
58
- default: true,
59
- required: false,
60
- },
61
- },
62
- query: {
63
- create: {
64
- type: types_1.QueryType.SQL,
65
- },
66
- read: {
67
- type: types_1.QueryType.SQL,
68
- },
69
- update: {
70
- type: types_1.QueryType.SQL,
71
- },
72
- delete: {
73
- type: types_1.QueryType.SQL,
74
- },
75
- },
76
- };
77
- const TimezoneAwareDateTypes = ["timestamp"];
78
- function bindingTypeCoerce(bindings) {
79
- for (let i = 0; i < bindings.length; i++) {
80
- const binding = bindings[i];
81
- if (typeof binding !== "string") {
82
- continue;
78
+ };
79
+ const TimezoneAwareDateTypes = ["timestamp"];
80
+ function bindingTypeCoerce(bindings) {
81
+ for (let i = 0; i < bindings.length; i++) {
82
+ const binding = bindings[i];
83
+ if (typeof binding !== "string") {
84
+ continue;
85
+ }
86
+ const matches = binding.match(NUMBER_REGEX);
87
+ // check if number first
88
+ if (matches && matches[0] !== "" && !isNaN(Number(matches[0]))) {
89
+ bindings[i] = parseFloat(binding);
90
+ }
91
+ // if not a number, see if it is a date - important to do in this order as any
92
+ // integer will be considered a valid date
93
+ else if (/^\d/.test(binding) && (0, dayjs_1.default)(binding).isValid()) {
94
+ bindings[i] = (0, dayjs_1.default)(binding).toDate();
95
+ }
96
+ }
97
+ return bindings;
98
+ }
99
+ class MySQLIntegration extends sql_1.default {
100
+ constructor(config) {
101
+ super(utils_1.SqlClient.MY_SQL);
102
+ this.tables = {};
103
+ this.schemaErrors = {};
104
+ this.config = config;
105
+ if (config.ssl && Object.keys(config.ssl).length === 0) {
106
+ delete config.ssl;
107
+ }
108
+ // make sure this defaults to true
109
+ if (config.rejectUnauthorized != null &&
110
+ !config.rejectUnauthorized &&
111
+ config.ssl) {
112
+ config.ssl.rejectUnauthorized = config.rejectUnauthorized;
113
+ }
114
+ // @ts-ignore
115
+ delete config.rejectUnauthorized;
116
+ this.config = Object.assign(Object.assign({}, config), { typeCast: function (field, next) {
117
+ if (field.type == "DATETIME" ||
118
+ field.type === "DATE" ||
119
+ field.type === "TIMESTAMP") {
120
+ return field.string();
121
+ }
122
+ return next();
123
+ } });
83
124
  }
84
- const matches = binding.match(NUMBER_REGEX);
85
- // check if number first
86
- if (matches && matches[0] !== "" && !isNaN(Number(matches[0]))) {
87
- bindings[i] = parseFloat(binding);
125
+ getBindingIdentifier() {
126
+ return "?";
88
127
  }
89
- // if not a number, see if it is a date - important to do in this order as any
90
- // integer will be considered a valid date
91
- else if (/^\d/.test(binding) && (0, dayjs_1.default)(binding).isValid()) {
92
- bindings[i] = (0, dayjs_1.default)(binding).toDate();
128
+ getStringConcat(parts) {
129
+ return `concat(${parts.join(", ")})`;
93
130
  }
94
- }
95
- return bindings;
96
- }
97
- class MySQLIntegration extends sql_1.default {
98
- constructor(config) {
99
- super(utils_1.SqlClient.MY_SQL);
100
- this.tables = {};
101
- this.schemaErrors = {};
102
- this.config = config;
103
- if (config.ssl && Object.keys(config.ssl).length === 0) {
104
- delete config.ssl;
131
+ connect() {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ this.client = yield mysql.createConnection(this.config);
134
+ });
105
135
  }
106
- // make sure this defaults to true
107
- if (config.rejectUnauthorized != null &&
108
- !config.rejectUnauthorized &&
109
- config.ssl) {
110
- config.ssl.rejectUnauthorized = config.rejectUnauthorized;
136
+ disconnect() {
137
+ return __awaiter(this, void 0, void 0, function* () {
138
+ yield this.client.end();
139
+ });
111
140
  }
112
- // @ts-ignore
113
- delete config.rejectUnauthorized;
114
- this.config = Object.assign(Object.assign({}, config), { typeCast: function (field, next) {
115
- if (field.type == "DATETIME" ||
116
- field.type === "DATE" ||
117
- field.type === "TIMESTAMP") {
118
- return field.string();
119
- }
120
- return next();
121
- } });
122
- }
123
- getBindingIdentifier() {
124
- return "?";
125
- }
126
- getStringConcat(parts) {
127
- return `concat(${parts.join(", ")})`;
128
- }
129
- connect() {
130
- return __awaiter(this, void 0, void 0, function* () {
131
- this.client = yield mysql.createConnection(this.config);
132
- });
133
- }
134
- disconnect() {
135
- return __awaiter(this, void 0, void 0, function* () {
136
- yield this.client.end();
137
- });
138
- }
139
- internalQuery(query, opts = {
140
- connect: true,
141
- disableCoercion: false,
142
- }) {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- try {
145
- if (opts === null || opts === void 0 ? void 0 : opts.connect) {
146
- yield this.connect();
141
+ internalQuery(query, opts = {
142
+ connect: true,
143
+ disableCoercion: false,
144
+ }) {
145
+ return __awaiter(this, void 0, void 0, function* () {
146
+ try {
147
+ if (opts === null || opts === void 0 ? void 0 : opts.connect) {
148
+ yield this.connect();
149
+ }
150
+ const baseBindings = query.bindings || [];
151
+ const bindings = (opts === null || opts === void 0 ? void 0 : opts.disableCoercion)
152
+ ? baseBindings
153
+ : bindingTypeCoerce(baseBindings);
154
+ // Node MySQL is callback based, so we must wrap our call in a promise
155
+ const response = yield this.client.query(query.sql, bindings);
156
+ return response[0];
147
157
  }
148
- const baseBindings = query.bindings || [];
149
- const bindings = (opts === null || opts === void 0 ? void 0 : opts.disableCoercion)
150
- ? baseBindings
151
- : bindingTypeCoerce(baseBindings);
152
- // Node MySQL is callback based, so we must wrap our call in a promise
153
- const response = yield this.client.query(query.sql, bindings);
154
- return response[0];
155
- }
156
- finally {
157
- if (opts === null || opts === void 0 ? void 0 : opts.connect) {
158
- yield this.disconnect();
158
+ finally {
159
+ if (opts === null || opts === void 0 ? void 0 : opts.connect) {
160
+ yield this.disconnect();
161
+ }
159
162
  }
160
- }
161
- });
162
- }
163
- buildSchema(datasourceId, entities) {
164
- return __awaiter(this, void 0, void 0, function* () {
165
- const tables = {};
166
- const database = this.config.database;
167
- yield this.connect();
168
- try {
169
- // get the tables first
170
- const tablesResp = yield this.internalQuery({ sql: "SHOW TABLES;" }, { connect: false });
171
- const tableNames = tablesResp.map((obj) => obj[`Tables_in_${database}`] ||
172
- obj[`Tables_in_${database.toLowerCase()}`]);
173
- for (let tableName of tableNames) {
174
- const primaryKeys = [];
175
- const schema = {};
176
- const descResp = yield this.internalQuery({ sql: `DESCRIBE \`${tableName}\`;` }, { connect: false });
177
- for (let column of descResp) {
178
- const columnName = column.Field;
179
- if (column.Key === "PRI" && primaryKeys.indexOf(column.Key) === -1) {
180
- primaryKeys.push(columnName);
163
+ });
164
+ }
165
+ buildSchema(datasourceId, entities) {
166
+ return __awaiter(this, void 0, void 0, function* () {
167
+ const tables = {};
168
+ const database = this.config.database;
169
+ yield this.connect();
170
+ try {
171
+ // get the tables first
172
+ const tablesResp = yield this.internalQuery({ sql: "SHOW TABLES;" }, { connect: false });
173
+ const tableNames = tablesResp.map((obj) => obj[`Tables_in_${database}`] ||
174
+ obj[`Tables_in_${database.toLowerCase()}`]);
175
+ for (let tableName of tableNames) {
176
+ const primaryKeys = [];
177
+ const schema = {};
178
+ const descResp = yield this.internalQuery({ sql: `DESCRIBE \`${tableName}\`;` }, { connect: false });
179
+ for (let column of descResp) {
180
+ const columnName = column.Field;
181
+ if (column.Key === "PRI" &&
182
+ primaryKeys.indexOf(column.Key) === -1) {
183
+ primaryKeys.push(columnName);
184
+ }
185
+ const constraints = {
186
+ presence: column.Null !== "YES",
187
+ };
188
+ const isAuto = typeof column.Extra === "string" &&
189
+ (column.Extra === "auto_increment" ||
190
+ column.Extra.toLowerCase().includes("generated"));
191
+ schema[columnName] = Object.assign(Object.assign({ name: columnName, autocolumn: isAuto, constraints }, (0, utils_1.convertSqlType)(column.Type)), { externalType: column.Type });
192
+ }
193
+ if (!tables[tableName]) {
194
+ tables[tableName] = {
195
+ _id: (0, utils_1.buildExternalTableId)(datasourceId, tableName),
196
+ primary: primaryKeys,
197
+ name: tableName,
198
+ schema,
199
+ };
181
200
  }
182
- const constraints = {
183
- presence: column.Null !== "YES",
184
- };
185
- const isAuto = typeof column.Extra === "string" &&
186
- (column.Extra === "auto_increment" ||
187
- column.Extra.toLowerCase().includes("generated"));
188
- schema[columnName] = Object.assign(Object.assign({ name: columnName, autocolumn: isAuto, constraints }, (0, utils_1.convertSqlType)(column.Type)), { externalType: column.Type });
189
- }
190
- if (!tables[tableName]) {
191
- tables[tableName] = {
192
- _id: (0, utils_1.buildExternalTableId)(datasourceId, tableName),
193
- primary: primaryKeys,
194
- name: tableName,
195
- schema,
196
- };
197
201
  }
198
202
  }
199
- }
200
- finally {
201
- yield this.disconnect();
202
- }
203
- const final = (0, utils_1.finaliseExternalTables)(tables, entities);
204
- this.tables = final.tables;
205
- this.schemaErrors = final.errors;
206
- });
207
- }
208
- create(query) {
209
- return __awaiter(this, void 0, void 0, function* () {
210
- const results = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
211
- return results.length ? results : [{ created: true }];
212
- });
213
- }
214
- read(query) {
215
- return __awaiter(this, void 0, void 0, function* () {
216
- return this.internalQuery((0, utils_1.getSqlQuery)(query));
217
- });
218
- }
219
- update(query) {
220
- return __awaiter(this, void 0, void 0, function* () {
221
- const results = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
222
- return results.length ? results : [{ updated: true }];
223
- });
224
- }
225
- delete(query) {
226
- return __awaiter(this, void 0, void 0, function* () {
227
- const results = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
228
- return results.length ? results : [{ deleted: true }];
229
- });
230
- }
231
- query(json) {
232
- return __awaiter(this, void 0, void 0, function* () {
233
- yield this.connect();
234
- try {
235
- const queryFn = (query) => this.internalQuery(query, { connect: false, disableCoercion: true });
236
- return yield this.queryWithReturning(json, queryFn);
237
- }
238
- finally {
239
- yield this.disconnect();
240
- }
241
- });
203
+ finally {
204
+ yield this.disconnect();
205
+ }
206
+ const final = (0, utils_1.finaliseExternalTables)(tables, entities);
207
+ this.tables = final.tables;
208
+ this.schemaErrors = final.errors;
209
+ });
210
+ }
211
+ create(query) {
212
+ return __awaiter(this, void 0, void 0, function* () {
213
+ const results = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
214
+ return results.length ? results : [{ created: true }];
215
+ });
216
+ }
217
+ read(query) {
218
+ return __awaiter(this, void 0, void 0, function* () {
219
+ return this.internalQuery((0, utils_1.getSqlQuery)(query));
220
+ });
221
+ }
222
+ update(query) {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ const results = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
225
+ return results.length ? results : [{ updated: true }];
226
+ });
227
+ }
228
+ delete(query) {
229
+ return __awaiter(this, void 0, void 0, function* () {
230
+ const results = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
231
+ return results.length ? results : [{ deleted: true }];
232
+ });
233
+ }
234
+ query(json) {
235
+ return __awaiter(this, void 0, void 0, function* () {
236
+ yield this.connect();
237
+ try {
238
+ const queryFn = (query) => this.internalQuery(query, { connect: false, disableCoercion: true });
239
+ return yield this.queryWithReturning(json, queryFn);
240
+ }
241
+ finally {
242
+ yield this.disconnect();
243
+ }
244
+ });
245
+ }
242
246
  }
243
- }
244
- exports.default = {
245
- schema: SCHEMA,
246
- integration: MySQLIntegration,
247
- };
247
+ module.exports = {
248
+ schema: SCHEMA,
249
+ integration: MySQLIntegration,
250
+ };
251
+ })(MySQLModule || (MySQLModule = {}));