@lessly/sdk-app 48.0.4 → 49.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.
Files changed (53) hide show
  1. package/dist/analytics/index.d.cts +1 -1
  2. package/dist/analytics/index.d.ts +1 -1
  3. package/dist/brain/index.cjs +0 -5
  4. package/dist/brain/index.cjs.map +1 -1
  5. package/dist/brain/index.d.cts +2 -6
  6. package/dist/brain/index.d.ts +2 -6
  7. package/dist/brain/index.js +1 -5
  8. package/dist/brain/index.js.map +1 -1
  9. package/dist/{client.gen-BsjxuDLy.d.cts → client.gen-CLRsCNvG.d.cts} +4630 -531
  10. package/dist/{client.gen-BsjxuDLy.d.ts → client.gen-CLRsCNvG.d.ts} +4630 -531
  11. package/dist/consent/index.d.cts +1 -1
  12. package/dist/consent/index.d.ts +1 -1
  13. package/dist/content/index.cjs +161 -0
  14. package/dist/content/index.cjs.map +1 -0
  15. package/dist/content/index.d.cts +128 -0
  16. package/dist/content/index.d.ts +128 -0
  17. package/dist/content/index.js +129 -0
  18. package/dist/content/index.js.map +1 -0
  19. package/dist/deployment/index.d.cts +1 -1
  20. package/dist/deployment/index.d.ts +1 -1
  21. package/dist/index.cjs +600 -13
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +72 -3
  24. package/dist/index.d.ts +72 -3
  25. package/dist/index.js +600 -14
  26. package/dist/index.js.map +1 -1
  27. package/dist/mail/index.d.cts +2 -2
  28. package/dist/mail/index.d.ts +2 -2
  29. package/dist/observe/index.d.cts +1 -1
  30. package/dist/observe/index.d.ts +1 -1
  31. package/dist/organization/index.d.cts +1 -1
  32. package/dist/organization/index.d.ts +1 -1
  33. package/dist/realtime/index.d.cts +1 -1
  34. package/dist/realtime/index.d.ts +1 -1
  35. package/dist/support/index.d.cts +1 -1
  36. package/dist/support/index.d.ts +1 -1
  37. package/dist/tracking/index.d.cts +1 -1
  38. package/dist/tracking/index.d.ts +1 -1
  39. package/dist/users/index.d.cts +1 -1
  40. package/dist/users/index.d.ts +1 -1
  41. package/dist/waitlist/index.d.cts +1 -1
  42. package/dist/waitlist/index.d.ts +1 -1
  43. package/docs/recipes/sdk-usage.md +50 -0
  44. package/docs/rules.md +13 -0
  45. package/package.json +7 -2
  46. package/src/gen/bindings.gen.ts +536 -14
  47. package/src/gen/brain/index.ts +1 -1
  48. package/src/gen/brain/queryOptions.gen.ts +0 -7
  49. package/src/gen/client.gen.ts +113 -5
  50. package/src/gen/content/index.ts +3 -0
  51. package/src/gen/content/queryOptions.gen.ts +202 -0
  52. package/src/gen/manifest.gen.ts +1 -1
  53. package/src/gen/types.gen.ts +4155 -274
package/dist/index.js CHANGED
@@ -124,6 +124,65 @@ async function executeRequest(opts, binding, input) {
124
124
  return parsed;
125
125
  }
126
126
 
127
+ // src/runtime/connectStream.ts
128
+ function toWsUrl(url) {
129
+ if (url.startsWith("https:")) return `wss:${url.slice("https:".length)}`;
130
+ if (url.startsWith("http:")) return `ws:${url.slice("http:".length)}`;
131
+ return url;
132
+ }
133
+ function connectStream(opts, binding, input) {
134
+ const restLike = { method: "GET", path: binding.path, ...binding.params ? { params: binding.params } : {} };
135
+ const { path, query, body } = resolveRequest(restLike, input);
136
+ const url = toWsUrl(buildUrl(opts.baseUrl, path, { ...query, ...body ?? {} }));
137
+ const Ctor = opts.WebSocket ?? globalThis.WebSocket;
138
+ if (!Ctor) {
139
+ throw new Error(
140
+ `@lessly/sdk-app: WebSocket is unavailable in this environment, so the stream to "${binding.path}" cannot be opened. Streaming requires a browser; pass options.WebSocket to supply an implementation.`
141
+ );
142
+ }
143
+ const socket = new Ctor(url);
144
+ const messageSubs = /* @__PURE__ */ new Set();
145
+ const closeSubs = /* @__PURE__ */ new Set();
146
+ let pending = [];
147
+ socket.addEventListener("open", () => {
148
+ const queued = pending ?? [];
149
+ pending = null;
150
+ for (const frame of queued) socket.send(frame);
151
+ });
152
+ socket.addEventListener("message", (ev) => {
153
+ for (const cb of [...messageSubs]) cb(ev.data);
154
+ });
155
+ socket.addEventListener("close", (ev) => {
156
+ pending = null;
157
+ const info = { code: ev.code ?? 1006, reason: ev.reason ?? "", wasClean: ev.wasClean ?? false };
158
+ for (const cb of [...closeSubs]) cb(info);
159
+ });
160
+ return {
161
+ send(data) {
162
+ if (pending !== null) {
163
+ pending.push(data);
164
+ return;
165
+ }
166
+ if (socket.readyState === 1) socket.send(data);
167
+ },
168
+ close(code, reason) {
169
+ pending = null;
170
+ socket.close(code, reason);
171
+ },
172
+ onMessage(cb) {
173
+ messageSubs.add(cb);
174
+ return () => messageSubs.delete(cb);
175
+ },
176
+ onClose(cb) {
177
+ closeSubs.add(cb);
178
+ return () => closeSubs.delete(cb);
179
+ },
180
+ get readyState() {
181
+ return socket.readyState;
182
+ }
183
+ };
184
+ }
185
+
127
186
  // src/runtime/name.ts
128
187
  var ROOT_RESOURCE = "$root";
129
188
  function splitToolName(name) {
@@ -821,19 +880,6 @@ var bindings = {
821
880
  "path": "/brain/restores/:restoreId",
822
881
  "readOnly": true
823
882
  }
824
- },
825
- "usage": {
826
- "report": {
827
- "method": "GET",
828
- "params": [
829
- {
830
- "in": "query",
831
- "name": "days"
832
- }
833
- ],
834
- "path": "/brain/usage/report",
835
- "readOnly": true
836
- }
837
883
  }
838
884
  },
839
885
  "consent": {
@@ -1101,6 +1147,535 @@ var bindings = {
1101
1147
  }
1102
1148
  }
1103
1149
  },
1150
+ "content": {
1151
+ "channels": {
1152
+ "bind": {
1153
+ "method": "POST",
1154
+ "params": [
1155
+ {
1156
+ "in": "path",
1157
+ "name": "id"
1158
+ },
1159
+ {
1160
+ "in": "body",
1161
+ "name": "connectorId"
1162
+ },
1163
+ {
1164
+ "in": "body",
1165
+ "name": "deliveryMode"
1166
+ }
1167
+ ],
1168
+ "path": "/content/channels/:id/bind",
1169
+ "readOnly": false
1170
+ },
1171
+ "get": {
1172
+ "method": "GET",
1173
+ "params": [
1174
+ {
1175
+ "in": "path",
1176
+ "name": "id"
1177
+ }
1178
+ ],
1179
+ "path": "/content/channels/:id",
1180
+ "readOnly": true
1181
+ },
1182
+ "list": {
1183
+ "method": "GET",
1184
+ "params": [
1185
+ {
1186
+ "in": "query",
1187
+ "name": "network"
1188
+ },
1189
+ {
1190
+ "in": "query",
1191
+ "name": "limit"
1192
+ },
1193
+ {
1194
+ "in": "query",
1195
+ "name": "offset"
1196
+ }
1197
+ ],
1198
+ "path": "/content/channels",
1199
+ "readOnly": true
1200
+ },
1201
+ "resume": {
1202
+ "method": "POST",
1203
+ "params": [
1204
+ {
1205
+ "in": "path",
1206
+ "name": "id"
1207
+ }
1208
+ ],
1209
+ "path": "/content/channels/:id/resume",
1210
+ "readOnly": false
1211
+ },
1212
+ "unbind": {
1213
+ "method": "POST",
1214
+ "params": [
1215
+ {
1216
+ "in": "path",
1217
+ "name": "id"
1218
+ }
1219
+ ],
1220
+ "path": "/content/channels/:id/unbind",
1221
+ "readOnly": false
1222
+ },
1223
+ "update": {
1224
+ "method": "PATCH",
1225
+ "params": [
1226
+ {
1227
+ "in": "path",
1228
+ "name": "id"
1229
+ },
1230
+ {
1231
+ "in": "body",
1232
+ "name": "displayName"
1233
+ },
1234
+ {
1235
+ "in": "body",
1236
+ "name": "deliveryMode"
1237
+ },
1238
+ {
1239
+ "in": "body",
1240
+ "name": "capabilities"
1241
+ }
1242
+ ],
1243
+ "path": "/content/channels/:id",
1244
+ "readOnly": false
1245
+ }
1246
+ },
1247
+ "media": {
1248
+ "finalize": {
1249
+ "method": "POST",
1250
+ "params": [
1251
+ {
1252
+ "in": "path",
1253
+ "name": "id"
1254
+ }
1255
+ ],
1256
+ "path": "/content/media/:id/finalize",
1257
+ "readOnly": false
1258
+ },
1259
+ "get": {
1260
+ "method": "GET",
1261
+ "params": [
1262
+ {
1263
+ "in": "path",
1264
+ "name": "id"
1265
+ }
1266
+ ],
1267
+ "path": "/content/media/:id",
1268
+ "readOnly": true
1269
+ },
1270
+ "list": {
1271
+ "method": "GET",
1272
+ "params": [
1273
+ {
1274
+ "in": "query",
1275
+ "name": "status"
1276
+ },
1277
+ {
1278
+ "in": "query",
1279
+ "name": "limit"
1280
+ },
1281
+ {
1282
+ "in": "query",
1283
+ "name": "offset"
1284
+ }
1285
+ ],
1286
+ "path": "/content/media",
1287
+ "readOnly": true
1288
+ },
1289
+ "upload": {
1290
+ "method": "POST",
1291
+ "params": [
1292
+ {
1293
+ "in": "body",
1294
+ "name": "sourceUrl"
1295
+ },
1296
+ {
1297
+ "in": "body",
1298
+ "name": "filename"
1299
+ }
1300
+ ],
1301
+ "path": "/content/media",
1302
+ "readOnly": false
1303
+ }
1304
+ },
1305
+ "media-create-upload": {
1306
+ "url": {
1307
+ "method": "POST",
1308
+ "params": [
1309
+ {
1310
+ "in": "body",
1311
+ "name": "contentType"
1312
+ },
1313
+ {
1314
+ "in": "body",
1315
+ "name": "filename"
1316
+ }
1317
+ ],
1318
+ "path": "/content/media/upload-url",
1319
+ "readOnly": false
1320
+ }
1321
+ },
1322
+ "metrics-channel": {
1323
+ "series": {
1324
+ "method": "GET",
1325
+ "params": [
1326
+ {
1327
+ "in": "path",
1328
+ "name": "id"
1329
+ },
1330
+ {
1331
+ "in": "query",
1332
+ "name": "from"
1333
+ },
1334
+ {
1335
+ "in": "query",
1336
+ "name": "to"
1337
+ },
1338
+ {
1339
+ "in": "query",
1340
+ "name": "limit"
1341
+ }
1342
+ ],
1343
+ "path": "/content/metrics/channels/:id",
1344
+ "readOnly": true
1345
+ }
1346
+ },
1347
+ "metrics-post": {
1348
+ "series": {
1349
+ "method": "GET",
1350
+ "params": [
1351
+ {
1352
+ "in": "path",
1353
+ "name": "id"
1354
+ },
1355
+ {
1356
+ "in": "query",
1357
+ "name": "from"
1358
+ },
1359
+ {
1360
+ "in": "query",
1361
+ "name": "to"
1362
+ },
1363
+ {
1364
+ "in": "query",
1365
+ "name": "limit"
1366
+ }
1367
+ ],
1368
+ "path": "/content/metrics/posts/:id",
1369
+ "readOnly": true
1370
+ }
1371
+ },
1372
+ "posts": {
1373
+ "approve": {
1374
+ "method": "POST",
1375
+ "params": [
1376
+ {
1377
+ "in": "path",
1378
+ "name": "id"
1379
+ }
1380
+ ],
1381
+ "path": "/content/posts/:id/approve",
1382
+ "readOnly": false
1383
+ },
1384
+ "create": {
1385
+ "method": "POST",
1386
+ "params": [
1387
+ {
1388
+ "in": "body",
1389
+ "name": "text"
1390
+ },
1391
+ {
1392
+ "in": "body",
1393
+ "name": "media"
1394
+ }
1395
+ ],
1396
+ "path": "/content/posts",
1397
+ "readOnly": false
1398
+ },
1399
+ "get": {
1400
+ "method": "GET",
1401
+ "params": [
1402
+ {
1403
+ "in": "path",
1404
+ "name": "id"
1405
+ }
1406
+ ],
1407
+ "path": "/content/posts/:id",
1408
+ "readOnly": true
1409
+ },
1410
+ "list": {
1411
+ "method": "GET",
1412
+ "params": [
1413
+ {
1414
+ "in": "query",
1415
+ "name": "status"
1416
+ },
1417
+ {
1418
+ "in": "query",
1419
+ "name": "limit"
1420
+ },
1421
+ {
1422
+ "in": "query",
1423
+ "name": "offset"
1424
+ }
1425
+ ],
1426
+ "path": "/content/posts",
1427
+ "readOnly": true
1428
+ },
1429
+ "submit": {
1430
+ "method": "POST",
1431
+ "params": [
1432
+ {
1433
+ "in": "path",
1434
+ "name": "id"
1435
+ }
1436
+ ],
1437
+ "path": "/content/posts/:id/submit",
1438
+ "readOnly": false
1439
+ },
1440
+ "update": {
1441
+ "method": "PATCH",
1442
+ "params": [
1443
+ {
1444
+ "in": "path",
1445
+ "name": "id"
1446
+ },
1447
+ {
1448
+ "in": "body",
1449
+ "name": "text"
1450
+ },
1451
+ {
1452
+ "in": "body",
1453
+ "name": "media"
1454
+ }
1455
+ ],
1456
+ "path": "/content/posts/:id",
1457
+ "readOnly": false
1458
+ },
1459
+ "versions": {
1460
+ "method": "GET",
1461
+ "params": [
1462
+ {
1463
+ "in": "path",
1464
+ "name": "id"
1465
+ }
1466
+ ],
1467
+ "path": "/content/posts/:id/versions",
1468
+ "readOnly": true
1469
+ }
1470
+ },
1471
+ "posts-attach": {
1472
+ "media": {
1473
+ "method": "POST",
1474
+ "params": [
1475
+ {
1476
+ "in": "path",
1477
+ "name": "id"
1478
+ },
1479
+ {
1480
+ "in": "body",
1481
+ "name": "mediaIds"
1482
+ }
1483
+ ],
1484
+ "path": "/content/posts/:id/media/attach",
1485
+ "readOnly": false
1486
+ }
1487
+ },
1488
+ "posts-detach": {
1489
+ "media": {
1490
+ "method": "POST",
1491
+ "params": [
1492
+ {
1493
+ "in": "path",
1494
+ "name": "id"
1495
+ },
1496
+ {
1497
+ "in": "body",
1498
+ "name": "mediaIds"
1499
+ }
1500
+ ],
1501
+ "path": "/content/posts/:id/media/detach",
1502
+ "readOnly": false
1503
+ }
1504
+ },
1505
+ "publications": {
1506
+ "cancel": {
1507
+ "method": "POST",
1508
+ "params": [
1509
+ {
1510
+ "in": "path",
1511
+ "name": "id"
1512
+ }
1513
+ ],
1514
+ "path": "/content/publications/:id/cancel",
1515
+ "readOnly": false
1516
+ },
1517
+ "confirm": {
1518
+ "method": "POST",
1519
+ "params": [
1520
+ {
1521
+ "in": "path",
1522
+ "name": "id"
1523
+ },
1524
+ {
1525
+ "in": "body",
1526
+ "name": "externalUrl"
1527
+ },
1528
+ {
1529
+ "in": "body",
1530
+ "name": "externalId"
1531
+ }
1532
+ ],
1533
+ "path": "/content/publications/:id/confirm",
1534
+ "readOnly": false
1535
+ },
1536
+ "get": {
1537
+ "method": "GET",
1538
+ "params": [
1539
+ {
1540
+ "in": "path",
1541
+ "name": "id"
1542
+ }
1543
+ ],
1544
+ "path": "/content/publications/:id",
1545
+ "readOnly": true
1546
+ },
1547
+ "list": {
1548
+ "method": "GET",
1549
+ "params": [
1550
+ {
1551
+ "in": "query",
1552
+ "name": "state"
1553
+ },
1554
+ {
1555
+ "in": "query",
1556
+ "name": "postId"
1557
+ },
1558
+ {
1559
+ "in": "query",
1560
+ "name": "channelId"
1561
+ },
1562
+ {
1563
+ "in": "query",
1564
+ "name": "limit"
1565
+ },
1566
+ {
1567
+ "in": "query",
1568
+ "name": "offset"
1569
+ },
1570
+ {
1571
+ "in": "query",
1572
+ "name": "scheduledFrom"
1573
+ },
1574
+ {
1575
+ "in": "query",
1576
+ "name": "scheduledTo"
1577
+ }
1578
+ ],
1579
+ "path": "/content/publications",
1580
+ "readOnly": true
1581
+ },
1582
+ "publish": {
1583
+ "method": "POST",
1584
+ "params": [
1585
+ {
1586
+ "in": "body",
1587
+ "name": "postId"
1588
+ },
1589
+ {
1590
+ "in": "body",
1591
+ "name": "channelId"
1592
+ },
1593
+ {
1594
+ "in": "body",
1595
+ "name": "text"
1596
+ },
1597
+ {
1598
+ "in": "body",
1599
+ "name": "idempotencyKey"
1600
+ }
1601
+ ],
1602
+ "path": "/content/publications/publish",
1603
+ "readOnly": false
1604
+ },
1605
+ "remind": {
1606
+ "method": "POST",
1607
+ "params": [
1608
+ {
1609
+ "in": "path",
1610
+ "name": "id"
1611
+ }
1612
+ ],
1613
+ "path": "/content/publications/:id/remind",
1614
+ "readOnly": false
1615
+ },
1616
+ "reschedule": {
1617
+ "method": "POST",
1618
+ "params": [
1619
+ {
1620
+ "in": "path",
1621
+ "name": "id"
1622
+ },
1623
+ {
1624
+ "in": "body",
1625
+ "name": "scheduledAt"
1626
+ }
1627
+ ],
1628
+ "path": "/content/publications/:id/reschedule",
1629
+ "readOnly": false
1630
+ },
1631
+ "schedule": {
1632
+ "method": "POST",
1633
+ "params": [
1634
+ {
1635
+ "in": "body",
1636
+ "name": "postId"
1637
+ },
1638
+ {
1639
+ "in": "body",
1640
+ "name": "channelId"
1641
+ },
1642
+ {
1643
+ "in": "body",
1644
+ "name": "scheduledAt"
1645
+ },
1646
+ {
1647
+ "in": "body",
1648
+ "name": "text"
1649
+ },
1650
+ {
1651
+ "in": "body",
1652
+ "name": "idempotencyKey"
1653
+ }
1654
+ ],
1655
+ "path": "/content/publications",
1656
+ "readOnly": false
1657
+ },
1658
+ "validate": {
1659
+ "method": "POST",
1660
+ "params": [
1661
+ {
1662
+ "in": "body",
1663
+ "name": "postId"
1664
+ },
1665
+ {
1666
+ "in": "body",
1667
+ "name": "channels"
1668
+ },
1669
+ {
1670
+ "in": "body",
1671
+ "name": "scheduledAt"
1672
+ }
1673
+ ],
1674
+ "path": "/content/publications/validate",
1675
+ "readOnly": true
1676
+ }
1677
+ }
1678
+ },
1104
1679
  "deployment": {
1105
1680
  "alert": {
1106
1681
  "create": {
@@ -2436,6 +3011,10 @@ var bindings = {
2436
3011
  "in": "body",
2437
3012
  "name": "tracing"
2438
3013
  },
3014
+ {
3015
+ "in": "body",
3016
+ "name": "autoDeploy"
3017
+ },
2439
3018
  {
2440
3019
  "in": "path",
2441
3020
  "name": "id"
@@ -8179,6 +8758,13 @@ function createLesslyApp(opts) {
8179
8758
  const map = bindings;
8180
8759
  const nsCache = {};
8181
8760
  const base = {
8761
+ // The whole streaming surface of the client. Streams are NOT reachable through the request
8762
+ // proxy: a socket is not a promise-returning call, and hanging one off `sdk.<ns>.<res>.<act>`
8763
+ // would make two very different lifetimes look identical at the call site. The generated
8764
+ // `<tool>Connect` factories carry the binding and call this.
8765
+ openStream(binding, input) {
8766
+ return connectStream(opts, binding, input);
8767
+ },
8182
8768
  call(toolName, input) {
8183
8769
  let split;
8184
8770
  try {
@@ -8203,6 +8789,6 @@ function createLesslyApp(opts) {
8203
8789
  });
8204
8790
  }
8205
8791
 
8206
- export { LesslyApiError, createLesslyApp };
8792
+ export { LesslyApiError, connectStream, createLesslyApp };
8207
8793
  //# sourceMappingURL=index.js.map
8208
8794
  //# sourceMappingURL=index.js.map