@01.software/sdk 0.5.9 → 0.5.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1181,9 +1181,204 @@ var COLLECTIONS = [
1181
1181
  "live-streams",
1182
1182
  "images",
1183
1183
  "forms",
1184
- "form-submissions"
1184
+ "form-submissions",
1185
+ // Community
1186
+ "threads",
1187
+ "comments",
1188
+ "reactions",
1189
+ "reaction-types",
1190
+ "bookmarks",
1191
+ "thread-categories",
1192
+ "reports",
1193
+ "community-bans"
1185
1194
  ];
1186
1195
 
1196
+ // src/core/community/community-client.ts
1197
+ var CommunityClient = class {
1198
+ constructor(options) {
1199
+ if (!options.clientKey) {
1200
+ throw createConfigError("clientKey is required for CommunityClient.");
1201
+ }
1202
+ this.clientKey = options.clientKey;
1203
+ this.secretKey = options.secretKey;
1204
+ this.customerToken = options.customerToken;
1205
+ this.baseUrl = options.baseUrl;
1206
+ this.onUnauthorized = options.onUnauthorized;
1207
+ }
1208
+ async execute(endpoint, method, body) {
1209
+ const token = typeof this.customerToken === "function" ? this.customerToken() : this.customerToken;
1210
+ const response = await httpFetch(endpoint, {
1211
+ method,
1212
+ clientKey: this.clientKey,
1213
+ secretKey: this.secretKey,
1214
+ customerToken: token ?? void 0,
1215
+ baseUrl: this.baseUrl,
1216
+ ...token && this.onUnauthorized && { onUnauthorized: this.onUnauthorized },
1217
+ ...body !== void 0 && { body: JSON.stringify(body) }
1218
+ });
1219
+ return parseApiResponse(response, endpoint);
1220
+ }
1221
+ // Threads
1222
+ createThread(params) {
1223
+ return this.execute("/api/threads", "POST", params);
1224
+ }
1225
+ getMyThreads(params) {
1226
+ const query = params ? `?${new URLSearchParams(
1227
+ Object.fromEntries(
1228
+ Object.entries(params).map(([k, v]) => [k, String(v)])
1229
+ )
1230
+ ).toString()}` : "";
1231
+ return this.execute(
1232
+ `/api/threads/my${query}`,
1233
+ "GET"
1234
+ );
1235
+ }
1236
+ getTrending(params) {
1237
+ const query = params ? `?${new URLSearchParams(
1238
+ Object.fromEntries(
1239
+ Object.entries(params).map(([k, v]) => [k, String(v)])
1240
+ )
1241
+ ).toString()}` : "";
1242
+ return this.execute(
1243
+ `/api/threads/trending${query}`,
1244
+ "GET"
1245
+ );
1246
+ }
1247
+ incrementView(params) {
1248
+ return this.execute(
1249
+ `/api/threads/${params.threadId}/view`,
1250
+ "POST"
1251
+ );
1252
+ }
1253
+ reportThread(params) {
1254
+ const { threadId, ...body } = params;
1255
+ return this.execute(
1256
+ `/api/threads/${threadId}/report`,
1257
+ "POST",
1258
+ body
1259
+ );
1260
+ }
1261
+ // Comments
1262
+ createComment(params) {
1263
+ const { threadId, parentId, content } = params;
1264
+ const body = { thread: threadId, content };
1265
+ if (parentId !== void 0) {
1266
+ body.parent = parentId;
1267
+ }
1268
+ return this.execute("/api/comments", "POST", body);
1269
+ }
1270
+ listComments(params) {
1271
+ const { threadId, page, limit, rootId } = params;
1272
+ const urlParams = new URLSearchParams();
1273
+ urlParams.set("where[thread][equals]", threadId);
1274
+ urlParams.set("sort", "-createdAt");
1275
+ if (limit !== void 0) urlParams.set("limit", String(limit));
1276
+ if (page !== void 0) urlParams.set("page", String(page));
1277
+ if (rootId !== void 0) urlParams.set("where[rootId][equals]", rootId);
1278
+ return this.execute(
1279
+ `/api/comments?${urlParams.toString()}`,
1280
+ "GET"
1281
+ );
1282
+ }
1283
+ updateComment(params) {
1284
+ const { commentId, content } = params;
1285
+ return this.execute(
1286
+ `/api/comments/${commentId}`,
1287
+ "PATCH",
1288
+ { content }
1289
+ );
1290
+ }
1291
+ deleteComment(params) {
1292
+ return this.execute(
1293
+ `/api/comments/${params.commentId}`,
1294
+ "DELETE"
1295
+ );
1296
+ }
1297
+ reportComment(params) {
1298
+ const { commentId, ...body } = params;
1299
+ return this.execute(
1300
+ `/api/comments/${commentId}/report`,
1301
+ "POST",
1302
+ body
1303
+ );
1304
+ }
1305
+ // Reactions
1306
+ addReaction(params) {
1307
+ const { threadId, type } = params;
1308
+ return this.execute("/api/reactions", "POST", {
1309
+ thread: threadId,
1310
+ type
1311
+ });
1312
+ }
1313
+ removeReaction(params) {
1314
+ const { threadId, type } = params;
1315
+ return this.execute(
1316
+ `/api/threads/${threadId}/react?type=${encodeURIComponent(type)}`,
1317
+ "DELETE"
1318
+ );
1319
+ }
1320
+ addCommentReaction(params) {
1321
+ const { commentId, type } = params;
1322
+ return this.execute("/api/reactions", "POST", {
1323
+ comment: commentId,
1324
+ type
1325
+ });
1326
+ }
1327
+ removeCommentReaction(params) {
1328
+ const { commentId, type } = params;
1329
+ return this.execute(
1330
+ `/api/comments/${commentId}/react?type=${encodeURIComponent(type)}`,
1331
+ "DELETE"
1332
+ );
1333
+ }
1334
+ getReactionSummary(params) {
1335
+ return this.execute(
1336
+ `/api/threads/${params.threadId}/reactions`,
1337
+ "GET"
1338
+ );
1339
+ }
1340
+ getReactionTypes() {
1341
+ return this.execute(
1342
+ "/api/reaction-types?limit=100",
1343
+ "GET"
1344
+ );
1345
+ }
1346
+ // Bookmarks
1347
+ addBookmark(params) {
1348
+ return this.execute("/api/bookmarks", "POST", {
1349
+ thread: params.threadId
1350
+ });
1351
+ }
1352
+ removeBookmark(params) {
1353
+ return this.execute(
1354
+ `/api/threads/${params.threadId}/bookmark`,
1355
+ "DELETE"
1356
+ );
1357
+ }
1358
+ getMyBookmarks(params) {
1359
+ const query = params ? `?${new URLSearchParams(
1360
+ Object.fromEntries(
1361
+ Object.entries(params).map(([k, v]) => [k, String(v)])
1362
+ )
1363
+ ).toString()}` : "";
1364
+ return this.execute(
1365
+ `/api/bookmarks/my${query}`,
1366
+ "GET"
1367
+ );
1368
+ }
1369
+ // Moderation
1370
+ banCustomer(params) {
1371
+ return this.execute("/api/community-bans/ban", "POST", params);
1372
+ }
1373
+ unbanCustomer(params) {
1374
+ return this.execute(
1375
+ "/api/community-bans/unban",
1376
+ "DELETE",
1377
+ params
1378
+ );
1379
+ }
1380
+ };
1381
+
1187
1382
  // src/core/customer/customer-auth.ts
1188
1383
  var DEFAULT_TIMEOUT2 = 15e3;
1189
1384
  function safeGetItem(key) {
@@ -1906,6 +2101,12 @@ var Client = class {
1906
2101
  baseUrl: this.baseUrl,
1907
2102
  onUnauthorized
1908
2103
  });
2104
+ this.community = new CommunityClient({
2105
+ clientKey: this.config.clientKey,
2106
+ customerToken: () => this.customer.getToken(),
2107
+ baseUrl: this.baseUrl,
2108
+ onUnauthorized
2109
+ });
1909
2110
  this.collections = new CollectionClient(
1910
2111
  this.config.clientKey,
1911
2112
  void 0,
@@ -1964,6 +2165,11 @@ var ServerClient = class {
1964
2165
  secretKey: this.config.secretKey,
1965
2166
  baseUrl: this.baseUrl
1966
2167
  });
2168
+ this.community = new CommunityClient({
2169
+ clientKey: this.config.clientKey,
2170
+ secretKey: this.config.secretKey,
2171
+ baseUrl: this.baseUrl
2172
+ });
1967
2173
  this.product = new ProductApi({
1968
2174
  clientKey: this.config.clientKey,
1969
2175
  secretKey: this.config.secretKey,
@@ -2329,6 +2535,7 @@ export {
2329
2535
  CollectionClient,
2330
2536
  CollectionHooks,
2331
2537
  CollectionQueryBuilder,
2538
+ CommunityClient,
2332
2539
  ConfigError,
2333
2540
  CustomerAuth,
2334
2541
  CustomerHooks,