@scm-manager/ui-api 2.44.2 → 2.44.3-20230527-064447

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _scm_manager_ui_types from '@scm-manager/ui-types';
2
- import { IndexResources, HalRepresentation, Me, GroupCollection, Group, GroupCreation, UserCollection, User, PermissionOverview, UserCreation, SelectValue, Namespace, RepositoryCollection, RepositoryCreation, Repository, RepositoryTypeCollection, ExportInfo, Paths, NamespaceCollection, NamespaceStrategies, BranchCollection, Branch, BranchDetails, BranchCreation, NamespaceAndName, ChangesetCollection, Changeset, TagCollection, Tag, Config, UpdateInfo, PluginCollection, PendingPlugins, Plugin, RepositoryRoleCollection, RepositoryRole, RepositoryRoleCreation, RepositoryVerbs, PermissionCollection, PermissionCreateEntry, Permission, GlobalPermissionsCollection, File as File$1, RepositoryType, RepositoryUrlImport, Diff, NotificationCollection, Notification, AlertsResponse, ApiKeysCollection, ApiKeyCreation, ApiKeyWithToken, ApiKey, PublicKeysCollection, PublicKeyCreation, PublicKey, ContentType, AnnotatedSource, SearchableType, QueryResult, LoginInfo, PluginCenterAuthenticationInfo } from '@scm-manager/ui-types';
2
+ import { IndexResources, HalRepresentation, Me, GroupCollection, Group, GroupCreation, UserCollection, User, PermissionOverview, UserCreation, SelectValue, Namespace, RepositoryCollection, RepositoryCreation, Repository, RepositoryTypeCollection, ExportInfo, Paths, NamespaceCollection, NamespaceStrategies, BranchCollection, Branch, BranchDetails, BranchCreation, NamespaceAndName, ChangesetCollection, Changeset, TagCollection, Tag, Config, UpdateInfo, PluginCollection, PendingPlugins, Plugin, RepositoryRoleCollection, RepositoryRole, RepositoryRoleCreation, RepositoryVerbs, PermissionCollection, PermissionCreateEntry, Permission, GlobalPermissionsCollection, File as File$1, RepositoryType, RepositoryUrlImport, Diff, NotificationCollection, Notification, AlertsResponse, ApiKeysCollection, ApiKeyCreation, ApiKeyWithToken, ApiKey, PublicKeysCollection, PublicKeyCreation, PublicKey, ContentType, AnnotatedSource, SearchableType, QueryResult, LoginInfo, PluginCenterAuthenticationInfo, Option, AutocompleteObject } from '@scm-manager/ui-types';
3
3
  export { ContentType } from '@scm-manager/ui-types';
4
4
  import * as react_query from 'react-query';
5
5
  import { UseQueryOptions } from 'react-query/types/react/types';
@@ -736,6 +736,10 @@ declare function useCancellablePromise(): <T>(p: Promise<T>) => CancelablePromis
736
736
  declare const requiredLink: (object: HalRepresentation, name: string, subName?: string) => string;
737
737
  declare const objectLink: (object: HalRepresentation, name: string) => string | null;
738
738
 
739
+ declare const useGroupOptions: (query?: string) => react_query.UseQueryResult<Option<AutocompleteObject>[], Error>;
740
+ declare const useNamespaceOptions: (query?: string) => react_query.UseQueryResult<Option<AutocompleteObject>[], Error>;
741
+ declare const useUserOptions: (query?: string) => react_query.UseQueryResult<Option<AutocompleteObject>[], Error>;
742
+
739
743
  declare type BaseContext = {
740
744
  onIndexFetched?: (index: IndexResources) => void;
741
745
  onMeFetched?: (me: Me) => void;
@@ -774,4 +778,4 @@ declare const RepositoryRevisionContextProvider: FC<{
774
778
  revision?: string;
775
779
  }>;
776
780
 
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 };
781
+ 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, useGroupOptions, useGroupPermissions, useGroupSuggestions, useGroups, useHistory, useImportFullRepository, useImportLog, useImportRepositoryFromBundle, useImportRepositoryFromUrl, useIncomingChangesets, useIndex, useIndexJsonResource, useIndexLink, useIndexLinks, useInstallPlugin, useInstalledPlugins, useJsonResource, useLegacyContext, useLogin, useLoginInfo, useLogout, useMe, useNamespace, useNamespaceAndNameContext, useNamespaceOptions, 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, useUserOptions, useUserPermissionOverview, useUserPermissions, useUserSuggestions, useUsers, useVersion, waitForRestartAfter };
package/build/index.js CHANGED
@@ -106,6 +106,7 @@ __export(src_exports, {
106
106
  useExportRepository: () => useExportRepository,
107
107
  useFileContent: () => useFileContent,
108
108
  useGroup: () => useGroup,
109
+ useGroupOptions: () => useGroupOptions,
109
110
  useGroupPermissions: () => useGroupPermissions,
110
111
  useGroupSuggestions: () => useGroupSuggestions,
111
112
  useGroups: () => useGroups,
@@ -129,6 +130,7 @@ __export(src_exports, {
129
130
  useMe: () => useMe,
130
131
  useNamespace: () => useNamespace,
131
132
  useNamespaceAndNameContext: () => useNamespaceAndNameContext,
133
+ useNamespaceOptions: () => useNamespaceOptions,
132
134
  useNamespaceStrategies: () => useNamespaceStrategies,
133
135
  useNamespaceSuggestions: () => useNamespaceSuggestions,
134
136
  useNamespaces: () => useNamespaces,
@@ -179,6 +181,7 @@ __export(src_exports, {
179
181
  useUpdateRepositoryRole: () => useUpdateRepositoryRole,
180
182
  useUpdateUser: () => useUpdateUser,
181
183
  useUser: () => useUser,
184
+ useUserOptions: () => useUserOptions,
182
185
  useUserPermissionOverview: () => useUserPermissionOverview,
183
186
  useUserPermissions: () => useUserPermissions,
184
187
  useUserSuggestions: () => useUserSuggestions,
@@ -3361,11 +3364,65 @@ var useIncomingChangesets = (repository, source, target, request) => {
3361
3364
  );
3362
3365
  };
3363
3366
 
3367
+ // src/useAutocompleteOptions.ts
3368
+ var import_react_query33 = require("react-query");
3369
+ var import_react_i18next = require("react-i18next");
3370
+ var defaultLabelFactory = (element) => element.displayName ? `${element.displayName} (${element.id})` : element.id;
3371
+ function useAutocompleteOptions(query = "", link, options = {}) {
3372
+ const [t] = (0, import_react_i18next.useTranslation)("commons");
3373
+ return (0, import_react_query33.useQuery)(
3374
+ ["options", link, query],
3375
+ () => apiClient.get(link + "?q=" + query).then((r) => r.json()).then((json) => {
3376
+ const result = json.map((element) => ({
3377
+ value: element,
3378
+ label: options.labelFactory ? options.labelFactory(element) : defaultLabelFactory(element)
3379
+ }));
3380
+ if (options.allowArbitraryValues && !result.some(
3381
+ (opt) => {
3382
+ var _a;
3383
+ return opt.value.id === query || ((_a = opt.value.displayName) == null ? void 0 : _a.toLowerCase()) === query.toLowerCase();
3384
+ }
3385
+ )) {
3386
+ result.unshift({
3387
+ value: options.allowArbitraryValues(query),
3388
+ label: query,
3389
+ displayValue: t("form.combobox.arbitraryDisplayValue", { query })
3390
+ });
3391
+ }
3392
+ return result;
3393
+ }),
3394
+ {
3395
+ enabled: query.length > 1 && !!link
3396
+ }
3397
+ );
3398
+ }
3399
+ var useGroupOptions = (query) => {
3400
+ const indexLinks = useIndexLinks();
3401
+ const autocompleteLink = indexLinks.autocomplete.find((i) => i.name === "groups");
3402
+ return useAutocompleteOptions(query, autocompleteLink == null ? void 0 : autocompleteLink.href, {
3403
+ allowArbitraryValues: (query2) => ({ id: query2, displayName: query2 })
3404
+ });
3405
+ };
3406
+ var useNamespaceOptions = (query) => {
3407
+ const indexLinks = useIndexLinks();
3408
+ const autocompleteLink = indexLinks.autocomplete.find((i) => i.name === "namespaces");
3409
+ return useAutocompleteOptions(query, autocompleteLink == null ? void 0 : autocompleteLink.href, {
3410
+ allowArbitraryValues: (query2) => ({ id: query2, displayName: query2 })
3411
+ });
3412
+ };
3413
+ var useUserOptions = (query) => {
3414
+ const indexLinks = useIndexLinks();
3415
+ const autocompleteLink = indexLinks.autocomplete.find((i) => i.name === "users");
3416
+ return useAutocompleteOptions(query, autocompleteLink == null ? void 0 : autocompleteLink.href, {
3417
+ allowArbitraryValues: (query2) => ({ id: query2, displayName: query2 })
3418
+ });
3419
+ };
3420
+
3364
3421
  // src/ApiProvider.tsx
3365
3422
  var import_react10 = __toESM(require("react"));
3366
- var import_react_query33 = require("react-query");
3423
+ var import_react_query34 = require("react-query");
3367
3424
  var import_devtools = require("react-query/devtools");
3368
- var queryClient = new import_react_query33.QueryClient({
3425
+ var queryClient = new import_react_query34.QueryClient({
3369
3426
  defaultOptions: {
3370
3427
  queries: {
3371
3428
  retry: false
@@ -3389,7 +3446,7 @@ var ApiProvider = ({ children, index, me, onMeFetched, onIndexFetched, devtools
3389
3446
  }
3390
3447
  }
3391
3448
  }, [me, onMeFetched]);
3392
- return /* @__PURE__ */ import_react10.default.createElement(import_react_query33.QueryClientProvider, {
3449
+ return /* @__PURE__ */ import_react10.default.createElement(import_react_query34.QueryClientProvider, {
3393
3450
  client: queryClient
3394
3451
  }, /* @__PURE__ */ import_react10.default.createElement(LegacyContextProvider, {
3395
3452
  onIndexFetched,
@@ -3518,6 +3575,7 @@ var RepositoryRevisionContextProvider = ({ revision, children }) => /* @__PURE__
3518
3575
  useExportRepository,
3519
3576
  useFileContent,
3520
3577
  useGroup,
3578
+ useGroupOptions,
3521
3579
  useGroupPermissions,
3522
3580
  useGroupSuggestions,
3523
3581
  useGroups,
@@ -3541,6 +3599,7 @@ var RepositoryRevisionContextProvider = ({ revision, children }) => /* @__PURE__
3541
3599
  useMe,
3542
3600
  useNamespace,
3543
3601
  useNamespaceAndNameContext,
3602
+ useNamespaceOptions,
3544
3603
  useNamespaceStrategies,
3545
3604
  useNamespaceSuggestions,
3546
3605
  useNamespaces,
@@ -3591,6 +3650,7 @@ var RepositoryRevisionContextProvider = ({ revision, children }) => /* @__PURE__
3591
3650
  useUpdateRepositoryRole,
3592
3651
  useUpdateUser,
3593
3652
  useUser,
3653
+ useUserOptions,
3594
3654
  useUserPermissionOverview,
3595
3655
  useUserPermissions,
3596
3656
  useUserSuggestions,
package/build/index.mjs CHANGED
@@ -3177,6 +3177,60 @@ var useIncomingChangesets = (repository, source, target, request) => {
3177
3177
  );
3178
3178
  };
3179
3179
 
3180
+ // src/useAutocompleteOptions.ts
3181
+ import { useQuery as useQuery29 } from "react-query";
3182
+ import { useTranslation } from "react-i18next";
3183
+ var defaultLabelFactory = (element) => element.displayName ? `${element.displayName} (${element.id})` : element.id;
3184
+ function useAutocompleteOptions(query = "", link, options = {}) {
3185
+ const [t] = useTranslation("commons");
3186
+ return useQuery29(
3187
+ ["options", link, query],
3188
+ () => apiClient.get(link + "?q=" + query).then((r) => r.json()).then((json) => {
3189
+ const result = json.map((element) => ({
3190
+ value: element,
3191
+ label: options.labelFactory ? options.labelFactory(element) : defaultLabelFactory(element)
3192
+ }));
3193
+ if (options.allowArbitraryValues && !result.some(
3194
+ (opt) => {
3195
+ var _a;
3196
+ return opt.value.id === query || ((_a = opt.value.displayName) == null ? void 0 : _a.toLowerCase()) === query.toLowerCase();
3197
+ }
3198
+ )) {
3199
+ result.unshift({
3200
+ value: options.allowArbitraryValues(query),
3201
+ label: query,
3202
+ displayValue: t("form.combobox.arbitraryDisplayValue", { query })
3203
+ });
3204
+ }
3205
+ return result;
3206
+ }),
3207
+ {
3208
+ enabled: query.length > 1 && !!link
3209
+ }
3210
+ );
3211
+ }
3212
+ var useGroupOptions = (query) => {
3213
+ const indexLinks = useIndexLinks();
3214
+ const autocompleteLink = indexLinks.autocomplete.find((i) => i.name === "groups");
3215
+ return useAutocompleteOptions(query, autocompleteLink == null ? void 0 : autocompleteLink.href, {
3216
+ allowArbitraryValues: (query2) => ({ id: query2, displayName: query2 })
3217
+ });
3218
+ };
3219
+ var useNamespaceOptions = (query) => {
3220
+ const indexLinks = useIndexLinks();
3221
+ const autocompleteLink = indexLinks.autocomplete.find((i) => i.name === "namespaces");
3222
+ return useAutocompleteOptions(query, autocompleteLink == null ? void 0 : autocompleteLink.href, {
3223
+ allowArbitraryValues: (query2) => ({ id: query2, displayName: query2 })
3224
+ });
3225
+ };
3226
+ var useUserOptions = (query) => {
3227
+ const indexLinks = useIndexLinks();
3228
+ const autocompleteLink = indexLinks.autocomplete.find((i) => i.name === "users");
3229
+ return useAutocompleteOptions(query, autocompleteLink == null ? void 0 : autocompleteLink.href, {
3230
+ allowArbitraryValues: (query2) => ({ id: query2, displayName: query2 })
3231
+ });
3232
+ };
3233
+
3180
3234
  // src/ApiProvider.tsx
3181
3235
  import React2, { useEffect as useEffect7 } from "react";
3182
3236
  import { QueryClient as QueryClient4, QueryClientProvider } from "react-query";
@@ -3333,6 +3387,7 @@ export {
3333
3387
  useExportRepository,
3334
3388
  useFileContent,
3335
3389
  useGroup,
3390
+ useGroupOptions,
3336
3391
  useGroupPermissions,
3337
3392
  useGroupSuggestions,
3338
3393
  useGroups,
@@ -3356,6 +3411,7 @@ export {
3356
3411
  useMe,
3357
3412
  useNamespace,
3358
3413
  useNamespaceAndNameContext,
3414
+ useNamespaceOptions,
3359
3415
  useNamespaceStrategies,
3360
3416
  useNamespaceSuggestions,
3361
3417
  useNamespaces,
@@ -3406,6 +3462,7 @@ export {
3406
3462
  useUpdateRepositoryRole,
3407
3463
  useUpdateUser,
3408
3464
  useUser,
3465
+ useUserOptions,
3409
3466
  useUserPermissionOverview,
3410
3467
  useUserPermissions,
3411
3468
  useUserSuggestions,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scm-manager/ui-api",
3
- "version": "2.44.2",
3
+ "version": "2.44.3-20230527-064447",
4
4
  "description": "React hook api for the SCM-Manager backend",
5
5
  "main": "build/index.js",
6
6
  "module": "build/index.mjs",
@@ -29,13 +29,14 @@
29
29
  "tsup": "^5.12.6"
30
30
  },
31
31
  "dependencies": {
32
- "@scm-manager/ui-types": "2.44.2",
32
+ "@scm-manager/ui-types": "2.44.3-20230527-064447",
33
33
  "fetch-mock-jest": "^1.5.1",
34
34
  "gitdiff-parser": "^0.2.2",
35
35
  "query-string": "6.14.1",
36
36
  "react": "^17.0.1",
37
37
  "react-query": "^3.25.1",
38
- "react-router-dom": "^5.3.1"
38
+ "react-router-dom": "^5.3.1",
39
+ "react-i18next": "11"
39
40
  },
40
41
  "babel": {
41
42
  "presets": [