@activepieces/piece-sftp 0.1.1 → 0.1.3
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/package.json +7 -3
- package/src/index.js +2 -1
- package/src/index.js.map +1 -1
- package/src/lib/actions/create-file.js +9 -1
- package/src/lib/actions/create-file.js.map +1 -1
- package/src/lib/triggers/new-modified-file.d.ts +10 -0
- package/src/lib/triggers/new-modified-file.js +92 -0
- package/src/lib/triggers/new-modified-file.js.map +1 -0
package/package.json
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@activepieces/piece-sftp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@sinclair/typebox": "^0.26.3",
|
|
6
|
+
"axios": "1.4.0",
|
|
7
|
+
"dayjs": "^1.11.8",
|
|
6
8
|
"nanoid": "^3.3.4",
|
|
9
|
+
"semver": "7.5.3",
|
|
7
10
|
"ssh2-sftp-client": "^9.1.0",
|
|
8
|
-
"@activepieces/pieces-
|
|
9
|
-
"@activepieces/
|
|
11
|
+
"@activepieces/pieces-common": "0.2.1",
|
|
12
|
+
"@activepieces/pieces-framework": "0.6.6",
|
|
13
|
+
"@activepieces/shared": "0.5.11",
|
|
10
14
|
"tslib": "1.14.1"
|
|
11
15
|
},
|
|
12
16
|
"main": "./src/index.js",
|
package/src/index.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.sftp = exports.sftpAuth = void 0;
|
|
4
4
|
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
5
5
|
const create_file_1 = require("./lib/actions/create-file");
|
|
6
|
+
const new_modified_file_1 = require("./lib/triggers/new-modified-file");
|
|
6
7
|
exports.sftpAuth = pieces_framework_1.PieceAuth.CustomAuth({
|
|
7
8
|
displayName: 'Authentication',
|
|
8
9
|
description: 'Enter the authentication details',
|
|
@@ -38,6 +39,6 @@ exports.sftp = (0, pieces_framework_1.createPiece)({
|
|
|
38
39
|
authors: ["Abdallah-Alwarawreh"],
|
|
39
40
|
auth: exports.sftpAuth,
|
|
40
41
|
actions: [create_file_1.createFile],
|
|
41
|
-
triggers: [],
|
|
42
|
+
triggers: [new_modified_file_1.newOrModifiedFile],
|
|
42
43
|
});
|
|
43
44
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/pieces/sftp/src/index.ts"],"names":[],"mappings":";;;AACA,qEAAkF;AAClF,2DAAuD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/pieces/sftp/src/index.ts"],"names":[],"mappings":";;;AACA,qEAAkF;AAClF,2DAAuD;AACvD,wEAAqE;AAExD,QAAA,QAAQ,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC3C,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,kCAAkC;IAC/C,KAAK,EAAE;QACL,IAAI,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACvB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,EAAE;SACjB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,iCAAiC;YAC9C,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,QAAQ,EAAE,4BAAS,CAAC,UAAU,CAAC;YAC7B,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,iCAAiC;YAC9C,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACD,QAAQ,EAAE,IAAI;CACf,CAAC,CAAA;AAEW,QAAA,IAAI,GAAG,IAAA,8BAAW,EAAC;IAC9B,WAAW,EAAE,MAAM;IACnB,uBAAuB,EAAE,OAAO;IAChC,OAAO,EAAE,8CAA8C;IACvD,OAAO,EAAE,CAAC,qBAAqB,CAAC;IAChC,IAAI,EAAE,gBAAQ;IACd,OAAO,EAAE,CAAC,wBAAU,CAAC;IACrB,QAAQ,EAAE,CAAC,qCAAiB,CAAC;CAC9B,CAAC,CAAC"}
|
|
@@ -20,7 +20,7 @@ exports.createFile = (0, pieces_framework_1.createAction)({
|
|
|
20
20
|
displayName: 'File content',
|
|
21
21
|
description: 'The content of the file to create',
|
|
22
22
|
required: true,
|
|
23
|
-
})
|
|
23
|
+
})
|
|
24
24
|
},
|
|
25
25
|
run(context) {
|
|
26
26
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -38,6 +38,14 @@ exports.createFile = (0, pieces_framework_1.createAction)({
|
|
|
38
38
|
username,
|
|
39
39
|
password
|
|
40
40
|
});
|
|
41
|
+
const remotePathExists = yield sftp.exists(fileName);
|
|
42
|
+
if (!remotePathExists) {
|
|
43
|
+
// Extract the directory path from the fileName
|
|
44
|
+
const remoteDirectory = fileName.substring(0, fileName.lastIndexOf('/'));
|
|
45
|
+
// Create the directory if it doesn't exist
|
|
46
|
+
yield sftp.mkdir(remoteDirectory, true); // The second argument 'true' makes the function create all intermediate directories
|
|
47
|
+
// You can also check if the directory was successfully created and handle any potential errors here
|
|
48
|
+
}
|
|
41
49
|
yield sftp.put(Buffer.from(fileContent), fileName);
|
|
42
50
|
yield sftp.end();
|
|
43
51
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-file.js","sourceRoot":"","sources":["../../../../../../../packages/pieces/sftp/src/lib/actions/create-file.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,gFAAqC;AACrC,6BAAiC;AAEpB,QAAA,UAAU,GAAG,IAAA,+BAAY,EAAC;IACnC,IAAI,EAAE,YAAQ;
|
|
1
|
+
{"version":3,"file":"create-file.js","sourceRoot":"","sources":["../../../../../../../packages/pieces/sftp/src/lib/actions/create-file.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,gFAAqC;AACrC,6BAAiC;AAEpB,QAAA,UAAU,GAAG,IAAA,+BAAY,EAAC;IACnC,IAAI,EAAE,YAAQ;IACd,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,qCAAqC;IAClD,KAAK,EAAE;QACH,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACzB,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,gCAAgC;YAC7C,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YAC3B,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,IAAI;SACjB,CAAC;KACL;IACK,GAAG,CAAC,OAAO;;YACb,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;YAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;YACrD,MAAM,IAAI,GAAG,IAAI,0BAAM,EAAE,CAAC;YAE1B,IAAI;gBACA,MAAM,IAAI,CAAC,OAAO,CAAC;oBACf,IAAI;oBACJ,IAAI;oBACJ,QAAQ;oBACR,QAAQ;iBACX,CAAC,CAAC;gBAEH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACrD,IAAI,CAAC,gBAAgB,EAAE;oBACnB,+CAA+C;oBAC/C,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;oBAEzE,2CAA2C;oBAC3C,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,oFAAoF;oBAE7H,oGAAoG;iBACvG;gBAED,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACnD,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEjB,OAAO;oBACH,MAAM,EAAE,SAAS;iBACpB,CAAA;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,OAAO;oBACH,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,GAAG;iBACb,CAAA;aACJ;QACL,CAAC;KAAA;CACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TriggerStrategy } from "@activepieces/pieces-framework";
|
|
2
|
+
export declare const newOrModifiedFile: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").CustomAuthProperty<true, {
|
|
3
|
+
host: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
4
|
+
port: import("@activepieces/pieces-framework").NumberProperty<true>;
|
|
5
|
+
username: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
6
|
+
password: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
7
|
+
}>, {
|
|
8
|
+
path: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
9
|
+
ignoreHiddenFiles: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
10
|
+
}>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.newOrModifiedFile = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const pieces_framework_2 = require("@activepieces/pieces-framework");
|
|
7
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
8
|
+
const __1 = require("../..");
|
|
9
|
+
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
10
|
+
const ssh2_sftp_client_1 = tslib_1.__importDefault(require("ssh2-sftp-client"));
|
|
11
|
+
const polling = {
|
|
12
|
+
strategy: pieces_common_1.DedupeStrategy.TIMEBASED,
|
|
13
|
+
items: ({ auth, propsValue, lastFetchEpochMS }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
var _a;
|
|
15
|
+
const host = auth.host;
|
|
16
|
+
const port = auth.port;
|
|
17
|
+
const username = auth.username;
|
|
18
|
+
const password = auth.password;
|
|
19
|
+
const sftp = new ssh2_sftp_client_1.default();
|
|
20
|
+
try {
|
|
21
|
+
yield sftp.connect({
|
|
22
|
+
host,
|
|
23
|
+
port,
|
|
24
|
+
username,
|
|
25
|
+
password
|
|
26
|
+
});
|
|
27
|
+
let files = yield sftp.list(propsValue.path);
|
|
28
|
+
yield sftp.end();
|
|
29
|
+
files = files.filter(file => (0, dayjs_1.default)(file.modifyTime).valueOf() > lastFetchEpochMS);
|
|
30
|
+
if (((_a = propsValue.ignoreHiddenFiles) !== null && _a !== void 0 ? _a : false) === true)
|
|
31
|
+
files = files.filter(file => !file.name.startsWith('.'));
|
|
32
|
+
return files.map(file => ({
|
|
33
|
+
data: file,
|
|
34
|
+
epochMilliSeconds: (0, dayjs_1.default)(file.modifyTime).valueOf()
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
};
|
|
42
|
+
exports.newOrModifiedFile = (0, pieces_framework_1.createTrigger)({
|
|
43
|
+
auth: __1.sftpAuth,
|
|
44
|
+
name: 'new_file',
|
|
45
|
+
displayName: 'New File',
|
|
46
|
+
description: 'Trigger when a new file is created or modified.',
|
|
47
|
+
props: {
|
|
48
|
+
path: pieces_framework_1.Property.ShortText({
|
|
49
|
+
displayName: 'Path',
|
|
50
|
+
description: 'The path to watch for new files',
|
|
51
|
+
required: true,
|
|
52
|
+
defaultValue: './',
|
|
53
|
+
}),
|
|
54
|
+
ignoreHiddenFiles: pieces_framework_1.Property.Checkbox({
|
|
55
|
+
displayName: 'Ignore hidden files',
|
|
56
|
+
description: 'Ignore hidden files',
|
|
57
|
+
required: false,
|
|
58
|
+
defaultValue: false,
|
|
59
|
+
}),
|
|
60
|
+
},
|
|
61
|
+
type: pieces_framework_2.TriggerStrategy.POLLING,
|
|
62
|
+
onEnable: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
63
|
+
yield pieces_common_1.pollingHelper.onEnable(polling, {
|
|
64
|
+
auth: context.auth,
|
|
65
|
+
store: context.store,
|
|
66
|
+
propsValue: context.propsValue,
|
|
67
|
+
});
|
|
68
|
+
}),
|
|
69
|
+
onDisable: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
+
yield pieces_common_1.pollingHelper.onDisable(polling, {
|
|
71
|
+
auth: context.auth,
|
|
72
|
+
store: context.store,
|
|
73
|
+
propsValue: context.propsValue,
|
|
74
|
+
});
|
|
75
|
+
}),
|
|
76
|
+
run: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
77
|
+
return yield pieces_common_1.pollingHelper.poll(polling, {
|
|
78
|
+
auth: context.auth,
|
|
79
|
+
store: context.store,
|
|
80
|
+
propsValue: context.propsValue,
|
|
81
|
+
});
|
|
82
|
+
}),
|
|
83
|
+
test: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
84
|
+
return yield pieces_common_1.pollingHelper.test(polling, {
|
|
85
|
+
auth: context.auth,
|
|
86
|
+
store: context.store,
|
|
87
|
+
propsValue: context.propsValue,
|
|
88
|
+
});
|
|
89
|
+
}),
|
|
90
|
+
sampleData: {}
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=new-modified-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-modified-file.js","sourceRoot":"","sources":["../../../../../../../packages/pieces/sftp/src/lib/triggers/new-modified-file.ts"],"names":[],"mappings":"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"}
|