@peerbit/server 1.1.1 → 2.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.
package/lib/esm/server.js CHANGED
@@ -4,66 +4,137 @@ import { deserialize } from "@dao-xyz/borsh";
4
4
  import { Program, getProgramFromVariant, getProgramFromVariants, } from "@peerbit/program";
5
5
  import { waitFor } from "@peerbit/time";
6
6
  import { v4 as uuid } from "uuid";
7
- import { checkExistPath, getConfigDir, getCredentialsPath, getPackageName, loadPassword, NotFoundError, } from "./config.js";
7
+ import { checkExistPath, getHomeConfigDir, getCredentialsPath, loadPassword, NotFoundError, getNodePath, } from "./config.js";
8
8
  import { setMaxListeners } from "events";
9
9
  import { create } from "./peerbit.js";
10
10
  import { Peerbit } from "peerbit";
11
11
  import { getSchema } from "@dao-xyz/borsh";
12
- import { ADDRESS_PATH, BOOTSTRAP_PATH, INSTALL_PATH, LOCAL_PORT, PEER_ID_PATH, PROGRAMS_PATH, PROGRAM_PATH, } from "./routes.js";
13
- import { client } from "./client.js";
14
- export const createPassword = async () => {
15
- const fs = await import("fs");
16
- const configDir = await getConfigDir();
12
+ import { ADDRESS_PATH, BOOTSTRAP_PATH, TERMINATE_PATH, INSTALL_PATH, LOCAL_PORT, PEER_ID_PATH, PROGRAMS_PATH, PROGRAM_PATH, RESTART_PATH, } from "./routes.js";
13
+ import { Session } from "./session.js";
14
+ import fs from "fs";
15
+ import { exit } from "process";
16
+ import { spawn, execSync } from "child_process";
17
+ import tmp from "tmp";
18
+ import path from "path";
19
+ import { base58btc } from "multiformats/bases/base58";
20
+ import { dirname } from "path";
21
+ import { fileURLToPath } from "url";
22
+ import { Level } from "level";
23
+ import { MemoryLevel } from "memory-level";
24
+ const __dirname = dirname(fileURLToPath(import.meta.url));
25
+ export const stopAndWait = (server) => {
26
+ let closed = false;
27
+ server.on("close", () => {
28
+ closed = true;
29
+ });
30
+ server.close();
31
+ return waitFor(() => closed);
32
+ };
33
+ export const createPassword = async (configDirectory, password) => {
34
+ const configDir = configDirectory ?? (await getHomeConfigDir());
17
35
  const credentialsPath = await getCredentialsPath(configDir);
18
- if (await checkExistPath(credentialsPath)) {
36
+ if (!password && (await checkExistPath(credentialsPath))) {
19
37
  throw new Error("Config path for credentials: " + credentialsPath + ", already exist");
20
38
  }
21
39
  console.log(`Creating config folder ${configDir}`);
22
40
  fs.mkdirSync(configDir, { recursive: true });
23
41
  await waitFor(() => fs.existsSync(configDir));
24
42
  console.log(`Created config folder ${configDir}`);
25
- const password = uuid();
43
+ password = password || uuid();
26
44
  fs.writeFileSync(credentialsPath, JSON.stringify({ username: "admin", password }));
27
45
  console.log(`Created credentials at ${credentialsPath}`);
28
46
  return password;
29
47
  };
30
- export const loadOrCreatePassword = async () => {
31
- try {
32
- return await loadPassword();
33
- }
34
- catch (error) {
35
- if (error instanceof NotFoundError) {
36
- return createPassword();
48
+ export const loadOrCreatePassword = async (configDirectory, password) => {
49
+ if (!password) {
50
+ try {
51
+ return await loadPassword(configDirectory);
37
52
  }
38
- throw error;
53
+ catch (error) {
54
+ if (error instanceof NotFoundError) {
55
+ return createPassword(configDirectory, password);
56
+ }
57
+ throw error;
58
+ }
59
+ }
60
+ else {
61
+ return createPassword(configDirectory, password);
39
62
  }
40
63
  };
41
64
  export const startServerWithNode = async (properties) => {
42
65
  const peer = await create({
43
- directory: properties.directory,
66
+ directory: properties.directory != null
67
+ ? getNodePath(properties.directory)
68
+ : undefined,
44
69
  domain: properties.domain,
70
+ listenPort: properties.ports?.node,
45
71
  });
46
72
  if (properties.bootstrap) {
47
73
  await peer.bootstrap();
48
74
  }
49
- const server = await startServer(peer);
75
+ const sessionDirectory = properties.directory != null
76
+ ? path.join(properties.directory, "session")
77
+ : undefined;
78
+ const session = new Session(sessionDirectory
79
+ ? new Level(sessionDirectory, {
80
+ valueEncoding: "view",
81
+ keyEncoding: "utf-8",
82
+ })
83
+ : new MemoryLevel({ valueEncoding: "view", keyEncoding: "utf-8" }));
84
+ if (!properties.newSession) {
85
+ for (const [string] of await session.imports.all()) {
86
+ await import(string);
87
+ }
88
+ for (const [address] of await session.programs.all()) {
89
+ // TODO args
90
+ try {
91
+ await peer.open(address, { timeout: 3000 });
92
+ }
93
+ catch (error) {
94
+ console.error(error);
95
+ }
96
+ }
97
+ }
98
+ else {
99
+ await session.clear();
100
+ }
101
+ const server = await startApiServer(peer, {
102
+ port: properties.ports?.api,
103
+ configDirectory: properties.directory != null
104
+ ? path.join(properties.directory, "server")
105
+ : undefined || getHomeConfigDir(),
106
+ session,
107
+ password: properties.password,
108
+ });
50
109
  const printNodeInfo = async () => {
51
110
  console.log("Starting node with address(es): ");
52
- const id = await (await client()).peer.id.get();
111
+ const id = peer.peerId.toString();
53
112
  console.log("id: " + id);
54
113
  console.log("Addresses: ");
55
- for (const a of await (await client()).peer.addresses.get()) {
114
+ for (const a of peer.getMultiaddrs()) {
56
115
  console.log(a.toString());
57
116
  }
58
117
  };
59
118
  await printNodeInfo();
60
119
  const shutDownHook = async (controller, server) => {
61
- const { exit } = await import("process");
62
- process.on("SIGINT", async () => {
63
- console.log("Shutting down node");
64
- await server.close();
65
- await controller.stop();
66
- exit();
120
+ ["SIGTERM", "SIGINT", "SIGUSR1", "SIGUSR2"].forEach((code) => {
121
+ process.on(code, async () => {
122
+ if (server.listening) {
123
+ console.log("Shutting down node");
124
+ await stopAndWait(server);
125
+ await waitFor(() => closed);
126
+ await controller.stop();
127
+ }
128
+ exit();
129
+ });
130
+ });
131
+ process.on("exit", async () => {
132
+ if (server.listening) {
133
+ console.log("Shutting down node");
134
+ await stopAndWait(server);
135
+ await waitFor(() => closed);
136
+ await controller.stop();
137
+ }
67
138
  });
68
139
  };
69
140
  await shutDownHook(peer, server);
@@ -81,10 +152,49 @@ const getProgramFromPath = (client, req, pathIndex) => {
81
152
  throw new Error("Invalid path");
82
153
  }
83
154
  const address = decodeURIComponent(path[pathIndex]);
84
- return client.handler.items.get(address);
155
+ return client.handler?.items.get(address);
85
156
  };
86
- export const startServer = async (client, port = LOCAL_PORT) => {
87
- const password = await loadOrCreatePassword();
157
+ function findPeerbitProgramFolder(inputDirectory) {
158
+ let currentDir = path.resolve(inputDirectory);
159
+ while (currentDir !== "/") {
160
+ // Stop at the root directory
161
+ const nodeModulesPath = path.join(currentDir, "node_modules");
162
+ const packageJsonPath = path.join(nodeModulesPath, "@peerbit", "program", "package.json");
163
+ if (fs.existsSync(packageJsonPath)) {
164
+ const packageJsonContent = fs.readFileSync(packageJsonPath, "utf-8");
165
+ const packageData = JSON.parse(packageJsonContent);
166
+ if (packageData.name === "@peerbit/program") {
167
+ return currentDir;
168
+ }
169
+ }
170
+ currentDir = path.dirname(currentDir);
171
+ }
172
+ return null;
173
+ }
174
+ export const startApiServer = async (client, options) => {
175
+ const port = options?.port ?? LOCAL_PORT;
176
+ const password = await loadOrCreatePassword(options.configDirectory, options?.password);
177
+ const restart = async () => {
178
+ await client.stop();
179
+ await stopAndWait(server);
180
+ // We filter out the reset command, since restarting means that we want to resume something
181
+ spawn(process.argv.shift(), [
182
+ ...process.execArgv,
183
+ ...process.argv.filter((x) => x !== "--reset" && x !== "-r"),
184
+ ], {
185
+ cwd: process.cwd(),
186
+ detached: true,
187
+ stdio: "inherit",
188
+ gid: process.getgid(),
189
+ });
190
+ /* process.on("exit", async () => {
191
+ child.kill("SIGINT")
192
+ });
193
+ process.on("SIGINT", async () => {
194
+ child.kill("SIGINT")
195
+ }); */
196
+ process.exit(0);
197
+ };
88
198
  const adminACL = (req) => {
89
199
  const auth = req.headers["authorization"];
90
200
  if (!auth?.startsWith("Basic ")) {
@@ -138,9 +248,8 @@ export const startServer = async (client, port = LOCAL_PORT) => {
138
248
  switch (req.method) {
139
249
  case "GET":
140
250
  try {
141
- const keys = JSON.stringify([
142
- ...client.handler.items.keys(),
143
- ]);
251
+ const ref = client.handler?.items?.keys() || [];
252
+ const keys = JSON.stringify([...ref]);
144
253
  res.setHeader("Content-Type", "application/json");
145
254
  res.writeHead(200);
146
255
  res.end(keys);
@@ -185,11 +294,15 @@ export const startServer = async (client, port = LOCAL_PORT) => {
185
294
  const queryData = url.searchParams.get("delete");
186
295
  const program = getProgramFromPath(client, req, 1);
187
296
  if (program) {
297
+ let closed = false;
188
298
  if (queryData === "true") {
189
- await program.drop();
299
+ closed = await program.drop();
190
300
  }
191
301
  else {
192
- await program.close();
302
+ closed = await program.close();
303
+ }
304
+ if (closed) {
305
+ await options?.session?.programs.remove(program.address);
193
306
  }
194
307
  res.writeHead(200);
195
308
  res.end();
@@ -224,7 +337,10 @@ export const startServer = async (client, port = LOCAL_PORT) => {
224
337
  }
225
338
  client
226
339
  .open(program) // TODO all users to pass args
227
- .then((program) => {
340
+ .then(async (program) => {
341
+ // TODO what if this is a reopen?
342
+ console.log("OPEN ADDRESS", program.address, client.directory, await client.services.blocks.has(program.address));
343
+ await options?.session?.programs.add(program.address, new Uint8Array());
228
344
  res.writeHead(200);
229
345
  res.end(program.address.toString());
230
346
  })
@@ -248,32 +364,62 @@ export const startServer = async (client, port = LOCAL_PORT) => {
248
364
  switch (req.method) {
249
365
  case "PUT":
250
366
  getBody(req, async (body) => {
251
- const name = body;
252
- let packageName = name;
253
- if (name.endsWith(".tgz")) {
254
- packageName = await getPackageName(name);
367
+ const installArgs = JSON.parse(body);
368
+ const packageName = installArgs.name; // @abc/123
369
+ let installName = installArgs.name; // abc123.tgz or @abc/123 (npm package name)
370
+ let clear;
371
+ if (installArgs.type === "tgz") {
372
+ const binary = fromBase64(installArgs.base64);
373
+ const tempFile = tmp.fileSync({
374
+ name: base58btc.encode(Buffer.from(installName)) +
375
+ uuid() +
376
+ ".tgz",
377
+ });
378
+ fs.writeFileSync(tempFile.fd, binary);
379
+ clear = () => tempFile.removeCallback();
380
+ installName = tempFile.name;
381
+ }
382
+ else {
383
+ clear = undefined;
255
384
  }
256
- if (!name || name.length === 0) {
385
+ if (!installName || installName.length === 0) {
257
386
  res.writeHead(400);
258
- res.end("Invalid package: " + name);
387
+ res.end("Invalid package: " + packageName);
259
388
  }
260
389
  else {
261
- const child_process = await import("child_process");
262
390
  try {
263
- child_process.execSync(`npm install ${name} --no-save --no-package-lock`); // TODO omit=dev ? but this makes breaks the tests after running once?
391
+ // TODO do this without sudo. i.e. for servers provide arguments so that this app folder is writeable by default by the user
392
+ const installDir = process.env.PEERBIT_MODULES_PATH ||
393
+ findPeerbitProgramFolder(__dirname);
394
+ let permission = "";
395
+ if (!installDir) {
396
+ res.writeHead(400);
397
+ res.end("Missing installation directory");
398
+ return;
399
+ }
400
+ try {
401
+ fs.accessSync(installDir, fs.constants.W_OK);
402
+ }
403
+ catch (error) {
404
+ permission = "sudo";
405
+ }
406
+ console.log("Installing package: " + installName);
407
+ execSync(`${permission} npm install ${installName} --prefix ${installDir} --no-save --no-package-lock`); // TODO omit=dev ? but this makes breaks the tests after running once?
264
408
  }
265
409
  catch (error) {
266
410
  res.writeHead(400);
267
- res.end("Failed ot install library: " +
268
- name +
411
+ res.end("Failed to install library: " +
412
+ packageName +
269
413
  ". " +
270
414
  error.toString());
415
+ clear?.();
271
416
  return;
272
417
  }
273
418
  try {
274
419
  const programsPre = new Set(getProgramFromVariants().map((x) => getSchema(x).variant));
275
420
  await import(
276
421
  /* webpackIgnore: true */ /* @vite-ignore */ packageName);
422
+ await options?.session?.imports.add(packageName, new Uint8Array());
277
423
  const programsPost = getProgramFromVariants()?.map((x) => getSchema(x));
278
424
  const newPrograms = [];
279
425
  for (const p of programsPost) {
@@ -287,6 +433,7 @@ export const startServer = async (client, port = LOCAL_PORT) => {
287
433
  catch (e) {
288
434
  res.writeHead(400);
289
435
  res.end(e.message.toString?.());
436
+ clear?.();
290
437
  }
291
438
  }
292
439
  });
@@ -313,6 +460,30 @@ export const startServer = async (client, port = LOCAL_PORT) => {
313
460
  break;
314
461
  }
315
462
  }
463
+ else if (req.url.startsWith(RESTART_PATH)) {
464
+ switch (req.method) {
465
+ case "POST":
466
+ res.writeHead(200);
467
+ res.end();
468
+ restart();
469
+ break;
470
+ default:
471
+ r404();
472
+ break;
473
+ }
474
+ }
475
+ else if (req.url.startsWith(TERMINATE_PATH)) {
476
+ switch (req.method) {
477
+ case "POST":
478
+ res.writeHead(200);
479
+ res.end();
480
+ process.exit(0);
481
+ break;
482
+ default:
483
+ r404();
484
+ break;
485
+ }
486
+ }
316
487
  else if (req.url.startsWith(PEER_ID_PATH)) {
317
488
  res.writeHead(200);
318
489
  res.end(client.peerId.toString());
@@ -350,6 +521,7 @@ export const startServer = async (client, port = LOCAL_PORT) => {
350
521
  });
351
522
  });
352
523
  });
524
+ await waitFor(() => server.listening);
353
525
  console.log("API available at port", port);
354
526
  return server;
355
527
  };
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" />
2
+ import { AbstractLevel } from "abstract-level";
3
+ export declare class Session {
4
+ readonly level: AbstractLevel<string | Buffer | Uint8Array, string, Uint8Array>;
5
+ programs: KV;
6
+ imports: KV;
7
+ constructor(level: AbstractLevel<string | Buffer | Uint8Array, string, Uint8Array>);
8
+ clear(): Promise<void>;
9
+ }
10
+ export declare class KV {
11
+ readonly level: AbstractLevel<string | Buffer | Uint8Array, string, Uint8Array>;
12
+ constructor(level: AbstractLevel<string | Buffer | Uint8Array, string, Uint8Array>);
13
+ add(key: string, arg: Uint8Array): Promise<void>;
14
+ remove(key: string): Promise<void>;
15
+ all(): Promise<[string, Uint8Array][]>;
16
+ open(): Promise<void>;
17
+ close(): Promise<void>;
18
+ clear(): Promise<void>;
19
+ }
@@ -0,0 +1,49 @@
1
+ export class Session {
2
+ level;
3
+ programs;
4
+ imports;
5
+ constructor(level) {
6
+ this.level = level;
7
+ this.imports = new KV(this.level.sublevel("imports", {
8
+ keyEncoding: "utf8",
9
+ valueEncoding: "view",
10
+ }));
11
+ this.programs = new KV(this.level.sublevel("programs", {
12
+ keyEncoding: "utf8",
13
+ valueEncoding: "view",
14
+ }));
15
+ }
16
+ async clear() {
17
+ await this.imports.clear();
18
+ await this.programs.clear();
19
+ }
20
+ }
21
+ export class KV {
22
+ level;
23
+ constructor(level) {
24
+ this.level = level;
25
+ }
26
+ add(key, arg) {
27
+ return this.level.put(key, arg);
28
+ }
29
+ remove(key) {
30
+ return this.level.del(key);
31
+ }
32
+ async all() {
33
+ const res = [];
34
+ for await (const [key, value] of this.level.iterator()) {
35
+ res.push([key, value]);
36
+ }
37
+ return res;
38
+ }
39
+ async open() {
40
+ await this.level.open();
41
+ }
42
+ async close() {
43
+ await this.level.close();
44
+ }
45
+ async clear() {
46
+ await this.level.clear();
47
+ }
48
+ }
49
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,OAAO;IAIT;IAHV,QAAQ,CAAK;IACb,OAAO,CAAK;IACZ,YACU,KAIR;QAJQ,UAAK,GAAL,KAAK,CAIb;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CACpB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAqB,SAAS,EAAE;YAClD,WAAW,EAAE,MAAM;YACnB,aAAa,EAAE,MAAM;SACrB,CAAC,CACF,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,CACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAqB,UAAU,EAAE;YACnD,WAAW,EAAE,MAAM;YACnB,aAAa,EAAE,MAAM;SACrB,CAAC,CACF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACD;AAED,MAAM,OAAO,EAAE;IAEJ;IADV,YACU,KAIR;QAJQ,UAAK,GAAL,KAAK,CAIb;IACC,CAAC;IAEJ,GAAG,CAAC,GAAW,EAAE,GAAe;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,GAAG;QACR,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,IAAI,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;YACvD,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,IAAI;QACT,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACD"}
@@ -5,3 +5,13 @@ export interface StartByBase64 {
5
5
  base64: string;
6
6
  }
7
7
  export type StartProgram = StartByVariant | StartByBase64;
8
+ export interface InstallWithTGZ {
9
+ type: "tgz";
10
+ name: string;
11
+ base64: string;
12
+ }
13
+ export interface InstallWithNPM {
14
+ type: "npm";
15
+ name: string;
16
+ }
17
+ export type InstallDependency = InstallWithTGZ | InstallWithNPM;