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