@calimero-network/mero-react 4.4.1 → 4.5.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 +127 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +42 -2
- package/dist/index.d.ts +42 -2
- package/dist/index.js +126 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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, 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, SseEventData, 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
|
|
|
@@ -633,6 +633,17 @@ declare function useUpgradeGroup(): {
|
|
|
633
633
|
loading: boolean;
|
|
634
634
|
error: Error | null;
|
|
635
635
|
};
|
|
636
|
+
/**
|
|
637
|
+
* Install a registry package version onto the node — the discrete "Download"
|
|
638
|
+
* step an Updates flow runs before an `upgradeGroup`. Resolves the installed
|
|
639
|
+
* application id (`InstallApplicationResponseData`). Downloading does not by
|
|
640
|
+
* itself change what any group runs; pair it with a subsequent upgrade.
|
|
641
|
+
*/
|
|
642
|
+
declare function useInstallFromRegistry(): {
|
|
643
|
+
installFromRegistry: (registryUrl: string, packageName: string, version: string) => Promise<_calimero_network_mero_js.InstallApplicationResponseData | null>;
|
|
644
|
+
loading: boolean;
|
|
645
|
+
error: Error | null;
|
|
646
|
+
};
|
|
636
647
|
/**
|
|
637
648
|
* Kick off a full state re-pull for a context — operator recovery for a
|
|
638
649
|
* context stranded mid-sync. `force` re-pulls even when the node does not
|
|
@@ -722,6 +733,35 @@ declare function useLatestVersion(registryUrl?: string | null, packageName?: str
|
|
|
722
733
|
error: Error | null;
|
|
723
734
|
refetch: () => Promise<void>;
|
|
724
735
|
};
|
|
736
|
+
/**
|
|
737
|
+
* What app version does this group run, and is there a downloaded-but-not-yet-
|
|
738
|
+
* applied update? Replaces the appKey-vs-installed-blob comparison apps
|
|
739
|
+
* otherwise hand-roll: `pendingApply` is true when the group's `appKey` (the
|
|
740
|
+
* blob it targets) is present, non-zero, and differs from the blob actually
|
|
741
|
+
* installed for its `targetApplicationId`. Deciding whether to render or gate on
|
|
742
|
+
* that status (admin-only actions, etc.) is the call site's job.
|
|
743
|
+
*
|
|
744
|
+
* Resolution stays cheap: the group's record comes from `listNamespaces()` when
|
|
745
|
+
* the id is a namespace, else from `getGroupInfo()`; `getApplication()` then
|
|
746
|
+
* reads the installed version and blob. `activeUpgrade` is returned only when it
|
|
747
|
+
* arrives for free on the group-info path (it is not fetched separately).
|
|
748
|
+
* Subscribes to `AppVersionChanged` and refetches, since any version flip in the
|
|
749
|
+
* workspace can make the rollup stale.
|
|
750
|
+
*/
|
|
751
|
+
declare function useGroupAppVersion(groupId?: string): {
|
|
752
|
+
loading: boolean;
|
|
753
|
+
error: Error | null;
|
|
754
|
+
refetch: () => Promise<void>;
|
|
755
|
+
/** Semver of the application the group currently targets (`null` until loaded). */
|
|
756
|
+
version: string | null;
|
|
757
|
+
/** The group's `targetApplicationId`. */
|
|
758
|
+
applicationId: string | null;
|
|
759
|
+
/** The installed blob differs from the one the group targets (see hook doc). */
|
|
760
|
+
pendingApply: boolean;
|
|
761
|
+
upgradePolicy: string | null;
|
|
762
|
+
/** Only populated via the group-info path; `null` in the namespace path. */
|
|
763
|
+
activeUpgrade: GroupUpgradeStatusResponseData;
|
|
764
|
+
};
|
|
725
765
|
/**
|
|
726
766
|
* The caller's own identity-gated entries pending re-signature (skew #1).
|
|
727
767
|
* `pending` is `pendingCount > 0` (from `count_my_pending`); `authorize()` runs
|
|
@@ -814,4 +854,4 @@ declare function clearContextIdentity(): void;
|
|
|
814
854
|
*/
|
|
815
855
|
declare function clearAllStorage(): void;
|
|
816
856
|
|
|
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 };
|
|
857
|
+
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, 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, 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, SseEventData, 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
|
|
|
@@ -633,6 +633,17 @@ declare function useUpgradeGroup(): {
|
|
|
633
633
|
loading: boolean;
|
|
634
634
|
error: Error | null;
|
|
635
635
|
};
|
|
636
|
+
/**
|
|
637
|
+
* Install a registry package version onto the node — the discrete "Download"
|
|
638
|
+
* step an Updates flow runs before an `upgradeGroup`. Resolves the installed
|
|
639
|
+
* application id (`InstallApplicationResponseData`). Downloading does not by
|
|
640
|
+
* itself change what any group runs; pair it with a subsequent upgrade.
|
|
641
|
+
*/
|
|
642
|
+
declare function useInstallFromRegistry(): {
|
|
643
|
+
installFromRegistry: (registryUrl: string, packageName: string, version: string) => Promise<_calimero_network_mero_js.InstallApplicationResponseData | null>;
|
|
644
|
+
loading: boolean;
|
|
645
|
+
error: Error | null;
|
|
646
|
+
};
|
|
636
647
|
/**
|
|
637
648
|
* Kick off a full state re-pull for a context — operator recovery for a
|
|
638
649
|
* context stranded mid-sync. `force` re-pulls even when the node does not
|
|
@@ -722,6 +733,35 @@ declare function useLatestVersion(registryUrl?: string | null, packageName?: str
|
|
|
722
733
|
error: Error | null;
|
|
723
734
|
refetch: () => Promise<void>;
|
|
724
735
|
};
|
|
736
|
+
/**
|
|
737
|
+
* What app version does this group run, and is there a downloaded-but-not-yet-
|
|
738
|
+
* applied update? Replaces the appKey-vs-installed-blob comparison apps
|
|
739
|
+
* otherwise hand-roll: `pendingApply` is true when the group's `appKey` (the
|
|
740
|
+
* blob it targets) is present, non-zero, and differs from the blob actually
|
|
741
|
+
* installed for its `targetApplicationId`. Deciding whether to render or gate on
|
|
742
|
+
* that status (admin-only actions, etc.) is the call site's job.
|
|
743
|
+
*
|
|
744
|
+
* Resolution stays cheap: the group's record comes from `listNamespaces()` when
|
|
745
|
+
* the id is a namespace, else from `getGroupInfo()`; `getApplication()` then
|
|
746
|
+
* reads the installed version and blob. `activeUpgrade` is returned only when it
|
|
747
|
+
* arrives for free on the group-info path (it is not fetched separately).
|
|
748
|
+
* Subscribes to `AppVersionChanged` and refetches, since any version flip in the
|
|
749
|
+
* workspace can make the rollup stale.
|
|
750
|
+
*/
|
|
751
|
+
declare function useGroupAppVersion(groupId?: string): {
|
|
752
|
+
loading: boolean;
|
|
753
|
+
error: Error | null;
|
|
754
|
+
refetch: () => Promise<void>;
|
|
755
|
+
/** Semver of the application the group currently targets (`null` until loaded). */
|
|
756
|
+
version: string | null;
|
|
757
|
+
/** The group's `targetApplicationId`. */
|
|
758
|
+
applicationId: string | null;
|
|
759
|
+
/** The installed blob differs from the one the group targets (see hook doc). */
|
|
760
|
+
pendingApply: boolean;
|
|
761
|
+
upgradePolicy: string | null;
|
|
762
|
+
/** Only populated via the group-info path; `null` in the namespace path. */
|
|
763
|
+
activeUpgrade: GroupUpgradeStatusResponseData;
|
|
764
|
+
};
|
|
725
765
|
/**
|
|
726
766
|
* The caller's own identity-gated entries pending re-signature (skew #1).
|
|
727
767
|
* `pending` is `pendingCount > 0` (from `count_my_pending`); `authorize()` runs
|
|
@@ -814,4 +854,4 @@ declare function clearContextIdentity(): void;
|
|
|
814
854
|
*/
|
|
815
855
|
declare function clearAllStorage(): void;
|
|
816
856
|
|
|
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 };
|
|
857
|
+
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, 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
|
}
|
|
@@ -2117,6 +2140,18 @@ function useUpgradeGroup() {
|
|
|
2117
2140
|
);
|
|
2118
2141
|
return { upgradeGroup, loading, error };
|
|
2119
2142
|
}
|
|
2143
|
+
function useInstallFromRegistry() {
|
|
2144
|
+
const { mero } = useMero();
|
|
2145
|
+
const { loading, error, run } = useAsyncMutation();
|
|
2146
|
+
const installFromRegistry = useCallback(
|
|
2147
|
+
async (registryUrl, packageName, version) => {
|
|
2148
|
+
if (!mero) return null;
|
|
2149
|
+
return run(() => mero.admin.installFromRegistry(registryUrl, packageName, version));
|
|
2150
|
+
},
|
|
2151
|
+
[mero, run]
|
|
2152
|
+
);
|
|
2153
|
+
return { installFromRegistry, loading, error };
|
|
2154
|
+
}
|
|
2120
2155
|
function useResyncContext() {
|
|
2121
2156
|
const { mero } = useMero();
|
|
2122
2157
|
const { loading, error, run } = useAsyncMutation();
|
|
@@ -2393,6 +2428,96 @@ function useLatestVersion(registryUrl, packageName, currentVersion) {
|
|
|
2393
2428
|
const updateAvailable = latestVersion != null && currentVersion != null && compareSemver(latestVersion, currentVersion) > 0;
|
|
2394
2429
|
return { versions, latestVersion, currentVersion, updateAvailable, loading, error, refetch };
|
|
2395
2430
|
}
|
|
2431
|
+
var EMPTY_GROUP_APP_VERSION = {
|
|
2432
|
+
version: null,
|
|
2433
|
+
applicationId: null,
|
|
2434
|
+
pendingApply: false,
|
|
2435
|
+
upgradePolicy: null,
|
|
2436
|
+
activeUpgrade: null
|
|
2437
|
+
};
|
|
2438
|
+
function isZeroAppKey(appKey) {
|
|
2439
|
+
return !appKey || /^0+$/.test(appKey);
|
|
2440
|
+
}
|
|
2441
|
+
function useGroupAppVersion(groupId) {
|
|
2442
|
+
const { mero } = useMero();
|
|
2443
|
+
const [data, setData] = useState(EMPTY_GROUP_APP_VERSION);
|
|
2444
|
+
const [loading, setLoading] = useState(false);
|
|
2445
|
+
const [error, setError] = useState(null);
|
|
2446
|
+
const mountedRef = useMountedRef();
|
|
2447
|
+
const reqRef = useRef(0);
|
|
2448
|
+
const refetch = useCallback(async () => {
|
|
2449
|
+
const seq = ++reqRef.current;
|
|
2450
|
+
if (!mero || !groupId) {
|
|
2451
|
+
if (mountedRef.current) {
|
|
2452
|
+
setData(EMPTY_GROUP_APP_VERSION);
|
|
2453
|
+
setError(null);
|
|
2454
|
+
setLoading(false);
|
|
2455
|
+
}
|
|
2456
|
+
return;
|
|
2457
|
+
}
|
|
2458
|
+
if (mountedRef.current) {
|
|
2459
|
+
setLoading(true);
|
|
2460
|
+
setError(null);
|
|
2461
|
+
}
|
|
2462
|
+
try {
|
|
2463
|
+
const namespaces = await mero.admin.listNamespaces();
|
|
2464
|
+
const namespace = namespaces.find((entry) => entry.namespaceId === groupId);
|
|
2465
|
+
let appKey;
|
|
2466
|
+
let applicationId;
|
|
2467
|
+
let upgradePolicy;
|
|
2468
|
+
let activeUpgrade = null;
|
|
2469
|
+
if (namespace) {
|
|
2470
|
+
appKey = namespace.appKey;
|
|
2471
|
+
applicationId = namespace.targetApplicationId;
|
|
2472
|
+
upgradePolicy = namespace.upgradePolicy;
|
|
2473
|
+
} else {
|
|
2474
|
+
const info = await mero.admin.getGroupInfo(groupId);
|
|
2475
|
+
appKey = info.appKey;
|
|
2476
|
+
applicationId = info.targetApplicationId;
|
|
2477
|
+
upgradePolicy = info.upgradePolicy;
|
|
2478
|
+
activeUpgrade = info.activeUpgrade ?? null;
|
|
2479
|
+
}
|
|
2480
|
+
let version = null;
|
|
2481
|
+
let pendingApply = false;
|
|
2482
|
+
if (applicationId) {
|
|
2483
|
+
const { application } = await mero.admin.getApplication(applicationId);
|
|
2484
|
+
version = application?.version ?? null;
|
|
2485
|
+
if (application && !isZeroAppKey(appKey)) {
|
|
2486
|
+
const installedHex = base58ToHex(application.blob.bytecode).toLowerCase();
|
|
2487
|
+
pendingApply = appKey.toLowerCase() !== installedHex;
|
|
2488
|
+
}
|
|
2489
|
+
}
|
|
2490
|
+
if (mountedRef.current && seq === reqRef.current) {
|
|
2491
|
+
setData({ version, applicationId, pendingApply, upgradePolicy, activeUpgrade });
|
|
2492
|
+
}
|
|
2493
|
+
} catch (err) {
|
|
2494
|
+
const errorValue = toError(err);
|
|
2495
|
+
if (mountedRef.current && seq === reqRef.current) {
|
|
2496
|
+
setError(errorValue);
|
|
2497
|
+
}
|
|
2498
|
+
} finally {
|
|
2499
|
+
if (mountedRef.current && seq === reqRef.current) {
|
|
2500
|
+
setLoading(false);
|
|
2501
|
+
}
|
|
2502
|
+
}
|
|
2503
|
+
}, [groupId, mero, mountedRef]);
|
|
2504
|
+
useEffect(() => {
|
|
2505
|
+
reqRef.current += 1;
|
|
2506
|
+
setData(EMPTY_GROUP_APP_VERSION);
|
|
2507
|
+
setError(null);
|
|
2508
|
+
}, [groupId]);
|
|
2509
|
+
useEffect(() => {
|
|
2510
|
+
void refetch();
|
|
2511
|
+
}, [refetch]);
|
|
2512
|
+
useEffect(() => {
|
|
2513
|
+
if (!mero?.events || !groupId) return;
|
|
2514
|
+
const off = mero.events.onAppVersionChanged(() => {
|
|
2515
|
+
if (mountedRef.current) void refetch();
|
|
2516
|
+
});
|
|
2517
|
+
return off;
|
|
2518
|
+
}, [mero, groupId, refetch, mountedRef]);
|
|
2519
|
+
return { ...data, loading, error, refetch };
|
|
2520
|
+
}
|
|
2396
2521
|
function useMyAuthoredMigration(contextId) {
|
|
2397
2522
|
const { mero } = useMero();
|
|
2398
2523
|
const [summary, setSummary] = useState(null);
|
|
@@ -2534,6 +2659,6 @@ function MigrationAdminPanel({ namespaceId, pollIntervalMs, className }) {
|
|
|
2534
2659
|
] });
|
|
2535
2660
|
}
|
|
2536
2661
|
|
|
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 };
|
|
2662
|
+
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
2663
|
//# sourceMappingURL=index.js.map
|
|
2539
2664
|
//# sourceMappingURL=index.js.map
|