@peerbit/server 4.0.14 → 4.1.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/lib/ui/index.html CHANGED
@@ -23,7 +23,7 @@
23
23
  Learn how to configure a non-root public URL by running `npm run build`.
24
24
  -->
25
25
  <title>Peerbit</title>
26
- <script type="module" crossorigin src="/assets/index-156b377f.js"></script>
26
+ <script type="module" crossorigin src="/assets/index-878b5ffe.js"></script>
27
27
  <link rel="stylesheet" href="/assets/index-5265c558.css">
28
28
  </head>
29
29
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/server",
3
- "version": "4.0.14",
3
+ "version": "4.1.1",
4
4
  "author": "dao.xyz",
5
5
  "repository": {
6
6
  "type": "git",
@@ -55,7 +55,7 @@
55
55
  },
56
56
  "devDependencies": {
57
57
  "@peerbit/test-lib": "^0.0.1",
58
- "@peerbit/test-utils": "1.0.29",
58
+ "@peerbit/test-utils": "1.0.30",
59
59
  "@types/tmp": "^0.2.3",
60
60
  "@types/yargs": "^17.0.24",
61
61
  "aws-sdk": "^2.1259.0",
@@ -65,7 +65,7 @@
65
65
  "@dao-xyz/libp2p-noise": "^13.0.1",
66
66
  "axios": "^1.4.0",
67
67
  "chalk": "^5.3.0",
68
- "peerbit": "2.0.11",
68
+ "peerbit": "2.0.12",
69
69
  "tar-stream": "^3.1.6",
70
70
  "tmp": "^0.2.1",
71
71
  "tty-table": "^4.2.1",
@@ -76,5 +76,5 @@
76
76
  "@aws-sdk/client-ec2": "^3.390.0",
77
77
  "@aws-sdk/client-route-53": "^3.391.0"
78
78
  },
79
- "gitHead": "4e50b2d5cd276cf7cf9bdd44cdfc8062e2b40bf8"
79
+ "gitHead": "ffd9ed60e2a9185a11f9d37eab74f4eb10addb30"
80
80
  }
package/src/cli.ts CHANGED
@@ -985,7 +985,20 @@ export const cli = async (args?: string[]) => {
985
985
  }
986
986
  }
987
987
  })
988
-
988
+ .command({
989
+ command: "variants",
990
+ describe: "List all programs variants",
991
+ aliases: "v",
992
+ handler: async (args) => {
993
+ for (const api of apis) {
994
+ const list = await api.api.program.variants();
995
+ api.log(`Program variants (${list.length}):`);
996
+ list.forEach((p) => {
997
+ api.log(chalk.green(p));
998
+ });
999
+ }
1000
+ }
1001
+ })
989
1002
  .command({
990
1003
  command: "open [program]",
991
1004
  describe: "Open program",
@@ -1073,7 +1086,7 @@ export const cli = async (args?: string[]) => {
1073
1086
  const newPrograms =
1074
1087
  await api.api.dependency.install(installCommand);
1075
1088
  api.log(
1076
- `New programs available (${newPrograms.length}):`
1089
+ `New variants available (${newPrograms.length}):`
1077
1090
  );
1078
1091
  newPrograms.forEach((p) => {
1079
1092
  api.log(chalk.green(p));
package/src/client.ts CHANGED
@@ -10,7 +10,8 @@ import {
10
10
  PROGRAM_PATH,
11
11
  RESTART_PATH,
12
12
  TRUST_PATH,
13
- REMOTE_API_PORT
13
+ REMOTE_API_PORT,
14
+ PROGRAM_VARIANTS_PATH
14
15
  } from "./routes.js";
15
16
  import { Address } from "@peerbit/program";
16
17
  import { multiaddr } from "@multiformats/multiaddr";
@@ -221,6 +222,14 @@ export const createClient = async (
221
222
  })
222
223
  );
223
224
  return resp.data as string[];
225
+ },
226
+ variants: async (): Promise<string[]> => {
227
+ const resp = throwIfNot200(
228
+ await axiosInstance.get(endpoint + PROGRAM_VARIANTS_PATH, {
229
+ validateStatus
230
+ })
231
+ );
232
+ return resp.data as string[];
224
233
  }
225
234
  },
226
235
  dependency: {
package/src/routes.ts CHANGED
@@ -16,6 +16,7 @@ export const PEER_ID_PATH = "/peer/id";
16
16
  export const ADDRESS_PATH = "/peer/address";
17
17
  export const PROGRAM_PATH = "/program";
18
18
  export const PROGRAMS_PATH = "/programs";
19
+ export const PROGRAM_VARIANTS_PATH = "/program/variants";
19
20
  export const INSTALL_PATH = "/install";
20
21
  export const BOOTSTRAP_PATH = "/network/bootstrap";
21
22
  export const RESTART_PATH = "/restart";
package/src/server.ts CHANGED
@@ -39,7 +39,8 @@ import {
39
39
  PROGRAM_PATH,
40
40
  RESTART_PATH,
41
41
  TRUST_PATH,
42
- STOP_PATH
42
+ STOP_PATH,
43
+ PROGRAM_VARIANTS_PATH
43
44
  } from "./routes.js";
44
45
  import { Session } from "./session.js";
45
46
  import fs from "fs";
@@ -320,6 +321,32 @@ export const startApiServer = async (
320
321
  }
321
322
  break;
322
323
 
324
+ default:
325
+ r404();
326
+ break;
327
+ }
328
+ } else if (req.url.startsWith(PROGRAM_VARIANTS_PATH)) {
329
+ if (client instanceof Peerbit === false) {
330
+ res.writeHead(400);
331
+ res.end("Server node is not running a native client");
332
+ return;
333
+ }
334
+ switch (req.method) {
335
+ case "GET":
336
+ try {
337
+ res.setHeader("Content-Type", "application/json");
338
+ res.writeHead(200);
339
+ res.end(
340
+ JSON.stringify(
341
+ getProgramFromVariants().map((x) => getSchema(x).variant)
342
+ )
343
+ );
344
+ } catch (error: any) {
345
+ res.writeHead(404);
346
+ res.end(error.message);
347
+ }
348
+ break;
349
+
323
350
  default:
324
351
  r404();
325
352
  break;
@@ -409,12 +436,6 @@ export const startApiServer = async (
409
436
  .open(program) // TODO all users to pass args
410
437
  .then(async (program) => {
411
438
  // TODO what if this is a reopen?
412
- console.log(
413
- "OPEN ADDRESS",
414
- program.address,
415
- (client as Peerbit).directory,
416
- await client.services.blocks.has(program.address)
417
- );
418
439
  await properties?.session?.programs.add(
419
440
  program.address,
420
441
  new Uint8Array()
@@ -428,6 +449,7 @@ export const startApiServer = async (
428
449
  });
429
450
  } catch (error: any) {
430
451
  res.writeHead(400);
452
+ console.error(error);
431
453
  res.end(error.toString());
432
454
  }
433
455
  break;