@calimero-network/mero-js 7.1.1 → 7.3.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/dist/admin-api/admin-client.d.ts +6 -1
- package/dist/admin-api/admin-client.d.ts.map +1 -1
- package/dist/admin-api/admin-client.js +8 -0
- package/dist/admin-api/admin-client.js.map +1 -1
- package/dist/admin-api/admin-types.d.ts +2 -0
- package/dist/admin-api/admin-types.d.ts.map +1 -1
- package/dist/index.browser.mjs +2 -2
- package/dist/index.browser.mjs.map +4 -4
- package/dist/index.cjs +70 -0
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +70 -0
- package/dist/index.mjs.map +3 -3
- package/dist/nodeDiscovery.d.ts +48 -0
- package/dist/nodeDiscovery.d.ts.map +1 -0
- package/dist/nodeDiscovery.js +102 -0
- package/dist/nodeDiscovery.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -14,4 +14,6 @@ export { SseClient, WsClient } from './events';
|
|
|
14
14
|
export type { SseEventData, WsEventData, AppVersionChangedEvent, GroupMembershipEventData } from './events';
|
|
15
15
|
export * from './cloud';
|
|
16
16
|
export * from './capabilities';
|
|
17
|
+
export { DEFAULT_LOCAL_NODE_PORTS, localNodeUrl, nodeEndpoint, probeNodeHealth, discoverLocalNodes, } from './nodeDiscovery';
|
|
18
|
+
export type { DiscoverLocalNodesOptions } from './nodeDiscovery';
|
|
17
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGzD,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,YAAY,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAG5G,cAAc,SAAS,CAAC;AAGxB,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGzD,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAGnE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,YAAY,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAG5G,cAAc,SAAS,CAAC;AAGxB,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -21,4 +21,5 @@ export * from './cloud';
|
|
|
21
21
|
// Member capability bitmask constants & helpers
|
|
22
22
|
export * from './capabilities';
|
|
23
23
|
// Utilities
|
|
24
|
+
export { DEFAULT_LOCAL_NODE_PORTS, localNodeUrl, nodeEndpoint, probeNodeHealth, discoverLocalNodes, } from './nodeDiscovery';
|
|
24
25
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,uEAAuE;AAEvE,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGjD,2CAA2C;AAC3C,cAAc,eAAe,CAAC;AAE9B,kBAAkB;AAClB,cAAc,YAAY,CAAC;AAE3B,mBAAmB;AACnB,cAAc,aAAa,CAAC;AAE5B,iBAAiB;AACjB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAG9D,cAAc;AACd,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGzE,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAI5C,2BAA2B;AAC3B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAG/C,uCAAuC;AACvC,cAAc,SAAS,CAAC;AAExB,gDAAgD;AAChD,cAAc,gBAAgB,CAAC;AAE/B,YAAY"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,uEAAuE;AAEvE,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGjD,2CAA2C;AAC3C,cAAc,eAAe,CAAC;AAE9B,kBAAkB;AAClB,cAAc,YAAY,CAAC;AAE3B,mBAAmB;AACnB,cAAc,aAAa,CAAC;AAE5B,iBAAiB;AACjB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAG9D,cAAc;AACd,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGzE,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAI5C,2BAA2B;AAC3B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAG/C,uCAAuC;AACvC,cAAc,SAAS,CAAC;AAExB,gDAAgD;AAChD,cAAc,gBAAgB,CAAC;AAE/B,YAAY;AACZ,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
|
package/dist/index.mjs
CHANGED
|
@@ -821,6 +821,18 @@ var AdminApiClient = class {
|
|
|
821
821
|
await this.httpClient.get(`/admin-api/applications/${applicationId}/versions`)
|
|
822
822
|
);
|
|
823
823
|
}
|
|
824
|
+
/**
|
|
825
|
+
* The application's embedded `wasm-abi/1` manifest. Omit `serviceName` for
|
|
826
|
+
* single-service apps; core 400s if the ABI is absent or the name is ambiguous.
|
|
827
|
+
*/
|
|
828
|
+
async getApplicationAbi(applicationId, serviceName) {
|
|
829
|
+
const query = serviceName ? `?service_name=${encodeURIComponent(serviceName)}` : "";
|
|
830
|
+
return unwrap(
|
|
831
|
+
await this.httpClient.get(
|
|
832
|
+
`/admin-api/applications/${applicationId}/abi${query}`
|
|
833
|
+
)
|
|
834
|
+
);
|
|
835
|
+
}
|
|
824
836
|
// ---- Package Management ----
|
|
825
837
|
async listPackages() {
|
|
826
838
|
const r = await this.httpClient.get(
|
|
@@ -2370,12 +2382,66 @@ function withCap(mask, cap) {
|
|
|
2370
2382
|
function withoutCap(mask, cap) {
|
|
2371
2383
|
return (mask & ~cap) >>> 0;
|
|
2372
2384
|
}
|
|
2385
|
+
|
|
2386
|
+
// src/nodeDiscovery.ts
|
|
2387
|
+
var DEFAULT_LOCAL_NODE_PORTS = [2428, 2429, 2528, 2529];
|
|
2388
|
+
var LOCAL_HOST = "localhost";
|
|
2389
|
+
var DEFAULT_PROBE_TIMEOUT_MS = 2e3;
|
|
2390
|
+
function localNodeUrl(port) {
|
|
2391
|
+
return `http://${LOCAL_HOST}:${port}`;
|
|
2392
|
+
}
|
|
2393
|
+
function nodeEndpoint(baseUrl, path) {
|
|
2394
|
+
const base = baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
2395
|
+
return new URL(path, base).toString();
|
|
2396
|
+
}
|
|
2397
|
+
async function probeNodeHealth(baseUrl, options = {}) {
|
|
2398
|
+
const { timeoutMs = DEFAULT_PROBE_TIMEOUT_MS, signal } = options;
|
|
2399
|
+
if (signal?.aborted) return false;
|
|
2400
|
+
const controller = new AbortController();
|
|
2401
|
+
const onAbort = () => controller.abort();
|
|
2402
|
+
const abortSignal = signal;
|
|
2403
|
+
if (abortSignal) abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
2404
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
2405
|
+
try {
|
|
2406
|
+
const url = nodeEndpoint(baseUrl, "admin-api/health");
|
|
2407
|
+
const res = await fetch(url, {
|
|
2408
|
+
method: "GET",
|
|
2409
|
+
signal: controller.signal
|
|
2410
|
+
});
|
|
2411
|
+
if (!res.ok) return false;
|
|
2412
|
+
try {
|
|
2413
|
+
const body = await res.json();
|
|
2414
|
+
const status = body?.data?.status !== void 0 ? body?.data?.status : body?.status;
|
|
2415
|
+
if (status === void 0) return true;
|
|
2416
|
+
return typeof status === "string" && status.toLowerCase() === "alive";
|
|
2417
|
+
} catch {
|
|
2418
|
+
return true;
|
|
2419
|
+
}
|
|
2420
|
+
} catch {
|
|
2421
|
+
return false;
|
|
2422
|
+
} finally {
|
|
2423
|
+
clearTimeout(timer);
|
|
2424
|
+
if (abortSignal) abortSignal.removeEventListener("abort", onAbort);
|
|
2425
|
+
}
|
|
2426
|
+
}
|
|
2427
|
+
async function discoverLocalNodes(options = {}) {
|
|
2428
|
+
const { ports = DEFAULT_LOCAL_NODE_PORTS, timeoutMs, signal } = options;
|
|
2429
|
+
const results = await Promise.all(
|
|
2430
|
+
ports.map(async (port) => {
|
|
2431
|
+
const url = localNodeUrl(port);
|
|
2432
|
+
const ok = await probeNodeHealth(url, { timeoutMs, signal });
|
|
2433
|
+
return ok ? url : null;
|
|
2434
|
+
})
|
|
2435
|
+
);
|
|
2436
|
+
return results.filter((url) => url !== null);
|
|
2437
|
+
}
|
|
2373
2438
|
export {
|
|
2374
2439
|
AdminApiClient,
|
|
2375
2440
|
AuthApiClient,
|
|
2376
2441
|
AuthRevokedError,
|
|
2377
2442
|
CAPABILITIES,
|
|
2378
2443
|
CloudClient,
|
|
2444
|
+
DEFAULT_LOCAL_NODE_PORTS,
|
|
2379
2445
|
HTTPError,
|
|
2380
2446
|
LocalStorageTokenStore,
|
|
2381
2447
|
MemoryTokenStore,
|
|
@@ -2403,8 +2469,12 @@ export {
|
|
|
2403
2469
|
createRetryableMethod,
|
|
2404
2470
|
createTimeoutSignal,
|
|
2405
2471
|
createUniversalHttpClient,
|
|
2472
|
+
discoverLocalNodes,
|
|
2406
2473
|
hasCap,
|
|
2474
|
+
localNodeUrl,
|
|
2475
|
+
nodeEndpoint,
|
|
2407
2476
|
parseAuthCallback,
|
|
2477
|
+
probeNodeHealth,
|
|
2408
2478
|
withCap,
|
|
2409
2479
|
withRetry,
|
|
2410
2480
|
withoutCap
|