@calimero-network/mero-react 4.4.1 → 4.6.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/index.cjs +133 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +52 -4
- package/dist/index.d.ts +52 -4
- package/dist/index.js +132 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -2,7 +2,7 @@ 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, GroupContextEntry, GroupInfo, CreateGroupInvitationRequest, MetadataRecord,
|
|
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
7
|
export { CAPABILITIES, MetadataRecord, hasCap, withCap, withoutCap } from '@calimero-network/mero-js';
|
|
8
8
|
|
|
@@ -400,12 +400,20 @@ declare function useExecute(contextId: string | null, executorId: string | null)
|
|
|
400
400
|
loading: boolean;
|
|
401
401
|
error: Error | null;
|
|
402
402
|
};
|
|
403
|
+
/** Event payload delivered to a `useSubscription` callback. */
|
|
404
|
+
type SubscriptionEventData = SseEventData | GroupMembershipEventData;
|
|
405
|
+
/** Ids to subscribe to. Either can be omitted, but not both. */
|
|
406
|
+
interface SubscriptionInput {
|
|
407
|
+
contextIds?: string[];
|
|
408
|
+
groupIds?: string[];
|
|
409
|
+
}
|
|
403
410
|
/**
|
|
404
|
-
* Subscribe to SSE events for context IDs.
|
|
411
|
+
* Subscribe to SSE events for context and/or group IDs.
|
|
405
412
|
* StrictMode-safe: tracks the SseClient instance in a ref to avoid
|
|
406
413
|
* double-connect on mount/unmount/remount cycles.
|
|
407
414
|
*/
|
|
408
|
-
declare function useSubscription(contextIds: string[], callback: (event:
|
|
415
|
+
declare function useSubscription(contextIds: string[], callback: (event: SubscriptionEventData) => void): void;
|
|
416
|
+
declare function useSubscription(input: SubscriptionInput, callback: (event: SubscriptionEventData) => void): void;
|
|
409
417
|
/**
|
|
410
418
|
* Fetch contexts for the current node, optionally filtered by application ID.
|
|
411
419
|
*/
|
|
@@ -633,6 +641,17 @@ declare function useUpgradeGroup(): {
|
|
|
633
641
|
loading: boolean;
|
|
634
642
|
error: Error | null;
|
|
635
643
|
};
|
|
644
|
+
/**
|
|
645
|
+
* Install a registry package version onto the node — the discrete "Download"
|
|
646
|
+
* step an Updates flow runs before an `upgradeGroup`. Resolves the installed
|
|
647
|
+
* application id (`InstallApplicationResponseData`). Downloading does not by
|
|
648
|
+
* itself change what any group runs; pair it with a subsequent upgrade.
|
|
649
|
+
*/
|
|
650
|
+
declare function useInstallFromRegistry(): {
|
|
651
|
+
installFromRegistry: (registryUrl: string, packageName: string, version: string) => Promise<_calimero_network_mero_js.InstallApplicationResponseData | null>;
|
|
652
|
+
loading: boolean;
|
|
653
|
+
error: Error | null;
|
|
654
|
+
};
|
|
636
655
|
/**
|
|
637
656
|
* Kick off a full state re-pull for a context — operator recovery for a
|
|
638
657
|
* context stranded mid-sync. `force` re-pulls even when the node does not
|
|
@@ -722,6 +741,35 @@ declare function useLatestVersion(registryUrl?: string | null, packageName?: str
|
|
|
722
741
|
error: Error | null;
|
|
723
742
|
refetch: () => Promise<void>;
|
|
724
743
|
};
|
|
744
|
+
/**
|
|
745
|
+
* What app version does this group run, and is there a downloaded-but-not-yet-
|
|
746
|
+
* applied update? Replaces the appKey-vs-installed-blob comparison apps
|
|
747
|
+
* otherwise hand-roll: `pendingApply` is true when the group's `appKey` (the
|
|
748
|
+
* blob it targets) is present, non-zero, and differs from the blob actually
|
|
749
|
+
* installed for its `targetApplicationId`. Deciding whether to render or gate on
|
|
750
|
+
* that status (admin-only actions, etc.) is the call site's job.
|
|
751
|
+
*
|
|
752
|
+
* Resolution stays cheap: the group's record comes from `listNamespaces()` when
|
|
753
|
+
* the id is a namespace, else from `getGroupInfo()`; `getApplication()` then
|
|
754
|
+
* reads the installed version and blob. `activeUpgrade` is returned only when it
|
|
755
|
+
* arrives for free on the group-info path (it is not fetched separately).
|
|
756
|
+
* Subscribes to `AppVersionChanged` and refetches, since any version flip in the
|
|
757
|
+
* workspace can make the rollup stale.
|
|
758
|
+
*/
|
|
759
|
+
declare function useGroupAppVersion(groupId?: string): {
|
|
760
|
+
loading: boolean;
|
|
761
|
+
error: Error | null;
|
|
762
|
+
refetch: () => Promise<void>;
|
|
763
|
+
/** Semver of the application the group currently targets (`null` until loaded). */
|
|
764
|
+
version: string | null;
|
|
765
|
+
/** The group's `targetApplicationId`. */
|
|
766
|
+
applicationId: string | null;
|
|
767
|
+
/** The installed blob differs from the one the group targets (see hook doc). */
|
|
768
|
+
pendingApply: boolean;
|
|
769
|
+
upgradePolicy: string | null;
|
|
770
|
+
/** Only populated via the group-info path; `null` in the namespace path. */
|
|
771
|
+
activeUpgrade: GroupUpgradeStatusResponseData;
|
|
772
|
+
};
|
|
725
773
|
/**
|
|
726
774
|
* The caller's own identity-gated entries pending re-signature (skew #1).
|
|
727
775
|
* `pending` is `pendingCount > 0` (from `count_my_pending`); `authorize()` runs
|
|
@@ -814,4 +862,4 @@ declare function clearContextIdentity(): void;
|
|
|
814
862
|
*/
|
|
815
863
|
declare function clearAllStorage(): void;
|
|
816
864
|
|
|
817
|
-
export { type AppContext, AppMode, type ApplicationContextRecord, CalimeroLogo, type CalimeroLogoProps, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig, DEFAULT_LOCAL_NODE_PORTS, type DiscoverLocalNodesOptions, 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, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, clearTokenNodeUrl, cssVar, defaultMeroTheme, discoverLocalNodes, getApplicationId, getContextId, getContextIdentity, getNodeUrl, getTokenNodeUrl, localNodeUrl, localStorageTokenStorage, nodeEndpoint, probeNodeHealth, resolveMeroTheme, setApplicationId, setContextId, setContextIdentity, setNodeUrl, setTokenNodeUrl, themeToCssVars, useAddGroupMembers, useAppVersion, useApplicationContexts, useContextDiscovery, useContextGroup, useContexts, useCreateContext, useCreateGroupInNamespace, useCreateNamespace, useCreateNamespaceInvitation, useDefaultCapabilities, useDeleteContext, useDeleteGroup, useDeleteNamespace, useDetachContextFromGroup, useExecute, useGroupCapabilities, useGroupContexts, useGroupInfo, useGroupInvitations, useGroupMembers, useGroupMetadata, useGroupUpgradeStatus, 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 };
|
|
865
|
+
export { type AppContext, AppMode, type ApplicationContextRecord, CalimeroLogo, type CalimeroLogoProps, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig, DEFAULT_LOCAL_NODE_PORTS, type DiscoverLocalNodesOptions, 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, discoverLocalNodes, getApplicationId, getContextId, getContextIdentity, getNodeUrl, getTokenNodeUrl, localNodeUrl, localStorageTokenStorage, nodeEndpoint, probeNodeHealth, 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,7 +2,7 @@ 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, GroupContextEntry, GroupInfo, CreateGroupInvitationRequest, MetadataRecord,
|
|
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
7
|
export { CAPABILITIES, MetadataRecord, hasCap, withCap, withoutCap } from '@calimero-network/mero-js';
|
|
8
8
|
|
|
@@ -400,12 +400,20 @@ declare function useExecute(contextId: string | null, executorId: string | null)
|
|
|
400
400
|
loading: boolean;
|
|
401
401
|
error: Error | null;
|
|
402
402
|
};
|
|
403
|
+
/** Event payload delivered to a `useSubscription` callback. */
|
|
404
|
+
type SubscriptionEventData = SseEventData | GroupMembershipEventData;
|
|
405
|
+
/** Ids to subscribe to. Either can be omitted, but not both. */
|
|
406
|
+
interface SubscriptionInput {
|
|
407
|
+
contextIds?: string[];
|
|
408
|
+
groupIds?: string[];
|
|
409
|
+
}
|
|
403
410
|
/**
|
|
404
|
-
* Subscribe to SSE events for context IDs.
|
|
411
|
+
* Subscribe to SSE events for context and/or group IDs.
|
|
405
412
|
* StrictMode-safe: tracks the SseClient instance in a ref to avoid
|
|
406
413
|
* double-connect on mount/unmount/remount cycles.
|
|
407
414
|
*/
|
|
408
|
-
declare function useSubscription(contextIds: string[], callback: (event:
|
|
415
|
+
declare function useSubscription(contextIds: string[], callback: (event: SubscriptionEventData) => void): void;
|
|
416
|
+
declare function useSubscription(input: SubscriptionInput, callback: (event: SubscriptionEventData) => void): void;
|
|
409
417
|
/**
|
|
410
418
|
* Fetch contexts for the current node, optionally filtered by application ID.
|
|
411
419
|
*/
|
|
@@ -633,6 +641,17 @@ declare function useUpgradeGroup(): {
|
|
|
633
641
|
loading: boolean;
|
|
634
642
|
error: Error | null;
|
|
635
643
|
};
|
|
644
|
+
/**
|
|
645
|
+
* Install a registry package version onto the node — the discrete "Download"
|
|
646
|
+
* step an Updates flow runs before an `upgradeGroup`. Resolves the installed
|
|
647
|
+
* application id (`InstallApplicationResponseData`). Downloading does not by
|
|
648
|
+
* itself change what any group runs; pair it with a subsequent upgrade.
|
|
649
|
+
*/
|
|
650
|
+
declare function useInstallFromRegistry(): {
|
|
651
|
+
installFromRegistry: (registryUrl: string, packageName: string, version: string) => Promise<_calimero_network_mero_js.InstallApplicationResponseData | null>;
|
|
652
|
+
loading: boolean;
|
|
653
|
+
error: Error | null;
|
|
654
|
+
};
|
|
636
655
|
/**
|
|
637
656
|
* Kick off a full state re-pull for a context — operator recovery for a
|
|
638
657
|
* context stranded mid-sync. `force` re-pulls even when the node does not
|
|
@@ -722,6 +741,35 @@ declare function useLatestVersion(registryUrl?: string | null, packageName?: str
|
|
|
722
741
|
error: Error | null;
|
|
723
742
|
refetch: () => Promise<void>;
|
|
724
743
|
};
|
|
744
|
+
/**
|
|
745
|
+
* What app version does this group run, and is there a downloaded-but-not-yet-
|
|
746
|
+
* applied update? Replaces the appKey-vs-installed-blob comparison apps
|
|
747
|
+
* otherwise hand-roll: `pendingApply` is true when the group's `appKey` (the
|
|
748
|
+
* blob it targets) is present, non-zero, and differs from the blob actually
|
|
749
|
+
* installed for its `targetApplicationId`. Deciding whether to render or gate on
|
|
750
|
+
* that status (admin-only actions, etc.) is the call site's job.
|
|
751
|
+
*
|
|
752
|
+
* Resolution stays cheap: the group's record comes from `listNamespaces()` when
|
|
753
|
+
* the id is a namespace, else from `getGroupInfo()`; `getApplication()` then
|
|
754
|
+
* reads the installed version and blob. `activeUpgrade` is returned only when it
|
|
755
|
+
* arrives for free on the group-info path (it is not fetched separately).
|
|
756
|
+
* Subscribes to `AppVersionChanged` and refetches, since any version flip in the
|
|
757
|
+
* workspace can make the rollup stale.
|
|
758
|
+
*/
|
|
759
|
+
declare function useGroupAppVersion(groupId?: string): {
|
|
760
|
+
loading: boolean;
|
|
761
|
+
error: Error | null;
|
|
762
|
+
refetch: () => Promise<void>;
|
|
763
|
+
/** Semver of the application the group currently targets (`null` until loaded). */
|
|
764
|
+
version: string | null;
|
|
765
|
+
/** The group's `targetApplicationId`. */
|
|
766
|
+
applicationId: string | null;
|
|
767
|
+
/** The installed blob differs from the one the group targets (see hook doc). */
|
|
768
|
+
pendingApply: boolean;
|
|
769
|
+
upgradePolicy: string | null;
|
|
770
|
+
/** Only populated via the group-info path; `null` in the namespace path. */
|
|
771
|
+
activeUpgrade: GroupUpgradeStatusResponseData;
|
|
772
|
+
};
|
|
725
773
|
/**
|
|
726
774
|
* The caller's own identity-gated entries pending re-signature (skew #1).
|
|
727
775
|
* `pending` is `pendingCount > 0` (from `count_my_pending`); `authorize()` runs
|
|
@@ -814,4 +862,4 @@ declare function clearContextIdentity(): void;
|
|
|
814
862
|
*/
|
|
815
863
|
declare function clearAllStorage(): void;
|
|
816
864
|
|
|
817
|
-
export { type AppContext, AppMode, type ApplicationContextRecord, CalimeroLogo, type CalimeroLogoProps, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig, DEFAULT_LOCAL_NODE_PORTS, type DiscoverLocalNodesOptions, 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, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, clearTokenNodeUrl, cssVar, defaultMeroTheme, discoverLocalNodes, getApplicationId, getContextId, getContextIdentity, getNodeUrl, getTokenNodeUrl, localNodeUrl, localStorageTokenStorage, nodeEndpoint, probeNodeHealth, resolveMeroTheme, setApplicationId, setContextId, setContextIdentity, setNodeUrl, setTokenNodeUrl, themeToCssVars, useAddGroupMembers, useAppVersion, useApplicationContexts, useContextDiscovery, useContextGroup, useContexts, useCreateContext, useCreateGroupInNamespace, useCreateNamespace, useCreateNamespaceInvitation, useDefaultCapabilities, useDeleteContext, useDeleteGroup, useDeleteNamespace, useDetachContextFromGroup, useExecute, useGroupCapabilities, useGroupContexts, useGroupInfo, useGroupInvitations, useGroupMembers, useGroupMetadata, useGroupUpgradeStatus, 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 };
|
|
865
|
+
export { type AppContext, AppMode, type ApplicationContextRecord, CalimeroLogo, type CalimeroLogoProps, ConnectButton, type ConnectButtonProps, ConnectionType, type ContextDiscoveryOptions, type ContextDiscoveryState, type CustomConnectionConfig, DEFAULT_LOCAL_NODE_PORTS, type DiscoverLocalNodesOptions, 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, discoverLocalNodes, getApplicationId, getContextId, getContextIdentity, getNodeUrl, getTokenNodeUrl, localNodeUrl, localStorageTokenStorage, nodeEndpoint, probeNodeHealth, 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
|
@@ -1296,6 +1296,29 @@ function ConnectButton({
|
|
|
1296
1296
|
}
|
|
1297
1297
|
);
|
|
1298
1298
|
}
|
|
1299
|
+
|
|
1300
|
+
// src/utils/base58.ts
|
|
1301
|
+
var ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
1302
|
+
function base58ToHex(input) {
|
|
1303
|
+
const bytes = [];
|
|
1304
|
+
for (const char of input) {
|
|
1305
|
+
let carry = ALPHABET.indexOf(char);
|
|
1306
|
+
if (carry === -1) throw new Error(`invalid base58 character: ${char}`);
|
|
1307
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
1308
|
+
carry += bytes[i] * 58;
|
|
1309
|
+
bytes[i] = carry & 255;
|
|
1310
|
+
carry >>= 8;
|
|
1311
|
+
}
|
|
1312
|
+
while (carry > 0) {
|
|
1313
|
+
bytes.push(carry & 255);
|
|
1314
|
+
carry >>= 8;
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
for (let k = 0; k < input.length && input[k] === "1"; k++) bytes.push(0);
|
|
1318
|
+
return bytes.reverse().map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
// src/hooks/index.ts
|
|
1299
1322
|
function toError(err) {
|
|
1300
1323
|
return err instanceof Error ? err : new Error(String(err));
|
|
1301
1324
|
}
|
|
@@ -1447,13 +1470,15 @@ function useExecute(contextId, executorId) {
|
|
|
1447
1470
|
);
|
|
1448
1471
|
return { execute, loading, error };
|
|
1449
1472
|
}
|
|
1450
|
-
function useSubscription(
|
|
1473
|
+
function useSubscription(input, callback) {
|
|
1451
1474
|
const { mero } = useMero();
|
|
1452
1475
|
const callbackRef = useRef(callback);
|
|
1453
1476
|
callbackRef.current = callback;
|
|
1477
|
+
const { contextIds = [], groupIds = [] } = Array.isArray(input) ? { contextIds: input, groupIds: [] } : input;
|
|
1454
1478
|
const contextIdsKey = JSON.stringify(contextIds);
|
|
1479
|
+
const groupIdsKey = JSON.stringify(groupIds);
|
|
1455
1480
|
useEffect(() => {
|
|
1456
|
-
if (!mero || contextIds.length === 0) return;
|
|
1481
|
+
if (!mero || contextIds.length === 0 && groupIds.length === 0) return;
|
|
1457
1482
|
const sse = mero.events;
|
|
1458
1483
|
const handler = (event) => {
|
|
1459
1484
|
callbackRef.current(event);
|
|
@@ -1461,12 +1486,12 @@ function useSubscription(contextIds, callback) {
|
|
|
1461
1486
|
sse.on("event", handler);
|
|
1462
1487
|
sse.connect().catch(() => {
|
|
1463
1488
|
});
|
|
1464
|
-
sse.subscribe(contextIds).catch(() => {
|
|
1489
|
+
sse.subscribe({ contextIds, groupIds }).catch(() => {
|
|
1465
1490
|
});
|
|
1466
1491
|
return () => {
|
|
1467
1492
|
sse.off("event", handler);
|
|
1468
1493
|
};
|
|
1469
|
-
}, [mero, contextIdsKey]);
|
|
1494
|
+
}, [mero, contextIdsKey, groupIdsKey]);
|
|
1470
1495
|
}
|
|
1471
1496
|
function useContexts(applicationId) {
|
|
1472
1497
|
const { mero } = useMero();
|
|
@@ -2117,6 +2142,18 @@ function useUpgradeGroup() {
|
|
|
2117
2142
|
);
|
|
2118
2143
|
return { upgradeGroup, loading, error };
|
|
2119
2144
|
}
|
|
2145
|
+
function useInstallFromRegistry() {
|
|
2146
|
+
const { mero } = useMero();
|
|
2147
|
+
const { loading, error, run } = useAsyncMutation();
|
|
2148
|
+
const installFromRegistry = useCallback(
|
|
2149
|
+
async (registryUrl, packageName, version) => {
|
|
2150
|
+
if (!mero) return null;
|
|
2151
|
+
return run(() => mero.admin.installFromRegistry(registryUrl, packageName, version));
|
|
2152
|
+
},
|
|
2153
|
+
[mero, run]
|
|
2154
|
+
);
|
|
2155
|
+
return { installFromRegistry, loading, error };
|
|
2156
|
+
}
|
|
2120
2157
|
function useResyncContext() {
|
|
2121
2158
|
const { mero } = useMero();
|
|
2122
2159
|
const { loading, error, run } = useAsyncMutation();
|
|
@@ -2393,6 +2430,96 @@ function useLatestVersion(registryUrl, packageName, currentVersion) {
|
|
|
2393
2430
|
const updateAvailable = latestVersion != null && currentVersion != null && compareSemver(latestVersion, currentVersion) > 0;
|
|
2394
2431
|
return { versions, latestVersion, currentVersion, updateAvailable, loading, error, refetch };
|
|
2395
2432
|
}
|
|
2433
|
+
var EMPTY_GROUP_APP_VERSION = {
|
|
2434
|
+
version: null,
|
|
2435
|
+
applicationId: null,
|
|
2436
|
+
pendingApply: false,
|
|
2437
|
+
upgradePolicy: null,
|
|
2438
|
+
activeUpgrade: null
|
|
2439
|
+
};
|
|
2440
|
+
function isZeroAppKey(appKey) {
|
|
2441
|
+
return !appKey || /^0+$/.test(appKey);
|
|
2442
|
+
}
|
|
2443
|
+
function useGroupAppVersion(groupId) {
|
|
2444
|
+
const { mero } = useMero();
|
|
2445
|
+
const [data, setData] = useState(EMPTY_GROUP_APP_VERSION);
|
|
2446
|
+
const [loading, setLoading] = useState(false);
|
|
2447
|
+
const [error, setError] = useState(null);
|
|
2448
|
+
const mountedRef = useMountedRef();
|
|
2449
|
+
const reqRef = useRef(0);
|
|
2450
|
+
const refetch = useCallback(async () => {
|
|
2451
|
+
const seq = ++reqRef.current;
|
|
2452
|
+
if (!mero || !groupId) {
|
|
2453
|
+
if (mountedRef.current) {
|
|
2454
|
+
setData(EMPTY_GROUP_APP_VERSION);
|
|
2455
|
+
setError(null);
|
|
2456
|
+
setLoading(false);
|
|
2457
|
+
}
|
|
2458
|
+
return;
|
|
2459
|
+
}
|
|
2460
|
+
if (mountedRef.current) {
|
|
2461
|
+
setLoading(true);
|
|
2462
|
+
setError(null);
|
|
2463
|
+
}
|
|
2464
|
+
try {
|
|
2465
|
+
const namespaces = await mero.admin.listNamespaces();
|
|
2466
|
+
const namespace = namespaces.find((entry) => entry.namespaceId === groupId);
|
|
2467
|
+
let appKey;
|
|
2468
|
+
let applicationId;
|
|
2469
|
+
let upgradePolicy;
|
|
2470
|
+
let activeUpgrade = null;
|
|
2471
|
+
if (namespace) {
|
|
2472
|
+
appKey = namespace.appKey;
|
|
2473
|
+
applicationId = namespace.targetApplicationId;
|
|
2474
|
+
upgradePolicy = namespace.upgradePolicy;
|
|
2475
|
+
} else {
|
|
2476
|
+
const info = await mero.admin.getGroupInfo(groupId);
|
|
2477
|
+
appKey = info.appKey;
|
|
2478
|
+
applicationId = info.targetApplicationId;
|
|
2479
|
+
upgradePolicy = info.upgradePolicy;
|
|
2480
|
+
activeUpgrade = info.activeUpgrade ?? null;
|
|
2481
|
+
}
|
|
2482
|
+
let version = null;
|
|
2483
|
+
let pendingApply = false;
|
|
2484
|
+
if (applicationId) {
|
|
2485
|
+
const { application } = await mero.admin.getApplication(applicationId);
|
|
2486
|
+
version = application?.version ?? null;
|
|
2487
|
+
if (application && !isZeroAppKey(appKey)) {
|
|
2488
|
+
const installedHex = base58ToHex(application.blob.bytecode).toLowerCase();
|
|
2489
|
+
pendingApply = appKey.toLowerCase() !== installedHex;
|
|
2490
|
+
}
|
|
2491
|
+
}
|
|
2492
|
+
if (mountedRef.current && seq === reqRef.current) {
|
|
2493
|
+
setData({ version, applicationId, pendingApply, upgradePolicy, activeUpgrade });
|
|
2494
|
+
}
|
|
2495
|
+
} catch (err) {
|
|
2496
|
+
const errorValue = toError(err);
|
|
2497
|
+
if (mountedRef.current && seq === reqRef.current) {
|
|
2498
|
+
setError(errorValue);
|
|
2499
|
+
}
|
|
2500
|
+
} finally {
|
|
2501
|
+
if (mountedRef.current && seq === reqRef.current) {
|
|
2502
|
+
setLoading(false);
|
|
2503
|
+
}
|
|
2504
|
+
}
|
|
2505
|
+
}, [groupId, mero, mountedRef]);
|
|
2506
|
+
useEffect(() => {
|
|
2507
|
+
reqRef.current += 1;
|
|
2508
|
+
setData(EMPTY_GROUP_APP_VERSION);
|
|
2509
|
+
setError(null);
|
|
2510
|
+
}, [groupId]);
|
|
2511
|
+
useEffect(() => {
|
|
2512
|
+
void refetch();
|
|
2513
|
+
}, [refetch]);
|
|
2514
|
+
useEffect(() => {
|
|
2515
|
+
if (!mero?.events || !groupId) return;
|
|
2516
|
+
const off = mero.events.onAppVersionChanged(() => {
|
|
2517
|
+
if (mountedRef.current) void refetch();
|
|
2518
|
+
});
|
|
2519
|
+
return off;
|
|
2520
|
+
}, [mero, groupId, refetch, mountedRef]);
|
|
2521
|
+
return { ...data, loading, error, refetch };
|
|
2522
|
+
}
|
|
2396
2523
|
function useMyAuthoredMigration(contextId) {
|
|
2397
2524
|
const { mero } = useMero();
|
|
2398
2525
|
const [summary, setSummary] = useState(null);
|
|
@@ -2534,6 +2661,6 @@ function MigrationAdminPanel({ namespaceId, pollIntervalMs, className }) {
|
|
|
2534
2661
|
] });
|
|
2535
2662
|
}
|
|
2536
2663
|
|
|
2537
|
-
export { AppMode, CalimeroLogo, ConnectButton, ConnectionType, DEFAULT_LOCAL_NODE_PORTS, LoginModal, MERO_CSS_VARS, MeroContext, MeroProvider, MigrationAdminPanel, MigrationPendingBanner, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, clearTokenNodeUrl, cssVar, defaultMeroTheme, discoverLocalNodes, getApplicationId, getContextId, getContextIdentity, getNodeUrl, getTokenNodeUrl, localNodeUrl, localStorageTokenStorage, nodeEndpoint, probeNodeHealth, resolveMeroTheme, setApplicationId, setContextId, setContextIdentity, setNodeUrl, setTokenNodeUrl, themeToCssVars, useAddGroupMembers, useAppVersion, useApplicationContexts, useContextDiscovery, useContextGroup, useContexts, useCreateContext, useCreateGroupInNamespace, useCreateNamespace, useCreateNamespaceInvitation, useDefaultCapabilities, useDeleteContext, useDeleteGroup, useDeleteNamespace, useDetachContextFromGroup, useExecute, useGroupCapabilities, useGroupContexts, useGroupInfo, useGroupInvitations, useGroupMembers, useGroupMetadata, useGroupUpgradeStatus, 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 };
|
|
2664
|
+
export { AppMode, CalimeroLogo, ConnectButton, ConnectionType, DEFAULT_LOCAL_NODE_PORTS, LoginModal, MERO_CSS_VARS, MeroContext, MeroProvider, MigrationAdminPanel, MigrationPendingBanner, clearAllStorage, clearApplicationId, clearContextId, clearContextIdentity, clearNodeUrl, clearTokenNodeUrl, cssVar, defaultMeroTheme, discoverLocalNodes, getApplicationId, getContextId, getContextIdentity, getNodeUrl, getTokenNodeUrl, localNodeUrl, localStorageTokenStorage, nodeEndpoint, probeNodeHealth, 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 };
|
|
2538
2665
|
//# sourceMappingURL=index.js.map
|
|
2539
2666
|
//# sourceMappingURL=index.js.map
|