@budibase/server 1.3.19-alpha.1 → 1.3.19

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 (302) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.9ce4f8c5.css +6 -0
  3. package/builder/assets/index.a1f7532b.js +876 -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 +388 -441
  8. package/coverage/coverage-final.json +20 -20
  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 +5 -5
  74. package/coverage/lcov-report/api/routes/utils/validators.js.html +6 -9
  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 +37 -37
  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 +1 -1
  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 +1 -1
  158. package/coverage/lcov.info +667 -780
  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/tables.js +1 -1
  174. package/dist/api/routes/table.js +1 -1
  175. package/dist/api/routes/utils/validators.js +1 -2
  176. package/dist/app.js +0 -11
  177. package/dist/db/utils.js +1 -10
  178. package/dist/environment.js +0 -1
  179. package/dist/integrations/airtable.js +129 -126
  180. package/dist/integrations/arangodb.js +89 -86
  181. package/dist/integrations/base/query.js +2 -2
  182. package/dist/integrations/base/sqlTable.js +1 -3
  183. package/dist/integrations/couchdb.js +83 -80
  184. package/dist/integrations/dynamodb.js +164 -161
  185. package/dist/integrations/elasticsearch.js +138 -135
  186. package/dist/integrations/firebase.js +157 -154
  187. package/dist/integrations/googlesheets.js +327 -323
  188. package/dist/integrations/index.js +51 -99
  189. package/dist/integrations/microsoftSqlServer.js +243 -240
  190. package/dist/integrations/mongodb.js +242 -239
  191. package/dist/integrations/mysql.js +219 -215
  192. package/dist/integrations/oracle.js +322 -318
  193. package/dist/integrations/postgres.js +265 -262
  194. package/dist/integrations/redis.js +139 -134
  195. package/dist/integrations/rest.js +292 -289
  196. package/dist/integrations/s3.js +64 -61
  197. package/dist/integrations/snowflake.js +86 -83
  198. package/dist/middleware/currentapp.js +0 -2
  199. package/dist/migrations/functions/backfill/global.js +3 -0
  200. package/dist/migrations/functions/developerQuota.js +49 -0
  201. package/dist/{api/routes/plugin.js → migrations/functions/publishedAppsQuota.js} +21 -13
  202. package/dist/{api/controllers/plugin/url.js → migrations/functions/usageQuotas/syncDevelopers.js} +13 -13
  203. package/dist/{api/controllers/plugin/file.js → migrations/functions/usageQuotas/syncPublishedApps.js} +15 -13
  204. package/dist/migrations/index.js +10 -0
  205. package/dist/package.json +6 -9
  206. package/dist/tests/utilities/TestConfiguration.js +1 -1
  207. package/dist/threads/query.js +2 -2
  208. package/dist/tsconfig.build.tsbuildinfo +1 -1
  209. package/dist/utilities/fileSystem/index.js +1 -110
  210. package/package.json +7 -10
  211. package/scripts/dev/manage.js +0 -1
  212. package/scripts/localdomain.js +1 -3
  213. package/specs/openapi.json +3 -3
  214. package/specs/openapi.yaml +3 -3
  215. package/specs/resources/query.js +1 -1
  216. package/src/api/controllers/application.ts +2 -1
  217. package/src/api/controllers/auth.js +0 -11
  218. package/src/api/controllers/component.js +2 -21
  219. package/src/api/controllers/datasource.js +8 -21
  220. package/src/api/controllers/deploy/index.ts +6 -1
  221. package/src/api/controllers/integration.js +4 -4
  222. package/src/api/controllers/row/external.js +1 -1
  223. package/src/api/controllers/screen.js +1 -66
  224. package/src/api/controllers/static/index.ts +1 -1
  225. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -10
  226. package/src/api/controllers/static/templates/preview.hbs +1 -5
  227. package/src/api/index.js +1 -1
  228. package/src/api/routes/application.ts +2 -13
  229. package/src/api/routes/index.ts +0 -2
  230. package/src/api/routes/public/tables.ts +1 -1
  231. package/src/api/routes/table.js +1 -1
  232. package/src/api/routes/tests/query.spec.js +25 -8
  233. package/src/api/routes/tests/user.spec.js +2 -0
  234. package/src/api/routes/utils/validators.js +1 -2
  235. package/src/app.ts +0 -14
  236. package/src/db/utils.js +0 -12
  237. package/src/definitions/openapi.ts +3 -3
  238. package/src/environment.js +0 -1
  239. package/src/integrations/airtable.ts +118 -116
  240. package/src/integrations/arangodb.ts +89 -87
  241. package/src/integrations/base/query.ts +2 -2
  242. package/src/integrations/base/sqlTable.ts +1 -3
  243. package/src/integrations/couchdb.ts +89 -83
  244. package/src/integrations/dynamodb.ts +175 -173
  245. package/src/integrations/elasticsearch.ts +122 -120
  246. package/src/integrations/firebase.ts +159 -157
  247. package/src/integrations/googlesheets.ts +338 -328
  248. package/src/integrations/index.ts +21 -64
  249. package/src/integrations/microsoftSqlServer.ts +251 -249
  250. package/src/integrations/mongodb.ts +258 -261
  251. package/src/integrations/mysql.ts +234 -229
  252. package/src/integrations/oracle.ts +380 -373
  253. package/src/integrations/postgres.ts +268 -264
  254. package/src/integrations/redis.ts +132 -128
  255. package/src/integrations/rest.ts +329 -324
  256. package/src/integrations/s3.ts +71 -68
  257. package/src/integrations/snowflake.ts +82 -80
  258. package/src/integrations/tests/{airtable.spec.ts → airtable.spec.js} +18 -21
  259. package/src/integrations/tests/{arangodb.spec.ts → arangodb.spec.js} +9 -12
  260. package/src/integrations/tests/{couchdb.spec.ts → couchdb.spec.js} +27 -33
  261. package/src/integrations/tests/{dynamodb.spec.ts → dynamodb.spec.js} +41 -45
  262. package/src/integrations/tests/{elasticsearch.spec.ts → elasticsearch.spec.js} +21 -22
  263. package/src/integrations/tests/{firebase.spec.ts → firebase.spec.js} +28 -33
  264. package/src/integrations/tests/{microsoftSqlServer.spec.ts → microsoftSqlServer.spec.js} +11 -12
  265. package/src/integrations/tests/{mongo.spec.ts → mongo.spec.js} +35 -46
  266. package/src/integrations/tests/{mysql.spec.ts → mysql.spec.js} +15 -17
  267. package/src/integrations/tests/{oracle.spec.ts → oracle.spec.js} +17 -19
  268. package/src/integrations/tests/{postgres.spec.ts → postgres.spec.js} +17 -19
  269. package/src/integrations/tests/{redis.spec.ts → redis.spec.js} +18 -27
  270. package/src/integrations/tests/{rest.spec.ts → rest.spec.js} +14 -22
  271. package/src/integrations/tests/{s3.spec.ts → s3.spec.js} +8 -10
  272. package/src/integrations/tests/{sql.spec.ts → sql.spec.js} +177 -228
  273. package/src/middleware/currentapp.js +0 -2
  274. package/src/migrations/functions/backfill/global.ts +3 -0
  275. package/src/migrations/functions/developerQuota.ts +15 -0
  276. package/src/migrations/functions/publishedAppsQuota.ts +13 -0
  277. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +19 -0
  278. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +21 -0
  279. package/src/migrations/index.ts +16 -0
  280. package/src/module.d.ts +0 -2
  281. package/src/tests/utilities/TestConfiguration.js +1 -1
  282. package/src/threads/query.ts +2 -2
  283. package/src/utilities/fileSystem/index.js +0 -129
  284. package/builder/assets/index.1709d1b3.js +0 -1005
  285. package/builder/assets/index.8f621053.css +0 -6
  286. package/dist/api/controllers/plugin/github.js +0 -69
  287. package/dist/api/controllers/plugin/index.js +0 -200
  288. package/dist/api/controllers/plugin/npm.js +0 -58
  289. package/dist/api/controllers/plugin/uploaders.js +0 -11
  290. package/dist/api/controllers/plugin/utils.js +0 -26
  291. package/dist/watch.js +0 -77
  292. package/dist/websocket.js +0 -22
  293. package/src/api/controllers/plugin/file.ts +0 -15
  294. package/src/api/controllers/plugin/github.ts +0 -75
  295. package/src/api/controllers/plugin/index.ts +0 -215
  296. package/src/api/controllers/plugin/npm.ts +0 -56
  297. package/src/api/controllers/plugin/uploaders.ts +0 -4
  298. package/src/api/controllers/plugin/url.ts +0 -12
  299. package/src/api/controllers/plugin/utils.ts +0 -19
  300. package/src/api/routes/plugin.ts +0 -14
  301. package/src/watch.ts +0 -38
  302. 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 = {}));