@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.
Files changed (212) hide show
  1. package/dist/components/DataBrowserUI.d.ts +6 -14
  2. package/dist/components/DataBrowserUI.js +79 -55
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketCreate.test.js +102 -102
  6. package/dist/components/__tests__/BucketDetails.test.js +122 -123
  7. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +177 -177
  8. package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
  9. package/dist/components/__tests__/BucketList.test.js +175 -176
  10. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +84 -84
  11. package/dist/components/__tests__/BucketOverview.test.js +257 -201
  12. package/dist/components/__tests__/BucketPolicyPage.test.js +62 -62
  13. package/dist/components/__tests__/BucketReplicationFormPage.test.js +542 -542
  14. package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
  15. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  16. package/dist/components/__tests__/DeleteBucketButton.test.js +62 -62
  17. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
  18. package/dist/components/__tests__/DeleteObjectButton.test.js +63 -63
  19. package/dist/components/__tests__/EmptyBucketButton.test.js +56 -56
  20. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  21. package/dist/components/__tests__/ObjectList.test.js +252 -251
  22. package/dist/components/__tests__/UploadButton.test.js +45 -45
  23. package/dist/components/buckets/BucketCreate.d.ts +2 -2
  24. package/dist/components/buckets/BucketCreate.js +41 -41
  25. package/dist/components/buckets/BucketDetails.d.ts +2 -2
  26. package/dist/components/buckets/BucketDetails.js +48 -36
  27. package/dist/components/buckets/BucketLifecycleFormPage.js +161 -160
  28. package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
  29. package/dist/components/buckets/BucketLifecycleList.js +46 -46
  30. package/dist/components/buckets/BucketList.d.ts +2 -2
  31. package/dist/components/buckets/BucketList.js +28 -27
  32. package/dist/components/buckets/BucketLocation.js +3 -3
  33. package/dist/components/buckets/BucketOverview.d.ts +1 -1
  34. package/dist/components/buckets/BucketOverview.js +64 -65
  35. package/dist/components/buckets/BucketPage.js +19 -11
  36. package/dist/components/buckets/BucketPolicyButton.js +2 -2
  37. package/dist/components/buckets/BucketPolicyPage.js +27 -25
  38. package/dist/components/buckets/BucketReplicationFormPage.js +133 -132
  39. package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
  40. package/dist/components/buckets/BucketReplicationList.js +41 -41
  41. package/dist/components/buckets/BucketVersioning.js +11 -11
  42. package/dist/components/buckets/DeleteBucketButton.js +5 -5
  43. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
  44. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +1 -1
  45. package/dist/components/buckets/EmptyBucketButton.js +19 -19
  46. package/dist/components/buckets/EmptyBucketSummary.d.ts +1 -1
  47. package/dist/components/buckets/EmptyBucketSummary.js +1 -1
  48. package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
  49. package/dist/components/buckets/__tests__/BucketVersioning.test.js +45 -45
  50. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +34 -33
  51. package/dist/components/buckets/notifications/EventsSection.js +144 -28
  52. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  53. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  54. package/dist/components/buckets/notifications/events.d.ts +71 -7
  55. package/dist/components/buckets/notifications/events.js +98 -16
  56. package/dist/components/index.d.ts +24 -22
  57. package/dist/components/index.js +5 -3
  58. package/dist/components/layouts/ArrowNavigation.d.ts +1 -2
  59. package/dist/components/layouts/ArrowNavigation.js +3 -3
  60. package/dist/components/layouts/BrowserPageLayout.d.ts +2 -3
  61. package/dist/components/layouts/BrowserPageLayout.js +1 -1
  62. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  63. package/dist/components/objects/CreateFolderButton.js +9 -9
  64. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  65. package/dist/components/objects/DeleteObjectButton.js +20 -20
  66. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +1 -1
  67. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +56 -56
  68. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +1 -1
  69. package/dist/components/objects/ObjectDetails/ObjectSummary.js +39 -39
  70. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +1 -1
  71. package/dist/components/objects/ObjectDetails/ObjectTags.js +25 -25
  72. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +119 -119
  73. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +211 -211
  74. package/dist/components/objects/ObjectDetails/index.d.ts +1 -1
  75. package/dist/components/objects/ObjectDetails/index.js +30 -30
  76. package/dist/components/objects/ObjectList.d.ts +5 -5
  77. package/dist/components/objects/ObjectList.js +113 -112
  78. package/dist/components/objects/ObjectLock/EditRetentionButton.js +3 -3
  79. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +14 -14
  80. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
  81. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +29 -28
  82. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
  83. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
  84. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +50 -50
  85. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +77 -77
  86. package/dist/components/objects/ObjectPage.js +5 -4
  87. package/dist/components/objects/UploadButton.d.ts +3 -3
  88. package/dist/components/objects/UploadButton.js +5 -5
  89. package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
  90. package/dist/components/providers/DataBrowserProvider.js +60 -38
  91. package/dist/components/providers/QueryProvider.d.ts +9 -0
  92. package/dist/components/providers/QueryProvider.js +22 -0
  93. package/dist/components/search/MetadataSearch.js +26 -25
  94. package/dist/components/search/SearchHints.js +1 -1
  95. package/dist/components/ui/ArrayFieldActions.js +4 -4
  96. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +1 -1
  97. package/dist/components/ui/ConfirmDeleteRuleModal.js +1 -1
  98. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  99. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  100. package/dist/components/ui/FilterFormSection.d.ts +2 -2
  101. package/dist/components/ui/FilterFormSection.js +29 -29
  102. package/dist/components/ui/Search.elements.d.ts +1 -1
  103. package/dist/components/ui/Search.elements.js +7 -7
  104. package/dist/components/ui/Table.elements.js +5 -5
  105. package/dist/config/factory.d.ts +23 -10
  106. package/dist/config/factory.js +22 -7
  107. package/dist/config/types.d.ts +20 -3
  108. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +2 -2
  109. package/dist/hooks/__tests__/useISVBucketDetection.test.js +42 -42
  110. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +25 -25
  111. package/dist/hooks/bucketConfiguration.d.ts +1 -1
  112. package/dist/hooks/bucketConfiguration.js +48 -48
  113. package/dist/hooks/bucketOperations.d.ts +1 -1
  114. package/dist/hooks/bucketOperations.js +6 -6
  115. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +78 -78
  116. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +78 -78
  117. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +42 -42
  118. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +61 -61
  119. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +63 -63
  120. package/dist/hooks/factories/index.d.ts +4 -4
  121. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  122. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +15 -12
  123. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  124. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  125. package/dist/hooks/factories/useCreateS3MutationHook.js +6 -1
  126. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  127. package/dist/hooks/factories/useCreateS3QueryHook.js +8 -5
  128. package/dist/hooks/index.d.ts +16 -13
  129. package/dist/hooks/index.js +4 -1
  130. package/dist/hooks/loginOperations.d.ts +1 -1
  131. package/dist/hooks/loginOperations.js +1 -1
  132. package/dist/hooks/objectOperations.d.ts +2 -2
  133. package/dist/hooks/objectOperations.js +49 -49
  134. package/dist/hooks/presignedOperations.d.ts +2 -2
  135. package/dist/hooks/presignedOperations.js +3 -3
  136. package/dist/hooks/useBatchObjectLegalHold.js +7 -4
  137. package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
  138. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  139. package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
  140. package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
  141. package/dist/hooks/useEmptyBucket.js +10 -10
  142. package/dist/hooks/useFeatures.d.ts +7 -0
  143. package/dist/hooks/useFeatures.js +8 -0
  144. package/dist/hooks/useISVBucketDetection.js +5 -5
  145. package/dist/hooks/useIsBucketEmpty.js +4 -4
  146. package/dist/hooks/useLoginMutation.d.ts +1 -1
  147. package/dist/hooks/useLoginMutation.js +1 -1
  148. package/dist/hooks/useS3Client.d.ts +6 -0
  149. package/dist/hooks/useS3Client.js +3 -2
  150. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  151. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  152. package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
  153. package/dist/hooks/useSupportedNotificationEvents.js +8 -0
  154. package/dist/index.d.ts +6 -6
  155. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  156. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  157. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  158. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  159. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  160. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  161. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  162. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  163. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  164. package/dist/test/msw/handlers/headObject.js +31 -13
  165. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  166. package/dist/test/msw/handlers/listBuckets.js +5 -3
  167. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  168. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  169. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  170. package/dist/test/msw/handlers/listObjects.js +35 -23
  171. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  172. package/dist/test/msw/handlers/objectLegalHold.js +31 -16
  173. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  174. package/dist/test/msw/handlers/objectRetention.js +31 -17
  175. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  176. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  177. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  178. package/dist/test/msw/handlers/putObject.js +27 -12
  179. package/dist/test/msw/handlers.d.ts +3 -3
  180. package/dist/test/msw/handlers.js +72 -49
  181. package/dist/test/msw/index.d.ts +2 -2
  182. package/dist/test/msw/server.d.ts +1 -1
  183. package/dist/test/msw/server.js +1 -1
  184. package/dist/test/msw/utils.js +2 -2
  185. package/dist/test/setup.d.ts +1 -1
  186. package/dist/test/setup.js +19 -19
  187. package/dist/test/testUtils.d.ts +9 -15
  188. package/dist/test/testUtils.js +73 -91
  189. package/dist/test/utils/errorHandling.test.js +119 -119
  190. package/dist/types/index.d.ts +6 -31
  191. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  192. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +429 -0
  193. package/dist/utils/constants.js +8 -8
  194. package/dist/utils/deletion/index.d.ts +2 -2
  195. package/dist/utils/deletion/messages.d.ts +1 -1
  196. package/dist/utils/deletion/messages.js +4 -4
  197. package/dist/utils/errorHandling.d.ts +3 -3
  198. package/dist/utils/errorHandling.js +6 -6
  199. package/dist/utils/hooks.js +8 -8
  200. package/dist/utils/index.d.ts +5 -4
  201. package/dist/utils/index.js +2 -0
  202. package/dist/utils/proxyMiddleware.d.ts +1 -1
  203. package/dist/utils/proxyMiddleware.js +6 -11
  204. package/dist/utils/s3Client.d.ts +2 -2
  205. package/dist/utils/s3Client.js +1 -1
  206. package/dist/utils/s3ConfigIdentifier.d.ts +68 -0
  207. package/dist/utils/s3ConfigIdentifier.js +55 -0
  208. package/dist/utils/s3RuleUtils.d.ts +5 -5
  209. package/dist/utils/s3RuleUtils.js +17 -17
  210. package/package.json +2 -2
  211. package/dist/utils/useFeatures.d.ts +0 -1
  212. package/dist/utils/useFeatures.js +0 -7
@@ -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 || "localhost",
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 = "none" | "prefix" | "tags" | "and";
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: "none";
31
+ type: 'none';
32
32
  } | {
33
- type: "prefix";
33
+ type: 'prefix';
34
34
  prefix: string;
35
35
  } | {
36
- type: "tags";
36
+ type: 'tags';
37
37
  tags: Array<{
38
38
  key: string;
39
39
  value: string;
40
40
  }>;
41
41
  } | {
42
- type: "and";
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: "Enabled",
9
- label: "Enabled"
8
+ value: 'Enabled',
9
+ label: 'Enabled'
10
10
  },
11
11
  {
12
- value: "Disabled",
13
- label: "Disabled"
12
+ value: 'Disabled',
13
+ label: 'Disabled'
14
14
  }
15
15
  ];
16
16
  function toFilterSpec(data) {
17
17
  switch(data.filterType){
18
- case "none":
18
+ case 'none':
19
19
  return {
20
- type: "none"
20
+ type: 'none'
21
21
  };
22
- case "prefix":
22
+ case 'prefix':
23
23
  return {
24
- type: "prefix",
24
+ type: 'prefix',
25
25
  prefix: data.prefix
26
26
  };
27
- case "tags":
27
+ case 'tags':
28
28
  return {
29
- type: "tags",
29
+ type: 'tags',
30
30
  tags: data.tags
31
31
  };
32
- case "and":
32
+ case 'and':
33
33
  return {
34
- type: "and",
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 "none":
43
+ case 'none':
44
44
  return {};
45
- case "prefix":
45
+ case 'prefix':
46
46
  return {
47
47
  Prefix: spec.prefix
48
48
  };
49
- case "tags":
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 "and":
65
+ case 'and':
66
66
  {
67
- const hasPrefix = spec.prefix && "" !== spec.prefix.trim();
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.13",
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": "^0.28.2",
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;
@@ -1,7 +0,0 @@
1
- import { useDataBrowserContext } from "../components/index.js";
2
- function useFeatures(feature) {
3
- const { getS3Config } = useDataBrowserContext();
4
- const config = getS3Config();
5
- return config?.features?.includes(feature);
6
- }
7
- export { useFeatures };