@haus-tech/product-import-export-plugin 3.1.10 → 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 +12 -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,15 @@
|
|
|
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
|
+
|
|
9
|
+
## 3.1.10
|
|
10
|
+
|
|
11
|
+
This was a version bump only for product-import-export-plugin to align it with other projects, there were no code changes.
|
|
12
|
+
|
|
1
13
|
## 3.1.9
|
|
2
14
|
|
|
3
15
|
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 & {
|