n8n-nodes-substack 1.1.1 → 1.2.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.
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataFormatters = void 0;
4
+ const SubstackUtils_1 = require("../SubstackUtils");
5
+ class DataFormatters {
6
+ static formatNote(note, publicationAddress) {
7
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
8
+ return {
9
+ 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',
10
+ body: note.body || '',
11
+ 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'}`),
12
+ date: DataFormatters.formatDate(((_h = (_g = note.rawData) === null || _g === void 0 ? void 0 : _g.context) === null || _h === void 0 ? void 0 : _h.timestamp) ||
13
+ note.publishedAt ||
14
+ new Date()),
15
+ status: 'published',
16
+ userId: ((_k = (_j = note.author) === null || _j === void 0 ? void 0 : _j.id) === null || _k === void 0 ? void 0 : _k.toString()) || 'unknown',
17
+ likes: note.likesCount || 0,
18
+ restacks: ((_m = (_l = note.rawData) === null || _l === void 0 ? void 0 : _l.comment) === null || _m === void 0 ? void 0 : _m.restacks) || 0,
19
+ type: 'note',
20
+ entityKey: ((_o = note.rawData) === null || _o === void 0 ? void 0 : _o.entity_key) || note.id,
21
+ };
22
+ }
23
+ static formatPost(post, publicationAddress) {
24
+ var _a, _b, _c, _d, _e, _f, _g, _h;
25
+ return {
26
+ id: post.id,
27
+ title: post.title || '',
28
+ subtitle: ((_a = post.rawData) === null || _a === void 0 ? void 0 : _a.subtitle) || '',
29
+ url: SubstackUtils_1.SubstackUtils.formatUrl(publicationAddress, `/p/${post.id}`),
30
+ postDate: DataFormatters.formatDate(((_b = post.rawData) === null || _b === void 0 ? void 0 : _b.post_date) ||
31
+ post.publishedAt ||
32
+ new Date()),
33
+ type: ((_c = post.rawData) === null || _c === void 0 ? void 0 : _c.type) || 'newsletter',
34
+ published: (_e = (_d = post.rawData) === null || _d === void 0 ? void 0 : _d.published) !== null && _e !== void 0 ? _e : true,
35
+ paywalled: (_g = (_f = post.rawData) === null || _f === void 0 ? void 0 : _f.paywalled) !== null && _g !== void 0 ? _g : false,
36
+ description: ((_h = post.rawData) === null || _h === void 0 ? void 0 : _h.description) || post.body || '',
37
+ };
38
+ }
39
+ static formatComment(comment, parentPostId) {
40
+ var _a, _b;
41
+ return {
42
+ id: comment.id,
43
+ body: comment.body,
44
+ createdAt: ((_a = comment.rawData) === null || _a === void 0 ? void 0 : _a.created_at) || comment.createdAt.toISOString(),
45
+ parentPostId: parentPostId || ((_b = comment.rawData) === null || _b === void 0 ? void 0 : _b.parent_post_id) || 0,
46
+ author: {
47
+ id: comment.author.id,
48
+ name: comment.author.name,
49
+ isAdmin: comment.author.isAdmin || false,
50
+ },
51
+ };
52
+ }
53
+ static formatProfile(profile) {
54
+ return {
55
+ id: profile.id,
56
+ name: profile.name,
57
+ handle: profile.slug,
58
+ bio: profile.bio,
59
+ };
60
+ }
61
+ static formatFollowing(followee, returnType) {
62
+ if (returnType === 'ids') {
63
+ return {
64
+ id: followee.id,
65
+ };
66
+ }
67
+ return {
68
+ id: followee.id,
69
+ name: followee.name,
70
+ handle: followee.slug,
71
+ bio: followee.bio,
72
+ subscriberCount: 0,
73
+ subscriberCountString: '',
74
+ primaryPublication: undefined,
75
+ };
76
+ }
77
+ static formatDate(date) {
78
+ if (date && !isNaN(new Date(date).getTime())) {
79
+ return new Date(date).toISOString();
80
+ }
81
+ return new Date().toISOString();
82
+ }
83
+ }
84
+ exports.DataFormatters = DataFormatters;
85
+ //# sourceMappingURL=DataFormatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataFormatters.js","sourceRoot":"","sources":["../../../../nodes/Substack/shared/DataFormatters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class OperationUtils {
2
+ static executeAsyncIterable<T, R>(iterable: AsyncIterable<T>, limit: number, formatter: (item: T, ...args: any[]) => R, ...formatterArgs: any[]): Promise<R[]>;
3
+ static parseLimit(limitParam: any): number;
4
+ static parseNumericParam(param: any, paramName: string): number;
5
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperationUtils = void 0;
4
+ class OperationUtils {
5
+ static async executeAsyncIterable(iterable, limit, formatter, ...formatterArgs) {
6
+ const results = [];
7
+ let count = 0;
8
+ for await (const item of iterable) {
9
+ if (count >= limit)
10
+ break;
11
+ try {
12
+ results.push(formatter(item, ...formatterArgs));
13
+ }
14
+ catch (error) {
15
+ }
16
+ count++;
17
+ }
18
+ return results;
19
+ }
20
+ static parseLimit(limitParam) {
21
+ if (limitParam !== '' && limitParam !== null && limitParam !== undefined) {
22
+ return Number(limitParam);
23
+ }
24
+ return 100;
25
+ }
26
+ static parseNumericParam(param, paramName) {
27
+ const numericValue = typeof param === 'string' ? parseInt(param, 10) : param;
28
+ if (!numericValue || isNaN(numericValue)) {
29
+ throw new Error(`Invalid ${paramName}: must be a valid number`);
30
+ }
31
+ return numericValue;
32
+ }
33
+ }
34
+ exports.OperationUtils = OperationUtils;
35
+ //# sourceMappingURL=OperationUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationUtils.js","sourceRoot":"","sources":["../../../../nodes/Substack/shared/OperationUtils.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAc;IAI1B,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAChC,QAA0B,EAC1B,KAAa,EACb,SAAyC,EACzC,GAAG,aAAoB;QAEvB,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YACnC,IAAI,KAAK,IAAI,KAAK;gBAAE,MAAM;YAE1B,IAAI,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;YAEjB,CAAC;YACD,KAAK,EAAE,CAAC;QACT,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAKD,MAAM,CAAC,UAAU,CAAC,UAAe;QAChC,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC1E,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAKD,MAAM,CAAC,iBAAiB,CAAC,KAAU,EAAE,SAAiB;QACrD,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE7E,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,0BAA0B,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,YAAY,CAAC;IACrB,CAAC;CACD;AAjDD,wCAiDC"}
@@ -0,0 +1,25 @@
1
+ import { IExecuteFunctions } from 'n8n-workflow';
2
+ import { SubstackClient } from 'substack-api';
3
+ import { IStandardResponse } from '../types';
4
+ export declare class ResourceOperations {
5
+ static executeResourceList<T>(config: {
6
+ executeFunctions: IExecuteFunctions;
7
+ client: SubstackClient;
8
+ publicationAddress: string;
9
+ itemIndex: number;
10
+ getIterable: (client: SubstackClient, params: any) => Promise<AsyncIterable<T>>;
11
+ formatter: (item: T, publicationAddress: string, ...args: any[]) => any;
12
+ additionalParams?: Record<string, any>;
13
+ formatterArgs?: any[];
14
+ }): Promise<IStandardResponse>;
15
+ static executeSingleResource<T>(config: {
16
+ executeFunctions: IExecuteFunctions;
17
+ client: SubstackClient;
18
+ publicationAddress: string;
19
+ itemIndex: number;
20
+ getResource: (client: SubstackClient, params: any) => Promise<T>;
21
+ formatter: (item: T, publicationAddress: string, ...args: any[]) => any;
22
+ additionalParams?: Record<string, any>;
23
+ formatterArgs?: any[];
24
+ }): Promise<IStandardResponse>;
25
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResourceOperations = void 0;
4
+ const SubstackUtils_1 = require("../SubstackUtils");
5
+ const OperationUtils_1 = require("./OperationUtils");
6
+ class ResourceOperations {
7
+ static async executeResourceList(config) {
8
+ try {
9
+ const limitParam = config.executeFunctions.getNodeParameter('limit', config.itemIndex, '');
10
+ const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
11
+ const params = {};
12
+ if (config.additionalParams) {
13
+ for (const [key, defaultValue] of Object.entries(config.additionalParams)) {
14
+ params[key] = config.executeFunctions.getNodeParameter(key, config.itemIndex, defaultValue);
15
+ }
16
+ }
17
+ const iterable = await config.getIterable(config.client, params);
18
+ const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(iterable, limit, config.formatter, config.publicationAddress, ...(config.formatterArgs || []));
19
+ return {
20
+ success: true,
21
+ data: results,
22
+ metadata: { status: 'success' }
23
+ };
24
+ }
25
+ catch (error) {
26
+ return SubstackUtils_1.SubstackUtils.formatErrorResponse({
27
+ message: error.message,
28
+ node: config.executeFunctions.getNode(),
29
+ itemIndex: config.itemIndex,
30
+ });
31
+ }
32
+ }
33
+ static async executeSingleResource(config) {
34
+ try {
35
+ const params = {};
36
+ if (config.additionalParams) {
37
+ for (const [key, defaultValue] of Object.entries(config.additionalParams)) {
38
+ params[key] = config.executeFunctions.getNodeParameter(key, config.itemIndex, defaultValue);
39
+ }
40
+ }
41
+ const resource = await config.getResource(config.client, params);
42
+ const result = config.formatter(resource, config.publicationAddress, ...(config.formatterArgs || []));
43
+ return {
44
+ success: true,
45
+ data: result,
46
+ metadata: { status: 'success' }
47
+ };
48
+ }
49
+ catch (error) {
50
+ return SubstackUtils_1.SubstackUtils.formatErrorResponse({
51
+ message: error.message,
52
+ node: config.executeFunctions.getNode(),
53
+ itemIndex: config.itemIndex,
54
+ });
55
+ }
56
+ }
57
+ }
58
+ exports.ResourceOperations = ResourceOperations;
59
+ //# sourceMappingURL=ResourceOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceOperations.js","sourceRoot":"","sources":["../../../../nodes/Substack/shared/ResourceOperations.ts"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-substack",
3
- "version": "1.1.1",
3
+ "version": "1.2.1",
4
4
  "description": "n8n community node for Substack API integration",
5
5
  "keywords": [
6
6
  "n8n-community-node-package"
@@ -46,7 +46,7 @@
46
46
  "devDependencies": {
47
47
  "@types/jest": "^30.0.0",
48
48
  "@types/marked": "^5.0.2",
49
- "@typescript-eslint/parser": "~8.37.0",
49
+ "@typescript-eslint/parser": "~8.38.0",
50
50
  "eslint": "^9.29.0",
51
51
  "eslint-plugin-n8n-nodes-base": "^1.16.3",
52
52
  "gulp": "^5.0.0",
@@ -59,7 +59,7 @@
59
59
  "n8n-workflow": "^1.82.0"
60
60
  },
61
61
  "dependencies": {
62
- "marked": "^4.3.0",
63
- "substack-api": "^1.2.0"
62
+ "marked": "^16.1.1",
63
+ "substack-api": "^1.3.0"
64
64
  }
65
65
  }