@haus-tech/product-import-export-plugin 3.2.0 → 3.3.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.
- package/CHANGELOG.md +8 -0
- package/README.mdx +31 -11
- package/package.json +2 -1
- package/src/api/product-export.controller.d.ts +6 -7
- package/src/api/product-export.controller.js +39 -78
- package/src/api/product-export.controller.js.map +1 -1
- package/src/constants.d.ts +1 -0
- package/src/constants.js +2 -1
- package/src/constants.js.map +1 -1
- package/src/index.d.ts +4 -0
- package/src/index.js +3 -0
- package/src/index.js.map +1 -1
- package/src/product-import-export.plugin.js +23 -0
- package/src/product-import-export.plugin.js.map +1 -1
- package/src/services/export-storage/export-storage-strategy.d.ts +31 -0
- package/src/services/export-storage/export-storage-strategy.js +3 -0
- package/src/services/export-storage/export-storage-strategy.js.map +1 -0
- package/src/services/export-storage/local-export-storage-strategy.d.ts +20 -0
- package/src/services/export-storage/local-export-storage-strategy.js +106 -0
- package/src/services/export-storage/local-export-storage-strategy.js.map +1 -0
- package/src/services/export-storage/s3-export-storage-strategy.d.ts +15 -0
- package/src/services/export-storage/s3-export-storage-strategy.js +130 -0
- package/src/services/export-storage/s3-export-storage-strategy.js.map +1 -0
- package/src/services/export-storage.util.d.ts +18 -0
- package/src/services/export-storage.util.js +81 -0
- package/src/services/export-storage.util.js.map +1 -0
- package/src/services/product-export.service.d.ts +3 -1
- package/src/services/product-export.service.js +24 -9
- package/src/services/product-export.service.js.map +1 -1
- package/src/types.d.ts +13 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## 3.2.1
|
|
2
|
+
|
|
3
|
+
This was a version bump only for product-import-export-plugin to align it with other projects, there were no code changes.
|
|
4
|
+
|
|
5
|
+
## 3.2.0
|
|
6
|
+
|
|
7
|
+
This was a version bump only for product-import-export-plugin to align it with other projects, there were no code changes.
|
|
8
|
+
|
|
1
9
|
## 3.1.10
|
|
2
10
|
|
|
3
11
|
This was a version bump only for product-import-export-plugin to align it with other projects, there were no code changes.
|
package/README.mdx
CHANGED
|
@@ -19,9 +19,10 @@ A Vendure plugin for importing and exporting product data via CSV. Supports bulk
|
|
|
19
19
|
|
|
20
20
|
## Features
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
* **Import** – Bulk upload products from CSV with validation, custom fields, assets, facets, and variants
|
|
23
|
+
* **Export** – Export products to CSV with selected fields; export all products or a selection
|
|
24
|
+
* **Storage strategies** – Store exported files in S3 or locally on disk (with automatic fallback)
|
|
25
|
+
* **UI** – Admin UI and Dashboard integration for import and export
|
|
25
26
|
|
|
26
27
|

|
|
27
28
|
|
|
@@ -44,7 +45,17 @@ export const config = {
|
|
|
44
45
|
plugins: [
|
|
45
46
|
ProductImportExportPlugin.init({
|
|
46
47
|
importOptions: {}, // Configure import options
|
|
47
|
-
exportOptions: {
|
|
48
|
+
exportOptions: {
|
|
49
|
+
storageStrategy: 's3', // 's3' | 'disk'
|
|
50
|
+
s3Options: {
|
|
51
|
+
bucket: 'your-bucket',
|
|
52
|
+
region: 'your-region',
|
|
53
|
+
credentials: {
|
|
54
|
+
accessKeyId: '...',
|
|
55
|
+
secretAccessKey: '...',
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
},
|
|
48
59
|
}),
|
|
49
60
|
],
|
|
50
61
|
}
|
|
@@ -61,13 +72,22 @@ export const config = {
|
|
|
61
72
|
|
|
62
73
|
### Export options
|
|
63
74
|
|
|
64
|
-
| Option | Type | Default | Description
|
|
65
|
-
| ----------------------- | --------------------- | ----------------------- |
|
|
66
|
-
| `defaultFileName` | `string` | `'products_export.csv'` | Default filename for exports
|
|
67
|
-
| `exportAssetsAsOptions` | `('url' \| 'json')[]` | `['url', 'json']` | Available formats for asset export
|
|
68
|
-
| `defaultExportAssetsAs` | `'url' \| 'json'` | `'url'` | Default asset export format
|
|
69
|
-
| `defaultExportFields` | `string[]` | See above | Fields that will be pre-selected in the export UI
|
|
70
|
-
| `requiredExportFields` | `string[]` | `['name', 'sku']` | Fields that must always be included
|
|
75
|
+
| Option | Type | Default | Description |
|
|
76
|
+
| ----------------------- | --------------------- | ----------------------- | ------------------------------------------------------------ |
|
|
77
|
+
| `defaultFileName` | `string` | `'products_export.csv'` | Default filename for exports |
|
|
78
|
+
| `exportAssetsAsOptions` | `('url' \| 'json')[]` | `['url', 'json']` | Available formats for asset export |
|
|
79
|
+
| `defaultExportAssetsAs` | `'url' \| 'json'` | `'url'` | Default asset export format |
|
|
80
|
+
| `defaultExportFields` | `string[]` | See above | Fields that will be pre-selected in the export UI |
|
|
81
|
+
| `requiredExportFields` | `string[]` | `['name', 'sku']` | Fields that must always be included |
|
|
82
|
+
| `storageStrategy` | `'s3' \| 'disk'` | `'disk'` | Where exported files are stored |
|
|
83
|
+
| `s3Options` | `object` | `undefined` | S3 configuration (required when `storageStrategy` is `'s3'`) |
|
|
84
|
+
|
|
85
|
+
### Storage strategy
|
|
86
|
+
|
|
87
|
+
The plugin supports configurable storage for exported files:
|
|
88
|
+
|
|
89
|
+
* **S3** – Stores export files in an S3-compatible bucket
|
|
90
|
+
* **Disk (default)** – Saves files locally on the server
|
|
71
91
|
|
|
72
92
|
## CSV Format for Import
|
|
73
93
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haus-tech/product-import-export-plugin",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "A Vendure plugin for importing and exporting products using a CSV file",
|
|
5
5
|
"author": "Haus Tech",
|
|
6
6
|
"repository": {
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"build": "yarn run -T rimraf dist && yarn run -T tsc && yarn run -T copyfiles -u 1 'src/ui/**/*' dist/"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
+
"@aws-sdk/client-s3": "^3.744.0",
|
|
46
47
|
"axios": "^1.7.0",
|
|
47
48
|
"bottleneck": "^2.19.5",
|
|
48
49
|
"fs-extra": "^11.2.0",
|
|
@@ -3,11 +3,14 @@ import { Response } from 'express';
|
|
|
3
3
|
import { ProductExportService } from '../services/product-export.service';
|
|
4
4
|
import { ProductExportQueueService } from '../services/product-export-queue.service';
|
|
5
5
|
import { PluginInitOptions } from '../types';
|
|
6
|
+
import { ExportStorageStrategy } from '../services/export-storage/export-storage-strategy';
|
|
6
7
|
export declare class ProductExportController {
|
|
7
8
|
private options;
|
|
9
|
+
private exportStorageStrategy;
|
|
8
10
|
private productExportService;
|
|
9
11
|
private productExportQueueService;
|
|
10
|
-
constructor(options: PluginInitOptions, productExportService: ProductExportService, productExportQueueService: ProductExportQueueService);
|
|
12
|
+
constructor(options: PluginInitOptions, exportStorageStrategy: ExportStorageStrategy, productExportService: ProductExportService, productExportQueueService: ProductExportQueueService);
|
|
13
|
+
private validateExportFileName;
|
|
11
14
|
exportProducts(ctx: RequestContext, res: Response, fileName: string, customFields: string, exportAssetsAs: 'url' | 'json', selectedExportFields: string, selection: ID[]): Promise<void>;
|
|
12
15
|
exportAllProducts(ctx: RequestContext, fileName: string, customFields: string, exportAssetsAs: 'url' | 'json', selectedExportFields: string): Promise<{
|
|
13
16
|
success: boolean;
|
|
@@ -23,10 +26,6 @@ export declare class ProductExportController {
|
|
|
23
26
|
name: string;
|
|
24
27
|
type: string;
|
|
25
28
|
}[]>;
|
|
26
|
-
getExportFiles(ctx: RequestContext): Promise<
|
|
27
|
-
|
|
28
|
-
size: number;
|
|
29
|
-
created: Date;
|
|
30
|
-
modified: Date;
|
|
31
|
-
}[]>;
|
|
29
|
+
getExportFiles(ctx: RequestContext): Promise<import("../services/export-storage/export-storage-strategy").ExportedFileMetadata[]>;
|
|
30
|
+
private sanitizeFileName;
|
|
32
31
|
}
|
|
@@ -1,43 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
7
|
};
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
10
|
};
|
|
@@ -50,18 +17,35 @@ const core_1 = require("@vendure/core");
|
|
|
50
17
|
const common_1 = require("@nestjs/common");
|
|
51
18
|
const product_export_service_1 = require("../services/product-export.service");
|
|
52
19
|
const product_export_queue_service_1 = require("../services/product-export-queue.service");
|
|
53
|
-
const fs_1 = require("fs");
|
|
54
|
-
const path = __importStar(require("path"));
|
|
55
20
|
const constants_1 = require("../constants");
|
|
56
21
|
let ProductExportController = class ProductExportController {
|
|
57
22
|
options;
|
|
23
|
+
exportStorageStrategy;
|
|
58
24
|
productExportService;
|
|
59
25
|
productExportQueueService;
|
|
60
|
-
constructor(options, productExportService, productExportQueueService) {
|
|
26
|
+
constructor(options, exportStorageStrategy, productExportService, productExportQueueService) {
|
|
61
27
|
this.options = options;
|
|
28
|
+
this.exportStorageStrategy = exportStorageStrategy;
|
|
62
29
|
this.productExportService = productExportService;
|
|
63
30
|
this.productExportQueueService = productExportQueueService;
|
|
64
31
|
}
|
|
32
|
+
validateExportFileName(fileName) {
|
|
33
|
+
const trimmed = fileName.trim();
|
|
34
|
+
if (!trimmed) {
|
|
35
|
+
throw new Error('Invalid fileName');
|
|
36
|
+
}
|
|
37
|
+
if (trimmed.includes('/') || trimmed.includes('\\')) {
|
|
38
|
+
throw new Error('Invalid fileName');
|
|
39
|
+
}
|
|
40
|
+
if (trimmed.includes('..')) {
|
|
41
|
+
throw new Error('Invalid fileName');
|
|
42
|
+
}
|
|
43
|
+
// Prevent header injection in the download route.
|
|
44
|
+
if (/[\r\n"]/g.test(trimmed)) {
|
|
45
|
+
throw new Error('Invalid fileName');
|
|
46
|
+
}
|
|
47
|
+
return trimmed;
|
|
48
|
+
}
|
|
65
49
|
async exportProducts(ctx, res, fileName, customFields, exportAssetsAs, selectedExportFields, selection) {
|
|
66
50
|
try {
|
|
67
51
|
if (!selection ||
|
|
@@ -82,6 +66,7 @@ let ProductExportController = class ProductExportController {
|
|
|
82
66
|
else if (!fileName.endsWith('.csv')) {
|
|
83
67
|
fileName += '.csv';
|
|
84
68
|
}
|
|
69
|
+
fileName = this.validateExportFileName(fileName);
|
|
85
70
|
if (!customFields) {
|
|
86
71
|
customFields = '';
|
|
87
72
|
}
|
|
@@ -110,6 +95,7 @@ let ProductExportController = class ProductExportController {
|
|
|
110
95
|
if (!fileName.endsWith('.csv')) {
|
|
111
96
|
fileName += '.csv';
|
|
112
97
|
}
|
|
98
|
+
fileName = this.validateExportFileName(fileName);
|
|
113
99
|
if (!customFields) {
|
|
114
100
|
customFields = '';
|
|
115
101
|
}
|
|
@@ -126,21 +112,14 @@ let ProductExportController = class ProductExportController {
|
|
|
126
112
|
}
|
|
127
113
|
async downloadExport(ctx, res, fileName) {
|
|
128
114
|
try {
|
|
129
|
-
const
|
|
130
|
-
const
|
|
131
|
-
const filePath = path.join(exportsDir, fileName);
|
|
132
|
-
if (!filePath.startsWith(exportsDir)) {
|
|
133
|
-
throw new common_1.UnprocessableEntityException('Invalid file path');
|
|
134
|
-
}
|
|
135
|
-
if (!(0, fs_1.existsSync)(filePath)) {
|
|
136
|
-
throw new common_1.UnprocessableEntityException('File not found');
|
|
137
|
-
}
|
|
115
|
+
const validatedFileName = this.validateExportFileName(fileName);
|
|
116
|
+
const sanitizedFileName = this.sanitizeFileName(validatedFileName);
|
|
138
117
|
res.set({
|
|
139
118
|
'Content-Type': 'text/csv',
|
|
140
|
-
'Content-Disposition': `attachment; filename="${
|
|
119
|
+
'Content-Disposition': `attachment; filename="${sanitizedFileName}"`,
|
|
141
120
|
});
|
|
142
|
-
const
|
|
143
|
-
|
|
121
|
+
const stream = await this.exportStorageStrategy.getExportFileStream(ctx, validatedFileName);
|
|
122
|
+
stream.pipe(res);
|
|
144
123
|
}
|
|
145
124
|
catch (e) {
|
|
146
125
|
throw new common_1.UnprocessableEntityException(e.message);
|
|
@@ -148,16 +127,8 @@ let ProductExportController = class ProductExportController {
|
|
|
148
127
|
}
|
|
149
128
|
async deleteExport(ctx, fileName) {
|
|
150
129
|
try {
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
const filePath = path.join(exportsDir, fileName);
|
|
154
|
-
if (!filePath.startsWith(exportsDir)) {
|
|
155
|
-
throw new common_1.UnprocessableEntityException('Invalid file path');
|
|
156
|
-
}
|
|
157
|
-
if (!(0, fs_1.existsSync)(filePath)) {
|
|
158
|
-
throw new common_1.UnprocessableEntityException('File not found');
|
|
159
|
-
}
|
|
160
|
-
await fs_1.promises.unlink(filePath);
|
|
130
|
+
const validatedFileName = this.validateExportFileName(fileName);
|
|
131
|
+
await this.exportStorageStrategy.deleteExportFile(ctx, validatedFileName);
|
|
161
132
|
return {
|
|
162
133
|
success: true,
|
|
163
134
|
message: 'File deleted successfully',
|
|
@@ -172,30 +143,19 @@ let ProductExportController = class ProductExportController {
|
|
|
172
143
|
}
|
|
173
144
|
async getExportFiles(ctx) {
|
|
174
145
|
try {
|
|
175
|
-
|
|
176
|
-
const exportsDir = path.join(process.cwd(), 'static', 'exports', channelToken);
|
|
177
|
-
if (!(0, fs_1.existsSync)(exportsDir)) {
|
|
178
|
-
return [];
|
|
179
|
-
}
|
|
180
|
-
const files = await fs_1.promises.readdir(exportsDir);
|
|
181
|
-
const fileList = await Promise.all(files
|
|
182
|
-
.filter((file) => file.endsWith('.csv') && !file.endsWith('.tmp'))
|
|
183
|
-
.map(async (file) => {
|
|
184
|
-
const filePath = path.join(exportsDir, file);
|
|
185
|
-
const stats = await fs_1.promises.stat(filePath);
|
|
186
|
-
return {
|
|
187
|
-
fileName: file,
|
|
188
|
-
size: stats.size,
|
|
189
|
-
created: stats.birthtime,
|
|
190
|
-
modified: stats.mtime,
|
|
191
|
-
};
|
|
192
|
-
}));
|
|
193
|
-
return fileList.sort((a, b) => b.created.getTime() - a.created.getTime());
|
|
146
|
+
return await this.exportStorageStrategy.listExportFiles(ctx);
|
|
194
147
|
}
|
|
195
148
|
catch (e) {
|
|
196
149
|
throw new common_1.UnprocessableEntityException(e.message);
|
|
197
150
|
}
|
|
198
151
|
}
|
|
152
|
+
sanitizeFileName(fileName) {
|
|
153
|
+
const cleaned = fileName.replace(/[\r\n"]/g, '');
|
|
154
|
+
if (!cleaned || cleaned.trim().length === 0) {
|
|
155
|
+
return 'export.csv';
|
|
156
|
+
}
|
|
157
|
+
return cleaned;
|
|
158
|
+
}
|
|
199
159
|
};
|
|
200
160
|
exports.ProductExportController = ProductExportController;
|
|
201
161
|
__decorate([
|
|
@@ -257,7 +217,8 @@ __decorate([
|
|
|
257
217
|
exports.ProductExportController = ProductExportController = __decorate([
|
|
258
218
|
(0, common_1.Controller)('product-export'),
|
|
259
219
|
__param(0, (0, common_1.Inject)(constants_1.PRODUCT_IMPORT_EXPORT_PLUGIN_OPTIONS)),
|
|
260
|
-
|
|
220
|
+
__param(1, (0, common_1.Inject)(constants_1.EXPORT_STORAGE_STRATEGY)),
|
|
221
|
+
__metadata("design:paramtypes", [Object, Object, product_export_service_1.ProductExportService,
|
|
261
222
|
product_export_queue_service_1.ProductExportQueueService])
|
|
262
223
|
], ProductExportController);
|
|
263
224
|
//# sourceMappingURL=product-export.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-export.controller.js","sourceRoot":"","sources":["../../../../../packages/product-import-export-plugin/src/api/product-export.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"product-export.controller.js","sourceRoot":"","sources":["../../../../../packages/product-import-export-plugin/src/api/product-export.controller.ts"],"names":[],"mappings":"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"}
|
package/src/constants.d.ts
CHANGED
package/src/constants.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loggerCtx = exports.PRODUCT_IMPORT_EXPORT_PLUGIN_OPTIONS = void 0;
|
|
3
|
+
exports.loggerCtx = exports.EXPORT_STORAGE_STRATEGY = exports.PRODUCT_IMPORT_EXPORT_PLUGIN_OPTIONS = void 0;
|
|
4
4
|
exports.PRODUCT_IMPORT_EXPORT_PLUGIN_OPTIONS = Symbol('PRODUCT_IMPORT_EXPORT_PLUGIN_OPTIONS');
|
|
5
|
+
exports.EXPORT_STORAGE_STRATEGY = Symbol('EXPORT_STORAGE_STRATEGY');
|
|
5
6
|
exports.loggerCtx = 'ProductImportExportPlugin';
|
|
6
7
|
//# sourceMappingURL=constants.js.map
|
package/src/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../packages/product-import-export-plugin/src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oCAAoC,GAAG,MAAM,CAAC,sCAAsC,CAAC,CAAA;AACrF,QAAA,SAAS,GAAG,2BAA2B,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../packages/product-import-export-plugin/src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oCAAoC,GAAG,MAAM,CAAC,sCAAsC,CAAC,CAAA;AACrF,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAC3D,QAAA,SAAS,GAAG,2BAA2B,CAAA"}
|
package/src/index.d.ts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
export * from './product-import-export.plugin';
|
|
2
2
|
export type { PluginInitOptions, UpdatingStrategy, JsonAsset } from './types';
|
|
3
|
+
export * from './services/export-storage/export-storage-strategy';
|
|
4
|
+
export * from './services/export-storage/local-export-storage-strategy';
|
|
5
|
+
export * from './services/export-storage/s3-export-storage-strategy';
|
|
6
|
+
export type { S3ExportStorageConfig } from './services/export-storage.util';
|
package/src/index.js
CHANGED
|
@@ -15,4 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./product-import-export.plugin"), exports);
|
|
18
|
+
__exportStar(require("./services/export-storage/export-storage-strategy"), exports);
|
|
19
|
+
__exportStar(require("./services/export-storage/local-export-storage-strategy"), exports);
|
|
20
|
+
__exportStar(require("./services/export-storage/s3-export-storage-strategy"), exports);
|
|
18
21
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/product-import-export-plugin/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA8C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/product-import-export-plugin/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA8C;AAG9C,oFAAiE;AACjE,0FAAuE;AACvE,uFAAoE"}
|
|
@@ -42,6 +42,7 @@ var ProductImportExportPlugin_1;
|
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
43
|
exports.ProductImportExportPlugin = void 0;
|
|
44
44
|
const core_1 = require("@vendure/core");
|
|
45
|
+
const core_2 = require("@nestjs/core");
|
|
45
46
|
const path = __importStar(require("path"));
|
|
46
47
|
const lodash_1 = require("lodash");
|
|
47
48
|
const constants_1 = require("./constants");
|
|
@@ -58,6 +59,7 @@ const product_import_service_1 = require("./services/product-import.service");
|
|
|
58
59
|
const extended_fast_importer_service_1 = require("./services/extended-fast-importer.service");
|
|
59
60
|
const product_export_service_1 = require("./services/product-export.service");
|
|
60
61
|
const product_export_queue_service_1 = require("./services/product-export-queue.service");
|
|
62
|
+
const local_export_storage_strategy_1 = require("./services/export-storage/local-export-storage-strategy");
|
|
61
63
|
let ProductImportExportPlugin = class ProductImportExportPlugin {
|
|
62
64
|
static { ProductImportExportPlugin_1 = this; }
|
|
63
65
|
static options;
|
|
@@ -69,6 +71,10 @@ let ProductImportExportPlugin = class ProductImportExportPlugin {
|
|
|
69
71
|
restoreSoftDeleted: true,
|
|
70
72
|
};
|
|
71
73
|
}
|
|
74
|
+
// Ensure exportOptions exists
|
|
75
|
+
if (!options.exportOptions) {
|
|
76
|
+
options.exportOptions = {};
|
|
77
|
+
}
|
|
72
78
|
// Setup export options
|
|
73
79
|
if (!options.exportOptions.defaultFileName) {
|
|
74
80
|
options.exportOptions.defaultFileName = 'products_export.csv';
|
|
@@ -137,6 +143,23 @@ exports.ProductImportExportPlugin = ProductImportExportPlugin = ProductImportExp
|
|
|
137
143
|
provide: constants_1.PRODUCT_IMPORT_EXPORT_PLUGIN_OPTIONS,
|
|
138
144
|
useFactory: () => ProductImportExportPlugin.options,
|
|
139
145
|
},
|
|
146
|
+
{
|
|
147
|
+
provide: constants_1.EXPORT_STORAGE_STRATEGY,
|
|
148
|
+
useFactory: async (moduleRef) => {
|
|
149
|
+
const exportOptions = ProductImportExportPlugin.options?.exportOptions;
|
|
150
|
+
const injector = new core_1.Injector(moduleRef);
|
|
151
|
+
if (exportOptions?.storageStrategy) {
|
|
152
|
+
return exportOptions.storageStrategy;
|
|
153
|
+
}
|
|
154
|
+
if (exportOptions?.storageStrategyFactory) {
|
|
155
|
+
return await exportOptions.storageStrategyFactory(injector);
|
|
156
|
+
}
|
|
157
|
+
return new local_export_storage_strategy_1.LocalExportStorageStrategy({
|
|
158
|
+
baseDir: path.join(process.cwd(), 'static', 'exports'),
|
|
159
|
+
});
|
|
160
|
+
},
|
|
161
|
+
inject: [core_2.ModuleRef],
|
|
162
|
+
},
|
|
140
163
|
product_import_service_1.ProductImportService,
|
|
141
164
|
product_importer_1.ProductImporter,
|
|
142
165
|
extended_fast_importer_service_1.ExtendedFastImporterService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-import-export.plugin.js","sourceRoot":"","sources":["../../../../packages/product-import-export-plugin/src/product-import-export.plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"product-import-export.plugin.js","sourceRoot":"","sources":["../../../../packages/product-import-export-plugin/src/product-import-export.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { RequestContext } from '@vendure/core';
|
|
2
|
+
import { Readable } from 'node:stream';
|
|
3
|
+
export type ExportedFileMetadata = {
|
|
4
|
+
fileName: string;
|
|
5
|
+
size: number;
|
|
6
|
+
created: Date;
|
|
7
|
+
modified: Date;
|
|
8
|
+
};
|
|
9
|
+
export interface ExportStorageStrategy {
|
|
10
|
+
/**
|
|
11
|
+
* @description
|
|
12
|
+
* Store the completed export file (already written on local disk) and make it retrievable
|
|
13
|
+
* via the `fileName` in the controller routes.
|
|
14
|
+
*/
|
|
15
|
+
storeExportFile(ctx: RequestContext, fileName: string, localFilePath: string): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* @description
|
|
18
|
+
* Returns a readable stream for an exported file.
|
|
19
|
+
*/
|
|
20
|
+
getExportFileStream(ctx: RequestContext, fileName: string): Promise<Readable>;
|
|
21
|
+
/**
|
|
22
|
+
* @description
|
|
23
|
+
* Lists all exported files for the current channel.
|
|
24
|
+
*/
|
|
25
|
+
listExportFiles(ctx: RequestContext): Promise<ExportedFileMetadata[]>;
|
|
26
|
+
/**
|
|
27
|
+
* @description
|
|
28
|
+
* Deletes an exported file for the current channel.
|
|
29
|
+
*/
|
|
30
|
+
deleteExportFile(ctx: RequestContext, fileName: string): Promise<void>;
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-storage-strategy.js","sourceRoot":"","sources":["../../../../../../packages/product-import-export-plugin/src/services/export-storage/export-storage-strategy.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RequestContext } from '@vendure/core';
|
|
2
|
+
import { Readable } from 'node:stream';
|
|
3
|
+
import { ExportedFileMetadata, ExportStorageStrategy } from './export-storage-strategy';
|
|
4
|
+
export type LocalExportStorageStrategyOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* @description
|
|
7
|
+
* Base directory in which exported files are stored.
|
|
8
|
+
* Files are stored under `<baseDir>/<channelToken>/`.
|
|
9
|
+
*/
|
|
10
|
+
baseDir: string;
|
|
11
|
+
};
|
|
12
|
+
export declare class LocalExportStorageStrategy implements ExportStorageStrategy {
|
|
13
|
+
private options;
|
|
14
|
+
constructor(options: LocalExportStorageStrategyOptions);
|
|
15
|
+
storeExportFile(ctx: RequestContext, fileName: string, localFilePath: string): Promise<void>;
|
|
16
|
+
getExportFileStream(ctx: RequestContext, fileName: string): Promise<Readable>;
|
|
17
|
+
listExportFiles(ctx: RequestContext): Promise<ExportedFileMetadata[]>;
|
|
18
|
+
deleteExportFile(ctx: RequestContext, fileName: string): Promise<void>;
|
|
19
|
+
private getExportsDir;
|
|
20
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.LocalExportStorageStrategy = void 0;
|
|
37
|
+
const node_fs_1 = require("node:fs");
|
|
38
|
+
const path = __importStar(require("node:path"));
|
|
39
|
+
class LocalExportStorageStrategy {
|
|
40
|
+
options;
|
|
41
|
+
constructor(options) {
|
|
42
|
+
this.options = options;
|
|
43
|
+
}
|
|
44
|
+
async storeExportFile(ctx, fileName, localFilePath) {
|
|
45
|
+
const exportsDir = this.getExportsDir(ctx);
|
|
46
|
+
await node_fs_1.promises.mkdir(exportsDir, { recursive: true });
|
|
47
|
+
const destinationPath = path.join(exportsDir, fileName);
|
|
48
|
+
// Move into final location. If rename fails (e.g. cross-device), fall back to copy+unlink.
|
|
49
|
+
try {
|
|
50
|
+
await node_fs_1.promises.rename(localFilePath, destinationPath);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
// ignore, fall back below
|
|
55
|
+
}
|
|
56
|
+
await node_fs_1.promises.copyFile(localFilePath, destinationPath);
|
|
57
|
+
await node_fs_1.promises.unlink(localFilePath);
|
|
58
|
+
}
|
|
59
|
+
async getExportFileStream(ctx, fileName) {
|
|
60
|
+
const exportsDir = this.getExportsDir(ctx);
|
|
61
|
+
const filePath = path.join(exportsDir, fileName);
|
|
62
|
+
if (!filePath.startsWith(exportsDir)) {
|
|
63
|
+
throw new Error('Invalid file path');
|
|
64
|
+
}
|
|
65
|
+
if (!(0, node_fs_1.existsSync)(filePath)) {
|
|
66
|
+
throw new Error('File not found');
|
|
67
|
+
}
|
|
68
|
+
return (0, node_fs_1.createReadStream)(filePath);
|
|
69
|
+
}
|
|
70
|
+
async listExportFiles(ctx) {
|
|
71
|
+
const exportsDir = this.getExportsDir(ctx);
|
|
72
|
+
if (!(0, node_fs_1.existsSync)(exportsDir)) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
const files = await node_fs_1.promises.readdir(exportsDir);
|
|
76
|
+
const csvFiles = files.filter((file) => file.endsWith('.csv') && !file.endsWith('.tmp'));
|
|
77
|
+
const fileList = await Promise.all(csvFiles.map(async (file) => {
|
|
78
|
+
const filePath = path.join(exportsDir, file);
|
|
79
|
+
const stats = await node_fs_1.promises.stat(filePath);
|
|
80
|
+
return {
|
|
81
|
+
fileName: file,
|
|
82
|
+
size: stats.size,
|
|
83
|
+
created: stats.birthtime,
|
|
84
|
+
modified: stats.mtime,
|
|
85
|
+
};
|
|
86
|
+
}));
|
|
87
|
+
return fileList.sort((a, b) => b.created.getTime() - a.created.getTime());
|
|
88
|
+
}
|
|
89
|
+
async deleteExportFile(ctx, fileName) {
|
|
90
|
+
const exportsDir = this.getExportsDir(ctx);
|
|
91
|
+
const filePath = path.join(exportsDir, fileName);
|
|
92
|
+
if (!filePath.startsWith(exportsDir)) {
|
|
93
|
+
throw new Error('Invalid file path');
|
|
94
|
+
}
|
|
95
|
+
if (!(0, node_fs_1.existsSync)(filePath)) {
|
|
96
|
+
throw new Error('File not found');
|
|
97
|
+
}
|
|
98
|
+
await node_fs_1.promises.unlink(filePath);
|
|
99
|
+
}
|
|
100
|
+
getExportsDir(ctx) {
|
|
101
|
+
const channelToken = ctx.channel.token;
|
|
102
|
+
return path.join(this.options.baseDir, channelToken);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.LocalExportStorageStrategy = LocalExportStorageStrategy;
|
|
106
|
+
//# sourceMappingURL=local-export-storage-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-export-storage-strategy.js","sourceRoot":"","sources":["../../../../../../packages/product-import-export-plugin/src/services/export-storage/local-export-storage-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { RequestContext } from '@vendure/core';
|
|
2
|
+
import { Readable } from 'node:stream';
|
|
3
|
+
import { ExportedFileMetadata, ExportStorageStrategy } from './export-storage-strategy';
|
|
4
|
+
import { S3ExportStorageConfig } from '../export-storage.util';
|
|
5
|
+
export type S3ExportStorageStrategyOptions = {
|
|
6
|
+
storage: S3ExportStorageConfig;
|
|
7
|
+
};
|
|
8
|
+
export declare class S3ExportStorageStrategy implements ExportStorageStrategy {
|
|
9
|
+
private storage;
|
|
10
|
+
constructor(options: S3ExportStorageStrategyOptions);
|
|
11
|
+
storeExportFile(ctx: RequestContext, fileName: string, localFilePath: string): Promise<void>;
|
|
12
|
+
getExportFileStream(ctx: RequestContext, fileName: string): Promise<Readable>;
|
|
13
|
+
listExportFiles(ctx: RequestContext): Promise<ExportedFileMetadata[]>;
|
|
14
|
+
deleteExportFile(ctx: RequestContext, fileName: string): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.S3ExportStorageStrategy = void 0;
|
|
37
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
38
|
+
const node_fs_1 = require("node:fs");
|
|
39
|
+
const path = __importStar(require("node:path"));
|
|
40
|
+
const export_storage_util_1 = require("../export-storage.util");
|
|
41
|
+
class S3ExportStorageStrategy {
|
|
42
|
+
storage;
|
|
43
|
+
constructor(options) {
|
|
44
|
+
this.storage = options.storage;
|
|
45
|
+
}
|
|
46
|
+
async storeExportFile(ctx, fileName, localFilePath) {
|
|
47
|
+
const client = (0, export_storage_util_1.createS3Client)(this.storage);
|
|
48
|
+
const channelToken = ctx.channel.token;
|
|
49
|
+
const channelPrefix = (0, export_storage_util_1.buildExportObjectKey)(this.storage, channelToken, '');
|
|
50
|
+
const objectKey = (0, export_storage_util_1.buildExportObjectKey)(this.storage, channelToken, fileName);
|
|
51
|
+
if (!objectKey.startsWith(channelPrefix)) {
|
|
52
|
+
throw new Error('Invalid object key');
|
|
53
|
+
}
|
|
54
|
+
await client.send(new client_s3_1.PutObjectCommand({
|
|
55
|
+
Bucket: this.storage.bucket,
|
|
56
|
+
Key: objectKey,
|
|
57
|
+
Body: (0, node_fs_1.createReadStream)(localFilePath),
|
|
58
|
+
ContentType: 'text/csv',
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
async getExportFileStream(ctx, fileName) {
|
|
62
|
+
const client = (0, export_storage_util_1.createS3Client)(this.storage);
|
|
63
|
+
const channelToken = ctx.channel.token;
|
|
64
|
+
const channelPrefix = (0, export_storage_util_1.buildExportObjectKey)(this.storage, channelToken, '');
|
|
65
|
+
const key = (0, export_storage_util_1.buildExportObjectKey)(this.storage, channelToken, fileName);
|
|
66
|
+
if (!key.startsWith(channelPrefix)) {
|
|
67
|
+
throw new Error('Invalid object key');
|
|
68
|
+
}
|
|
69
|
+
const result = await client.send(new client_s3_1.GetObjectCommand({
|
|
70
|
+
Bucket: this.storage.bucket,
|
|
71
|
+
Key: key,
|
|
72
|
+
}));
|
|
73
|
+
if (!result.Body) {
|
|
74
|
+
throw new Error('File not found');
|
|
75
|
+
}
|
|
76
|
+
return result.Body;
|
|
77
|
+
}
|
|
78
|
+
async listExportFiles(ctx) {
|
|
79
|
+
const client = (0, export_storage_util_1.createS3Client)(this.storage);
|
|
80
|
+
const channelToken = ctx.channel.token;
|
|
81
|
+
const prefix = (0, export_storage_util_1.buildExportObjectKey)(this.storage, channelToken, '');
|
|
82
|
+
const normalizedPrefix = prefix.endsWith('/') ? prefix : `${prefix}`;
|
|
83
|
+
const allContents = [];
|
|
84
|
+
let continuationToken;
|
|
85
|
+
do {
|
|
86
|
+
const result = await client.send(new client_s3_1.ListObjectsV2Command({
|
|
87
|
+
Bucket: this.storage.bucket,
|
|
88
|
+
Prefix: normalizedPrefix,
|
|
89
|
+
ContinuationToken: continuationToken,
|
|
90
|
+
}));
|
|
91
|
+
if (result.Contents) {
|
|
92
|
+
allContents.push(...result.Contents);
|
|
93
|
+
}
|
|
94
|
+
continuationToken = result.NextContinuationToken;
|
|
95
|
+
} while (continuationToken);
|
|
96
|
+
const fileList = allContents
|
|
97
|
+
.filter((object) => {
|
|
98
|
+
if (!object.Key) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return object.Key.endsWith('.csv') && !object.Key.endsWith('.tmp');
|
|
102
|
+
})
|
|
103
|
+
.map((object) => {
|
|
104
|
+
const key = object.Key;
|
|
105
|
+
const file = path.posix.basename(key);
|
|
106
|
+
return {
|
|
107
|
+
fileName: file,
|
|
108
|
+
size: object.Size ?? 0,
|
|
109
|
+
created: object.LastModified ?? new Date(),
|
|
110
|
+
modified: object.LastModified ?? new Date(),
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
return fileList.sort((a, b) => b.created.getTime() - a.created.getTime());
|
|
114
|
+
}
|
|
115
|
+
async deleteExportFile(ctx, fileName) {
|
|
116
|
+
const client = (0, export_storage_util_1.createS3Client)(this.storage);
|
|
117
|
+
const channelToken = ctx.channel.token;
|
|
118
|
+
const channelPrefix = (0, export_storage_util_1.buildExportObjectKey)(this.storage, channelToken, '');
|
|
119
|
+
const key = (0, export_storage_util_1.buildExportObjectKey)(this.storage, channelToken, fileName);
|
|
120
|
+
if (!key.startsWith(channelPrefix)) {
|
|
121
|
+
throw new Error('Invalid object key');
|
|
122
|
+
}
|
|
123
|
+
await client.send(new client_s3_1.DeleteObjectCommand({
|
|
124
|
+
Bucket: this.storage.bucket,
|
|
125
|
+
Key: key,
|
|
126
|
+
}));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.S3ExportStorageStrategy = S3ExportStorageStrategy;
|
|
130
|
+
//# sourceMappingURL=s3-export-storage-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-export-storage-strategy.js","sourceRoot":"","sources":["../../../../../../packages/product-import-export-plugin/src/services/export-storage/s3-export-storage-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { S3Client } from '@aws-sdk/client-s3';
|
|
2
|
+
import type { AwsCredentialIdentity, AwsCredentialIdentityProvider } from '@aws-sdk/types';
|
|
3
|
+
export type S3ExportStorageConfig = {
|
|
4
|
+
bucket: string;
|
|
5
|
+
baseKeyPrefix?: string;
|
|
6
|
+
credentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider;
|
|
7
|
+
nativeS3Configuration?: Record<string, unknown>;
|
|
8
|
+
nativeS3UploadConfiguration?: Record<string, unknown>;
|
|
9
|
+
};
|
|
10
|
+
export declare function createS3Client(storage: S3ExportStorageConfig): S3Client;
|
|
11
|
+
/**
|
|
12
|
+
* Build an S3 object key that is guaranteed to stay under the channel prefix.
|
|
13
|
+
*
|
|
14
|
+
* @param storage - S3 storage configuration.
|
|
15
|
+
* @param channelToken - Current channel token.
|
|
16
|
+
* @param fileName - Basename only (e.g. `export.csv`). Directory separators and traversal sequences are rejected.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildExportObjectKey(storage: S3ExportStorageConfig, channelToken: string, fileName: string): string;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createS3Client = createS3Client;
|
|
37
|
+
exports.buildExportObjectKey = buildExportObjectKey;
|
|
38
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
39
|
+
const path = __importStar(require("node:path"));
|
|
40
|
+
function createS3Client(storage) {
|
|
41
|
+
const config = {
|
|
42
|
+
...(storage.nativeS3Configuration ?? {}),
|
|
43
|
+
credentials: storage.credentials,
|
|
44
|
+
};
|
|
45
|
+
return new client_s3_1.S3Client(config);
|
|
46
|
+
}
|
|
47
|
+
function normalizeExportFileNameForObjectKey(fileName) {
|
|
48
|
+
if (fileName === '') {
|
|
49
|
+
return '';
|
|
50
|
+
}
|
|
51
|
+
const trimmed = fileName.trim();
|
|
52
|
+
if (!trimmed) {
|
|
53
|
+
throw new Error('Invalid fileName');
|
|
54
|
+
}
|
|
55
|
+
// Prevent path traversal / virtual directory injection in S3 object keys.
|
|
56
|
+
if (trimmed.includes('/') || trimmed.includes('\\')) {
|
|
57
|
+
throw new Error('Invalid fileName');
|
|
58
|
+
}
|
|
59
|
+
if (trimmed.includes('..')) {
|
|
60
|
+
throw new Error('Invalid fileName');
|
|
61
|
+
}
|
|
62
|
+
const base = path.posix.basename(trimmed);
|
|
63
|
+
if (base !== trimmed) {
|
|
64
|
+
throw new Error('Invalid fileName');
|
|
65
|
+
}
|
|
66
|
+
return base;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Build an S3 object key that is guaranteed to stay under the channel prefix.
|
|
70
|
+
*
|
|
71
|
+
* @param storage - S3 storage configuration.
|
|
72
|
+
* @param channelToken - Current channel token.
|
|
73
|
+
* @param fileName - Basename only (e.g. `export.csv`). Directory separators and traversal sequences are rejected.
|
|
74
|
+
*/
|
|
75
|
+
function buildExportObjectKey(storage, channelToken, fileName) {
|
|
76
|
+
const prefix = storage.baseKeyPrefix ?? 'exports/';
|
|
77
|
+
const normalizedPrefix = prefix.endsWith('/') ? prefix : `${prefix}/`;
|
|
78
|
+
const normalizedFileName = normalizeExportFileNameForObjectKey(fileName);
|
|
79
|
+
return `${normalizedPrefix}${channelToken}/${normalizedFileName}`;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=export-storage.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-storage.util.js","sourceRoot":"","sources":["../../../../../packages/product-import-export-plugin/src/services/export-storage.util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,wCAOC;AAoCD,oDAUC;AAjED,kDAAkE;AAElE,gDAAiC;AAUjC,SAAgB,cAAc,CAAC,OAA8B;IAC3D,MAAM,MAAM,GAAmB;QAC7B,GAAG,CAAC,OAAO,CAAC,qBAAqB,IAAI,EAAE,CAAC;QACxC,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAA;IAED,OAAO,IAAI,oBAAQ,CAAC,MAAM,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,mCAAmC,CAAC,QAAgB;IAC3D,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,0EAA0E;IAC1E,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACzC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAClC,OAA8B,EAC9B,YAAoB,EACpB,QAAgB;IAEhB,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,IAAI,UAAU,CAAA;IAClD,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAA;IAErE,MAAM,kBAAkB,GAAG,mCAAmC,CAAC,QAAQ,CAAC,CAAA;IACxE,OAAO,GAAG,gBAAgB,GAAG,YAAY,IAAI,kBAAkB,EAAE,CAAA;AACnE,CAAC"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { ID, ProductService, RequestContext, StockLevelService, ChannelService, ConfigService, Product, LanguageCode } from '@vendure/core';
|
|
2
2
|
import { PluginInitOptions } from '../types';
|
|
3
3
|
import { CsvWriter } from 'csv-writer/src/lib/csv-writer';
|
|
4
|
+
import { ExportStorageStrategy } from './export-storage/export-storage-strategy';
|
|
4
5
|
export type RelationType = 'string' | 'boolean' | 'localeString' | 'text' | 'localeText' | 'int' | 'float' | 'datetime' | 'relation';
|
|
5
6
|
export declare class ProductExportService {
|
|
6
7
|
private options;
|
|
8
|
+
private exportStorageStrategy;
|
|
7
9
|
private productService;
|
|
8
10
|
private stockLevelService;
|
|
9
11
|
private channelService;
|
|
10
12
|
private configService;
|
|
11
|
-
constructor(options: PluginInitOptions, productService: ProductService, stockLevelService: StockLevelService, channelService: ChannelService, configService: ConfigService);
|
|
13
|
+
constructor(options: PluginInitOptions, exportStorageStrategy: ExportStorageStrategy, productService: ProductService, stockLevelService: StockLevelService, channelService: ChannelService, configService: ConfigService);
|
|
12
14
|
createExportFile(ctx: RequestContext, selectionIds: ID[], fileName: string, selectedCustomFields: string, exportAssetsAs: 'url' | 'json', selectedExportFields: string, pageSize?: number, concurrency?: number): Promise<string>;
|
|
13
15
|
exportProduct(ctx: RequestContext, product: Product, languages: LanguageCode[], filteredCustomFieldNames: string[], exportAssetsAs: 'url' | 'json', csvWriter: CsvWriter<any>): Promise<void>;
|
|
14
16
|
private handleAssets;
|
|
@@ -73,12 +73,14 @@ function formatTimestampForFilename(date = new Date()) {
|
|
|
73
73
|
}
|
|
74
74
|
let ProductExportService = class ProductExportService {
|
|
75
75
|
options;
|
|
76
|
+
exportStorageStrategy;
|
|
76
77
|
productService;
|
|
77
78
|
stockLevelService;
|
|
78
79
|
channelService;
|
|
79
80
|
configService;
|
|
80
|
-
constructor(options, productService, stockLevelService, channelService, configService) {
|
|
81
|
+
constructor(options, exportStorageStrategy, productService, stockLevelService, channelService, configService) {
|
|
81
82
|
this.options = options;
|
|
83
|
+
this.exportStorageStrategy = exportStorageStrategy;
|
|
82
84
|
this.productService = productService;
|
|
83
85
|
this.stockLevelService = stockLevelService;
|
|
84
86
|
this.channelService = channelService;
|
|
@@ -99,15 +101,15 @@ let ProductExportService = class ProductExportService {
|
|
|
99
101
|
return found ? `${found.name}:${found.type}` : '';
|
|
100
102
|
});
|
|
101
103
|
const channelToken = channel.token;
|
|
102
|
-
const
|
|
103
|
-
if (!(0, fs_1.existsSync)(
|
|
104
|
-
(0, fs_1.mkdirSync)(
|
|
104
|
+
const tempDir = path.join(process.cwd(), 'static', 'exports-tmp', channelToken);
|
|
105
|
+
if (!(0, fs_1.existsSync)(tempDir)) {
|
|
106
|
+
(0, fs_1.mkdirSync)(tempDir, { recursive: true });
|
|
105
107
|
}
|
|
106
108
|
// Add timestamp to filename to avoid conflicts
|
|
107
109
|
const timestamp = formatTimestampForFilename();
|
|
108
110
|
const { name, ext } = path.parse(fileName);
|
|
109
111
|
const timestampedFileName = `${name}_${timestamp}${ext}`;
|
|
110
|
-
const finalExportFile = path.join(
|
|
112
|
+
const finalExportFile = path.join(tempDir, timestampedFileName);
|
|
111
113
|
// Use .tmp extension during export, rename to final name when complete to prevent it from being listed in ui without being completed
|
|
112
114
|
const exportFile = `${finalExportFile}.tmp`;
|
|
113
115
|
const headers = [];
|
|
@@ -171,17 +173,29 @@ let ProductExportService = class ProductExportService {
|
|
|
171
173
|
}
|
|
172
174
|
// Rename .tmp file to final name when export is complete
|
|
173
175
|
await fs_1.promises.rename(exportFile, finalExportFile);
|
|
174
|
-
|
|
176
|
+
await this.exportStorageStrategy.storeExportFile(ctx, timestampedFileName, finalExportFile);
|
|
177
|
+
try {
|
|
178
|
+
if ((0, fs_1.existsSync)(finalExportFile)) {
|
|
179
|
+
await fs_1.promises.unlink(finalExportFile);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch (e) {
|
|
183
|
+
// ignore cleanup errors
|
|
184
|
+
}
|
|
185
|
+
return timestampedFileName;
|
|
175
186
|
}
|
|
176
187
|
catch (error) {
|
|
177
|
-
// Clean up
|
|
188
|
+
// Clean up any partial files if export or upload fails
|
|
178
189
|
try {
|
|
179
190
|
if ((0, fs_1.existsSync)(exportFile)) {
|
|
180
191
|
await fs_1.promises.unlink(exportFile);
|
|
181
192
|
}
|
|
193
|
+
if ((0, fs_1.existsSync)(finalExportFile)) {
|
|
194
|
+
await fs_1.promises.unlink(finalExportFile);
|
|
195
|
+
}
|
|
182
196
|
}
|
|
183
197
|
catch (cleanupErr) {
|
|
184
|
-
console.error('Failed to clean up
|
|
198
|
+
console.error('Failed to clean up export files:', cleanupErr);
|
|
185
199
|
}
|
|
186
200
|
throw error;
|
|
187
201
|
}
|
|
@@ -418,7 +432,8 @@ exports.ProductExportService = ProductExportService;
|
|
|
418
432
|
exports.ProductExportService = ProductExportService = __decorate([
|
|
419
433
|
(0, common_1.Injectable)(),
|
|
420
434
|
__param(0, (0, common_1.Inject)(constants_1.PRODUCT_IMPORT_EXPORT_PLUGIN_OPTIONS)),
|
|
421
|
-
|
|
435
|
+
__param(1, (0, common_1.Inject)(constants_1.EXPORT_STORAGE_STRATEGY)),
|
|
436
|
+
__metadata("design:paramtypes", [Object, Object, core_1.ProductService,
|
|
422
437
|
core_1.StockLevelService,
|
|
423
438
|
core_1.ChannelService,
|
|
424
439
|
core_1.ConfigService])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-export.service.js","sourceRoot":"","sources":["../../../../../packages/product-import-export-plugin/src/services/product-export.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"product-export.service.js","sourceRoot":"","sources":["../../../../../packages/product-import-export-plugin/src/services/product-export.service.ts"],"names":[],"mappings":"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"}
|
package/src/types.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ID } from '@vendure/core';
|
|
2
2
|
import { ParsedProduct, ParsedProductWithVariants } from './providers/import-providers/import-parser';
|
|
3
|
+
import type { Injector } from '@vendure/core';
|
|
4
|
+
import type { ExportStorageStrategy } from './services/export-storage/export-storage-strategy';
|
|
3
5
|
/**
|
|
4
6
|
* @description
|
|
5
7
|
* The plugin can be configured using the following options:
|
|
@@ -28,6 +30,17 @@ export interface PluginInitOptions {
|
|
|
28
30
|
defaultExportAssetsAs?: 'url' | 'json';
|
|
29
31
|
defaultExportFields?: ExportFields;
|
|
30
32
|
requiredExportFields?: ExportFields;
|
|
33
|
+
/**
|
|
34
|
+
* @description
|
|
35
|
+
* Preferred configuration: provide an export storage strategy instance directly.
|
|
36
|
+
* This matches Vendure's strategy-based plugin configuration style.
|
|
37
|
+
*/
|
|
38
|
+
storageStrategy?: ExportStorageStrategy;
|
|
39
|
+
/**
|
|
40
|
+
* @description
|
|
41
|
+
* Preferred configuration: provide a factory which can use Vendure's DI via the Injector.
|
|
42
|
+
*/
|
|
43
|
+
storageStrategyFactory?: (injector: Injector) => ExportStorageStrategy | Promise<ExportStorageStrategy>;
|
|
31
44
|
};
|
|
32
45
|
}
|
|
33
46
|
export type ParsedProductWithId = ParsedProductWithVariants & {
|