@calimero-network/mero-react 4.5.0 → 4.6.1
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/index.cjs +29 -65
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -53
- package/dist/index.d.ts +13 -53
- package/dist/index.js +9 -60
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -2,9 +2,9 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import React__default, { CSSProperties, ReactNode } from 'react';
|
|
4
4
|
import * as _calimero_network_mero_js from '@calimero-network/mero-js';
|
|
5
|
-
import { MeroJs, TokenStore, SetMetadataRequest, AddGroupMembersRequest, CreateContextRequest, CreateGroupInNamespaceRequest, CreateNamespaceRequest, CreateNamespaceInvitationRequest, CreateNamespaceInvitationResponseData, CreateRecursiveInvitationResponseData, DeleteGroupRequest, DeleteNamespaceRequest, DetachContextFromGroupRequest, GroupUpgradeStatusResponseData, GroupContextEntry, GroupInfo, CreateGroupInvitationRequest, MetadataRecord, JoinGroupRequest, JoinNamespaceRequest, MigrationStatus, MigrationStatusRollup, MemberMigrationStatusEntry, MigrateMyEntriesSummary, Namespace, SubgroupEntry, NamespaceIdentity, RegisterGroupSigningKeyRequest, RemoveGroupMembersRequest, ReparentGroupRequest, ResyncContextRequest, RetryGroupUpgradeRequest, SetDefaultCapabilitiesRequest, SetSubgroupVisibilityRequest, SetTeeAdmissionPolicyRequest,
|
|
5
|
+
import { MeroJs, TokenStore, SetMetadataRequest, SseEventData, GroupMembershipEventData, AddGroupMembersRequest, CreateContextRequest, CreateGroupInNamespaceRequest, CreateNamespaceRequest, CreateNamespaceInvitationRequest, CreateNamespaceInvitationResponseData, CreateRecursiveInvitationResponseData, DeleteGroupRequest, DeleteNamespaceRequest, DetachContextFromGroupRequest, GroupUpgradeStatusResponseData, GroupContextEntry, GroupInfo, CreateGroupInvitationRequest, MetadataRecord, JoinGroupRequest, JoinNamespaceRequest, MigrationStatus, MigrationStatusRollup, MemberMigrationStatusEntry, MigrateMyEntriesSummary, Namespace, SubgroupEntry, NamespaceIdentity, RegisterGroupSigningKeyRequest, RemoveGroupMembersRequest, ReparentGroupRequest, ResyncContextRequest, RetryGroupUpgradeRequest, SetDefaultCapabilitiesRequest, SetSubgroupVisibilityRequest, SetTeeAdmissionPolicyRequest, SyncGroupRequest, UpdateGroupSettingsRequest, UpdateMemberRoleRequest, UpgradeGroupRequest, TokenData } from '@calimero-network/mero-js';
|
|
6
6
|
export * from '@calimero-network/mero-js';
|
|
7
|
-
export { CAPABILITIES, MetadataRecord, hasCap, withCap, withoutCap } from '@calimero-network/mero-js';
|
|
7
|
+
export { CAPABILITIES, DEFAULT_LOCAL_NODE_PORTS, DiscoverLocalNodesOptions, MetadataRecord, discoverLocalNodes, hasCap, localNodeUrl, nodeEndpoint, probeNodeHealth, withCap, withoutCap } from '@calimero-network/mero-js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Types for mero-react
|
|
@@ -336,54 +336,6 @@ interface MigrationAdminPanelProps {
|
|
|
336
336
|
*/
|
|
337
337
|
declare function MigrationAdminPanel({ namespaceId, pollIntervalMs, className }: MigrationAdminPanelProps): react_jsx_runtime.JSX.Element;
|
|
338
338
|
|
|
339
|
-
/**
|
|
340
|
-
* Local-node discovery.
|
|
341
|
-
*
|
|
342
|
-
* Calimero dev/desktop nodes expose a public, unauthenticated health endpoint
|
|
343
|
-
* at `GET {nodeUrl}/admin-api/health` that returns `{ "data": { "status":
|
|
344
|
-
* "alive" } }`. The most common local layouts run on a small, well-known set of
|
|
345
|
-
* ports, so instead of forcing the user to type a URL we probe those ports and
|
|
346
|
-
* offer whatever is actually running.
|
|
347
|
-
*/
|
|
348
|
-
/**
|
|
349
|
-
* Default ports probed when discovering local nodes. Covers the two-node dev
|
|
350
|
-
* stacks used across the Calimero apps (RPC + alt ports for node1 / node2).
|
|
351
|
-
*/
|
|
352
|
-
declare const DEFAULT_LOCAL_NODE_PORTS: readonly [2428, 2429, 2528, 2529];
|
|
353
|
-
interface DiscoverLocalNodesOptions {
|
|
354
|
-
/** Ports to probe. Defaults to {@link DEFAULT_LOCAL_NODE_PORTS}. */
|
|
355
|
-
ports?: readonly number[];
|
|
356
|
-
/** Per-probe timeout in ms. Defaults to 2000. */
|
|
357
|
-
timeoutMs?: number;
|
|
358
|
-
/** Abort the whole discovery (e.g. when the modal closes). */
|
|
359
|
-
signal?: AbortSignal;
|
|
360
|
-
}
|
|
361
|
-
/** Build the canonical base URL for a local node on the given port. */
|
|
362
|
-
declare function localNodeUrl(port: number): string;
|
|
363
|
-
/**
|
|
364
|
-
* Resolve an API `path` against a node `baseUrl`. Ensures the base ends with a
|
|
365
|
-
* slash first, so a base that carries a path prefix (e.g. a `NODE_PATH_PREFIX`
|
|
366
|
-
* deployment like `http://host/node1`) keeps that segment instead of having it
|
|
367
|
-
* stripped by relative URL resolution.
|
|
368
|
-
*/
|
|
369
|
-
declare function nodeEndpoint(baseUrl: string, path: string): string;
|
|
370
|
-
/**
|
|
371
|
-
* Probe a single node's health endpoint. Resolves `true` only when the node
|
|
372
|
-
* answers with a 2xx and (when the body is JSON) reports a non-dead status.
|
|
373
|
-
* Any network error, timeout, or non-ok response resolves `false` — never
|
|
374
|
-
* throws (except on an external abort, which is swallowed as `false`).
|
|
375
|
-
*/
|
|
376
|
-
declare function probeNodeHealth(baseUrl: string, options?: {
|
|
377
|
-
timeoutMs?: number;
|
|
378
|
-
signal?: AbortSignal;
|
|
379
|
-
}): Promise<boolean>;
|
|
380
|
-
/**
|
|
381
|
-
* Probe the configured local ports in parallel and return the base URLs that
|
|
382
|
-
* responded as healthy, in the same order as the `ports` argument (which
|
|
383
|
-
* defaults to ascending). Returns an empty array when nothing local is running.
|
|
384
|
-
*/
|
|
385
|
-
declare function discoverLocalNodes(options?: DiscoverLocalNodesOptions): Promise<string[]>;
|
|
386
|
-
|
|
387
339
|
/**
|
|
388
340
|
* Shape accepted by the metadata-setter hooks — re-exported from mero-js so
|
|
389
341
|
* callers have one canonical type. A `set*Metadata` call **replaces the whole
|
|
@@ -400,12 +352,20 @@ declare function useExecute(contextId: string | null, executorId: string | null)
|
|
|
400
352
|
loading: boolean;
|
|
401
353
|
error: Error | null;
|
|
402
354
|
};
|
|
355
|
+
/** Event payload delivered to a `useSubscription` callback. */
|
|
356
|
+
type SubscriptionEventData = SseEventData | GroupMembershipEventData;
|
|
357
|
+
/** Ids to subscribe to. Either can be omitted, but not both. */
|
|
358
|
+
interface SubscriptionInput {
|
|
359
|
+
contextIds?: string[];
|
|
360
|
+
groupIds?: string[];
|
|
361
|
+
}
|
|
403
362
|
/**
|
|
404
|
-
* Subscribe to SSE events for context IDs.
|
|
363
|
+
* Subscribe to SSE events for context and/or group IDs.
|
|
405
364
|
* StrictMode-safe: tracks the SseClient instance in a ref to avoid
|
|
406
365
|
* double-connect on mount/unmount/remount cycles.
|
|
407
366
|
*/
|
|
408
|
-
declare function useSubscription(contextIds: string[], callback: (event:
|
|
367
|
+
declare function useSubscription(contextIds: string[], callback: (event: SubscriptionEventData) => void): void;
|
|
368
|
+
declare function useSubscription(input: SubscriptionInput, callback: (event: SubscriptionEventData) => void): void;
|
|
409
369
|
/**
|
|
410
370
|
* Fetch contexts for the current node, optionally filtered by application ID.
|
|
411
371
|
*/
|
|
@@ -854,4 +814,4 @@ declare function clearContextIdentity(): void;
|
|
|
854
814
|
*/
|
|
855
815
|
declare function clearAllStorage(): void;
|
|
856
816
|
|
|
857
|
-
export { type AppContext, AppMode, type ApplicationContextRecord, CalimeroLogo, type CalimeroLogoProps, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig,
|
|
817
|
+
export { type AppContext, AppMode, type ApplicationContextRecord, CalimeroLogo, type CalimeroLogoProps, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig, type ExecutionResult, LoginModal, type LoginModalProps, MERO_CSS_VARS, MeroContext, type MeroContextValue, MeroProvider, type MeroProviderConfig, type MeroProviderProps, type MeroTheme, MigrationAdminPanel, type MigrationAdminPanelProps, MigrationPendingBanner, type MigrationPendingBannerProps, type ResolvedMeroTheme, type SetMetadataInput, type SubscriptionEventData, type SubscriptionInput, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, clearTokenNodeUrl, cssVar, defaultMeroTheme, getApplicationId, getContextId, getContextIdentity, getNodeUrl, getTokenNodeUrl, localStorageTokenStorage, resolveMeroTheme, setApplicationId, setContextId, setContextIdentity, setNodeUrl, setTokenNodeUrl, themeToCssVars, useAddGroupMembers, useAppVersion, useApplicationContexts, useContextDiscovery, useContextGroup, useContexts, useCreateContext, useCreateGroupInNamespace, useCreateNamespace, useCreateNamespaceInvitation, useDefaultCapabilities, useDeleteContext, useDeleteGroup, useDeleteNamespace, useDetachContextFromGroup, useExecute, useGroupAppVersion, useGroupCapabilities, useGroupContexts, useGroupInfo, useGroupInvitations, useGroupMembers, useGroupMetadata, useGroupUpgradeStatus, useInstallFromRegistry, useJoinContext, useJoinGroup, useJoinNamespace, useJoinSubgroupInheritance, useLatestVersion, useMemberMetadata, useMero, useMigrationStatus, useMyAuthoredMigration, useNamespace, useNamespaceGroups, useNamespaceIdentity, useNamespaces, useNamespacesForApplication, useRegisterGroupSigningKey, useRemoveGroupMembers, useReparentGroup, useResyncContext, useRetryGroupUpgrade, useSetContextMetadata, useSetDefaultCapabilities, useSetGroupMetadata, useSetMemberMetadata, useSetSubgroupVisibility, useSetTeeAdmissionPolicy, useSubgroupVisibility, useSubgroups, useSubscription, useSyncGroup, useUpdateGroupSettings, useUpdateMemberRole, useUpgradeGroup };
|
package/dist/index.d.ts
CHANGED
|
@@ -2,9 +2,9 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import React__default, { CSSProperties, ReactNode } from 'react';
|
|
4
4
|
import * as _calimero_network_mero_js from '@calimero-network/mero-js';
|
|
5
|
-
import { MeroJs, TokenStore, SetMetadataRequest, AddGroupMembersRequest, CreateContextRequest, CreateGroupInNamespaceRequest, CreateNamespaceRequest, CreateNamespaceInvitationRequest, CreateNamespaceInvitationResponseData, CreateRecursiveInvitationResponseData, DeleteGroupRequest, DeleteNamespaceRequest, DetachContextFromGroupRequest, GroupUpgradeStatusResponseData, GroupContextEntry, GroupInfo, CreateGroupInvitationRequest, MetadataRecord, JoinGroupRequest, JoinNamespaceRequest, MigrationStatus, MigrationStatusRollup, MemberMigrationStatusEntry, MigrateMyEntriesSummary, Namespace, SubgroupEntry, NamespaceIdentity, RegisterGroupSigningKeyRequest, RemoveGroupMembersRequest, ReparentGroupRequest, ResyncContextRequest, RetryGroupUpgradeRequest, SetDefaultCapabilitiesRequest, SetSubgroupVisibilityRequest, SetTeeAdmissionPolicyRequest,
|
|
5
|
+
import { MeroJs, TokenStore, SetMetadataRequest, SseEventData, GroupMembershipEventData, AddGroupMembersRequest, CreateContextRequest, CreateGroupInNamespaceRequest, CreateNamespaceRequest, CreateNamespaceInvitationRequest, CreateNamespaceInvitationResponseData, CreateRecursiveInvitationResponseData, DeleteGroupRequest, DeleteNamespaceRequest, DetachContextFromGroupRequest, GroupUpgradeStatusResponseData, GroupContextEntry, GroupInfo, CreateGroupInvitationRequest, MetadataRecord, JoinGroupRequest, JoinNamespaceRequest, MigrationStatus, MigrationStatusRollup, MemberMigrationStatusEntry, MigrateMyEntriesSummary, Namespace, SubgroupEntry, NamespaceIdentity, RegisterGroupSigningKeyRequest, RemoveGroupMembersRequest, ReparentGroupRequest, ResyncContextRequest, RetryGroupUpgradeRequest, SetDefaultCapabilitiesRequest, SetSubgroupVisibilityRequest, SetTeeAdmissionPolicyRequest, SyncGroupRequest, UpdateGroupSettingsRequest, UpdateMemberRoleRequest, UpgradeGroupRequest, TokenData } from '@calimero-network/mero-js';
|
|
6
6
|
export * from '@calimero-network/mero-js';
|
|
7
|
-
export { CAPABILITIES, MetadataRecord, hasCap, withCap, withoutCap } from '@calimero-network/mero-js';
|
|
7
|
+
export { CAPABILITIES, DEFAULT_LOCAL_NODE_PORTS, DiscoverLocalNodesOptions, MetadataRecord, discoverLocalNodes, hasCap, localNodeUrl, nodeEndpoint, probeNodeHealth, withCap, withoutCap } from '@calimero-network/mero-js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Types for mero-react
|
|
@@ -336,54 +336,6 @@ interface MigrationAdminPanelProps {
|
|
|
336
336
|
*/
|
|
337
337
|
declare function MigrationAdminPanel({ namespaceId, pollIntervalMs, className }: MigrationAdminPanelProps): react_jsx_runtime.JSX.Element;
|
|
338
338
|
|
|
339
|
-
/**
|
|
340
|
-
* Local-node discovery.
|
|
341
|
-
*
|
|
342
|
-
* Calimero dev/desktop nodes expose a public, unauthenticated health endpoint
|
|
343
|
-
* at `GET {nodeUrl}/admin-api/health` that returns `{ "data": { "status":
|
|
344
|
-
* "alive" } }`. The most common local layouts run on a small, well-known set of
|
|
345
|
-
* ports, so instead of forcing the user to type a URL we probe those ports and
|
|
346
|
-
* offer whatever is actually running.
|
|
347
|
-
*/
|
|
348
|
-
/**
|
|
349
|
-
* Default ports probed when discovering local nodes. Covers the two-node dev
|
|
350
|
-
* stacks used across the Calimero apps (RPC + alt ports for node1 / node2).
|
|
351
|
-
*/
|
|
352
|
-
declare const DEFAULT_LOCAL_NODE_PORTS: readonly [2428, 2429, 2528, 2529];
|
|
353
|
-
interface DiscoverLocalNodesOptions {
|
|
354
|
-
/** Ports to probe. Defaults to {@link DEFAULT_LOCAL_NODE_PORTS}. */
|
|
355
|
-
ports?: readonly number[];
|
|
356
|
-
/** Per-probe timeout in ms. Defaults to 2000. */
|
|
357
|
-
timeoutMs?: number;
|
|
358
|
-
/** Abort the whole discovery (e.g. when the modal closes). */
|
|
359
|
-
signal?: AbortSignal;
|
|
360
|
-
}
|
|
361
|
-
/** Build the canonical base URL for a local node on the given port. */
|
|
362
|
-
declare function localNodeUrl(port: number): string;
|
|
363
|
-
/**
|
|
364
|
-
* Resolve an API `path` against a node `baseUrl`. Ensures the base ends with a
|
|
365
|
-
* slash first, so a base that carries a path prefix (e.g. a `NODE_PATH_PREFIX`
|
|
366
|
-
* deployment like `http://host/node1`) keeps that segment instead of having it
|
|
367
|
-
* stripped by relative URL resolution.
|
|
368
|
-
*/
|
|
369
|
-
declare function nodeEndpoint(baseUrl: string, path: string): string;
|
|
370
|
-
/**
|
|
371
|
-
* Probe a single node's health endpoint. Resolves `true` only when the node
|
|
372
|
-
* answers with a 2xx and (when the body is JSON) reports a non-dead status.
|
|
373
|
-
* Any network error, timeout, or non-ok response resolves `false` — never
|
|
374
|
-
* throws (except on an external abort, which is swallowed as `false`).
|
|
375
|
-
*/
|
|
376
|
-
declare function probeNodeHealth(baseUrl: string, options?: {
|
|
377
|
-
timeoutMs?: number;
|
|
378
|
-
signal?: AbortSignal;
|
|
379
|
-
}): Promise<boolean>;
|
|
380
|
-
/**
|
|
381
|
-
* Probe the configured local ports in parallel and return the base URLs that
|
|
382
|
-
* responded as healthy, in the same order as the `ports` argument (which
|
|
383
|
-
* defaults to ascending). Returns an empty array when nothing local is running.
|
|
384
|
-
*/
|
|
385
|
-
declare function discoverLocalNodes(options?: DiscoverLocalNodesOptions): Promise<string[]>;
|
|
386
|
-
|
|
387
339
|
/**
|
|
388
340
|
* Shape accepted by the metadata-setter hooks — re-exported from mero-js so
|
|
389
341
|
* callers have one canonical type. A `set*Metadata` call **replaces the whole
|
|
@@ -400,12 +352,20 @@ declare function useExecute(contextId: string | null, executorId: string | null)
|
|
|
400
352
|
loading: boolean;
|
|
401
353
|
error: Error | null;
|
|
402
354
|
};
|
|
355
|
+
/** Event payload delivered to a `useSubscription` callback. */
|
|
356
|
+
type SubscriptionEventData = SseEventData | GroupMembershipEventData;
|
|
357
|
+
/** Ids to subscribe to. Either can be omitted, but not both. */
|
|
358
|
+
interface SubscriptionInput {
|
|
359
|
+
contextIds?: string[];
|
|
360
|
+
groupIds?: string[];
|
|
361
|
+
}
|
|
403
362
|
/**
|
|
404
|
-
* Subscribe to SSE events for context IDs.
|
|
363
|
+
* Subscribe to SSE events for context and/or group IDs.
|
|
405
364
|
* StrictMode-safe: tracks the SseClient instance in a ref to avoid
|
|
406
365
|
* double-connect on mount/unmount/remount cycles.
|
|
407
366
|
*/
|
|
408
|
-
declare function useSubscription(contextIds: string[], callback: (event:
|
|
367
|
+
declare function useSubscription(contextIds: string[], callback: (event: SubscriptionEventData) => void): void;
|
|
368
|
+
declare function useSubscription(input: SubscriptionInput, callback: (event: SubscriptionEventData) => void): void;
|
|
409
369
|
/**
|
|
410
370
|
* Fetch contexts for the current node, optionally filtered by application ID.
|
|
411
371
|
*/
|
|
@@ -854,4 +814,4 @@ declare function clearContextIdentity(): void;
|
|
|
854
814
|
*/
|
|
855
815
|
declare function clearAllStorage(): void;
|
|
856
816
|
|
|
857
|
-
export { type AppContext, AppMode, type ApplicationContextRecord, CalimeroLogo, type CalimeroLogoProps, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig,
|
|
817
|
+
export { type AppContext, AppMode, type ApplicationContextRecord, CalimeroLogo, type CalimeroLogoProps, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig, type ExecutionResult, LoginModal, type LoginModalProps, MERO_CSS_VARS, MeroContext, type MeroContextValue, MeroProvider, type MeroProviderConfig, type MeroProviderProps, type MeroTheme, MigrationAdminPanel, type MigrationAdminPanelProps, MigrationPendingBanner, type MigrationPendingBannerProps, type ResolvedMeroTheme, type SetMetadataInput, type SubscriptionEventData, type SubscriptionInput, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, clearTokenNodeUrl, cssVar, defaultMeroTheme, getApplicationId, getContextId, getContextIdentity, getNodeUrl, getTokenNodeUrl, localStorageTokenStorage, resolveMeroTheme, setApplicationId, setContextId, setContextIdentity, setNodeUrl, setTokenNodeUrl, themeToCssVars, useAddGroupMembers, useAppVersion, useApplicationContexts, useContextDiscovery, useContextGroup, useContexts, useCreateContext, useCreateGroupInNamespace, useCreateNamespace, useCreateNamespaceInvitation, useDefaultCapabilities, useDeleteContext, useDeleteGroup, useDeleteNamespace, useDetachContextFromGroup, useExecute, useGroupAppVersion, useGroupCapabilities, useGroupContexts, useGroupInfo, useGroupInvitations, useGroupMembers, useGroupMetadata, useGroupUpgradeStatus, useInstallFromRegistry, useJoinContext, useJoinGroup, useJoinNamespace, useJoinSubgroupInheritance, useLatestVersion, useMemberMetadata, useMero, useMigrationStatus, useMyAuthoredMigration, useNamespace, useNamespaceGroups, useNamespaceIdentity, useNamespaces, useNamespacesForApplication, useRegisterGroupSigningKey, useRemoveGroupMembers, useReparentGroup, useResyncContext, useRetryGroupUpgrade, useSetContextMetadata, useSetDefaultCapabilities, useSetGroupMetadata, useSetMemberMetadata, useSetSubgroupVisibility, useSetTeeAdmissionPolicy, useSubgroupVisibility, useSubgroups, useSubscription, useSyncGroup, useUpdateGroupSettings, useUpdateMemberRole, useUpgradeGroup };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createContext, useMemo, useState, useRef, useCallback, useEffect, useContext } from 'react';
|
|
2
|
-
import { LocalStorageTokenStore, parseAuthCallback, MeroJs, buildAuthLoginUrl, compareSemver } from '@calimero-network/mero-js';
|
|
2
|
+
import { LocalStorageTokenStore, parseAuthCallback, MeroJs, buildAuthLoginUrl, DEFAULT_LOCAL_NODE_PORTS, discoverLocalNodes, nodeEndpoint, compareSemver } from '@calimero-network/mero-js';
|
|
3
3
|
export * from '@calimero-network/mero-js';
|
|
4
|
-
export { CAPABILITIES, hasCap, withCap, withoutCap } from '@calimero-network/mero-js';
|
|
4
|
+
export { CAPABILITIES, DEFAULT_LOCAL_NODE_PORTS, discoverLocalNodes, hasCap, localNodeUrl, nodeEndpoint, probeNodeHealth, withCap, withoutCap } from '@calimero-network/mero-js';
|
|
5
5
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
6
6
|
import { createPortal } from 'react-dom';
|
|
7
7
|
|
|
@@ -569,59 +569,6 @@ function CalimeroLogo({
|
|
|
569
569
|
);
|
|
570
570
|
}
|
|
571
571
|
|
|
572
|
-
// src/utils/nodeDiscovery.ts
|
|
573
|
-
var DEFAULT_LOCAL_NODE_PORTS = [2428, 2429, 2528, 2529];
|
|
574
|
-
var LOCAL_HOST = "localhost";
|
|
575
|
-
var DEFAULT_PROBE_TIMEOUT_MS = 2e3;
|
|
576
|
-
function localNodeUrl(port) {
|
|
577
|
-
return `http://${LOCAL_HOST}:${port}`;
|
|
578
|
-
}
|
|
579
|
-
function nodeEndpoint(baseUrl, path) {
|
|
580
|
-
const base = baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`;
|
|
581
|
-
return new URL(path, base).toString();
|
|
582
|
-
}
|
|
583
|
-
async function probeNodeHealth(baseUrl, options = {}) {
|
|
584
|
-
const { timeoutMs = DEFAULT_PROBE_TIMEOUT_MS, signal } = options;
|
|
585
|
-
if (signal?.aborted) return false;
|
|
586
|
-
const controller = new AbortController();
|
|
587
|
-
const onAbort = () => controller.abort();
|
|
588
|
-
const listenerAdded = !!signal;
|
|
589
|
-
if (listenerAdded) signal.addEventListener("abort", onAbort, { once: true });
|
|
590
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
591
|
-
try {
|
|
592
|
-
const url = nodeEndpoint(baseUrl, "admin-api/health");
|
|
593
|
-
const res = await fetch(url, {
|
|
594
|
-
method: "GET",
|
|
595
|
-
signal: controller.signal
|
|
596
|
-
});
|
|
597
|
-
if (!res.ok) return false;
|
|
598
|
-
try {
|
|
599
|
-
const body = await res.json();
|
|
600
|
-
const status = body?.data?.status !== void 0 ? body?.data?.status : body?.status;
|
|
601
|
-
if (status === void 0) return true;
|
|
602
|
-
return typeof status === "string" && status.toLowerCase() === "alive";
|
|
603
|
-
} catch {
|
|
604
|
-
return true;
|
|
605
|
-
}
|
|
606
|
-
} catch {
|
|
607
|
-
return false;
|
|
608
|
-
} finally {
|
|
609
|
-
clearTimeout(timer);
|
|
610
|
-
if (listenerAdded) signal.removeEventListener("abort", onAbort);
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
async function discoverLocalNodes(options = {}) {
|
|
614
|
-
const { ports = DEFAULT_LOCAL_NODE_PORTS, timeoutMs, signal } = options;
|
|
615
|
-
const results = await Promise.all(
|
|
616
|
-
ports.map(async (port) => {
|
|
617
|
-
const url = localNodeUrl(port);
|
|
618
|
-
const ok = await probeNodeHealth(url, { timeoutMs, signal });
|
|
619
|
-
return ok ? url : null;
|
|
620
|
-
})
|
|
621
|
-
);
|
|
622
|
-
return results.filter((url) => url !== null);
|
|
623
|
-
}
|
|
624
|
-
|
|
625
572
|
// src/theme.ts
|
|
626
573
|
var defaultMeroTheme = Object.freeze({
|
|
627
574
|
primary: "#a5ff11",
|
|
@@ -1470,13 +1417,15 @@ function useExecute(contextId, executorId) {
|
|
|
1470
1417
|
);
|
|
1471
1418
|
return { execute, loading, error };
|
|
1472
1419
|
}
|
|
1473
|
-
function useSubscription(
|
|
1420
|
+
function useSubscription(input, callback) {
|
|
1474
1421
|
const { mero } = useMero();
|
|
1475
1422
|
const callbackRef = useRef(callback);
|
|
1476
1423
|
callbackRef.current = callback;
|
|
1424
|
+
const { contextIds = [], groupIds = [] } = Array.isArray(input) ? { contextIds: input, groupIds: [] } : input;
|
|
1477
1425
|
const contextIdsKey = JSON.stringify(contextIds);
|
|
1426
|
+
const groupIdsKey = JSON.stringify(groupIds);
|
|
1478
1427
|
useEffect(() => {
|
|
1479
|
-
if (!mero || contextIds.length === 0) return;
|
|
1428
|
+
if (!mero || contextIds.length === 0 && groupIds.length === 0) return;
|
|
1480
1429
|
const sse = mero.events;
|
|
1481
1430
|
const handler = (event) => {
|
|
1482
1431
|
callbackRef.current(event);
|
|
@@ -1484,12 +1433,12 @@ function useSubscription(contextIds, callback) {
|
|
|
1484
1433
|
sse.on("event", handler);
|
|
1485
1434
|
sse.connect().catch(() => {
|
|
1486
1435
|
});
|
|
1487
|
-
sse.subscribe(contextIds).catch(() => {
|
|
1436
|
+
sse.subscribe({ contextIds, groupIds }).catch(() => {
|
|
1488
1437
|
});
|
|
1489
1438
|
return () => {
|
|
1490
1439
|
sse.off("event", handler);
|
|
1491
1440
|
};
|
|
1492
|
-
}, [mero, contextIdsKey]);
|
|
1441
|
+
}, [mero, contextIdsKey, groupIdsKey]);
|
|
1493
1442
|
}
|
|
1494
1443
|
function useContexts(applicationId) {
|
|
1495
1444
|
const { mero } = useMero();
|
|
@@ -2659,6 +2608,6 @@ function MigrationAdminPanel({ namespaceId, pollIntervalMs, className }) {
|
|
|
2659
2608
|
] });
|
|
2660
2609
|
}
|
|
2661
2610
|
|
|
2662
|
-
export { AppMode, CalimeroLogo, ConnectButton, ConnectionType,
|
|
2611
|
+
export { AppMode, CalimeroLogo, ConnectButton, ConnectionType, LoginModal, MERO_CSS_VARS, MeroContext, MeroProvider, MigrationAdminPanel, MigrationPendingBanner, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, clearTokenNodeUrl, cssVar, defaultMeroTheme, getApplicationId, getContextId, getContextIdentity, getNodeUrl, getTokenNodeUrl, localStorageTokenStorage, resolveMeroTheme, setApplicationId, setContextId, setContextIdentity, setNodeUrl, setTokenNodeUrl, themeToCssVars, useAddGroupMembers, useAppVersion, useApplicationContexts, useContextDiscovery, useContextGroup, useContexts, useCreateContext, useCreateGroupInNamespace, useCreateNamespace, useCreateNamespaceInvitation, useDefaultCapabilities, useDeleteContext, useDeleteGroup, useDeleteNamespace, useDetachContextFromGroup, useExecute, useGroupAppVersion, useGroupCapabilities, useGroupContexts, useGroupInfo, useGroupInvitations, useGroupMembers, useGroupMetadata, useGroupUpgradeStatus, useInstallFromRegistry, useJoinContext, useJoinGroup, useJoinNamespace, useJoinSubgroupInheritance, useLatestVersion, useMemberMetadata, useMero, useMigrationStatus, useMyAuthoredMigration, useNamespace, useNamespaceGroups, useNamespaceIdentity, useNamespaces, useNamespacesForApplication, useRegisterGroupSigningKey, useRemoveGroupMembers, useReparentGroup, useResyncContext, useRetryGroupUpgrade, useSetContextMetadata, useSetDefaultCapabilities, useSetGroupMetadata, useSetMemberMetadata, useSetSubgroupVisibility, useSetTeeAdmissionPolicy, useSubgroupVisibility, useSubgroups, useSubscription, useSyncGroup, useUpdateGroupSettings, useUpdateMemberRole, useUpgradeGroup };
|
|
2663
2612
|
//# sourceMappingURL=index.js.map
|
|
2664
2613
|
//# sourceMappingURL=index.js.map
|