n8n-nodes-substack 0.6.0 → 0.7.1
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/README.md +1 -1
- package/dist/nodes/Substack/Comment.fields.d.ts +2 -0
- package/dist/nodes/Substack/Comment.fields.js +50 -0
- package/dist/nodes/Substack/Comment.fields.js.map +1 -0
- package/dist/nodes/Substack/Comment.operations.d.ts +9 -0
- package/dist/nodes/Substack/Comment.operations.js +119 -0
- package/dist/nodes/Substack/Comment.operations.js.map +1 -0
- package/dist/nodes/Substack/Note.fields.d.ts +2 -0
- package/dist/nodes/Substack/Note.fields.js +96 -0
- package/dist/nodes/Substack/Note.fields.js.map +1 -0
- package/dist/nodes/Substack/Note.operations.d.ts +11 -0
- package/dist/nodes/Substack/Note.operations.js +244 -0
- package/dist/nodes/Substack/Note.operations.js.map +1 -0
- package/dist/nodes/Substack/Post.fields.d.ts +2 -0
- package/dist/nodes/Substack/Post.fields.js +96 -0
- package/dist/nodes/Substack/Post.fields.js.map +1 -0
- package/dist/nodes/Substack/Post.operations.d.ts +11 -0
- package/dist/nodes/Substack/Post.operations.js +248 -0
- package/dist/nodes/Substack/Post.operations.js.map +1 -0
- package/dist/nodes/Substack/Profile.fields.d.ts +2 -0
- package/dist/nodes/Substack/Profile.fields.js +75 -0
- package/dist/nodes/Substack/Profile.fields.js.map +1 -0
- package/dist/nodes/Substack/Profile.operations.d.ts +11 -0
- package/dist/nodes/Substack/Profile.operations.js +184 -0
- package/dist/nodes/Substack/Profile.operations.js.map +1 -0
- package/dist/nodes/Substack/Substack.node.d.ts +6 -0
- package/dist/nodes/Substack/Substack.node.js +46 -66
- package/dist/nodes/Substack/Substack.node.js.map +1 -1
- package/dist/nodes/Substack/Substack.node.json +22 -0
- package/dist/package.json +3 -6
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -6
- package/dist/nodes/Substack/CommentOperations.d.ts +0 -6
- package/dist/nodes/Substack/CommentOperations.js +0 -53
- package/dist/nodes/Substack/CommentOperations.js.map +0 -1
- package/dist/nodes/Substack/FollowOperations.d.ts +0 -6
- package/dist/nodes/Substack/FollowOperations.js +0 -57
- package/dist/nodes/Substack/FollowOperations.js.map +0 -1
- package/dist/nodes/Substack/NoteOperations.d.ts +0 -7
- package/dist/nodes/Substack/NoteOperations.js +0 -90
- package/dist/nodes/Substack/NoteOperations.js.map +0 -1
- package/dist/nodes/Substack/PostOperations.d.ts +0 -6
- package/dist/nodes/Substack/PostOperations.js +0 -57
- package/dist/nodes/Substack/PostOperations.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-substack",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "n8n community node for Substack API integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"n8n-community-node-package"
|
|
@@ -28,9 +28,8 @@
|
|
|
28
28
|
"prepublishOnly": "npm run build && npx eslint -c eslint.prepublish.config.js nodes credentials package.json",
|
|
29
29
|
"test": "jest",
|
|
30
30
|
"test:watch": "jest --watch",
|
|
31
|
-
"test:
|
|
32
|
-
"test:
|
|
33
|
-
"test:all": "npm run test && npm run test:e2e"
|
|
31
|
+
"test:unit": "jest",
|
|
32
|
+
"test:unit:watch": "jest --watch"
|
|
34
33
|
},
|
|
35
34
|
"files": [
|
|
36
35
|
"dist"
|
|
@@ -51,8 +50,6 @@
|
|
|
51
50
|
"eslint-plugin-n8n-nodes-base": "^1.16.3",
|
|
52
51
|
"gulp": "^5.0.0",
|
|
53
52
|
"jest": "^30.0.3",
|
|
54
|
-
"msw": "^2.10.2",
|
|
55
|
-
"nock": "^14.0.5",
|
|
56
53
|
"prettier": "^3.5.3",
|
|
57
54
|
"ts-jest": "^29.2.5",
|
|
58
55
|
"typescript": "^5.8.2"
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
-
import { SubstackClient } from 'substack-api';
|
|
3
|
-
import { IStandardResponse } from './types';
|
|
4
|
-
export declare class CommentOperations {
|
|
5
|
-
static getAll(executeFunctions: IExecuteFunctions, client: SubstackClient, publicationAddress: string, itemIndex: number): Promise<IStandardResponse>;
|
|
6
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CommentOperations = void 0;
|
|
4
|
-
const SubstackUtils_1 = require("./SubstackUtils");
|
|
5
|
-
class CommentOperations {
|
|
6
|
-
static async getAll(executeFunctions, client, publicationAddress, itemIndex) {
|
|
7
|
-
var _a;
|
|
8
|
-
try {
|
|
9
|
-
const postId = executeFunctions.getNodeParameter('postId', itemIndex);
|
|
10
|
-
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
11
|
-
let limit = 100;
|
|
12
|
-
if (limitParam !== '' && limitParam !== null && limitParam !== undefined) {
|
|
13
|
-
limit = Number(limitParam);
|
|
14
|
-
}
|
|
15
|
-
const post = await client.postForId(postId.toString());
|
|
16
|
-
const commentsIterable = await post.comments();
|
|
17
|
-
const formattedComments = [];
|
|
18
|
-
let count = 0;
|
|
19
|
-
for await (const comment of commentsIterable) {
|
|
20
|
-
if (count >= limit)
|
|
21
|
-
break;
|
|
22
|
-
formattedComments.push({
|
|
23
|
-
id: comment.id,
|
|
24
|
-
body: comment.body,
|
|
25
|
-
createdAt: ((_a = comment.rawData) === null || _a === void 0 ? void 0 : _a.created_at) || comment.createdAt.toISOString(),
|
|
26
|
-
parentPostId: postId,
|
|
27
|
-
author: {
|
|
28
|
-
id: comment.author.id,
|
|
29
|
-
name: comment.author.name,
|
|
30
|
-
isAdmin: comment.author.isAdmin || false,
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
count++;
|
|
34
|
-
}
|
|
35
|
-
return {
|
|
36
|
-
success: true,
|
|
37
|
-
data: formattedComments,
|
|
38
|
-
metadata: {
|
|
39
|
-
status: 'success',
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
45
|
-
message: error.message,
|
|
46
|
-
node: executeFunctions.getNode(),
|
|
47
|
-
itemIndex,
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.CommentOperations = CommentOperations;
|
|
53
|
-
//# sourceMappingURL=CommentOperations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommentOperations.js","sourceRoot":"","sources":["../../../nodes/Substack/CommentOperations.ts"],"names":[],"mappings":";;;AAGA,mDAAgD;AAEhD,MAAa,iBAAiB;IAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAClB,gBAAmC,EACnC,MAAsB,EACtB,kBAA0B,EAC1B,SAAiB;;QAEjB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAW,CAAC;YAChF,MAAM,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAoB,CAAC;YAGhG,IAAI,KAAK,GAAG,GAAG,CAAC;YAChB,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC1E,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;YAGD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/C,MAAM,iBAAiB,GAAuB,EAAE,CAAC;YAGjD,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;gBAC9C,IAAI,KAAK,IAAI,KAAK;oBAAE,MAAM;gBAE1B,iBAAiB,CAAC,IAAI,CAAC;oBACtB,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,SAAS,EAAE,CAAA,MAAC,OAAe,CAAC,OAAO,0CAAE,UAAU,KAAI,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;oBAClF,YAAY,EAAE,MAAM;oBACpB,MAAM,EAAE;wBACP,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;wBACrB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;wBACzB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK;qBACxC;iBACD,CAAC,CAAC;gBACH,KAAK,EAAE,CAAC;YACT,CAAC;YAED,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE;oBACT,MAAM,EAAE,SAAS;iBACjB;aACD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,6BAAa,CAAC,mBAAmB,CAAC;gBACxC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;gBAChC,SAAS;aACT,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;CACD;AAxDD,8CAwDC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
-
import { SubstackClient } from 'substack-api';
|
|
3
|
-
import { IStandardResponse } from './types';
|
|
4
|
-
export declare class FollowOperations {
|
|
5
|
-
static getFollowing(executeFunctions: IExecuteFunctions, client: SubstackClient, publicationAddress: string, itemIndex: number): Promise<IStandardResponse>;
|
|
6
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FollowOperations = void 0;
|
|
4
|
-
const SubstackUtils_1 = require("./SubstackUtils");
|
|
5
|
-
class FollowOperations {
|
|
6
|
-
static async getFollowing(executeFunctions, client, publicationAddress, itemIndex) {
|
|
7
|
-
try {
|
|
8
|
-
const returnType = executeFunctions.getNodeParameter('returnType', itemIndex, 'profiles');
|
|
9
|
-
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
10
|
-
let limit = 100;
|
|
11
|
-
if (limitParam !== '' && limitParam !== null && limitParam !== undefined) {
|
|
12
|
-
limit = Number(limitParam);
|
|
13
|
-
}
|
|
14
|
-
let followingData = [];
|
|
15
|
-
const ownProfile = await client.ownProfile();
|
|
16
|
-
const followeesIterable = await ownProfile.followees();
|
|
17
|
-
let count = 0;
|
|
18
|
-
for await (const followee of followeesIterable) {
|
|
19
|
-
if (count >= limit)
|
|
20
|
-
break;
|
|
21
|
-
if (returnType === 'ids') {
|
|
22
|
-
followingData.push({
|
|
23
|
-
id: followee.id,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
followingData.push({
|
|
28
|
-
id: followee.id,
|
|
29
|
-
name: followee.name,
|
|
30
|
-
handle: followee.slug,
|
|
31
|
-
bio: followee.bio,
|
|
32
|
-
subscriberCount: 0,
|
|
33
|
-
subscriberCountString: '',
|
|
34
|
-
primaryPublication: undefined,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
count++;
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
success: true,
|
|
41
|
-
data: followingData,
|
|
42
|
-
metadata: {
|
|
43
|
-
status: 'success',
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
49
|
-
message: error.message,
|
|
50
|
-
node: executeFunctions.getNode(),
|
|
51
|
-
itemIndex,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.FollowOperations = FollowOperations;
|
|
57
|
-
//# sourceMappingURL=FollowOperations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FollowOperations.js","sourceRoot":"","sources":["../../../nodes/Substack/FollowOperations.ts"],"names":[],"mappings":";;;AAGA,mDAAgD;AAEhD,MAAa,gBAAgB;IAC5B,MAAM,CAAC,KAAK,CAAC,YAAY,CACxB,gBAAmC,EACnC,MAAsB,EACtB,kBAA0B,EAC1B,SAAiB;QAEjB,IAAI,CAAC;YACJ,MAAM,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAW,CAAC;YACpG,MAAM,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAoB,CAAC;YAGhG,IAAI,KAAK,GAAG,GAAG,CAAC;YAChB,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC1E,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;YAED,IAAI,aAAa,GAAyB,EAAE,CAAC;YAG7C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7C,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC;YAGvD,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;gBAChD,IAAI,KAAK,IAAI,KAAK;oBAAE,MAAM;gBAE1B,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;oBAE1B,aAAa,CAAC,IAAI,CAAC;wBAClB,EAAE,EAAE,QAAQ,CAAC,EAAE;qBACf,CAAC,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBAEP,aAAa,CAAC,IAAI,CAAC;wBAClB,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,MAAM,EAAE,QAAQ,CAAC,IAAI;wBACrB,GAAG,EAAE,QAAQ,CAAC,GAAG;wBACjB,eAAe,EAAE,CAAC;wBAClB,qBAAqB,EAAE,EAAE;wBACzB,kBAAkB,EAAE,SAAS;qBAC7B,CAAC,CAAC;gBACJ,CAAC;gBACD,KAAK,EAAE,CAAC;YACT,CAAC;YAED,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE;oBACT,MAAM,EAAE,SAAS;iBACjB;aACD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,6BAAa,CAAC,mBAAmB,CAAC;gBACxC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;gBAChC,SAAS;aACT,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;CACD;AA/DD,4CA+DC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
-
import { SubstackClient } from 'substack-api';
|
|
3
|
-
import { IStandardResponse } from './types';
|
|
4
|
-
export declare class NoteOperations {
|
|
5
|
-
static create(executeFunctions: IExecuteFunctions, client: SubstackClient, publicationAddress: string, itemIndex: number): Promise<IStandardResponse>;
|
|
6
|
-
static get(executeFunctions: IExecuteFunctions, client: SubstackClient, publicationAddress: string, itemIndex: number): Promise<IStandardResponse>;
|
|
7
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NoteOperations = void 0;
|
|
4
|
-
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
-
const SubstackUtils_1 = require("./SubstackUtils");
|
|
6
|
-
class NoteOperations {
|
|
7
|
-
static async create(executeFunctions, client, publicationAddress, itemIndex) {
|
|
8
|
-
var _a, _b;
|
|
9
|
-
const body = executeFunctions.getNodeParameter('body', itemIndex);
|
|
10
|
-
if (!body) {
|
|
11
|
-
throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), 'Body is required', {
|
|
12
|
-
itemIndex,
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
try {
|
|
16
|
-
const ownProfile = await client.ownProfile();
|
|
17
|
-
const response = await ownProfile.newNote(body).publish();
|
|
18
|
-
const formattedNote = {
|
|
19
|
-
noteId: ((_a = response.id) === null || _a === void 0 ? void 0 : _a.toString()) || 'unknown',
|
|
20
|
-
body: response.body || body,
|
|
21
|
-
url: SubstackUtils_1.SubstackUtils.formatUrl(publicationAddress, `/p/${response.id || 'unknown'}`),
|
|
22
|
-
date: response.date || new Date().toISOString(),
|
|
23
|
-
status: 'published',
|
|
24
|
-
userId: ((_b = response.user_id) === null || _b === void 0 ? void 0 : _b.toString()) || 'unknown',
|
|
25
|
-
};
|
|
26
|
-
return {
|
|
27
|
-
success: true,
|
|
28
|
-
data: formattedNote,
|
|
29
|
-
metadata: {
|
|
30
|
-
date: response.date,
|
|
31
|
-
status: 'published',
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
37
|
-
message: error.message,
|
|
38
|
-
node: executeFunctions.getNode(),
|
|
39
|
-
itemIndex,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
static async get(executeFunctions, client, publicationAddress, itemIndex) {
|
|
44
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
45
|
-
try {
|
|
46
|
-
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
47
|
-
let limit = 100;
|
|
48
|
-
if (limitParam !== '' && limitParam !== null && limitParam !== undefined) {
|
|
49
|
-
limit = Number(limitParam);
|
|
50
|
-
}
|
|
51
|
-
const ownProfile = await client.ownProfile();
|
|
52
|
-
const notesIterable = await ownProfile.notes();
|
|
53
|
-
const formattedNotes = [];
|
|
54
|
-
let count = 0;
|
|
55
|
-
for await (const note of notesIterable) {
|
|
56
|
-
if (count >= limit)
|
|
57
|
-
break;
|
|
58
|
-
formattedNotes.push({
|
|
59
|
-
noteId: ((_c = (_b = (_a = note.rawData) === null || _a === void 0 ? void 0 : _a.comment) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.toString()) || ((_d = note.id) === null || _d === void 0 ? void 0 : _d.toString()) || 'unknown',
|
|
60
|
-
body: note.body || '',
|
|
61
|
-
url: SubstackUtils_1.SubstackUtils.formatUrl(publicationAddress, `/p/${((_f = (_e = note.rawData) === null || _e === void 0 ? void 0 : _e.comment) === null || _f === void 0 ? void 0 : _f.id) || note.id || 'unknown'}`),
|
|
62
|
-
date: ((_h = (_g = note.rawData) === null || _g === void 0 ? void 0 : _g.context) === null || _h === void 0 ? void 0 : _h.timestamp) || ((_j = note.publishedAt) === null || _j === void 0 ? void 0 : _j.toISOString()) || new Date().toISOString(),
|
|
63
|
-
status: 'published',
|
|
64
|
-
userId: ((_l = (_k = note.author) === null || _k === void 0 ? void 0 : _k.id) === null || _l === void 0 ? void 0 : _l.toString()) || 'unknown',
|
|
65
|
-
likes: note.likesCount || 0,
|
|
66
|
-
restacks: ((_o = (_m = note.rawData) === null || _m === void 0 ? void 0 : _m.comment) === null || _o === void 0 ? void 0 : _o.restacks) || 0,
|
|
67
|
-
type: 'note',
|
|
68
|
-
entityKey: ((_p = note.rawData) === null || _p === void 0 ? void 0 : _p.entity_key) || note.id,
|
|
69
|
-
});
|
|
70
|
-
count++;
|
|
71
|
-
}
|
|
72
|
-
return {
|
|
73
|
-
success: true,
|
|
74
|
-
data: formattedNotes,
|
|
75
|
-
metadata: {
|
|
76
|
-
status: 'success',
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
82
|
-
message: error.message,
|
|
83
|
-
node: executeFunctions.getNode(),
|
|
84
|
-
itemIndex,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
exports.NoteOperations = NoteOperations;
|
|
90
|
-
//# sourceMappingURL=NoteOperations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NoteOperations.js","sourceRoot":"","sources":["../../../nodes/Substack/NoteOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
-
import { SubstackClient } from 'substack-api';
|
|
3
|
-
import { IStandardResponse } from './types';
|
|
4
|
-
export declare class PostOperations {
|
|
5
|
-
static getAll(executeFunctions: IExecuteFunctions, client: SubstackClient, publicationAddress: string, itemIndex: number): Promise<IStandardResponse>;
|
|
6
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PostOperations = void 0;
|
|
4
|
-
const SubstackUtils_1 = require("./SubstackUtils");
|
|
5
|
-
class PostOperations {
|
|
6
|
-
static async getAll(executeFunctions, client, publicationAddress, itemIndex) {
|
|
7
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
8
|
-
try {
|
|
9
|
-
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
10
|
-
let limit = 100;
|
|
11
|
-
if (limitParam !== '' && limitParam !== null && limitParam !== undefined) {
|
|
12
|
-
limit = Number(limitParam);
|
|
13
|
-
}
|
|
14
|
-
const ownProfile = await client.ownProfile();
|
|
15
|
-
const postsIterable = await ownProfile.posts();
|
|
16
|
-
const formattedPosts = [];
|
|
17
|
-
let count = 0;
|
|
18
|
-
for await (const post of postsIterable) {
|
|
19
|
-
if (count >= limit)
|
|
20
|
-
break;
|
|
21
|
-
try {
|
|
22
|
-
formattedPosts.push({
|
|
23
|
-
id: post.id,
|
|
24
|
-
title: post.title || '',
|
|
25
|
-
subtitle: ((_a = post.rawData) === null || _a === void 0 ? void 0 : _a.subtitle) || '',
|
|
26
|
-
url: SubstackUtils_1.SubstackUtils.formatUrl(publicationAddress, `/p/${post.id}`),
|
|
27
|
-
postDate: ((_b = post.rawData) === null || _b === void 0 ? void 0 : _b.post_date) || (post.publishedAt && !isNaN(post.publishedAt.getTime()) ? post.publishedAt.toISOString() : new Date().toISOString()),
|
|
28
|
-
type: ((_c = post.rawData) === null || _c === void 0 ? void 0 : _c.type) || 'newsletter',
|
|
29
|
-
published: (_e = (_d = post.rawData) === null || _d === void 0 ? void 0 : _d.published) !== null && _e !== void 0 ? _e : true,
|
|
30
|
-
paywalled: (_g = (_f = post.rawData) === null || _f === void 0 ? void 0 : _f.paywalled) !== null && _g !== void 0 ? _g : false,
|
|
31
|
-
description: ((_h = post.rawData) === null || _h === void 0 ? void 0 : _h.description) || post.body || '',
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
console.warn(`Skipped malformed post: ${error.message}`);
|
|
36
|
-
}
|
|
37
|
-
count++;
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
success: true,
|
|
41
|
-
data: formattedPosts,
|
|
42
|
-
metadata: {
|
|
43
|
-
status: 'success',
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
49
|
-
message: error.message,
|
|
50
|
-
node: executeFunctions.getNode(),
|
|
51
|
-
itemIndex,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.PostOperations = PostOperations;
|
|
57
|
-
//# sourceMappingURL=PostOperations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PostOperations.js","sourceRoot":"","sources":["../../../nodes/Substack/PostOperations.ts"],"names":[],"mappings":";;;AAGA,mDAAgD;AAEhD,MAAa,cAAc;IAC1B,MAAM,CAAC,KAAK,CAAC,MAAM,CAClB,gBAAmC,EACnC,MAAsB,EACtB,kBAA0B,EAC1B,SAAiB;;QAEjB,IAAI,CAAC;YACJ,MAAM,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAoB,CAAC;YAGhG,IAAI,KAAK,GAAG,GAAG,CAAC;YAChB,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC1E,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;YAGD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7C,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAC/C,MAAM,cAAc,GAAoB,EAAE,CAAC;YAG3C,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACxC,IAAI,KAAK,IAAI,KAAK;oBAAE,MAAM;gBAE1B,IAAI,CAAC;oBACJ,cAAc,CAAC,IAAI,CAAC;wBACnB,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;wBACvB,QAAQ,EAAE,CAAA,MAAC,IAAY,CAAC,OAAO,0CAAE,QAAQ,KAAI,EAAE;wBAC/C,GAAG,EAAE,6BAAa,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;wBACjE,QAAQ,EAAE,CAAA,MAAC,IAAY,CAAC,OAAO,0CAAE,SAAS,KAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;wBAClK,IAAI,EAAE,CAAA,MAAC,IAAY,CAAC,OAAO,0CAAE,IAAI,KAAI,YAAY;wBACjD,SAAS,EAAE,MAAA,MAAC,IAAY,CAAC,OAAO,0CAAE,SAAS,mCAAI,IAAI;wBACnD,SAAS,EAAE,MAAA,MAAC,IAAY,CAAC,OAAO,0CAAE,SAAS,mCAAI,KAAK;wBACpD,WAAW,EAAE,CAAA,MAAC,IAAY,CAAC,OAAO,0CAAE,WAAW,KAAI,IAAI,CAAC,IAAI,IAAI,EAAE;qBAClE,CAAC,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAEhB,OAAO,CAAC,IAAI,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1D,CAAC;gBACD,KAAK,EAAE,CAAC;YACT,CAAC;YAED,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE;oBACT,MAAM,EAAE,SAAS;iBACjB;aACD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,6BAAa,CAAC,mBAAmB,CAAC;gBACxC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;gBAChC,SAAS;aACT,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;CACD;AA5DD,wCA4DC"}
|