@things-factory/integration-sftp 4.0.25 → 4.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-server/service/sftp/sftp.js +14 -0
- package/dist-server/service/sftp/sftp.js.map +1 -1
- package/dist-server/sftp-const.js +4 -1
- package/dist-server/sftp-const.js.map +1 -1
- package/dist-server/sftp-s3.js +16 -5
- package/dist-server/sftp-s3.js.map +1 -1
- package/dist-server/util/generate-file.js +25 -0
- package/dist-server/util/generate-file.js.map +1 -0
- package/dist-server/util/index.js +1 -0
- package/dist-server/util/index.js.map +1 -1
- package/package.json +7 -7
- package/server/service/sftp/sftp.ts +12 -0
- package/server/sftp-const.ts +3 -0
- package/server/sftp-s3.ts +24 -5
- package/server/util/generate-file.ts +27 -0
- package/server/util/index.ts +1 -0
|
@@ -90,6 +90,20 @@ __decorate([
|
|
|
90
90
|
(0, typeorm_1.ManyToOne)(type => integration_fulfillment_1.FulfillmentCenter, { nullable: true }),
|
|
91
91
|
__metadata("design:type", typeof (_b = typeof integration_fulfillment_1.FulfillmentCenter !== "undefined" && integration_fulfillment_1.FulfillmentCenter) === "function" ? _b : Object)
|
|
92
92
|
], Sftp.prototype, "fulfillmentCenter", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, typeorm_1.Column)({
|
|
95
|
+
nullable: true
|
|
96
|
+
}),
|
|
97
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
98
|
+
__metadata("design:type", String)
|
|
99
|
+
], Sftp.prototype, "responseType", void 0);
|
|
100
|
+
__decorate([
|
|
101
|
+
(0, typeorm_1.Column)({
|
|
102
|
+
nullable: true
|
|
103
|
+
}),
|
|
104
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
105
|
+
__metadata("design:type", String)
|
|
106
|
+
], Sftp.prototype, "responseFilePattern", void 0);
|
|
93
107
|
__decorate([
|
|
94
108
|
(0, typeorm_1.CreateDateColumn)(),
|
|
95
109
|
(0, type_graphql_1.Field)({ nullable: true }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sftp.js","sourceRoot":"","sources":["../../../server/service/sftp/sftp.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,+CAAoD;AACpD,qCASgB;AAEhB,yDAAgD;AAChD,qFAA2E;AAC3E,iDAA8C;AAK9C,IAAa,IAAI,GAAjB,MAAa,IAAI;
|
|
1
|
+
{"version":3,"file":"sftp.js","sourceRoot":"","sources":["../../../server/service/sftp/sftp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FAILEDDATAPATH = exports.SUCCESSDATAPATH = exports.SUBMITDATAPATH = exports.SFTPFILESTORAGE = void 0;
|
|
3
|
+
exports.COMPLETEFAILEDDATAPATH = exports.COMPLETESUCCESSDATAPATH = exports.COMPLETEDATAPATH = exports.FAILEDDATAPATH = exports.SUCCESSDATAPATH = exports.SUBMITDATAPATH = exports.SFTPFILESTORAGE = void 0;
|
|
4
4
|
const env_1 = require("@things-factory/env");
|
|
5
5
|
exports.SFTPFILESTORAGE = env_1.config.get('sftpFileStorage');
|
|
6
6
|
exports.SUBMITDATAPATH = '/submit_outbound/data';
|
|
7
7
|
exports.SUCCESSDATAPATH = '/submit_outbound/success';
|
|
8
8
|
exports.FAILEDDATAPATH = '/submit_outbound/failed';
|
|
9
|
+
exports.COMPLETEDATAPATH = '/outbound_complete/data';
|
|
10
|
+
exports.COMPLETESUCCESSDATAPATH = '/outbound_complete/success';
|
|
11
|
+
exports.COMPLETEFAILEDDATAPATH = '/outbound_complete/failed';
|
|
9
12
|
//# sourceMappingURL=sftp-const.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sftp-const.js","sourceRoot":"","sources":["../server/sftp-const.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAEjC,QAAA,eAAe,GAAQ,YAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AACpD,QAAA,cAAc,GAAW,uBAAuB,CAAA;AAChD,QAAA,eAAe,GAAW,0BAA0B,CAAA;AACpD,QAAA,cAAc,GAAW,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"sftp-const.js","sourceRoot":"","sources":["../server/sftp-const.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAEjC,QAAA,eAAe,GAAQ,YAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AACpD,QAAA,cAAc,GAAW,uBAAuB,CAAA;AAChD,QAAA,eAAe,GAAW,0BAA0B,CAAA;AACpD,QAAA,cAAc,GAAW,yBAAyB,CAAA;AAClD,QAAA,gBAAgB,GAAW,yBAAyB,CAAA;AACpD,QAAA,uBAAuB,GAAW,4BAA4B,CAAA;AAC9D,QAAA,sBAAsB,GAAW,2BAA2B,CAAA"}
|
package/dist-server/sftp-s3.js
CHANGED
|
@@ -4,10 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const aws_sdk_1 = __importDefault(require("aws-sdk"));
|
|
7
|
+
const v4_1 = __importDefault(require("uuid/v4"));
|
|
7
8
|
const env_1 = require("@things-factory/env");
|
|
8
9
|
const sftp_const_1 = require("./sftp-const");
|
|
9
|
-
const { PassThrough } = require('stream');
|
|
10
|
-
const mime = require('mime');
|
|
11
10
|
const { fs } = require('memfs');
|
|
12
11
|
if (sftp_const_1.SFTPFILESTORAGE && sftp_const_1.SFTPFILESTORAGE.type == 's3') {
|
|
13
12
|
const S3 = new aws_sdk_1.default.S3({
|
|
@@ -15,13 +14,13 @@ if (sftp_const_1.SFTPFILESTORAGE && sftp_const_1.SFTPFILESTORAGE.type == 's3') {
|
|
|
15
14
|
secretAccessKey: sftp_const_1.SFTPFILESTORAGE.secretAccessKey
|
|
16
15
|
});
|
|
17
16
|
sftp_const_1.SFTPFILESTORAGE.readFolders = async (params, encoding) => {
|
|
18
|
-
|
|
17
|
+
let S3params = {
|
|
19
18
|
Bucket: sftp_const_1.SFTPFILESTORAGE.bucketName,
|
|
20
19
|
Delimiter: '/',
|
|
21
20
|
Prefix: params.path
|
|
22
21
|
};
|
|
23
22
|
const result = await S3.listObjects(S3params).promise();
|
|
24
|
-
|
|
23
|
+
let body = result.Contents;
|
|
25
24
|
return body;
|
|
26
25
|
};
|
|
27
26
|
sftp_const_1.SFTPFILESTORAGE.readFile = async (path, encoding) => {
|
|
@@ -41,13 +40,25 @@ if (sftp_const_1.SFTPFILESTORAGE && sftp_const_1.SFTPFILESTORAGE.type == 's3') {
|
|
|
41
40
|
CopySource: sftp_const_1.SFTPFILESTORAGE.bucketName + '/' + path.source,
|
|
42
41
|
Key: path.destination
|
|
43
42
|
}).promise();
|
|
44
|
-
|
|
43
|
+
const copyBody = copyResult.CopyObjectResult;
|
|
45
44
|
const deleteResult = await S3.deleteObject({
|
|
46
45
|
Bucket: sftp_const_1.SFTPFILESTORAGE.bucketName,
|
|
47
46
|
Key: path.source
|
|
48
47
|
}).promise();
|
|
49
48
|
return true;
|
|
50
49
|
};
|
|
50
|
+
/* upload file */
|
|
51
|
+
sftp_const_1.SFTPFILESTORAGE.uploadFile = ({ filename, uploadPath }) => {
|
|
52
|
+
const id = (0, v4_1.default)();
|
|
53
|
+
let size = 0;
|
|
54
|
+
// Read content from the file
|
|
55
|
+
const fileContent = fs.readFileSync(filename);
|
|
56
|
+
return new Promise((resolve, reject) => S3.upload({
|
|
57
|
+
Bucket: sftp_const_1.SFTPFILESTORAGE.bucketName,
|
|
58
|
+
Key: uploadPath,
|
|
59
|
+
Body: fileContent
|
|
60
|
+
}, (err, data) => (err ? reject(err) : resolve({ id, path: uploadPath, size }))));
|
|
61
|
+
};
|
|
51
62
|
env_1.logger.info('S3 Bucket Storage is Ready.');
|
|
52
63
|
}
|
|
53
64
|
//# sourceMappingURL=sftp-s3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sftp-s3.js","sourceRoot":"","sources":["../server/sftp-s3.ts"],"names":[],"mappings":";;;;;AAAA,sDAAyB;
|
|
1
|
+
{"version":3,"file":"sftp-s3.js","sourceRoot":"","sources":["../server/sftp-s3.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateFile = void 0;
|
|
4
|
+
require("../sftp-s3");
|
|
5
|
+
const sftp_const_1 = require("../sftp-const");
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
async function generateFile(params, context) {
|
|
8
|
+
const { uploadPath, content, title } = params;
|
|
9
|
+
const fileDirectory = './uploaded-files';
|
|
10
|
+
if (!fs.existsSync(fileDirectory)) {
|
|
11
|
+
fs.mkdirSync(fileDirectory);
|
|
12
|
+
}
|
|
13
|
+
const filePath = fileDirectory + '/' + title;
|
|
14
|
+
fs.writeFile(filePath, content, function (err) {
|
|
15
|
+
if (err)
|
|
16
|
+
throw err;
|
|
17
|
+
console.log('File is created successfully.');
|
|
18
|
+
});
|
|
19
|
+
if (uploadPath) {
|
|
20
|
+
await sftp_const_1.SFTPFILESTORAGE.uploadFile({ filename: filePath, uploadPath });
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
exports.generateFile = generateFile;
|
|
25
|
+
//# sourceMappingURL=generate-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-file.js","sourceRoot":"","sources":["../../server/util/generate-file.ts"],"names":[],"mappings":";;;AAAA,sBAAmB;AAEnB,8CAA+C;AAE/C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEjB,KAAK,UAAU,YAAY,CAAC,MAAW,EAAE,OAAY;IAC1D,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IAC7C,MAAM,aAAa,GAAG,kBAAkB,CAAA;IAExC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;QACjC,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;KAC5B;IAED,MAAM,QAAQ,GAAG,aAAa,GAAG,GAAG,GAAG,KAAK,CAAA;IAE5C,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG;QAC3C,IAAI,GAAG;YAAE,MAAM,GAAG,CAAA;QAClB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,IAAI,UAAU,EAAE;QACd,MAAM,4BAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;KACrE;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AApBD,oCAoBC"}
|
|
@@ -11,4 +11,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./get-permitted-directories"), exports);
|
|
14
|
+
__exportStar(require("./generate-file"), exports);
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8DAA2C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8DAA2C;AAC3C,kDAA+B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/integration-sftp",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.30",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
"migration:create": "node ../../node_modules/typeorm/cli.js migration:create -d ./server/migrations"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@things-factory/auth-base": "^4.0.
|
|
28
|
-
"@things-factory/biz-base": "^4.0.
|
|
29
|
-
"@things-factory/env": "^4.0.
|
|
30
|
-
"@things-factory/integration-fulfillment": "^4.0.
|
|
31
|
-
"@things-factory/shell": "^4.0.
|
|
27
|
+
"@things-factory/auth-base": "^4.0.30",
|
|
28
|
+
"@things-factory/biz-base": "^4.0.30",
|
|
29
|
+
"@things-factory/env": "^4.0.30",
|
|
30
|
+
"@things-factory/integration-fulfillment": "^4.0.30",
|
|
31
|
+
"@things-factory/shell": "^4.0.30",
|
|
32
32
|
"aws-sdk": "^2.960.0",
|
|
33
33
|
"xml-js": "^1.6.11"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "4ab590326e3fc60d113fb438e90eefee708f1f19"
|
|
36
36
|
}
|
|
@@ -78,6 +78,18 @@ export class Sftp {
|
|
|
78
78
|
@ManyToOne(type => FulfillmentCenter, { nullable: true })
|
|
79
79
|
fulfillmentCenter: FulfillmentCenter
|
|
80
80
|
|
|
81
|
+
@Column({
|
|
82
|
+
nullable: true
|
|
83
|
+
})
|
|
84
|
+
@Field({ nullable: true })
|
|
85
|
+
responseType: string
|
|
86
|
+
|
|
87
|
+
@Column({
|
|
88
|
+
nullable: true
|
|
89
|
+
})
|
|
90
|
+
@Field({ nullable: true })
|
|
91
|
+
responseFilePattern: string
|
|
92
|
+
|
|
81
93
|
@CreateDateColumn()
|
|
82
94
|
@Field({ nullable: true })
|
|
83
95
|
createdAt?: Date
|
package/server/sftp-const.ts
CHANGED
|
@@ -4,3 +4,6 @@ export var SFTPFILESTORAGE: any = config.get('sftpFileStorage')
|
|
|
4
4
|
export var SUBMITDATAPATH: string = '/submit_outbound/data'
|
|
5
5
|
export var SUCCESSDATAPATH: string = '/submit_outbound/success'
|
|
6
6
|
export var FAILEDDATAPATH: string = '/submit_outbound/failed'
|
|
7
|
+
export var COMPLETEDATAPATH: string = '/outbound_complete/data'
|
|
8
|
+
export var COMPLETESUCCESSDATAPATH: string = '/outbound_complete/success'
|
|
9
|
+
export var COMPLETEFAILEDDATAPATH: string = '/outbound_complete/failed'
|
package/server/sftp-s3.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import AWS from 'aws-sdk'
|
|
2
|
+
import uuid from 'uuid/v4'
|
|
2
3
|
|
|
3
4
|
import { logger } from '@things-factory/env'
|
|
4
5
|
|
|
5
6
|
import { SFTPFILESTORAGE } from './sftp-const'
|
|
6
7
|
|
|
7
|
-
const { PassThrough } = require('stream')
|
|
8
|
-
const mime = require('mime')
|
|
9
8
|
const { fs } = require('memfs')
|
|
10
9
|
|
|
11
10
|
if (SFTPFILESTORAGE && SFTPFILESTORAGE.type == 's3') {
|
|
@@ -15,7 +14,7 @@ if (SFTPFILESTORAGE && SFTPFILESTORAGE.type == 's3') {
|
|
|
15
14
|
})
|
|
16
15
|
|
|
17
16
|
SFTPFILESTORAGE.readFolders = async (params, encoding) => {
|
|
18
|
-
|
|
17
|
+
let S3params = {
|
|
19
18
|
Bucket: SFTPFILESTORAGE.bucketName,
|
|
20
19
|
Delimiter: '/',
|
|
21
20
|
Prefix: params.path
|
|
@@ -23,7 +22,7 @@ if (SFTPFILESTORAGE && SFTPFILESTORAGE.type == 's3') {
|
|
|
23
22
|
|
|
24
23
|
const result = await S3.listObjects(S3params).promise()
|
|
25
24
|
|
|
26
|
-
|
|
25
|
+
let body = result.Contents
|
|
27
26
|
|
|
28
27
|
return body
|
|
29
28
|
}
|
|
@@ -50,7 +49,7 @@ if (SFTPFILESTORAGE && SFTPFILESTORAGE.type == 's3') {
|
|
|
50
49
|
Key: path.destination
|
|
51
50
|
}).promise()
|
|
52
51
|
|
|
53
|
-
|
|
52
|
+
const copyBody = copyResult.CopyObjectResult
|
|
54
53
|
|
|
55
54
|
const deleteResult = await S3.deleteObject({
|
|
56
55
|
Bucket: SFTPFILESTORAGE.bucketName,
|
|
@@ -60,5 +59,25 @@ if (SFTPFILESTORAGE && SFTPFILESTORAGE.type == 's3') {
|
|
|
60
59
|
return true
|
|
61
60
|
}
|
|
62
61
|
|
|
62
|
+
/* upload file */
|
|
63
|
+
SFTPFILESTORAGE.uploadFile = ({ filename, uploadPath }) => {
|
|
64
|
+
const id = uuid()
|
|
65
|
+
let size: number = 0
|
|
66
|
+
|
|
67
|
+
// Read content from the file
|
|
68
|
+
const fileContent = fs.readFileSync(filename)
|
|
69
|
+
|
|
70
|
+
return new Promise<{ id: string; path: string; size: number }>((resolve, reject) =>
|
|
71
|
+
S3.upload(
|
|
72
|
+
{
|
|
73
|
+
Bucket: SFTPFILESTORAGE.bucketName,
|
|
74
|
+
Key: uploadPath,
|
|
75
|
+
Body: fileContent
|
|
76
|
+
},
|
|
77
|
+
(err, data) => (err ? reject(err) : resolve({ id, path: uploadPath, size }))
|
|
78
|
+
)
|
|
79
|
+
)
|
|
80
|
+
}
|
|
81
|
+
|
|
63
82
|
logger.info('S3 Bucket Storage is Ready.')
|
|
64
83
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import '../sftp-s3'
|
|
2
|
+
|
|
3
|
+
import { SFTPFILESTORAGE } from '../sftp-const'
|
|
4
|
+
|
|
5
|
+
const fs = require('fs')
|
|
6
|
+
|
|
7
|
+
export async function generateFile(params: any, context: any) {
|
|
8
|
+
const { uploadPath, content, title } = params
|
|
9
|
+
const fileDirectory = './uploaded-files'
|
|
10
|
+
|
|
11
|
+
if (!fs.existsSync(fileDirectory)) {
|
|
12
|
+
fs.mkdirSync(fileDirectory)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const filePath = fileDirectory + '/' + title
|
|
16
|
+
|
|
17
|
+
fs.writeFile(filePath, content, function (err) {
|
|
18
|
+
if (err) throw err
|
|
19
|
+
console.log('File is created successfully.')
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
if (uploadPath) {
|
|
23
|
+
await SFTPFILESTORAGE.uploadFile({ filename: filePath, uploadPath })
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return true
|
|
27
|
+
}
|
package/server/util/index.ts
CHANGED