@budibase/server 1.3.14 → 1.3.15-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.2884f3c4.js +995 -0
  3. package/builder/assets/{index.a70e216a.css → index.ecdac070.css} +2 -2
  4. package/builder/index.html +2 -4
  5. package/coverage/clover.xml +296 -254
  6. package/coverage/coverage-final.json +17 -17
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/component.js.html +82 -13
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +20 -20
  14. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/index.html +30 -30
  16. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  17. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  22. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/screen.js.html +207 -12
  32. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/bulkFormula.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/templates.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  45. package/coverage/lcov-report/api/index.html +1 -1
  46. package/coverage/lcov-report/api/index.js.html +12 -12
  47. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/index.html +1 -1
  58. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  71. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  72. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  74. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  75. package/coverage/lcov-report/automations/actions.js.html +1 -1
  76. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  77. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  78. package/coverage/lcov-report/automations/index.html +1 -1
  79. package/coverage/lcov-report/automations/index.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/index.html +1 -1
  87. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  106. package/coverage/lcov-report/constants/index.html +1 -1
  107. package/coverage/lcov-report/constants/index.js.html +1 -1
  108. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  109. package/coverage/lcov-report/constants/screens.js.html +1 -1
  110. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  111. package/coverage/lcov-report/db/index.html +18 -18
  112. package/coverage/lcov-report/db/index.js.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  114. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  117. package/coverage/lcov-report/db/newid.js.html +2 -2
  118. package/coverage/lcov-report/db/utils.js.html +56 -20
  119. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  120. package/coverage/lcov-report/events/index.html +1 -1
  121. package/coverage/lcov-report/events/index.js.html +1 -1
  122. package/coverage/lcov-report/events/utils.js.html +1 -1
  123. package/coverage/lcov-report/index.html +28 -28
  124. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  125. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  126. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  127. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  128. package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
  129. package/coverage/lcov-report/middleware/index.html +1 -1
  130. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  131. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  132. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  133. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  134. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  135. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  136. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  137. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  138. package/coverage/lcov-report/utilities/global.js.html +16 -16
  139. package/coverage/lcov-report/utilities/index.html +1 -1
  140. package/coverage/lcov-report/utilities/index.js.html +24 -24
  141. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  142. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  143. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  144. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  145. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  146. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  148. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  149. package/coverage/lcov-report/utilities/security.js.html +2 -2
  150. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  151. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  152. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  154. package/coverage/lcov-report/utilities/users.js.html +1 -1
  155. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  156. package/coverage/lcov.info +533 -445
  157. package/dist/api/controllers/application.js +5 -4
  158. package/dist/api/controllers/component.js +18 -1
  159. package/dist/api/controllers/datasource.js +4 -4
  160. package/dist/api/controllers/integration.js +4 -4
  161. package/dist/api/controllers/plugin/file.js +24 -0
  162. package/dist/api/controllers/plugin/github.js +69 -0
  163. package/dist/api/controllers/plugin/index.js +192 -0
  164. package/dist/api/controllers/plugin/npm.js +58 -0
  165. package/dist/api/controllers/plugin/uploaders.js +11 -0
  166. package/dist/api/controllers/plugin/url.js +24 -0
  167. package/dist/api/controllers/plugin/utils.js +26 -0
  168. package/dist/api/controllers/screen.js +52 -2
  169. package/dist/api/controllers/static/index.js +1 -0
  170. package/dist/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  171. package/dist/api/controllers/static/templates/preview.hbs +5 -1
  172. package/dist/api/routes/index.js +2 -0
  173. package/dist/api/routes/plugin.js +39 -0
  174. package/dist/app.js +11 -0
  175. package/dist/db/utils.js +10 -1
  176. package/dist/environment.js +1 -0
  177. package/dist/integrations/airtable.js +126 -129
  178. package/dist/integrations/arangodb.js +86 -89
  179. package/dist/integrations/base/query.js +2 -2
  180. package/dist/integrations/couchdb.js +80 -83
  181. package/dist/integrations/dynamodb.js +161 -164
  182. package/dist/integrations/elasticsearch.js +135 -138
  183. package/dist/integrations/firebase.js +154 -157
  184. package/dist/integrations/googlesheets.js +323 -327
  185. package/dist/integrations/index.js +93 -51
  186. package/dist/integrations/microsoftSqlServer.js +240 -243
  187. package/dist/integrations/mongodb.js +239 -242
  188. package/dist/integrations/mysql.js +215 -219
  189. package/dist/integrations/oracle.js +318 -322
  190. package/dist/integrations/postgres.js +262 -265
  191. package/dist/integrations/redis.js +134 -139
  192. package/dist/integrations/rest.js +289 -292
  193. package/dist/integrations/s3.js +61 -64
  194. package/dist/integrations/snowflake.js +83 -86
  195. package/dist/package.json +9 -6
  196. package/dist/threads/query.js +2 -2
  197. package/dist/tsconfig.build.tsbuildinfo +1 -1
  198. package/dist/utilities/fileSystem/index.js +110 -1
  199. package/dist/watch.js +77 -0
  200. package/dist/websocket.js +22 -0
  201. package/package.json +10 -7
  202. package/scripts/dev/manage.js +1 -0
  203. package/src/api/controllers/application.ts +1 -1
  204. package/src/api/controllers/component.js +25 -2
  205. package/src/api/controllers/datasource.js +4 -4
  206. package/src/api/controllers/integration.js +4 -4
  207. package/src/api/controllers/plugin/file.ts +15 -0
  208. package/src/api/controllers/plugin/github.ts +75 -0
  209. package/src/api/controllers/plugin/index.ts +206 -0
  210. package/src/api/controllers/plugin/npm.ts +56 -0
  211. package/src/api/controllers/plugin/uploaders.ts +4 -0
  212. package/src/api/controllers/plugin/url.ts +12 -0
  213. package/src/api/controllers/plugin/utils.ts +19 -0
  214. package/src/api/controllers/screen.js +66 -1
  215. package/src/api/controllers/static/index.ts +1 -0
  216. package/src/api/controllers/static/templates/BudibaseApp.svelte +10 -0
  217. package/src/api/controllers/static/templates/preview.hbs +5 -1
  218. package/src/api/routes/index.ts +2 -0
  219. package/src/api/routes/plugin.ts +14 -0
  220. package/src/api/routes/tests/query.spec.js +8 -25
  221. package/src/app.ts +14 -0
  222. package/src/db/utils.js +12 -0
  223. package/src/environment.js +1 -0
  224. package/src/integrations/airtable.ts +116 -118
  225. package/src/integrations/arangodb.ts +87 -89
  226. package/src/integrations/base/query.ts +2 -2
  227. package/src/integrations/couchdb.ts +83 -89
  228. package/src/integrations/dynamodb.ts +173 -175
  229. package/src/integrations/elasticsearch.ts +120 -122
  230. package/src/integrations/firebase.ts +157 -159
  231. package/src/integrations/googlesheets.ts +328 -338
  232. package/src/integrations/index.ts +59 -21
  233. package/src/integrations/microsoftSqlServer.ts +249 -251
  234. package/src/integrations/mongodb.ts +261 -258
  235. package/src/integrations/mysql.ts +229 -234
  236. package/src/integrations/oracle.ts +373 -380
  237. package/src/integrations/postgres.ts +264 -268
  238. package/src/integrations/redis.ts +128 -132
  239. package/src/integrations/rest.ts +324 -329
  240. package/src/integrations/s3.ts +68 -71
  241. package/src/integrations/snowflake.ts +80 -82
  242. package/src/integrations/tests/{airtable.spec.js → airtable.spec.ts} +21 -18
  243. package/src/integrations/tests/{arangodb.spec.js → arangodb.spec.ts} +12 -9
  244. package/src/integrations/tests/{couchdb.spec.js → couchdb.spec.ts} +33 -27
  245. package/src/integrations/tests/{dynamodb.spec.js → dynamodb.spec.ts} +45 -41
  246. package/src/integrations/tests/{elasticsearch.spec.js → elasticsearch.spec.ts} +22 -21
  247. package/src/integrations/tests/{firebase.spec.js → firebase.spec.ts} +33 -28
  248. package/src/integrations/tests/{microsoftSqlServer.spec.js → microsoftSqlServer.spec.ts} +12 -11
  249. package/src/integrations/tests/{mongo.spec.js → mongo.spec.ts} +46 -35
  250. package/src/integrations/tests/{mysql.spec.js → mysql.spec.ts} +17 -15
  251. package/src/integrations/tests/{oracle.spec.js → oracle.spec.ts} +19 -17
  252. package/src/integrations/tests/{postgres.spec.js → postgres.spec.ts} +19 -17
  253. package/src/integrations/tests/{redis.spec.js → redis.spec.ts} +27 -18
  254. package/src/integrations/tests/{rest.spec.js → rest.spec.ts} +22 -14
  255. package/src/integrations/tests/{s3.spec.js → s3.spec.ts} +10 -8
  256. package/src/integrations/tests/{sql.spec.js → sql.spec.ts} +228 -177
  257. package/src/module.d.ts +2 -0
  258. package/src/threads/query.ts +2 -2
  259. package/src/utilities/fileSystem/index.js +129 -0
  260. package/src/watch.ts +38 -0
  261. package/src/websocket.ts +26 -0
  262. package/builder/assets/index.d8428ac8.js +0 -876
  263. package/builder/assets/vendor.5e1fe644.css +0 -1
  264. package/builder/assets/vendor.67dbd8fa.js +0 -248
@@ -1,65 +1,107 @@
1
1
  "use strict";
2
- const postgres = require("./postgres");
3
- const dynamodb = require("./dynamodb");
4
- const mongodb = require("./mongodb");
5
- const elasticsearch = require("./elasticsearch");
6
- const couchdb = require("./couchdb");
7
- const sqlServer = require("./microsoftSqlServer");
8
- const s3 = require("./s3");
9
- const airtable = require("./airtable");
10
- const mysql = require("./mysql");
11
- const arangodb = require("./arangodb");
12
- const rest = require("./rest");
13
- const googlesheets = require("./googlesheets");
14
- const firebase = require("./firebase");
15
- const redis = require("./redis");
16
- const snowflake = require("./snowflake");
17
- const { SourceName } = require("@budibase/types");
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
+ const postgres_1 = __importDefault(require("./postgres"));
16
+ const dynamodb_1 = __importDefault(require("./dynamodb"));
17
+ const mongodb_1 = __importDefault(require("./mongodb"));
18
+ const elasticsearch_1 = __importDefault(require("./elasticsearch"));
19
+ const couchdb_1 = __importDefault(require("./couchdb"));
20
+ const microsoftSqlServer_1 = __importDefault(require("./microsoftSqlServer"));
21
+ const s3_1 = __importDefault(require("./s3"));
22
+ const airtable_1 = __importDefault(require("./airtable"));
23
+ const mysql_1 = __importDefault(require("./mysql"));
24
+ const arangodb_1 = __importDefault(require("./arangodb"));
25
+ const rest_1 = __importDefault(require("./rest"));
26
+ const googlesheets_1 = __importDefault(require("./googlesheets"));
27
+ const firebase_1 = __importDefault(require("./firebase"));
28
+ const redis_1 = __importDefault(require("./redis"));
29
+ const snowflake_1 = __importDefault(require("./snowflake"));
30
+ const plugin_1 = require("../api/controllers/plugin");
31
+ const types_1 = require("@budibase/types");
32
+ const fileSystem_1 = require("../utilities/fileSystem");
18
33
  const environment = require("../environment");
34
+ const { cloneDeep } = require("lodash");
19
35
  const DEFINITIONS = {
20
- [SourceName.POSTGRES]: postgres.schema,
21
- [SourceName.DYNAMODB]: dynamodb.schema,
22
- [SourceName.MONGODB]: mongodb.schema,
23
- [SourceName.ELASTICSEARCH]: elasticsearch.schema,
24
- [SourceName.COUCHDB]: couchdb.schema,
25
- [SourceName.SQL_SERVER]: sqlServer.schema,
26
- [SourceName.S3]: s3.schema,
27
- [SourceName.AIRTABLE]: airtable.schema,
28
- [SourceName.MYSQL]: mysql.schema,
29
- [SourceName.ARANGODB]: arangodb.schema,
30
- [SourceName.REST]: rest.schema,
31
- [SourceName.FIRESTORE]: firebase.schema,
32
- [SourceName.REDIS]: redis.schema,
33
- [SourceName.SNOWFLAKE]: snowflake.schema,
36
+ [types_1.SourceName.POSTGRES]: postgres_1.default.schema,
37
+ [types_1.SourceName.DYNAMODB]: dynamodb_1.default.schema,
38
+ [types_1.SourceName.MONGODB]: mongodb_1.default.schema,
39
+ [types_1.SourceName.ELASTICSEARCH]: elasticsearch_1.default.schema,
40
+ [types_1.SourceName.COUCHDB]: couchdb_1.default.schema,
41
+ [types_1.SourceName.SQL_SERVER]: microsoftSqlServer_1.default.schema,
42
+ [types_1.SourceName.S3]: s3_1.default.schema,
43
+ [types_1.SourceName.AIRTABLE]: airtable_1.default.schema,
44
+ [types_1.SourceName.MYSQL]: mysql_1.default.schema,
45
+ [types_1.SourceName.ARANGODB]: arangodb_1.default.schema,
46
+ [types_1.SourceName.REST]: rest_1.default.schema,
47
+ [types_1.SourceName.FIRESTORE]: firebase_1.default.schema,
48
+ [types_1.SourceName.REDIS]: redis_1.default.schema,
49
+ [types_1.SourceName.SNOWFLAKE]: snowflake_1.default.schema,
34
50
  };
35
51
  const INTEGRATIONS = {
36
- [SourceName.POSTGRES]: postgres.integration,
37
- [SourceName.DYNAMODB]: dynamodb.integration,
38
- [SourceName.MONGODB]: mongodb.integration,
39
- [SourceName.ELASTICSEARCH]: elasticsearch.integration,
40
- [SourceName.COUCHDB]: couchdb.integration,
41
- [SourceName.SQL_SERVER]: sqlServer.integration,
42
- [SourceName.S3]: s3.integration,
43
- [SourceName.AIRTABLE]: airtable.integration,
44
- [SourceName.MYSQL]: mysql.integration,
45
- [SourceName.ARANGODB]: arangodb.integration,
46
- [SourceName.REST]: rest.integration,
47
- [SourceName.FIRESTORE]: firebase.integration,
48
- [SourceName.GOOGLE_SHEETS]: googlesheets.integration,
49
- [SourceName.REDIS]: redis.integration,
50
- [SourceName.FIREBASE]: firebase.integration,
51
- [SourceName.SNOWFLAKE]: snowflake.integration,
52
+ [types_1.SourceName.POSTGRES]: postgres_1.default.integration,
53
+ [types_1.SourceName.DYNAMODB]: dynamodb_1.default.integration,
54
+ [types_1.SourceName.MONGODB]: mongodb_1.default.integration,
55
+ [types_1.SourceName.ELASTICSEARCH]: elasticsearch_1.default.integration,
56
+ [types_1.SourceName.COUCHDB]: couchdb_1.default.integration,
57
+ [types_1.SourceName.SQL_SERVER]: microsoftSqlServer_1.default.integration,
58
+ [types_1.SourceName.S3]: s3_1.default.integration,
59
+ [types_1.SourceName.AIRTABLE]: airtable_1.default.integration,
60
+ [types_1.SourceName.MYSQL]: mysql_1.default.integration,
61
+ [types_1.SourceName.ARANGODB]: arangodb_1.default.integration,
62
+ [types_1.SourceName.REST]: rest_1.default.integration,
63
+ [types_1.SourceName.FIRESTORE]: firebase_1.default.integration,
64
+ [types_1.SourceName.GOOGLE_SHEETS]: googlesheets_1.default.integration,
65
+ [types_1.SourceName.REDIS]: redis_1.default.integration,
66
+ [types_1.SourceName.FIRESTORE]: firebase_1.default.integration,
67
+ [types_1.SourceName.SNOWFLAKE]: snowflake_1.default.integration,
52
68
  };
53
69
  // optionally add oracle integration if the oracle binary can be installed
54
70
  if (process.arch && !process.arch.startsWith("arm")) {
55
71
  const oracle = require("./oracle");
56
- DEFINITIONS[SourceName.ORACLE] = oracle.schema;
57
- INTEGRATIONS[SourceName.ORACLE] = oracle.integration;
72
+ DEFINITIONS[types_1.SourceName.ORACLE] = oracle.schema;
73
+ INTEGRATIONS[types_1.SourceName.ORACLE] = oracle.integration;
58
74
  }
59
75
  if (environment.SELF_HOSTED) {
60
- DEFINITIONS[SourceName.GOOGLE_SHEETS] = googlesheets.schema;
76
+ DEFINITIONS[types_1.SourceName.GOOGLE_SHEETS] = googlesheets_1.default.schema;
61
77
  }
62
78
  module.exports = {
63
- definitions: DEFINITIONS,
64
- integrations: INTEGRATIONS,
79
+ getDefinitions: () => __awaiter(void 0, void 0, void 0, function* () {
80
+ const pluginSchemas = {};
81
+ if (environment.SELF_HOSTED) {
82
+ const plugins = yield (0, plugin_1.getPlugins)(types_1.PluginType.DATASOURCE);
83
+ // extract the actual schema from each custom
84
+ for (let plugin of plugins) {
85
+ const sourceId = plugin.name;
86
+ pluginSchemas[sourceId] = Object.assign(Object.assign({}, plugin.schema["schema"]), { custom: true });
87
+ }
88
+ }
89
+ return Object.assign(Object.assign({}, cloneDeep(DEFINITIONS)), pluginSchemas);
90
+ }),
91
+ getIntegration: (integration) => __awaiter(void 0, void 0, void 0, function* () {
92
+ var _a;
93
+ if (INTEGRATIONS[integration]) {
94
+ return INTEGRATIONS[integration];
95
+ }
96
+ if (environment.SELF_HOSTED) {
97
+ const plugins = yield (0, plugin_1.getPlugins)(types_1.PluginType.DATASOURCE);
98
+ for (let plugin of plugins) {
99
+ if (plugin.name === integration) {
100
+ // need to use commonJS require due to its dynamic runtime nature
101
+ return (0, fileSystem_1.getDatasourcePlugin)(plugin.name, plugin.jsUrl, (_a = plugin.schema) === null || _a === void 0 ? void 0 : _a.hash);
102
+ }
103
+ }
104
+ }
105
+ throw new Error("No datasource implementation found.");
106
+ }),
65
107
  };
@@ -15,254 +15,251 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  const types_1 = require("@budibase/types");
16
16
  const utils_1 = require("./utils");
17
17
  const sql_1 = __importDefault(require("./base/sql"));
18
- var MSSQLModule;
19
- (function (MSSQLModule) {
20
- const sqlServer = require("mssql");
21
- const DEFAULT_SCHEMA = "dbo";
22
- const SCHEMA = {
23
- docs: "https://github.com/tediousjs/node-mssql",
24
- plus: true,
25
- description: "Microsoft SQL Server is a relational database management system developed by Microsoft. ",
26
- friendlyName: "MS SQL Server",
27
- type: "Relational",
28
- datasource: {
29
- user: {
30
- type: types_1.DatasourceFieldType.STRING,
31
- required: true,
32
- default: "localhost",
33
- },
34
- password: {
35
- type: types_1.DatasourceFieldType.PASSWORD,
36
- required: true,
37
- },
38
- server: {
39
- type: types_1.DatasourceFieldType.STRING,
40
- default: "localhost",
41
- },
42
- port: {
43
- type: types_1.DatasourceFieldType.NUMBER,
44
- required: false,
45
- default: 1433,
46
- },
47
- database: {
48
- type: types_1.DatasourceFieldType.STRING,
49
- default: "root",
50
- },
51
- schema: {
52
- type: types_1.DatasourceFieldType.STRING,
53
- default: DEFAULT_SCHEMA,
54
- },
55
- encrypt: {
56
- type: types_1.DatasourceFieldType.BOOLEAN,
57
- default: true,
58
- },
18
+ const sqlServer = require("mssql");
19
+ const DEFAULT_SCHEMA = "dbo";
20
+ const SCHEMA = {
21
+ docs: "https://github.com/tediousjs/node-mssql",
22
+ plus: true,
23
+ description: "Microsoft SQL Server is a relational database management system developed by Microsoft. ",
24
+ friendlyName: "MS SQL Server",
25
+ type: "Relational",
26
+ datasource: {
27
+ user: {
28
+ type: types_1.DatasourceFieldType.STRING,
29
+ required: true,
30
+ default: "localhost",
59
31
  },
60
- query: {
61
- create: {
62
- type: types_1.QueryType.SQL,
63
- },
64
- read: {
65
- type: types_1.QueryType.SQL,
66
- },
67
- update: {
68
- type: types_1.QueryType.SQL,
69
- },
70
- delete: {
71
- type: types_1.QueryType.SQL,
72
- },
32
+ password: {
33
+ type: types_1.DatasourceFieldType.PASSWORD,
34
+ required: true,
73
35
  },
74
- };
75
- class SqlServerIntegration extends sql_1.default {
76
- constructor(config) {
77
- super(utils_1.SqlClient.MS_SQL);
78
- this.index = 0;
79
- this.tables = {};
80
- this.schemaErrors = {};
81
- this.MASTER_TABLES = [
82
- "spt_fallback_db",
83
- "spt_fallback_dev",
84
- "spt_fallback_usg",
85
- "spt_monitor",
86
- "MSreplication_options",
87
- ];
88
- this.TABLES_SQL = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'";
89
- this.config = config;
90
- const clientCfg = Object.assign(Object.assign({}, this.config), { options: {
91
- encrypt: this.config.encrypt,
92
- enableArithAbort: true,
93
- } });
94
- delete clientCfg.encrypt;
95
- if (!this.pool) {
96
- this.pool = new sqlServer.ConnectionPool(clientCfg);
97
- }
98
- }
99
- getBindingIdentifier() {
100
- return `@p${this.index++}`;
101
- }
102
- getStringConcat(parts) {
103
- return `concat(${parts.join(", ")})`;
104
- }
105
- connect() {
106
- return __awaiter(this, void 0, void 0, function* () {
107
- try {
108
- this.client = yield this.pool.connect();
109
- }
110
- catch (err) {
111
- // @ts-ignore
112
- throw new Error(err);
113
- }
114
- });
36
+ server: {
37
+ type: types_1.DatasourceFieldType.STRING,
38
+ default: "localhost",
39
+ },
40
+ port: {
41
+ type: types_1.DatasourceFieldType.NUMBER,
42
+ required: false,
43
+ default: 1433,
44
+ },
45
+ database: {
46
+ type: types_1.DatasourceFieldType.STRING,
47
+ default: "root",
48
+ },
49
+ schema: {
50
+ type: types_1.DatasourceFieldType.STRING,
51
+ default: DEFAULT_SCHEMA,
52
+ },
53
+ encrypt: {
54
+ type: types_1.DatasourceFieldType.BOOLEAN,
55
+ default: true,
56
+ },
57
+ },
58
+ query: {
59
+ create: {
60
+ type: types_1.QueryType.SQL,
61
+ },
62
+ read: {
63
+ type: types_1.QueryType.SQL,
64
+ },
65
+ update: {
66
+ type: types_1.QueryType.SQL,
67
+ },
68
+ delete: {
69
+ type: types_1.QueryType.SQL,
70
+ },
71
+ },
72
+ };
73
+ class SqlServerIntegration extends sql_1.default {
74
+ constructor(config) {
75
+ super(utils_1.SqlClient.MS_SQL);
76
+ this.index = 0;
77
+ this.tables = {};
78
+ this.schemaErrors = {};
79
+ this.MASTER_TABLES = [
80
+ "spt_fallback_db",
81
+ "spt_fallback_dev",
82
+ "spt_fallback_usg",
83
+ "spt_monitor",
84
+ "MSreplication_options",
85
+ ];
86
+ this.TABLES_SQL = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'";
87
+ this.config = config;
88
+ const clientCfg = Object.assign(Object.assign({}, this.config), { options: {
89
+ encrypt: this.config.encrypt,
90
+ enableArithAbort: true,
91
+ } });
92
+ delete clientCfg.encrypt;
93
+ if (!this.pool) {
94
+ this.pool = new sqlServer.ConnectionPool(clientCfg);
115
95
  }
116
- internalQuery(query, operation = undefined) {
117
- return __awaiter(this, void 0, void 0, function* () {
118
- const client = this.client;
119
- const request = client.request();
120
- this.index = 0;
121
- try {
122
- if (Array.isArray(query.bindings)) {
123
- let count = 0;
124
- for (let binding of query.bindings) {
125
- request.input(`p${count++}`, binding);
126
- }
96
+ }
97
+ getBindingIdentifier() {
98
+ return `@p${this.index++}`;
99
+ }
100
+ getStringConcat(parts) {
101
+ return `concat(${parts.join(", ")})`;
102
+ }
103
+ connect() {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ try {
106
+ this.client = yield this.pool.connect();
107
+ }
108
+ catch (err) {
109
+ // @ts-ignore
110
+ throw new Error(err);
111
+ }
112
+ });
113
+ }
114
+ internalQuery(query, operation = undefined) {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ const client = this.client;
117
+ const request = client.request();
118
+ this.index = 0;
119
+ try {
120
+ if (Array.isArray(query.bindings)) {
121
+ let count = 0;
122
+ for (let binding of query.bindings) {
123
+ request.input(`p${count++}`, binding);
127
124
  }
128
- // this is a hack to get the inserted ID back,
129
- // no way to do this with Knex nicely
130
- const sql = operation === types_1.Operation.CREATE
131
- ? `${query.sql}; SELECT SCOPE_IDENTITY() AS id;`
132
- : query.sql;
133
- return yield request.query(sql);
134
- }
135
- catch (err) {
136
- // @ts-ignore
137
- throw new Error(err);
138
- }
139
- });
140
- }
141
- getDefinitionSQL(tableName) {
142
- return `select *
143
- from INFORMATION_SCHEMA.COLUMNS
144
- where TABLE_NAME='${tableName}'`;
145
- }
146
- getConstraintsSQL(tableName) {
147
- return `SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
148
- INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KU
149
- ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
150
- AND TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME
151
- AND KU.table_name='${tableName}'
152
- ORDER BY
153
- KU.TABLE_NAME,
154
- KU.ORDINAL_POSITION;`;
155
- }
156
- getAutoColumnsSQL(tableName) {
157
- return `SELECT
158
- COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA+'.'+TABLE_NAME),COLUMN_NAME,'IsComputed')
159
- AS IS_COMPUTED,
160
- COLUMNPROPERTY(object_id(TABLE_SCHEMA+'.'+TABLE_NAME), COLUMN_NAME, 'IsIdentity')
161
- AS IS_IDENTITY,
162
- *
163
- FROM INFORMATION_SCHEMA.COLUMNS
164
- WHERE TABLE_NAME='${tableName}'`;
165
- }
166
- runSQL(sql) {
167
- return __awaiter(this, void 0, void 0, function* () {
168
- return (yield this.internalQuery((0, utils_1.getSqlQuery)(sql))).recordset;
169
- });
170
- }
171
- /**
172
- * Fetches the tables from the sql server database and assigns them to the datasource.
173
- * @param {*} datasourceId - datasourceId to fetch
174
- * @param entities - the tables that are to be built
175
- */
176
- buildSchema(datasourceId, entities) {
177
- return __awaiter(this, void 0, void 0, function* () {
178
- yield this.connect();
179
- let tableInfo = yield this.runSQL(this.TABLES_SQL);
180
- if (tableInfo == null || !Array.isArray(tableInfo)) {
181
- throw "Unable to get list of tables in database";
182
125
  }
183
- const schema = this.config.schema || DEFAULT_SCHEMA;
184
- const tableNames = tableInfo
185
- .filter((record) => record.TABLE_SCHEMA === schema)
186
- .map((record) => record.TABLE_NAME)
187
- .filter((name) => this.MASTER_TABLES.indexOf(name) === -1);
188
- const tables = {};
189
- for (let tableName of tableNames) {
190
- // get the column definition (type)
191
- const definition = yield this.runSQL(this.getDefinitionSQL(tableName));
192
- // find primary key constraints
193
- const constraints = yield this.runSQL(this.getConstraintsSQL(tableName));
194
- // find the computed and identity columns (auto columns)
195
- const columns = yield this.runSQL(this.getAutoColumnsSQL(tableName));
196
- const primaryKeys = constraints
197
- .filter((constraint) => constraint.CONSTRAINT_TYPE === "PRIMARY KEY")
198
- .map((constraint) => constraint.COLUMN_NAME);
199
- const autoColumns = columns
200
- .filter((col) => col.IS_COMPUTED || col.IS_IDENTITY)
201
- .map((col) => col.COLUMN_NAME);
202
- let schema = {};
203
- for (let def of definition) {
204
- const name = def.COLUMN_NAME;
205
- if (typeof name !== "string") {
206
- continue;
207
- }
208
- schema[name] = Object.assign(Object.assign({ autocolumn: !!autoColumns.find((col) => col === name), name: name }, (0, utils_1.convertSqlType)(def.DATA_TYPE)), { externalType: def.DATA_TYPE });
126
+ // this is a hack to get the inserted ID back,
127
+ // no way to do this with Knex nicely
128
+ const sql = operation === types_1.Operation.CREATE
129
+ ? `${query.sql}; SELECT SCOPE_IDENTITY() AS id;`
130
+ : query.sql;
131
+ return yield request.query(sql);
132
+ }
133
+ catch (err) {
134
+ // @ts-ignore
135
+ throw new Error(err);
136
+ }
137
+ });
138
+ }
139
+ getDefinitionSQL(tableName) {
140
+ return `select *
141
+ from INFORMATION_SCHEMA.COLUMNS
142
+ where TABLE_NAME='${tableName}'`;
143
+ }
144
+ getConstraintsSQL(tableName) {
145
+ return `SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC
146
+ INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KU
147
+ ON TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
148
+ AND TC.CONSTRAINT_NAME = KU.CONSTRAINT_NAME
149
+ AND KU.table_name='${tableName}'
150
+ ORDER BY
151
+ KU.TABLE_NAME,
152
+ KU.ORDINAL_POSITION;`;
153
+ }
154
+ getAutoColumnsSQL(tableName) {
155
+ return `SELECT
156
+ COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA+'.'+TABLE_NAME),COLUMN_NAME,'IsComputed')
157
+ AS IS_COMPUTED,
158
+ COLUMNPROPERTY(object_id(TABLE_SCHEMA+'.'+TABLE_NAME), COLUMN_NAME, 'IsIdentity')
159
+ AS IS_IDENTITY,
160
+ *
161
+ FROM INFORMATION_SCHEMA.COLUMNS
162
+ WHERE TABLE_NAME='${tableName}'`;
163
+ }
164
+ runSQL(sql) {
165
+ return __awaiter(this, void 0, void 0, function* () {
166
+ return (yield this.internalQuery((0, utils_1.getSqlQuery)(sql))).recordset;
167
+ });
168
+ }
169
+ /**
170
+ * Fetches the tables from the sql server database and assigns them to the datasource.
171
+ * @param {*} datasourceId - datasourceId to fetch
172
+ * @param entities - the tables that are to be built
173
+ */
174
+ buildSchema(datasourceId, entities) {
175
+ return __awaiter(this, void 0, void 0, function* () {
176
+ yield this.connect();
177
+ let tableInfo = yield this.runSQL(this.TABLES_SQL);
178
+ if (tableInfo == null || !Array.isArray(tableInfo)) {
179
+ throw "Unable to get list of tables in database";
180
+ }
181
+ const schema = this.config.schema || DEFAULT_SCHEMA;
182
+ const tableNames = tableInfo
183
+ .filter((record) => record.TABLE_SCHEMA === schema)
184
+ .map((record) => record.TABLE_NAME)
185
+ .filter((name) => this.MASTER_TABLES.indexOf(name) === -1);
186
+ const tables = {};
187
+ for (let tableName of tableNames) {
188
+ // get the column definition (type)
189
+ const definition = yield this.runSQL(this.getDefinitionSQL(tableName));
190
+ // find primary key constraints
191
+ const constraints = yield this.runSQL(this.getConstraintsSQL(tableName));
192
+ // find the computed and identity columns (auto columns)
193
+ const columns = yield this.runSQL(this.getAutoColumnsSQL(tableName));
194
+ const primaryKeys = constraints
195
+ .filter((constraint) => constraint.CONSTRAINT_TYPE === "PRIMARY KEY")
196
+ .map((constraint) => constraint.COLUMN_NAME);
197
+ const autoColumns = columns
198
+ .filter((col) => col.IS_COMPUTED || col.IS_IDENTITY)
199
+ .map((col) => col.COLUMN_NAME);
200
+ let schema = {};
201
+ for (let def of definition) {
202
+ const name = def.COLUMN_NAME;
203
+ if (typeof name !== "string") {
204
+ continue;
209
205
  }
210
- tables[tableName] = {
211
- _id: (0, utils_1.buildExternalTableId)(datasourceId, tableName),
212
- primary: primaryKeys,
213
- name: tableName,
214
- schema,
215
- };
206
+ schema[name] = Object.assign(Object.assign({ autocolumn: !!autoColumns.find((col) => col === name), name: name }, (0, utils_1.convertSqlType)(def.DATA_TYPE)), { externalType: def.DATA_TYPE });
216
207
  }
217
- const final = (0, utils_1.finaliseExternalTables)(tables, entities);
218
- this.tables = final.tables;
219
- this.schemaErrors = final.errors;
220
- });
221
- }
222
- read(query) {
223
- return __awaiter(this, void 0, void 0, function* () {
224
- yield this.connect();
225
- const response = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
226
- return response.recordset;
227
- });
228
- }
229
- create(query) {
230
- return __awaiter(this, void 0, void 0, function* () {
231
- yield this.connect();
232
- const response = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
233
- return response.recordset || [{ created: true }];
234
- });
235
- }
236
- update(query) {
237
- return __awaiter(this, void 0, void 0, function* () {
238
- yield this.connect();
239
- const response = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
240
- return response.recordset || [{ updated: true }];
241
- });
242
- }
243
- delete(query) {
244
- return __awaiter(this, void 0, void 0, function* () {
245
- yield this.connect();
246
- const response = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
247
- return response.recordset || [{ deleted: true }];
248
- });
249
- }
250
- query(json) {
251
- return __awaiter(this, void 0, void 0, function* () {
252
- const schema = this.config.schema;
253
- yield this.connect();
254
- if (schema && schema !== DEFAULT_SCHEMA && (json === null || json === void 0 ? void 0 : json.endpoint)) {
255
- json.endpoint.schema = schema;
256
- }
257
- const operation = this._operation(json);
258
- const queryFn = (query, op) => this.internalQuery(query, op);
259
- const processFn = (result) => result.recordset ? result.recordset : [{ [operation]: true }];
260
- return this.queryWithReturning(json, queryFn, processFn);
261
- });
262
- }
208
+ tables[tableName] = {
209
+ _id: (0, utils_1.buildExternalTableId)(datasourceId, tableName),
210
+ primary: primaryKeys,
211
+ name: tableName,
212
+ schema,
213
+ };
214
+ }
215
+ const final = (0, utils_1.finaliseExternalTables)(tables, entities);
216
+ this.tables = final.tables;
217
+ this.schemaErrors = final.errors;
218
+ });
219
+ }
220
+ read(query) {
221
+ return __awaiter(this, void 0, void 0, function* () {
222
+ yield this.connect();
223
+ const response = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
224
+ return response.recordset;
225
+ });
263
226
  }
264
- module.exports = {
265
- schema: SCHEMA,
266
- integration: SqlServerIntegration,
267
- };
268
- })(MSSQLModule || (MSSQLModule = {}));
227
+ create(query) {
228
+ return __awaiter(this, void 0, void 0, function* () {
229
+ yield this.connect();
230
+ const response = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
231
+ return response.recordset || [{ created: true }];
232
+ });
233
+ }
234
+ update(query) {
235
+ return __awaiter(this, void 0, void 0, function* () {
236
+ yield this.connect();
237
+ const response = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
238
+ return response.recordset || [{ updated: true }];
239
+ });
240
+ }
241
+ delete(query) {
242
+ return __awaiter(this, void 0, void 0, function* () {
243
+ yield this.connect();
244
+ const response = yield this.internalQuery((0, utils_1.getSqlQuery)(query));
245
+ return response.recordset || [{ deleted: true }];
246
+ });
247
+ }
248
+ query(json) {
249
+ return __awaiter(this, void 0, void 0, function* () {
250
+ const schema = this.config.schema;
251
+ yield this.connect();
252
+ if (schema && schema !== DEFAULT_SCHEMA && (json === null || json === void 0 ? void 0 : json.endpoint)) {
253
+ json.endpoint.schema = schema;
254
+ }
255
+ const operation = this._operation(json);
256
+ const queryFn = (query, op) => this.internalQuery(query, op);
257
+ const processFn = (result) => result.recordset ? result.recordset : [{ [operation]: true }];
258
+ return this.queryWithReturning(json, queryFn, processFn);
259
+ });
260
+ }
261
+ }
262
+ exports.default = {
263
+ schema: SCHEMA,
264
+ integration: SqlServerIntegration,
265
+ };