@scm-manager/ui-api 2.43.1 → 2.43.2-20230425-175303
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/build/index.d.ts +6 -1
- package/build/index.js +96 -55
- package/build/index.mjs +71 -32
- package/package.json +2 -2
package/build/index.d.ts
CHANGED
|
@@ -727,6 +727,11 @@ declare type UseIncomingChangesetsRequest = {
|
|
|
727
727
|
declare const useIncomingChangesets: (repository: Repository, source: string, target: string, request?: UseIncomingChangesetsRequest) => ApiResultWithFetching<ChangesetCollection>;
|
|
728
728
|
|
|
729
729
|
declare const createQueryString: (params: Record<string, string>) => string;
|
|
730
|
+
declare type CancelablePromise<T> = Promise<T> & {
|
|
731
|
+
cancel: () => void;
|
|
732
|
+
};
|
|
733
|
+
declare function makeCancelable<T>(promise: Promise<T>): CancelablePromise<T>;
|
|
734
|
+
declare function useCancellablePromise(): <T>(p: Promise<T>) => CancelablePromise<T>;
|
|
730
735
|
|
|
731
736
|
declare const requiredLink: (object: HalRepresentation, name: string, subName?: string) => string;
|
|
732
737
|
declare const objectLink: (object: HalRepresentation, name: string) => string | null;
|
|
@@ -769,4 +774,4 @@ declare const RepositoryRevisionContextProvider: FC<{
|
|
|
769
774
|
revision?: string;
|
|
770
775
|
}>;
|
|
771
776
|
|
|
772
|
-
export { AdditionalMessage, ApiProvider, Props as ApiProviderProps, ApiResult, ApiResultWithFetching, BackendError, BackendErrorContent, BadGatewayError, BaseContext, CONTENT_TYPE_PUBLIC_KEY, ConflictError, ConvertToInternalRequest, DeleteFunction, ForbiddenError, LegacyContext, LegacyContextProvider, MissingLinkError, NamespaceAndNameContext, NamespaceAndNameContextProvider, NotFoundError, RepositoryContextProvider, RepositoryRevisionContextProvider, SearchOptions, TOKEN_EXPIRED_ERROR_CODE, TokenExpiredError, UnauthorizedError, UseAvailablePluginsOptions, UseDeleteRepositoryOptions, UseGroupsRequest, UseHistoryRequest, UseInstalledPluginsOptions, UseRepositoriesRequest, UseRepositoryRolesRequest, UseSourcesOptions, UseUsersRequest, Violation, apiClient, changesetQueryKey, clearCache, createBackendError, createChangesetUrl, createDiffUrl, createQueryString, createUrl, createUrlWithIdentifiers, extractXsrfTokenFromCookie, fetchResourceFromLocationHeader, getResponseJson, isBackendError, objectLink, requiredLink, urls, useAlerts, useAnnotations, useApiKeys, useArchiveRepository, useAvailableGlobalPermissions, useAvailablePermissions, useAvailablePlugins, useBranch, useBranchDetails, useBranchDetailsCollection, useBranches, useCancelPendingPlugins, useChangeUserPassword, useChangeset, useChangesets, useClearNotifications, useConfig, useConfigLink, useContentType, useConvertToExternal, useConvertToInternal, useCreateApiKey, useCreateBranch, useCreateGroup, useCreatePermission, useCreatePublicKey, useCreateRepository, useCreateRepositoryRole, useCreateTag, useCreateUser, useDefaultBranch, useDeleteApiKey, useDeleteBranch, useDeleteGroup, useDeletePermission, useDeletePublicKey, useDeleteRepository, useDeleteRepositoryRole, useDeleteTag, useDeleteUser, useDiff, useDismissNotification, useExecutePendingPlugins, useExportInfo, useExportRepository, useFileContent, useGroup, useGroupPermissions, useGroupSuggestions, useGroups, useHistory, useImportFullRepository, useImportLog, useImportRepositoryFromBundle, useImportRepositoryFromUrl, useIncomingChangesets, useIndex, useIndexJsonResource, useIndexLink, useIndexLinks, useInstallPlugin, useInstalledPlugins, useJsonResource, useLegacyContext, useLogin, useLoginInfo, useLogout, useMe, useNamespace, useNamespaceAndNameContext, useNamespaceStrategies, useNamespaceSuggestions, useNamespaces, useNotificationSubscription, useNotifications, useOmniSearch, usePaths, usePendingPlugins, usePermissions, usePluginCenterAuthInfo, usePluginCenterLogout, usePublicKeys, useReindexRepository, useRenameRepository, useRepositories, useRepository, useRepositoryContext, useRepositoryRevisionContext, useRepositoryRole, useRepositoryRoles, useRepositoryTypes, useRepositoryVerbs, useRequiredIndexLink, useRequiredMe, useRunHealthCheck, useSearch, useSearchCounts, useSearchHelpContent, useSearchSyntaxContent, useSearchTypes, useSearchableTypes, useSetGroupPermissions, useSetUserPassword, useSetUserPermissions, useSources, useSubject, useSuggestions, useTag, useTags, useUnarchiveRepository, useUninstallPlugin, useUpdateConfig, useUpdateGroup, useUpdateInfo, useUpdatePermission, useUpdatePlugins, useUpdateRepository, useUpdateRepositoryRole, useUpdateUser, useUser, useUserPermissionOverview, useUserPermissions, useUserSuggestions, useUsers, useVersion, waitForRestartAfter };
|
|
777
|
+
export { AdditionalMessage, ApiProvider, Props as ApiProviderProps, ApiResult, ApiResultWithFetching, BackendError, BackendErrorContent, BadGatewayError, BaseContext, CONTENT_TYPE_PUBLIC_KEY, CancelablePromise, ConflictError, ConvertToInternalRequest, DeleteFunction, ForbiddenError, LegacyContext, LegacyContextProvider, MissingLinkError, NamespaceAndNameContext, NamespaceAndNameContextProvider, NotFoundError, RepositoryContextProvider, RepositoryRevisionContextProvider, SearchOptions, TOKEN_EXPIRED_ERROR_CODE, TokenExpiredError, UnauthorizedError, UseAvailablePluginsOptions, UseDeleteRepositoryOptions, UseGroupsRequest, UseHistoryRequest, UseInstalledPluginsOptions, UseRepositoriesRequest, UseRepositoryRolesRequest, UseSourcesOptions, UseUsersRequest, Violation, apiClient, changesetQueryKey, clearCache, createBackendError, createChangesetUrl, createDiffUrl, createQueryString, createUrl, createUrlWithIdentifiers, extractXsrfTokenFromCookie, fetchResourceFromLocationHeader, getResponseJson, isBackendError, makeCancelable, objectLink, requiredLink, urls, useAlerts, useAnnotations, useApiKeys, useArchiveRepository, useAvailableGlobalPermissions, useAvailablePermissions, useAvailablePlugins, useBranch, useBranchDetails, useBranchDetailsCollection, useBranches, useCancelPendingPlugins, useCancellablePromise, useChangeUserPassword, useChangeset, useChangesets, useClearNotifications, useConfig, useConfigLink, useContentType, useConvertToExternal, useConvertToInternal, useCreateApiKey, useCreateBranch, useCreateGroup, useCreatePermission, useCreatePublicKey, useCreateRepository, useCreateRepositoryRole, useCreateTag, useCreateUser, useDefaultBranch, useDeleteApiKey, useDeleteBranch, useDeleteGroup, useDeletePermission, useDeletePublicKey, useDeleteRepository, useDeleteRepositoryRole, useDeleteTag, useDeleteUser, useDiff, useDismissNotification, useExecutePendingPlugins, useExportInfo, useExportRepository, useFileContent, useGroup, useGroupPermissions, useGroupSuggestions, useGroups, useHistory, useImportFullRepository, useImportLog, useImportRepositoryFromBundle, useImportRepositoryFromUrl, useIncomingChangesets, useIndex, useIndexJsonResource, useIndexLink, useIndexLinks, useInstallPlugin, useInstalledPlugins, useJsonResource, useLegacyContext, useLogin, useLoginInfo, useLogout, useMe, useNamespace, useNamespaceAndNameContext, useNamespaceStrategies, useNamespaceSuggestions, useNamespaces, useNotificationSubscription, useNotifications, useOmniSearch, usePaths, usePendingPlugins, usePermissions, usePluginCenterAuthInfo, usePluginCenterLogout, usePublicKeys, useReindexRepository, useRenameRepository, useRepositories, useRepository, useRepositoryContext, useRepositoryRevisionContext, useRepositoryRole, useRepositoryRoles, useRepositoryTypes, useRepositoryVerbs, useRequiredIndexLink, useRequiredMe, useRunHealthCheck, useSearch, useSearchCounts, useSearchHelpContent, useSearchSyntaxContent, useSearchTypes, useSearchableTypes, useSetGroupPermissions, useSetUserPassword, useSetUserPermissions, useSources, useSubject, useSuggestions, useTag, useTags, useUnarchiveRepository, useUninstallPlugin, useUpdateConfig, useUpdateGroup, useUpdateInfo, useUpdatePermission, useUpdatePlugins, useUpdateRepository, useUpdateRepositoryRole, useUpdateUser, useUser, useUserPermissionOverview, useUserPermissions, useUserSuggestions, useUsers, useVersion, waitForRestartAfter };
|
package/build/index.js
CHANGED
|
@@ -54,6 +54,7 @@ __export(src_exports, {
|
|
|
54
54
|
fetchResourceFromLocationHeader: () => fetchResourceFromLocationHeader,
|
|
55
55
|
getResponseJson: () => getResponseJson,
|
|
56
56
|
isBackendError: () => isBackendError,
|
|
57
|
+
makeCancelable: () => makeCancelable,
|
|
57
58
|
objectLink: () => objectLink,
|
|
58
59
|
requiredLink: () => requiredLink,
|
|
59
60
|
urls: () => urls_exports,
|
|
@@ -69,6 +70,7 @@ __export(src_exports, {
|
|
|
69
70
|
useBranchDetailsCollection: () => useBranchDetailsCollection,
|
|
70
71
|
useBranches: () => useBranches,
|
|
71
72
|
useCancelPendingPlugins: () => useCancelPendingPlugins,
|
|
73
|
+
useCancellablePromise: () => useCancellablePromise,
|
|
72
74
|
useChangeUserPassword: () => useChangeUserPassword,
|
|
73
75
|
useChangeset: () => useChangeset,
|
|
74
76
|
useChangesets: () => useChangesets,
|
|
@@ -787,9 +789,38 @@ var useLogout = () => {
|
|
|
787
789
|
var import_react_query5 = require("react-query");
|
|
788
790
|
|
|
789
791
|
// src/utils.ts
|
|
792
|
+
var import_react3 = require("react");
|
|
790
793
|
var createQueryString = (params) => {
|
|
791
794
|
return Object.keys(params).map((k) => encodeURIComponent(k) + "=" + encodeURIComponent(params[k])).join("&");
|
|
792
795
|
};
|
|
796
|
+
function makeCancelable(promise) {
|
|
797
|
+
let isCanceled = false;
|
|
798
|
+
const wrappedPromise = new Promise((resolve, reject) => {
|
|
799
|
+
promise.then((val) => isCanceled ? reject({ isCanceled }) : resolve(val)).catch((error) => isCanceled ? reject({ isCanceled }) : reject(error));
|
|
800
|
+
});
|
|
801
|
+
return Object.assign(wrappedPromise, {
|
|
802
|
+
cancel() {
|
|
803
|
+
isCanceled = true;
|
|
804
|
+
}
|
|
805
|
+
});
|
|
806
|
+
}
|
|
807
|
+
function useCancellablePromise() {
|
|
808
|
+
const promises = (0, import_react3.useRef)();
|
|
809
|
+
(0, import_react3.useEffect)(() => {
|
|
810
|
+
promises.current = promises.current || [];
|
|
811
|
+
return function cancel() {
|
|
812
|
+
var _a;
|
|
813
|
+
(_a = promises.current) == null ? void 0 : _a.forEach((p) => p.cancel());
|
|
814
|
+
promises.current = [];
|
|
815
|
+
};
|
|
816
|
+
}, []);
|
|
817
|
+
return (0, import_react3.useCallback)((p) => {
|
|
818
|
+
var _a;
|
|
819
|
+
const cPromise = makeCancelable(p);
|
|
820
|
+
(_a = promises.current) == null ? void 0 : _a.push(cPromise);
|
|
821
|
+
return cPromise;
|
|
822
|
+
}, []);
|
|
823
|
+
}
|
|
793
824
|
|
|
794
825
|
// src/groups.ts
|
|
795
826
|
var useGroups = (request) => {
|
|
@@ -1139,7 +1170,7 @@ var branchQueryKey = (repository, branch, ...values) => {
|
|
|
1139
1170
|
};
|
|
1140
1171
|
|
|
1141
1172
|
// src/repositories.ts
|
|
1142
|
-
var
|
|
1173
|
+
var import_react4 = require("react");
|
|
1143
1174
|
var useRepositories = (request) => {
|
|
1144
1175
|
var _a, _b, _c;
|
|
1145
1176
|
const queryClient2 = (0, import_react_query7.useQueryClient)();
|
|
@@ -1341,8 +1372,8 @@ var useExportInfo = (repository) => {
|
|
|
1341
1372
|
var EXPORT_MEDIA_TYPE = "application/vnd.scmm-repositoryExport+json;v=2";
|
|
1342
1373
|
var useExportRepository = () => {
|
|
1343
1374
|
const queryClient2 = (0, import_react_query7.useQueryClient)();
|
|
1344
|
-
const [intervalId, setIntervalId] = (0,
|
|
1345
|
-
(0,
|
|
1375
|
+
const [intervalId, setIntervalId] = (0, import_react4.useState)();
|
|
1376
|
+
(0, import_react4.useEffect)(() => {
|
|
1346
1377
|
return () => {
|
|
1347
1378
|
if (intervalId) {
|
|
1348
1379
|
clearInterval(intervalId);
|
|
@@ -1452,7 +1483,7 @@ var useNamespaceStrategies = () => {
|
|
|
1452
1483
|
|
|
1453
1484
|
// src/branches.ts
|
|
1454
1485
|
var import_react_query9 = require("react-query");
|
|
1455
|
-
var
|
|
1486
|
+
var import_react5 = require("react");
|
|
1456
1487
|
var useBranches = (repository) => {
|
|
1457
1488
|
const queryClient2 = (0, import_react_query9.useQueryClient)();
|
|
1458
1489
|
const link = requiredLink(repository, "branches");
|
|
@@ -1524,7 +1555,7 @@ var useBranchDetailsCollection = (repository, branches) => {
|
|
|
1524
1555
|
}
|
|
1525
1556
|
}
|
|
1526
1557
|
);
|
|
1527
|
-
(0,
|
|
1558
|
+
(0, import_react5.useEffect)(() => {
|
|
1528
1559
|
fetchNextPage();
|
|
1529
1560
|
}, [data, fetchNextPage]);
|
|
1530
1561
|
return {
|
|
@@ -2183,7 +2214,7 @@ var useSetGroupPermissions = (group, permissions) => useSetEntityPermissions(per
|
|
|
2183
2214
|
|
|
2184
2215
|
// src/sources.ts
|
|
2185
2216
|
var import_react_query17 = require("react-query");
|
|
2186
|
-
var
|
|
2217
|
+
var import_react6 = require("react");
|
|
2187
2218
|
var UseSourcesDefaultOptions = {
|
|
2188
2219
|
enabled: true,
|
|
2189
2220
|
refetchPartialInterval: 3e3,
|
|
@@ -2209,7 +2240,7 @@ var useSources = (repository, opts = UseSourcesDefaultOptions) => {
|
|
|
2209
2240
|
}
|
|
2210
2241
|
);
|
|
2211
2242
|
const file = merge(data == null ? void 0 : data.pages);
|
|
2212
|
-
(0,
|
|
2243
|
+
(0, import_react6.useEffect)(() => {
|
|
2213
2244
|
const intervalId = setInterval(() => {
|
|
2214
2245
|
if (isPartial(file)) {
|
|
2215
2246
|
refetch({
|
|
@@ -2393,7 +2424,7 @@ var merge2 = (diffs) => {
|
|
|
2393
2424
|
|
|
2394
2425
|
// src/notifications.ts
|
|
2395
2426
|
var import_react_query20 = require("react-query");
|
|
2396
|
-
var
|
|
2427
|
+
var import_react7 = require("react");
|
|
2397
2428
|
var useNotifications = () => {
|
|
2398
2429
|
var _a;
|
|
2399
2430
|
const { data: me } = useMe();
|
|
@@ -2405,7 +2436,7 @@ var useNotifications = () => {
|
|
|
2405
2436
|
enabled: !!link
|
|
2406
2437
|
}
|
|
2407
2438
|
);
|
|
2408
|
-
const memoizedRefetch = (0,
|
|
2439
|
+
const memoizedRefetch = (0, import_react7.useCallback)(() => {
|
|
2409
2440
|
return refetch().then((r) => r.data);
|
|
2410
2441
|
}, [refetch]);
|
|
2411
2442
|
return {
|
|
@@ -2450,34 +2481,42 @@ var isEqual = (left, right) => {
|
|
|
2450
2481
|
};
|
|
2451
2482
|
var useNotificationSubscription = (refetch, notificationCollection) => {
|
|
2452
2483
|
var _a;
|
|
2453
|
-
const [notifications, setNotifications] = (0,
|
|
2454
|
-
const [disconnectedAt, setDisconnectedAt] = (0,
|
|
2484
|
+
const [notifications, setNotifications] = (0, import_react7.useState)([]);
|
|
2485
|
+
const [disconnectedAt, setDisconnectedAt] = (0, import_react7.useState)();
|
|
2455
2486
|
const link = (_a = notificationCollection == null ? void 0 : notificationCollection._links.subscribe) == null ? void 0 : _a.href;
|
|
2456
|
-
const
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2487
|
+
const cancelOnUnmount = useCancellablePromise();
|
|
2488
|
+
const onVisible = (0, import_react7.useCallback)(() => {
|
|
2489
|
+
cancelOnUnmount(refetch()).then(
|
|
2490
|
+
(collection) => {
|
|
2491
|
+
var _a2;
|
|
2492
|
+
if (collection) {
|
|
2493
|
+
const newNotifications = (_a2 = collection._embedded) == null ? void 0 : _a2.notifications.filter((n) => {
|
|
2494
|
+
return disconnectedAt && disconnectedAt < new Date(n.createdAt);
|
|
2495
|
+
});
|
|
2496
|
+
if (newNotifications && newNotifications.length > 0) {
|
|
2497
|
+
setNotifications((previous) => [...previous, ...newNotifications]);
|
|
2498
|
+
}
|
|
2499
|
+
setDisconnectedAt(void 0);
|
|
2500
|
+
}
|
|
2501
|
+
},
|
|
2502
|
+
(reason) => {
|
|
2503
|
+
if (!reason.isCanceled) {
|
|
2504
|
+
throw reason;
|
|
2465
2505
|
}
|
|
2466
|
-
setDisconnectedAt(void 0);
|
|
2467
2506
|
}
|
|
2468
|
-
|
|
2469
|
-
}, [disconnectedAt, refetch]);
|
|
2470
|
-
const onHide = (0,
|
|
2507
|
+
);
|
|
2508
|
+
}, [cancelOnUnmount, disconnectedAt, refetch]);
|
|
2509
|
+
const onHide = (0, import_react7.useCallback)(() => {
|
|
2471
2510
|
setDisconnectedAt(new Date());
|
|
2472
2511
|
}, []);
|
|
2473
|
-
const received = (0,
|
|
2512
|
+
const received = (0, import_react7.useCallback)(
|
|
2474
2513
|
(notification) => {
|
|
2475
2514
|
setNotifications((previous) => [...previous, notification]);
|
|
2476
2515
|
refetch();
|
|
2477
2516
|
},
|
|
2478
2517
|
[refetch]
|
|
2479
2518
|
);
|
|
2480
|
-
(0,
|
|
2519
|
+
(0, import_react7.useEffect)(() => {
|
|
2481
2520
|
if (link) {
|
|
2482
2521
|
let cancel;
|
|
2483
2522
|
const disconnect = () => {
|
|
@@ -2510,13 +2549,13 @@ var useNotificationSubscription = (refetch, notificationCollection) => {
|
|
|
2510
2549
|
};
|
|
2511
2550
|
}
|
|
2512
2551
|
}, [link, onVisible, onHide, received]);
|
|
2513
|
-
const remove = (0,
|
|
2552
|
+
const remove = (0, import_react7.useCallback)(
|
|
2514
2553
|
(notification) => {
|
|
2515
2554
|
setNotifications((oldNotifications) => [...oldNotifications.filter((n) => !isEqual(n, notification))]);
|
|
2516
2555
|
},
|
|
2517
2556
|
[setNotifications]
|
|
2518
2557
|
);
|
|
2519
|
-
const clear = (0,
|
|
2558
|
+
const clear = (0, import_react7.useCallback)(() => {
|
|
2520
2559
|
setNotifications([]);
|
|
2521
2560
|
}, [setNotifications]);
|
|
2522
2561
|
return {
|
|
@@ -2591,7 +2630,7 @@ var useAlerts = () => {
|
|
|
2591
2630
|
|
|
2592
2631
|
// src/configLink.ts
|
|
2593
2632
|
var import_react_query22 = require("react-query");
|
|
2594
|
-
var
|
|
2633
|
+
var import_react8 = require("react");
|
|
2595
2634
|
var useConfigLink = (link) => {
|
|
2596
2635
|
const queryClient2 = (0, import_react_query22.useQueryClient)();
|
|
2597
2636
|
const queryKey = ["configLink", link];
|
|
@@ -2616,7 +2655,7 @@ var useConfigLink = (link) => {
|
|
|
2616
2655
|
}
|
|
2617
2656
|
);
|
|
2618
2657
|
const isReadOnly = !(data == null ? void 0 : data.configuration._links.update);
|
|
2619
|
-
const update = (0,
|
|
2658
|
+
const update = (0, import_react8.useCallback)(
|
|
2620
2659
|
(configuration) => {
|
|
2621
2660
|
if (data && !isReadOnly) {
|
|
2622
2661
|
return mutateAsync({
|
|
@@ -2814,7 +2853,7 @@ var useAnnotations = (repository, revision, file) => {
|
|
|
2814
2853
|
|
|
2815
2854
|
// src/search.ts
|
|
2816
2855
|
var import_react_query29 = require("react-query");
|
|
2817
|
-
var
|
|
2856
|
+
var import_react9 = require("react");
|
|
2818
2857
|
|
|
2819
2858
|
// src/help/search/syntax.en.ts
|
|
2820
2859
|
var syntax_en_default = `### Modifiers
|
|
@@ -3170,10 +3209,10 @@ var useInternalSearch = (query, options, link) => {
|
|
|
3170
3209
|
);
|
|
3171
3210
|
};
|
|
3172
3211
|
var useObserveAsync = (fn, deps) => {
|
|
3173
|
-
const [data, setData] = (0,
|
|
3174
|
-
const [isLoading, setLoading] = (0,
|
|
3175
|
-
const [error, setError] = (0,
|
|
3176
|
-
(0,
|
|
3212
|
+
const [data, setData] = (0, import_react9.useState)();
|
|
3213
|
+
const [isLoading, setLoading] = (0, import_react9.useState)(false);
|
|
3214
|
+
const [error, setError] = (0, import_react9.useState)();
|
|
3215
|
+
(0, import_react9.useEffect)(
|
|
3177
3216
|
() => {
|
|
3178
3217
|
setLoading(true);
|
|
3179
3218
|
fn(...deps).then(setData).catch(setError).finally(() => setLoading(false));
|
|
@@ -3323,7 +3362,7 @@ var useIncomingChangesets = (repository, source, target, request) => {
|
|
|
3323
3362
|
};
|
|
3324
3363
|
|
|
3325
3364
|
// src/ApiProvider.tsx
|
|
3326
|
-
var
|
|
3365
|
+
var import_react10 = __toESM(require("react"));
|
|
3327
3366
|
var import_react_query33 = require("react-query");
|
|
3328
3367
|
var import_devtools = require("react-query/devtools");
|
|
3329
3368
|
var queryClient = new import_react_query33.QueryClient({
|
|
@@ -3334,7 +3373,7 @@ var queryClient = new import_react_query33.QueryClient({
|
|
|
3334
3373
|
}
|
|
3335
3374
|
});
|
|
3336
3375
|
var ApiProvider = ({ children, index, me, onMeFetched, onIndexFetched, devtools = true }) => {
|
|
3337
|
-
(0,
|
|
3376
|
+
(0, import_react10.useEffect)(() => {
|
|
3338
3377
|
if (index) {
|
|
3339
3378
|
queryClient.setQueryData("index", index);
|
|
3340
3379
|
if (onIndexFetched) {
|
|
@@ -3342,7 +3381,7 @@ var ApiProvider = ({ children, index, me, onMeFetched, onIndexFetched, devtools
|
|
|
3342
3381
|
}
|
|
3343
3382
|
}
|
|
3344
3383
|
}, [index, onIndexFetched]);
|
|
3345
|
-
(0,
|
|
3384
|
+
(0, import_react10.useEffect)(() => {
|
|
3346
3385
|
if (me) {
|
|
3347
3386
|
queryClient.setQueryData("me", me);
|
|
3348
3387
|
if (onMeFetched) {
|
|
@@ -3350,12 +3389,12 @@ var ApiProvider = ({ children, index, me, onMeFetched, onIndexFetched, devtools
|
|
|
3350
3389
|
}
|
|
3351
3390
|
}
|
|
3352
3391
|
}, [me, onMeFetched]);
|
|
3353
|
-
return /* @__PURE__ */
|
|
3392
|
+
return /* @__PURE__ */ import_react10.default.createElement(import_react_query33.QueryClientProvider, {
|
|
3354
3393
|
client: queryClient
|
|
3355
|
-
}, /* @__PURE__ */
|
|
3394
|
+
}, /* @__PURE__ */ import_react10.default.createElement(LegacyContextProvider, {
|
|
3356
3395
|
onIndexFetched,
|
|
3357
3396
|
onMeFetched
|
|
3358
|
-
}, children), devtools ? /* @__PURE__ */
|
|
3397
|
+
}, children), devtools ? /* @__PURE__ */ import_react10.default.createElement(import_devtools.ReactQueryDevtools, {
|
|
3359
3398
|
initialIsOpen: false
|
|
3360
3399
|
}) : null);
|
|
3361
3400
|
};
|
|
@@ -3365,36 +3404,36 @@ var clearCache = () => {
|
|
|
3365
3404
|
var ApiProvider_default = ApiProvider;
|
|
3366
3405
|
|
|
3367
3406
|
// src/NamespaceAndNameContext.tsx
|
|
3368
|
-
var
|
|
3369
|
-
var Context2 = (0,
|
|
3407
|
+
var import_react11 = __toESM(require("react"));
|
|
3408
|
+
var Context2 = (0, import_react11.createContext)(void 0);
|
|
3370
3409
|
var useNamespaceAndNameContext = () => {
|
|
3371
|
-
const context = (0,
|
|
3410
|
+
const context = (0, import_react11.useContext)(Context2);
|
|
3372
3411
|
if (!context) {
|
|
3373
3412
|
throw new Error("useNamespaceAndNameContext can't be used outside of ApiProvider");
|
|
3374
3413
|
}
|
|
3375
3414
|
return context;
|
|
3376
3415
|
};
|
|
3377
3416
|
var NamespaceAndNameContextProvider = ({ children }) => {
|
|
3378
|
-
const [namespace, setNamespace] = (0,
|
|
3379
|
-
const [name, setName] = (0,
|
|
3380
|
-
return /* @__PURE__ */
|
|
3417
|
+
const [namespace, setNamespace] = (0, import_react11.useState)("");
|
|
3418
|
+
const [name, setName] = (0, import_react11.useState)("");
|
|
3419
|
+
return /* @__PURE__ */ import_react11.default.createElement(Context2.Provider, {
|
|
3381
3420
|
value: { namespace, setNamespace, name, setName }
|
|
3382
3421
|
}, children);
|
|
3383
3422
|
};
|
|
3384
3423
|
|
|
3385
3424
|
// src/RepositoryContext.tsx
|
|
3386
|
-
var
|
|
3387
|
-
var Context3 = (0,
|
|
3388
|
-
var useRepositoryContext = () => (0,
|
|
3389
|
-
var RepositoryContextProvider = ({ repository, children }) => /* @__PURE__ */
|
|
3425
|
+
var import_react12 = __toESM(require("react"));
|
|
3426
|
+
var Context3 = (0, import_react12.createContext)(void 0);
|
|
3427
|
+
var useRepositoryContext = () => (0, import_react12.useContext)(Context3);
|
|
3428
|
+
var RepositoryContextProvider = ({ repository, children }) => /* @__PURE__ */ import_react12.default.createElement(Context3.Provider, {
|
|
3390
3429
|
value: repository
|
|
3391
3430
|
}, children);
|
|
3392
3431
|
|
|
3393
3432
|
// src/RepositoryRevisionContext.tsx
|
|
3394
|
-
var
|
|
3395
|
-
var Context4 = (0,
|
|
3396
|
-
var useRepositoryRevisionContext = () => (0,
|
|
3397
|
-
var RepositoryRevisionContextProvider = ({ revision, children }) => /* @__PURE__ */
|
|
3433
|
+
var import_react13 = __toESM(require("react"));
|
|
3434
|
+
var Context4 = (0, import_react13.createContext)(void 0);
|
|
3435
|
+
var useRepositoryRevisionContext = () => (0, import_react13.useContext)(Context4);
|
|
3436
|
+
var RepositoryRevisionContextProvider = ({ revision, children }) => /* @__PURE__ */ import_react13.default.createElement(Context4.Provider, {
|
|
3398
3437
|
value: revision
|
|
3399
3438
|
}, children);
|
|
3400
3439
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -3427,6 +3466,7 @@ var RepositoryRevisionContextProvider = ({ revision, children }) => /* @__PURE__
|
|
|
3427
3466
|
fetchResourceFromLocationHeader,
|
|
3428
3467
|
getResponseJson,
|
|
3429
3468
|
isBackendError,
|
|
3469
|
+
makeCancelable,
|
|
3430
3470
|
objectLink,
|
|
3431
3471
|
requiredLink,
|
|
3432
3472
|
urls,
|
|
@@ -3442,6 +3482,7 @@ var RepositoryRevisionContextProvider = ({ revision, children }) => /* @__PURE__
|
|
|
3442
3482
|
useBranchDetailsCollection,
|
|
3443
3483
|
useBranches,
|
|
3444
3484
|
useCancelPendingPlugins,
|
|
3485
|
+
useCancellablePromise,
|
|
3445
3486
|
useChangeUserPassword,
|
|
3446
3487
|
useChangeset,
|
|
3447
3488
|
useChangesets,
|
package/build/index.mjs
CHANGED
|
@@ -605,9 +605,38 @@ var useLogout = () => {
|
|
|
605
605
|
import { useMutation as useMutation2, useQuery as useQuery3, useQueryClient as useQueryClient3 } from "react-query";
|
|
606
606
|
|
|
607
607
|
// src/utils.ts
|
|
608
|
+
import { useCallback as useCallback2, useEffect, useRef } from "react";
|
|
608
609
|
var createQueryString = (params) => {
|
|
609
610
|
return Object.keys(params).map((k) => encodeURIComponent(k) + "=" + encodeURIComponent(params[k])).join("&");
|
|
610
611
|
};
|
|
612
|
+
function makeCancelable(promise) {
|
|
613
|
+
let isCanceled = false;
|
|
614
|
+
const wrappedPromise = new Promise((resolve, reject) => {
|
|
615
|
+
promise.then((val) => isCanceled ? reject({ isCanceled }) : resolve(val)).catch((error) => isCanceled ? reject({ isCanceled }) : reject(error));
|
|
616
|
+
});
|
|
617
|
+
return Object.assign(wrappedPromise, {
|
|
618
|
+
cancel() {
|
|
619
|
+
isCanceled = true;
|
|
620
|
+
}
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
function useCancellablePromise() {
|
|
624
|
+
const promises = useRef();
|
|
625
|
+
useEffect(() => {
|
|
626
|
+
promises.current = promises.current || [];
|
|
627
|
+
return function cancel() {
|
|
628
|
+
var _a;
|
|
629
|
+
(_a = promises.current) == null ? void 0 : _a.forEach((p) => p.cancel());
|
|
630
|
+
promises.current = [];
|
|
631
|
+
};
|
|
632
|
+
}, []);
|
|
633
|
+
return useCallback2((p) => {
|
|
634
|
+
var _a;
|
|
635
|
+
const cPromise = makeCancelable(p);
|
|
636
|
+
(_a = promises.current) == null ? void 0 : _a.push(cPromise);
|
|
637
|
+
return cPromise;
|
|
638
|
+
}, []);
|
|
639
|
+
}
|
|
611
640
|
|
|
612
641
|
// src/groups.ts
|
|
613
642
|
var useGroups = (request) => {
|
|
@@ -957,7 +986,7 @@ var branchQueryKey = (repository, branch, ...values) => {
|
|
|
957
986
|
};
|
|
958
987
|
|
|
959
988
|
// src/repositories.ts
|
|
960
|
-
import { useEffect, useState } from "react";
|
|
989
|
+
import { useEffect as useEffect2, useState } from "react";
|
|
961
990
|
var useRepositories = (request) => {
|
|
962
991
|
var _a, _b, _c;
|
|
963
992
|
const queryClient2 = useQueryClient5();
|
|
@@ -1160,7 +1189,7 @@ var EXPORT_MEDIA_TYPE = "application/vnd.scmm-repositoryExport+json;v=2";
|
|
|
1160
1189
|
var useExportRepository = () => {
|
|
1161
1190
|
const queryClient2 = useQueryClient5();
|
|
1162
1191
|
const [intervalId, setIntervalId] = useState();
|
|
1163
|
-
|
|
1192
|
+
useEffect2(() => {
|
|
1164
1193
|
return () => {
|
|
1165
1194
|
if (intervalId) {
|
|
1166
1195
|
clearInterval(intervalId);
|
|
@@ -1270,7 +1299,7 @@ var useNamespaceStrategies = () => {
|
|
|
1270
1299
|
|
|
1271
1300
|
// src/branches.ts
|
|
1272
1301
|
import { useInfiniteQuery, useMutation as useMutation5, useQuery as useQuery7, useQueryClient as useQueryClient6 } from "react-query";
|
|
1273
|
-
import { useEffect as
|
|
1302
|
+
import { useEffect as useEffect3 } from "react";
|
|
1274
1303
|
var useBranches = (repository) => {
|
|
1275
1304
|
const queryClient2 = useQueryClient6();
|
|
1276
1305
|
const link = requiredLink(repository, "branches");
|
|
@@ -1342,7 +1371,7 @@ var useBranchDetailsCollection = (repository, branches) => {
|
|
|
1342
1371
|
}
|
|
1343
1372
|
}
|
|
1344
1373
|
);
|
|
1345
|
-
|
|
1374
|
+
useEffect3(() => {
|
|
1346
1375
|
fetchNextPage();
|
|
1347
1376
|
}, [data, fetchNextPage]);
|
|
1348
1377
|
return {
|
|
@@ -2001,7 +2030,7 @@ var useSetGroupPermissions = (group, permissions) => useSetEntityPermissions(per
|
|
|
2001
2030
|
|
|
2002
2031
|
// src/sources.ts
|
|
2003
2032
|
import { useInfiniteQuery as useInfiniteQuery2 } from "react-query";
|
|
2004
|
-
import { useEffect as
|
|
2033
|
+
import { useEffect as useEffect4 } from "react";
|
|
2005
2034
|
var UseSourcesDefaultOptions = {
|
|
2006
2035
|
enabled: true,
|
|
2007
2036
|
refetchPartialInterval: 3e3,
|
|
@@ -2027,7 +2056,7 @@ var useSources = (repository, opts = UseSourcesDefaultOptions) => {
|
|
|
2027
2056
|
}
|
|
2028
2057
|
);
|
|
2029
2058
|
const file = merge(data == null ? void 0 : data.pages);
|
|
2030
|
-
|
|
2059
|
+
useEffect4(() => {
|
|
2031
2060
|
const intervalId = setInterval(() => {
|
|
2032
2061
|
if (isPartial(file)) {
|
|
2033
2062
|
refetch({
|
|
@@ -2211,7 +2240,7 @@ var merge2 = (diffs) => {
|
|
|
2211
2240
|
|
|
2212
2241
|
// src/notifications.ts
|
|
2213
2242
|
import { useMutation as useMutation12, useQuery as useQuery16, useQueryClient as useQueryClient13 } from "react-query";
|
|
2214
|
-
import { useCallback as
|
|
2243
|
+
import { useCallback as useCallback3, useEffect as useEffect5, useState as useState2 } from "react";
|
|
2215
2244
|
var useNotifications = () => {
|
|
2216
2245
|
var _a;
|
|
2217
2246
|
const { data: me } = useMe();
|
|
@@ -2223,7 +2252,7 @@ var useNotifications = () => {
|
|
|
2223
2252
|
enabled: !!link
|
|
2224
2253
|
}
|
|
2225
2254
|
);
|
|
2226
|
-
const memoizedRefetch =
|
|
2255
|
+
const memoizedRefetch = useCallback3(() => {
|
|
2227
2256
|
return refetch().then((r) => r.data);
|
|
2228
2257
|
}, [refetch]);
|
|
2229
2258
|
return {
|
|
@@ -2271,31 +2300,39 @@ var useNotificationSubscription = (refetch, notificationCollection) => {
|
|
|
2271
2300
|
const [notifications, setNotifications] = useState2([]);
|
|
2272
2301
|
const [disconnectedAt, setDisconnectedAt] = useState2();
|
|
2273
2302
|
const link = (_a = notificationCollection == null ? void 0 : notificationCollection._links.subscribe) == null ? void 0 : _a.href;
|
|
2274
|
-
const
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2303
|
+
const cancelOnUnmount = useCancellablePromise();
|
|
2304
|
+
const onVisible = useCallback3(() => {
|
|
2305
|
+
cancelOnUnmount(refetch()).then(
|
|
2306
|
+
(collection) => {
|
|
2307
|
+
var _a2;
|
|
2308
|
+
if (collection) {
|
|
2309
|
+
const newNotifications = (_a2 = collection._embedded) == null ? void 0 : _a2.notifications.filter((n) => {
|
|
2310
|
+
return disconnectedAt && disconnectedAt < new Date(n.createdAt);
|
|
2311
|
+
});
|
|
2312
|
+
if (newNotifications && newNotifications.length > 0) {
|
|
2313
|
+
setNotifications((previous) => [...previous, ...newNotifications]);
|
|
2314
|
+
}
|
|
2315
|
+
setDisconnectedAt(void 0);
|
|
2316
|
+
}
|
|
2317
|
+
},
|
|
2318
|
+
(reason) => {
|
|
2319
|
+
if (!reason.isCanceled) {
|
|
2320
|
+
throw reason;
|
|
2283
2321
|
}
|
|
2284
|
-
setDisconnectedAt(void 0);
|
|
2285
2322
|
}
|
|
2286
|
-
|
|
2287
|
-
}, [disconnectedAt, refetch]);
|
|
2288
|
-
const onHide =
|
|
2323
|
+
);
|
|
2324
|
+
}, [cancelOnUnmount, disconnectedAt, refetch]);
|
|
2325
|
+
const onHide = useCallback3(() => {
|
|
2289
2326
|
setDisconnectedAt(new Date());
|
|
2290
2327
|
}, []);
|
|
2291
|
-
const received =
|
|
2328
|
+
const received = useCallback3(
|
|
2292
2329
|
(notification) => {
|
|
2293
2330
|
setNotifications((previous) => [...previous, notification]);
|
|
2294
2331
|
refetch();
|
|
2295
2332
|
},
|
|
2296
2333
|
[refetch]
|
|
2297
2334
|
);
|
|
2298
|
-
|
|
2335
|
+
useEffect5(() => {
|
|
2299
2336
|
if (link) {
|
|
2300
2337
|
let cancel;
|
|
2301
2338
|
const disconnect = () => {
|
|
@@ -2328,13 +2365,13 @@ var useNotificationSubscription = (refetch, notificationCollection) => {
|
|
|
2328
2365
|
};
|
|
2329
2366
|
}
|
|
2330
2367
|
}, [link, onVisible, onHide, received]);
|
|
2331
|
-
const remove =
|
|
2368
|
+
const remove = useCallback3(
|
|
2332
2369
|
(notification) => {
|
|
2333
2370
|
setNotifications((oldNotifications) => [...oldNotifications.filter((n) => !isEqual(n, notification))]);
|
|
2334
2371
|
},
|
|
2335
2372
|
[setNotifications]
|
|
2336
2373
|
);
|
|
2337
|
-
const clear =
|
|
2374
|
+
const clear = useCallback3(() => {
|
|
2338
2375
|
setNotifications([]);
|
|
2339
2376
|
}, [setNotifications]);
|
|
2340
2377
|
return {
|
|
@@ -2409,7 +2446,7 @@ var useAlerts = () => {
|
|
|
2409
2446
|
|
|
2410
2447
|
// src/configLink.ts
|
|
2411
2448
|
import { useMutation as useMutation13, useQuery as useQuery18, useQueryClient as useQueryClient14 } from "react-query";
|
|
2412
|
-
import { useCallback as
|
|
2449
|
+
import { useCallback as useCallback4 } from "react";
|
|
2413
2450
|
var useConfigLink = (link) => {
|
|
2414
2451
|
const queryClient2 = useQueryClient14();
|
|
2415
2452
|
const queryKey = ["configLink", link];
|
|
@@ -2434,7 +2471,7 @@ var useConfigLink = (link) => {
|
|
|
2434
2471
|
}
|
|
2435
2472
|
);
|
|
2436
2473
|
const isReadOnly = !(data == null ? void 0 : data.configuration._links.update);
|
|
2437
|
-
const update =
|
|
2474
|
+
const update = useCallback4(
|
|
2438
2475
|
(configuration) => {
|
|
2439
2476
|
if (data && !isReadOnly) {
|
|
2440
2477
|
return mutateAsync({
|
|
@@ -2632,7 +2669,7 @@ var useAnnotations = (repository, revision, file) => {
|
|
|
2632
2669
|
|
|
2633
2670
|
// src/search.ts
|
|
2634
2671
|
import { useQueries, useQuery as useQuery25 } from "react-query";
|
|
2635
|
-
import { useEffect as
|
|
2672
|
+
import { useEffect as useEffect6, useState as useState3 } from "react";
|
|
2636
2673
|
|
|
2637
2674
|
// src/help/search/syntax.en.ts
|
|
2638
2675
|
var syntax_en_default = `### Modifiers
|
|
@@ -2991,7 +3028,7 @@ var useObserveAsync = (fn, deps) => {
|
|
|
2991
3028
|
const [data, setData] = useState3();
|
|
2992
3029
|
const [isLoading, setLoading] = useState3(false);
|
|
2993
3030
|
const [error, setError] = useState3();
|
|
2994
|
-
|
|
3031
|
+
useEffect6(
|
|
2995
3032
|
() => {
|
|
2996
3033
|
setLoading(true);
|
|
2997
3034
|
fn(...deps).then(setData).catch(setError).finally(() => setLoading(false));
|
|
@@ -3141,7 +3178,7 @@ var useIncomingChangesets = (repository, source, target, request) => {
|
|
|
3141
3178
|
};
|
|
3142
3179
|
|
|
3143
3180
|
// src/ApiProvider.tsx
|
|
3144
|
-
import React2, { useEffect as
|
|
3181
|
+
import React2, { useEffect as useEffect7 } from "react";
|
|
3145
3182
|
import { QueryClient as QueryClient4, QueryClientProvider } from "react-query";
|
|
3146
3183
|
import { ReactQueryDevtools } from "react-query/devtools";
|
|
3147
3184
|
var queryClient = new QueryClient4({
|
|
@@ -3152,7 +3189,7 @@ var queryClient = new QueryClient4({
|
|
|
3152
3189
|
}
|
|
3153
3190
|
});
|
|
3154
3191
|
var ApiProvider = ({ children, index, me, onMeFetched, onIndexFetched, devtools = true }) => {
|
|
3155
|
-
|
|
3192
|
+
useEffect7(() => {
|
|
3156
3193
|
if (index) {
|
|
3157
3194
|
queryClient.setQueryData("index", index);
|
|
3158
3195
|
if (onIndexFetched) {
|
|
@@ -3160,7 +3197,7 @@ var ApiProvider = ({ children, index, me, onMeFetched, onIndexFetched, devtools
|
|
|
3160
3197
|
}
|
|
3161
3198
|
}
|
|
3162
3199
|
}, [index, onIndexFetched]);
|
|
3163
|
-
|
|
3200
|
+
useEffect7(() => {
|
|
3164
3201
|
if (me) {
|
|
3165
3202
|
queryClient.setQueryData("me", me);
|
|
3166
3203
|
if (onMeFetched) {
|
|
@@ -3244,6 +3281,7 @@ export {
|
|
|
3244
3281
|
fetchResourceFromLocationHeader,
|
|
3245
3282
|
getResponseJson,
|
|
3246
3283
|
isBackendError,
|
|
3284
|
+
makeCancelable,
|
|
3247
3285
|
objectLink,
|
|
3248
3286
|
requiredLink,
|
|
3249
3287
|
urls_exports as urls,
|
|
@@ -3259,6 +3297,7 @@ export {
|
|
|
3259
3297
|
useBranchDetailsCollection,
|
|
3260
3298
|
useBranches,
|
|
3261
3299
|
useCancelPendingPlugins,
|
|
3300
|
+
useCancellablePromise,
|
|
3262
3301
|
useChangeUserPassword,
|
|
3263
3302
|
useChangeset,
|
|
3264
3303
|
useChangesets,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scm-manager/ui-api",
|
|
3
|
-
"version": "2.43.
|
|
3
|
+
"version": "2.43.2-20230425-175303",
|
|
4
4
|
"description": "React hook api for the SCM-Manager backend",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"module": "build/index.mjs",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"tsup": "^5.12.6"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@scm-manager/ui-types": "2.43.
|
|
32
|
+
"@scm-manager/ui-types": "2.43.2-20230425-175303",
|
|
33
33
|
"fetch-mock-jest": "^1.5.1",
|
|
34
34
|
"gitdiff-parser": "^0.2.2",
|
|
35
35
|
"query-string": "6.14.1",
|