@varius.io/framework 8.22.14 → 9.0.1
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/build/services/api.d.ts +0 -1
- package/build/services/api.d.ts.map +1 -1
- package/build/services/api.js +1 -35
- package/build/services/api.js.map +1 -1
- package/build/services/points.d.ts +2 -5
- package/build/services/points.d.ts.map +1 -1
- package/build/services/points.js +46 -262
- package/build/services/points.js.map +1 -1
- package/build/services/user.d.ts +1 -0
- package/build/services/user.d.ts.map +1 -1
- package/build/services/user.js +57 -26
- package/build/services/user.js.map +1 -1
- package/package.json +1 -1
package/build/services/api.d.ts
CHANGED
|
@@ -21,6 +21,5 @@ interface ApiFetchRes {
|
|
|
21
21
|
}
|
|
22
22
|
export declare function apiFetch(endpoint: string, opts: ApiFetchOptions): Promise<ApiFetchRes>;
|
|
23
23
|
export declare function apiFetchWithToken(endpoint: string, opts: ApiFetchWithTokenOptions): Promise<ApiFetchRes>;
|
|
24
|
-
export declare function getClientCredentialsToken(clientId: string, clientSecret: string, scope: string): Promise<any>;
|
|
25
24
|
export {};
|
|
26
25
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,GAAG,QAAQ,YAAY,CAAC,CAAC;AAEzC,UAAU,eAAe;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;CACX;AAED,UAAU,wBAAwB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;CACX;AAED,UAAU,WAAW;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;CACV;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAmD5F;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC,CAoD9G"}
|
package/build/services/api.js
CHANGED
|
@@ -9,20 +9,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
13
|
-
const axios_1 = require("axios");
|
|
14
|
-
const assert = require("assert");
|
|
12
|
+
exports.apiFetchWithToken = exports.apiFetch = void 0;
|
|
15
13
|
const node_fetch_1 = require("node-fetch");
|
|
16
14
|
const __1 = require("..");
|
|
17
|
-
const NodeCache = require("node-cache");
|
|
18
|
-
const apiBase = process.env.IDENTITY_API_BASE;
|
|
19
|
-
const ax = axios_1.default.create({
|
|
20
|
-
baseURL: apiBase,
|
|
21
|
-
});
|
|
22
|
-
ax.interceptors.request.use((config) => {
|
|
23
|
-
assert.notStrictEqual(apiBase, undefined);
|
|
24
|
-
return config;
|
|
25
|
-
});
|
|
26
15
|
function apiFetch(endpoint, opts) {
|
|
27
16
|
var _a;
|
|
28
17
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -115,27 +104,4 @@ function apiFetchWithToken(endpoint, opts) {
|
|
|
115
104
|
});
|
|
116
105
|
}
|
|
117
106
|
exports.apiFetchWithToken = apiFetchWithToken;
|
|
118
|
-
const tokenCache = new NodeCache({ stdTTL: 500, checkperiod: 20 });
|
|
119
|
-
function getClientCredentialsToken(clientId, clientSecret, scope) {
|
|
120
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
121
|
-
__1.utils.logger.debug("getClientCredentialsToken", { clientId, clientSecret, scope });
|
|
122
|
-
const cacheKey = `${clientId}.${clientSecret}.${scope}`;
|
|
123
|
-
let fromCache = tokenCache.get(cacheKey);
|
|
124
|
-
if (fromCache) {
|
|
125
|
-
__1.utils.logger.debug("getClientCredentialsToken: ", "cache hit");
|
|
126
|
-
return fromCache;
|
|
127
|
-
}
|
|
128
|
-
__1.utils.logger.debug("getClientCredentialsToken: ", "cache miss");
|
|
129
|
-
const { data } = yield ax.post("/token", new URLSearchParams({
|
|
130
|
-
grant_type: 'client_credentials',
|
|
131
|
-
client_id: clientId,
|
|
132
|
-
scope,
|
|
133
|
-
}), {
|
|
134
|
-
auth: { username: clientId, password: clientSecret },
|
|
135
|
-
});
|
|
136
|
-
tokenCache.set(cacheKey, data);
|
|
137
|
-
return data;
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
exports.getClientCredentialsToken = getClientCredentialsToken;
|
|
141
107
|
//# sourceMappingURL=api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,13 +16,10 @@ declare type RaffleWinner = {
|
|
|
16
16
|
winningUser: PointsUser;
|
|
17
17
|
};
|
|
18
18
|
export declare function selectRaffleWinner(businessId: string, campaignId: string, channel: string): Promise<RaffleWinner>;
|
|
19
|
-
export declare function setUserPoints(businessId: string, recipientUserRef: UserRef, campaignId: string, points: number, channel
|
|
19
|
+
export declare function setUserPoints(businessId: string, recipientUserRef: UserRef, campaignId: string, points: number, channel: string, updateVatoms?: boolean): Promise<{
|
|
20
20
|
[channel: string]: number;
|
|
21
21
|
}>;
|
|
22
|
-
export declare function
|
|
23
|
-
[channel: string]: number;
|
|
24
|
-
}>;
|
|
25
|
-
export declare function getUserPoints(businessId: string, recipientUserRef: any, campaignUri: string): Promise<{
|
|
22
|
+
export declare function getUserPoints(recipientUserRef: any, campaignId: string): Promise<{
|
|
26
23
|
[channel: string]: number;
|
|
27
24
|
}>;
|
|
28
25
|
export declare function getCampaignPoints(businessId: string, campaignId: string): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"points.d.ts","sourceRoot":"","sources":["../../src/services/points.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"points.d.ts","sourceRoot":"","sources":["../../src/services/points.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAoB,MAAM,QAAQ,CAAC;AA4BnD,UAAU,UAAU;IACnB,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACtC;AAWD,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAclN;AAED,aAAK,YAAY,GAAG;IACnB,WAAW,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,UAAU,CAAC;CAC3B,CAAA;AAED,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAUvH;AAED,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAcpM;AAED,wBAAsB,aAAa,CAAC,gBAAgB,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAGrH;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAGtH;AAGD,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAezG;AAGD,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAYzG"}
|
package/build/services/points.js
CHANGED
|
@@ -9,38 +9,24 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.getUser = exports.listUsers = exports.getCampaignPoints = exports.getUserPoints = exports.
|
|
13
|
-
const DynamoDB = require("aws-sdk/clients/dynamodb");
|
|
14
|
-
const logger_1 = require("../utils/logger");
|
|
15
|
-
const uri = require("../utils/uri");
|
|
12
|
+
exports.getUser = exports.listUsers = exports.getCampaignPoints = exports.getUserPoints = exports.setUserPoints = exports.selectRaffleWinner = exports.updateUserPoints = void 0;
|
|
16
13
|
const NodeCache = require("node-cache");
|
|
17
14
|
const __1 = require("..");
|
|
18
|
-
const
|
|
19
|
-
const api_1 = require("./api");
|
|
15
|
+
const assert = require("assert");
|
|
20
16
|
const user_1 = require("./user");
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
let dynamodb;
|
|
35
|
-
let iotdata;
|
|
36
|
-
function initialize() {
|
|
37
|
-
if (!dynamodb) {
|
|
38
|
-
dynamodb = new DynamoDB.DocumentClient();
|
|
39
|
-
iotdata = new aws_sdk_1.IotData({
|
|
40
|
-
endpoint: process.env.IOT_ENDPOINT,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
17
|
+
const axios_1 = require("axios");
|
|
18
|
+
const { POINTS_API_BASE, POINTS_API_KEY } = process.env;
|
|
19
|
+
const ax = axios_1.default.create({
|
|
20
|
+
baseURL: POINTS_API_BASE,
|
|
21
|
+
headers: {
|
|
22
|
+
"x-api-key": process.env.POINTS_API_KEY,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
ax.interceptors.request.use((config) => {
|
|
26
|
+
assert.notStrictEqual(POINTS_API_BASE, undefined);
|
|
27
|
+
assert.notStrictEqual(POINTS_API_KEY, undefined);
|
|
28
|
+
return config;
|
|
29
|
+
});
|
|
44
30
|
// The purpose of this is to convert the dynamo result set to a standard one
|
|
45
31
|
function createPaginatedResultSet(data) {
|
|
46
32
|
const cursor = data.LastEvaluatedKey;
|
|
@@ -49,271 +35,70 @@ function createPaginatedResultSet(data) {
|
|
|
49
35
|
cursor,
|
|
50
36
|
};
|
|
51
37
|
}
|
|
52
|
-
function createPointsList(respAttrs) {
|
|
53
|
-
const points = {
|
|
54
|
-
total: respAttrs.points,
|
|
55
|
-
};
|
|
56
|
-
for (const columnName of Object.keys(respAttrs)) {
|
|
57
|
-
if (columnName.startsWith("channel_")) {
|
|
58
|
-
points[columnName.substring(columnName.indexOf("_") + 1)] = respAttrs[columnName];
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return points;
|
|
62
|
-
// const pointsResponse: PointsList = {
|
|
63
|
-
// total: respAttrs.points,
|
|
64
|
-
// items: []
|
|
65
|
-
// };
|
|
66
|
-
// for (const columnName of Object.keys(respAttrs)) {
|
|
67
|
-
// if (columnName.startsWith("channel_")) {
|
|
68
|
-
// const channelPoints: Points = {
|
|
69
|
-
// channel: columnName.substring(columnName.indexOf("_") + 1),
|
|
70
|
-
// points: respAttrs[columnName],
|
|
71
|
-
// }
|
|
72
|
-
// pointsResponse.items.push(channelPoints);
|
|
73
|
-
// }
|
|
74
|
-
// }
|
|
75
|
-
// Sort items in array
|
|
76
|
-
// pointsResponse.items.sort((a, b) => b.points - a.points)
|
|
77
|
-
// return pointsResponse;
|
|
78
|
-
}
|
|
79
|
-
function updateCampaignPointsDB(campaignId, points, channel) {
|
|
80
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
-
logger_1.default.debug("updateCampaignPointsDB", campaignId, points);
|
|
82
|
-
let updateExpression = `SET #AP = if_not_exists(#AP, :zero) + :p`;
|
|
83
|
-
const ExpressionAttributeNames = {
|
|
84
|
-
"#AP": "points",
|
|
85
|
-
};
|
|
86
|
-
const ExpressionAttributeValues = {
|
|
87
|
-
":p": points,
|
|
88
|
-
":zero": 0,
|
|
89
|
-
};
|
|
90
|
-
if (channel) {
|
|
91
|
-
updateExpression = `${updateExpression}, #CH = if_not_exists(#CH, :zero) + :ch`;
|
|
92
|
-
ExpressionAttributeNames["#CH"] = `channel_${channel}`;
|
|
93
|
-
ExpressionAttributeValues[":ch"] = points;
|
|
94
|
-
}
|
|
95
|
-
logger_1.default.debug("updateExpression", updateExpression, ExpressionAttributeNames, ExpressionAttributeValues);
|
|
96
|
-
const updateParams = {
|
|
97
|
-
ExpressionAttributeNames,
|
|
98
|
-
ExpressionAttributeValues,
|
|
99
|
-
Key: {
|
|
100
|
-
id: campaignId,
|
|
101
|
-
},
|
|
102
|
-
ReturnValues: "ALL_NEW",
|
|
103
|
-
TableName: campaignPointsTable,
|
|
104
|
-
UpdateExpression: updateExpression,
|
|
105
|
-
};
|
|
106
|
-
const resp = yield dynamodb.update(updateParams).promise();
|
|
107
|
-
logger_1.default.debug("Response from update:", JSON.stringify(resp));
|
|
108
|
-
const respAttrs = resp.Attributes;
|
|
109
|
-
return createPointsList(respAttrs);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
function getCampaignPointsDB(campaignUri) {
|
|
113
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
-
const getParams = {
|
|
115
|
-
Key: {
|
|
116
|
-
id: campaignUri,
|
|
117
|
-
},
|
|
118
|
-
TableName: campaignPointsTable,
|
|
119
|
-
};
|
|
120
|
-
const resp = yield dynamodb.get(getParams).promise();
|
|
121
|
-
logger_1.default.debug("Response from get:", JSON.stringify(resp));
|
|
122
|
-
const respItem = resp.Item;
|
|
123
|
-
if (!respItem) {
|
|
124
|
-
return ({
|
|
125
|
-
total: 0
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
return createPointsList(respItem);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
function sendLeaderboardEvent(campaignUri, points, userRef) {
|
|
132
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
-
const topic = `campaign-rules/${campaignUri}/leaderboard/on-update-points-v2`;
|
|
134
|
-
const msg = {
|
|
135
|
-
userRef,
|
|
136
|
-
campaignId: uri.parseEntityUriString(campaignUri).identifier,
|
|
137
|
-
points,
|
|
138
|
-
stage: "post",
|
|
139
|
-
};
|
|
140
|
-
const params = {
|
|
141
|
-
topic: topic,
|
|
142
|
-
payload: JSON.stringify(msg),
|
|
143
|
-
qos: 0,
|
|
144
|
-
};
|
|
145
|
-
yield iotdata.publish(params).promise();
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
38
|
function updateUserPoints(businessId, recipientUserRef, campaignId, points, channel, objectDefinitionIds) {
|
|
149
39
|
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
method: "patch",
|
|
155
|
-
body: {
|
|
156
|
-
points,
|
|
157
|
-
channel,
|
|
158
|
-
objectDefinitionIds
|
|
159
|
-
}
|
|
40
|
+
const { data, status } = yield ax.patch(`/u/${recipientUserRef.id}/campaign/${campaignId}/points`, {
|
|
41
|
+
points,
|
|
42
|
+
channel,
|
|
43
|
+
objectDefinitionIds
|
|
160
44
|
});
|
|
161
|
-
if (
|
|
162
|
-
throw new Error(`Could not update user points for user ${recipientUserRef} and campaignId ${campaignId} res: ${JSON.stringify(
|
|
45
|
+
if (status !== 200) {
|
|
46
|
+
throw new Error(`Could not update user points for user ${recipientUserRef} and campaignId ${campaignId} res: ${JSON.stringify(data)}`);
|
|
163
47
|
}
|
|
164
|
-
return
|
|
48
|
+
return data;
|
|
165
49
|
});
|
|
166
50
|
}
|
|
167
51
|
exports.updateUserPoints = updateUserPoints;
|
|
168
52
|
function selectRaffleWinner(businessId, campaignId, channel) {
|
|
169
53
|
return __awaiter(this, void 0, void 0, function* () {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
apiKey,
|
|
174
|
-
method: "get",
|
|
175
|
-
});
|
|
176
|
-
if (res.status !== 200) {
|
|
177
|
-
throw new Error(`Could not select raffle winner campaignId ${campaignId} and channel ${channel} res: ${JSON.stringify(res.body)}`);
|
|
54
|
+
const { data, status } = yield ax.get(`/b/${businessId}/campaign/${campaignId}/channel/${channel}/raffle`);
|
|
55
|
+
if (status !== 200) {
|
|
56
|
+
throw new Error(`Could not select raffle winner campaignId ${campaignId} and channel ${channel} res: ${JSON.stringify(data)}`);
|
|
178
57
|
}
|
|
179
|
-
return
|
|
58
|
+
return data;
|
|
180
59
|
});
|
|
181
60
|
}
|
|
182
61
|
exports.selectRaffleWinner = selectRaffleWinner;
|
|
183
62
|
function setUserPoints(businessId, recipientUserRef, campaignId, points, channel, updateVatoms = false) {
|
|
184
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
method: "post",
|
|
190
|
-
body: {
|
|
191
|
-
points,
|
|
192
|
-
channel,
|
|
193
|
-
updateVatoms,
|
|
194
|
-
}
|
|
64
|
+
const { data, status } = yield ax.post(`/u/${recipientUserRef.id}/campaign/${campaignId}/points`, {
|
|
65
|
+
points,
|
|
66
|
+
channel,
|
|
67
|
+
updateVatoms,
|
|
195
68
|
});
|
|
196
|
-
if (
|
|
197
|
-
throw new Error(`Could not set user points for user ${recipientUserRef} and campaignId ${campaignId} res: ${JSON.stringify(
|
|
69
|
+
if (status !== 200) {
|
|
70
|
+
throw new Error(`Could not set user points for user ${recipientUserRef} and campaignId ${campaignId} res: ${JSON.stringify(data)}`);
|
|
198
71
|
}
|
|
199
|
-
return
|
|
72
|
+
return data;
|
|
200
73
|
});
|
|
201
74
|
}
|
|
202
75
|
exports.setUserPoints = setUserPoints;
|
|
203
|
-
function
|
|
76
|
+
function getUserPoints(recipientUserRef, campaignId) {
|
|
204
77
|
return __awaiter(this, void 0, void 0, function* () {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
logger_1.default.debug("campaignPoints", campaignPoints);
|
|
208
|
-
// TODO - need to think about points triggers at the campaign level
|
|
209
|
-
// const providerList = await providers.getProviders(businessId, "points");
|
|
210
|
-
// await sendRelevantPointsEvents(businessId, campaignUri, providerList, pointsSummary, points);
|
|
211
|
-
// This is to send an update event to the leaderboard
|
|
212
|
-
yield sendLeaderboardEvent(campaignUri, campaignPoints);
|
|
213
|
-
return campaignPoints;
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
exports.updateCampaignPoints = updateCampaignPoints;
|
|
217
|
-
function getUserPoints(businessId, recipientUserRef, campaignUri) {
|
|
218
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
219
|
-
initialize();
|
|
220
|
-
const pointsUser = yield getUserDB(campaignUri, recipientUserRef.id);
|
|
221
|
-
logger_1.default.debug("pointsUser", pointsUser);
|
|
222
|
-
return pointsUser.points;
|
|
78
|
+
const { data, status } = yield ax.get(`/u/${recipientUserRef.id}/campaign/${campaignId}/points`);
|
|
79
|
+
return data;
|
|
223
80
|
});
|
|
224
81
|
}
|
|
225
82
|
exports.getUserPoints = getUserPoints;
|
|
226
83
|
function getCampaignPoints(businessId, campaignId) {
|
|
227
84
|
return __awaiter(this, void 0, void 0, function* () {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
const campaignPoints = yield getCampaignPointsDB(campaignUri);
|
|
231
|
-
logger_1.default.debug("campaignPoints", campaignPoints);
|
|
232
|
-
return campaignPoints;
|
|
85
|
+
const { data, status } = yield ax.get(`/b/${businessId}/campaign/${campaignId}/points`);
|
|
86
|
+
return data;
|
|
233
87
|
});
|
|
234
88
|
}
|
|
235
89
|
exports.getCampaignPoints = getCampaignPoints;
|
|
236
|
-
function listUsersDB(campaignId, limit = 20, cursor) {
|
|
237
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
238
|
-
const params = {
|
|
239
|
-
ExpressionAttributeValues: {
|
|
240
|
-
":cId": campaignId,
|
|
241
|
-
},
|
|
242
|
-
KeyConditionExpression: "campaign_id = :cId",
|
|
243
|
-
TableName: userPointsTable,
|
|
244
|
-
IndexName: usersIndex,
|
|
245
|
-
ScanIndexForward: false,
|
|
246
|
-
Limit: limit,
|
|
247
|
-
};
|
|
248
|
-
if (cursor) {
|
|
249
|
-
params.ExclusiveStartKey = cursor;
|
|
250
|
-
}
|
|
251
|
-
__1.utils.logger.debug(params);
|
|
252
|
-
const resp = yield dynamodb.query(params).promise();
|
|
253
|
-
return createPaginatedResultSet(resp);
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
function getUserDB(campaignId, userId) {
|
|
257
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
258
|
-
const params = {
|
|
259
|
-
ExpressionAttributeValues: {
|
|
260
|
-
":uId": userId,
|
|
261
|
-
":cId": campaignId,
|
|
262
|
-
},
|
|
263
|
-
KeyConditionExpression: "id = :uId AND campaign_id = :cId",
|
|
264
|
-
TableName: userPointsTable,
|
|
265
|
-
};
|
|
266
|
-
const res = yield dynamodb.query(params).promise();
|
|
267
|
-
const user = res.Items[0];
|
|
268
|
-
if (!user) {
|
|
269
|
-
return ({
|
|
270
|
-
id: userId,
|
|
271
|
-
// urn: uri.entityUri(uri.EntityType.User, userId),
|
|
272
|
-
name: "",
|
|
273
|
-
points: {
|
|
274
|
-
total: 0,
|
|
275
|
-
},
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
const points = {
|
|
280
|
-
total: user.points,
|
|
281
|
-
};
|
|
282
|
-
for (const columnName of Object.keys(user)) {
|
|
283
|
-
if (columnName.startsWith("channel_")) {
|
|
284
|
-
points[columnName.substring(columnName.indexOf("_") + 1)] = user[columnName];
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
return ({
|
|
288
|
-
id: user.id,
|
|
289
|
-
// urn: uri.entityUri(uri.EntityType.User, user.id),
|
|
290
|
-
name: `${user.first_name} ${user.last_name}`,
|
|
291
|
-
points,
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
|
-
});
|
|
295
|
-
}
|
|
296
90
|
const userListCache = new NodeCache({ stdTTL: 30, checkperiod: 10 });
|
|
297
91
|
function listUsers(campaignId, limit, cursor) {
|
|
298
92
|
return __awaiter(this, void 0, void 0, function* () {
|
|
299
|
-
initialize();
|
|
300
93
|
const cacheKey = `${campaignId}${cursor || ""}${limit}`;
|
|
301
94
|
__1.utils.logger.debug("cacheKey", cacheKey);
|
|
302
95
|
let users = userListCache.get(cacheKey);
|
|
303
96
|
__1.utils.logger.debug("users in cache", users);
|
|
304
97
|
if (!users) {
|
|
305
|
-
const
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
// urn: uri.entityUri(uri.EntityType.User, row.id),
|
|
310
|
-
name: `${row.first_name} ${row.last_name}`,
|
|
311
|
-
points: {
|
|
312
|
-
total: row.points
|
|
313
|
-
},
|
|
314
|
-
}));
|
|
315
|
-
__1.utils.logger.debug("adding users to cache", cacheKey, users);
|
|
316
|
-
userListCache.set(cacheKey, users);
|
|
98
|
+
const { data, status } = yield ax.get(`/b/todo/campaign/${campaignId}/users`);
|
|
99
|
+
__1.utils.logger.debug("adding users to cache", cacheKey, data);
|
|
100
|
+
userListCache.set(cacheKey, data);
|
|
101
|
+
return data;
|
|
317
102
|
}
|
|
318
103
|
return users;
|
|
319
104
|
});
|
|
@@ -323,17 +108,16 @@ const userCache = new NodeCache({ stdTTL: 30, checkperiod: 10 });
|
|
|
323
108
|
function getUser(userId, businessId, campaignId) {
|
|
324
109
|
var _a, _b, _c, _d;
|
|
325
110
|
return __awaiter(this, void 0, void 0, function* () {
|
|
326
|
-
initialize();
|
|
327
111
|
const cacheKey = `${campaignId}${userId}`;
|
|
328
112
|
let user = userCache.get(cacheKey);
|
|
329
113
|
if (user)
|
|
330
114
|
return user;
|
|
331
|
-
|
|
115
|
+
const { data, status } = yield ax.get(`/b/todo/campaign/${campaignId}/users/${userId}`);
|
|
332
116
|
const p = yield (0, user_1.getPublicProfile)(userId);
|
|
333
117
|
if (((_d = (_c = (_b = (_a = p === null || p === void 0 ? void 0 : p.name) === null || _a === void 0 ? void 0 : _a.trim) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0)
|
|
334
|
-
|
|
335
|
-
userCache.set(cacheKey,
|
|
336
|
-
return
|
|
118
|
+
data.name = p.name;
|
|
119
|
+
userCache.set(cacheKey, data);
|
|
120
|
+
return data;
|
|
337
121
|
});
|
|
338
122
|
}
|
|
339
123
|
exports.getUser = getUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"points.js","sourceRoot":"","sources":["../../src/services/points.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"points.js","sourceRoot":"","sources":["../../src/services/points.ts"],"names":[],"mappings":"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"}
|
package/build/services/user.d.ts
CHANGED
|
@@ -42,5 +42,6 @@ export declare function getProfile(accessToken: string, userId?: string): Promis
|
|
|
42
42
|
export declare function getPublicProfile(userId: string): Promise<PublicProfile | undefined>;
|
|
43
43
|
export declare function listUserInfos(campaignId: string, userIds: string[]): Promise<any[]>;
|
|
44
44
|
export declare function search(userIds?: string[], preferredUsername?: string, limit?: number, offset?: number): Promise<any[]>;
|
|
45
|
+
export declare function getClientCredentialsToken(scope: string): Promise<any>;
|
|
45
46
|
export {};
|
|
46
47
|
//# sourceMappingURL=user.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/services/user.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/services/user.ts"],"names":[],"mappings":"AA4CA,eAAO,MAAM,YAAY,+BAEvB,CAAC;AASH,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,oBAAY,OAAO,GAAG,GAAG,CAAC;AAE1B,MAAM,WAAW,OAAQ,SAAQ,OAAO;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,oBAAY,aAAa,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAE3B,CAAA;AAED,UAAU,UAAU;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC;CACb;AAaD,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BvF;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,CAapD;AAED,aAAK,QAAQ,GAAG;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACnB,CAAA;AAGD,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAiBrF;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAqBvE;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,UAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAgB7G;AAED,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAcvF;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAQzF;AAED,wBAAsB,aAAa,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,EAAE,CAAC,CAoBhB;AAID,wBAAsB,MAAM,CAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,KAAK,SAAM,EACX,MAAM,SAAI,GACR,OAAO,CAAC,GAAG,EAAE,CAAC,CAmBhB;AAID,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAuB3E"}
|
package/build/services/user.js
CHANGED
|
@@ -9,29 +9,37 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.search = exports.listUserInfos = exports.getPublicProfile = exports.getProfile = exports.lookupByIdentity = exports.listIdentities = exports.getIdentities = exports.deleteTestUsers = exports.update = exports.publicUserAx = void 0;
|
|
12
|
+
exports.getClientCredentialsToken = exports.search = exports.listUserInfos = exports.getPublicProfile = exports.getProfile = exports.lookupByIdentity = exports.listIdentities = exports.getIdentities = exports.deleteTestUsers = exports.update = exports.publicUserAx = void 0;
|
|
13
13
|
const assert = require("assert");
|
|
14
14
|
const NodeCache = require("node-cache");
|
|
15
15
|
const api_1 = require("./api");
|
|
16
16
|
const jwt = require("jsonwebtoken");
|
|
17
17
|
const axios_1 = require("axios");
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
18
|
+
const __1 = require("..");
|
|
19
|
+
const { OIDC_API_BASE, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET } = process.env;
|
|
20
|
+
const ax = axios_1.default.create({
|
|
21
|
+
baseURL: OIDC_API_BASE,
|
|
22
|
+
});
|
|
23
|
+
ax.interceptors.request.use((config) => {
|
|
24
|
+
assert.notStrictEqual(OIDC_API_BASE, undefined);
|
|
25
|
+
assert.notStrictEqual(OIDC_CLIENT_ID, undefined);
|
|
26
|
+
assert.notStrictEqual(OIDC_CLIENT_SECRET, undefined);
|
|
27
|
+
return config;
|
|
28
|
+
});
|
|
21
29
|
function validate() {
|
|
22
|
-
if (!
|
|
23
|
-
throw Error("Environment variable '
|
|
30
|
+
if (!OIDC_API_BASE) {
|
|
31
|
+
throw Error("Environment variable 'OIDC_API_BASE' not defined");
|
|
24
32
|
}
|
|
25
33
|
}
|
|
26
34
|
function validateClientCredentials() {
|
|
27
|
-
if (!
|
|
28
|
-
throw Error("Environment variable '
|
|
35
|
+
if (!OIDC_API_BASE) {
|
|
36
|
+
throw Error("Environment variable 'OIDC_API_BASE' not defined");
|
|
29
37
|
}
|
|
30
|
-
if (!
|
|
31
|
-
throw Error("Environment variable '
|
|
38
|
+
if (!OIDC_CLIENT_ID) {
|
|
39
|
+
throw Error("Environment variable 'OIDC_CLIENT_ID' not defined");
|
|
32
40
|
}
|
|
33
|
-
if (!
|
|
34
|
-
throw Error("Environment variable '
|
|
41
|
+
if (!OIDC_CLIENT_SECRET) {
|
|
42
|
+
throw Error("Environment variable 'OIDC_CLIENT_SECRET' not defined");
|
|
35
43
|
}
|
|
36
44
|
}
|
|
37
45
|
const publicUserBase = process.env.PUBLIC_USER_API_BASE;
|
|
@@ -53,7 +61,7 @@ function update(token, user) {
|
|
|
53
61
|
delete user.defaultBusinessId;
|
|
54
62
|
delete user.defaultSpaceId;
|
|
55
63
|
const res = yield (0, api_1.apiFetchWithToken)(`/me`, {
|
|
56
|
-
apiBase,
|
|
64
|
+
apiBase: OIDC_API_BASE,
|
|
57
65
|
token,
|
|
58
66
|
method: "patch",
|
|
59
67
|
body: Object.assign({ default_business_id,
|
|
@@ -70,7 +78,7 @@ function deleteTestUsers() {
|
|
|
70
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
71
79
|
validate();
|
|
72
80
|
const res = yield (0, api_1.apiFetch)(`/users/delete-test`, {
|
|
73
|
-
apiBase,
|
|
81
|
+
apiBase: OIDC_API_BASE,
|
|
74
82
|
apiKey: "none",
|
|
75
83
|
method: "post",
|
|
76
84
|
});
|
|
@@ -85,9 +93,9 @@ const identityCache = new NodeCache({ stdTTL: 300, checkperiod: 20 });
|
|
|
85
93
|
function getIdentities(userId, type) {
|
|
86
94
|
return __awaiter(this, void 0, void 0, function* () {
|
|
87
95
|
validateClientCredentials();
|
|
88
|
-
const { access_token } = yield
|
|
96
|
+
const { access_token } = yield getClientCredentialsToken("profile");
|
|
89
97
|
const res = yield (0, api_1.apiFetchWithToken)(`/users/${userId}/identities/${type}`, {
|
|
90
|
-
apiBase,
|
|
98
|
+
apiBase: OIDC_API_BASE,
|
|
91
99
|
token: access_token,
|
|
92
100
|
cache: identityCache,
|
|
93
101
|
method: "get",
|
|
@@ -108,7 +116,7 @@ function listIdentities(token) {
|
|
|
108
116
|
throw new Error(`Could not get user from token`);
|
|
109
117
|
}
|
|
110
118
|
const res = yield (0, api_1.apiFetchWithToken)(`/me/identities`, {
|
|
111
|
-
apiBase,
|
|
119
|
+
apiBase: OIDC_API_BASE,
|
|
112
120
|
token,
|
|
113
121
|
cache: identityCache,
|
|
114
122
|
key: `/u/${decoded.sub}/identities`,
|
|
@@ -125,9 +133,9 @@ const userCache = new NodeCache({ stdTTL: 300, checkperiod: 20 });
|
|
|
125
133
|
function lookupByIdentity(type, value, includeUnverified = false) {
|
|
126
134
|
return __awaiter(this, void 0, void 0, function* () {
|
|
127
135
|
validateClientCredentials();
|
|
128
|
-
const { access_token } = yield
|
|
136
|
+
const { access_token } = yield getClientCredentialsToken("profile");
|
|
129
137
|
const res = yield (0, api_1.apiFetchWithToken)(`/identities/${type}/${value}?includeUnverified=${includeUnverified}`, {
|
|
130
|
-
apiBase,
|
|
138
|
+
apiBase: OIDC_API_BASE,
|
|
131
139
|
token: access_token,
|
|
132
140
|
cache: userCache,
|
|
133
141
|
method: "get",
|
|
@@ -144,7 +152,7 @@ function getProfile(accessToken, userId) {
|
|
|
144
152
|
validate();
|
|
145
153
|
assert.notStrictEqual(accessToken, undefined, "Access Token must be defined");
|
|
146
154
|
const res = yield (0, api_1.apiFetchWithToken)(userId !== undefined ? `/users/${userId}` : "/me", {
|
|
147
|
-
apiBase,
|
|
155
|
+
apiBase: OIDC_API_BASE,
|
|
148
156
|
token: accessToken,
|
|
149
157
|
method: "get",
|
|
150
158
|
});
|
|
@@ -170,9 +178,9 @@ exports.getPublicProfile = getPublicProfile;
|
|
|
170
178
|
function listUserInfos(campaignId, userIds) {
|
|
171
179
|
return __awaiter(this, void 0, void 0, function* () {
|
|
172
180
|
validateClientCredentials();
|
|
173
|
-
const { access_token } = yield
|
|
174
|
-
const url = `${process.env.
|
|
175
|
-
const baseURL = process.env.
|
|
181
|
+
const { access_token } = yield getClientCredentialsToken("profile");
|
|
182
|
+
const url = `${process.env.OIDC_API_BASE}/api/users/info/search?campaign-id=${campaignId}`;
|
|
183
|
+
const baseURL = process.env.OIDC_API_BASE;
|
|
176
184
|
const res = yield axios_1.default.post(url, { userIds }, {
|
|
177
185
|
baseURL,
|
|
178
186
|
headers: {
|
|
@@ -186,9 +194,9 @@ exports.listUserInfos = listUserInfos;
|
|
|
186
194
|
const b64 = (str) => Buffer.from(str).toString("base64");
|
|
187
195
|
function search(userIds, preferredUsername, limit = 200, offset = 0) {
|
|
188
196
|
return __awaiter(this, void 0, void 0, function* () {
|
|
189
|
-
const url = `${process.env.
|
|
190
|
-
const baseURL = process.env.
|
|
191
|
-
const token = b64([process.env.
|
|
197
|
+
const url = `${process.env.OIDC_API_BASE}/users/search`;
|
|
198
|
+
const baseURL = process.env.OIDC_API_BASE;
|
|
199
|
+
const token = b64([process.env.OIDC_CLIENT_ID, process.env.OIDC_CLIENT_SECRET].join(":"));
|
|
192
200
|
const res = yield axios_1.default.post(url, { ids: userIds, preferred_username: preferredUsername, limit, offset }, {
|
|
193
201
|
baseURL,
|
|
194
202
|
headers: {
|
|
@@ -199,4 +207,27 @@ function search(userIds, preferredUsername, limit = 200, offset = 0) {
|
|
|
199
207
|
});
|
|
200
208
|
}
|
|
201
209
|
exports.search = search;
|
|
210
|
+
const tokenCache = new NodeCache({ stdTTL: 500, checkperiod: 20 });
|
|
211
|
+
function getClientCredentialsToken(scope) {
|
|
212
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
213
|
+
__1.utils.logger.debug("getClientCredentialsToken", { OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, scope });
|
|
214
|
+
const cacheKey = `${OIDC_CLIENT_ID}.${OIDC_CLIENT_SECRET}.${scope}`;
|
|
215
|
+
let fromCache = tokenCache.get(cacheKey);
|
|
216
|
+
if (fromCache) {
|
|
217
|
+
__1.utils.logger.debug("getClientCredentialsToken: ", "cache hit");
|
|
218
|
+
return fromCache;
|
|
219
|
+
}
|
|
220
|
+
__1.utils.logger.debug("getClientCredentialsToken: ", "cache miss");
|
|
221
|
+
const { data } = yield ax.post("/token", new URLSearchParams({
|
|
222
|
+
grant_type: 'client_credentials',
|
|
223
|
+
client_id: OIDC_CLIENT_ID,
|
|
224
|
+
scope,
|
|
225
|
+
}), {
|
|
226
|
+
auth: { username: OIDC_CLIENT_ID, password: OIDC_CLIENT_SECRET },
|
|
227
|
+
});
|
|
228
|
+
tokenCache.set(cacheKey, data);
|
|
229
|
+
return data;
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
exports.getClientCredentialsToken = getClientCredentialsToken;
|
|
202
233
|
//# sourceMappingURL=user.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/services/user.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAiC;AACjC,wCAAyC;AACzC,+
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/services/user.ts"],"names":[],"mappings":"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"}
|