@budibase/server 0.9.184 → 0.9.185-alpha.11
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.
- package/Dockerfile +1 -1
- package/__mocks__/mssql.ts +1 -1
- package/__mocks__/pg.ts +3 -0
- package/builder/assets/bb-space-man.5be51a45.svg +290 -0
- package/builder/assets/index.053c6f7a.js +1321 -0
- package/builder/assets/index.4a7c5636.css +1 -0
- package/builder/assets/vendor.470042a4.js +152 -0
- package/builder/assets/vendor.5e1fe644.css +1 -0
- package/builder/index.html +4 -4
- package/coverage/clover.xml +1357 -959
- package/coverage/coverage-final.json +91 -87
- package/coverage/lcov-report/api/controllers/analytics.js.html +2 -2
- package/coverage/lcov-report/api/controllers/apikeys.js.html +2 -2
- package/coverage/lcov-report/api/controllers/application.js.html +65 -14
- package/coverage/lcov-report/api/controllers/auth.js.html +19 -10
- package/coverage/lcov-report/api/controllers/automation.js.html +3 -3
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +4 -4
- package/coverage/lcov-report/api/controllers/datasource.js.html +147 -27
- package/coverage/lcov-report/api/controllers/dev.js.html +16 -7
- package/coverage/lcov-report/api/controllers/hosting.js.html +10 -10
- package/coverage/lcov-report/api/controllers/index.html +90 -90
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +3 -3
- package/coverage/lcov-report/api/controllers/metadata.js.html +3 -3
- package/coverage/lcov-report/api/controllers/permission.js.html +3 -3
- package/coverage/lcov-report/api/controllers/query.js.html +53 -209
- package/coverage/lcov-report/api/controllers/role.js.html +9 -9
- package/coverage/lcov-report/api/controllers/routing.js.html +3 -3
- package/coverage/lcov-report/api/controllers/row/external.js.html +12 -6
- package/coverage/lcov-report/api/controllers/row/index.html +26 -26
- package/coverage/lcov-report/api/controllers/row/index.js.html +2 -2
- package/coverage/lcov-report/api/controllers/row/internal.js.html +9 -9
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +2 -2
- package/coverage/lcov-report/api/controllers/row/utils.js.html +21 -30
- package/coverage/lcov-report/api/controllers/screen.js.html +2 -2
- package/coverage/lcov-report/api/controllers/script.js.html +3 -3
- package/coverage/lcov-report/api/controllers/table/external.js.html +980 -0
- package/coverage/lcov-report/api/controllers/table/index.html +56 -26
- package/coverage/lcov-report/api/controllers/table/index.js.html +80 -350
- package/coverage/lcov-report/api/controllers/table/internal.js.html +545 -0
- package/coverage/lcov-report/api/controllers/table/utils.js.html +172 -49
- package/coverage/lcov-report/api/controllers/templates.js.html +4 -4
- package/coverage/lcov-report/api/controllers/user.js.html +390 -33
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +9 -9
- package/coverage/lcov-report/api/controllers/view/index.js.html +5 -5
- package/coverage/lcov-report/api/controllers/view/utils.js.html +11 -11
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +3 -3
- package/coverage/lcov-report/api/controllers/webhook.js.html +4 -4
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +2 -2
- package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +4 -4
- package/coverage/lcov-report/api/routes/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +5 -2
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +2 -2
- package/coverage/lcov-report/api/routes/table.js.html +35 -2
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +17 -2
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +2 -2
- package/coverage/lcov-report/automations/automationUtils.js.html +3 -3
- package/coverage/lcov-report/automations/bullboard.js.html +71 -20
- package/coverage/lcov-report/automations/index.html +33 -48
- package/coverage/lcov-report/automations/index.js.html +2 -2
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +3 -3
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +3 -3
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +14 -14
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +3 -3
- package/coverage/lcov-report/automations/steps/queryRows.js.html +3 -3
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/utils.js.html +7 -7
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
- package/coverage/lcov-report/automations/triggers.js.html +22 -10
- package/coverage/lcov-report/automations/utils.js.html +42 -12
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +49 -4
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/client.js.html +2 -2
- package/coverage/lcov-report/db/inMemoryView.js.html +2 -2
- package/coverage/lcov-report/db/index.html +2 -2
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +6 -6
- package/coverage/lcov-report/db/linkedRows/index.html +10 -10
- package/coverage/lcov-report/db/linkedRows/index.js.html +5 -5
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +6 -6
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +1 -1
- package/coverage/lcov-report/events/AutomationEmitter.js.html +6 -6
- package/coverage/lcov-report/events/index.html +6 -6
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +5 -5
- package/coverage/lcov-report/index.html +98 -83
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +2 -2
- package/coverage/lcov-report/middleware/authorized.js.html +11 -8
- package/coverage/lcov-report/middleware/builder.js.html +16 -7
- package/coverage/lcov-report/middleware/currentapp.js.html +6 -6
- package/coverage/lcov-report/middleware/index.html +23 -23
- package/coverage/lcov-report/middleware/joi-validator.js.html +2 -2
- package/coverage/lcov-report/middleware/resourceId.js.html +18 -18
- package/coverage/lcov-report/middleware/selfhost.js.html +2 -2
- package/coverage/lcov-report/middleware/usageQuota.js.html +4 -4
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/{automations/thread.js.html → threads/automation.js.html} +83 -32
- package/coverage/lcov-report/threads/index.html +141 -0
- package/coverage/lcov-report/threads/index.js.html +260 -0
- package/coverage/lcov-report/threads/query.js.html +269 -0
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +144 -15
- package/coverage/lcov-report/utilities/global.js.html +26 -11
- package/coverage/lcov-report/utilities/index.html +49 -49
- package/coverage/lcov-report/utilities/index.js.html +65 -17
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +30 -9
- package/coverage/lcov-report/utilities/queue/index.html +14 -14
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +4 -4
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +2 -2
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +3 -3
- package/coverage/lcov-report/utilities/scriptRunner.js.html +16 -7
- package/coverage/lcov-report/utilities/security.js.html +3 -3
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +5 -5
- package/coverage/lcov.info +2301 -1599
- package/dist/api/controllers/application.js +16 -2
- package/dist/api/controllers/auth.js +3 -3
- package/dist/api/controllers/datasource.js +47 -16
- package/dist/api/controllers/deploy/index.js +2 -0
- package/dist/api/controllers/dev.js +4 -1
- package/dist/api/controllers/query.js +30 -58
- package/dist/api/controllers/row/ExternalRequest.js +37 -14
- package/dist/api/controllers/row/external.js +1 -0
- package/dist/api/controllers/row/utils.js +6 -12
- package/dist/api/controllers/static/index.js +1 -1
- package/dist/api/controllers/table/external.js +242 -0
- package/dist/api/controllers/table/index.js +49 -123
- package/dist/api/controllers/table/internal.js +150 -0
- package/dist/api/controllers/table/utils.js +62 -28
- package/dist/api/controllers/user.js +123 -11
- package/dist/api/routes/query.js +1 -1
- package/dist/api/routes/table.js +7 -1
- package/dist/api/routes/user.js +2 -1
- package/dist/app.js +2 -11
- package/dist/automations/bullboard.js +37 -10
- package/dist/automations/triggers.js +7 -3
- package/dist/automations/utils.js +11 -2
- package/dist/constants/index.js +13 -0
- package/dist/definitions/datasource.js +4 -0
- package/dist/integrations/base/IntegrationBase.js +2 -0
- package/dist/integrations/base/datasourcePlus.js +2 -0
- package/dist/integrations/base/sql.js +334 -180
- package/dist/integrations/base/sqlTable.js +143 -0
- package/dist/integrations/base/utils.js +30 -0
- package/dist/integrations/microsoftSqlServer.js +117 -9
- package/dist/integrations/mysql.js +14 -84
- package/dist/integrations/postgres.js +35 -28
- package/dist/integrations/utils.js +56 -9
- package/dist/middleware/authorized.js +2 -1
- package/dist/middleware/builder.js +4 -1
- package/dist/package.json +7 -6
- package/dist/tests/utilities/TestConfiguration.js +2 -1
- package/dist/{automations/thread.js → threads/automation.js} +23 -7
- package/dist/threads/index.js +58 -0
- package/dist/threads/query.js +61 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/csvParser.js +46 -5
- package/dist/utilities/global.js +6 -2
- package/dist/utilities/index.js +18 -2
- package/dist/utilities/queue/inMemoryQueue.js +8 -0
- package/dist/utilities/scriptRunner.js +4 -1
- package/package.json +8 -7
- package/scripts/integrations/mssql/data/Dockerfile +9 -0
- package/scripts/integrations/mssql/data/entrypoint.sh +24 -0
- package/scripts/integrations/mssql/data/setup.sql +54 -0
- package/scripts/integrations/mssql/docker-compose.yaml +12 -0
- package/scripts/integrations/mssql/reset.sh +3 -0
- package/scripts/likeCypress.ts +33 -0
- package/src/api/controllers/application.js +19 -2
- package/src/api/controllers/auth.js +3 -0
- package/src/api/controllers/datasource.js +56 -16
- package/src/api/controllers/deploy/index.js +2 -0
- package/src/api/controllers/dev.js +4 -1
- package/src/api/controllers/query.js +29 -81
- package/src/api/controllers/row/ExternalRequest.ts +47 -16
- package/src/api/controllers/row/external.js +2 -0
- package/src/api/controllers/row/utils.js +8 -11
- package/src/api/controllers/static/index.js +1 -1
- package/src/api/controllers/table/external.js +300 -0
- package/src/api/controllers/table/index.js +47 -137
- package/src/api/controllers/table/internal.js +155 -0
- package/src/api/controllers/table/utils.js +74 -33
- package/src/api/controllers/user.js +132 -13
- package/src/api/routes/query.js +1 -0
- package/src/api/routes/table.js +11 -0
- package/src/api/routes/tests/datasource.spec.js +2 -2
- package/src/api/routes/tests/misc.spec.js +5 -1
- package/src/api/routes/tests/query.spec.js +0 -1
- package/src/api/routes/user.js +5 -0
- package/src/app.ts +2 -10
- package/src/automations/bullboard.js +28 -11
- package/src/automations/tests/automation.spec.js +3 -4
- package/src/automations/triggers.js +7 -3
- package/src/automations/utils.js +12 -2
- package/src/constants/index.js +15 -0
- package/src/definitions/common.ts +7 -1
- package/src/definitions/datasource.ts +9 -3
- package/src/integrations/airtable.ts +2 -1
- package/src/integrations/arangodb.ts +2 -1
- package/src/integrations/base/IntegrationBase.ts +6 -0
- package/src/integrations/base/datasourcePlus.ts +9 -0
- package/src/integrations/base/sql.ts +359 -222
- package/src/integrations/base/sqlTable.ts +180 -0
- package/src/integrations/base/utils.ts +22 -0
- package/src/integrations/couchdb.ts +2 -1
- package/src/integrations/dynamodb.ts +2 -1
- package/src/integrations/elasticsearch.ts +2 -1
- package/src/integrations/microsoftSqlServer.ts +145 -13
- package/src/integrations/mongodb.ts +2 -1
- package/src/integrations/mysql.ts +20 -94
- package/src/integrations/postgres.ts +45 -35
- package/src/integrations/rest.ts +2 -1
- package/src/integrations/s3.ts +2 -1
- package/src/integrations/tests/microsoftSqlServer.spec.js +22 -15
- package/src/integrations/tests/postgres.spec.js +4 -0
- package/src/integrations/utils.ts +60 -8
- package/src/middleware/authorized.js +2 -1
- package/src/middleware/builder.js +4 -1
- package/src/tests/utilities/TestConfiguration.js +2 -1
- package/src/{automations/thread.js → threads/automation.js} +24 -7
- package/src/threads/index.js +60 -0
- package/src/threads/query.js +63 -0
- package/src/utilities/csvParser.js +48 -5
- package/src/utilities/global.js +7 -2
- package/src/utilities/index.js +18 -2
- package/src/utilities/queue/inMemoryQueue.js +7 -0
- package/src/utilities/scriptRunner.js +4 -1
- package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -6
- package/src/utilities/tests/csvParser.spec.js +3 -0
- package/tsconfig.json +1 -1
- package/builder/assets/index.34964222.js +0 -201
- package/builder/assets/index.7469e1e4.css +0 -29
- package/builder/assets/vendor.278a305c.js +0 -9
- package/builder/assets/vendor.d75d5eb7.css +0 -1
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">37.37% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>37/99</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/31</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">35.71% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>5/
|
|
42
|
+
<span class='fraction'>5/14</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">37.75% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>37/98</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
56
|
</p>
|
|
57
57
|
</div>
|
|
58
|
-
<div class='status-line
|
|
58
|
+
<div class='status-line low'></div>
|
|
59
59
|
<pre><table class="coverage">
|
|
60
60
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
61
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -135,7 +135,126 @@
|
|
|
135
135
|
<a name='L76'></a><a href='#L76'>76</a>
|
|
136
136
|
<a name='L77'></a><a href='#L77'>77</a>
|
|
137
137
|
<a name='L78'></a><a href='#L78'>78</a>
|
|
138
|
-
<a name='L79'></a><a href='#L79'>79</a
|
|
138
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
139
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
140
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
141
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
142
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
143
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
144
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
145
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
146
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
147
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
148
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
149
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
150
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
151
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
152
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
153
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
154
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
155
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
156
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
157
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
158
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
159
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
160
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
161
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
162
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
163
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
164
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
165
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
166
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
167
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
168
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
169
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
170
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
171
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
172
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
173
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
174
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
175
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
176
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
177
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
178
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
179
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
180
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
181
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
182
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
183
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
184
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
185
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
186
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
187
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
188
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
189
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
190
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
191
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
192
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
193
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
194
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
195
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
196
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
197
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
198
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
199
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
200
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
201
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
202
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
203
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
204
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
205
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
206
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
207
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
208
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
209
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
210
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
211
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
212
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
213
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
214
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
215
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
216
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
217
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
218
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
219
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
220
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
221
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
222
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
223
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
224
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
225
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
226
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
227
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
228
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
229
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
230
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
231
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
232
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
233
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
234
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
235
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
236
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
237
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
238
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
239
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
240
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
241
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
242
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
243
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
244
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
245
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
246
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
247
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
248
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
249
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
250
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
251
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
252
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
253
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
254
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
255
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
256
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
257
|
+
<a name='L198'></a><a href='#L198'>198</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">34x</span>
|
|
139
258
|
<span class="cline-any cline-neutral"> </span>
|
|
140
259
|
<span class="cline-any cline-neutral"> </span>
|
|
141
260
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -143,25 +262,142 @@
|
|
|
143
262
|
<span class="cline-any cline-yes">34x</span>
|
|
144
263
|
<span class="cline-any cline-yes">34x</span>
|
|
145
264
|
<span class="cline-any cline-yes">34x</span>
|
|
265
|
+
<span class="cline-any cline-yes">34x</span>
|
|
266
|
+
<span class="cline-any cline-yes">34x</span>
|
|
267
|
+
<span class="cline-any cline-yes">34x</span>
|
|
268
|
+
<span class="cline-any cline-yes">34x</span>
|
|
269
|
+
<span class="cline-any cline-yes">34x</span>
|
|
146
270
|
<span class="cline-any cline-neutral"> </span>
|
|
147
271
|
<span class="cline-any cline-neutral"> </span>
|
|
272
|
+
<span class="cline-any cline-yes">2x</span>
|
|
148
273
|
<span class="cline-any cline-neutral"> </span>
|
|
149
|
-
<span class="cline-any cline-
|
|
150
|
-
<span class="cline-any cline-
|
|
151
|
-
<span class="cline-any cline-
|
|
152
|
-
<span class="cline-any cline-
|
|
274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
|
+
<span class="cline-any cline-no"> </span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-no"> </span>
|
|
284
|
+
<span class="cline-any cline-no"> </span>
|
|
285
|
+
<span class="cline-any cline-neutral"> </span>
|
|
286
|
+
<span class="cline-any cline-no"> </span>
|
|
287
|
+
<span class="cline-any cline-no"> </span>
|
|
288
|
+
<span class="cline-any cline-no"> </span>
|
|
289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
293
|
+
<span class="cline-any cline-no"> </span>
|
|
294
|
+
<span class="cline-any cline-no"> </span>
|
|
295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
296
|
+
<span class="cline-any cline-neutral"> </span>
|
|
297
|
+
<span class="cline-any cline-no"> </span>
|
|
298
|
+
<span class="cline-any cline-no"> </span>
|
|
299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
300
|
+
<span class="cline-any cline-no"> </span>
|
|
301
|
+
<span class="cline-any cline-no"> </span>
|
|
302
|
+
<span class="cline-any cline-neutral"> </span>
|
|
303
|
+
<span class="cline-any cline-neutral"> </span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
|
+
<span class="cline-any cline-no"> </span>
|
|
153
307
|
<span class="cline-any cline-neutral"> </span>
|
|
154
308
|
<span class="cline-any cline-neutral"> </span>
|
|
155
309
|
<span class="cline-any cline-yes">34x</span>
|
|
156
|
-
<span class="cline-any cline-yes">2x</span>
|
|
157
|
-
<span class="cline-any cline-yes">2x</span>
|
|
158
|
-
<span class="cline-any cline-yes">2x</span>
|
|
159
310
|
<span class="cline-any cline-neutral"> </span>
|
|
311
|
+
<span class="cline-any cline-no"> </span>
|
|
312
|
+
<span class="cline-any cline-no"> </span>
|
|
160
313
|
<span class="cline-any cline-neutral"> </span>
|
|
161
314
|
<span class="cline-any cline-neutral"> </span>
|
|
162
315
|
<span class="cline-any cline-neutral"> </span>
|
|
316
|
+
<span class="cline-any cline-no"> </span>
|
|
317
|
+
<span class="cline-any cline-no"> </span>
|
|
318
|
+
<span class="cline-any cline-no"> </span>
|
|
319
|
+
<span class="cline-any cline-no"> </span>
|
|
320
|
+
<span class="cline-any cline-no"> </span>
|
|
163
321
|
<span class="cline-any cline-neutral"> </span>
|
|
322
|
+
<span class="cline-any cline-neutral"> </span>
|
|
323
|
+
<span class="cline-any cline-no"> </span>
|
|
324
|
+
<span class="cline-any cline-neutral"> </span>
|
|
325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
326
|
+
<span class="cline-any cline-yes">34x</span>
|
|
327
|
+
<span class="cline-any cline-no"> </span>
|
|
328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
329
|
+
<span class="cline-any cline-no"> </span>
|
|
330
|
+
<span class="cline-any cline-no"> </span>
|
|
331
|
+
<span class="cline-any cline-no"> </span>
|
|
332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-no"> </span>
|
|
334
|
+
<span class="cline-any cline-no"> </span>
|
|
335
|
+
<span class="cline-any cline-no"> </span>
|
|
336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
337
|
+
<span class="cline-any cline-no"> </span>
|
|
338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
340
|
+
<span class="cline-any cline-no"> </span>
|
|
341
|
+
<span class="cline-any cline-neutral"> </span>
|
|
342
|
+
<span class="cline-any cline-no"> </span>
|
|
343
|
+
<span class="cline-any cline-no"> </span>
|
|
344
|
+
<span class="cline-any cline-no"> </span>
|
|
345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
348
|
+
<span class="cline-any cline-no"> </span>
|
|
349
|
+
<span class="cline-any cline-no"> </span>
|
|
350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
351
|
+
<span class="cline-any cline-no"> </span>
|
|
164
352
|
<span class="cline-any cline-no"> </span>
|
|
353
|
+
<span class="cline-any cline-no"> </span>
|
|
354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
355
|
+
<span class="cline-any cline-no"> </span>
|
|
356
|
+
<span class="cline-any cline-no"> </span>
|
|
357
|
+
<span class="cline-any cline-no"> </span>
|
|
358
|
+
<span class="cline-any cline-no"> </span>
|
|
359
|
+
<span class="cline-any cline-no"> </span>
|
|
360
|
+
<span class="cline-any cline-no"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
362
|
+
<span class="cline-any cline-no"> </span>
|
|
363
|
+
<span class="cline-any cline-no"> </span>
|
|
364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
365
|
+
<span class="cline-any cline-no"> </span>
|
|
366
|
+
<span class="cline-any cline-no"> </span>
|
|
367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
368
|
+
<span class="cline-any cline-no"> </span>
|
|
369
|
+
<span class="cline-any cline-no"> </span>
|
|
370
|
+
<span class="cline-any cline-neutral"> </span>
|
|
371
|
+
<span class="cline-any cline-no"> </span>
|
|
372
|
+
<span class="cline-any cline-neutral"> </span>
|
|
373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
375
|
+
<span class="cline-any cline-neutral"> </span>
|
|
376
|
+
<span class="cline-any cline-no"> </span>
|
|
377
|
+
<span class="cline-any cline-no"> </span>
|
|
378
|
+
<span class="cline-any cline-neutral"> </span>
|
|
379
|
+
<span class="cline-any cline-no"> </span>
|
|
380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
382
|
+
<span class="cline-any cline-neutral"> </span>
|
|
383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
384
|
+
<span class="cline-any cline-neutral"> </span>
|
|
385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
386
|
+
<span class="cline-any cline-neutral"> </span>
|
|
387
|
+
<span class="cline-any cline-no"> </span>
|
|
388
|
+
<span class="cline-any cline-no"> </span>
|
|
389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
391
|
+
<span class="cline-any cline-neutral"> </span>
|
|
392
|
+
<span class="cline-any cline-no"> </span>
|
|
393
|
+
<span class="cline-any cline-neutral"> </span>
|
|
394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
396
|
+
<span class="cline-any cline-neutral"> </span>
|
|
397
|
+
<span class="cline-any cline-yes">34x</span>
|
|
398
|
+
<span class="cline-any cline-yes">2x</span>
|
|
399
|
+
<span class="cline-any cline-yes">2x</span>
|
|
400
|
+
<span class="cline-any cline-yes">2x</span>
|
|
165
401
|
<span class="cline-any cline-yes">2x</span>
|
|
166
402
|
<span class="cline-any cline-yes">2x</span>
|
|
167
403
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -190,6 +426,8 @@
|
|
|
190
426
|
<span class="cline-any cline-yes">1x</span>
|
|
191
427
|
<span class="cline-any cline-yes">1x</span>
|
|
192
428
|
<span class="cline-any cline-yes">1x</span>
|
|
429
|
+
<span class="cline-any cline-neutral"> </span>
|
|
430
|
+
<span class="cline-any cline-yes">1x</span>
|
|
193
431
|
<span class="cline-any cline-yes">1x</span>
|
|
194
432
|
<span class="cline-any cline-neutral"> </span>
|
|
195
433
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -219,27 +457,144 @@ const {
|
|
|
219
457
|
getUserMetadataParams,
|
|
220
458
|
} = require("../../db/utils")
|
|
221
459
|
const { InternalTables } = require("../../db/utils")
|
|
222
|
-
const { getGlobalUsers } = require("../../utilities/global")
|
|
460
|
+
const { getGlobalUsers, getRawGlobalUser } = require("../../utilities/global")
|
|
223
461
|
const { getFullUser } = require("../../utilities/users")
|
|
462
|
+
const { isEqual } = require("lodash")
|
|
463
|
+
const { BUILTIN_ROLE_IDS } = require("@budibase/auth/roles")
|
|
464
|
+
const { getDevelopmentAppID, getDeployedAppIDs } = require("@budibase/auth/db")
|
|
465
|
+
const { doesDatabaseExist } = require("../../utilities")
|
|
466
|
+
const { UserStatus } = require("@budibase/auth/constants")
|
|
224
467
|
|
|
225
|
-
function
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
delete user.roles
|
|
229
|
-
delete user.builder
|
|
230
|
-
return user
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
exports.fetchMetadata = async function (ctx) {
|
|
234
|
-
const database = new CouchDB(ctx.appId)
|
|
235
|
-
const global = await getGlobalUsers(ctx.appId)
|
|
236
|
-
const metadata = (
|
|
237
|
-
await database.allDocs(
|
|
468
|
+
async function rawMetadata(db) {
|
|
469
|
+
return (
|
|
470
|
+
await db.allDocs(
|
|
238
471
|
getUserMetadataParams(null, {
|
|
239
472
|
include_docs: true,
|
|
240
473
|
})
|
|
241
474
|
)
|
|
242
475
|
).rows.map(<span class="fstat-no" title="function not covered" >ro</span>w => <span class="cstat-no" title="statement not covered" >row.doc)</span>
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
function <span class="fstat-no" title="function not covered" >combineMetadataAndUser(</span>user, metadata) {
|
|
479
|
+
// skip users with no access
|
|
480
|
+
<span class="cstat-no" title="statement not covered" > if (user.roleId === BUILTIN_ROLE_IDS.PUBLIC) {</span>
|
|
481
|
+
<span class="cstat-no" title="statement not covered" > return null</span>
|
|
482
|
+
}
|
|
483
|
+
<span class="cstat-no" title="statement not covered" > delete user._rev</span>
|
|
484
|
+
const metadataId = <span class="cstat-no" title="statement not covered" >generateUserMetadataID(user._id)</span>
|
|
485
|
+
const newDoc = <span class="cstat-no" title="statement not covered" >{</span>
|
|
486
|
+
...user,
|
|
487
|
+
_id: metadataId,
|
|
488
|
+
tableId: InternalTables.USER_METADATA,
|
|
489
|
+
}
|
|
490
|
+
const found = <span class="cstat-no" title="statement not covered" >Array.isArray(metadata)</span>
|
|
491
|
+
? metadata.find(<span class="fstat-no" title="function not covered" >do</span>c => <span class="cstat-no" title="statement not covered" >doc._id === metadataId)</span>
|
|
492
|
+
: metadata
|
|
493
|
+
// copy rev over for the purposes of equality check
|
|
494
|
+
<span class="cstat-no" title="statement not covered" > if (found) {</span>
|
|
495
|
+
<span class="cstat-no" title="statement not covered" > newDoc._rev = found._rev</span>
|
|
496
|
+
}
|
|
497
|
+
<span class="cstat-no" title="statement not covered" > if (found == null || !isEqual(newDoc, found)) {</span>
|
|
498
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
499
|
+
...found,
|
|
500
|
+
...newDoc,
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
<span class="cstat-no" title="statement not covered" > return null</span>
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
exports.syncGlobalUsers = <span class="fstat-no" title="function not covered" >as</span>ync appId => {
|
|
507
|
+
// sync user metadata
|
|
508
|
+
const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
|
|
509
|
+
const [users, metadata] = <span class="cstat-no" title="statement not covered" >await Promise.all([</span>
|
|
510
|
+
getGlobalUsers(appId),
|
|
511
|
+
rawMetadata(db),
|
|
512
|
+
])
|
|
513
|
+
const toWrite = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
514
|
+
<span class="cstat-no" title="statement not covered" > for (let user of users) {</span>
|
|
515
|
+
const combined = <span class="cstat-no" title="statement not covered" >await combineMetadataAndUser(user, metadata)</span>
|
|
516
|
+
<span class="cstat-no" title="statement not covered" > if (combined) {</span>
|
|
517
|
+
<span class="cstat-no" title="statement not covered" > toWrite.push(combined)</span>
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
<span class="cstat-no" title="statement not covered" > await db.bulkDocs(toWrite)</span>
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
exports.syncUser = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
|
|
524
|
+
let deleting = <span class="cstat-no" title="statement not covered" >false,</span>
|
|
525
|
+
user
|
|
526
|
+
const userId = <span class="cstat-no" title="statement not covered" >ctx.params.id</span>
|
|
527
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
528
|
+
<span class="cstat-no" title="statement not covered" > user = await getRawGlobalUser(userId)</span>
|
|
529
|
+
} catch (err) {
|
|
530
|
+
<span class="cstat-no" title="statement not covered" > if (err && err.status === 404) {</span>
|
|
531
|
+
<span class="cstat-no" title="statement not covered" > user = {}</span>
|
|
532
|
+
<span class="cstat-no" title="statement not covered" > deleting = true</span>
|
|
533
|
+
} else {
|
|
534
|
+
<span class="cstat-no" title="statement not covered" > throw err</span>
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
const roles = <span class="cstat-no" title="statement not covered" >user.roles</span>
|
|
538
|
+
// remove props which aren't useful to metadata
|
|
539
|
+
<span class="cstat-no" title="statement not covered" > delete user.password</span>
|
|
540
|
+
<span class="cstat-no" title="statement not covered" > delete user.forceResetPassword</span>
|
|
541
|
+
<span class="cstat-no" title="statement not covered" > delete user.roles</span>
|
|
542
|
+
// run through all production appIDs in the users roles
|
|
543
|
+
let prodAppIds
|
|
544
|
+
// if they are a builder then get all production app IDs
|
|
545
|
+
<span class="cstat-no" title="statement not covered" > if ((user.builder && user.builder.global) || deleting) {</span>
|
|
546
|
+
<span class="cstat-no" title="statement not covered" > prodAppIds = await getDeployedAppIDs(CouchDB)</span>
|
|
547
|
+
} else {
|
|
548
|
+
<span class="cstat-no" title="statement not covered" > prodAppIds = Object.entries(roles)</span>
|
|
549
|
+
.filter(<span class="fstat-no" title="function not covered" >en</span>try => <span class="cstat-no" title="statement not covered" >entry[1] !== BUILTIN_ROLE_IDS.PUBLIC)</span>
|
|
550
|
+
.map(<span class="fstat-no" title="function not covered" >([</span>appId]) => <span class="cstat-no" title="statement not covered" >appId)</span>
|
|
551
|
+
}
|
|
552
|
+
<span class="cstat-no" title="statement not covered" > for (let prodAppId of prodAppIds) {</span>
|
|
553
|
+
const roleId = <span class="cstat-no" title="statement not covered" >roles[prodAppId]</span>
|
|
554
|
+
const devAppId = <span class="cstat-no" title="statement not covered" >getDevelopmentAppID(prodAppId)</span>
|
|
555
|
+
<span class="cstat-no" title="statement not covered" > for (let appId of [prodAppId, devAppId]) {</span>
|
|
556
|
+
<span class="cstat-no" title="statement not covered" > if (!(await doesDatabaseExist(appId))) {</span>
|
|
557
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
558
|
+
}
|
|
559
|
+
const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
|
|
560
|
+
const metadataId = <span class="cstat-no" title="statement not covered" >generateUserMetadataID(userId)</span>
|
|
561
|
+
let metadata
|
|
562
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
563
|
+
<span class="cstat-no" title="statement not covered" > metadata = await db.get(metadataId)</span>
|
|
564
|
+
} catch (err) {
|
|
565
|
+
<span class="cstat-no" title="statement not covered" > if (deleting) {</span>
|
|
566
|
+
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
567
|
+
}
|
|
568
|
+
<span class="cstat-no" title="statement not covered" > metadata = {</span>
|
|
569
|
+
tableId: InternalTables.USER_METADATA,
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
// assign the roleId for the metadata doc
|
|
573
|
+
<span class="cstat-no" title="statement not covered" > if (roleId) {</span>
|
|
574
|
+
<span class="cstat-no" title="statement not covered" > metadata.roleId = roleId</span>
|
|
575
|
+
}
|
|
576
|
+
let combined = <span class="cstat-no" title="statement not covered" >!deleting</span>
|
|
577
|
+
? combineMetadataAndUser(user, metadata)
|
|
578
|
+
: {
|
|
579
|
+
...metadata,
|
|
580
|
+
status: UserStatus.INACTIVE,
|
|
581
|
+
metadata: BUILTIN_ROLE_IDS.PUBLIC,
|
|
582
|
+
}
|
|
583
|
+
// if its null then there was no updates required
|
|
584
|
+
<span class="cstat-no" title="statement not covered" > if (combined) {</span>
|
|
585
|
+
<span class="cstat-no" title="statement not covered" > await db.put(combined)</span>
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
<span class="cstat-no" title="statement not covered" > ctx.body = {</span>
|
|
590
|
+
message: "User synced.",
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
exports.fetchMetadata = async function (ctx) {
|
|
595
|
+
const database = new CouchDB(ctx.appId)
|
|
596
|
+
const global = await getGlobalUsers(ctx.appId)
|
|
597
|
+
const metadata = await rawMetadata(database)
|
|
243
598
|
const users = []
|
|
244
599
|
for (let user of global) {
|
|
245
600
|
// find the metadata that matches up to the global ID
|
|
@@ -267,7 +622,9 @@ exports.updateSelfMetadata = <span class="fstat-no" title="function not covered"
|
|
|
267
622
|
exports.updateMetadata = async function (ctx) {
|
|
268
623
|
const appId = ctx.appId
|
|
269
624
|
const db = new CouchDB(appId)
|
|
270
|
-
const user =
|
|
625
|
+
const user = ctx.request.body
|
|
626
|
+
// this isn't applicable to the user
|
|
627
|
+
delete user.roles
|
|
271
628
|
const metadata = {
|
|
272
629
|
tableId: InternalTables.USER_METADATA,
|
|
273
630
|
...user,
|
|
@@ -298,7 +655,7 @@ exports.findMetadata = async function (ctx) {
|
|
|
298
655
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
299
656
|
Code coverage generated by
|
|
300
657
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
301
|
-
at
|
|
658
|
+
at Mon Nov 22 2021 10:23:31 GMT+0000 (Coordinated Universal Time)
|
|
302
659
|
</div>
|
|
303
660
|
</div>
|
|
304
661
|
<script src="../../prettify.js"></script>
|
|
@@ -118,7 +118,7 @@ exports.json = function (headers, rows) {
|
|
|
118
118
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
119
119
|
Code coverage generated by
|
|
120
120
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
121
|
-
at
|
|
121
|
+
at Mon Nov 22 2021 10:23:31 GMT+0000 (Coordinated Universal Time)
|
|
122
122
|
</div>
|
|
123
123
|
</div>
|
|
124
124
|
<script src="../../../prettify.js"></script>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">62.
|
|
33
|
+
<span class="strong">62.33% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
35
|
<span class='fraction'>48/77</span>
|
|
36
36
|
</div>
|
|
@@ -89,10 +89,10 @@
|
|
|
89
89
|
|
|
90
90
|
<tr>
|
|
91
91
|
<td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
|
|
92
|
-
<td data-value="92.
|
|
92
|
+
<td data-value="92.72" class="pic high">
|
|
93
93
|
<div class="chart"><div class="cover-fill" style="width: 92%"></div><div class="cover-empty" style="width: 8%"></div></div>
|
|
94
94
|
</td>
|
|
95
|
-
<td data-value="92.
|
|
95
|
+
<td data-value="92.72" class="pct high">92.72%</td>
|
|
96
96
|
<td data-value="55" class="abs high">51/55</td>
|
|
97
97
|
<td data-value="68.42" class="pct medium">68.42%</td>
|
|
98
98
|
<td data-value="19" class="abs medium">13/19</td>
|
|
@@ -109,9 +109,9 @@
|
|
|
109
109
|
</td>
|
|
110
110
|
<td data-value="50" class="pct medium">50%</td>
|
|
111
111
|
<td data-value="76" class="abs medium">38/76</td>
|
|
112
|
-
<td data-value="34.
|
|
112
|
+
<td data-value="34.61" class="pct low">34.61%</td>
|
|
113
113
|
<td data-value="26" class="abs low">9/26</td>
|
|
114
|
-
<td data-value="66.
|
|
114
|
+
<td data-value="66.66" class="pct medium">66.66%</td>
|
|
115
115
|
<td data-value="9" class="abs medium">6/9</td>
|
|
116
116
|
<td data-value="50" class="pct medium">50%</td>
|
|
117
117
|
<td data-value="76" class="abs medium">38/76</td>
|
|
@@ -119,16 +119,16 @@
|
|
|
119
119
|
|
|
120
120
|
<tr>
|
|
121
121
|
<td class="file high" data-value="viewBuilder.js"><a href="viewBuilder.js.html">viewBuilder.js</a></td>
|
|
122
|
-
<td data-value="84.
|
|
122
|
+
<td data-value="84.84" class="pic high">
|
|
123
123
|
<div class="chart"><div class="cover-fill" style="width: 84%"></div><div class="cover-empty" style="width: 16%"></div></div>
|
|
124
124
|
</td>
|
|
125
|
-
<td data-value="84.
|
|
125
|
+
<td data-value="84.84" class="pct high">84.84%</td>
|
|
126
126
|
<td data-value="33" class="abs high">28/33</td>
|
|
127
127
|
<td data-value="83.33" class="pct high">83.33%</td>
|
|
128
128
|
<td data-value="30" class="abs high">25/30</td>
|
|
129
129
|
<td data-value="75" class="pct medium">75%</td>
|
|
130
130
|
<td data-value="4" class="abs medium">3/4</td>
|
|
131
|
-
<td data-value="84.
|
|
131
|
+
<td data-value="84.84" class="pct high">84.84%</td>
|
|
132
132
|
<td data-value="33" class="abs high">28/33</td>
|
|
133
133
|
</tr>
|
|
134
134
|
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
141
141
|
Code coverage generated by
|
|
142
142
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
143
|
-
at
|
|
143
|
+
at Mon Nov 22 2021 10:23:31 GMT+0000 (Coordinated Universal Time)
|
|
144
144
|
</div>
|
|
145
145
|
</div>
|
|
146
146
|
<script src="../../../prettify.js"></script>
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">92.
|
|
26
|
+
<span class="strong">92.72% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
28
|
<span class='fraction'>51/55</span>
|
|
29
29
|
</div>
|
|
@@ -307,7 +307,7 @@ exports.exportView = async ctx => {
|
|
|
307
307
|
<span class="cstat-no" title="statement not covered" > ctx.throw(400, "Format must be specified, either csv or json")</span>
|
|
308
308
|
}
|
|
309
309
|
|
|
310
|
-
|
|
310
|
+
if (view) {
|
|
311
311
|
ctx.params.viewName = viewName
|
|
312
312
|
// Fetch view rows
|
|
313
313
|
ctx.query = {
|
|
@@ -316,7 +316,7 @@ exports.exportView = async ctx => {
|
|
|
316
316
|
stats: !!view.meta.field,
|
|
317
317
|
field: view.meta.field,
|
|
318
318
|
}
|
|
319
|
-
} else {
|
|
319
|
+
} else <span class="missing-if-branch" title="else path not taken" >E</span>{
|
|
320
320
|
// table all_ view
|
|
321
321
|
/* istanbul ignore next */
|
|
322
322
|
ctx.params.viewName = viewName
|
|
@@ -325,7 +325,7 @@ exports.exportView = async ctx => {
|
|
|
325
325
|
await fetchView(ctx)
|
|
326
326
|
|
|
327
327
|
let schema = view && view.meta && view.meta.schema
|
|
328
|
-
|
|
328
|
+
if (!schema) {
|
|
329
329
|
const tableId = ctx.params.tableId || view.meta.tableId
|
|
330
330
|
const table = await db.get(tableId)
|
|
331
331
|
schema = table.schema
|
|
@@ -346,7 +346,7 @@ exports.exportView = async ctx => {
|
|
|
346
346
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
347
347
|
Code coverage generated by
|
|
348
348
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
349
|
-
at
|
|
349
|
+
at Mon Nov 22 2021 10:23:31 GMT+0000 (Coordinated Universal Time)
|
|
350
350
|
</div>
|
|
351
351
|
</div>
|
|
352
352
|
<script src="../../../prettify.js"></script>
|