@scality/data-browser-library 1.0.0-preview.13 → 1.0.0-preview.16
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/components/DataBrowserUI.d.ts +6 -14
- package/dist/components/DataBrowserUI.js +79 -55
- package/dist/components/Editor.d.ts +1 -1
- package/dist/components/Editor.js +3 -3
- package/dist/components/__tests__/BucketCreate.test.js +102 -102
- package/dist/components/__tests__/BucketDetails.test.js +122 -123
- package/dist/components/__tests__/BucketLifecycleFormPage.test.js +177 -177
- package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
- package/dist/components/__tests__/BucketList.test.js +175 -176
- package/dist/components/__tests__/BucketNotificationCreatePage.test.js +84 -84
- package/dist/components/__tests__/BucketOverview.test.js +257 -201
- package/dist/components/__tests__/BucketPolicyPage.test.js +62 -62
- package/dist/components/__tests__/BucketReplicationFormPage.test.js +542 -542
- package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
- package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
- package/dist/components/__tests__/DeleteBucketButton.test.js +62 -62
- package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
- package/dist/components/__tests__/DeleteObjectButton.test.js +63 -63
- package/dist/components/__tests__/EmptyBucketButton.test.js +56 -56
- package/dist/components/__tests__/MetadataSearch.test.js +65 -65
- package/dist/components/__tests__/ObjectList.test.js +252 -251
- package/dist/components/__tests__/UploadButton.test.js +45 -45
- package/dist/components/buckets/BucketCreate.d.ts +2 -2
- package/dist/components/buckets/BucketCreate.js +41 -41
- package/dist/components/buckets/BucketDetails.d.ts +2 -2
- package/dist/components/buckets/BucketDetails.js +48 -36
- package/dist/components/buckets/BucketLifecycleFormPage.js +161 -160
- package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
- package/dist/components/buckets/BucketLifecycleList.js +46 -46
- package/dist/components/buckets/BucketList.d.ts +2 -2
- package/dist/components/buckets/BucketList.js +28 -27
- package/dist/components/buckets/BucketLocation.js +3 -3
- package/dist/components/buckets/BucketOverview.d.ts +1 -1
- package/dist/components/buckets/BucketOverview.js +64 -65
- package/dist/components/buckets/BucketPage.js +19 -11
- package/dist/components/buckets/BucketPolicyButton.js +2 -2
- package/dist/components/buckets/BucketPolicyPage.js +27 -25
- package/dist/components/buckets/BucketReplicationFormPage.js +133 -132
- package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
- package/dist/components/buckets/BucketReplicationList.js +41 -41
- package/dist/components/buckets/BucketVersioning.js +11 -11
- package/dist/components/buckets/DeleteBucketButton.js +5 -5
- package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
- package/dist/components/buckets/DeleteBucketConfigRuleButton.js +1 -1
- package/dist/components/buckets/EmptyBucketButton.js +19 -19
- package/dist/components/buckets/EmptyBucketSummary.d.ts +1 -1
- package/dist/components/buckets/EmptyBucketSummary.js +1 -1
- package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
- package/dist/components/buckets/__tests__/BucketVersioning.test.js +45 -45
- package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +34 -33
- package/dist/components/buckets/notifications/EventsSection.js +144 -28
- package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
- package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
- package/dist/components/buckets/notifications/events.d.ts +71 -7
- package/dist/components/buckets/notifications/events.js +98 -16
- package/dist/components/index.d.ts +24 -22
- package/dist/components/index.js +5 -3
- package/dist/components/layouts/ArrowNavigation.d.ts +1 -2
- package/dist/components/layouts/ArrowNavigation.js +3 -3
- package/dist/components/layouts/BrowserPageLayout.d.ts +2 -3
- package/dist/components/layouts/BrowserPageLayout.js +1 -1
- package/dist/components/objects/CreateFolderButton.d.ts +2 -2
- package/dist/components/objects/CreateFolderButton.js +9 -9
- package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
- package/dist/components/objects/DeleteObjectButton.js +20 -20
- package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +1 -1
- package/dist/components/objects/ObjectDetails/ObjectMetadata.js +56 -56
- package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +1 -1
- package/dist/components/objects/ObjectDetails/ObjectSummary.js +39 -39
- package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +1 -1
- package/dist/components/objects/ObjectDetails/ObjectTags.js +25 -25
- package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +119 -119
- package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +211 -211
- package/dist/components/objects/ObjectDetails/index.d.ts +1 -1
- package/dist/components/objects/ObjectDetails/index.js +30 -30
- package/dist/components/objects/ObjectList.d.ts +5 -5
- package/dist/components/objects/ObjectList.js +113 -112
- package/dist/components/objects/ObjectLock/EditRetentionButton.js +3 -3
- package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +14 -14
- package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
- package/dist/components/objects/ObjectLock/ObjectLockSettings.js +29 -28
- package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
- package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
- package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +50 -50
- package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +77 -77
- package/dist/components/objects/ObjectPage.js +5 -4
- package/dist/components/objects/UploadButton.d.ts +3 -3
- package/dist/components/objects/UploadButton.js +5 -5
- package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
- package/dist/components/providers/DataBrowserProvider.js +60 -38
- package/dist/components/providers/QueryProvider.d.ts +9 -0
- package/dist/components/providers/QueryProvider.js +22 -0
- package/dist/components/search/MetadataSearch.js +26 -25
- package/dist/components/search/SearchHints.js +1 -1
- package/dist/components/ui/ArrayFieldActions.js +4 -4
- package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +1 -1
- package/dist/components/ui/ConfirmDeleteRuleModal.js +1 -1
- package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
- package/dist/components/ui/DeleteObjectModalContent.js +12 -12
- package/dist/components/ui/FilterFormSection.d.ts +2 -2
- package/dist/components/ui/FilterFormSection.js +29 -29
- package/dist/components/ui/Search.elements.d.ts +1 -1
- package/dist/components/ui/Search.elements.js +7 -7
- package/dist/components/ui/Table.elements.js +5 -5
- package/dist/config/factory.d.ts +23 -10
- package/dist/config/factory.js +22 -7
- package/dist/config/types.d.ts +20 -3
- package/dist/contexts/DataBrowserUICustomizationContext.d.ts +2 -2
- package/dist/hooks/__tests__/useISVBucketDetection.test.js +42 -42
- package/dist/hooks/__tests__/useIsBucketEmpty.test.js +25 -25
- package/dist/hooks/bucketConfiguration.d.ts +1 -1
- package/dist/hooks/bucketConfiguration.js +48 -48
- package/dist/hooks/bucketOperations.d.ts +1 -1
- package/dist/hooks/bucketOperations.js +6 -6
- package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +78 -78
- package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +78 -78
- package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +42 -42
- package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +61 -61
- package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +63 -63
- package/dist/hooks/factories/index.d.ts +4 -4
- package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
- package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +15 -12
- package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
- package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
- package/dist/hooks/factories/useCreateS3MutationHook.js +6 -1
- package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
- package/dist/hooks/factories/useCreateS3QueryHook.js +8 -5
- package/dist/hooks/index.d.ts +16 -13
- package/dist/hooks/index.js +4 -1
- package/dist/hooks/loginOperations.d.ts +1 -1
- package/dist/hooks/loginOperations.js +1 -1
- package/dist/hooks/objectOperations.d.ts +2 -2
- package/dist/hooks/objectOperations.js +49 -49
- package/dist/hooks/presignedOperations.d.ts +2 -2
- package/dist/hooks/presignedOperations.js +3 -3
- package/dist/hooks/useBatchObjectLegalHold.js +7 -4
- package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
- package/dist/hooks/useDataBrowserNavigate.js +24 -0
- package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
- package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
- package/dist/hooks/useEmptyBucket.js +10 -10
- package/dist/hooks/useFeatures.d.ts +7 -0
- package/dist/hooks/useFeatures.js +8 -0
- package/dist/hooks/useISVBucketDetection.js +5 -5
- package/dist/hooks/useIsBucketEmpty.js +4 -4
- package/dist/hooks/useLoginMutation.d.ts +1 -1
- package/dist/hooks/useLoginMutation.js +1 -1
- package/dist/hooks/useS3Client.d.ts +6 -0
- package/dist/hooks/useS3Client.js +3 -2
- package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
- package/dist/hooks/useS3ConfigSwitch.js +37 -0
- package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
- package/dist/hooks/useSupportedNotificationEvents.js +8 -0
- package/dist/index.d.ts +6 -6
- package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
- package/dist/test/msw/handlers/deleteBucket.js +20 -10
- package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
- package/dist/test/msw/handlers/getBucketAcl.js +29 -17
- package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
- package/dist/test/msw/handlers/getBucketLocation.js +29 -15
- package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
- package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
- package/dist/test/msw/handlers/headObject.d.ts +1 -1
- package/dist/test/msw/handlers/headObject.js +31 -13
- package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
- package/dist/test/msw/handlers/listBuckets.js +5 -3
- package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
- package/dist/test/msw/handlers/listObjectVersions.js +38 -26
- package/dist/test/msw/handlers/listObjects.d.ts +1 -1
- package/dist/test/msw/handlers/listObjects.js +35 -23
- package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
- package/dist/test/msw/handlers/objectLegalHold.js +31 -16
- package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
- package/dist/test/msw/handlers/objectRetention.js +31 -17
- package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
- package/dist/test/msw/handlers/putBucketAcl.js +29 -14
- package/dist/test/msw/handlers/putObject.d.ts +1 -1
- package/dist/test/msw/handlers/putObject.js +27 -12
- package/dist/test/msw/handlers.d.ts +3 -3
- package/dist/test/msw/handlers.js +72 -49
- package/dist/test/msw/index.d.ts +2 -2
- package/dist/test/msw/server.d.ts +1 -1
- package/dist/test/msw/server.js +1 -1
- package/dist/test/msw/utils.js +2 -2
- package/dist/test/setup.d.ts +1 -1
- package/dist/test/setup.js +19 -19
- package/dist/test/testUtils.d.ts +9 -15
- package/dist/test/testUtils.js +73 -91
- package/dist/test/utils/errorHandling.test.js +119 -119
- package/dist/types/index.d.ts +6 -31
- package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
- package/dist/utils/__tests__/s3ConfigIdentifier.test.js +429 -0
- package/dist/utils/constants.js +8 -8
- package/dist/utils/deletion/index.d.ts +2 -2
- package/dist/utils/deletion/messages.d.ts +1 -1
- package/dist/utils/deletion/messages.js +4 -4
- package/dist/utils/errorHandling.d.ts +3 -3
- package/dist/utils/errorHandling.js +6 -6
- package/dist/utils/hooks.js +8 -8
- package/dist/utils/index.d.ts +5 -4
- package/dist/utils/index.js +2 -0
- package/dist/utils/proxyMiddleware.d.ts +1 -1
- package/dist/utils/proxyMiddleware.js +6 -11
- package/dist/utils/s3Client.d.ts +2 -2
- package/dist/utils/s3Client.js +1 -1
- package/dist/utils/s3ConfigIdentifier.d.ts +68 -0
- package/dist/utils/s3ConfigIdentifier.js +55 -0
- package/dist/utils/s3RuleUtils.d.ts +5 -5
- package/dist/utils/s3RuleUtils.js +17 -17
- package/package.json +2 -2
- package/dist/utils/useFeatures.d.ts +0 -1
- package/dist/utils/useFeatures.js +0 -7
package/dist/utils/s3Client.js
CHANGED
|
@@ -5,7 +5,7 @@ function extractProxyConfig(config) {
|
|
|
5
5
|
if (config.useDevProxy && config.realS3Host && config.proxyPath) return {
|
|
6
6
|
realS3Host: config.realS3Host,
|
|
7
7
|
proxyBasePath: config.proxyPath,
|
|
8
|
-
proxyHost: config.proxyHost ||
|
|
8
|
+
proxyHost: config.proxyHost || 'localhost',
|
|
9
9
|
proxyPort: config.proxyPort || 8084
|
|
10
10
|
};
|
|
11
11
|
const proxyConfig = S3ConfigurationFactory.createProxyConfiguration();
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { GetConfigFunction } from '../types';
|
|
2
|
+
export declare const ANONYMOUS_S3_CONFIG_IDENTIFIER = "anonymous-s3-config";
|
|
3
|
+
/**
|
|
4
|
+
* Hashes a session token using FNV-1a 64-bit algorithm for query cache isolation.
|
|
5
|
+
*
|
|
6
|
+
* Note: This is NOT a cryptographic hash - it's designed for collision resistance
|
|
7
|
+
* in the context of query key uniqueness, not security.
|
|
8
|
+
*
|
|
9
|
+
* The input is trimmed before hashing to ensure consistent results regardless of
|
|
10
|
+
* whitespace variations.
|
|
11
|
+
*
|
|
12
|
+
* @param sessionToken - AWS session token string to hash
|
|
13
|
+
* @returns A 16-character zero-padded hexadecimal string (64-bit hash)
|
|
14
|
+
*/
|
|
15
|
+
export declare const hashSessionToken: (sessionToken: string) => string;
|
|
16
|
+
/**
|
|
17
|
+
* Normalizes a region string for consistent comparison.
|
|
18
|
+
*
|
|
19
|
+
* @param region - AWS region string
|
|
20
|
+
* @returns Normalized region (trimmed and lowercase)
|
|
21
|
+
*/
|
|
22
|
+
export declare const normalizeRegion: (region: string) => string;
|
|
23
|
+
/**
|
|
24
|
+
* Normalizes an S3 endpoint URL for consistent comparison.
|
|
25
|
+
*
|
|
26
|
+
* Handles:
|
|
27
|
+
* - Protocol and hostname lowercasing
|
|
28
|
+
* - Default port removal (443 for HTTPS, 80 for HTTP)
|
|
29
|
+
* - Trailing slash removal from pathname
|
|
30
|
+
* - Query parameters and URL fragments are stripped
|
|
31
|
+
* - User credentials (username:password) are stripped
|
|
32
|
+
* - Invalid URL fallback to string normalization
|
|
33
|
+
*
|
|
34
|
+
* @param endpoint - S3 endpoint URL
|
|
35
|
+
* @returns Normalized endpoint string
|
|
36
|
+
*/
|
|
37
|
+
export declare const normalizeEndpoint: (endpoint: string) => string;
|
|
38
|
+
/**
|
|
39
|
+
* Minimal configuration interface for computing S3 config identifiers.
|
|
40
|
+
*
|
|
41
|
+
* This is a documentation-focused subset interface that describes which fields
|
|
42
|
+
* are actually used by computeS3ConfigIdentifier. The function accepts any object
|
|
43
|
+
* with these optional properties, including the full S3BrowserConfig type.
|
|
44
|
+
*
|
|
45
|
+
* Only the fields listed here are used for generating the S3 config identifier.
|
|
46
|
+
* Other configuration fields (forcePathStyle, features, etc.) are ignored.
|
|
47
|
+
*/
|
|
48
|
+
export interface S3ConfigIdentifierConfig {
|
|
49
|
+
credentials?: {
|
|
50
|
+
roleArn?: string;
|
|
51
|
+
accessKeyId?: string;
|
|
52
|
+
secretAccessKey?: string;
|
|
53
|
+
sessionToken?: string;
|
|
54
|
+
};
|
|
55
|
+
region?: string;
|
|
56
|
+
endpoint?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Computes a unique identifier for the current S3 configuration to isolate
|
|
60
|
+
* query caches between different S3 configurations.
|
|
61
|
+
*
|
|
62
|
+
* All inputs are normalized to prevent cache misses due to formatting differences.
|
|
63
|
+
*
|
|
64
|
+
* @param config - S3 configuration object
|
|
65
|
+
* @param fallbackIdentifier - Identifier to use when no config parts are available (default: ANONYMOUS_S3_CONFIG_IDENTIFIER)
|
|
66
|
+
* @returns An opaque identifier string (|| separated internally), or fallbackIdentifier if all parts are empty/missing
|
|
67
|
+
*/
|
|
68
|
+
export declare const computeS3ConfigIdentifier: (config: S3ConfigIdentifierConfig | ReturnType<GetConfigFunction>, fallbackIdentifier?: string) => string;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const ANONYMOUS_S3_CONFIG_IDENTIFIER = 'anonymous-s3-config';
|
|
2
|
+
const TEXT_ENCODER = new TextEncoder();
|
|
3
|
+
const DEFAULT_PORTS = {
|
|
4
|
+
'https:': '443',
|
|
5
|
+
'http:': '80'
|
|
6
|
+
};
|
|
7
|
+
const IDENTIFIER_SEPARATOR = '||';
|
|
8
|
+
const hashSessionToken = (sessionToken)=>{
|
|
9
|
+
const FNV_PRIME = 0x100000001b3n;
|
|
10
|
+
const FNV_OFFSET_BASIS = 0xcbf29ce484222325n;
|
|
11
|
+
const MASK_64 = 0xffffffffffffffffn;
|
|
12
|
+
let hash = FNV_OFFSET_BASIS;
|
|
13
|
+
const trimmed = sessionToken.trim();
|
|
14
|
+
const bytes = TEXT_ENCODER.encode(trimmed);
|
|
15
|
+
for (const byte of bytes){
|
|
16
|
+
hash ^= BigInt(byte);
|
|
17
|
+
hash = hash * FNV_PRIME & MASK_64;
|
|
18
|
+
}
|
|
19
|
+
return hash.toString(16).padStart(16, '0');
|
|
20
|
+
};
|
|
21
|
+
const normalizeRegion = (region)=>region.trim().toLowerCase();
|
|
22
|
+
const normalizeEndpoint = (endpoint)=>{
|
|
23
|
+
const trimmed = endpoint.trim();
|
|
24
|
+
try {
|
|
25
|
+
const url = new URL(trimmed);
|
|
26
|
+
const protocol = url.protocol.toLowerCase();
|
|
27
|
+
const hostname = url.hostname.toLowerCase();
|
|
28
|
+
const isDefaultPort = '' === url.port || url.port === DEFAULT_PORTS[protocol];
|
|
29
|
+
const port = isDefaultPort ? '' : `:${url.port}`;
|
|
30
|
+
const pathname = url.pathname.replace(/\/+$/, '') || '';
|
|
31
|
+
return `${protocol}//${hostname}${port}${pathname}`;
|
|
32
|
+
} catch (error) {
|
|
33
|
+
return trimmed.replace(/\/+$/, '');
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const computeS3ConfigIdentifier = (config, fallbackIdentifier = ANONYMOUS_S3_CONFIG_IDENTIFIER)=>{
|
|
37
|
+
const parts = [];
|
|
38
|
+
const roleArn = config?.credentials?.roleArn?.trim();
|
|
39
|
+
if (roleArn) parts.push(roleArn);
|
|
40
|
+
const accessKeyId = config?.credentials?.accessKeyId?.trim();
|
|
41
|
+
if (accessKeyId) {
|
|
42
|
+
parts.push(accessKeyId);
|
|
43
|
+
const sessionToken = config?.credentials?.sessionToken?.trim();
|
|
44
|
+
if (sessionToken) {
|
|
45
|
+
const hash = hashSessionToken(sessionToken);
|
|
46
|
+
parts.push(`session:${hash}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const region = config?.region?.trim();
|
|
50
|
+
if (region) parts.push(`region:${normalizeRegion(region)}`);
|
|
51
|
+
const endpoint = config?.endpoint?.trim();
|
|
52
|
+
if (endpoint) parts.push(`endpoint:${normalizeEndpoint(endpoint)}`);
|
|
53
|
+
return parts.length > 0 ? parts.join(IDENTIFIER_SEPARATOR) : fallbackIdentifier;
|
|
54
|
+
};
|
|
55
|
+
export { ANONYMOUS_S3_CONFIG_IDENTIFIER, computeS3ConfigIdentifier, hashSessionToken, normalizeEndpoint, normalizeRegion };
|
|
@@ -10,7 +10,7 @@ export declare const STATUS_OPTIONS: readonly [{
|
|
|
10
10
|
readonly value: "Disabled";
|
|
11
11
|
readonly label: "Disabled";
|
|
12
12
|
}];
|
|
13
|
-
export type FilterType =
|
|
13
|
+
export type FilterType = 'none' | 'prefix' | 'tags' | 'and';
|
|
14
14
|
/**
|
|
15
15
|
* Filter data for S3 rules. All fields are present for form handling,
|
|
16
16
|
* but only certain fields are used based on filterType.
|
|
@@ -28,18 +28,18 @@ export interface FilterData {
|
|
|
28
28
|
* Each variant only includes the fields relevant to that filter type.
|
|
29
29
|
*/
|
|
30
30
|
export type FilterSpec = {
|
|
31
|
-
type:
|
|
31
|
+
type: 'none';
|
|
32
32
|
} | {
|
|
33
|
-
type:
|
|
33
|
+
type: 'prefix';
|
|
34
34
|
prefix: string;
|
|
35
35
|
} | {
|
|
36
|
-
type:
|
|
36
|
+
type: 'tags';
|
|
37
37
|
tags: Array<{
|
|
38
38
|
key: string;
|
|
39
39
|
value: string;
|
|
40
40
|
}>;
|
|
41
41
|
} | {
|
|
42
|
-
type:
|
|
42
|
+
type: 'and';
|
|
43
43
|
prefix: string;
|
|
44
44
|
tags: Array<{
|
|
45
45
|
key: string;
|
|
@@ -5,33 +5,33 @@ const AWS_RULE_LIMITS = {
|
|
|
5
5
|
};
|
|
6
6
|
const STATUS_OPTIONS = [
|
|
7
7
|
{
|
|
8
|
-
value:
|
|
9
|
-
label:
|
|
8
|
+
value: 'Enabled',
|
|
9
|
+
label: 'Enabled'
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
|
-
value:
|
|
13
|
-
label:
|
|
12
|
+
value: 'Disabled',
|
|
13
|
+
label: 'Disabled'
|
|
14
14
|
}
|
|
15
15
|
];
|
|
16
16
|
function toFilterSpec(data) {
|
|
17
17
|
switch(data.filterType){
|
|
18
|
-
case
|
|
18
|
+
case 'none':
|
|
19
19
|
return {
|
|
20
|
-
type:
|
|
20
|
+
type: 'none'
|
|
21
21
|
};
|
|
22
|
-
case
|
|
22
|
+
case 'prefix':
|
|
23
23
|
return {
|
|
24
|
-
type:
|
|
24
|
+
type: 'prefix',
|
|
25
25
|
prefix: data.prefix
|
|
26
26
|
};
|
|
27
|
-
case
|
|
27
|
+
case 'tags':
|
|
28
28
|
return {
|
|
29
|
-
type:
|
|
29
|
+
type: 'tags',
|
|
30
30
|
tags: data.tags
|
|
31
31
|
};
|
|
32
|
-
case
|
|
32
|
+
case 'and':
|
|
33
33
|
return {
|
|
34
|
-
type:
|
|
34
|
+
type: 'and',
|
|
35
35
|
prefix: data.prefix,
|
|
36
36
|
tags: data.tags
|
|
37
37
|
};
|
|
@@ -40,13 +40,13 @@ function toFilterSpec(data) {
|
|
|
40
40
|
function buildS3Filter(data) {
|
|
41
41
|
const spec = toFilterSpec(data);
|
|
42
42
|
switch(spec.type){
|
|
43
|
-
case
|
|
43
|
+
case 'none':
|
|
44
44
|
return {};
|
|
45
|
-
case
|
|
45
|
+
case 'prefix':
|
|
46
46
|
return {
|
|
47
47
|
Prefix: spec.prefix
|
|
48
48
|
};
|
|
49
|
-
case
|
|
49
|
+
case 'tags':
|
|
50
50
|
if (0 === spec.tags.length) return {};
|
|
51
51
|
if (1 === spec.tags.length) return {
|
|
52
52
|
Tag: {
|
|
@@ -62,9 +62,9 @@ function buildS3Filter(data) {
|
|
|
62
62
|
}))
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
|
-
case
|
|
65
|
+
case 'and':
|
|
66
66
|
{
|
|
67
|
-
const hasPrefix = spec.prefix &&
|
|
67
|
+
const hasPrefix = spec.prefix && '' !== spec.prefix.trim();
|
|
68
68
|
const hasTags = spec.tags.length > 0;
|
|
69
69
|
if (!hasTags && !hasPrefix) return {};
|
|
70
70
|
if (!hasTags && hasPrefix) return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scality/data-browser-library",
|
|
3
|
-
"version": "1.0.0-preview.
|
|
3
|
+
"version": "1.0.0-preview.16",
|
|
4
4
|
"description": "A modular React component library for browsing S3 buckets and objects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"identity-obj-proxy": "^3.0.0",
|
|
58
58
|
"jest": "^30.0.5",
|
|
59
59
|
"jest-environment-jsdom": "^30.0.5",
|
|
60
|
-
"msw": "^
|
|
60
|
+
"msw": "^2.12.3",
|
|
61
61
|
"ts-jest": "^29.4.1"
|
|
62
62
|
},
|
|
63
63
|
"repository": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function useFeatures(feature: string): boolean | undefined;
|