@peerbit/server 1.1.2 → 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,69 +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, getHomeConfigDir, 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";
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";
14
20
  import { dirname } from "path";
15
21
  import { fileURLToPath } from "url";
22
+ import { Level } from "level";
23
+ import { MemoryLevel } from "memory-level";
16
24
  const __dirname = dirname(fileURLToPath(import.meta.url));
17
- export const createPassword = async () => {
18
- const fs = await import("fs");
19
- const configDir = await getHomeConfigDir();
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());
20
35
  const credentialsPath = await getCredentialsPath(configDir);
21
- if (await checkExistPath(credentialsPath)) {
36
+ if (!password && (await checkExistPath(credentialsPath))) {
22
37
  throw new Error("Config path for credentials: " + credentialsPath + ", already exist");
23
38
  }
24
39
  console.log(`Creating config folder ${configDir}`);
25
40
  fs.mkdirSync(configDir, { recursive: true });
26
41
  await waitFor(() => fs.existsSync(configDir));
27
42
  console.log(`Created config folder ${configDir}`);
28
- const password = uuid();
43
+ password = password || uuid();
29
44
  fs.writeFileSync(credentialsPath, JSON.stringify({ username: "admin", password }));
30
45
  console.log(`Created credentials at ${credentialsPath}`);
31
46
  return password;
32
47
  };
33
- export const loadOrCreatePassword = async () => {
34
- try {
35
- return await loadPassword();
36
- }
37
- catch (error) {
38
- if (error instanceof NotFoundError) {
39
- return createPassword();
48
+ export const loadOrCreatePassword = async (configDirectory, password) => {
49
+ if (!password) {
50
+ try {
51
+ return await loadPassword(configDirectory);
40
52
  }
41
- 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);
42
62
  }
43
63
  };
44
64
  export const startServerWithNode = async (properties) => {
45
65
  const peer = await create({
46
- directory: properties.directory,
66
+ directory: properties.directory != null
67
+ ? getNodePath(properties.directory)
68
+ : undefined,
47
69
  domain: properties.domain,
70
+ listenPort: properties.ports?.node,
48
71
  });
49
72
  if (properties.bootstrap) {
50
73
  await peer.bootstrap();
51
74
  }
52
- 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
+ });
53
109
  const printNodeInfo = async () => {
54
110
  console.log("Starting node with address(es): ");
55
- const id = await (await client()).peer.id.get();
111
+ const id = peer.peerId.toString();
56
112
  console.log("id: " + id);
57
113
  console.log("Addresses: ");
58
- for (const a of await (await client()).peer.addresses.get()) {
114
+ for (const a of peer.getMultiaddrs()) {
59
115
  console.log(a.toString());
60
116
  }
61
117
  };
62
118
  await printNodeInfo();
63
119
  const shutDownHook = async (controller, server) => {
64
- const { exit } = await import("process");
65
- process.on("SIGINT", async () => {
66
- console.log("Shutting down node");
67
- await server.close();
68
- await controller.stop();
69
- 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
+ }
70
138
  });
71
139
  };
72
140
  await shutDownHook(peer, server);
@@ -84,10 +152,49 @@ const getProgramFromPath = (client, req, pathIndex) => {
84
152
  throw new Error("Invalid path");
85
153
  }
86
154
  const address = decodeURIComponent(path[pathIndex]);
87
- return client.handler.items.get(address);
155
+ return client.handler?.items.get(address);
88
156
  };
89
- export const startServer = async (client, port = LOCAL_PORT) => {
90
- 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
+ };
91
198
  const adminACL = (req) => {
92
199
  const auth = req.headers["authorization"];
93
200
  if (!auth?.startsWith("Basic ")) {
@@ -141,9 +248,8 @@ export const startServer = async (client, port = LOCAL_PORT) => {
141
248
  switch (req.method) {
142
249
  case "GET":
143
250
  try {
144
- const keys = JSON.stringify([
145
- ...client.handler.items.keys(),
146
- ]);
251
+ const ref = client.handler?.items?.keys() || [];
252
+ const keys = JSON.stringify([...ref]);
147
253
  res.setHeader("Content-Type", "application/json");
148
254
  res.writeHead(200);
149
255
  res.end(keys);
@@ -188,11 +294,15 @@ export const startServer = async (client, port = LOCAL_PORT) => {
188
294
  const queryData = url.searchParams.get("delete");
189
295
  const program = getProgramFromPath(client, req, 1);
190
296
  if (program) {
297
+ let closed = false;
191
298
  if (queryData === "true") {
192
- await program.drop();
299
+ closed = await program.drop();
193
300
  }
194
301
  else {
195
- await program.close();
302
+ closed = await program.close();
303
+ }
304
+ if (closed) {
305
+ await options?.session?.programs.remove(program.address);
196
306
  }
197
307
  res.writeHead(200);
198
308
  res.end();
@@ -227,7 +337,10 @@ export const startServer = async (client, port = LOCAL_PORT) => {
227
337
  }
228
338
  client
229
339
  .open(program) // TODO all users to pass args
230
- .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());
231
344
  res.writeHead(200);
232
345
  res.end(program.address.toString());
233
346
  })
@@ -251,33 +364,62 @@ export const startServer = async (client, port = LOCAL_PORT) => {
251
364
  switch (req.method) {
252
365
  case "PUT":
253
366
  getBody(req, async (body) => {
254
- const name = body;
255
- let packageName = name;
256
- if (name.endsWith(".tgz")) {
257
- 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;
258
384
  }
259
- if (!name || name.length === 0) {
385
+ if (!installName || installName.length === 0) {
260
386
  res.writeHead(400);
261
- res.end("Invalid package: " + name);
387
+ res.end("Invalid package: " + packageName);
262
388
  }
263
389
  else {
264
- const child_process = await import("child_process");
265
390
  try {
266
391
  // TODO do this without sudo. i.e. for servers provide arguments so that this app folder is writeable by default by the user
267
- child_process.execSync(`sudo npm install ${name} --prefix ${__dirname} --no-save --no-package-lock`); // TODO omit=dev ? but this makes breaks the tests after running once?
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?
268
408
  }
269
409
  catch (error) {
270
410
  res.writeHead(400);
271
- res.end("Failed ot install library: " +
272
- name +
411
+ res.end("Failed to install library: " +
412
+ packageName +
273
413
  ". " +
274
414
  error.toString());
415
+ clear?.();
275
416
  return;
276
417
  }
277
418
  try {
278
419
  const programsPre = new Set(getProgramFromVariants().map((x) => getSchema(x).variant));
279
420
  await import(
280
421
  /* webpackIgnore: true */ /* @vite-ignore */ packageName);
422
+ await options?.session?.imports.add(packageName, new Uint8Array());
281
423
  const programsPost = getProgramFromVariants()?.map((x) => getSchema(x));
282
424
  const newPrograms = [];
283
425
  for (const p of programsPost) {
@@ -291,6 +433,7 @@ export const startServer = async (client, port = LOCAL_PORT) => {
291
433
  catch (e) {
292
434
  res.writeHead(400);
293
435
  res.end(e.message.toString?.());
436
+ clear?.();
294
437
  }
295
438
  }
296
439
  });
@@ -317,6 +460,30 @@ export const startServer = async (client, port = LOCAL_PORT) => {
317
460
  break;
318
461
  }
319
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
+ }
320
487
  else if (req.url.startsWith(PEER_ID_PATH)) {
321
488
  res.writeHead(200);
322
489
  res.end(client.peerId.toString());
@@ -354,6 +521,7 @@ export const startServer = async (client, port = LOCAL_PORT) => {
354
521
  });
355
522
  });
356
523
  });
524
+ await waitFor(() => server.listening);
357
525
  console.log("API available at port", port);
358
526
  return server;
359
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;