@commercetools-frontend-extensions/operations 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +169 -0
  3. package/babel.config.js +6 -0
  4. package/dist/commercetools-frontend-extensions-operations.cjs.d.ts +2 -0
  5. package/dist/commercetools-frontend-extensions-operations.cjs.dev.js +2469 -0
  6. package/dist/commercetools-frontend-extensions-operations.cjs.js +7 -0
  7. package/dist/commercetools-frontend-extensions-operations.cjs.prod.js +2461 -0
  8. package/dist/commercetools-frontend-extensions-operations.esm.js +2316 -0
  9. package/dist/declarations/src/@api/export-operations.d.ts +5 -0
  10. package/dist/declarations/src/@api/fetcher.d.ts +17 -0
  11. package/dist/declarations/src/@api/file-upload.d.ts +3 -0
  12. package/dist/declarations/src/@api/import-containers.d.ts +35 -0
  13. package/dist/declarations/src/@api/import-operations.d.ts +6 -0
  14. package/dist/declarations/src/@api/index.d.ts +8 -0
  15. package/dist/declarations/src/@api/process-file.d.ts +3 -0
  16. package/dist/declarations/src/@api/test-fixtures.d.ts +272 -0
  17. package/dist/declarations/src/@api/urls.d.ts +44 -0
  18. package/dist/declarations/src/@components/file-drop-area/active-drag-drop-area.d.ts +10 -0
  19. package/dist/declarations/src/@components/file-drop-area/disabled-drop-area.d.ts +5 -0
  20. package/dist/declarations/src/@components/file-drop-area/drop-area-wrapper.d.ts +11 -0
  21. package/dist/declarations/src/@components/file-drop-area/enabled-drop-area.d.ts +7 -0
  22. package/dist/declarations/src/@components/file-drop-area/file-drop-area.d.ts +14 -0
  23. package/dist/declarations/src/@components/file-drop-area/file-dropped-area.d.ts +6 -0
  24. package/dist/declarations/src/@components/file-drop-area/index.d.ts +7 -0
  25. package/dist/declarations/src/@components/file-drop-area/styles.d.ts +9 -0
  26. package/dist/declarations/src/@components/icons/file-icon.d.ts +2 -0
  27. package/dist/declarations/src/@components/icons/index.d.ts +2 -0
  28. package/dist/declarations/src/@components/icons/lock-icon.d.ts +2 -0
  29. package/dist/declarations/src/@components/index.d.ts +6 -0
  30. package/dist/declarations/src/@components/info-box/index.d.ts +1 -0
  31. package/dist/declarations/src/@components/info-box/info-box.d.ts +7 -0
  32. package/dist/declarations/src/@components/upload-separator/index.d.ts +1 -0
  33. package/dist/declarations/src/@components/upload-separator/upload-separator.d.ts +12 -0
  34. package/dist/declarations/src/@components/upload-settings/index.d.ts +1 -0
  35. package/dist/declarations/src/@components/upload-settings/upload-settings.d.ts +11 -0
  36. package/dist/declarations/src/@components/uploading-modal/index.d.ts +1 -0
  37. package/dist/declarations/src/@components/uploading-modal/uploading-modal.d.ts +12 -0
  38. package/dist/declarations/src/@constants/delimiters.d.ts +8 -0
  39. package/dist/declarations/src/@constants/import-tags.d.ts +7 -0
  40. package/dist/declarations/src/@constants/index.d.ts +4 -0
  41. package/dist/declarations/src/@constants/resource-links.d.ts +10 -0
  42. package/dist/declarations/src/@constants/upload-limits.d.ts +10 -0
  43. package/dist/declarations/src/@errors/http-error.d.ts +6 -0
  44. package/dist/declarations/src/@errors/index.d.ts +8 -0
  45. package/dist/declarations/src/@errors/invalid-response-error.d.ts +3 -0
  46. package/dist/declarations/src/@errors/no-resources-to-export-error.d.ts +3 -0
  47. package/dist/declarations/src/@errors/project-key-not-available-error.d.ts +3 -0
  48. package/dist/declarations/src/@errors/query-predicate-error.d.ts +4 -0
  49. package/dist/declarations/src/@errors/unexpected-column-error.d.ts +3 -0
  50. package/dist/declarations/src/@errors/unexpected-operation-state-error.d.ts +4 -0
  51. package/dist/declarations/src/@errors/unexpected-resource-type-error.d.ts +3 -0
  52. package/dist/declarations/src/@hooks/index.d.ts +5 -0
  53. package/dist/declarations/src/@hooks/use-fetch-export-operations.d.ts +15 -0
  54. package/dist/declarations/src/@hooks/use-fetch-import-container-details.d.ts +15 -0
  55. package/dist/declarations/src/@hooks/use-fetch-import-operations.d.ts +16 -0
  56. package/dist/declarations/src/@hooks/use-fetch-import-summaries.d.ts +20 -0
  57. package/dist/declarations/src/@hooks/use-import-container-upload.d.ts +18 -0
  58. package/dist/declarations/src/@types/api.d.ts +13 -0
  59. package/dist/declarations/src/@types/basic-error-data-type.d.ts +5 -0
  60. package/dist/declarations/src/@types/export-operation.d.ts +95 -0
  61. package/dist/declarations/src/@types/file-upload.d.ts +63 -0
  62. package/dist/declarations/src/@types/import-container.d.ts +53 -0
  63. package/dist/declarations/src/@types/import-operation.d.ts +13 -0
  64. package/dist/declarations/src/@types/import-states.d.ts +9 -0
  65. package/dist/declarations/src/@types/import-summary.d.ts +15 -0
  66. package/dist/declarations/src/@types/index.d.ts +9 -0
  67. package/dist/declarations/src/@types/shared.d.ts +7 -0
  68. package/dist/declarations/src/@utils/error-mapping.d.ts +19 -0
  69. package/dist/declarations/src/@utils/file-upload.d.ts +46 -0
  70. package/dist/declarations/src/@utils/form.d.ts +1 -0
  71. package/dist/declarations/src/@utils/format.d.ts +5 -0
  72. package/dist/declarations/src/@utils/import-container.d.ts +8 -0
  73. package/dist/declarations/src/@utils/index.d.ts +6 -0
  74. package/dist/declarations/src/@utils/url.d.ts +6 -0
  75. package/dist/declarations/src/index.d.ts +26 -0
  76. package/index.js +1 -0
  77. package/jest.test.config.js +11 -0
  78. package/package.json +63 -0
  79. package/src/@api/export-operations.ts +26 -0
  80. package/src/@api/fetcher.spec.ts +51 -0
  81. package/src/@api/fetcher.ts +127 -0
  82. package/src/@api/file-upload.spec.ts +83 -0
  83. package/src/@api/file-upload.ts +46 -0
  84. package/src/@api/import-containers.ts +256 -0
  85. package/src/@api/import-operations.ts +33 -0
  86. package/src/@api/index.ts +8 -0
  87. package/src/@api/process-file.spec.ts +74 -0
  88. package/src/@api/process-file.ts +53 -0
  89. package/src/@api/test-fixtures.ts +772 -0
  90. package/src/@api/urls.ts +118 -0
  91. package/src/@components/file-drop-area/active-drag-drop-area.tsx +33 -0
  92. package/src/@components/file-drop-area/disabled-drop-area.tsx +17 -0
  93. package/src/@components/file-drop-area/drop-area-wrapper.tsx +38 -0
  94. package/src/@components/file-drop-area/enabled-drop-area.tsx +27 -0
  95. package/src/@components/file-drop-area/file-drop-area.tsx +74 -0
  96. package/src/@components/file-drop-area/file-dropped-area.tsx +29 -0
  97. package/src/@components/file-drop-area/index.ts +7 -0
  98. package/src/@components/file-drop-area/styles.ts +67 -0
  99. package/src/@components/icons/file-icon.tsx +30 -0
  100. package/src/@components/icons/index.ts +2 -0
  101. package/src/@components/icons/lock-icon.tsx +34 -0
  102. package/src/@components/index.ts +6 -0
  103. package/src/@components/info-box/index.ts +1 -0
  104. package/src/@components/info-box/info-box.tsx +23 -0
  105. package/src/@components/upload-separator/index.ts +1 -0
  106. package/src/@components/upload-separator/upload-separator.tsx +61 -0
  107. package/src/@components/upload-settings/index.ts +1 -0
  108. package/src/@components/upload-settings/upload-settings.tsx +36 -0
  109. package/src/@components/uploading-modal/index.ts +1 -0
  110. package/src/@components/uploading-modal/uploading-modal.tsx +64 -0
  111. package/src/@constants/delimiters.ts +14 -0
  112. package/src/@constants/import-tags.ts +9 -0
  113. package/src/@constants/index.ts +4 -0
  114. package/src/@constants/resource-links.ts +61 -0
  115. package/src/@constants/upload-limits.ts +11 -0
  116. package/src/@errors/http-error.ts +17 -0
  117. package/src/@errors/index.ts +8 -0
  118. package/src/@errors/invalid-response-error.ts +6 -0
  119. package/src/@errors/no-resources-to-export-error.ts +6 -0
  120. package/src/@errors/project-key-not-available-error.ts +6 -0
  121. package/src/@errors/query-predicate-error.ts +10 -0
  122. package/src/@errors/unexpected-column-error.ts +6 -0
  123. package/src/@errors/unexpected-operation-state-error.ts +8 -0
  124. package/src/@errors/unexpected-resource-type-error.ts +6 -0
  125. package/src/@hooks/index.ts +5 -0
  126. package/src/@hooks/messages.ts +11 -0
  127. package/src/@hooks/use-fetch-export-operations.ts +34 -0
  128. package/src/@hooks/use-fetch-import-container-details.ts +31 -0
  129. package/src/@hooks/use-fetch-import-operations.ts +42 -0
  130. package/src/@hooks/use-fetch-import-summaries.ts +47 -0
  131. package/src/@hooks/use-fetch.spec.ts +76 -0
  132. package/src/@hooks/use-fetch.ts +80 -0
  133. package/src/@hooks/use-import-container-upload.spec.ts +294 -0
  134. package/src/@hooks/use-import-container-upload.ts +126 -0
  135. package/src/@types/api.ts +14 -0
  136. package/src/@types/basic-error-data-type.ts +5 -0
  137. package/src/@types/export-operation.ts +144 -0
  138. package/src/@types/file-upload.ts +81 -0
  139. package/src/@types/import-container.ts +104 -0
  140. package/src/@types/import-operation.ts +31 -0
  141. package/src/@types/import-states.ts +9 -0
  142. package/src/@types/import-summary.ts +22 -0
  143. package/src/@types/index.ts +9 -0
  144. package/src/@types/shared.ts +52 -0
  145. package/src/@utils/error-mapping.spec.ts +126 -0
  146. package/src/@utils/error-mapping.ts +39 -0
  147. package/src/@utils/file-upload.spec.ts +151 -0
  148. package/src/@utils/file-upload.ts +150 -0
  149. package/src/@utils/form.ts +20 -0
  150. package/src/@utils/format.spec.ts +62 -0
  151. package/src/@utils/format.ts +53 -0
  152. package/src/@utils/import-container.spec.ts +26 -0
  153. package/src/@utils/import-container.ts +34 -0
  154. package/src/@utils/index.ts +6 -0
  155. package/src/@utils/url.spec.ts +75 -0
  156. package/src/@utils/url.ts +18 -0
  157. package/src/index.ts +27 -0
  158. package/tsconfig.json +9 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,55 @@
1
+ # @commercetools-frontend-extensions/operations
2
+
3
+ ## 2.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1640](https://github.com/commercetools/merchant-center-operations/pull/1640) [`f857821`](https://github.com/commercetools/merchant-center-operations/commit/f857821ffebd12a90b02ab5b6f77cf4cb08a495c) Thanks [@yassinejebli](https://github.com/yassinejebli)! - chore: enable npm publication for operations shared package
8
+
9
+ ## 2.0.0
10
+
11
+ ### Major Changes
12
+
13
+ - [#1638](https://github.com/commercetools/merchant-center-operations/pull/1638) [`516f918`](https://github.com/commercetools/merchant-center-operations/commit/516f9189854c90c9d30242d2b724f0882ebbebee) Thanks [@yassinejebli](https://github.com/yassinejebli)! - Publish shared operations package and update modals
14
+
15
+ ## 1.1.3
16
+
17
+ ### Patch Changes
18
+
19
+ - [#1423](https://github.com/commercetools/merchant-center-operations/pull/1423) [`d3da143`](https://github.com/commercetools/merchant-center-operations/commit/d3da1439618f27b4804b7293b0d8419508c6639a) Thanks [@renovate](https://github.com/apps/renovate)! - update all dependencies
20
+
21
+ ## 1.1.2
22
+
23
+ ### Patch Changes
24
+
25
+ - [#1382](https://github.com/commercetools/merchant-center-operations/pull/1382) [`67fde7a`](https://github.com/commercetools/merchant-center-operations/commit/67fde7aee9c41631d2e703f009fdfb3bbb091868) Thanks [@renovate](https://github.com/apps/renovate)! - update all dependencies
26
+
27
+ ## 1.1.1
28
+
29
+ ### Patch Changes
30
+
31
+ - [#1344](https://github.com/commercetools/merchant-center-operations/pull/1344) [`0ee84d2`](https://github.com/commercetools/merchant-center-operations/commit/0ee84d2d6a8c3f34f53ac750890c9f7ab68cfedf) Thanks [@renovate](https://github.com/apps/renovate)! - chore: update deps
32
+
33
+ ## 1.1.0
34
+
35
+ ### Minor Changes
36
+
37
+ - [#1282](https://github.com/commercetools/merchant-center-operations/pull/1282) [`1a8828c`](https://github.com/commercetools/merchant-center-operations/commit/1a8828c14baff2512819872a5dd895a70861185f) Thanks [@mustafaasif2](https://github.com/mustafaasif2)! - remove support for locale `zh-CN`
38
+
39
+ ## 1.0.3
40
+
41
+ ### Patch Changes
42
+
43
+ - [#1243](https://github.com/commercetools/merchant-center-operations/pull/1243) [`da123a8`](https://github.com/commercetools/merchant-center-operations/commit/da123a824ce028794562865c4d047478fcdf0812) Thanks [@renovate](https://github.com/apps/renovate)! - chore: update all dependencies
44
+
45
+ ## 1.0.2
46
+
47
+ ### Patch Changes
48
+
49
+ - [#1243](https://github.com/commercetools/merchant-center-operations/pull/1243) [`da123a8`](https://github.com/commercetools/merchant-center-operations/commit/da123a824ce028794562865c4d047478fcdf0812) Thanks [@renovate](https://github.com/apps/renovate)! - chore: update all dependencies
50
+
51
+ ## 1.0.1
52
+
53
+ ### Patch Changes
54
+
55
+ - [#1189](https://github.com/commercetools/merchant-center-operations/pull/1189) [`7e1b60f`](https://github.com/commercetools/merchant-center-operations/commit/7e1b60f9b220dc7b79d5e21f9d1ec8880b7caeac) Thanks [@renovate](https://github.com/apps/renovate)! - update all dependencies
package/README.md ADDED
@@ -0,0 +1,169 @@
1
+ # Shared operations package
2
+
3
+ Shared functionality for import/export operations across multiple frontend applications and extensions.
4
+
5
+ ## Hooks
6
+
7
+ ### `useImportContainerUpload`
8
+
9
+ Handles file upload to import containers with automatic cleanup on errors.
10
+
11
+ ```typescript
12
+ const { upload, abort, isUploading, progress } = useImportContainerUpload({
13
+ projectKey: string
14
+ })
15
+ ```
16
+
17
+ **Parameters:**
18
+ - `projectKey` (required): The commercetools project key
19
+
20
+ **Returns:**
21
+ - `upload`: Function to start file upload
22
+ - `abort`: Function to cancel ongoing upload
23
+ - `isUploading`: Boolean indicating upload state
24
+ - `progress`: Upload progress (0-100)
25
+
26
+ **Usage:**
27
+ ```typescript
28
+ const projectKey = useApplicationContext((context) => context.project?.key)
29
+ const { upload, isUploading, progress } = useImportContainerUpload({
30
+ projectKey: projectKey!
31
+ })
32
+
33
+ await upload({
34
+ file: File,
35
+ resourceType: 'product' | 'category' | ...,
36
+ settings?: {
37
+ format?: 'CSV' | 'JSON',
38
+ decimalSeparator?: '.' | ',',
39
+ resourceType?: string, // example: 'product-draft' for products
40
+ options?: {
41
+ publishAllChanges?: boolean, // product-specific
42
+ unpublishAllChanges?: boolean // product-specific
43
+ }
44
+ },
45
+ onSuccess: (response, containerKey) => { /* ... */ },
46
+ onError: (error) => { /* ... */ },
47
+ onProgress: (progress) => { /* ... */ }
48
+ })
49
+ ```
50
+
51
+ ---
52
+
53
+ ### `useFetchImportOperations`
54
+
55
+ Fetches import operations for a specific container with optional polling.
56
+
57
+ ```typescript
58
+ const { data, error, isLoading, refetch, lastFetchTime } = useFetchImportOperations({
59
+ projectKey: string,
60
+ importContainerKey: string,
61
+ queryParams?: ImportOperationQueryParams,
62
+ pollingInterval?: number,
63
+ shouldContinuePolling?: (data) => boolean
64
+ })
65
+ ```
66
+
67
+ **Parameters:**
68
+ - `projectKey` (required): The commercetools project key
69
+ - `importContainerKey` (required): The import container key
70
+ - `queryParams`: Optional query parameters (limit, offset, etc.)
71
+ - `pollingInterval`: Polling interval in milliseconds
72
+ - `shouldContinuePolling`: Function to determine if polling should continue
73
+
74
+ ---
75
+
76
+ ### `useFetchImportSummaries`
77
+
78
+ Fetches import summaries (containers) with optional polling.
79
+
80
+ ```typescript
81
+ const { data, error, isLoading, refetch, lastFetchTime } = useFetchImportSummaries({
82
+ projectKey: string,
83
+ queryParams?: ImportContainerQueryParams,
84
+ pollingInterval?: number,
85
+ shouldContinuePolling?: (data) => boolean
86
+ })
87
+ ```
88
+
89
+ **Parameters:**
90
+ - `projectKey` (required): The commercetools project key
91
+ - `queryParams`: Optional query parameters (limit, offset, states, etc.)
92
+ - `pollingInterval`: Polling interval in milliseconds
93
+ - `shouldContinuePolling`: Function to determine if polling should continue
94
+
95
+ ---
96
+
97
+ ### `useFetchImportContainerDetails`
98
+
99
+ Fetches details for a specific import container with optional polling.
100
+
101
+ ```typescript
102
+ const { data, error, isLoading, refetch, lastFetchTime } = useFetchImportContainerDetails({
103
+ projectKey: string,
104
+ importContainerKey: string,
105
+ pollingInterval?: number,
106
+ shouldContinuePolling?: (data) => boolean
107
+ })
108
+ ```
109
+
110
+ **Parameters:**
111
+ - `projectKey` (required): The commercetools project key
112
+ - `importContainerKey` (required): The import container key
113
+ - `pollingInterval`: Polling interval in milliseconds
114
+ - `shouldContinuePolling`: Function to determine if polling should continue
115
+
116
+ ---
117
+
118
+ ### `useFetchExportOperations`
119
+
120
+ Fetches export operations with optional polling.
121
+
122
+ ```typescript
123
+ const { data, error, isLoading, refetch, lastFetchTime } = useFetchExportOperations({
124
+ projectKey: string,
125
+ queryParams?: ExportOperationQueryParams,
126
+ pollingInterval?: number,
127
+ shouldContinuePolling?: (data) => boolean
128
+ })
129
+ ```
130
+
131
+ **Parameters:**
132
+ - `projectKey` (required): The commercetools project key
133
+ - `queryParams`: Optional query parameters (limit, offset, resourceTypes, etc.)
134
+ - `pollingInterval`: Polling interval in milliseconds
135
+ - `shouldContinuePolling`: Function to determine if polling should continue
136
+
137
+ ---
138
+
139
+ ## Notes
140
+
141
+ - **All hooks require `projectKey`** to be passed explicitly (retrieved from `useApplicationContext`)
142
+ - **Polling is opt-in** via `pollingInterval` parameter
143
+ - **Standard return structure**: All fetch hooks return `{ data, error, isLoading, refetch, lastFetchTime }`
144
+ - **Automatic cleanup**: `useImportContainerUpload` automatically cleans up containers on upload errors
145
+ - **File upload limits**: The package exports backend-recommended limits enforced in frontend validation:
146
+ - `MAX_FILE_SIZE_MB` (35 MB)
147
+ - `MAX_ROW_COUNT` (80,000)
148
+ - **Internal use only**: This package also exports additional components, utilities, types, and API functions that are intended for internal use within the operations repository (operations app and frontend extensions). Only the hooks documented above are considered stable public API for external consumption.
149
+
150
+ ---
151
+
152
+ ## Common patterns
153
+
154
+ ### Polling example
155
+
156
+ ```typescript
157
+ const POLL_INTERVAL = 5000 // 5 seconds
158
+
159
+ const { data, isLoading } = useFetchImportOperations({
160
+ projectKey,
161
+ importContainerKey,
162
+ pollingInterval: POLL_INTERVAL,
163
+ shouldContinuePolling: (data) => {
164
+ // Stop polling when all operations are completed
165
+ return data?.results?.some(op => op.state === 'processing') ?? false
166
+ }
167
+ })
168
+ ```
169
+
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ presets: [
3
+ '@commercetools-frontend/babel-preset-mc-app',
4
+ ['@babel/preset-react', { runtime: 'automatic' }],
5
+ ],
6
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./declarations/src/index.js";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVyY2V0b29scy1mcm9udGVuZC1leHRlbnNpb25zLW9wZXJhdGlvbnMuY2pzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuL2RlY2xhcmF0aW9ucy9zcmMvaW5kZXguZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9