@uengage.io/platform-sdk 0.15.0 → 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/README.md +90 -0
- package/dist/client.d.ts +13 -0
- package/dist/client.js +4 -1
- package/dist/config.d.ts +0 -5
- package/dist/config.js +14 -3
- package/dist/errors.d.ts +17 -0
- package/dist/errors.js +21 -2
- package/dist/events/client.d.ts +81 -0
- package/dist/events/client.js +216 -0
- package/dist/events/index.d.ts +15 -0
- package/dist/events/index.js +41 -0
- package/dist/events/schema.d.ts +58 -0
- package/dist/events/schema.js +67 -0
- package/dist/http.js +25 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -1
- package/dist/realtime/connect.d.ts +106 -0
- package/dist/realtime/connect.js +450 -0
- package/dist/realtime/endpoints.d.ts +25 -0
- package/dist/realtime/endpoints.js +31 -0
- package/dist/realtime/envelope.d.ts +54 -0
- package/dist/realtime/envelope.js +77 -0
- package/dist/realtime/index.d.ts +37 -0
- package/dist/realtime/index.js +49 -0
- package/dist/realtime/protocol.d.ts +73 -0
- package/dist/realtime/protocol.js +89 -0
- package/dist/upsell/client.d.ts +44 -0
- package/dist/upsell/client.js +136 -0
- package/dist/upsell/index.d.ts +2 -0
- package/dist/upsell/index.js +7 -0
- package/dist/upsell/schema.d.ts +203 -0
- package/dist/upsell/schema.js +12 -0
- package/dist/version.d.ts +7 -1
- package/dist/version.js +8 -2
- package/package.json +38 -2
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpsellApiError = void 0;
|
|
4
|
+
exports.createUpsellClient = createUpsellClient;
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const http_1 = require("../http");
|
|
7
|
+
class UpsellApiError extends Error {
|
|
8
|
+
status;
|
|
9
|
+
body;
|
|
10
|
+
constructor(status, body) {
|
|
11
|
+
super(`upsell API ${status}: ${body}`);
|
|
12
|
+
this.name = 'UpsellApiError';
|
|
13
|
+
this.status = status;
|
|
14
|
+
this.body = body;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.UpsellApiError = UpsellApiError;
|
|
18
|
+
function assertPositiveInt(label, value) {
|
|
19
|
+
if (!Number.isInteger(value) || value <= 0) {
|
|
20
|
+
throw new Error(`upsell.${label}: expected a positive integer (got ${JSON.stringify(value)})`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function assertTenantIds(label, input) {
|
|
24
|
+
if (input.parentId !== undefined)
|
|
25
|
+
assertPositiveInt(`${label}.parentId`, input.parentId);
|
|
26
|
+
if (input.businessId !== undefined) {
|
|
27
|
+
assertPositiveInt(`${label}.businessId`, input.businessId);
|
|
28
|
+
if (input.parentId === undefined) {
|
|
29
|
+
throw new Error(`upsell.${label}: businessId requires parentId`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Build the `upsell` namespace.
|
|
35
|
+
*
|
|
36
|
+
* Shape and contract mirror {@link createZonesClient} - lazy config
|
|
37
|
+
* resolution via {@link ConfigState}, shared 401-retry via
|
|
38
|
+
* {@link sendWithAuthRetry}, immutable per-call config; no globals.
|
|
39
|
+
*
|
|
40
|
+
* Reads (`placements`, `suggest`) accept user or service tokens —
|
|
41
|
+
* channel apps call them with customer session JWTs. Admin methods
|
|
42
|
+
* require a service-actor token; the server answers 403 otherwise and
|
|
43
|
+
* we surface it as {@link UpsellApiError}.
|
|
44
|
+
*/
|
|
45
|
+
function createUpsellClient(input = {}) {
|
|
46
|
+
const state = new config_1.ConfigState();
|
|
47
|
+
state.apply(input);
|
|
48
|
+
async function send(method, path, query, body) {
|
|
49
|
+
const config = state.resolve();
|
|
50
|
+
const url = `${config.baseUrl}${path}${query ?? ''}`;
|
|
51
|
+
const payload = body === undefined ? undefined : JSON.stringify(body);
|
|
52
|
+
return (0, http_1.sendWithAuthRetry)(config, { method, path, url, body: payload });
|
|
53
|
+
}
|
|
54
|
+
async function expectJson(res) {
|
|
55
|
+
if (!res.ok)
|
|
56
|
+
throw new UpsellApiError(res.status, await res.text());
|
|
57
|
+
return (await res.json());
|
|
58
|
+
}
|
|
59
|
+
const client = {
|
|
60
|
+
config(opts) {
|
|
61
|
+
state.apply(opts);
|
|
62
|
+
return client;
|
|
63
|
+
},
|
|
64
|
+
auth(opts) {
|
|
65
|
+
state.setAuth(opts);
|
|
66
|
+
return client;
|
|
67
|
+
},
|
|
68
|
+
async placements(query) {
|
|
69
|
+
assertPositiveInt('placements.parentId', query.parentId);
|
|
70
|
+
assertPositiveInt('placements.businessId', query.businessId);
|
|
71
|
+
const params = new URLSearchParams({
|
|
72
|
+
channel: query.channel,
|
|
73
|
+
parentId: String(query.parentId),
|
|
74
|
+
businessId: String(query.businessId),
|
|
75
|
+
});
|
|
76
|
+
const res = await send('GET', '/v1/upsell/placements', `?${params.toString()}`);
|
|
77
|
+
const body = await expectJson(res);
|
|
78
|
+
return body.placements;
|
|
79
|
+
},
|
|
80
|
+
async suggest(input) {
|
|
81
|
+
if (!input || typeof input !== 'object' || !input.tenant) {
|
|
82
|
+
throw new Error('upsell.suggest: input must include `tenant` and `context.cart`');
|
|
83
|
+
}
|
|
84
|
+
assertPositiveInt('suggest.tenant.parentId', input.tenant.parentId);
|
|
85
|
+
assertPositiveInt('suggest.tenant.businessId', input.tenant.businessId);
|
|
86
|
+
if (!input.context?.cart || !Array.isArray(input.context.cart.items)) {
|
|
87
|
+
throw new Error('upsell.suggest: context.cart.items must be an array');
|
|
88
|
+
}
|
|
89
|
+
const res = await send('POST', '/v1/upsell/suggestions', undefined, input);
|
|
90
|
+
return expectJson(res);
|
|
91
|
+
},
|
|
92
|
+
async reportEvents(input) {
|
|
93
|
+
if (!input?.events?.length) {
|
|
94
|
+
throw new Error('upsell.reportEvents: events must be a non-empty array');
|
|
95
|
+
}
|
|
96
|
+
assertPositiveInt('reportEvents.tenant.parentId', input.tenant.parentId);
|
|
97
|
+
assertPositiveInt('reportEvents.tenant.businessId', input.tenant.businessId);
|
|
98
|
+
const res = await send('POST', '/v1/upsell/events', undefined, input);
|
|
99
|
+
return expectJson(res);
|
|
100
|
+
},
|
|
101
|
+
async adminListPlacements(opts = {}) {
|
|
102
|
+
if (opts.parentId !== undefined)
|
|
103
|
+
assertPositiveInt('adminListPlacements.parentId', opts.parentId);
|
|
104
|
+
const qs = opts.parentId !== undefined ? `?parentId=${opts.parentId}` : undefined;
|
|
105
|
+
const res = await send('GET', '/v1/upsell/admin/placements', qs);
|
|
106
|
+
const body = await expectJson(res);
|
|
107
|
+
return body.placements;
|
|
108
|
+
},
|
|
109
|
+
async adminUpsertPlacement(input) {
|
|
110
|
+
assertTenantIds('adminUpsertPlacement', input);
|
|
111
|
+
const res = await send('PUT', '/v1/upsell/admin/placements', undefined, input);
|
|
112
|
+
return expectJson(res);
|
|
113
|
+
},
|
|
114
|
+
async adminDeletePlacement(input) {
|
|
115
|
+
assertTenantIds('adminDeletePlacement', input);
|
|
116
|
+
const params = new URLSearchParams({ channel: input.channel, key: input.key });
|
|
117
|
+
if (input.parentId !== undefined)
|
|
118
|
+
params.set('parentId', String(input.parentId));
|
|
119
|
+
if (input.businessId !== undefined)
|
|
120
|
+
params.set('businessId', String(input.businessId));
|
|
121
|
+
// Omitting parentId targets the platform default row, which the
|
|
122
|
+
// server refuses to delete without an explicit confirmation. Send
|
|
123
|
+
// the flag through rather than inferring it, so a caller that meant
|
|
124
|
+
// to scope the delete still gets the 400 instead of silently
|
|
125
|
+
// wiping the default for every tenant.
|
|
126
|
+
if (input.confirmDeleteDefault)
|
|
127
|
+
params.set('confirmDeleteDefault', 'true');
|
|
128
|
+
const res = await send('DELETE', '/v1/upsell/admin/placements', `?${params.toString()}`);
|
|
129
|
+
if (res.status === 204)
|
|
130
|
+
return;
|
|
131
|
+
throw new UpsellApiError(res.status, await res.text());
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
return client;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Vwc2VsbC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBaUZBLGdEQW9HQztBQXJMRCxzQ0FLbUI7QUFDbkIsa0NBQTRDO0FBbUM1QyxNQUFhLGNBQWUsU0FBUSxLQUFLO0lBQzlCLE1BQU0sQ0FBUztJQUNmLElBQUksQ0FBUztJQUV0QixZQUFZLE1BQWMsRUFBRSxJQUFZO1FBQ3RDLEtBQUssQ0FBQyxjQUFjLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztDQUNGO0FBVkQsd0NBVUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxzQ0FBc0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakcsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxLQUFhLEVBQUUsS0FBaUQ7SUFDdkYsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVM7UUFBRSxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6RixJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDbkMsaUJBQWlCLENBQUMsR0FBRyxLQUFLLGFBQWEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0QsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLGdDQUFnQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxRQUE2QixFQUFFO0lBQ2hFLE1BQU0sS0FBSyxHQUFHLElBQUksb0JBQVcsRUFBRSxDQUFDO0lBQ2hDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkIsS0FBSyxVQUFVLElBQUksQ0FDakIsTUFBYyxFQUNkLElBQVksRUFDWixLQUFjLEVBQ2QsSUFBYztRQUVkLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEUsT0FBTyxJQUFBLHdCQUFpQixFQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxLQUFLLFVBQVUsVUFBVSxDQUFJLEdBQWE7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQUUsTUFBTSxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDcEUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFpQjtRQUMzQixNQUFNLENBQUMsSUFBSTtZQUNULEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJO1lBQ1AsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLO1lBQ3BCLGlCQUFpQixDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6RCxpQkFBaUIsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUNoQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7YUFDckMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLHVCQUF1QixFQUFFLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNoRixNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBOEIsR0FBRyxDQUFDLENBQUM7WUFDaEUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDakIsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztZQUNwRixDQUFDO1lBQ0QsaUJBQWlCLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRSxpQkFBaUIsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7WUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNFLE9BQU8sVUFBVSxDQUFvQixHQUFHLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7WUFDM0UsQ0FBQztZQUNELGlCQUFpQixDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekUsaUJBQWlCLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM3RSxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RFLE9BQU8sVUFBVSxDQUF1QixHQUFHLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLElBQUksR0FBRyxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTO2dCQUM3QixpQkFBaUIsQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbEYsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLDZCQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sSUFBSSxHQUFHLE1BQU0sVUFBVSxDQUFvQyxHQUFHLENBQUMsQ0FBQztZQUN0RSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQztRQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLO1lBQzlCLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9FLE9BQU8sVUFBVSxDQUFrQixHQUFHLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsS0FBSyxDQUFDLG9CQUFvQixDQUFDLEtBQUs7WUFDOUIsZUFBZSxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxTQUFTO2dCQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNqRixJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUztnQkFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDdkYsZ0VBQWdFO1lBQ2hFLGtFQUFrRTtZQUNsRSxvRUFBb0U7WUFDcEUsNkRBQTZEO1lBQzdELHVDQUF1QztZQUN2QyxJQUFJLEtBQUssQ0FBQyxvQkFBb0I7Z0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzRSxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pGLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHO2dCQUFFLE9BQU87WUFDL0IsTUFBTSxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQztLQUNGLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uZmlnU3RhdGUsXG4gIHR5cGUgUGxhdGZvcm1BdXRoLFxuICB0eXBlIFBsYXRmb3JtQXV0aElucHV0LFxuICB0eXBlIFBsYXRmb3JtQ29uZmlnSW5wdXQsXG59IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBzZW5kV2l0aEF1dGhSZXRyeSB9IGZyb20gJy4uL2h0dHAnO1xuaW1wb3J0IHR5cGUge1xuICBQbGFjZW1lbnQsXG4gIFBsYWNlbWVudERlbGV0ZUlucHV0LFxuICBQbGFjZW1lbnRSZWNvcmQsXG4gIFBsYWNlbWVudFVwc2VydElucHV0LFxuICBQbGFjZW1lbnRzUXVlcnksXG4gIFN1Z2dlc3Rpb25zSW5wdXQsXG4gIFN1Z2dlc3Rpb25zUmVzdWx0LFxuICBVcHNlbGxFdmVudHNJbnB1dCxcbn0gZnJvbSAnLi9zY2hlbWEnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVwc2VsbENsaWVudCB7XG4gIGNvbmZpZyhpbnB1dDogUGxhdGZvcm1Db25maWdJbnB1dCk6IFVwc2VsbENsaWVudDtcbiAgYXV0aChpbnB1dDogUGxhdGZvcm1BdXRoSW5wdXQgfCBQbGF0Zm9ybUF1dGgpOiBVcHNlbGxDbGllbnQ7XG5cbiAgLyoqIEdFVCAvdjEvdXBzZWxsL3BsYWNlbWVudHMgLSByZXNvbHZlZCBwbGFjZW1lbnRzIGZvciBhIGNoYW5uZWwgKyB0ZW5hbnQuICovXG4gIHBsYWNlbWVudHMocXVlcnk6IFBsYWNlbWVudHNRdWVyeSk6IFByb21pc2U8UGxhY2VtZW50W10+O1xuICAvKiogUE9TVCAvdjEvdXBzZWxsL3N1Z2dlc3Rpb25zIC0gaXRlbXMgZm9yIG9uZSBwbGFjZW1lbnQgZ2l2ZW4gdGhlIGxpdmUgY2FydC4gKi9cbiAgc3VnZ2VzdChpbnB1dDogU3VnZ2VzdGlvbnNJbnB1dCk6IFByb21pc2U8U3VnZ2VzdGlvbnNSZXN1bHQ+O1xuICAvKipcbiAgICogUE9TVCAvdjEvdXBzZWxsL2V2ZW50cyAtIHJlcG9ydCBzaG93biAvIGFkZGVkIC8gaWdub3JlZCBmb3IgYVxuICAgKiByZW5kZXJlZCBwbGFjZW1lbnQuIEZpcmUtYW5kLWZvcmdldDsgZmVlZHMgYXR0YWNoLXJhdGUgbWVhc3VyZW1lbnRcbiAgICogYW5kIHRoZSB3ZWlnaHQgdHVuaW5nIHRoYXQgZm9sbG93cyBpdC5cbiAgICovXG4gIHJlcG9ydEV2ZW50cyhpbnB1dDogVXBzZWxsRXZlbnRzSW5wdXQpOiBQcm9taXNlPHsgYWNjZXB0ZWQ6IG51bWJlciB9PjtcblxuICAvKiogR0VUIC92MS91cHNlbGwvYWRtaW4vcGxhY2VtZW50cyAtIHJhdyBjb25maWcgcm93cyAoc2VydmljZS1hY3RvciBvbmx5KS4gKi9cbiAgYWRtaW5MaXN0UGxhY2VtZW50cyhvcHRzPzogeyBwYXJlbnRJZD86IG51bWJlciB9KTogUHJvbWlzZTxQbGFjZW1lbnRSZWNvcmRbXT47XG4gIC8qKiBQVVQgL3YxL3Vwc2VsbC9hZG1pbi9wbGFjZW1lbnRzIC0gY3JlYXRlL3JlcGxhY2UgYSBjb25maWcgcm93IChzZXJ2aWNlLWFjdG9yIG9ubHkpLiAqL1xuICBhZG1pblVwc2VydFBsYWNlbWVudChpbnB1dDogUGxhY2VtZW50VXBzZXJ0SW5wdXQpOiBQcm9taXNlPFBsYWNlbWVudFJlY29yZD47XG4gIC8qKiBERUxFVEUgL3YxL3Vwc2VsbC9hZG1pbi9wbGFjZW1lbnRzIC0gdGhyb3dzIFVwc2VsbEFwaUVycm9yKDQwNCkgaWYgYWJzZW50LiAqL1xuICBhZG1pbkRlbGV0ZVBsYWNlbWVudChpbnB1dDogUGxhY2VtZW50RGVsZXRlSW5wdXQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgY2xhc3MgVXBzZWxsQXBpRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IHN0YXR1czogbnVtYmVyO1xuICByZWFkb25seSBib2R5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc3RhdHVzOiBudW1iZXIsIGJvZHk6IHN0cmluZykge1xuICAgIHN1cGVyKGB1cHNlbGwgQVBJICR7c3RhdHVzfTogJHtib2R5fWApO1xuICAgIHRoaXMubmFtZSA9ICdVcHNlbGxBcGlFcnJvcic7XG4gICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7XG4gICAgdGhpcy5ib2R5ID0gYm9keTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRQb3NpdGl2ZUludChsYWJlbDogc3RyaW5nLCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkgfHwgdmFsdWUgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdXBzZWxsLiR7bGFiZWx9OiBleHBlY3RlZCBhIHBvc2l0aXZlIGludGVnZXIgKGdvdCAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0pYCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VGVuYW50SWRzKGxhYmVsOiBzdHJpbmcsIGlucHV0OiB7IHBhcmVudElkPzogbnVtYmVyOyBidXNpbmVzc0lkPzogbnVtYmVyIH0pOiB2b2lkIHtcbiAgaWYgKGlucHV0LnBhcmVudElkICE9PSB1bmRlZmluZWQpIGFzc2VydFBvc2l0aXZlSW50KGAke2xhYmVsfS5wYXJlbnRJZGAsIGlucHV0LnBhcmVudElkKTtcbiAgaWYgKGlucHV0LmJ1c2luZXNzSWQgIT09IHVuZGVmaW5lZCkge1xuICAgIGFzc2VydFBvc2l0aXZlSW50KGAke2xhYmVsfS5idXNpbmVzc0lkYCwgaW5wdXQuYnVzaW5lc3NJZCk7XG4gICAgaWYgKGlucHV0LnBhcmVudElkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdXBzZWxsLiR7bGFiZWx9OiBidXNpbmVzc0lkIHJlcXVpcmVzIHBhcmVudElkYCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIGB1cHNlbGxgIG5hbWVzcGFjZS5cbiAqXG4gKiBTaGFwZSBhbmQgY29udHJhY3QgbWlycm9yIHtAbGluayBjcmVhdGVab25lc0NsaWVudH0gLSBsYXp5IGNvbmZpZ1xuICogcmVzb2x1dGlvbiB2aWEge0BsaW5rIENvbmZpZ1N0YXRlfSwgc2hhcmVkIDQwMS1yZXRyeSB2aWFcbiAqIHtAbGluayBzZW5kV2l0aEF1dGhSZXRyeX0sIGltbXV0YWJsZSBwZXItY2FsbCBjb25maWc7IG5vIGdsb2JhbHMuXG4gKlxuICogUmVhZHMgKGBwbGFjZW1lbnRzYCwgYHN1Z2dlc3RgKSBhY2NlcHQgdXNlciBvciBzZXJ2aWNlIHRva2VucyDigJRcbiAqIGNoYW5uZWwgYXBwcyBjYWxsIHRoZW0gd2l0aCBjdXN0b21lciBzZXNzaW9uIEpXVHMuIEFkbWluIG1ldGhvZHNcbiAqIHJlcXVpcmUgYSBzZXJ2aWNlLWFjdG9yIHRva2VuOyB0aGUgc2VydmVyIGFuc3dlcnMgNDAzIG90aGVyd2lzZSBhbmRcbiAqIHdlIHN1cmZhY2UgaXQgYXMge0BsaW5rIFVwc2VsbEFwaUVycm9yfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVwc2VsbENsaWVudChpbnB1dDogUGxhdGZvcm1Db25maWdJbnB1dCA9IHt9KTogVXBzZWxsQ2xpZW50IHtcbiAgY29uc3Qgc3RhdGUgPSBuZXcgQ29uZmlnU3RhdGUoKTtcbiAgc3RhdGUuYXBwbHkoaW5wdXQpO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNlbmQoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIHF1ZXJ5Pzogc3RyaW5nLFxuICAgIGJvZHk/OiB1bmtub3duLFxuICApOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY29uZmlnID0gc3RhdGUucmVzb2x2ZSgpO1xuICAgIGNvbnN0IHVybCA9IGAke2NvbmZpZy5iYXNlVXJsfSR7cGF0aH0ke3F1ZXJ5ID8/ICcnfWA7XG4gICAgY29uc3QgcGF5bG9hZCA9IGJvZHkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgIHJldHVybiBzZW5kV2l0aEF1dGhSZXRyeShjb25maWcsIHsgbWV0aG9kLCBwYXRoLCB1cmwsIGJvZHk6IHBheWxvYWQgfSk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBleHBlY3RKc29uPFQ+KHJlczogUmVzcG9uc2UpOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAoIXJlcy5vaykgdGhyb3cgbmV3IFVwc2VsbEFwaUVycm9yKHJlcy5zdGF0dXMsIGF3YWl0IHJlcy50ZXh0KCkpO1xuICAgIHJldHVybiAoYXdhaXQgcmVzLmpzb24oKSkgYXMgVDtcbiAgfVxuXG4gIGNvbnN0IGNsaWVudDogVXBzZWxsQ2xpZW50ID0ge1xuICAgIGNvbmZpZyhvcHRzKSB7XG4gICAgICBzdGF0ZS5hcHBseShvcHRzKTtcbiAgICAgIHJldHVybiBjbGllbnQ7XG4gICAgfSxcbiAgICBhdXRoKG9wdHMpIHtcbiAgICAgIHN0YXRlLnNldEF1dGgob3B0cyk7XG4gICAgICByZXR1cm4gY2xpZW50O1xuICAgIH0sXG5cbiAgICBhc3luYyBwbGFjZW1lbnRzKHF1ZXJ5KSB7XG4gICAgICBhc3NlcnRQb3NpdGl2ZUludCgncGxhY2VtZW50cy5wYXJlbnRJZCcsIHF1ZXJ5LnBhcmVudElkKTtcbiAgICAgIGFzc2VydFBvc2l0aXZlSW50KCdwbGFjZW1lbnRzLmJ1c2luZXNzSWQnLCBxdWVyeS5idXNpbmVzc0lkKTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgICBjaGFubmVsOiBxdWVyeS5jaGFubmVsLFxuICAgICAgICBwYXJlbnRJZDogU3RyaW5nKHF1ZXJ5LnBhcmVudElkKSxcbiAgICAgICAgYnVzaW5lc3NJZDogU3RyaW5nKHF1ZXJ5LmJ1c2luZXNzSWQpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBzZW5kKCdHRVQnLCAnL3YxL3Vwc2VsbC9wbGFjZW1lbnRzJywgYD8ke3BhcmFtcy50b1N0cmluZygpfWApO1xuICAgICAgY29uc3QgYm9keSA9IGF3YWl0IGV4cGVjdEpzb248eyBwbGFjZW1lbnRzOiBQbGFjZW1lbnRbXSB9PihyZXMpO1xuICAgICAgcmV0dXJuIGJvZHkucGxhY2VtZW50cztcbiAgICB9LFxuXG4gICAgYXN5bmMgc3VnZ2VzdChpbnB1dCkge1xuICAgICAgaWYgKCFpbnB1dCB8fCB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnIHx8ICFpbnB1dC50ZW5hbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1cHNlbGwuc3VnZ2VzdDogaW5wdXQgbXVzdCBpbmNsdWRlIGB0ZW5hbnRgIGFuZCBgY29udGV4dC5jYXJ0YCcpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0UG9zaXRpdmVJbnQoJ3N1Z2dlc3QudGVuYW50LnBhcmVudElkJywgaW5wdXQudGVuYW50LnBhcmVudElkKTtcbiAgICAgIGFzc2VydFBvc2l0aXZlSW50KCdzdWdnZXN0LnRlbmFudC5idXNpbmVzc0lkJywgaW5wdXQudGVuYW50LmJ1c2luZXNzSWQpO1xuICAgICAgaWYgKCFpbnB1dC5jb250ZXh0Py5jYXJ0IHx8ICFBcnJheS5pc0FycmF5KGlucHV0LmNvbnRleHQuY2FydC5pdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1cHNlbGwuc3VnZ2VzdDogY29udGV4dC5jYXJ0Lml0ZW1zIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHNlbmQoJ1BPU1QnLCAnL3YxL3Vwc2VsbC9zdWdnZXN0aW9ucycsIHVuZGVmaW5lZCwgaW5wdXQpO1xuICAgICAgcmV0dXJuIGV4cGVjdEpzb248U3VnZ2VzdGlvbnNSZXN1bHQ+KHJlcyk7XG4gICAgfSxcblxuICAgIGFzeW5jIHJlcG9ydEV2ZW50cyhpbnB1dCkge1xuICAgICAgaWYgKCFpbnB1dD8uZXZlbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1cHNlbGwucmVwb3J0RXZlbnRzOiBldmVudHMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheScpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0UG9zaXRpdmVJbnQoJ3JlcG9ydEV2ZW50cy50ZW5hbnQucGFyZW50SWQnLCBpbnB1dC50ZW5hbnQucGFyZW50SWQpO1xuICAgICAgYXNzZXJ0UG9zaXRpdmVJbnQoJ3JlcG9ydEV2ZW50cy50ZW5hbnQuYnVzaW5lc3NJZCcsIGlucHV0LnRlbmFudC5idXNpbmVzc0lkKTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHNlbmQoJ1BPU1QnLCAnL3YxL3Vwc2VsbC9ldmVudHMnLCB1bmRlZmluZWQsIGlucHV0KTtcbiAgICAgIHJldHVybiBleHBlY3RKc29uPHsgYWNjZXB0ZWQ6IG51bWJlciB9PihyZXMpO1xuICAgIH0sXG5cbiAgICBhc3luYyBhZG1pbkxpc3RQbGFjZW1lbnRzKG9wdHMgPSB7fSkge1xuICAgICAgaWYgKG9wdHMucGFyZW50SWQgIT09IHVuZGVmaW5lZClcbiAgICAgICAgYXNzZXJ0UG9zaXRpdmVJbnQoJ2FkbWluTGlzdFBsYWNlbWVudHMucGFyZW50SWQnLCBvcHRzLnBhcmVudElkKTtcbiAgICAgIGNvbnN0IHFzID0gb3B0cy5wYXJlbnRJZCAhPT0gdW5kZWZpbmVkID8gYD9wYXJlbnRJZD0ke29wdHMucGFyZW50SWR9YCA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHNlbmQoJ0dFVCcsICcvdjEvdXBzZWxsL2FkbWluL3BsYWNlbWVudHMnLCBxcyk7XG4gICAgICBjb25zdCBib2R5ID0gYXdhaXQgZXhwZWN0SnNvbjx7IHBsYWNlbWVudHM6IFBsYWNlbWVudFJlY29yZFtdIH0+KHJlcyk7XG4gICAgICByZXR1cm4gYm9keS5wbGFjZW1lbnRzO1xuICAgIH0sXG5cbiAgICBhc3luYyBhZG1pblVwc2VydFBsYWNlbWVudChpbnB1dCkge1xuICAgICAgYXNzZXJ0VGVuYW50SWRzKCdhZG1pblVwc2VydFBsYWNlbWVudCcsIGlucHV0KTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHNlbmQoJ1BVVCcsICcvdjEvdXBzZWxsL2FkbWluL3BsYWNlbWVudHMnLCB1bmRlZmluZWQsIGlucHV0KTtcbiAgICAgIHJldHVybiBleHBlY3RKc29uPFBsYWNlbWVudFJlY29yZD4ocmVzKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgYWRtaW5EZWxldGVQbGFjZW1lbnQoaW5wdXQpIHtcbiAgICAgIGFzc2VydFRlbmFudElkcygnYWRtaW5EZWxldGVQbGFjZW1lbnQnLCBpbnB1dCk7XG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHsgY2hhbm5lbDogaW5wdXQuY2hhbm5lbCwga2V5OiBpbnB1dC5rZXkgfSk7XG4gICAgICBpZiAoaW5wdXQucGFyZW50SWQgIT09IHVuZGVmaW5lZCkgcGFyYW1zLnNldCgncGFyZW50SWQnLCBTdHJpbmcoaW5wdXQucGFyZW50SWQpKTtcbiAgICAgIGlmIChpbnB1dC5idXNpbmVzc0lkICE9PSB1bmRlZmluZWQpIHBhcmFtcy5zZXQoJ2J1c2luZXNzSWQnLCBTdHJpbmcoaW5wdXQuYnVzaW5lc3NJZCkpO1xuICAgICAgLy8gT21pdHRpbmcgcGFyZW50SWQgdGFyZ2V0cyB0aGUgcGxhdGZvcm0gZGVmYXVsdCByb3csIHdoaWNoIHRoZVxuICAgICAgLy8gc2VydmVyIHJlZnVzZXMgdG8gZGVsZXRlIHdpdGhvdXQgYW4gZXhwbGljaXQgY29uZmlybWF0aW9uLiBTZW5kXG4gICAgICAvLyB0aGUgZmxhZyB0aHJvdWdoIHJhdGhlciB0aGFuIGluZmVycmluZyBpdCwgc28gYSBjYWxsZXIgdGhhdCBtZWFudFxuICAgICAgLy8gdG8gc2NvcGUgdGhlIGRlbGV0ZSBzdGlsbCBnZXRzIHRoZSA0MDAgaW5zdGVhZCBvZiBzaWxlbnRseVxuICAgICAgLy8gd2lwaW5nIHRoZSBkZWZhdWx0IGZvciBldmVyeSB0ZW5hbnQuXG4gICAgICBpZiAoaW5wdXQuY29uZmlybURlbGV0ZURlZmF1bHQpIHBhcmFtcy5zZXQoJ2NvbmZpcm1EZWxldGVEZWZhdWx0JywgJ3RydWUnKTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHNlbmQoJ0RFTEVURScsICcvdjEvdXBzZWxsL2FkbWluL3BsYWNlbWVudHMnLCBgPyR7cGFyYW1zLnRvU3RyaW5nKCl9YCk7XG4gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjA0KSByZXR1cm47XG4gICAgICB0aHJvdyBuZXcgVXBzZWxsQXBpRXJyb3IocmVzLnN0YXR1cywgYXdhaXQgcmVzLnRleHQoKSk7XG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gY2xpZW50O1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { createUpsellClient, UpsellApiError, type UpsellClient } from './client';
|
|
2
|
+
export type { Cart, CartItem, Channel, KnownLayout, LadderRung, Layout, Placement, PlacementDeleteInput, PlacementDisplay, PlacementRecord, PlacementScope, PlacementUpsertInput, PlacementsQuery, ReasonCode, StrategyParams, SuggestionsInput, SuggestionsResult, Tenant, Touchpoint, UpsellEvent, UpsellEventType, UpsellEventsInput, UpsellItem, UpsellStrategy, } from './schema';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpsellApiError = exports.createUpsellClient = void 0;
|
|
4
|
+
var client_1 = require("./client");
|
|
5
|
+
Object.defineProperty(exports, "createUpsellClient", { enumerable: true, get: function () { return client_1.createUpsellClient; } });
|
|
6
|
+
Object.defineProperty(exports, "UpsellApiError", { enumerable: true, get: function () { return client_1.UpsellApiError; } });
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXBzZWxsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFpRjtBQUF4RSw0R0FBQSxrQkFBa0IsT0FBQTtBQUFFLHdHQUFBLGNBQWMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGNyZWF0ZVVwc2VsbENsaWVudCwgVXBzZWxsQXBpRXJyb3IsIHR5cGUgVXBzZWxsQ2xpZW50IH0gZnJvbSAnLi9jbGllbnQnO1xuZXhwb3J0IHR5cGUge1xuICBDYXJ0LFxuICBDYXJ0SXRlbSxcbiAgQ2hhbm5lbCxcbiAgS25vd25MYXlvdXQsXG4gIExhZGRlclJ1bmcsXG4gIExheW91dCxcbiAgUGxhY2VtZW50LFxuICBQbGFjZW1lbnREZWxldGVJbnB1dCxcbiAgUGxhY2VtZW50RGlzcGxheSxcbiAgUGxhY2VtZW50UmVjb3JkLFxuICBQbGFjZW1lbnRTY29wZSxcbiAgUGxhY2VtZW50VXBzZXJ0SW5wdXQsXG4gIFBsYWNlbWVudHNRdWVyeSxcbiAgUmVhc29uQ29kZSxcbiAgU3RyYXRlZ3lQYXJhbXMsXG4gIFN1Z2dlc3Rpb25zSW5wdXQsXG4gIFN1Z2dlc3Rpb25zUmVzdWx0LFxuICBUZW5hbnQsXG4gIFRvdWNocG9pbnQsXG4gIFVwc2VsbEV2ZW50LFxuICBVcHNlbGxFdmVudFR5cGUsXG4gIFVwc2VsbEV2ZW50c0lucHV0LFxuICBVcHNlbGxJdGVtLFxuICBVcHNlbGxTdHJhdGVneSxcbn0gZnJvbSAnLi9zY2hlbWEnO1xuIl19
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type surface for the platform Upsell API.
|
|
3
|
+
*
|
|
4
|
+
* Two consumer-facing calls: `placements(...)` (which upsell surfaces a
|
|
5
|
+
* channel should render for a tenant) and `suggest(...)` (items for one
|
|
6
|
+
* placement given the live cart). `reportEvents(...)` feeds attach-rate
|
|
7
|
+
* telemetry. Placement config is managed via the service-actor-only
|
|
8
|
+
* admin methods.
|
|
9
|
+
*/
|
|
10
|
+
export type Channel = 'mobile_app' | 'kiosk' | 'whitelabel_web' | 'whatsapp' | 'voice';
|
|
11
|
+
/**
|
|
12
|
+
* A moment in the customer journey — the unit of platform policy
|
|
13
|
+
* (price band, max items, and later the signal weight profile). A
|
|
14
|
+
* placement is a channel's journey label pointing at one of these.
|
|
15
|
+
*/
|
|
16
|
+
export type Touchpoint = 'home' | 'menu_browsing' | 'menu_composing' | 'search_no_result' | 'cart' | 'pre_checkout' | 'post_order';
|
|
17
|
+
/**
|
|
18
|
+
* Rendering hint, owned by the channel frontend — the platform never
|
|
19
|
+
* interprets it. Known values are listed for editor completion, but any
|
|
20
|
+
* lowercase identifier is valid so new layouts need no SDK release.
|
|
21
|
+
*/
|
|
22
|
+
export type KnownLayout = 'carousel_2up' | 'horizontal_carousel' | 'grid_2xn_modal' | 'carousel_1up' | 'vertical_list' | 'grid_3xn' | 'compact_list' | 'hero_banner';
|
|
23
|
+
export type Layout = KnownLayout | (string & {});
|
|
24
|
+
/** Why an item was recommended. Channels render these in customer language. */
|
|
25
|
+
export type ReasonCode = 'popular_now' | 'completes_meal' | 'often_ordered_together' | 'your_usual' | 'chefs_pick';
|
|
26
|
+
/** Which rung of the resolution ladder answered the request. */
|
|
27
|
+
export type LadderRung = 'full_engine' | 'band_relaxation' | 'popularity_floor' | 'backup_suggestions' | 'empty_degraded';
|
|
28
|
+
export type UpsellStrategy = 'menu-order-popularity' | 'legacy-catalog-sample';
|
|
29
|
+
export interface PlacementDisplay {
|
|
30
|
+
title: string;
|
|
31
|
+
/** Requested count. Touchpoint policy may cap it lower — see `meta.maxItems`. */
|
|
32
|
+
maxItems: number;
|
|
33
|
+
layout: Layout;
|
|
34
|
+
}
|
|
35
|
+
/** Resolved public placement (business override > brand > platform default). */
|
|
36
|
+
export interface Placement {
|
|
37
|
+
key: string;
|
|
38
|
+
channel: Channel;
|
|
39
|
+
touchpoint: Touchpoint;
|
|
40
|
+
enabled: boolean;
|
|
41
|
+
display: PlacementDisplay;
|
|
42
|
+
configVersion: string;
|
|
43
|
+
}
|
|
44
|
+
export interface Tenant {
|
|
45
|
+
parentId: number;
|
|
46
|
+
businessId: number;
|
|
47
|
+
}
|
|
48
|
+
export interface CartItem {
|
|
49
|
+
itemId: number;
|
|
50
|
+
qty: number;
|
|
51
|
+
unitPrice: number;
|
|
52
|
+
/** Optional; lets the dietary gate and category no-repeat see cart contents. */
|
|
53
|
+
itemSlug?: string;
|
|
54
|
+
sectionName?: string;
|
|
55
|
+
/** Legacy vegNonvegBoth flag: 1 veg, 2 non-veg, 3 both/egg. */
|
|
56
|
+
veg?: number;
|
|
57
|
+
}
|
|
58
|
+
export interface Cart {
|
|
59
|
+
items: CartItem[];
|
|
60
|
+
subtotal: number;
|
|
61
|
+
}
|
|
62
|
+
export interface SuggestionsInput {
|
|
63
|
+
channel: Channel;
|
|
64
|
+
placement: string;
|
|
65
|
+
tenant: Tenant;
|
|
66
|
+
context: {
|
|
67
|
+
cart: Cart;
|
|
68
|
+
fulfilmentMode?: 'delivery' | 'pickup' | 'dine_in';
|
|
69
|
+
/**
|
|
70
|
+
* Optional; unused by the v1 scorers. In the contract from day one
|
|
71
|
+
* so personalization lands without a break. `id` MUST be the opaque
|
|
72
|
+
* platform customer id, never a mobile number.
|
|
73
|
+
*/
|
|
74
|
+
customer?: {
|
|
75
|
+
id: string;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Optional; not yet acted on. Impression fatigue is session-scoped
|
|
79
|
+
* and shared across touchpoints — send it now so channels
|
|
80
|
+
* instrument once rather than twice.
|
|
81
|
+
*/
|
|
82
|
+
sessionId?: string;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export interface UpsellItem {
|
|
86
|
+
itemId: number;
|
|
87
|
+
itemName: string;
|
|
88
|
+
itemSlug: string | null;
|
|
89
|
+
description: string | null;
|
|
90
|
+
sectionId: number | null;
|
|
91
|
+
sectionName: string | null;
|
|
92
|
+
/** Selling price (INR). */
|
|
93
|
+
price: number;
|
|
94
|
+
image: string | null;
|
|
95
|
+
/** Raw legacy `vegNonvegBoth` flag, passed through untranslated. */
|
|
96
|
+
veg: number | null;
|
|
97
|
+
brandId: number | null;
|
|
98
|
+
reasonCode: ReasonCode;
|
|
99
|
+
}
|
|
100
|
+
export interface SuggestionsResult {
|
|
101
|
+
placement: string;
|
|
102
|
+
touchpoint: Touchpoint;
|
|
103
|
+
items: UpsellItem[];
|
|
104
|
+
meta: {
|
|
105
|
+
enabled: boolean;
|
|
106
|
+
strategy: UpsellStrategy;
|
|
107
|
+
configVersion: string;
|
|
108
|
+
/** Which ladder rung produced these items. */
|
|
109
|
+
rung: LadderRung;
|
|
110
|
+
/** Effective cap applied: min(display.maxItems, touchpoint policy). */
|
|
111
|
+
maxItems: number;
|
|
112
|
+
/** How long the client may reuse this response, in seconds. */
|
|
113
|
+
ttlSeconds: number;
|
|
114
|
+
/** True when the candidate source failed and the service degraded to empty. */
|
|
115
|
+
degraded?: boolean;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/** Merchant-controlled selection inputs. */
|
|
119
|
+
export interface StrategyParams {
|
|
120
|
+
includedItemSlugs?: string[];
|
|
121
|
+
includedSections?: string[];
|
|
122
|
+
excludedSections?: string[];
|
|
123
|
+
/** "Never Suggest These" — absolute, overrides the priority list. */
|
|
124
|
+
neverSuggestItemSlugs?: string[];
|
|
125
|
+
/** "My Priority Items" — occupy reserved slots ahead of scored items. */
|
|
126
|
+
priorityItemSlugs?: string[];
|
|
127
|
+
/** "Backup Suggestions" — 2-6 items, served when everything else is empty. */
|
|
128
|
+
backupItemSlugs?: string[];
|
|
129
|
+
excludeCartItems?: boolean;
|
|
130
|
+
maxPrice?: number;
|
|
131
|
+
}
|
|
132
|
+
export type PlacementScope = 'default' | 'tenant' | 'business';
|
|
133
|
+
/** Raw admin-plane config row (no precedence merge applied). */
|
|
134
|
+
export interface PlacementRecord {
|
|
135
|
+
scope: PlacementScope;
|
|
136
|
+
parentId?: number;
|
|
137
|
+
businessId?: number;
|
|
138
|
+
channel: Channel;
|
|
139
|
+
key: string;
|
|
140
|
+
touchpoint: Touchpoint;
|
|
141
|
+
enabled: boolean;
|
|
142
|
+
display: PlacementDisplay;
|
|
143
|
+
strategy: UpsellStrategy;
|
|
144
|
+
strategyParams: StrategyParams;
|
|
145
|
+
configVersion: string;
|
|
146
|
+
updatedAt: string;
|
|
147
|
+
updatedBy: string;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Admin upsert. Scope is derived: no parentId → platform default;
|
|
151
|
+
* parentId only → brand row; parentId + businessId → business override.
|
|
152
|
+
*/
|
|
153
|
+
export interface PlacementUpsertInput {
|
|
154
|
+
parentId?: number;
|
|
155
|
+
businessId?: number;
|
|
156
|
+
channel: Channel;
|
|
157
|
+
key: string;
|
|
158
|
+
touchpoint: Touchpoint;
|
|
159
|
+
enabled: boolean;
|
|
160
|
+
display: PlacementDisplay;
|
|
161
|
+
strategy?: UpsellStrategy;
|
|
162
|
+
strategyParams?: StrategyParams;
|
|
163
|
+
}
|
|
164
|
+
export interface PlacementDeleteInput {
|
|
165
|
+
parentId?: number;
|
|
166
|
+
businessId?: number;
|
|
167
|
+
channel: Channel;
|
|
168
|
+
key: string;
|
|
169
|
+
/**
|
|
170
|
+
* Required by the server when `parentId` is omitted, because that call
|
|
171
|
+
* targets the PLATFORM DEFAULT row and so removes the placement for
|
|
172
|
+
* every tenant that has not overridden it. Without this the server
|
|
173
|
+
* rejects the request with 400 rather than guessing that a missing
|
|
174
|
+
* parentId was deliberate.
|
|
175
|
+
*
|
|
176
|
+
* Deliberately not defaulted to `true` here: the whole point of the
|
|
177
|
+
* flag is that deleting a default must be stated, not inferred from
|
|
178
|
+
* the shape of the call.
|
|
179
|
+
*/
|
|
180
|
+
confirmDeleteDefault?: boolean;
|
|
181
|
+
}
|
|
182
|
+
export interface PlacementsQuery {
|
|
183
|
+
channel: Channel;
|
|
184
|
+
parentId: number;
|
|
185
|
+
businessId: number;
|
|
186
|
+
}
|
|
187
|
+
export type UpsellEventType = 'shown' | 'added' | 'ignored';
|
|
188
|
+
export interface UpsellEvent {
|
|
189
|
+
type: UpsellEventType;
|
|
190
|
+
itemId: number;
|
|
191
|
+
reasonCode?: ReasonCode;
|
|
192
|
+
/** ISO-8601. Defaults to server receive time when omitted. */
|
|
193
|
+
occurredAt?: string;
|
|
194
|
+
}
|
|
195
|
+
export interface UpsellEventsInput {
|
|
196
|
+
channel: Channel;
|
|
197
|
+
placement: string;
|
|
198
|
+
tenant: Tenant;
|
|
199
|
+
sessionId?: string;
|
|
200
|
+
/** Echo `meta.configVersion` from the response being reported on. */
|
|
201
|
+
configVersion?: string;
|
|
202
|
+
events: UpsellEvent[];
|
|
203
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Type surface for the platform Upsell API.
|
|
4
|
+
*
|
|
5
|
+
* Two consumer-facing calls: `placements(...)` (which upsell surfaces a
|
|
6
|
+
* channel should render for a tenant) and `suggest(...)` (items for one
|
|
7
|
+
* placement given the live cart). `reportEvents(...)` feeds attach-rate
|
|
8
|
+
* telemetry. Placement config is managed via the service-actor-only
|
|
9
|
+
* admin methods.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Vwc2VsbC9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7OztHQVFHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUeXBlIHN1cmZhY2UgZm9yIHRoZSBwbGF0Zm9ybSBVcHNlbGwgQVBJLlxuICpcbiAqIFR3byBjb25zdW1lci1mYWNpbmcgY2FsbHM6IGBwbGFjZW1lbnRzKC4uLilgICh3aGljaCB1cHNlbGwgc3VyZmFjZXMgYVxuICogY2hhbm5lbCBzaG91bGQgcmVuZGVyIGZvciBhIHRlbmFudCkgYW5kIGBzdWdnZXN0KC4uLilgIChpdGVtcyBmb3Igb25lXG4gKiBwbGFjZW1lbnQgZ2l2ZW4gdGhlIGxpdmUgY2FydCkuIGByZXBvcnRFdmVudHMoLi4uKWAgZmVlZHMgYXR0YWNoLXJhdGVcbiAqIHRlbGVtZXRyeS4gUGxhY2VtZW50IGNvbmZpZyBpcyBtYW5hZ2VkIHZpYSB0aGUgc2VydmljZS1hY3Rvci1vbmx5XG4gKiBhZG1pbiBtZXRob2RzLlxuICovXG5cbmV4cG9ydCB0eXBlIENoYW5uZWwgPSAnbW9iaWxlX2FwcCcgfCAna2lvc2snIHwgJ3doaXRlbGFiZWxfd2ViJyB8ICd3aGF0c2FwcCcgfCAndm9pY2UnO1xuXG4vKipcbiAqIEEgbW9tZW50IGluIHRoZSBjdXN0b21lciBqb3VybmV5IOKAlCB0aGUgdW5pdCBvZiBwbGF0Zm9ybSBwb2xpY3lcbiAqIChwcmljZSBiYW5kLCBtYXggaXRlbXMsIGFuZCBsYXRlciB0aGUgc2lnbmFsIHdlaWdodCBwcm9maWxlKS4gQVxuICogcGxhY2VtZW50IGlzIGEgY2hhbm5lbCdzIGpvdXJuZXkgbGFiZWwgcG9pbnRpbmcgYXQgb25lIG9mIHRoZXNlLlxuICovXG5leHBvcnQgdHlwZSBUb3VjaHBvaW50ID1cbiAgfCAnaG9tZSdcbiAgfCAnbWVudV9icm93c2luZydcbiAgfCAnbWVudV9jb21wb3NpbmcnXG4gIHwgJ3NlYXJjaF9ub19yZXN1bHQnXG4gIHwgJ2NhcnQnXG4gIHwgJ3ByZV9jaGVja291dCdcbiAgfCAncG9zdF9vcmRlcic7XG5cbi8qKlxuICogUmVuZGVyaW5nIGhpbnQsIG93bmVkIGJ5IHRoZSBjaGFubmVsIGZyb250ZW5kIOKAlCB0aGUgcGxhdGZvcm0gbmV2ZXJcbiAqIGludGVycHJldHMgaXQuIEtub3duIHZhbHVlcyBhcmUgbGlzdGVkIGZvciBlZGl0b3IgY29tcGxldGlvbiwgYnV0IGFueVxuICogbG93ZXJjYXNlIGlkZW50aWZpZXIgaXMgdmFsaWQgc28gbmV3IGxheW91dHMgbmVlZCBubyBTREsgcmVsZWFzZS5cbiAqL1xuZXhwb3J0IHR5cGUgS25vd25MYXlvdXQgPVxuICB8ICdjYXJvdXNlbF8ydXAnXG4gIHwgJ2hvcml6b250YWxfY2Fyb3VzZWwnXG4gIHwgJ2dyaWRfMnhuX21vZGFsJ1xuICB8ICdjYXJvdXNlbF8xdXAnXG4gIHwgJ3ZlcnRpY2FsX2xpc3QnXG4gIHwgJ2dyaWRfM3huJ1xuICB8ICdjb21wYWN0X2xpc3QnXG4gIHwgJ2hlcm9fYmFubmVyJztcblxuZXhwb3J0IHR5cGUgTGF5b3V0ID0gS25vd25MYXlvdXQgfCAoc3RyaW5nICYge30pO1xuXG4vKiogV2h5IGFuIGl0ZW0gd2FzIHJlY29tbWVuZGVkLiBDaGFubmVscyByZW5kZXIgdGhlc2UgaW4gY3VzdG9tZXIgbGFuZ3VhZ2UuICovXG5leHBvcnQgdHlwZSBSZWFzb25Db2RlID1cbiAgfCAncG9wdWxhcl9ub3cnXG4gIHwgJ2NvbXBsZXRlc19tZWFsJ1xuICB8ICdvZnRlbl9vcmRlcmVkX3RvZ2V0aGVyJ1xuICB8ICd5b3VyX3VzdWFsJ1xuICB8ICdjaGVmc19waWNrJztcblxuLyoqIFdoaWNoIHJ1bmcgb2YgdGhlIHJlc29sdXRpb24gbGFkZGVyIGFuc3dlcmVkIHRoZSByZXF1ZXN0LiAqL1xuZXhwb3J0IHR5cGUgTGFkZGVyUnVuZyA9XG4gIHwgJ2Z1bGxfZW5naW5lJ1xuICB8ICdiYW5kX3JlbGF4YXRpb24nXG4gIHwgJ3BvcHVsYXJpdHlfZmxvb3InXG4gIHwgJ2JhY2t1cF9zdWdnZXN0aW9ucydcbiAgfCAnZW1wdHlfZGVncmFkZWQnO1xuXG5leHBvcnQgdHlwZSBVcHNlbGxTdHJhdGVneSA9ICdtZW51LW9yZGVyLXBvcHVsYXJpdHknIHwgJ2xlZ2FjeS1jYXRhbG9nLXNhbXBsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2VtZW50RGlzcGxheSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKiBSZXF1ZXN0ZWQgY291bnQuIFRvdWNocG9pbnQgcG9saWN5IG1heSBjYXAgaXQgbG93ZXIg4oCUIHNlZSBgbWV0YS5tYXhJdGVtc2AuICovXG4gIG1heEl0ZW1zOiBudW1iZXI7XG4gIGxheW91dDogTGF5b3V0O1xufVxuXG4vKiogUmVzb2x2ZWQgcHVibGljIHBsYWNlbWVudCAoYnVzaW5lc3Mgb3ZlcnJpZGUgPiBicmFuZCA+IHBsYXRmb3JtIGRlZmF1bHQpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFjZW1lbnQge1xuICBrZXk6IHN0cmluZztcbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAgdG91Y2hwb2ludDogVG91Y2hwb2ludDtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgZGlzcGxheTogUGxhY2VtZW50RGlzcGxheTtcbiAgY29uZmlnVmVyc2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbmFudCB7XG4gIHBhcmVudElkOiBudW1iZXI7XG4gIGJ1c2luZXNzSWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXJ0SXRlbSB7XG4gIGl0ZW1JZDogbnVtYmVyO1xuICBxdHk6IG51bWJlcjtcbiAgdW5pdFByaWNlOiBudW1iZXI7XG4gIC8qKiBPcHRpb25hbDsgbGV0cyB0aGUgZGlldGFyeSBnYXRlIGFuZCBjYXRlZ29yeSBuby1yZXBlYXQgc2VlIGNhcnQgY29udGVudHMuICovXG4gIGl0ZW1TbHVnPzogc3RyaW5nO1xuICBzZWN0aW9uTmFtZT86IHN0cmluZztcbiAgLyoqIExlZ2FjeSB2ZWdOb252ZWdCb3RoIGZsYWc6IDEgdmVnLCAyIG5vbi12ZWcsIDMgYm90aC9lZ2cuICovXG4gIHZlZz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXJ0IHtcbiAgaXRlbXM6IENhcnRJdGVtW107XG4gIHN1YnRvdGFsOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VnZ2VzdGlvbnNJbnB1dCB7XG4gIGNoYW5uZWw6IENoYW5uZWw7XG4gIHBsYWNlbWVudDogc3RyaW5nO1xuICB0ZW5hbnQ6IFRlbmFudDtcbiAgY29udGV4dDoge1xuICAgIGNhcnQ6IENhcnQ7XG4gICAgZnVsZmlsbWVudE1vZGU/OiAnZGVsaXZlcnknIHwgJ3BpY2t1cCcgfCAnZGluZV9pbic7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWw7IHVudXNlZCBieSB0aGUgdjEgc2NvcmVycy4gSW4gdGhlIGNvbnRyYWN0IGZyb20gZGF5IG9uZVxuICAgICAqIHNvIHBlcnNvbmFsaXphdGlvbiBsYW5kcyB3aXRob3V0IGEgYnJlYWsuIGBpZGAgTVVTVCBiZSB0aGUgb3BhcXVlXG4gICAgICogcGxhdGZvcm0gY3VzdG9tZXIgaWQsIG5ldmVyIGEgbW9iaWxlIG51bWJlci5cbiAgICAgKi9cbiAgICBjdXN0b21lcj86IHsgaWQ6IHN0cmluZyB9O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsOyBub3QgeWV0IGFjdGVkIG9uLiBJbXByZXNzaW9uIGZhdGlndWUgaXMgc2Vzc2lvbi1zY29wZWRcbiAgICAgKiBhbmQgc2hhcmVkIGFjcm9zcyB0b3VjaHBvaW50cyDigJQgc2VuZCBpdCBub3cgc28gY2hhbm5lbHNcbiAgICAgKiBpbnN0cnVtZW50IG9uY2UgcmF0aGVyIHRoYW4gdHdpY2UuXG4gICAgICovXG4gICAgc2Vzc2lvbklkPzogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwc2VsbEl0ZW0ge1xuICBpdGVtSWQ6IG51bWJlcjtcbiAgaXRlbU5hbWU6IHN0cmluZztcbiAgaXRlbVNsdWc6IHN0cmluZyB8IG51bGw7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICBzZWN0aW9uSWQ6IG51bWJlciB8IG51bGw7XG4gIHNlY3Rpb25OYW1lOiBzdHJpbmcgfCBudWxsO1xuICAvKiogU2VsbGluZyBwcmljZSAoSU5SKS4gKi9cbiAgcHJpY2U6IG51bWJlcjtcbiAgaW1hZ2U6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBSYXcgbGVnYWN5IGB2ZWdOb252ZWdCb3RoYCBmbGFnLCBwYXNzZWQgdGhyb3VnaCB1bnRyYW5zbGF0ZWQuICovXG4gIHZlZzogbnVtYmVyIHwgbnVsbDtcbiAgYnJhbmRJZDogbnVtYmVyIHwgbnVsbDtcbiAgcmVhc29uQ29kZTogUmVhc29uQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWdnZXN0aW9uc1Jlc3VsdCB7XG4gIHBsYWNlbWVudDogc3RyaW5nO1xuICB0b3VjaHBvaW50OiBUb3VjaHBvaW50O1xuICBpdGVtczogVXBzZWxsSXRlbVtdO1xuICBtZXRhOiB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBzdHJhdGVneTogVXBzZWxsU3RyYXRlZ3k7XG4gICAgY29uZmlnVmVyc2lvbjogc3RyaW5nO1xuICAgIC8qKiBXaGljaCBsYWRkZXIgcnVuZyBwcm9kdWNlZCB0aGVzZSBpdGVtcy4gKi9cbiAgICBydW5nOiBMYWRkZXJSdW5nO1xuICAgIC8qKiBFZmZlY3RpdmUgY2FwIGFwcGxpZWQ6IG1pbihkaXNwbGF5Lm1heEl0ZW1zLCB0b3VjaHBvaW50IHBvbGljeSkuICovXG4gICAgbWF4SXRlbXM6IG51bWJlcjtcbiAgICAvKiogSG93IGxvbmcgdGhlIGNsaWVudCBtYXkgcmV1c2UgdGhpcyByZXNwb25zZSwgaW4gc2Vjb25kcy4gKi9cbiAgICB0dGxTZWNvbmRzOiBudW1iZXI7XG4gICAgLyoqIFRydWUgd2hlbiB0aGUgY2FuZGlkYXRlIHNvdXJjZSBmYWlsZWQgYW5kIHRoZSBzZXJ2aWNlIGRlZ3JhZGVkIHRvIGVtcHR5LiAqL1xuICAgIGRlZ3JhZGVkPzogYm9vbGVhbjtcbiAgfTtcbn1cblxuLyoqIE1lcmNoYW50LWNvbnRyb2xsZWQgc2VsZWN0aW9uIGlucHV0cy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyYXRlZ3lQYXJhbXMge1xuICBpbmNsdWRlZEl0ZW1TbHVncz86IHN0cmluZ1tdO1xuICBpbmNsdWRlZFNlY3Rpb25zPzogc3RyaW5nW107XG4gIGV4Y2x1ZGVkU2VjdGlvbnM/OiBzdHJpbmdbXTtcbiAgLyoqIFwiTmV2ZXIgU3VnZ2VzdCBUaGVzZVwiIOKAlCBhYnNvbHV0ZSwgb3ZlcnJpZGVzIHRoZSBwcmlvcml0eSBsaXN0LiAqL1xuICBuZXZlclN1Z2dlc3RJdGVtU2x1Z3M/OiBzdHJpbmdbXTtcbiAgLyoqIFwiTXkgUHJpb3JpdHkgSXRlbXNcIiDigJQgb2NjdXB5IHJlc2VydmVkIHNsb3RzIGFoZWFkIG9mIHNjb3JlZCBpdGVtcy4gKi9cbiAgcHJpb3JpdHlJdGVtU2x1Z3M/OiBzdHJpbmdbXTtcbiAgLyoqIFwiQmFja3VwIFN1Z2dlc3Rpb25zXCIg4oCUIDItNiBpdGVtcywgc2VydmVkIHdoZW4gZXZlcnl0aGluZyBlbHNlIGlzIGVtcHR5LiAqL1xuICBiYWNrdXBJdGVtU2x1Z3M/OiBzdHJpbmdbXTtcbiAgZXhjbHVkZUNhcnRJdGVtcz86IGJvb2xlYW47XG4gIG1heFByaWNlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBQbGFjZW1lbnRTY29wZSA9ICdkZWZhdWx0JyB8ICd0ZW5hbnQnIHwgJ2J1c2luZXNzJztcblxuLyoqIFJhdyBhZG1pbi1wbGFuZSBjb25maWcgcm93IChubyBwcmVjZWRlbmNlIG1lcmdlIGFwcGxpZWQpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGFjZW1lbnRSZWNvcmQge1xuICBzY29wZTogUGxhY2VtZW50U2NvcGU7XG4gIHBhcmVudElkPzogbnVtYmVyO1xuICBidXNpbmVzc0lkPzogbnVtYmVyO1xuICBjaGFubmVsOiBDaGFubmVsO1xuICBrZXk6IHN0cmluZztcbiAgdG91Y2hwb2ludDogVG91Y2hwb2ludDtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgZGlzcGxheTogUGxhY2VtZW50RGlzcGxheTtcbiAgc3RyYXRlZ3k6IFVwc2VsbFN0cmF0ZWd5O1xuICBzdHJhdGVneVBhcmFtczogU3RyYXRlZ3lQYXJhbXM7XG4gIGNvbmZpZ1ZlcnNpb246IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRCeTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFkbWluIHVwc2VydC4gU2NvcGUgaXMgZGVyaXZlZDogbm8gcGFyZW50SWQg4oaSIHBsYXRmb3JtIGRlZmF1bHQ7XG4gKiBwYXJlbnRJZCBvbmx5IOKGkiBicmFuZCByb3c7IHBhcmVudElkICsgYnVzaW5lc3NJZCDihpIgYnVzaW5lc3Mgb3ZlcnJpZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2VtZW50VXBzZXJ0SW5wdXQge1xuICBwYXJlbnRJZD86IG51bWJlcjtcbiAgYnVzaW5lc3NJZD86IG51bWJlcjtcbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAga2V5OiBzdHJpbmc7XG4gIHRvdWNocG9pbnQ6IFRvdWNocG9pbnQ7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGRpc3BsYXk6IFBsYWNlbWVudERpc3BsYXk7XG4gIHN0cmF0ZWd5PzogVXBzZWxsU3RyYXRlZ3k7XG4gIHN0cmF0ZWd5UGFyYW1zPzogU3RyYXRlZ3lQYXJhbXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2VtZW50RGVsZXRlSW5wdXQge1xuICBwYXJlbnRJZD86IG51bWJlcjtcbiAgYnVzaW5lc3NJZD86IG51bWJlcjtcbiAgY2hhbm5lbDogQ2hhbm5lbDtcbiAga2V5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBieSB0aGUgc2VydmVyIHdoZW4gYHBhcmVudElkYCBpcyBvbWl0dGVkLCBiZWNhdXNlIHRoYXQgY2FsbFxuICAgKiB0YXJnZXRzIHRoZSBQTEFURk9STSBERUZBVUxUIHJvdyBhbmQgc28gcmVtb3ZlcyB0aGUgcGxhY2VtZW50IGZvclxuICAgKiBldmVyeSB0ZW5hbnQgdGhhdCBoYXMgbm90IG92ZXJyaWRkZW4gaXQuIFdpdGhvdXQgdGhpcyB0aGUgc2VydmVyXG4gICAqIHJlamVjdHMgdGhlIHJlcXVlc3Qgd2l0aCA0MDAgcmF0aGVyIHRoYW4gZ3Vlc3NpbmcgdGhhdCBhIG1pc3NpbmdcbiAgICogcGFyZW50SWQgd2FzIGRlbGliZXJhdGUuXG4gICAqXG4gICAqIERlbGliZXJhdGVseSBub3QgZGVmYXVsdGVkIHRvIGB0cnVlYCBoZXJlOiB0aGUgd2hvbGUgcG9pbnQgb2YgdGhlXG4gICAqIGZsYWcgaXMgdGhhdCBkZWxldGluZyBhIGRlZmF1bHQgbXVzdCBiZSBzdGF0ZWQsIG5vdCBpbmZlcnJlZCBmcm9tXG4gICAqIHRoZSBzaGFwZSBvZiB0aGUgY2FsbC5cbiAgICovXG4gIGNvbmZpcm1EZWxldGVEZWZhdWx0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFjZW1lbnRzUXVlcnkge1xuICBjaGFubmVsOiBDaGFubmVsO1xuICBwYXJlbnRJZDogbnVtYmVyO1xuICBidXNpbmVzc0lkOiBudW1iZXI7XG59XG5cbi8vIOKUgOKUgOKUgCBBdHRhY2gtcmF0ZSB0ZWxlbWV0cnkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCB0eXBlIFVwc2VsbEV2ZW50VHlwZSA9ICdzaG93bicgfCAnYWRkZWQnIHwgJ2lnbm9yZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVwc2VsbEV2ZW50IHtcbiAgdHlwZTogVXBzZWxsRXZlbnRUeXBlO1xuICBpdGVtSWQ6IG51bWJlcjtcbiAgcmVhc29uQ29kZT86IFJlYXNvbkNvZGU7XG4gIC8qKiBJU08tODYwMS4gRGVmYXVsdHMgdG8gc2VydmVyIHJlY2VpdmUgdGltZSB3aGVuIG9taXR0ZWQuICovXG4gIG9jY3VycmVkQXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBzZWxsRXZlbnRzSW5wdXQge1xuICBjaGFubmVsOiBDaGFubmVsO1xuICBwbGFjZW1lbnQ6IHN0cmluZztcbiAgdGVuYW50OiBUZW5hbnQ7XG4gIHNlc3Npb25JZD86IHN0cmluZztcbiAgLyoqIEVjaG8gYG1ldGEuY29uZmlnVmVyc2lvbmAgZnJvbSB0aGUgcmVzcG9uc2UgYmVpbmcgcmVwb3J0ZWQgb24uICovXG4gIGNvbmZpZ1ZlcnNpb24/OiBzdHJpbmc7XG4gIGV2ZW50czogVXBzZWxsRXZlbnRbXTtcbn1cbiJdfQ==
|
package/dist/version.d.ts
CHANGED
|
@@ -4,5 +4,11 @@
|
|
|
4
4
|
* value from package.json at runtime would require either a JSON import
|
|
5
5
|
* (TS lib settings dependent) or a build-time replacement, and the
|
|
6
6
|
* cost of one bump-in-two-places per release is small.
|
|
7
|
+
*
|
|
8
|
+
* That cost was underestimated once: the publish job verifies
|
|
9
|
+
* package.json against the release tag but never reads this file, so the
|
|
10
|
+
* two drifted and 1.0.0 shipped reporting 0.9.1. A test now pins them
|
|
11
|
+
* together (`test/upsell/client.test.ts`), so forgetting this bump fails
|
|
12
|
+
* the build instead of the User-Agent.
|
|
7
13
|
*/
|
|
8
|
-
export declare const SDK_VERSION = "0.
|
|
14
|
+
export declare const SDK_VERSION = "2.0.0";
|
package/dist/version.js
CHANGED
|
@@ -7,6 +7,12 @@ exports.SDK_VERSION = void 0;
|
|
|
7
7
|
* value from package.json at runtime would require either a JSON import
|
|
8
8
|
* (TS lib settings dependent) or a build-time replacement, and the
|
|
9
9
|
* cost of one bump-in-two-places per release is small.
|
|
10
|
+
*
|
|
11
|
+
* That cost was underestimated once: the publish job verifies
|
|
12
|
+
* package.json against the release tag but never reads this file, so the
|
|
13
|
+
* two drifted and 1.0.0 shipped reporting 0.9.1. A test now pins them
|
|
14
|
+
* together (`test/upsell/client.test.ts`), so forgetting this bump fails
|
|
15
|
+
* the build instead of the User-Agent.
|
|
10
16
|
*/
|
|
11
|
-
exports.SDK_VERSION = '0.
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
exports.SDK_VERSION = '2.0.0';
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNVLFFBQUEsV0FBVyxHQUFHLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWFudWFsbHktbWFpbnRhaW5lZCB2ZXJzaW9uIHN0cmluZyBzdXJmYWNlZCB2aWEgdGhlIGBVc2VyLUFnZW50YFxuICogaGVhZGVyLiBLZXB0IGluIHN5bmMgd2l0aCBgcGFja2FnZS5qc29uYCBieSBoYW5kIGJlY2F1c2UgcHVsbGluZyB0aGVcbiAqIHZhbHVlIGZyb20gcGFja2FnZS5qc29uIGF0IHJ1bnRpbWUgd291bGQgcmVxdWlyZSBlaXRoZXIgYSBKU09OIGltcG9ydFxuICogKFRTIGxpYiBzZXR0aW5ncyBkZXBlbmRlbnQpIG9yIGEgYnVpbGQtdGltZSByZXBsYWNlbWVudCwgYW5kIHRoZVxuICogY29zdCBvZiBvbmUgYnVtcC1pbi10d28tcGxhY2VzIHBlciByZWxlYXNlIGlzIHNtYWxsLlxuICpcbiAqIFRoYXQgY29zdCB3YXMgdW5kZXJlc3RpbWF0ZWQgb25jZTogdGhlIHB1Ymxpc2ggam9iIHZlcmlmaWVzXG4gKiBwYWNrYWdlLmpzb24gYWdhaW5zdCB0aGUgcmVsZWFzZSB0YWcgYnV0IG5ldmVyIHJlYWRzIHRoaXMgZmlsZSwgc28gdGhlXG4gKiB0d28gZHJpZnRlZCBhbmQgMS4wLjAgc2hpcHBlZCByZXBvcnRpbmcgMC45LjEuIEEgdGVzdCBub3cgcGlucyB0aGVtXG4gKiB0b2dldGhlciAoYHRlc3QvdXBzZWxsL2NsaWVudC50ZXN0LnRzYCksIHNvIGZvcmdldHRpbmcgdGhpcyBidW1wIGZhaWxzXG4gKiB0aGUgYnVpbGQgaW5zdGVhZCBvZiB0aGUgVXNlci1BZ2VudC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNES19WRVJTSU9OID0gJzIuMC4wJztcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,9 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uengage.io/platform-sdk",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Client SDK for the uEngage platform API (audit, business, zones, wallet, auth). Single createClient(...) factory; OAuth2 client_credentials, static Bearer, or legacy session-token auth modes.",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Client SDK for the uEngage platform API (audit, business, zones, wallet, upsell, auth, events). Single createClient(...) factory; OAuth2 client_credentials, static Bearer, or legacy session-token auth modes. Browser-safe realtime client at the /realtime subpath.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"./events": {
|
|
13
|
+
"types": "./dist/events/index.d.ts",
|
|
14
|
+
"default": "./dist/events/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./realtime": {
|
|
17
|
+
"types": "./dist/realtime/index.d.ts",
|
|
18
|
+
"default": "./dist/realtime/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./package.json": "./package.json"
|
|
21
|
+
},
|
|
22
|
+
"typesVersions": {
|
|
23
|
+
"*": {
|
|
24
|
+
"events": [
|
|
25
|
+
"./dist/events/index.d.ts"
|
|
26
|
+
],
|
|
27
|
+
"realtime": [
|
|
28
|
+
"./dist/realtime/index.d.ts"
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
7
32
|
"files": [
|
|
8
33
|
"dist/",
|
|
9
34
|
"README.md"
|
|
@@ -18,6 +43,8 @@
|
|
|
18
43
|
"sdk",
|
|
19
44
|
"audit",
|
|
20
45
|
"business",
|
|
46
|
+
"events",
|
|
47
|
+
"realtime",
|
|
21
48
|
"hmac"
|
|
22
49
|
],
|
|
23
50
|
"dependencies": {
|
|
@@ -27,12 +54,21 @@
|
|
|
27
54
|
"@uengage.io/js-logger": "0.10.0"
|
|
28
55
|
},
|
|
29
56
|
"devDependencies": {
|
|
57
|
+
"@aws-sdk/client-sns": "^3.668.0",
|
|
30
58
|
"@types/jest": "^29.5.14",
|
|
31
59
|
"@types/node": "^20.14.10",
|
|
32
60
|
"jest": "^29.7.0",
|
|
33
61
|
"ts-jest": "^29.2.5",
|
|
34
62
|
"typescript": "^5.5.4"
|
|
35
63
|
},
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"@aws-sdk/client-sns": "^3.0.0"
|
|
66
|
+
},
|
|
67
|
+
"peerDependenciesMeta": {
|
|
68
|
+
"@aws-sdk/client-sns": {
|
|
69
|
+
"optional": true
|
|
70
|
+
}
|
|
71
|
+
},
|
|
36
72
|
"scripts": {
|
|
37
73
|
"build": "tsc",
|
|
38
74
|
"typecheck": "tsc --noEmit",
|