@dataships/sdk 0.0.0-stage → 2.0.0
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/LICENSE +202 -0
- package/README.md +327 -2
- package/dist/adapters/custom-platform-checkout/index.d.ts +139 -0
- package/dist/adapters/custom-platform-checkout/index.js +304 -0
- package/dist/adapters/custom-platform-checkout/index.js.map +1 -0
- package/dist/adapters/custom-platform-signup/index.d.ts +119 -0
- package/dist/adapters/custom-platform-signup/index.js +288 -0
- package/dist/adapters/custom-platform-signup/index.js.map +1 -0
- package/dist/adapters/salesforce/index.d.ts +100 -0
- package/dist/adapters/salesforce/index.js +278 -0
- package/dist/adapters/salesforce/index.js.map +1 -0
- package/dist/adapters/shopify-checkout/index.d.ts +102 -0
- package/dist/adapters/shopify-checkout/index.js +178 -0
- package/dist/adapters/shopify-checkout/index.js.map +1 -0
- package/dist/beacon-B8v41O8P.d.ts +4 -0
- package/dist/dataships.min.js +6 -0
- package/dist/dataships.min.js.map +1 -0
- package/dist/index.d.ts +185 -0
- package/dist/index.js +713 -0
- package/dist/index.js.map +1 -0
- package/dist/integrity.json +9 -0
- package/dist/locale-DwOMogGu.d.ts +9 -0
- package/dist/retry--aRf_ryF.d.ts +130 -0
- package/dist/server.d.ts +72 -0
- package/dist/server.js +455 -0
- package/dist/server.js.map +1 -0
- package/dist/types-Bfm_pCq7.d.ts +233 -0
- package/package.json +83 -4
package/dist/server.js
ADDED
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
var __typeError = (msg) => {
|
|
2
|
+
throw TypeError(msg);
|
|
3
|
+
};
|
|
4
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
5
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
|
|
6
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
7
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
8
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
9
|
+
|
|
10
|
+
// src/auth/headers.ts
|
|
11
|
+
var SERVER_KEY_PREFIX = "ds_sk_";
|
|
12
|
+
var isServerKey = (key) => key.startsWith(SERVER_KEY_PREFIX);
|
|
13
|
+
var isServerKeyAuth = (auth) => "serverKey" in auth;
|
|
14
|
+
var isUnsafeServerKeyAuth = (auth) => "unsafeServerKey" in auth;
|
|
15
|
+
var assertServerAuth = (auth) => {
|
|
16
|
+
if (!auth.serverKey || !isServerKey(auth.serverKey)) {
|
|
17
|
+
throw new Error(
|
|
18
|
+
"DatashipsServerClient: a server key (ds_sk_\u2026) is required; public keys belong to DatashipsClient from '@dataships/sdk'"
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
var assertServerRuntime = () => {
|
|
23
|
+
if (typeof globalThis.window !== "undefined") {
|
|
24
|
+
throw new Error(
|
|
25
|
+
"DatashipsServerClient must not run in a browser (it would expose the server key); use DatashipsClient from '@dataships/sdk' with the public key and a merchant-signed token"
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var authHeaders = (auth) => {
|
|
30
|
+
if (isUnsafeServerKeyAuth(auth)) return { "X-Api-Key": auth.unsafeServerKey };
|
|
31
|
+
return isServerKeyAuth(auth) ? { "X-Api-Key": auth.serverKey } : { "X-Api-Key": auth.publicKey, Authorization: `Bearer ${auth.token}` };
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// src/baseUrl.ts
|
|
35
|
+
var PRODUCTION_BASE_URL = "https://api.dataships.io";
|
|
36
|
+
var resolveBaseUrl = (env = "production", baseUrl) => {
|
|
37
|
+
if (baseUrl) return baseUrl;
|
|
38
|
+
if (env === "production") return PRODUCTION_BASE_URL;
|
|
39
|
+
throw new Error(
|
|
40
|
+
`Dataships SDK: env "${env}" has no default base URL; pass \`baseUrl\``
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// src/transport/retry.ts
|
|
45
|
+
var TERMINAL_STATUSES = /* @__PURE__ */ new Set([
|
|
46
|
+
400,
|
|
47
|
+
401,
|
|
48
|
+
403,
|
|
49
|
+
404,
|
|
50
|
+
417,
|
|
51
|
+
422,
|
|
52
|
+
426
|
|
53
|
+
]);
|
|
54
|
+
var isTerminalStatus = (status) => status !== void 0 && TERMINAL_STATUSES.has(status);
|
|
55
|
+
var CONSENT_SESSION_ALREADY_PROCESSED = "CONSENT_SESSION_ALREADY_PROCESSED";
|
|
56
|
+
var TERMINAL_ERROR_CODES = /* @__PURE__ */ new Set([
|
|
57
|
+
CONSENT_SESSION_ALREADY_PROCESSED
|
|
58
|
+
]);
|
|
59
|
+
var isTerminalErrorCode = (errorCode) => errorCode !== void 0 && TERMINAL_ERROR_CODES.has(errorCode);
|
|
60
|
+
var MAX_FAILURES = 4;
|
|
61
|
+
var backoffMs = (failureCount) => failureCount >= MAX_FAILURES ? 0 : failureCount * 2e3;
|
|
62
|
+
var defaultRetryPolicy = {
|
|
63
|
+
shouldRetry: (failureCount, status, errorCode) => !isTerminalStatus(status) && !isTerminalErrorCode(errorCode) && failureCount < MAX_FAILURES,
|
|
64
|
+
delayMs: backoffMs
|
|
65
|
+
};
|
|
66
|
+
var upsertSessionRetryPolicy = defaultRetryPolicy;
|
|
67
|
+
var noRetryPolicy = {
|
|
68
|
+
shouldRetry: () => false,
|
|
69
|
+
delayMs: () => 0
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// src/transport/errors.ts
|
|
73
|
+
var DatashipsError = class extends Error {
|
|
74
|
+
constructor(args) {
|
|
75
|
+
super(`Dataships request failed (${args.status || "network"})`);
|
|
76
|
+
this.name = "DatashipsError";
|
|
77
|
+
this.status = args.status;
|
|
78
|
+
this.body = args.body;
|
|
79
|
+
this.challenge = args.challenge ?? null;
|
|
80
|
+
this.code = errorCodeFromBody(args.body);
|
|
81
|
+
this.reason = reasonFromBody(args.body);
|
|
82
|
+
}
|
|
83
|
+
/** 401 (missing / refused credential) or 403 (unknown, revoked or disabled key). */
|
|
84
|
+
get isAuthenticationFailure() {
|
|
85
|
+
return this.status === 401 || this.status === 403;
|
|
86
|
+
}
|
|
87
|
+
/** 409 `CONSENT_SESSION_ALREADY_PROCESSED`: the session is closed; no later call on it can succeed. */
|
|
88
|
+
get isSessionProcessed() {
|
|
89
|
+
return this.code === CONSENT_SESSION_ALREADY_PROCESSED;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
var errorCodeFromBody = (body) => {
|
|
93
|
+
if (typeof body !== "object" || body === null) return null;
|
|
94
|
+
const errors = body.errors;
|
|
95
|
+
if (!Array.isArray(errors)) return null;
|
|
96
|
+
const code = errors[0]?.code;
|
|
97
|
+
return typeof code === "string" ? code : null;
|
|
98
|
+
};
|
|
99
|
+
var reasonFromBody = (body) => {
|
|
100
|
+
if (typeof body !== "object" || body === null) return null;
|
|
101
|
+
const message = body.message;
|
|
102
|
+
return typeof message === "string" && message.length > 0 ? message : null;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// src/session/consentSession.ts
|
|
106
|
+
var CONSENT_SESSION_START_PATH = "/v1/consent-session";
|
|
107
|
+
var CONSENT_SESSION_CONSENT_PATH = "/v1/consent-session/consent";
|
|
108
|
+
var CONSENT_SESSION_HEARTBEAT_PATH = "/v1/consent-session/heartbeat";
|
|
109
|
+
var CONSENT_SESSION_TRIGGER_VERIFICATION_CODE_PATH = "/v1/consent-session/trigger-verification-code";
|
|
110
|
+
var CONSENT_SESSION_SUBMIT_VERIFICATION_CODE_PATH = "/v1/consent-session/submit-verification-code";
|
|
111
|
+
var CONSENT_SESSION_SUBMIT_PATH = "/v1/consent-session/submit";
|
|
112
|
+
var COUNTRY_NOT_FOUND_CODE = "COUNTRY_NOT_FOUND";
|
|
113
|
+
var SUBMIT_VERIFICATION_CODE_ERROR_CODES = [
|
|
114
|
+
"CODE_EXPIRED",
|
|
115
|
+
"CODE_INVALID",
|
|
116
|
+
"NUMBER_MAX_ATTEMPTS_EXCEEDED"
|
|
117
|
+
];
|
|
118
|
+
var verificationErrorCodeFromBody = errorCodeFromBody;
|
|
119
|
+
var buildUpsertRequest = (args) => ({
|
|
120
|
+
identifier: args.identifier,
|
|
121
|
+
identifierType: args.identifierType,
|
|
122
|
+
locale: args.locale,
|
|
123
|
+
...args.userIp ? { userIp: args.userIp } : {},
|
|
124
|
+
...args.format ? { format: args.format } : {},
|
|
125
|
+
integration: {
|
|
126
|
+
...args.context,
|
|
127
|
+
type: args.integrationType
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
var isCountryNotFound = (error) => error.status === 422 && error.code === COUNTRY_NOT_FOUND_CODE;
|
|
131
|
+
var emptyUpsertResponse = () => ({
|
|
132
|
+
consentSessionId: null,
|
|
133
|
+
consents: [],
|
|
134
|
+
userVerificationRequired: null,
|
|
135
|
+
lastHeartbeat: null,
|
|
136
|
+
identifier: null
|
|
137
|
+
});
|
|
138
|
+
var buildSaveConsentRequest = (args) => ({
|
|
139
|
+
consentSessionId: args.consentSessionId,
|
|
140
|
+
channel: args.channel,
|
|
141
|
+
consent: args.consent
|
|
142
|
+
});
|
|
143
|
+
var buildHeartbeatRequest = (args) => ({
|
|
144
|
+
consentSessionId: args.consentSessionId
|
|
145
|
+
});
|
|
146
|
+
var buildTriggerVerificationCodeRequest = (args) => ({
|
|
147
|
+
consentSessionId: args.consentSessionId
|
|
148
|
+
});
|
|
149
|
+
var buildSubmitVerificationCodeRequest = (args) => ({
|
|
150
|
+
consentSessionId: args.consentSessionId,
|
|
151
|
+
verificationCode: args.verificationCode,
|
|
152
|
+
referenceId: args.referenceId
|
|
153
|
+
});
|
|
154
|
+
var buildSubmitRequest = (args) => {
|
|
155
|
+
const details = { ...args.details };
|
|
156
|
+
if (details.submittedAt instanceof Date) details.submittedAt = details.submittedAt.toISOString();
|
|
157
|
+
if (typeof details.billingCountryCode === "string") {
|
|
158
|
+
details.billingCountryCode = details.billingCountryCode.trim().toUpperCase();
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
datashipsSessionId: args.datashipsSessionId,
|
|
162
|
+
user: normaliseSubmitUser(args.user),
|
|
163
|
+
integration: { ...details, type: args.integrationType }
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
var normaliseSubmitUser = (user) => {
|
|
167
|
+
const firstName = user?.firstName?.trim() ?? "";
|
|
168
|
+
const lastName = user?.lastName?.trim() ?? "";
|
|
169
|
+
if (!firstName || !lastName) {
|
|
170
|
+
throw new Error(
|
|
171
|
+
"submitSession: user.firstName and user.lastName are required (core-api refuses a blank name)"
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
return { firstName, lastName };
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
// src/session/operations.ts
|
|
178
|
+
var upsertSession = async (args) => {
|
|
179
|
+
const { adapter, input } = args;
|
|
180
|
+
const identifier = input.identifier ?? (await adapter.getIdentifier(input.identifierType)).identifier;
|
|
181
|
+
const context = await adapter.getSessionContext();
|
|
182
|
+
const body = buildUpsertRequest({
|
|
183
|
+
integrationType: adapter.integrationType,
|
|
184
|
+
locale: adapter.getLocale(),
|
|
185
|
+
identifier,
|
|
186
|
+
identifierType: input.identifierType,
|
|
187
|
+
userIp: input.userIp,
|
|
188
|
+
format: input.format,
|
|
189
|
+
context
|
|
190
|
+
});
|
|
191
|
+
try {
|
|
192
|
+
const response = await args.post({
|
|
193
|
+
path: CONSENT_SESSION_START_PATH,
|
|
194
|
+
body,
|
|
195
|
+
retry: args.retry
|
|
196
|
+
});
|
|
197
|
+
return response ?? emptyUpsertResponse();
|
|
198
|
+
} catch (error) {
|
|
199
|
+
if (error instanceof DatashipsError && isCountryNotFound(error)) {
|
|
200
|
+
return emptyUpsertResponse();
|
|
201
|
+
}
|
|
202
|
+
throw error;
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
var saveConsent = (args) => args.post({
|
|
206
|
+
path: CONSENT_SESSION_CONSENT_PATH,
|
|
207
|
+
body: buildSaveConsentRequest({
|
|
208
|
+
consentSessionId: args.consentSessionId,
|
|
209
|
+
channel: args.channel,
|
|
210
|
+
consent: args.consent
|
|
211
|
+
}),
|
|
212
|
+
retry: args.retry
|
|
213
|
+
});
|
|
214
|
+
var heartbeat = (args) => args.post({
|
|
215
|
+
path: CONSENT_SESSION_HEARTBEAT_PATH,
|
|
216
|
+
body: buildHeartbeatRequest({ consentSessionId: args.consentSessionId }),
|
|
217
|
+
retry: args.retry
|
|
218
|
+
});
|
|
219
|
+
var triggerVerificationCode = (args) => args.post({
|
|
220
|
+
path: CONSENT_SESSION_TRIGGER_VERIFICATION_CODE_PATH,
|
|
221
|
+
body: buildTriggerVerificationCodeRequest({
|
|
222
|
+
consentSessionId: args.consentSessionId
|
|
223
|
+
}),
|
|
224
|
+
retry: noRetryPolicy
|
|
225
|
+
});
|
|
226
|
+
var submitVerificationCode = async (args) => {
|
|
227
|
+
try {
|
|
228
|
+
await args.post({
|
|
229
|
+
path: CONSENT_SESSION_SUBMIT_VERIFICATION_CODE_PATH,
|
|
230
|
+
body: buildSubmitVerificationCodeRequest({
|
|
231
|
+
consentSessionId: args.consentSessionId,
|
|
232
|
+
verificationCode: args.verificationCode,
|
|
233
|
+
referenceId: args.referenceId
|
|
234
|
+
}),
|
|
235
|
+
retry: noRetryPolicy
|
|
236
|
+
});
|
|
237
|
+
return { verified: true, errorCode: null };
|
|
238
|
+
} catch (error) {
|
|
239
|
+
if (error instanceof DatashipsError && error.status === 400) {
|
|
240
|
+
return {
|
|
241
|
+
verified: false,
|
|
242
|
+
errorCode: verificationErrorCodeFromBody(error.body)
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
var submitSession = async (args) => {
|
|
249
|
+
const { adapter, input } = args;
|
|
250
|
+
const datashipsSessionId = input.datashipsSessionId ?? adapter.getDatashipsSessionId?.();
|
|
251
|
+
if (!datashipsSessionId) {
|
|
252
|
+
throw new Error(
|
|
253
|
+
"submitSession: datashipsSessionId is required; this adapter holds no beacon of its own"
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
await args.post({
|
|
257
|
+
path: CONSENT_SESSION_SUBMIT_PATH,
|
|
258
|
+
body: buildSubmitRequest({
|
|
259
|
+
datashipsSessionId,
|
|
260
|
+
integrationType: adapter.integrationType,
|
|
261
|
+
user: input.user,
|
|
262
|
+
details: input.details
|
|
263
|
+
}),
|
|
264
|
+
retry: args.retry
|
|
265
|
+
});
|
|
266
|
+
if (input.datashipsSessionId === void 0 && input.resetBeacon !== false) {
|
|
267
|
+
adapter.resetDatashipsSessionId?.();
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
// src/transport/fetch.ts
|
|
272
|
+
var postJson = async ({
|
|
273
|
+
url,
|
|
274
|
+
headers,
|
|
275
|
+
body,
|
|
276
|
+
fetch,
|
|
277
|
+
retry
|
|
278
|
+
}) => {
|
|
279
|
+
let attempt = 0;
|
|
280
|
+
while (true) {
|
|
281
|
+
let response;
|
|
282
|
+
let networkError;
|
|
283
|
+
const attemptHeaders = typeof headers === "function" ? await headers() : headers;
|
|
284
|
+
try {
|
|
285
|
+
response = await fetch(url, {
|
|
286
|
+
method: "POST",
|
|
287
|
+
headers: { "Content-Type": "application/json", ...attemptHeaders },
|
|
288
|
+
body: JSON.stringify(body)
|
|
289
|
+
});
|
|
290
|
+
} catch (err) {
|
|
291
|
+
networkError = err;
|
|
292
|
+
}
|
|
293
|
+
const status = response?.status;
|
|
294
|
+
const ok = response?.ok ?? false;
|
|
295
|
+
if (ok && response) {
|
|
296
|
+
const text = await response.text();
|
|
297
|
+
return text ? JSON.parse(text) : void 0;
|
|
298
|
+
}
|
|
299
|
+
const errorBody = response ? await readBody(response) : null;
|
|
300
|
+
const errorCode = errorCodeFromBody(errorBody) ?? void 0;
|
|
301
|
+
if (!retry.shouldRetry(attempt, status, errorCode)) {
|
|
302
|
+
if (networkError) throw networkError;
|
|
303
|
+
throw new DatashipsError({
|
|
304
|
+
status: status ?? 0,
|
|
305
|
+
body: errorBody,
|
|
306
|
+
challenge: response?.headers.get("WWW-Authenticate") ?? null
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
attempt += 1;
|
|
310
|
+
const delay = retry.delayMs(attempt);
|
|
311
|
+
if (delay > 0) await new Promise((r) => setTimeout(r, delay));
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
var readBody = async (response) => {
|
|
315
|
+
const text = await response.text();
|
|
316
|
+
if (!text) return null;
|
|
317
|
+
try {
|
|
318
|
+
return JSON.parse(text);
|
|
319
|
+
} catch {
|
|
320
|
+
return text;
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
// src/types.ts
|
|
325
|
+
var SUPPORTED_LOCALES = [
|
|
326
|
+
"en",
|
|
327
|
+
"es",
|
|
328
|
+
"de",
|
|
329
|
+
"pt",
|
|
330
|
+
"ro",
|
|
331
|
+
"hr",
|
|
332
|
+
"da",
|
|
333
|
+
"fi",
|
|
334
|
+
"fr",
|
|
335
|
+
"hu",
|
|
336
|
+
"it",
|
|
337
|
+
"nb",
|
|
338
|
+
"pl",
|
|
339
|
+
"sk",
|
|
340
|
+
"sv",
|
|
341
|
+
"nl",
|
|
342
|
+
"el",
|
|
343
|
+
"cs",
|
|
344
|
+
"zh",
|
|
345
|
+
"ja",
|
|
346
|
+
"is"
|
|
347
|
+
];
|
|
348
|
+
|
|
349
|
+
// src/server.ts
|
|
350
|
+
var _auth, _fetch, _upsertSessionRetry, _defaultRetry, _DatashipsServerClient_instances, post_fn;
|
|
351
|
+
var DatashipsServerClient = class {
|
|
352
|
+
constructor(opts) {
|
|
353
|
+
__privateAdd(this, _DatashipsServerClient_instances);
|
|
354
|
+
__privateAdd(this, _auth);
|
|
355
|
+
__privateAdd(this, _fetch);
|
|
356
|
+
__privateAdd(this, _upsertSessionRetry);
|
|
357
|
+
__privateAdd(this, _defaultRetry);
|
|
358
|
+
assertServerRuntime();
|
|
359
|
+
assertServerAuth(opts.auth);
|
|
360
|
+
__privateSet(this, _auth, opts.auth);
|
|
361
|
+
this.adapter = opts.adapter;
|
|
362
|
+
this.app = opts.app;
|
|
363
|
+
this.version = opts.version;
|
|
364
|
+
this.baseUrl = resolveBaseUrl(opts.env, opts.baseUrl);
|
|
365
|
+
__privateSet(this, _fetch, opts.fetch ?? globalThis.fetch.bind(globalThis));
|
|
366
|
+
__privateSet(this, _upsertSessionRetry, opts.retry?.upsertSession ?? upsertSessionRetryPolicy);
|
|
367
|
+
__privateSet(this, _defaultRetry, opts.retry?.default ?? defaultRetryPolicy);
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Open or update the consent session for one identifier type. `userIp` is
|
|
371
|
+
* mandatory: the connection IP is this server's, and the API geolocates the
|
|
372
|
+
* user from the IP it is given. An empty `consents` means render nothing.
|
|
373
|
+
*/
|
|
374
|
+
upsertSession(input) {
|
|
375
|
+
if (!input.userIp) {
|
|
376
|
+
throw new Error(
|
|
377
|
+
"DatashipsServerClient: userIp is required; the connection IP is your server's, not the user's"
|
|
378
|
+
);
|
|
379
|
+
}
|
|
380
|
+
return upsertSession({
|
|
381
|
+
adapter: this.adapter,
|
|
382
|
+
input,
|
|
383
|
+
post: __privateMethod(this, _DatashipsServerClient_instances, post_fn).bind(this),
|
|
384
|
+
retry: __privateGet(this, _upsertSessionRetry)
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
saveConsent(input) {
|
|
388
|
+
return saveConsent({
|
|
389
|
+
...input,
|
|
390
|
+
post: __privateMethod(this, _DatashipsServerClient_instances, post_fn).bind(this),
|
|
391
|
+
retry: __privateGet(this, _defaultRetry)
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Complete the sessions opened under a beacon (`POST /v1/consent-session/submit`),
|
|
396
|
+
* typically from the order-created hook. `datashipsSessionId` is required:
|
|
397
|
+
* a server holds no beacon, so the storefront must have passed it along with
|
|
398
|
+
* the order.
|
|
399
|
+
*/
|
|
400
|
+
submitSession(input) {
|
|
401
|
+
if (!input.datashipsSessionId) {
|
|
402
|
+
throw new Error(
|
|
403
|
+
"DatashipsServerClient: datashipsSessionId is required; the storefront's beacon must travel with the order"
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
return submitSession({
|
|
407
|
+
adapter: this.adapter,
|
|
408
|
+
input,
|
|
409
|
+
post: __privateMethod(this, _DatashipsServerClient_instances, post_fn).bind(this),
|
|
410
|
+
retry: __privateGet(this, _defaultRetry)
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
/** One heartbeat. Servers schedule their own cadence; there is no interval helper here. */
|
|
414
|
+
heartbeat(input) {
|
|
415
|
+
return heartbeat({
|
|
416
|
+
consentSessionId: input.consentSessionId,
|
|
417
|
+
post: __privateMethod(this, _DatashipsServerClient_instances, post_fn).bind(this),
|
|
418
|
+
retry: __privateGet(this, _defaultRetry)
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
triggerVerificationCode(input) {
|
|
422
|
+
return triggerVerificationCode({
|
|
423
|
+
consentSessionId: input.consentSessionId,
|
|
424
|
+
post: __privateMethod(this, _DatashipsServerClient_instances, post_fn).bind(this)
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
submitVerificationCode(input) {
|
|
428
|
+
return submitVerificationCode({
|
|
429
|
+
...input,
|
|
430
|
+
post: __privateMethod(this, _DatashipsServerClient_instances, post_fn).bind(this)
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
};
|
|
434
|
+
_auth = new WeakMap();
|
|
435
|
+
_fetch = new WeakMap();
|
|
436
|
+
_upsertSessionRetry = new WeakMap();
|
|
437
|
+
_defaultRetry = new WeakMap();
|
|
438
|
+
_DatashipsServerClient_instances = new WeakSet();
|
|
439
|
+
post_fn = async function(args) {
|
|
440
|
+
return postJson({
|
|
441
|
+
url: `${this.baseUrl}${args.path}`,
|
|
442
|
+
headers: {
|
|
443
|
+
...authHeaders(__privateGet(this, _auth)),
|
|
444
|
+
"X-Dataships-App": `${this.app} (SDK: ${this.adapter.name})`,
|
|
445
|
+
"X-Dataships-Version": `${this.version} (SDK: ${"2.0.0"})`
|
|
446
|
+
},
|
|
447
|
+
body: args.body,
|
|
448
|
+
fetch: __privateGet(this, _fetch),
|
|
449
|
+
retry: args.retry
|
|
450
|
+
});
|
|
451
|
+
};
|
|
452
|
+
|
|
453
|
+
export { COUNTRY_NOT_FOUND_CODE, DatashipsError, DatashipsError as DatashipsHttpError, DatashipsServerClient, SUBMIT_VERIFICATION_CODE_ERROR_CODES, SUPPORTED_LOCALES, defaultRetryPolicy, noRetryPolicy, upsertSessionRetryPolicy };
|
|
454
|
+
//# sourceMappingURL=server.js.map
|
|
455
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/auth/headers.ts","../src/baseUrl.ts","../src/transport/retry.ts","../src/transport/errors.ts","../src/session/consentSession.ts","../src/session/operations.ts","../src/transport/fetch.ts","../src/types.ts","../src/server.ts"],"names":[],"mappings":"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","file":"server.js"}
|