@constl/utils-tests 2.1.4 → 2.2.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 (77) hide show
  1. package/dist/@types.d.ts +6 -0
  2. package/dist/@types.js +2 -0
  3. package/dist/@types.js.map +1 -0
  4. package/dist/attente.d.ts +10 -0
  5. package/dist/attente.js +113 -0
  6. package/dist/attente.js.map +1 -0
  7. package/dist/config.d.ts +7 -0
  8. package/dist/config.js +84 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/constellation.d.ts +17 -0
  11. package/dist/constellation.js +32 -0
  12. package/dist/constellation.js.map +1 -0
  13. package/dist/dossiers.d.ts +4 -0
  14. package/dist/dossiers.js +37 -0
  15. package/dist/dossiers.js.map +1 -0
  16. package/dist/h/303/251lia.d.ts +9 -0
  17. package/dist/h/303/251lia.js +40 -0
  18. package/dist/h/303/251lia.js.map +1 -0
  19. package/dist/index.d.ts +8 -0
  20. package/dist/index.js +9 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/libp2p/config.d.ts +27 -0
  23. package/dist/libp2p/config.js +89 -0
  24. package/dist/libp2p/config.js.map +1 -0
  25. package/dist/libp2p/index.d.ts +3 -0
  26. package/dist/libp2p/index.js +4 -0
  27. package/dist/libp2p/index.js.map +1 -0
  28. package/dist/libp2p/libp2p.d.ts +9 -0
  29. package/dist/libp2p/libp2p.js +21 -0
  30. package/dist/libp2p/libp2p.js.map +1 -0
  31. package/dist/libp2p/utils.d.ts +10 -0
  32. package/dist/libp2p/utils.js +55 -0
  33. package/dist/libp2p/utils.js.map +1 -0
  34. package/dist/orbite.d.ts +9 -0
  35. package/dist/orbite.js +35 -0
  36. package/dist/orbite.js.map +1 -0
  37. package/dist/relai/bin.d.ts +1 -0
  38. package/dist/relai/bin.js +82 -0
  39. package/dist/relai/bin.js.map +1 -0
  40. package/dist/relai/consts.d.ts +3 -0
  41. package/dist/relai/consts.js +4 -0
  42. package/dist/relai/consts.js.map +1 -0
  43. package/dist/relai/index.d.ts +3 -0
  44. package/dist/relai/index.js +4 -0
  45. package/dist/relai/index.js.map +1 -0
  46. package/dist/relai/relai.d.ts +5 -0
  47. package/dist/relai/relai.js +29 -0
  48. package/dist/relai/relai.js.map +1 -0
  49. package/dist/relai/utils.d.ts +4 -0
  50. package/dist/relai/utils.js +6 -0
  51. package/dist/relai/utils.js.map +1 -0
  52. package/dist/scripts/node-globals.d.ts +2 -0
  53. package/dist/scripts/node-globals.js +4 -0
  54. package/dist/scripts/node-globals.js.map +1 -0
  55. package/dist/utils.d.ts +4 -0
  56. package/dist/utils.js +5 -0
  57. package/dist/utils.js.map +1 -0
  58. package/dist/version.d.ts +1 -0
  59. package/dist/version.js +3 -0
  60. package/dist/version.js.map +1 -0
  61. package/package.json +40 -36
  62. package/pnpm-workspace.yaml +4 -0
  63. package/src/@types.ts +1 -1
  64. package/src/attente.ts +2 -2
  65. package/src/constellation.ts +1 -1
  66. package/src/h/303/251lia.ts +30 -38
  67. package/src/index.ts +2 -2
  68. package/src/libp2p/config.ts +9 -5
  69. package/src/libp2p/index.ts +2 -2
  70. package/src/libp2p/libp2p.ts +2 -2
  71. package/src/libp2p/utils.ts +5 -5
  72. package/src/orbite.ts +2 -8
  73. package/src/relai/relai.ts +1 -1
  74. package/src/relai/utils.ts +1 -1
  75. package/src/version.ts +1 -1
  76. package/tsconfig.build.tsbuildinfo +1 -1
  77. package/tsconfig.json +1 -0
@@ -0,0 +1,6 @@
1
+ import type { Browser, Page } from "playwright";
2
+ declare global {
3
+ const page: Page;
4
+ const browser: Browser;
5
+ const browserName: string;
6
+ }
package/dist/@types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=@types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"@types.js","sourceRoot":"","sources":["../src/@types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ export declare const que: (f: () => boolean | Promise<boolean>, t?: number) => Promise<void>;
2
+ export declare const attendreFichierExiste: ({ fichier, signal, }: {
3
+ fichier: string;
4
+ signal?: AbortSignal;
5
+ }) => Promise<boolean>;
6
+ export declare const attendreFichierModifié: ({ fichier, condition, signal, }: {
7
+ fichier: string;
8
+ condition?: () => Promise<boolean>;
9
+ signal?: AbortSignal;
10
+ }) => Promise<boolean>;
@@ -0,0 +1,113 @@
1
+ import { isBrowser, isElectronRenderer } from "wherearewe";
2
+ export const que = async (f, t = 10) => {
3
+ return new Promise((résoudre, rejeter) => {
4
+ const fFinale = async () => {
5
+ try {
6
+ if (await f()) {
7
+ clearTimeout(chrono);
8
+ résoudre();
9
+ }
10
+ else {
11
+ t *= 1.5;
12
+ setTimeout(fFinale, t);
13
+ }
14
+ }
15
+ catch {
16
+ clearTimeout(chrono);
17
+ rejeter();
18
+ }
19
+ };
20
+ const chrono = setTimeout(fFinale, t);
21
+ fFinale();
22
+ });
23
+ };
24
+ export const attendreFichierExiste = async ({ fichier, signal, }) => {
25
+ if (isBrowser || isElectronRenderer) {
26
+ throw new Error("Test non disponible dans le navigateur.");
27
+ }
28
+ const chokidar = await import("chokidar");
29
+ const fs = await import("fs");
30
+ const path = await import("path");
31
+ return new Promise((résoudre) => {
32
+ // Arrêter tout de suite si le fichier existe déjà
33
+ if (fs.existsSync(fichier))
34
+ résoudre(true);
35
+ // Actions signal
36
+ const lorsqueAvorté = () => {
37
+ fermerEtRésoudre(false);
38
+ };
39
+ // Actions écouteur de fichiers
40
+ const dossier = path.dirname(fichier);
41
+ const écouteur = chokidar.watch(dossier, { awaitWriteFinish: true });
42
+ const fermerÉcouteur = async () => await écouteur.close();
43
+ const lorsquFichierAjouté = () => {
44
+ if (fs.existsSync(fichier)) {
45
+ fermerEtRésoudre(true);
46
+ }
47
+ };
48
+ // Fermeture des écouteurs
49
+ const fermerEtRésoudre = async (statut) => {
50
+ signal?.removeEventListener("abort", lorsqueAvorté);
51
+ écouteur.off("add", lorsquFichierAjouté);
52
+ await fermerÉcouteur();
53
+ résoudre(statut);
54
+ };
55
+ signal?.addEventListener("abort", lorsqueAvorté);
56
+ écouteur.on("add", lorsquFichierAjouté);
57
+ if (signal?.aborted)
58
+ fermerEtRésoudre(false);
59
+ if (fs.existsSync(fichier))
60
+ fermerEtRésoudre(true);
61
+ });
62
+ };
63
+ export const attendreFichierModifié = async ({ fichier, condition, signal, }) => {
64
+ if (isBrowser || isElectronRenderer) {
65
+ throw new Error("Test non disponible dans le navigateur.");
66
+ }
67
+ await attendreFichierExiste({ fichier, signal });
68
+ const tempsAvant = Date.now();
69
+ const chokidar = await import("chokidar");
70
+ const fs = await import("fs");
71
+ return new Promise((résoudre) => {
72
+ // Actions signal
73
+ const lorsqueAvorté = () => {
74
+ fermerEtRésoudre(false);
75
+ };
76
+ // Actions écouteur de fichiers
77
+ const écouteur = chokidar.watch(fichier);
78
+ const fermerÉcouteur = async () => await écouteur.close();
79
+ const lorsqueModifié = async (adresse) => {
80
+ if (adresse !== fichier)
81
+ return;
82
+ await vérifierModifié();
83
+ };
84
+ const fermerEtRésoudre = async (statut) => {
85
+ clearInterval(intervale);
86
+ signal?.removeEventListener("abort", lorsqueAvorté);
87
+ écouteur.off("change", lorsqueModifié);
88
+ await fermerÉcouteur();
89
+ résoudre(statut);
90
+ };
91
+ const vérifierModifié = async () => {
92
+ try {
93
+ const { mtime } = fs.statSync(fichier);
94
+ const prêt = mtime.getTime() > tempsAvant;
95
+ if (prêt && (!condition || (await condition()))) {
96
+ fermerEtRésoudre(true);
97
+ }
98
+ }
99
+ catch {
100
+ // Le fichier a été effacé
101
+ await fermerEtRésoudre(false);
102
+ }
103
+ };
104
+ signal?.addEventListener("abort", lorsqueAvorté);
105
+ écouteur.on("change", lorsqueModifié);
106
+ écouteur.on("unlink", lorsqueModifié);
107
+ if (signal?.aborted)
108
+ fermerEtRésoudre(false);
109
+ // Parfois, on dirait que chokidar ne détecte pas l'événement...
110
+ const intervale = setInterval(vérifierModifié, 1000);
111
+ });
112
+ };
113
+ //# sourceMappingURL=attente.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attente.js","sourceRoot":"","sources":["../src/attente.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EACtB,CAAmC,EACnC,CAAC,GAAG,EAAE,EACS,EAAE;IACjB,OAAO,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;QACvC,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC;gBACH,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBACd,YAAY,CAAC,MAAM,CAAC,CAAC;oBACrB,QAAQ,EAAE,CAAC;gBACb,CAAC;qBAAM,CAAC;oBACN,CAAC,IAAI,GAAG,CAAC;oBACT,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAC1C,OAAO,EACP,MAAM,GAIP,EAAoB,EAAE;IACrB,IAAI,SAAS,IAAI,kBAAkB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAElC,OAAO,IAAI,OAAO,CAAU,CAAC,QAAQ,EAAE,EAAE;QACvC,kDAAkD;QAClD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE3C,iBAAiB;QACjB,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,+BAA+B;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QAE1D,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QAEF,0BAA0B;QAC1B,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAe,EAAE,EAAE;YACjD,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACpD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;YACzC,MAAM,cAAc,EAAE,CAAC;YAEvB,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAEjD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,OAAO;YAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,OAAO,EACP,SAAS,EACT,MAAM,GAKP,EAAoB,EAAE;IACrB,IAAI,SAAS,IAAI,kBAAkB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,qBAAqB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE9B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAO,IAAI,OAAO,CAAU,CAAC,QAAQ,EAAE,EAAE;QACvC,iBAAiB;QACjB,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC1D,MAAM,cAAc,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;YAC/C,IAAI,OAAO,KAAK,OAAO;gBAAE,OAAO;YAChC,MAAM,eAAe,EAAE,CAAC;QAC1B,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAe,EAAE,EAAE;YACjD,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACpD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YACvC,MAAM,cAAc,EAAE,CAAC;YAEvB,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;YACjC,IAAI,CAAC;gBACH,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC;gBAE1C,IAAI,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;oBAChD,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,0BAA0B;gBAC1B,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAEjD,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACtC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAEtC,IAAI,MAAM,EAAE,OAAO;YAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE7C,gEAAgE;QAChE,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { PartialOptions } from "aegir";
2
+ import type { BuildOptions } from "esbuild";
3
+ export declare const obtConfigEsbuild: () => Promise<BuildOptions>;
4
+ export declare const générerConfigÆgir: ({ portDéfautRelai, clefPrivéeRelai, }?: {
5
+ portDéfautRelai?: string;
6
+ clefPrivéeRelai?: string;
7
+ }) => Promise<PartialOptions>;
package/dist/config.js ADDED
@@ -0,0 +1,84 @@
1
+ import { lancerRelai } from "./relai/index.js";
2
+ export const obtConfigEsbuild = async () => {
3
+ const { createRequire } = (await import("module")).default;
4
+ const path = await import("path");
5
+ const { fileURLToPath } = await import("url");
6
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
+ const require = createRequire(import.meta.url);
8
+ const configEsbuild = {
9
+ // ceci injecte les exportations nomées de 'node-globals.js' en tant que variables globales
10
+ inject: [path.join(__dirname, "./scripts/node-globals.js")],
11
+ plugins: [
12
+ {
13
+ name: "node built ins",
14
+ setup(build) {
15
+ build.onResolve({ filter: /^crypto$/ }, () => {
16
+ return { path: require.resolve("crypto-browserify") };
17
+ });
18
+ build.onResolve({ filter: /^fs/ }, () => {
19
+ return { path: require.resolve("browserify-fs") };
20
+ });
21
+ build.onResolve({ filter: /^stream$/ }, () => {
22
+ return { path: require.resolve("stream-browserify") };
23
+ });
24
+ build.onResolve({ filter: /^os$/ }, () => {
25
+ return { path: require.resolve("os-browserify") };
26
+ });
27
+ build.onResolve({ filter: /^node:process$/ }, () => {
28
+ return { path: require.resolve("process/browser") };
29
+ });
30
+ build.onResolve({ filter: /^node:url$/ }, () => {
31
+ return { path: require.resolve("url-polyfill") };
32
+ });
33
+ },
34
+ },
35
+ ],
36
+ external: [
37
+ "fs",
38
+ "path",
39
+ "os",
40
+ "chokidar",
41
+ "url",
42
+ "execa",
43
+ "zlib",
44
+ "rimraf",
45
+ "stream",
46
+ "module",
47
+ "electron",
48
+ "env-paths",
49
+ "@libp2p/tcp",
50
+ "@libp2p/mdns",
51
+ "datastore-fs",
52
+ "blockstore-fs",
53
+ ],
54
+ };
55
+ return configEsbuild;
56
+ };
57
+ export const générerConfigÆgir = async ({ portDéfautRelai, clefPrivéeRelai, } = {}) => {
58
+ const esbuild = await obtConfigEsbuild();
59
+ return {
60
+ test: {
61
+ // @ts-expect-error Erreur types Ægir
62
+ before: async (opts) => {
63
+ let relai = undefined;
64
+ if (opts.target.includes("browser")) {
65
+ relai = await lancerRelai({ portDéfautRelai, clefPrivéeRelai });
66
+ }
67
+ return { relai };
68
+ },
69
+ // @ts-expect-error Erreur types Ægir
70
+ after: async (_opts, avant) => {
71
+ avant.relai?.();
72
+ },
73
+ browser: {
74
+ config: {
75
+ buildConfig: esbuild,
76
+ },
77
+ },
78
+ },
79
+ build: {
80
+ config: esbuild,
81
+ },
82
+ };
83
+ };
84
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { OrbitDB } from "@orbitdb/core";
2
+ interface InterfaceConstellation {
3
+ fermer: () => Promise<void>;
4
+ }
5
+ interface OptionsConstellation {
6
+ dossier?: string;
7
+ orbite?: OrbitDB;
8
+ }
9
+ export declare const créerConstellationsTest: <T extends InterfaceConstellation>({ n, créerConstellation, dossier, }: {
10
+ n: number;
11
+ créerConstellation: (opts: OptionsConstellation) => T;
12
+ dossier?: string;
13
+ }) => Promise<{
14
+ constls: T[];
15
+ fermer: () => Promise<void>;
16
+ }>;
17
+ export {};
@@ -0,0 +1,32 @@
1
+ import { isBrowser } from "wherearewe";
2
+ import { créerOrbitesTest } from "./orbite.js";
3
+ import { dossierTempo } from "./dossiers.js";
4
+ export const créerConstellationsTest = async ({ n = 1, créerConstellation, dossier, }) => {
5
+ let effacerDossier = () => { };
6
+ if (!dossier) {
7
+ ({ dossier, effacer: effacerDossier } = await dossierTempo());
8
+ }
9
+ const { orbites, fermer: fermerOrbites } = await créerOrbitesTest({
10
+ n,
11
+ dossier,
12
+ });
13
+ const constls = [];
14
+ for (const i in [...Array(n).keys()]) {
15
+ const constl = créerConstellation({
16
+ orbite: orbites[i],
17
+ dossier,
18
+ });
19
+ constls.push(constl);
20
+ }
21
+ const fermer = async () => {
22
+ for (const constl of constls)
23
+ await constl.fermer();
24
+ await fermerOrbites();
25
+ effacerDossier();
26
+ // Nécessaire pour Playwright
27
+ if (isBrowser)
28
+ window.localStorage.clear();
29
+ };
30
+ return { constls, fermer };
31
+ };
32
+ //# sourceMappingURL=constellation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constellation.js","sourceRoot":"","sources":["../src/constellation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAY7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAE1C,EACA,CAAC,GAAG,CAAC,EACL,kBAAkB,EAClB,OAAO,GAKR,EAGE,EAAE;IACH,IAAI,cAAc,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,gBAAgB,CAAC;QAChE,CAAC;QACD,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC;YAChC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YAClB,OAAO;SACR,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QAEpD,MAAM,aAAa,EAAE,CAAC;QACtB,cAAc,EAAE,CAAC;QAEjB,6BAA6B;QAC7B,IAAI,SAAS;YAAE,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const dossierTempo: () => Promise<{
2
+ dossier: string;
3
+ effacer: () => void;
4
+ }>;
@@ -0,0 +1,37 @@
1
+ import { isNode, isElectronMain } from "wherearewe";
2
+ import { v4 as uuidv4 } from "uuid";
3
+ export const dossierTempo = async () => {
4
+ if (isNode || isElectronMain) {
5
+ const fs = await import("fs");
6
+ const path = await import("path");
7
+ const os = await import("os");
8
+ const sync = (await import("rimraf")).sync;
9
+ const dossier = fs.mkdtempSync(path.join(os.tmpdir(), "constl"));
10
+ const effacer = () => {
11
+ try {
12
+ sync(dossier);
13
+ }
14
+ catch (e) {
15
+ // Sur Windows, parfois les fichiers de Hélia sont encore en utilisation
16
+ if (process.platform === "win32") {
17
+ console.log("On ignore ça sur Windows\n", e);
18
+ return;
19
+ }
20
+ else {
21
+ throw e;
22
+ }
23
+ }
24
+ };
25
+ return { dossier, effacer };
26
+ }
27
+ else {
28
+ const dossier = uuidv4();
29
+ return {
30
+ dossier,
31
+ effacer: () => {
32
+ // Rien à faire, je crois
33
+ },
34
+ };
35
+ }
36
+ };
37
+ //# sourceMappingURL=dossiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dossiers.js","sourceRoot":"","sources":["../src/dossiers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,IAG9B,EAAE;IACH,IAAI,MAAM,IAAI,cAAc,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3C,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,wEAAwE;gBACxE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC;oBAC7C,OAAO;gBACT,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,CAAC;gBACV,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;QACzB,OAAO;YACL,OAAO;YACP,OAAO,EAAE,GAAG,EAAE;gBACZ,yBAAyB;YAC3B,CAAC;SACF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type ServicesLibp2pTest } from "./libp2p/index.js";
2
+ import { type HeliaWithLibp2p } from "@helia/libp2p";
3
+ export declare const créerHéliasTest: ({ n, dossier, }: {
4
+ n: number;
5
+ dossier?: string;
6
+ }) => Promise<{
7
+ hélias: HeliaWithLibp2p<ServicesLibp2pTest>[];
8
+ fermer: () => Promise<void>;
9
+ }>;
@@ -0,0 +1,40 @@
1
+ import { createHelia } from "helia";
2
+ import { OptionsDéfautLibp2pNavigateur, OptionsDéfautLibp2pNode, } from "./libp2p/index.js";
3
+ import { MemoryBlockstore } from "blockstore-core";
4
+ import { join } from "path";
5
+ import { sousDossier } from "./utils.js";
6
+ import { IDBBlockstore } from "blockstore-idb";
7
+ import { isBrowser, isElectronMain, isNode } from "wherearewe";
8
+ import {} from "@helia/libp2p";
9
+ export const créerHéliasTest = async ({ n, dossier, }) => {
10
+ const optionsLibp2p = isBrowser
11
+ ? OptionsDéfautLibp2pNavigateur()
12
+ : OptionsDéfautLibp2pNode();
13
+ const hélias = [];
14
+ for (const i of Array(n).keys()) {
15
+ const dossierBlocs = dossier
16
+ ? join(sousDossier({ dossier, i }), "hélia", "blocks")
17
+ : undefined;
18
+ const stockageBlocs = dossierBlocs
19
+ ? isNode || isElectronMain
20
+ ? new (await import("blockstore-fs")).FsBlockstore(dossierBlocs)
21
+ : new IDBBlockstore(dossierBlocs)
22
+ : new MemoryBlockstore();
23
+ stockageBlocs.open?.();
24
+ const optionsHélia = {
25
+ blockstore: stockageBlocs,
26
+ libp2p: optionsLibp2p,
27
+ };
28
+ const hélia = await createHelia(optionsHélia).start();
29
+ hélias.push(hélia);
30
+ }
31
+ const fermer = async () => {
32
+ await Promise.all(hélias.map(async (h) => {
33
+ await h.stop();
34
+ // @ts-expect-error Je ne sais pas pourquoi
35
+ await h.blockstore.unwrap()?.unwrap()?.child?.db?.close();
36
+ }));
37
+ };
38
+ return { hélias, fermer };
39
+ };
40
+ //# sourceMappingURL=h%C3%A9lia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hélia.js","sourceRoot":"","sources":["../src/hélia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,GAExB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAwB,MAAM,eAAe,CAAC;AAErD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,CAAC,EACD,OAAO,GAIR,EAGE,EAAE;IACH,MAAM,aAAa,GAAG,SAAS;QAC7B,CAAC,CAAC,6BAA6B,EAAE;QACjC,CAAC,CAAC,uBAAuB,EAAE,CAAC;IAE9B,MAAM,MAAM,GAA0C,EAAE,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,OAAO;YAC1B,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC;YACtD,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,aAAa,GAAG,YAAY;YAChC,CAAC,CAAC,MAAM,IAAI,cAAc;gBACxB,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC;gBAChE,CAAC,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC;YACnC,CAAC,CAAC,IAAI,gBAAgB,EAAE,CAAC;QAC1B,aAA+B,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG;YACnB,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,aAAa;SACtB,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,2CAA2C;YAC3C,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QAC5D,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { type ServicesLibp2pTest, type ComposantesServiceClefPrivée, ServiceClefPrivée, OptionsDéfautLibp2pNode, OptionsDéfautLibp2pNavigateur, créerLibp2psTest, toutesConnectées, connecterPairs, } from "./libp2p/index.js";
2
+ export { ID_DÉFAUT_RELAI, PORT_DÉFAUT_RELAI, obtenirAdresseRelai, lancerRelai, obtenirFichierRelai, } from "./relai/index.js";
3
+ export { attendreFichierExiste, attendreFichierModifié, que, } from "./attente.js";
4
+ export { obtConfigEsbuild, générerConfigÆgir } from "./config.js";
5
+ export { créerConstellationsTest } from "./constellation.js";
6
+ export { dossierTempo } from "./dossiers.js";
7
+ export { créerHéliasTest } from "./hélia.js";
8
+ export { créerOrbitesTest } from "./orbite.js";
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export { ServiceClefPrivée, OptionsDéfautLibp2pNode, OptionsDéfautLibp2pNavigateur, créerLibp2psTest, toutesConnectées, connecterPairs, } from "./libp2p/index.js";
2
+ export { ID_DÉFAUT_RELAI, PORT_DÉFAUT_RELAI, obtenirAdresseRelai, lancerRelai, obtenirFichierRelai, } from "./relai/index.js";
3
+ export { attendreFichierExiste, attendreFichierModifié, que, } from "./attente.js";
4
+ export { obtConfigEsbuild, générerConfigÆgir } from "./config.js";
5
+ export { créerConstellationsTest } from "./constellation.js";
6
+ export { dossierTempo } from "./dossiers.js";
7
+ export { créerHéliasTest } from "./hélia.js";
8
+ export { créerOrbitesTest } from "./orbite.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,GAAG,GACJ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type GossipSub } from "@libp2p/gossipsub";
2
+ import { type Identify } from "@libp2p/identify";
3
+ import { type Libp2pOptions } from "libp2p";
4
+ import { type PrivateKey } from "@libp2p/interface";
5
+ import { type Ping } from "@libp2p/ping";
6
+ export type ServicesLibp2pTest = {
7
+ ping: Ping;
8
+ identify: Identify;
9
+ pubsub: GossipSub;
10
+ obtClefPrivée: ServiceClefPrivée;
11
+ };
12
+ export interface ComposantesServiceClefPrivée {
13
+ privateKey: PrivateKey;
14
+ }
15
+ export declare class ServiceClefPrivée {
16
+ privateKey: PrivateKey;
17
+ constructor(components: ComposantesServiceClefPrivée);
18
+ obtenirClef(): PrivateKey;
19
+ }
20
+ /**
21
+ * Configuration Libp2p pour Node.js.
22
+ */
23
+ export declare const OptionsDéfautLibp2pNode: () => Libp2pOptions<ServicesLibp2pTest>;
24
+ /**
25
+ * Configuration Libp2p pour les navigateurs.
26
+ */
27
+ export declare const OptionsDéfautLibp2pNavigateur: () => Libp2pOptions<ServicesLibp2pTest>;
@@ -0,0 +1,89 @@
1
+ /*
2
+ Certaines parties de ce fichier proviennent de @orbitdb/quickstart
3
+
4
+ MIT License
5
+
6
+ Copyright (c) 2024 OrbitDB Community
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in all
16
+ copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
+ SOFTWARE.
25
+ */
26
+ import { gossipsub, } from "@libp2p/gossipsub";
27
+ import { noise } from "@chainsafe/libp2p-noise";
28
+ import { yamux } from "@chainsafe/libp2p-yamux";
29
+ import { circuitRelayTransport } from "@libp2p/circuit-relay-v2";
30
+ import { identify } from "@libp2p/identify";
31
+ import { webRTC } from "@libp2p/webrtc";
32
+ import { webSockets } from "@libp2p/websockets";
33
+ import {} from "libp2p";
34
+ import {} from "@libp2p/interface";
35
+ import { ping } from "@libp2p/ping";
36
+ export class ServiceClefPrivée {
37
+ privateKey;
38
+ constructor(components) {
39
+ this.privateKey = components.privateKey;
40
+ }
41
+ obtenirClef() {
42
+ return this.privateKey;
43
+ }
44
+ }
45
+ /**
46
+ * Configuration Libp2p pour Node.js.
47
+ */
48
+ export const OptionsDéfautLibp2pNode = () => {
49
+ return {
50
+ addresses: {
51
+ listen: ["/ip4/0.0.0.0/tcp/0/ws", "/p2p-circuit"],
52
+ },
53
+ transports: [webSockets(), webRTC(), circuitRelayTransport()],
54
+ connectionEncrypters: [noise()],
55
+ streamMuxers: [yamux()],
56
+ connectionGater: {
57
+ denyDialMultiaddr: () => false,
58
+ },
59
+ services: {
60
+ ping: ping(),
61
+ identify: identify(),
62
+ pubsub: gossipsub({ allowPublishToZeroTopicPeers: true }), // Erreur de type dans @chainsafe/pubsub
63
+ obtClefPrivée: (components) => new ServiceClefPrivée(components),
64
+ },
65
+ };
66
+ };
67
+ /**
68
+ * Configuration Libp2p pour les navigateurs.
69
+ */
70
+ export const OptionsDéfautLibp2pNavigateur = () => {
71
+ return {
72
+ addresses: {
73
+ listen: ["/webrtc", "/p2p-circuit"],
74
+ },
75
+ transports: [webSockets(), webRTC(), circuitRelayTransport()],
76
+ connectionEncrypters: [noise()],
77
+ streamMuxers: [yamux()],
78
+ connectionGater: {
79
+ denyDialMultiaddr: () => false,
80
+ },
81
+ services: {
82
+ ping: ping(),
83
+ identify: identify(),
84
+ pubsub: gossipsub({ allowPublishToZeroTopicPeers: true }), // Erreur de type dans @chainsafe/pubsub,
85
+ obtClefPrivée: (components) => new ServiceClefPrivée(components),
86
+ },
87
+ };
88
+ };
89
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/libp2p/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;EAwBE;AAEF,OAAO,EACL,SAAS,GAGV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAiB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAsB,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAmB,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAa,MAAM,cAAc,CAAC;AAa/C,MAAM,OAAO,iBAAiB;IAC5B,UAAU,CAAa;IAEvB,YAAY,UAAwC;QAClD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,GAAG,EAAE;IACH,OAAO;QACL,SAAS,EAAE;YACT,MAAM,EAAE,CAAC,uBAAuB,EAAE,cAAc,CAAC;SAClD;QACD,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC;QAC7D,oBAAoB,EAAE,CAAC,KAAK,EAAE,CAAC;QAC/B,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,eAAe,EAAE;YACf,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;SAC/B;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,EAAE;YACZ,QAAQ,EAAE,QAAQ,EAAE;YACpB,MAAM,EAAE,SAAS,CAAC,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAE1C,EAAE,wCAAwC;YACxD,aAAa,EAAE,CAAC,UAAwC,EAAE,EAAE,CAC1D,IAAI,iBAAiB,CAAC,UAAU,CAAC;SACpC;KACF,CAAC;AACJ,CAAC,CAAC;AAEJ;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,GAAG,EAAE;IACH,OAAO;QACL,SAAS,EAAE;YACT,MAAM,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;SACpC;QACD,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,CAAC;QAC7D,oBAAoB,EAAE,CAAC,KAAK,EAAE,CAAC;QAC/B,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;QACvB,eAAe,EAAE;YACf,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;SAC/B;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,EAAE;YACZ,QAAQ,EAAE,QAAQ,EAAE;YACpB,MAAM,EAAE,SAAS,CAAC,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAE1C,EAAE,yCAAyC;YACzD,aAAa,EAAE,CAAC,UAAwC,EAAE,EAAE,CAC1D,IAAI,iBAAiB,CAAC,UAAU,CAAC;SACpC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { type ServicesLibp2pTest, type ComposantesServiceClefPrivée, ServiceClefPrivée, OptionsDéfautLibp2pNode, OptionsDéfautLibp2pNavigateur, } from "./config.js";
2
+ export { créerLibp2psTest } from "./libp2p.js";
3
+ export { connecterPairs, toutesConnectées } from "./utils.js";
@@ -0,0 +1,4 @@
1
+ export { ServiceClefPrivée, OptionsDéfautLibp2pNode, OptionsDéfautLibp2pNavigateur, } from "./config.js";
2
+ export { créerLibp2psTest } from "./libp2p.js";
3
+ export { connecterPairs, toutesConnectées } from "./utils.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/libp2p/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Libp2p } from "@libp2p/interface";
2
+ import { type ServicesLibp2pTest } from "./config.js";
3
+ export declare const créerLibp2psTest: ({ n, adresseRelai, }: {
4
+ n: number;
5
+ adresseRelai?: string;
6
+ }) => Promise<{
7
+ libp2ps: Libp2p<ServicesLibp2pTest>[];
8
+ fermer: () => Promise<void>;
9
+ }>;
@@ -0,0 +1,21 @@
1
+ import { createLibp2p } from "libp2p";
2
+ import { OptionsDéfautLibp2pNavigateur, OptionsDéfautLibp2pNode, } from "./config.js";
3
+ import { isBrowser } from "wherearewe";
4
+ import { connecterPairs } from "./utils.js";
5
+ import { obtenirAdresseRelai } from "../relai/index.js";
6
+ export const créerLibp2psTest = async ({ n, adresseRelai, }) => {
7
+ adresseRelai = adresseRelai ?? obtenirAdresseRelai();
8
+ const libp2ps = [];
9
+ for (const _ of Array(n).keys()) {
10
+ const libp2p = await createLibp2p(isBrowser ? OptionsDéfautLibp2pNavigateur() : OptionsDéfautLibp2pNode());
11
+ for (const l of libp2ps) {
12
+ await connecterPairs(libp2p, l, { adresseRelai });
13
+ }
14
+ libp2ps.push(libp2p);
15
+ }
16
+ const fermer = async () => {
17
+ await Promise.all(libp2ps.map((l) => l.stop()));
18
+ };
19
+ return { libp2ps, fermer };
20
+ };
21
+ //# sourceMappingURL=libp2p.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libp2p.js","sourceRoot":"","sources":["../../src/libp2p/libp2p.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,GAExB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EACrC,CAAC,EACD,YAAY,GAIb,EAGE,EAAE;IACH,YAAY,GAAG,YAAY,IAAI,mBAAmB,EAAE,CAAC;IAErD,MAAM,OAAO,GAAiC,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,SAAS,CAAC,CAAC,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC,uBAAuB,EAAE,CACxE,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Libp2p } from "@libp2p/interface";
2
+ import { type Multiaddr } from "@multiformats/multiaddr";
3
+ import type { ServicesLibp2pTest } from "./config.js";
4
+ type OptionsConnectionPairs = {
5
+ adresseRelai: string;
6
+ filtre?: (ma: Multiaddr) => boolean;
7
+ };
8
+ export declare const connecterPairs: <T extends Libp2p = Libp2p<ServicesLibp2pTest>>(libp2p1: T, libp2p2: T, options: OptionsConnectionPairs) => Promise<void>;
9
+ export declare const toutesConnectées: (libp2ps: Libp2p<ServicesLibp2pTest>[], options: OptionsConnectionPairs) => Promise<void>;
10
+ export {};