@peerbit/server 2.0.0 → 3.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 (43) hide show
  1. package/lib/esm/cli.js +67 -20
  2. package/lib/esm/cli.js.map +1 -1
  3. package/lib/esm/client.d.ts +7 -1
  4. package/lib/esm/client.js +48 -31
  5. package/lib/esm/client.js.map +1 -1
  6. package/lib/esm/config.d.ts +3 -3
  7. package/lib/esm/config.js +18 -16
  8. package/lib/esm/config.js.map +1 -1
  9. package/lib/esm/peerbit.d.ts +2 -0
  10. package/lib/esm/peerbit.js +1 -0
  11. package/lib/esm/peerbit.js.map +1 -1
  12. package/lib/esm/remotes.d.ts +1 -2
  13. package/lib/esm/remotes.js +1 -2
  14. package/lib/esm/remotes.js.map +1 -1
  15. package/lib/esm/routes.d.ts +1 -0
  16. package/lib/esm/routes.js +1 -0
  17. package/lib/esm/routes.js.map +1 -1
  18. package/lib/esm/server.d.ts +2 -6
  19. package/lib/esm/server.js +161 -176
  20. package/lib/esm/server.js.map +1 -1
  21. package/lib/esm/signes-request.d.ts +5 -0
  22. package/lib/esm/signes-request.js +54 -0
  23. package/lib/esm/signes-request.js.map +1 -0
  24. package/lib/esm/trust.browser.d.ts +0 -0
  25. package/lib/esm/trust.browser.js +3 -0
  26. package/lib/esm/trust.browser.js.map +1 -0
  27. package/lib/esm/trust.d.ts +9 -0
  28. package/lib/esm/trust.js +36 -0
  29. package/lib/esm/trust.js.map +1 -0
  30. package/lib/ui/assets/index-cac7195d.js +77 -0
  31. package/lib/ui/index.html +1 -1
  32. package/package.json +4 -4
  33. package/src/cli.ts +81 -25
  34. package/src/client.ts +77 -35
  35. package/src/config.ts +21 -23
  36. package/src/peerbit.ts +3 -0
  37. package/src/remotes.ts +1 -3
  38. package/src/routes.ts +1 -1
  39. package/src/server.ts +205 -241
  40. package/src/signes-request.ts +84 -0
  41. package/src/trust.browser.ts +1 -0
  42. package/src/trust.ts +39 -0
  43. package/lib/ui/assets/index-73eaa3bc.js +0 -53
@@ -1 +1 @@
1
- {"version":3,"file":"remotes.js","sourceRoot":"","sources":["../../src/remotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAYpB,MAAM,OAAO,OAAO;IAGE;IAFb,IAAI,CAAgB;IAE5B,YAAqB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QAChC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CACrB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACtB,CAAC;SACnB;aAAM;YACN,IAAI,CAAC,IAAI,GAAG;gBACX,OAAO,EAAE,EAAE;aACX,CAAC;SACF;IACF,CAAC;IAED,IAAI;QACH,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,YAAY,CAAC,OAAe;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,QAAgB;QAClD,MAAM,GAAG,GAAiB;YACzB,OAAO;YACP,IAAI;YACJ,QAAQ;SACR,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACrE,IAAI,QAAQ,IAAI,CAAC,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;SAClC;aAAM;YACN,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC5B;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,MAAM,CAAC,IAAY;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACrE,IAAI,QAAQ,IAAI,CAAC,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;SACZ;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1B,CAAC;CACD"}
1
+ {"version":3,"file":"remotes.js","sourceRoot":"","sources":["../../src/remotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAWpB,MAAM,OAAO,OAAO;IAGE;IAFb,IAAI,CAAgB;IAE5B,YAAqB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QAChC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CACrB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CACtB,CAAC;SACnB;aAAM;YACN,IAAI,CAAC,IAAI,GAAG;gBACX,OAAO,EAAE,EAAE;aACX,CAAC;SACF;IACF,CAAC;IAED,IAAI;QACH,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,SAAS,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,YAAY,CAAC,OAAe;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,GAAG,CAAC,IAAY,EAAE,OAAe;QAChC,MAAM,GAAG,GAAiB;YACzB,OAAO;YACP,IAAI;SACJ,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACrE,IAAI,QAAQ,IAAI,CAAC,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;SAClC;aAAM;YACN,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC5B;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,MAAM,CAAC,IAAY;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACrE,IAAI,QAAQ,IAAI,CAAC,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;SACZ;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1B,CAAC;CACD"}
@@ -1,6 +1,7 @@
1
1
  export declare const getPort: (protocol: string) => 9002 | 8082;
2
2
  export declare const SSL_PORT = 9002;
3
3
  export declare const LOCAL_PORT = 8082;
4
+ export declare const TRUST_PATH = "/trust";
4
5
  export declare const PEER_ID_PATH = "/peer/id";
5
6
  export declare const ADDRESS_PATH = "/peer/address";
6
7
  export declare const PROGRAM_PATH = "/program";
package/lib/esm/routes.js CHANGED
@@ -9,6 +9,7 @@ export const getPort = (protocol) => {
9
9
  };
10
10
  export const SSL_PORT = 9002;
11
11
  export const LOCAL_PORT = 8082;
12
+ export const TRUST_PATH = "/trust";
12
13
  export const PEER_ID_PATH = "/peer/id";
13
14
  export const ADDRESS_PATH = "/peer/address";
14
15
  export const PROGRAM_PATH = "/program";
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/routes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC3C,IAAI,QAAQ,KAAK,QAAQ,EAAE;QAC1B,OAAO,QAAQ,CAAC;KAChB;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE;QACzB,OAAO,UAAU,CAAC;KAClB;IAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,QAAQ,CAAC,CAAC;AACtD,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC;AAE/B,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAC5C,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AACzC,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/routes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC3C,IAAI,QAAQ,KAAK,QAAQ,EAAE;QAC1B,OAAO,QAAQ,CAAC;KAChB;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE;QACzB,OAAO,UAAU,CAAC;KAClB;IAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,QAAQ,CAAC,CAAC;AACtD,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC;AAC/B,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAC5C,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AACzC,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC"}
@@ -4,14 +4,11 @@ import { ProgramClient } from "@peerbit/program";
4
4
  import { Peerbit } from "peerbit";
5
5
  import { Session } from "./session.js";
6
6
  export declare const stopAndWait: (server: http.Server) => Promise<boolean | undefined>;
7
- export declare const createPassword: (configDirectory: string, password?: string) => Promise<string>;
8
- export declare const loadOrCreatePassword: (configDirectory: string, password?: string) => Promise<string>;
9
7
  export declare const startServerWithNode: (properties: {
10
- directory?: string;
8
+ directory: string;
11
9
  domain?: string;
12
10
  bootstrap?: boolean;
13
11
  newSession?: boolean;
14
- password?: string;
15
12
  ports?: {
16
13
  node: number;
17
14
  api: number;
@@ -21,9 +18,8 @@ export declare const startServerWithNode: (properties: {
21
18
  server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
22
19
  node: Peerbit;
23
20
  }>;
24
- export declare const startApiServer: (client: ProgramClient, options: {
21
+ export declare const startApiServer: (client: ProgramClient, properties: {
25
22
  configDirectory: string;
26
23
  session?: Session;
27
24
  port?: number;
28
- password?: string;
29
25
  }) => Promise<http.Server>;
package/lib/esm/server.js CHANGED
@@ -4,12 +4,12 @@ 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, loadPassword, NotFoundError, getNodePath, } from "./config.js";
7
+ import { getHomeConfigDir, getNodePath, getKeypair, getTrustPath, } 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, TERMINATE_PATH, INSTALL_PATH, LOCAL_PORT, PEER_ID_PATH, PROGRAMS_PATH, PROGRAM_PATH, RESTART_PATH, } from "./routes.js";
12
+ import { ADDRESS_PATH, BOOTSTRAP_PATH, TERMINATE_PATH, INSTALL_PATH, LOCAL_PORT, PEER_ID_PATH, PROGRAMS_PATH, PROGRAM_PATH, RESTART_PATH, TRUST_PATH, } from "./routes.js";
13
13
  import { Session } from "./session.js";
14
14
  import fs from "fs";
15
15
  import { exit } from "process";
@@ -21,6 +21,8 @@ import { dirname } from "path";
21
21
  import { fileURLToPath } from "url";
22
22
  import { Level } from "level";
23
23
  import { MemoryLevel } from "memory-level";
24
+ import { Trust } from "./trust.js";
25
+ import { getBody, verifyRequest } from "./signes-request.js";
24
26
  const __dirname = dirname(fileURLToPath(import.meta.url));
25
27
  export const stopAndWait = (server) => {
26
28
  let closed = false;
@@ -30,44 +32,18 @@ export const stopAndWait = (server) => {
30
32
  server.close();
31
33
  return waitFor(() => closed);
32
34
  };
33
- export const createPassword = async (configDirectory, password) => {
34
- const configDir = configDirectory ?? (await getHomeConfigDir());
35
- const credentialsPath = await getCredentialsPath(configDir);
36
- if (!password && (await checkExistPath(credentialsPath))) {
37
- throw new Error("Config path for credentials: " + credentialsPath + ", already exist");
38
- }
39
- console.log(`Creating config folder ${configDir}`);
40
- fs.mkdirSync(configDir, { recursive: true });
41
- await waitFor(() => fs.existsSync(configDir));
42
- console.log(`Created config folder ${configDir}`);
43
- password = password || uuid();
44
- fs.writeFileSync(credentialsPath, JSON.stringify({ username: "admin", password }));
45
- console.log(`Created credentials at ${credentialsPath}`);
46
- return password;
47
- };
48
- export const loadOrCreatePassword = async (configDirectory, password) => {
49
- if (!password) {
50
- try {
51
- return await loadPassword(configDirectory);
52
- }
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);
62
- }
63
- };
64
35
  export const startServerWithNode = async (properties) => {
36
+ if (!fs.existsSync(properties.directory)) {
37
+ fs.mkdirSync(properties.directory, { recursive: true });
38
+ }
39
+ const keypair = await getKeypair(properties.directory);
65
40
  const peer = await create({
66
41
  directory: properties.directory != null
67
42
  ? getNodePath(properties.directory)
68
43
  : undefined,
69
44
  domain: properties.domain,
70
45
  listenPort: properties.ports?.node,
46
+ peerId: await keypair.toPeerId(),
71
47
  });
72
48
  if (properties.bootstrap) {
73
49
  await peer.bootstrap();
@@ -104,7 +80,6 @@ export const startServerWithNode = async (properties) => {
104
80
  ? path.join(properties.directory, "server")
105
81
  : undefined || getHomeConfigDir(),
106
82
  session,
107
- password: properties.password,
108
83
  });
109
84
  const printNodeInfo = async () => {
110
85
  console.log("Starting node with address(es): ");
@@ -140,7 +115,7 @@ export const startServerWithNode = async (properties) => {
140
115
  await shutDownHook(peer, server);
141
116
  return { server, node: peer };
142
117
  };
143
- const getProgramFromPath = (client, req, pathIndex) => {
118
+ const getPathValue = (req, pathIndex) => {
144
119
  if (!req.url) {
145
120
  throw new Error("Missing url");
146
121
  }
@@ -152,7 +127,7 @@ const getProgramFromPath = (client, req, pathIndex) => {
152
127
  throw new Error("Invalid path");
153
128
  }
154
129
  const address = decodeURIComponent(path[pathIndex]);
155
- return client.handler?.items.get(address);
130
+ return address;
156
131
  };
157
132
  function findPeerbitProgramFolder(inputDirectory) {
158
133
  let currentDir = path.resolve(inputDirectory);
@@ -171,9 +146,12 @@ function findPeerbitProgramFolder(inputDirectory) {
171
146
  }
172
147
  return null;
173
148
  }
174
- export const startApiServer = async (client, options) => {
175
- const port = options?.port ?? LOCAL_PORT;
176
- const password = await loadOrCreatePassword(options.configDirectory, options?.password);
149
+ export const startApiServer = async (client, properties) => {
150
+ const port = properties?.port ?? LOCAL_PORT;
151
+ if (!fs.existsSync(properties.configDirectory)) {
152
+ fs.mkdirSync(properties.configDirectory, { recursive: true });
153
+ }
154
+ const trust = new Trust(getTrustPath(properties.configDirectory));
177
155
  const restart = async () => {
178
156
  await client.stop();
179
157
  await stopAndWait(server);
@@ -187,37 +165,21 @@ export const startApiServer = async (client, options) => {
187
165
  stdio: "inherit",
188
166
  gid: process.getgid(),
189
167
  });
190
- /* process.on("exit", async () => {
191
- child.kill("SIGINT")
192
- });
193
- process.on("SIGINT", async () => {
194
- child.kill("SIGINT")
195
- }); */
196
168
  process.exit(0);
197
169
  };
198
- const adminACL = (req) => {
199
- const auth = req.headers["authorization"];
200
- if (!auth?.startsWith("Basic ")) {
201
- return false;
202
- }
203
- const credentials = auth?.substring("Basic ".length);
204
- const username = credentials.split(":")[0];
205
- if (username !== "admin") {
206
- return false;
170
+ if (!client.peerId.equals(await client.identity.publicKey.toPeerId())) {
171
+ throw new Error("Expecting node identity to equal peerId");
172
+ }
173
+ const getVerifiedBody = async (req) => {
174
+ const body = await getBody(req);
175
+ const result = await verifyRequest(req.headers, req.method, req.url, body);
176
+ if (result.equals(client.identity.publicKey)) {
177
+ return body;
207
178
  }
208
- if (password !== credentials.substring(username.length + 1)) {
209
- return false;
179
+ if (trust.isTrusted(result.hashcode())) {
180
+ return body;
210
181
  }
211
- return true;
212
- };
213
- const getBody = (req, callback) => {
214
- let body = "";
215
- req.on("data", function (d) {
216
- body += d;
217
- });
218
- req.on("end", function () {
219
- callback(body);
220
- });
182
+ throw new Error("Not trusted");
221
183
  };
222
184
  const e404 = "404";
223
185
  const endpoints = (client) => {
@@ -232,14 +194,20 @@ export const startApiServer = async (client, options) => {
232
194
  };
233
195
  try {
234
196
  if (req.url) {
235
- if (!req.url.startsWith(PEER_ID_PATH) &&
236
- !req.url.startsWith(ADDRESS_PATH) &&
237
- !(await adminACL(req))) {
197
+ let body;
198
+ try {
199
+ body =
200
+ req.url.startsWith(PEER_ID_PATH) ||
201
+ req.url.startsWith(ADDRESS_PATH)
202
+ ? await getBody(req)
203
+ : await getVerifiedBody(req);
204
+ }
205
+ catch (error) {
238
206
  res.writeHead(401);
239
- res.end("Not authorized");
207
+ res.end("Not authorized: " + error.toString());
240
208
  return;
241
209
  }
242
- else if (req.url.startsWith(PROGRAMS_PATH)) {
210
+ if (req.url.startsWith(PROGRAMS_PATH)) {
243
211
  if (client instanceof Peerbit === false) {
244
212
  res.writeHead(400);
245
213
  res.end("Server node is not running a native client");
@@ -273,7 +241,7 @@ export const startApiServer = async (client, options) => {
273
241
  switch (req.method) {
274
242
  case "HEAD":
275
243
  try {
276
- const program = getProgramFromPath(client, req, 1);
244
+ const program = client.handler?.items.get(getPathValue(req, 1));
277
245
  if (program) {
278
246
  res.writeHead(200);
279
247
  res.end();
@@ -292,7 +260,7 @@ export const startApiServer = async (client, options) => {
292
260
  try {
293
261
  const url = new URL(req.url, "http://localhost:" + 1234);
294
262
  const queryData = url.searchParams.get("delete");
295
- const program = getProgramFromPath(client, req, 1);
263
+ const program = client.handler?.items.get(getPathValue(req, 1));
296
264
  if (program) {
297
265
  let closed = false;
298
266
  if (queryData === "true") {
@@ -302,7 +270,7 @@ export const startApiServer = async (client, options) => {
302
270
  closed = await program.close();
303
271
  }
304
272
  if (closed) {
305
- await options?.session?.programs.remove(program.address);
273
+ await properties?.session?.programs.remove(program.address);
306
274
  }
307
275
  res.writeHead(200);
308
276
  res.end();
@@ -318,42 +286,40 @@ export const startApiServer = async (client, options) => {
318
286
  }
319
287
  break;
320
288
  case "PUT":
321
- getBody(req, (body) => {
322
- try {
323
- const startArguments = JSON.parse(body);
324
- let program;
325
- if (startArguments.variant) {
326
- const P = getProgramFromVariant(startArguments.variant);
327
- if (!P) {
328
- res.writeHead(400);
329
- res.end("Missing program with variant: " +
330
- startArguments.variant);
331
- return;
332
- }
333
- program = new P();
334
- }
335
- else {
336
- program = deserialize(fromBase64(startArguments.base64), Program);
337
- }
338
- client
339
- .open(program) // TODO all users to pass args
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());
344
- res.writeHead(200);
345
- res.end(program.address.toString());
346
- })
347
- .catch((error) => {
289
+ try {
290
+ const startArguments = JSON.parse(body);
291
+ let program;
292
+ if (startArguments.variant) {
293
+ const P = getProgramFromVariant(startArguments.variant);
294
+ if (!P) {
348
295
  res.writeHead(400);
349
- res.end("Failed to open program: " + error.toString());
350
- });
296
+ res.end("Missing program with variant: " +
297
+ startArguments.variant);
298
+ return;
299
+ }
300
+ program = new P();
351
301
  }
352
- catch (error) {
353
- res.writeHead(400);
354
- res.end(error.toString());
302
+ else {
303
+ program = deserialize(fromBase64(startArguments.base64), Program);
355
304
  }
356
- });
305
+ client
306
+ .open(program) // TODO all users to pass args
307
+ .then(async (program) => {
308
+ // TODO what if this is a reopen?
309
+ console.log("OPEN ADDRESS", program.address, client.directory, await client.services.blocks.has(program.address));
310
+ await properties?.session?.programs.add(program.address, new Uint8Array());
311
+ res.writeHead(200);
312
+ res.end(program.address.toString());
313
+ })
314
+ .catch((error) => {
315
+ res.writeHead(400);
316
+ res.end("Failed to open program: " + error.toString());
317
+ });
318
+ }
319
+ catch (error) {
320
+ res.writeHead(400);
321
+ res.end(error.toString());
322
+ }
357
323
  break;
358
324
  default:
359
325
  r404();
@@ -362,85 +328,85 @@ export const startApiServer = async (client, options) => {
362
328
  }
363
329
  else if (req.url.startsWith(INSTALL_PATH)) {
364
330
  switch (req.method) {
365
- case "PUT":
366
- getBody(req, async (body) => {
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;
384
- }
385
- if (!installName || installName.length === 0) {
386
- res.writeHead(400);
387
- res.end("Invalid package: " + packageName);
388
- }
389
- else {
390
- try {
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?
408
- }
409
- catch (error) {
331
+ case "PUT": {
332
+ const installArgs = JSON.parse(body);
333
+ const packageName = installArgs.name; // @abc/123
334
+ let installName = installArgs.name; // abc123.tgz or @abc/123 (npm package name)
335
+ let clear;
336
+ if (installArgs.type === "tgz") {
337
+ const binary = fromBase64(installArgs.base64);
338
+ const tempFile = tmp.fileSync({
339
+ name: base58btc.encode(Buffer.from(installName)) +
340
+ uuid() +
341
+ ".tgz",
342
+ });
343
+ fs.writeFileSync(tempFile.fd, binary);
344
+ clear = () => tempFile.removeCallback();
345
+ installName = tempFile.name;
346
+ }
347
+ else {
348
+ clear = undefined;
349
+ }
350
+ if (!installName || installName.length === 0) {
351
+ res.writeHead(400);
352
+ res.end("Invalid package: " + packageName);
353
+ }
354
+ else {
355
+ try {
356
+ // TODO do this without sudo. i.e. for servers provide arguments so that this app folder is writeable by default by the user
357
+ const installDir = process.env.PEERBIT_MODULES_PATH ||
358
+ findPeerbitProgramFolder(__dirname);
359
+ let permission = "";
360
+ if (!installDir) {
410
361
  res.writeHead(400);
411
- res.end("Failed to install library: " +
412
- packageName +
413
- ". " +
414
- error.toString());
415
- clear?.();
362
+ res.end("Missing installation directory");
416
363
  return;
417
364
  }
418
365
  try {
419
- const programsPre = new Set(getProgramFromVariants().map((x) => getSchema(x).variant));
420
- await import(
421
- /* webpackIgnore: true */ /* @vite-ignore */ packageName);
422
- await options?.session?.imports.add(packageName, new Uint8Array());
423
- const programsPost = getProgramFromVariants()?.map((x) => getSchema(x));
424
- const newPrograms = [];
425
- for (const p of programsPost) {
426
- if (!programsPre.has(p.variant)) {
427
- newPrograms.push(p);
428
- }
429
- }
430
- res.writeHead(200);
431
- res.end(JSON.stringify(newPrograms.map((x) => x.variant)));
366
+ fs.accessSync(installDir, fs.constants.W_OK);
432
367
  }
433
- catch (e) {
434
- res.writeHead(400);
435
- res.end(e.message.toString?.());
436
- clear?.();
368
+ catch (error) {
369
+ permission = "sudo";
437
370
  }
371
+ console.log("Installing package: " + installName);
372
+ execSync(`${permission} npm install ${installName} --prefix ${installDir} --no-save --no-package-lock`); // TODO omit=dev ? but this makes breaks the tests after running once?
438
373
  }
439
- });
374
+ catch (error) {
375
+ res.writeHead(400);
376
+ res.end("Failed to install library: " +
377
+ packageName +
378
+ ". " +
379
+ error.toString());
380
+ clear?.();
381
+ return;
382
+ }
383
+ try {
384
+ const programsPre = new Set(getProgramFromVariants().map((x) => getSchema(x).variant));
385
+ await import(
386
+ /* webpackIgnore: true */ /* @vite-ignore */ packageName);
387
+ await properties?.session?.imports.add(packageName, new Uint8Array());
388
+ const programsPost = getProgramFromVariants()?.map((x) => getSchema(x));
389
+ const newPrograms = [];
390
+ for (const p of programsPost) {
391
+ if (!programsPre.has(p.variant)) {
392
+ newPrograms.push(p);
393
+ }
394
+ }
395
+ res.writeHead(200);
396
+ res.end(JSON.stringify(newPrograms.map((x) => x.variant)));
397
+ }
398
+ catch (e) {
399
+ res.writeHead(400);
400
+ res.end(e.message.toString?.());
401
+ clear?.();
402
+ }
403
+ }
440
404
  break;
441
- default:
405
+ }
406
+ default: {
442
407
  r404();
443
408
  break;
409
+ }
444
410
  }
445
411
  }
446
412
  else if (req.url.startsWith(BOOTSTRAP_PATH)) {
@@ -460,6 +426,25 @@ export const startApiServer = async (client, options) => {
460
426
  break;
461
427
  }
462
428
  }
429
+ else if (req.url.startsWith(TRUST_PATH)) {
430
+ switch (req.method) {
431
+ case "PUT": {
432
+ trust.add(getPathValue(req, 1));
433
+ res.writeHead(200);
434
+ res.end();
435
+ break;
436
+ }
437
+ case "DELETE": {
438
+ const removed = trust.remove(getPathValue(req, 1));
439
+ res.writeHead(200);
440
+ res.end(removed);
441
+ break;
442
+ }
443
+ default:
444
+ r404();
445
+ break;
446
+ }
447
+ }
463
448
  else if (req.url.startsWith(RESTART_PATH)) {
464
449
  switch (req.method) {
465
450
  case "POST":
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAoB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACN,OAAO,EAEP,qBAAqB,EACrB,sBAAsB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAElB,YAAY,EACZ,aAAa,EACb,WAAW,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAO3C,OAAO,EACN,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAQ,QAAQ,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAE,EAAE;IAClD,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACvB,MAAM,GAAG,IAAI,CAAC;IACf,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAClC,eAAuB,EACvB,QAAiB,EACC,EAAE;IACpB,MAAM,SAAS,GAAG,eAAe,IAAI,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE;QACzD,MAAM,IAAI,KAAK,CACd,+BAA+B,GAAG,eAAe,GAAG,iBAAiB,CACrE,CAAC;KACF;IACD,OAAO,CAAC,GAAG,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;IAEnD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;IAElD,QAAQ,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;IAC9B,EAAE,CAAC,aAAa,CACf,eAAe,EACf,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAC/C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,0BAA0B,eAAe,EAAE,CAAC,CAAC;IACzD,OAAO,QAAS,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACxC,eAAuB,EACvB,QAAiB,EACC,EAAE;IACpB,IAAI,CAAC,QAAQ,EAAE;QACd,IAAI;YACH,OAAO,MAAM,YAAY,CAAC,eAAe,CAAC,CAAC;SAC3C;QAAC,OAAO,KAAK,EAAE;YACf,IAAI,KAAK,YAAY,aAAa,EAAE;gBACnC,OAAO,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;aACjD;YACD,MAAM,KAAK,CAAC;SACZ;KACD;SAAM;QACN,OAAO,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;KACjD;AACF,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,UAWzC,EAAE,EAAE;IACJ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC;QACzB,SAAS,EACR,UAAU,CAAC,SAAS,IAAI,IAAI;YAC3B,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;YACnC,CAAC,CAAC,SAAS;QACb,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI;KAClC,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,SAAS,EAAE;QACzB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;KACvB;IACD,MAAM,gBAAgB,GACrB,UAAU,CAAC,SAAS,IAAI,IAAI;QAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,OAAO,GAAG,IAAI,OAAO,CAC1B,gBAAgB;QACf,CAAC,CAAC,IAAI,KAAK,CAAqB,gBAAgB,EAAE;YAChD,aAAa,EAAE,MAAM;YACrB,WAAW,EAAE,OAAO;SACnB,CAAC;QACJ,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CACnE,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;QAC3B,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YACnD,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;SACrB;QACD,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE;YACrD,YAAY;YACZ,IAAI;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;aAC5C;YAAC,OAAO,KAAK,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACrB;SACD;KACD;SAAM;QACN,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;IAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE;QACzC,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG;QAC3B,eAAe,EACd,UAAU,CAAC,SAAS,IAAI,IAAI;YAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC3C,CAAC,CAAC,SAAS,IAAI,gBAAgB,EAAE;QACnC,OAAO;QACP,QAAQ,EAAE,UAAU,CAAC,QAAQ;KAC7B,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAChC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACrC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC1B;IACF,CAAC,CAAC;IAEF,MAAM,aAAa,EAAE,CAAC;IACtB,MAAM,YAAY,GAAG,KAAK,EACzB,UAA+B,EAC/B,MAAmB,EAClB,EAAE;QACH,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBAC3B,IAAI,MAAM,CAAC,SAAS,EAAE;oBACrB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAClC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;oBAC1B,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;oBAC5B,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;iBACxB;gBACD,IAAI,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YAC7B,IAAI,MAAM,CAAC,SAAS,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAClC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;aACxB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAC1B,MAAe,EACf,GAAyB,EACzB,SAAiB,EACK,EAAE;IACxB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;KAC/B;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ;SACvB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;SAChE,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;KAChC;IACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF,SAAS,wBAAwB,CAAC,cAAsB;IACvD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAE9C,OAAO,UAAU,KAAK,GAAG,EAAE;QAC1B,6BAA6B;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAChC,eAAe,EACf,UAAU,EACV,SAAS,EACT,cAAc,CACd,CAAC;QAEF,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;YACnC,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAEnD,IAAI,WAAW,CAAC,IAAI,KAAK,kBAAkB,EAAE;gBAC5C,OAAO,UAAU,CAAC;aAClB;SACD;QAED,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KACtC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAClC,MAAqB,EACrB,OAKC,EACsB,EAAE;IACzB,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,UAAU,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAC1C,OAAO,CAAC,eAAe,EACvB,OAAO,EAAE,QAAQ,CACjB,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAE1B,2FAA2F;QAC3F,KAAK,CACJ,OAAO,CAAC,IAAI,CAAC,KAAK,EAAG,EACrB;YACC,GAAG,OAAO,CAAC,QAAQ;YACnB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;SAC5D,EACD;YACC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,MAAO,EAAE;SACtB,CACD,CAAC;QAEF;;;;;cAKM;QACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,GAAyB,EAAW,EAAE;QACvD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE;YAChC,OAAO,KAAK,CAAC;SACb;QACD,MAAM,WAAW,GAAG,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,QAAQ,KAAK,OAAO,EAAE;YACzB,OAAO,KAAK,CAAC;SACb;QACD,IAAI,QAAQ,KAAK,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YAC5D,OAAO,KAAK,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CACf,GAAyB,EACzB,QAAgD,EAC/C,EAAE;QACH,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;YACzB,IAAI,IAAI,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE;YACb,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,CAAC;IAEnB,MAAM,SAAS,GAAG,CAAC,MAAqB,EAAwB,EAAE;QACjE,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACzB,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,GAAG,CAAC,SAAS,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;YACpD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YACnD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,GAAG,EAAE;gBACjB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,CAAC;YAEF,IAAI;gBACH,IAAI,GAAG,CAAC,GAAG,EAAE;oBACZ,IACC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;wBACjC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;wBACjC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,EACrB;wBACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBAC1B,OAAO;qBACP;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;wBAC7C,IAAI,MAAM,YAAY,OAAO,KAAK,KAAK,EAAE;4BACxC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4BACnB,GAAG,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;4BACtD,OAAO;yBACP;wBACD,QAAQ,GAAG,CAAC,MAAM,EAAE;4BACnB,KAAK,KAAK;gCACT,IAAI;oCACH,MAAM,GAAG,GAAI,MAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oCAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;oCACtC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;oCAClD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iCACd;gCAAC,OAAO,KAAU,EAAE;oCACpB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iCACvB;gCACD,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;yBACP;qBACD;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;wBAC5C,IAAI,MAAM,YAAY,OAAO,KAAK,KAAK,EAAE;4BACxC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4BACnB,GAAG,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;4BACtD,OAAO;yBACP;wBACD,QAAQ,GAAG,CAAC,MAAM,EAAE;4BACnB,KAAK,MAAM;gCACV,IAAI;oCACH,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;oCAC9D,IAAI,OAAO,EAAE;wCACZ,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;qCACV;yCAAM;wCACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;qCACV;iCACD;gCAAC,OAAO,KAAU,EAAE;oCACpB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iCACvB;gCACD,MAAM;4BAEP,KAAK,QAAQ;gCACZ,IAAI;oCACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC,CAAC;oCACzD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oCAEjD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;oCAC9D,IAAI,OAAO,EAAE;wCACZ,IAAI,MAAM,GAAG,KAAK,CAAC;wCACnB,IAAI,SAAS,KAAK,MAAM,EAAE;4CACzB,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;yCAC9B;6CAAM;4CACN,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;yCAC/B;wCACD,IAAI,MAAM,EAAE;4CACX,MAAM,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;yCACzD;wCAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;qCACV;yCAAM;wCACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;qCACV;iCACD;gCAAC,OAAO,KAAU,EAAE;oCACpB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iCACvB;gCACD,MAAM;4BACP,KAAK,KAAK;gCACT,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;oCACrB,IAAI;wCACH,MAAM,cAAc,GAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wCAEtD,IAAI,OAAgB,CAAC;wCACrB,IAAK,cAAiC,CAAC,OAAO,EAAE;4CAC/C,MAAM,CAAC,GAAG,qBAAqB,CAC7B,cAAiC,CAAC,OAAO,CAC1C,CAAC;4CACF,IAAI,CAAC,CAAC,EAAE;gDACP,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gDACnB,GAAG,CAAC,GAAG,CACN,gCAAgC;oDAC9B,cAAiC,CAAC,OAAO,CAC3C,CAAC;gDACF,OAAO;6CACP;4CACD,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;yCAClB;6CAAM;4CACN,OAAO,GAAG,WAAW,CACpB,UAAU,CAAE,cAAgC,CAAC,MAAM,CAAC,EACpD,OAAO,CACP,CAAC;yCACF;wCACD,MAAM;6CACJ,IAAI,CAAC,OAAO,CAAC,CAAC,8BAA8B;6CAC5C,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;4CACvB,iCAAiC;4CACjC,OAAO,CAAC,GAAG,CACV,cAAc,EACd,OAAO,CAAC,OAAO,EACd,MAAkB,CAAC,SAAS,EAC7B,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CACjD,CAAC;4CACF,MAAM,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CACnC,OAAO,CAAC,OAAO,EACf,IAAI,UAAU,EAAE,CAChB,CAAC;4CACF,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4CACnB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;wCACrC,CAAC,CAAC;6CACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;4CAChB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4CACnB,GAAG,CAAC,GAAG,CAAC,0BAA0B,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;wCACxD,CAAC,CAAC,CAAC;qCACJ;oCAAC,OAAO,KAAU,EAAE;wCACpB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;qCAC1B;gCACF,CAAC,CAAC,CAAC;gCACH,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;yBACP;qBACD;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;wBAC5C,QAAQ,GAAG,CAAC,MAAM,EAAE;4BACnB,KAAK,KAAK;gCACT,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oCAC3B,MAAM,WAAW,GAAsB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oCAExD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW;oCACjD,IAAI,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,4CAA4C;oCAChF,IAAI,KAA+B,CAAC;oCACpC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,EAAE;wCAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wCAC9C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;4CAC7B,IAAI,EACH,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gDAC1C,IAAI,EAAE;gDACN,MAAM;yCACP,CAAC,CAAC;wCACH,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;wCACtC,KAAK,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;wCACxC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;qCAC5B;yCAAM;wCACN,KAAK,GAAG,SAAS,CAAC;qCAClB;oCAED,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;wCAC7C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wCACnB,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAAG,WAAW,CAAC,CAAC;qCAC3C;yCAAM;wCACN,IAAI;4CACH,4HAA4H;4CAC5H,MAAM,UAAU,GACf,OAAO,CAAC,GAAG,CAAC,oBAAoB;gDAChC,wBAAwB,CAAC,SAAS,CAAC,CAAC;4CACrC,IAAI,UAAU,GAAG,EAAE,CAAC;4CACpB,IAAI,CAAC,UAAU,EAAE;gDAChB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gDACnB,GAAG,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;gDAC1C,OAAO;6CACP;4CACD,IAAI;gDACH,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;6CAC7C;4CAAC,OAAO,KAAK,EAAE;gDACf,UAAU,GAAG,MAAM,CAAC;6CACpB;4CAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,WAAW,CAAC,CAAC;4CAClD,QAAQ,CACP,GAAG,UAAU,gBAAgB,WAAW,aAAa,UAAU,8BAA8B,CAC7F,CAAC,CAAC,sEAAsE;yCACzE;wCAAC,OAAO,KAAU,EAAE;4CACpB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4CACnB,GAAG,CAAC,GAAG,CACN,6BAA6B;gDAC5B,WAAW;gDACX,IAAI;gDACJ,KAAK,CAAC,QAAQ,EAAE,CACjB,CAAC;4CACF,KAAK,EAAE,EAAE,CAAC;4CACV,OAAO;yCACP;wCAED,IAAI;4CACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAC1B,sBAAsB,EAAE,CAAC,GAAG,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAC3B,CACD,CAAC;4CAEF,MAAM,MAAM;4CACX,yBAAyB,CAAC,kBAAkB,CAAC,WAAW,CACxD,CAAC;4CACF,MAAM,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAClC,WAAW,EACX,IAAI,UAAU,EAAE,CAChB,CAAC;4CACF,MAAM,YAAY,GAAG,sBAAsB,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxD,SAAS,CAAC,CAAC,CAAC,CACZ,CAAC;4CACF,MAAM,WAAW,GAA0B,EAAE,CAAC;4CAC9C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;gDAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;oDAChC,WAAW,CAAC,IAAI,CAAC,CAAwB,CAAC,CAAC;iDAC3C;6CACD;4CAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4CACnB,GAAG,CAAC,GAAG,CACN,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CACjD,CAAC;yCACF;wCAAC,OAAO,CAAM,EAAE;4CAChB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4CACnB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;4CAChC,KAAK,EAAE,EAAE,CAAC;yCACV;qCACD;gCACF,CAAC,CAAC,CAAC;gCACH,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;yBACP;qBACD;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;wBAC9C,QAAQ,GAAG,CAAC,MAAM,EAAE;4BACnB,KAAK,MAAM;gCACV,IAAI,MAAM,YAAY,OAAO,KAAK,KAAK,EAAE;oCACxC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oCACnB,GAAG,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;oCACtD,OAAO;iCACP;gCACD,MAAO,MAAkB,CAAC,SAAS,EAAE,CAAC;gCACtC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gCACV,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;yBACP;qBACD;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;wBAC5C,QAAQ,GAAG,CAAC,MAAM,EAAE;4BACnB,KAAK,MAAM;gCACV,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gCACV,OAAO,EAAE,CAAC;gCACV,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;yBACP;qBACD;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;wBAC9C,QAAQ,GAAG,CAAC,MAAM,EAAE;4BACnB,KAAK,MAAM;gCACV,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gCACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gCAChB,MAAM;4BAEP;gCACC,IAAI,EAAE,CAAC;gCACP,MAAM;yBACP;qBACD;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;wBAC5C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAClC;yBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;wBAC5C,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;wBAClD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAClE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;qBACnC;yBAAM;wBACN,IAAI,EAAE,CAAC;qBACP;iBACD;qBAAM;oBACN,IAAI,EAAE,CAAC;iBACP;aACD;YAAC,OAAO,KAAU,EAAE;gBACpB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC9B,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;aAC5B;QACF,CAAC,CAAC;IACH,CAAC,CAAC;IAEF,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,iDAAiD;IAC5E,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,iDAAiD;IAEpF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YACxB,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;gBACpD,UAAU,CAAC,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Identity, PublicSignKey, Ed25519PublicKey } from "@peerbit/crypto";
2
+ import http from "http";
3
+ export declare const signRequest: (headers: Record<string, string>, method: string, path: string, data: string | undefined, keypair: Identity<Ed25519PublicKey>) => Promise<void>;
4
+ export declare const getBody: (req: http.IncomingMessage) => Promise<string>;
5
+ export declare const verifyRequest: (headers: Record<string, string | string[] | undefined>, method: string, path: string, body?: string) => Promise<PublicSignKey>;