@softr/sdk 0.0.61 → 0.0.62
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/dist/core/integration.js +3 -2
- package/dist/datasource/chart.js +5 -3
- package/dist/datasource/record.js +23 -6
- package/dist/package.js +1 -1
- package/package.json +1 -1
package/dist/core/integration.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { fetch } from "../fetch.js";
|
|
2
2
|
import { readSessionToken } from "../auth/session.js";
|
|
3
|
-
import { dsUrl } from "../datasource/record.js";
|
|
3
|
+
import { dsUrl, refererHeader } from "../datasource/record.js";
|
|
4
4
|
|
|
5
5
|
//#region src/core/integration.ts
|
|
6
6
|
async function integrationFetch(action, { params, query, headers = {}, body, signal } = {}) {
|
|
@@ -15,7 +15,8 @@ async function integrationFetch(action, { params, query, headers = {}, body, sig
|
|
|
15
15
|
method: "POST",
|
|
16
16
|
headers: {
|
|
17
17
|
"Content-Type": "application/json",
|
|
18
|
-
"Authorization": `Bearer ${readSessionToken()}
|
|
18
|
+
"Authorization": `Bearer ${readSessionToken()}`,
|
|
19
|
+
...refererHeader()
|
|
19
20
|
},
|
|
20
21
|
body: JSON.stringify(payload),
|
|
21
22
|
signal
|
package/dist/datasource/chart.js
CHANGED
|
@@ -4,7 +4,7 @@ import { readUserTimezone } from "../cookies.js";
|
|
|
4
4
|
import { readSessionToken } from "../auth/session.js";
|
|
5
5
|
import { INTERNAL_KIND, buildFilterCriteria, buildOrderBy, dealiasFilterCriteria } from "./filter.js";
|
|
6
6
|
import { andAll, makeFieldSet, makeSortSet } from "./fields.js";
|
|
7
|
-
import { describeFailure, dsUrl, resolveTarget } from "./record.js";
|
|
7
|
+
import { describeFailure, dsUrl, refererHeader, resolveTarget } from "./record.js";
|
|
8
8
|
|
|
9
9
|
//#region src/datasource/chart.ts
|
|
10
10
|
const COUNT_CNT = "COUNT_CNT";
|
|
@@ -198,7 +198,8 @@ async function executeChart(query, state) {
|
|
|
198
198
|
headers: {
|
|
199
199
|
"Content-Type": "application/json",
|
|
200
200
|
"X-User-Timezone": readUserTimezone() ?? "UTC",
|
|
201
|
-
Authorization: `Bearer ${readSessionToken()}
|
|
201
|
+
Authorization: `Bearer ${readSessionToken()}`,
|
|
202
|
+
...refererHeader()
|
|
202
203
|
},
|
|
203
204
|
body: JSON.stringify(body)
|
|
204
205
|
});
|
|
@@ -271,7 +272,8 @@ async function executeMetric(query, handle, filters) {
|
|
|
271
272
|
headers: {
|
|
272
273
|
"Content-Type": "application/json",
|
|
273
274
|
"X-User-Timezone": readUserTimezone() ?? "UTC",
|
|
274
|
-
Authorization: `Bearer ${readSessionToken()}
|
|
275
|
+
Authorization: `Bearer ${readSessionToken()}`,
|
|
276
|
+
...refererHeader()
|
|
275
277
|
},
|
|
276
278
|
body: JSON.stringify(body)
|
|
277
279
|
});
|
|
@@ -5,6 +5,7 @@ import { readSessionToken } from "../auth/session.js";
|
|
|
5
5
|
import { isDatasourceAction } from "../action.js";
|
|
6
6
|
import { buildFilterCriteria, buildOrderBy, dealiasFilterCriteria, dealiasOrderBy } from "./filter.js";
|
|
7
7
|
import { andAll, makeFieldSet, makeSortSet } from "./fields.js";
|
|
8
|
+
import { getRequestHeader } from "@tanstack/react-start/server";
|
|
8
9
|
|
|
9
10
|
//#region src/datasource/record.ts
|
|
10
11
|
const MAX_RECORD_COUNT = 100;
|
|
@@ -15,6 +16,15 @@ const dsUrl = (actionId) => {
|
|
|
15
16
|
if (!applicationId) panic("SOFTR_APPLICATION_ID is not set.");
|
|
16
17
|
return `${withoutTrailingSlash(datasourceApiUrl)}/v1/datasource/vibe/applications/${applicationId}/actions/${actionId}`;
|
|
17
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* The datasource API wants to know which page made the call.
|
|
21
|
+
* The browser sends that page to the app server, so we pass it on.
|
|
22
|
+
* Without an incoming Referer, we send none.
|
|
23
|
+
*/
|
|
24
|
+
function refererHeader() {
|
|
25
|
+
const referer = getRequestHeader("referer");
|
|
26
|
+
return referer ? { Referer: referer } : {};
|
|
27
|
+
}
|
|
18
28
|
async function describeFailure(res) {
|
|
19
29
|
const body = await res.json().catch(() => null);
|
|
20
30
|
const message = typeof body === "object" && body !== null && "message" in body ? body.message : null;
|
|
@@ -80,7 +90,8 @@ async function executeList(query, args) {
|
|
|
80
90
|
headers: {
|
|
81
91
|
"Content-Type": "application/json",
|
|
82
92
|
"X-User-Timezone": readUserTimezone() ?? "UTC",
|
|
83
|
-
Authorization: `Bearer ${readSessionToken()}
|
|
93
|
+
Authorization: `Bearer ${readSessionToken()}`,
|
|
94
|
+
...refererHeader()
|
|
84
95
|
},
|
|
85
96
|
body: JSON.stringify({
|
|
86
97
|
options: { userLocale: "en-US" },
|
|
@@ -151,7 +162,8 @@ async function executeGet(query, id, filters) {
|
|
|
151
162
|
headers: {
|
|
152
163
|
"Content-Type": "application/json",
|
|
153
164
|
"X-User-Timezone": readUserTimezone() ?? "UTC",
|
|
154
|
-
Authorization: `Bearer ${readSessionToken()}
|
|
165
|
+
Authorization: `Bearer ${readSessionToken()}`,
|
|
166
|
+
...refererHeader()
|
|
155
167
|
},
|
|
156
168
|
body: JSON.stringify({
|
|
157
169
|
options: { userLocale: "en-US" },
|
|
@@ -183,7 +195,8 @@ async function createRecord(action, options) {
|
|
|
183
195
|
method: "POST",
|
|
184
196
|
headers: {
|
|
185
197
|
"Content-Type": "application/json",
|
|
186
|
-
Authorization: `Bearer ${readSessionToken()}
|
|
198
|
+
Authorization: `Bearer ${readSessionToken()}`,
|
|
199
|
+
...refererHeader()
|
|
187
200
|
},
|
|
188
201
|
body: JSON.stringify({ fields: rawFields })
|
|
189
202
|
});
|
|
@@ -212,7 +225,8 @@ async function updateRecord(action, options) {
|
|
|
212
225
|
method: "PATCH",
|
|
213
226
|
headers: {
|
|
214
227
|
"Content-Type": "application/json",
|
|
215
|
-
Authorization: `Bearer ${readSessionToken()}
|
|
228
|
+
Authorization: `Bearer ${readSessionToken()}`,
|
|
229
|
+
...refererHeader()
|
|
216
230
|
},
|
|
217
231
|
body: JSON.stringify({ fields: rawFields })
|
|
218
232
|
});
|
|
@@ -233,7 +247,10 @@ async function deleteRecord(action, options) {
|
|
|
233
247
|
const { actionId } = resolveTarget(action, "delete");
|
|
234
248
|
const res = await fetch(`${dsUrl(actionId)}/records/${options.id}`, {
|
|
235
249
|
method: "DELETE",
|
|
236
|
-
headers: {
|
|
250
|
+
headers: {
|
|
251
|
+
Authorization: `Bearer ${readSessionToken()}`,
|
|
252
|
+
...refererHeader()
|
|
253
|
+
}
|
|
237
254
|
});
|
|
238
255
|
if (!res.ok) throw new Error(`datasource delete failed for action "${actionId}": ${await describeFailure(res)}`);
|
|
239
256
|
}
|
|
@@ -262,4 +279,4 @@ function withoutTrailingSlash(url) {
|
|
|
262
279
|
}
|
|
263
280
|
|
|
264
281
|
//#endregion
|
|
265
|
-
export { createRecord, deleteRecord, describeFailure, dsUrl, getRecord, listRecords, resolveTarget, updateRecord };
|
|
282
|
+
export { createRecord, deleteRecord, describeFailure, dsUrl, getRecord, listRecords, refererHeader, resolveTarget, updateRecord };
|
package/dist/package.js
CHANGED