@budibase/server 1.0.19-alpha.1 → 1.0.22
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/__mocks__/node-fetch.ts +0 -3
- package/builder/assets/{index.2fc6da87.css → index.4fb3f887.css} +1 -1
- package/builder/assets/index.91de2761.js +1316 -0
- package/builder/assets/{vendor.a9288856.js → vendor.470042a4.js} +1 -1
- package/builder/index.html +3 -3
- package/coverage/clover.xml +372 -440
- package/coverage/coverage-final.json +16 -17
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +1 -1
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +14 -14
- package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
- package/coverage/lcov-report/api/controllers/hosting.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +38 -23
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/{query/index.js.html → query.js.html} +27 -159
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/api/controllers/row/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.html +1 -1
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +9 -108
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +6 -18
- 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 +1 -1
- package/coverage/lcov-report/api/routes/hosting.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +9 -9
- 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 +98 -11
- 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 +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +2 -32
- 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 +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +1 -1
- package/coverage/lcov-report/automations/index.js.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +1 -1
- package/coverage/lcov-report/automations/utils.js.html +1 -1
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +22 -22
- 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 +18 -18
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +15 -15
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +4 -4
- package/coverage/lcov-report/db/utils.js.html +64 -91
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +52 -67
- 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 +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +2 -2
- package/coverage/lcov-report/middleware/builder.js.html +1 -1
- package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +20 -20
- package/coverage/lcov-report/threads/index.js.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +12 -63
- 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 +1 -1
- package/coverage/lcov-report/utilities/global.js.html +1 -1
- package/coverage/lcov-report/utilities/index.html +19 -19
- package/coverage/lcov-report/utilities/index.js.html +33 -66
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +2 -2
- 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 +1 -1
- package/coverage/lcov.info +583 -688
- package/dist/api/controllers/{query/index.js → query.js} +6 -42
- package/dist/api/controllers/user.js +1 -37
- package/dist/api/controllers/webhook.js +0 -4
- package/dist/api/routes/query.js +32 -2
- package/dist/api/routes/user.js +1 -3
- package/dist/db/utils.js +0 -8
- package/dist/integrations/rest.js +113 -110
- package/dist/package.json +4 -8
- package/dist/threads/query.js +2 -14
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/index.js +0 -10
- package/package.json +5 -9
- package/src/api/controllers/{query/index.js → query.js} +6 -50
- package/src/api/controllers/user.js +0 -33
- package/src/api/controllers/webhook.js +0 -4
- package/src/api/routes/query.js +34 -5
- package/src/api/routes/user.js +0 -10
- package/src/db/utils.js +0 -9
- package/src/definitions/common.ts +16 -2
- package/src/definitions/datasource.ts +1 -50
- package/src/integrations/base/IntegrationBase.ts +4 -4
- package/src/integrations/oracle.ts +1 -1
- package/src/integrations/rest.ts +137 -111
- package/src/integrations/tests/rest.spec.js +7 -16
- package/src/threads/query.js +2 -19
- package/src/utilities/index.js +0 -11
- package/builder/assets/bb-spaceship.8f6e81e1.svg +0 -227
- package/builder/assets/index.b0718f41.js +0 -1320
- package/coverage/lcov-report/api/controllers/query/index.html +0 -126
- package/coverage/lcov-report/api/controllers/query/validation.js.html +0 -203
- package/dist/api/controllers/query/import/index.js +0 -79
- package/dist/api/controllers/query/import/sources/base/index.js +0 -63
- package/dist/api/controllers/query/import/sources/base/openapi.js +0 -42
- package/dist/api/controllers/query/import/sources/curl.js +0 -90
- package/dist/api/controllers/query/import/sources/openapi2.js +0 -139
- package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
- package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
- package/dist/api/controllers/query/validation.js +0 -37
- package/src/api/controllers/query/import/index.ts +0 -85
- package/src/api/controllers/query/import/sources/base/index.ts +0 -85
- package/src/api/controllers/query/import/sources/base/openapi.ts +0 -24
- package/src/api/controllers/query/import/sources/curl.ts +0 -94
- package/src/api/controllers/query/import/sources/openapi2.ts +0 -159
- package/src/api/controllers/query/import/sources/tests/curl/curl.spec.js +0 -104
- package/src/api/controllers/query/import/sources/tests/curl/data/delete.txt +0 -1
- package/src/api/controllers/query/import/sources/tests/curl/data/empty-body.txt +0 -2
- package/src/api/controllers/query/import/sources/tests/curl/data/get.txt +0 -1
- package/src/api/controllers/query/import/sources/tests/curl/data/headers.txt +0 -3
- package/src/api/controllers/query/import/sources/tests/curl/data/patch.txt +0 -2
- package/src/api/controllers/query/import/sources/tests/curl/data/path.txt +0 -1
- package/src/api/controllers/query/import/sources/tests/curl/data/post.txt +0 -2
- package/src/api/controllers/query/import/sources/tests/curl/data/put.txt +0 -2
- package/src/api/controllers/query/import/sources/tests/curl/data/query.txt +0 -1
- package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
- package/src/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.yaml +0 -160
- package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
- package/src/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.yaml +0 -711
- package/src/api/controllers/query/import/sources/tests/openapi2/openapi2.spec.js +0 -239
- package/src/api/controllers/query/import/tests/index.spec.js +0 -115
- package/src/api/controllers/query/validation.js +0 -41
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for api/controllers/query</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../../index.html">All files</a> api/controllers/query</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">73.95% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>71/96</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">44.44% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>12/27</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">92.3% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>12/13</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">73.68% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>70/95</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
</div>
|
|
58
|
-
<div class='status-line medium'></div>
|
|
59
|
-
<div class="pad1">
|
|
60
|
-
<table class="coverage-summary">
|
|
61
|
-
<thead>
|
|
62
|
-
<tr>
|
|
63
|
-
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
|
|
64
|
-
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
|
|
65
|
-
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
|
|
66
|
-
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
67
|
-
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
|
|
68
|
-
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
69
|
-
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
|
|
70
|
-
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
71
|
-
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
|
|
72
|
-
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
|
|
73
|
-
</tr>
|
|
74
|
-
</thead>
|
|
75
|
-
<tbody><tr>
|
|
76
|
-
<td class="file medium" data-value="index.js"><a href="index.js.html">index.js</a></td>
|
|
77
|
-
<td data-value="71.59" class="pic medium">
|
|
78
|
-
<div class="chart"><div class="cover-fill" style="width: 71%"></div><div class="cover-empty" style="width: 29%"></div></div>
|
|
79
|
-
</td>
|
|
80
|
-
<td data-value="71.59" class="pct medium">71.59%</td>
|
|
81
|
-
<td data-value="88" class="abs medium">63/88</td>
|
|
82
|
-
<td data-value="44.44" class="pct low">44.44%</td>
|
|
83
|
-
<td data-value="27" class="abs low">12/27</td>
|
|
84
|
-
<td data-value="90" class="pct high">90%</td>
|
|
85
|
-
<td data-value="10" class="abs high">9/10</td>
|
|
86
|
-
<td data-value="71.26" class="pct medium">71.26%</td>
|
|
87
|
-
<td data-value="87" class="abs medium">62/87</td>
|
|
88
|
-
</tr>
|
|
89
|
-
|
|
90
|
-
<tr>
|
|
91
|
-
<td class="file high" data-value="validation.js"><a href="validation.js.html">validation.js</a></td>
|
|
92
|
-
<td data-value="100" class="pic high">
|
|
93
|
-
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
94
|
-
</td>
|
|
95
|
-
<td data-value="100" class="pct high">100%</td>
|
|
96
|
-
<td data-value="8" class="abs high">8/8</td>
|
|
97
|
-
<td data-value="100" class="pct high">100%</td>
|
|
98
|
-
<td data-value="0" class="abs high">0/0</td>
|
|
99
|
-
<td data-value="100" class="pct high">100%</td>
|
|
100
|
-
<td data-value="3" class="abs high">3/3</td>
|
|
101
|
-
<td data-value="100" class="pct high">100%</td>
|
|
102
|
-
<td data-value="8" class="abs high">8/8</td>
|
|
103
|
-
</tr>
|
|
104
|
-
|
|
105
|
-
</tbody>
|
|
106
|
-
</table>
|
|
107
|
-
</div>
|
|
108
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
109
|
-
</div><!-- /wrapper -->
|
|
110
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
111
|
-
Code coverage generated by
|
|
112
|
-
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
113
|
-
at Mon Dec 13 2021 17:43:19 GMT+0000 (Coordinated Universal Time)
|
|
114
|
-
</div>
|
|
115
|
-
</div>
|
|
116
|
-
<script src="../../../prettify.js"></script>
|
|
117
|
-
<script>
|
|
118
|
-
window.onload = function () {
|
|
119
|
-
prettyPrint();
|
|
120
|
-
};
|
|
121
|
-
</script>
|
|
122
|
-
<script src="../../../sorter.js"></script>
|
|
123
|
-
<script src="../../../block-navigation.js"></script>
|
|
124
|
-
</body>
|
|
125
|
-
</html>
|
|
126
|
-
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for api/controllers/query/validation.js</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../../../index.html">All files</a> / <a href="index.html">api/controllers/query</a> validation.js</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">100% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>8/8</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">100% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/0</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">100% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>3/3</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">100% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>8/8</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
</div>
|
|
58
|
-
<div class='status-line high'></div>
|
|
59
|
-
<pre><table class="coverage">
|
|
60
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
62
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
63
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
64
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
65
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
66
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
67
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
68
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
69
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
70
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
71
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
72
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
73
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
74
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
75
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
76
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
77
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
78
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
79
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
80
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
81
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
82
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
83
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
84
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
85
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
86
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
87
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
88
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
89
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
90
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
91
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
92
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
93
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
94
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
95
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
96
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
97
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
98
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
99
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
100
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
101
|
-
<a name='L42'></a><a href='#L42'>42</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">35x</span>
|
|
102
|
-
<span class="cline-any cline-yes">35x</span>
|
|
103
|
-
<span class="cline-any cline-neutral"> </span>
|
|
104
|
-
<span class="cline-any cline-yes">35x</span>
|
|
105
|
-
<span class="cline-any cline-yes">28x</span>
|
|
106
|
-
<span class="cline-any cline-neutral"> </span>
|
|
107
|
-
<span class="cline-any cline-neutral"> </span>
|
|
108
|
-
<span class="cline-any cline-neutral"> </span>
|
|
109
|
-
<span class="cline-any cline-neutral"> </span>
|
|
110
|
-
<span class="cline-any cline-neutral"> </span>
|
|
111
|
-
<span class="cline-any cline-neutral"> </span>
|
|
112
|
-
<span class="cline-any cline-neutral"> </span>
|
|
113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
116
|
-
<span class="cline-any cline-neutral"> </span>
|
|
117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
118
|
-
<span class="cline-any cline-neutral"> </span>
|
|
119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
123
|
-
<span class="cline-any cline-neutral"> </span>
|
|
124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
126
|
-
<span class="cline-any cline-yes">35x</span>
|
|
127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
128
|
-
<span class="cline-any cline-yes">23x</span>
|
|
129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
130
|
-
<span class="cline-any cline-neutral"> </span>
|
|
131
|
-
<span class="cline-any cline-yes">35x</span>
|
|
132
|
-
<span class="cline-any cline-neutral"> </span>
|
|
133
|
-
<span class="cline-any cline-yes">23x</span>
|
|
134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
135
|
-
<span class="cline-any cline-neutral"> </span>
|
|
136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
140
|
-
<span class="cline-any cline-neutral"> </span>
|
|
141
|
-
<span class="cline-any cline-neutral"> </span>
|
|
142
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const joiValidator = require("../../../middleware/joi-validator")
|
|
143
|
-
const Joi = require("joi")
|
|
144
|
-
|
|
145
|
-
exports.queryValidation = () => {
|
|
146
|
-
return Joi.object({
|
|
147
|
-
_id: Joi.string(),
|
|
148
|
-
_rev: Joi.string(),
|
|
149
|
-
name: Joi.string().required(),
|
|
150
|
-
fields: Joi.object().required(),
|
|
151
|
-
datasourceId: Joi.string().required(),
|
|
152
|
-
readable: Joi.boolean(),
|
|
153
|
-
parameters: Joi.array().items(
|
|
154
|
-
Joi.object({
|
|
155
|
-
name: Joi.string(),
|
|
156
|
-
default: Joi.string().allow(""),
|
|
157
|
-
})
|
|
158
|
-
),
|
|
159
|
-
queryVerb: Joi.string().allow().required(),
|
|
160
|
-
extra: Joi.object().optional(),
|
|
161
|
-
schema: Joi.object({}).required().unknown(true),
|
|
162
|
-
transformer: Joi.string().optional(),
|
|
163
|
-
flags: Joi.object().optional(),
|
|
164
|
-
})
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
exports.generateQueryValidation = () => {
|
|
168
|
-
// prettier-ignore
|
|
169
|
-
return joiValidator.body(exports.queryValidation())
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
exports.generateQueryPreviewValidation = () => {
|
|
173
|
-
// prettier-ignore
|
|
174
|
-
return joiValidator.body(Joi.object({
|
|
175
|
-
fields: Joi.object().required(),
|
|
176
|
-
queryVerb: Joi.string().allow().required(),
|
|
177
|
-
extra: Joi.object().optional(),
|
|
178
|
-
datasourceId: Joi.string().required(),
|
|
179
|
-
transformer: Joi.string().optional(),
|
|
180
|
-
parameters: Joi.object({}).required().unknown(true)
|
|
181
|
-
}))
|
|
182
|
-
}
|
|
183
|
-
</pre></td></tr></table></pre>
|
|
184
|
-
|
|
185
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
186
|
-
</div><!-- /wrapper -->
|
|
187
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
188
|
-
Code coverage generated by
|
|
189
|
-
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
190
|
-
at Mon Dec 13 2021 17:43:19 GMT+0000 (Coordinated Universal Time)
|
|
191
|
-
</div>
|
|
192
|
-
</div>
|
|
193
|
-
<script src="../../../prettify.js"></script>
|
|
194
|
-
<script>
|
|
195
|
-
window.onload = function () {
|
|
196
|
-
prettyPrint();
|
|
197
|
-
};
|
|
198
|
-
</script>
|
|
199
|
-
<script src="../../../sorter.js"></script>
|
|
200
|
-
<script src="../../../block-navigation.js"></script>
|
|
201
|
-
</body>
|
|
202
|
-
</html>
|
|
203
|
-
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.RestImporter = void 0;
|
|
16
|
-
const db_1 = __importDefault(require("../../../../db"));
|
|
17
|
-
const validation_1 = require("../validation");
|
|
18
|
-
const utils_1 = require("../../../../db/utils");
|
|
19
|
-
const openapi2_1 = require("./sources/openapi2");
|
|
20
|
-
const curl_1 = require("./sources/curl");
|
|
21
|
-
class RestImporter {
|
|
22
|
-
constructor(data) {
|
|
23
|
-
this.init = () => __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
for (let source of this.sources) {
|
|
25
|
-
if (yield source.isSupported(this.data)) {
|
|
26
|
-
this.source = source;
|
|
27
|
-
break;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
this.getInfo = () => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
-
return this.source.getInfo();
|
|
33
|
-
});
|
|
34
|
-
this.importQueries = (appId, datasourceId) => __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
// constuct the queries
|
|
36
|
-
let queries = yield this.source.getQueries(datasourceId);
|
|
37
|
-
// validate queries
|
|
38
|
-
const errorQueries = [];
|
|
39
|
-
const schema = validation_1.queryValidation();
|
|
40
|
-
queries = queries
|
|
41
|
-
.filter(query => {
|
|
42
|
-
const validation = schema.validate(query);
|
|
43
|
-
if (validation.error) {
|
|
44
|
-
errorQueries.push(query);
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
return true;
|
|
48
|
-
})
|
|
49
|
-
.map(query => {
|
|
50
|
-
query._id = utils_1.generateQueryID(query.datasourceId);
|
|
51
|
-
return query;
|
|
52
|
-
});
|
|
53
|
-
// persist queries
|
|
54
|
-
const db = new db_1.default(appId);
|
|
55
|
-
const response = yield db.bulkDocs(queries);
|
|
56
|
-
// create index to seperate queries and errors
|
|
57
|
-
const queryIndex = queries.reduce((acc, query) => {
|
|
58
|
-
if (query._id) {
|
|
59
|
-
acc[query._id] = query;
|
|
60
|
-
}
|
|
61
|
-
return acc;
|
|
62
|
-
}, {});
|
|
63
|
-
// check for failed writes
|
|
64
|
-
response.forEach((query) => {
|
|
65
|
-
if (!query.ok) {
|
|
66
|
-
errorQueries.push(queryIndex[query.id]);
|
|
67
|
-
delete queryIndex[query.id];
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
return {
|
|
71
|
-
errorQueries,
|
|
72
|
-
queries: Object.values(queryIndex),
|
|
73
|
-
};
|
|
74
|
-
});
|
|
75
|
-
this.data = data;
|
|
76
|
-
this.sources = [new openapi2_1.OpenAPI2(), new curl_1.Curl()];
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
exports.RestImporter = RestImporter;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ImportSource = void 0;
|
|
4
|
-
var MethodToVerb;
|
|
5
|
-
(function (MethodToVerb) {
|
|
6
|
-
MethodToVerb["get"] = "read";
|
|
7
|
-
MethodToVerb["post"] = "create";
|
|
8
|
-
MethodToVerb["put"] = "update";
|
|
9
|
-
MethodToVerb["patch"] = "patch";
|
|
10
|
-
MethodToVerb["delete"] = "delete";
|
|
11
|
-
})(MethodToVerb || (MethodToVerb = {}));
|
|
12
|
-
class ImportSource {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.constructQuery = (datasourceId, name, method, path, queryString, headers = {}, parameters = [], body = undefined) => {
|
|
15
|
-
const readable = true;
|
|
16
|
-
const queryVerb = this.verbFromMethod(method);
|
|
17
|
-
const transformer = "return data";
|
|
18
|
-
const schema = {};
|
|
19
|
-
path = this.processPath(path);
|
|
20
|
-
queryString = this.processQuery(queryString);
|
|
21
|
-
const requestBody = JSON.stringify(body, null, 2);
|
|
22
|
-
const query = {
|
|
23
|
-
datasourceId,
|
|
24
|
-
name,
|
|
25
|
-
parameters,
|
|
26
|
-
fields: {
|
|
27
|
-
headers,
|
|
28
|
-
queryString,
|
|
29
|
-
path,
|
|
30
|
-
requestBody,
|
|
31
|
-
},
|
|
32
|
-
transformer,
|
|
33
|
-
schema,
|
|
34
|
-
readable,
|
|
35
|
-
queryVerb,
|
|
36
|
-
};
|
|
37
|
-
return query;
|
|
38
|
-
};
|
|
39
|
-
this.verbFromMethod = (method) => {
|
|
40
|
-
const verb = MethodToVerb[method];
|
|
41
|
-
if (!verb) {
|
|
42
|
-
throw new Error(`Unsupported method: ${method}`);
|
|
43
|
-
}
|
|
44
|
-
return verb;
|
|
45
|
-
};
|
|
46
|
-
this.processPath = (path) => {
|
|
47
|
-
if (path === null || path === void 0 ? void 0 : path.startsWith("/")) {
|
|
48
|
-
path = path.substring(1);
|
|
49
|
-
}
|
|
50
|
-
// add extra braces around params for binding
|
|
51
|
-
path = path.replace(/[{]/g, "{{");
|
|
52
|
-
path = path.replace(/[}]/g, "}}");
|
|
53
|
-
return path;
|
|
54
|
-
};
|
|
55
|
-
this.processQuery = (queryString) => {
|
|
56
|
-
if (queryString === null || queryString === void 0 ? void 0 : queryString.startsWith("?")) {
|
|
57
|
-
return queryString.substring(1);
|
|
58
|
-
}
|
|
59
|
-
return queryString;
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
exports.ImportSource = ImportSource;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.OpenAPISource = void 0;
|
|
16
|
-
const _1 = require(".");
|
|
17
|
-
const swagger_parser_1 = __importDefault(require("@apidevtools/swagger-parser"));
|
|
18
|
-
const yaml = require("js-yaml");
|
|
19
|
-
class OpenAPISource extends _1.ImportSource {
|
|
20
|
-
constructor() {
|
|
21
|
-
super(...arguments);
|
|
22
|
-
this.parseData = (data) => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
let json;
|
|
24
|
-
try {
|
|
25
|
-
json = JSON.parse(data);
|
|
26
|
-
}
|
|
27
|
-
catch (jsonErr) {
|
|
28
|
-
// couldn't parse json
|
|
29
|
-
// try to convert yaml -> json
|
|
30
|
-
try {
|
|
31
|
-
json = yaml.load(data);
|
|
32
|
-
}
|
|
33
|
-
catch (yamlErr) {
|
|
34
|
-
// couldn't parse yaml
|
|
35
|
-
throw new Error("Could not parse JSON or YAML");
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return swagger_parser_1.default.validate(json, {});
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.OpenAPISource = OpenAPISource;
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.Curl = void 0;
|
|
13
|
-
const base_1 = require("./base");
|
|
14
|
-
const url_1 = require("url");
|
|
15
|
-
const curlconverter = require("curlconverter");
|
|
16
|
-
const parseCurl = (data) => {
|
|
17
|
-
const curlJson = curlconverter.toJsonString(data);
|
|
18
|
-
return JSON.parse(curlJson);
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* The curl converter parses the request body into the key field of an object
|
|
22
|
-
* e.g. --d '{"key":"val"}' produces an object { "{"key":"val"}" : "" }
|
|
23
|
-
* This is not what we want, so we need to parse out the key from the object
|
|
24
|
-
*/
|
|
25
|
-
const parseBody = (curl) => {
|
|
26
|
-
if (curl.data) {
|
|
27
|
-
const keys = Object.keys(curl.data);
|
|
28
|
-
if (keys.length) {
|
|
29
|
-
const key = keys[0];
|
|
30
|
-
try {
|
|
31
|
-
return JSON.parse(key);
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
// do nothing
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return undefined;
|
|
39
|
-
};
|
|
40
|
-
const parseCookie = (curl) => {
|
|
41
|
-
if (curl.cookies) {
|
|
42
|
-
return Object.entries(curl.cookies).reduce((acc, entry) => {
|
|
43
|
-
const [key, value] = entry;
|
|
44
|
-
return acc + `${key}=${value}; `;
|
|
45
|
-
}, "");
|
|
46
|
-
}
|
|
47
|
-
return null;
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Curl
|
|
51
|
-
* https://curl.se/docs/manpage.html
|
|
52
|
-
*/
|
|
53
|
-
class Curl extends base_1.ImportSource {
|
|
54
|
-
constructor() {
|
|
55
|
-
super(...arguments);
|
|
56
|
-
this.isSupported = (data) => __awaiter(this, void 0, void 0, function* () {
|
|
57
|
-
try {
|
|
58
|
-
const curl = parseCurl(data);
|
|
59
|
-
this.curl = curl;
|
|
60
|
-
}
|
|
61
|
-
catch (err) {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
return true;
|
|
65
|
-
});
|
|
66
|
-
this.getInfo = () => __awaiter(this, void 0, void 0, function* () {
|
|
67
|
-
const url = new url_1.URL(this.curl.url);
|
|
68
|
-
return {
|
|
69
|
-
url: url.origin,
|
|
70
|
-
name: url.hostname,
|
|
71
|
-
};
|
|
72
|
-
});
|
|
73
|
-
this.getQueries = (datasourceId) => __awaiter(this, void 0, void 0, function* () {
|
|
74
|
-
const url = new url_1.URL(this.curl.raw_url);
|
|
75
|
-
const name = url.pathname;
|
|
76
|
-
const path = url.pathname;
|
|
77
|
-
const method = this.curl.method;
|
|
78
|
-
const queryString = url.search;
|
|
79
|
-
const headers = this.curl.headers;
|
|
80
|
-
const requestBody = parseBody(this.curl);
|
|
81
|
-
const cookieHeader = parseCookie(this.curl);
|
|
82
|
-
if (cookieHeader) {
|
|
83
|
-
headers["Cookie"] = cookieHeader;
|
|
84
|
-
}
|
|
85
|
-
const query = this.constructQuery(datasourceId, name, method, path, queryString, headers, [], requestBody);
|
|
86
|
-
return [query];
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
exports.Curl = Curl;
|