n8n-nodes-substack 1.1.1 → 1.2.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.
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.commentOperationHandlers = exports.commentOperations = exports.CommentOperation = void 0;
4
+ const DataFormatters_1 = require("./shared/DataFormatters");
5
+ const OperationUtils_1 = require("./shared/OperationUtils");
4
6
  const SubstackUtils_1 = require("./SubstackUtils");
5
7
  var CommentOperation;
6
8
  (function (CommentOperation) {
@@ -36,44 +38,17 @@ exports.commentOperations = [
36
38
  },
37
39
  ];
38
40
  async function getAll(executeFunctions, client, publicationAddress, itemIndex) {
39
- var _a;
40
41
  try {
41
- const postIdParam = executeFunctions.getNodeParameter('postId', itemIndex);
42
- const postId = typeof postIdParam === 'string' ? parseInt(postIdParam, 10) : postIdParam;
43
- if (!postId || isNaN(postId)) {
44
- throw new Error('Invalid postId: must be a valid number');
45
- }
42
+ const postId = OperationUtils_1.OperationUtils.parseNumericParam(executeFunctions.getNodeParameter('postId', itemIndex), 'postId');
46
43
  const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
47
- let limit = 100;
48
- if (limitParam !== '' && limitParam !== null && limitParam !== undefined) {
49
- limit = Number(limitParam);
50
- }
44
+ const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
51
45
  const post = await client.postForId(postId);
52
46
  const commentsIterable = await post.comments();
53
- const formattedComments = [];
54
- let count = 0;
55
- for await (const comment of commentsIterable) {
56
- if (count >= limit)
57
- break;
58
- formattedComments.push({
59
- id: comment.id,
60
- body: comment.body,
61
- createdAt: ((_a = comment.rawData) === null || _a === void 0 ? void 0 : _a.created_at) || comment.createdAt.toISOString(),
62
- parentPostId: postId,
63
- author: {
64
- id: comment.author.id,
65
- name: comment.author.name,
66
- isAdmin: comment.author.isAdmin || false,
67
- },
68
- });
69
- count++;
70
- }
47
+ const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(commentsIterable, limit, (comment, publicationAddress) => DataFormatters_1.DataFormatters.formatComment(comment, postId), publicationAddress);
71
48
  return {
72
49
  success: true,
73
- data: formattedComments,
74
- metadata: {
75
- status: 'success',
76
- },
50
+ data: results,
51
+ metadata: { status: 'success' }
77
52
  };
78
53
  }
79
54
  catch (error) {
@@ -85,27 +60,14 @@ async function getAll(executeFunctions, client, publicationAddress, itemIndex) {
85
60
  }
86
61
  }
87
62
  async function getCommentById(executeFunctions, client, publicationAddress, itemIndex) {
88
- var _a, _b;
89
63
  try {
90
- const commentId = executeFunctions.getNodeParameter('commentId', itemIndex);
91
- const comment = await client.commentForId(parseInt(commentId, 10));
92
- const formattedComment = {
93
- id: comment.id,
94
- body: comment.body,
95
- createdAt: ((_a = comment.rawData) === null || _a === void 0 ? void 0 : _a.created_at) || comment.createdAt.toISOString(),
96
- parentPostId: ((_b = comment.rawData) === null || _b === void 0 ? void 0 : _b.parent_post_id) || 0,
97
- author: {
98
- id: comment.author.id,
99
- name: comment.author.name,
100
- isAdmin: comment.author.isAdmin || false,
101
- },
102
- };
64
+ const commentId = OperationUtils_1.OperationUtils.parseNumericParam(executeFunctions.getNodeParameter('commentId', itemIndex), 'commentId');
65
+ const comment = await client.commentForId(commentId);
66
+ const result = DataFormatters_1.DataFormatters.formatComment(comment);
103
67
  return {
104
68
  success: true,
105
- data: formattedComment,
106
- metadata: {
107
- status: 'success',
108
- },
69
+ data: result,
70
+ metadata: { status: 'success' }
109
71
  };
110
72
  }
111
73
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"Comment.operations.js","sourceRoot":"","sources":["../../../nodes/Substack/Comment.operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Comment.operations.js","sourceRoot":"","sources":["../../../nodes/Substack/Comment.operations.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { OwnProfile } from 'substack-api';
2
2
  export declare class MarkdownParser {
3
- static parseMarkdownToNoteStructured(markdown: string, noteBuilder: ReturnType<OwnProfile['newNote']>): ReturnType<OwnProfile['newNote']>;
4
- static parseMarkdownToNote(markdown: string, noteBuilder: ReturnType<OwnProfile['newNote']>): ReturnType<OwnProfile['newNote']>;
3
+ static parseMarkdownToNoteStructured(markdown: string, noteBuilder: ReturnType<OwnProfile['newNote']>): ReturnType<ReturnType<OwnProfile['newNote']>['paragraph']>;
4
+ static parseMarkdownToNote(markdown: string, noteBuilder: ReturnType<OwnProfile['newNote']>): ReturnType<ReturnType<OwnProfile['newNote']>['paragraph']>;
5
5
  private static processTokensStructured;
6
6
  private static processHeadingStructured;
7
7
  private static processParagraphStructured;
@@ -2,6 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MarkdownParser = void 0;
4
4
  const marked_1 = require("marked");
5
+ marked_1.marked.setOptions({
6
+ gfm: true,
7
+ breaks: false
8
+ });
9
+ function decodeHtmlEntities(text) {
10
+ const entityMap = {
11
+ '&#39;': "'",
12
+ '&quot;': '"',
13
+ '&amp;': '&',
14
+ '&lt;': '<',
15
+ '&gt;': '>',
16
+ '&nbsp;': ' '
17
+ };
18
+ return text.replace(/&#?\w+;/g, (entity) => entityMap[entity] || entity);
19
+ }
5
20
  class MarkdownParser {
6
21
  static parseMarkdownToNoteStructured(markdown, noteBuilder) {
7
22
  if (!markdown.trim()) {
@@ -15,77 +30,98 @@ class MarkdownParser {
15
30
  throw new Error('Note must contain at least one paragraph with actual content');
16
31
  }
17
32
  const contentTracker = { meaningfulNodesCreated: 0 };
18
- this.processTokensStructured(tokens, noteBuilder, contentTracker);
33
+ let currentBuilder = null;
34
+ currentBuilder = this.processTokensStructured(tokens, noteBuilder, contentTracker);
19
35
  if (contentTracker.meaningfulNodesCreated === 0) {
20
36
  throw new Error('Note must contain at least one paragraph with actual content');
21
37
  }
22
- return noteBuilder;
38
+ if (!currentBuilder) {
39
+ throw new Error('Failed to create note content');
40
+ }
41
+ return currentBuilder;
23
42
  }
24
43
  static parseMarkdownToNote(markdown, noteBuilder) {
25
44
  return this.parseMarkdownToNoteStructured(markdown, noteBuilder);
26
45
  }
27
46
  static processTokensStructured(tokens, noteBuilder, contentTracker) {
47
+ let currentBuilder = null;
28
48
  for (const token of tokens) {
49
+ let newBuilder = null;
29
50
  switch (token.type) {
30
51
  case 'heading':
31
- this.processHeadingStructured(token, noteBuilder, contentTracker);
52
+ newBuilder = this.processHeadingStructured(token, noteBuilder, currentBuilder, contentTracker);
32
53
  break;
33
54
  case 'paragraph':
34
- this.processParagraphStructured(token, noteBuilder, contentTracker);
55
+ newBuilder = this.processParagraphStructured(token, noteBuilder, currentBuilder, contentTracker);
35
56
  break;
36
57
  case 'list':
37
- this.processListStructured(token, noteBuilder, contentTracker);
58
+ newBuilder = this.processListStructured(token, noteBuilder, currentBuilder, contentTracker);
38
59
  break;
39
60
  case 'space':
40
61
  break;
41
62
  default:
42
63
  if (token.text) {
43
- let paragraphBuilder = noteBuilder.paragraph();
44
- paragraphBuilder = paragraphBuilder.text(token.text);
64
+ const decodedText = decodeHtmlEntities(token.text);
65
+ if (currentBuilder) {
66
+ newBuilder = currentBuilder.paragraph().text(decodedText);
67
+ }
68
+ else {
69
+ newBuilder = noteBuilder.paragraph().text(decodedText);
70
+ }
45
71
  contentTracker.meaningfulNodesCreated++;
46
72
  }
47
73
  break;
48
74
  }
75
+ if (newBuilder) {
76
+ currentBuilder = newBuilder;
77
+ }
49
78
  }
79
+ return currentBuilder;
50
80
  }
51
- static processHeadingStructured(token, noteBuilder, contentTracker) {
81
+ static processHeadingStructured(token, noteBuilder, currentBuilder, contentTracker) {
52
82
  const hasContent = (token.tokens && token.tokens.some((t) => t.text && t.text.trim())) ||
53
83
  (token.text && token.text.trim());
54
84
  if (!hasContent) {
55
- return;
85
+ return currentBuilder;
56
86
  }
57
- let paragraphBuilder = noteBuilder.paragraph();
87
+ let paragraphBuilder = currentBuilder ? currentBuilder.paragraph() : noteBuilder.paragraph();
58
88
  if (token.tokens && token.tokens.length > 0) {
59
89
  paragraphBuilder = this.processInlineTokensStructured(token.tokens, paragraphBuilder, true);
60
90
  }
61
91
  else if (token.text) {
62
- paragraphBuilder = paragraphBuilder.bold(token.text);
92
+ paragraphBuilder = paragraphBuilder.bold(decodeHtmlEntities(token.text));
63
93
  }
64
94
  contentTracker.meaningfulNodesCreated++;
95
+ return paragraphBuilder;
65
96
  }
66
- static processParagraphStructured(token, noteBuilder, contentTracker) {
97
+ static processParagraphStructured(token, noteBuilder, currentBuilder, contentTracker) {
67
98
  const hasContent = (token.tokens && token.tokens.some((t) => t.text && t.text.trim())) ||
68
99
  (token.text && token.text.trim());
69
100
  if (!hasContent) {
70
- return;
101
+ return currentBuilder;
71
102
  }
72
103
  const text = token.text ? token.text.trim() : '';
73
- const isOnlyListMarker = /^([-*+]|\d+\.)\s*$/.test(text);
74
- if (isOnlyListMarker) {
75
- return;
104
+ const normalizedText = text.replace(/\s+/g, ' ').trim();
105
+ const isOnlyListMarkers = /^([-*+]|(\d+\.))+(\s*([-*+]|(\d+\.)))*$/.test(normalizedText);
106
+ const isEmptyListMarkers = normalizedText === '- * 1.' || /^[-*+\d.\s]+$/.test(normalizedText);
107
+ if (isOnlyListMarkers || isEmptyListMarkers) {
108
+ return currentBuilder;
76
109
  }
77
- let paragraphBuilder = noteBuilder.paragraph();
110
+ let paragraphBuilder = currentBuilder ? currentBuilder.paragraph() : noteBuilder.paragraph();
78
111
  if (token.tokens && token.tokens.length > 0) {
79
112
  paragraphBuilder = this.processInlineTokensStructured(token.tokens, paragraphBuilder);
80
113
  }
81
114
  else if (token.text) {
82
- paragraphBuilder = paragraphBuilder.text(token.text);
115
+ paragraphBuilder = paragraphBuilder.text(decodeHtmlEntities(token.text));
83
116
  }
84
117
  contentTracker.meaningfulNodesCreated++;
118
+ return paragraphBuilder;
85
119
  }
86
- static processListStructured(token, noteBuilder, contentTracker) {
120
+ static processListStructured(token, noteBuilder, currentBuilder, contentTracker) {
87
121
  if (!token.items)
88
- return;
122
+ return currentBuilder;
123
+ let finalBuilder = currentBuilder;
124
+ let listItemNumber = 1;
89
125
  token.items.forEach((item, index) => {
90
126
  const hasContent = (item.tokens && item.tokens.some((t) => t.text && t.text.trim())) ||
91
127
  (item.text && item.text.trim());
@@ -111,9 +147,10 @@ class MarkdownParser {
111
147
  if (!actualContent) {
112
148
  return;
113
149
  }
114
- let paragraphBuilder = noteBuilder.paragraph();
150
+ let paragraphBuilder = finalBuilder ? finalBuilder.paragraph() : noteBuilder.paragraph();
115
151
  if (token.ordered) {
116
- paragraphBuilder = paragraphBuilder.text(`${index + 1}. `);
152
+ paragraphBuilder = paragraphBuilder.text(`${listItemNumber}. `);
153
+ listItemNumber++;
117
154
  }
118
155
  else {
119
156
  paragraphBuilder = paragraphBuilder.text('• ');
@@ -124,14 +161,16 @@ class MarkdownParser {
124
161
  paragraphBuilder = this.processInlineTokensStructured(firstToken.tokens, paragraphBuilder);
125
162
  }
126
163
  else if (firstToken && firstToken.text) {
127
- paragraphBuilder = paragraphBuilder.text(firstToken.text);
164
+ paragraphBuilder = paragraphBuilder.text(decodeHtmlEntities(firstToken.text));
128
165
  }
129
166
  }
130
167
  else if (item.text) {
131
- paragraphBuilder = paragraphBuilder.text(item.text);
168
+ paragraphBuilder = paragraphBuilder.text(decodeHtmlEntities(item.text));
132
169
  }
133
170
  contentTracker.meaningfulNodesCreated++;
171
+ finalBuilder = paragraphBuilder;
134
172
  });
173
+ return finalBuilder;
135
174
  }
136
175
  static processInlineTokensStructured(tokens, paragraphBuilder, isHeading = false) {
137
176
  let currentBuilder = paragraphBuilder;
@@ -141,25 +180,27 @@ class MarkdownParser {
141
180
  }
142
181
  switch (token.type) {
143
182
  case 'text':
183
+ const decodedText = decodeHtmlEntities(token.text);
144
184
  if (isHeading) {
145
- currentBuilder = currentBuilder.bold(token.text);
185
+ currentBuilder = currentBuilder.bold(decodedText);
146
186
  }
147
187
  else {
148
- currentBuilder = currentBuilder.text(token.text);
188
+ currentBuilder = currentBuilder.text(decodedText);
149
189
  }
150
190
  break;
151
191
  case 'strong':
152
- currentBuilder = currentBuilder.bold(token.text);
192
+ currentBuilder = currentBuilder.bold(decodeHtmlEntities(token.text));
153
193
  break;
154
194
  case 'em':
155
- currentBuilder = currentBuilder.italic(token.text);
195
+ currentBuilder = currentBuilder.italic(decodeHtmlEntities(token.text));
156
196
  break;
157
197
  case 'codespan':
158
- currentBuilder = currentBuilder.code(token.text);
198
+ currentBuilder = currentBuilder.code(decodeHtmlEntities(token.text));
159
199
  break;
160
200
  case 'link':
161
201
  if (token.text) {
162
- currentBuilder = currentBuilder.text(`${token.text} (${token.href})`);
202
+ const decodedLinkText = decodeHtmlEntities(token.text);
203
+ currentBuilder = currentBuilder.text(`${decodedLinkText} (${token.href})`);
163
204
  }
164
205
  else {
165
206
  currentBuilder = currentBuilder.text(token.href);
@@ -167,11 +208,12 @@ class MarkdownParser {
167
208
  break;
168
209
  default:
169
210
  if (token.text) {
211
+ const decodedFallbackText = decodeHtmlEntities(token.text);
170
212
  if (isHeading) {
171
- currentBuilder = currentBuilder.bold(token.text);
213
+ currentBuilder = currentBuilder.bold(decodedFallbackText);
172
214
  }
173
215
  else {
174
- currentBuilder = currentBuilder.text(token.text);
216
+ currentBuilder = currentBuilder.text(decodedFallbackText);
175
217
  }
176
218
  }
177
219
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownParser.js","sourceRoot":"","sources":["../../../nodes/Substack/MarkdownParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MarkdownParser.js","sourceRoot":"","sources":["../../../nodes/Substack/MarkdownParser.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAIhC,eAAM,CAAC,UAAU,CAAC;IACjB,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,KAAK;CACb,CAAC,CAAC;AAGH,SAAS,kBAAkB,CAAC,IAAY;IACvC,MAAM,SAAS,GAA2B;QACzC,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,QAAQ,EAAE,GAAG;KACb,CAAC;IAEF,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC;AAC1E,CAAC;AAMD,MAAa,cAAc;IAK1B,MAAM,CAAC,6BAA6B,CAAC,QAAgB,EAAE,WAA8C;QACpG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;QAChG,CAAC;QAGD,MAAM,MAAM,GAAG,eAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAGtC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9C,KAAK,CAAC,IAAI,KAAK,WAAW;YAC1B,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,KAAK,CAAC,IAAI,KAAK,MAAM,CACrB,CAAC;QAEF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACjF,CAAC;QAID,MAAM,cAAc,GAAG,EAAE,sBAAsB,EAAE,CAAC,EAAE,CAAC;QACrD,IAAI,cAAc,GAAsE,IAAI,CAAC;QAC7F,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;QAGnF,IAAI,cAAc,CAAC,sBAAsB,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,cAAc,CAAC;IACvB,CAAC;IAKD,MAAM,CAAC,mBAAmB,CAAC,QAAgB,EAAE,WAA8C;QAC1F,OAAO,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAMO,MAAM,CAAC,uBAAuB,CAAC,MAAa,EAAE,WAA8C,EAAE,cAAmB;QACxH,IAAI,cAAc,GAAsE,IAAI,CAAC;QAE7F,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,UAAU,GAAsE,IAAI,CAAC;YAEzF,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,SAAS;oBACb,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;oBAC/F,MAAM;gBACP,KAAK,WAAW;oBACf,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;oBACjG,MAAM;gBACP,KAAK,MAAM;oBACV,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;oBAC5F,MAAM;gBACP,KAAK,OAAO;oBAEX,MAAM;gBACP;oBAEC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBAChB,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACnD,IAAI,cAAc,EAAE,CAAC;4BACpB,UAAU,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC3D,CAAC;6BAAM,CAAC;4BACP,UAAU,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBACxD,CAAC;wBACD,cAAc,CAAC,sBAAsB,EAAE,CAAC;oBACzC,CAAC;oBACD,MAAM;YACR,CAAC;YAGD,IAAI,UAAU,EAAE,CAAC;gBAChB,cAAc,GAAG,UAAU,CAAC;YAC7B,CAAC;QACF,CAAC;QAED,OAAO,cAAc,CAAC;IACvB,CAAC;IAMO,MAAM,CAAC,wBAAwB,CAAC,KAAU,EAAE,WAA8C,EAAE,cAAiF,EAAE,cAAmB;QAEzM,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpF,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAEjB,OAAO,cAAc,CAAC;QACvB,CAAC;QAGD,IAAI,gBAAgB,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAG7F,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC7F,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACvB,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,cAAc,CAAC,sBAAsB,EAAE,CAAC;QAExC,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAMO,MAAM,CAAC,0BAA0B,CAAC,KAAU,EAAE,WAA8C,EAAE,cAAiF,EAAE,cAAmB;QAE3M,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpF,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAEjB,OAAO,cAAc,CAAC;QACvB,CAAC;QAGD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAGxD,MAAM,iBAAiB,GAAG,yCAAyC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzF,MAAM,kBAAkB,GAAG,cAAc,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE/F,IAAI,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;YAC7C,OAAO,cAAc,CAAC;QACvB,CAAC;QAGD,IAAI,gBAAgB,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAG7F,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACvF,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACvB,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,cAAc,CAAC,sBAAsB,EAAE,CAAC;QAExC,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAMO,MAAM,CAAC,qBAAqB,CAAC,KAAU,EAAE,WAA8C,EAAE,cAAiF,EAAE,cAAmB;QACtM,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,cAAc,CAAC;QAExC,IAAI,YAAY,GAAG,cAAc,CAAC;QAClC,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,KAAa,EAAE,EAAE;YAEhD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClF,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAEvC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjB,OAAO;YACR,CAAC;YAGD,IAAI,aAAa,GAAG,EAAE,CAAC;YAGvB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBAErC,MAAM,sBAAsB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC7F,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvC,aAAa,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChF,CAAC;gBACF,CAAC;qBAAM,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBACpE,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxC,CAAC;YACF,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1C,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,CAAC;YAGD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACpB,OAAO;YACR,CAAC;YAID,IAAI,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YAGzF,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,cAAc,IAAI,CAAC,CAAC;gBAChE,cAAc,EAAE,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACP,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC;YAGD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAE3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACrC,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBAC5F,CAAC;qBAAM,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;oBAC1C,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/E,CAAC;YACF,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtB,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACzE,CAAC;YACD,cAAc,CAAC,sBAAsB,EAAE,CAAC;YAGxC,YAAY,GAAG,gBAAgB,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACrB,CAAC;IAMO,MAAM,CAAC,6BAA6B,CAAC,MAAa,EAAE,gBAA4E,EAAE,YAAqB,KAAK;QACnK,IAAI,cAAc,GAAG,gBAAgB,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAE5B,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvC,SAAS;YACV,CAAC;YAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,MAAM;oBACV,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACnD,IAAI,SAAS,EAAE,CAAC;wBACf,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACnD,CAAC;yBAAM,CAAC;wBACP,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACnD,CAAC;oBACD,MAAM;gBACP,KAAK,QAAQ;oBACZ,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACrE,MAAM;gBACP,KAAK,IAAI;oBACR,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACvE,MAAM;gBACP,KAAK,UAAU;oBACd,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACrE,MAAM;gBACP,KAAK,MAAM;oBAEV,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBAChB,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACvD,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,eAAe,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;oBAC5E,CAAC;yBAAM,CAAC;wBACP,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClD,CAAC;oBACD,MAAM;gBACP;oBAEC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBAChB,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC3D,IAAI,SAAS,EAAE,CAAC;4BACf,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;wBAC3D,CAAC;6BAAM,CAAC;4BACP,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;wBAC3D,CAAC;oBACF,CAAC;oBACD,MAAM;YACR,CAAC;QACF,CAAC;QAED,OAAO,cAAc,CAAC;IACvB,CAAC;CACD;AAvSD,wCAuSC"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.noteOperationHandlers = exports.noteOperations = exports.NoteOperation = void 0;
4
4
  const SubstackUtils_1 = require("./SubstackUtils");
5
5
  const MarkdownParser_1 = require("./MarkdownParser");
6
+ const DataFormatters_1 = require("./shared/DataFormatters");
7
+ const OperationUtils_1 = require("./shared/OperationUtils");
6
8
  var NoteOperation;
7
9
  (function (NoteOperation) {
8
10
  NoteOperation["Create"] = "create";
@@ -58,42 +60,16 @@ exports.noteOperations = [
58
60
  },
59
61
  ];
60
62
  async function get(executeFunctions, client, publicationAddress, itemIndex) {
61
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
62
63
  try {
63
64
  const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
64
- let limit = 100;
65
- if (limitParam !== '' && limitParam !== null && limitParam !== undefined) {
66
- limit = Number(limitParam);
67
- }
65
+ const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
68
66
  const ownProfile = await client.ownProfile();
69
67
  const notesIterable = await ownProfile.notes();
70
- const formattedNotes = [];
71
- let count = 0;
72
- for await (const note of notesIterable) {
73
- if (count >= limit)
74
- break;
75
- formattedNotes.push({
76
- 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',
77
- body: note.body || '',
78
- 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'}`),
79
- date: ((_h = (_g = note.rawData) === null || _g === void 0 ? void 0 : _g.context) === null || _h === void 0 ? void 0 : _h.timestamp) ||
80
- ((_j = note.publishedAt) === null || _j === void 0 ? void 0 : _j.toISOString()) ||
81
- new Date().toISOString(),
82
- status: 'published',
83
- userId: ((_l = (_k = note.author) === null || _k === void 0 ? void 0 : _k.id) === null || _l === void 0 ? void 0 : _l.toString()) || 'unknown',
84
- likes: note.likesCount || 0,
85
- restacks: ((_o = (_m = note.rawData) === null || _m === void 0 ? void 0 : _m.comment) === null || _o === void 0 ? void 0 : _o.restacks) || 0,
86
- type: 'note',
87
- entityKey: ((_p = note.rawData) === null || _p === void 0 ? void 0 : _p.entity_key) || note.id,
88
- });
89
- count++;
90
- }
68
+ const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(notesIterable, limit, DataFormatters_1.DataFormatters.formatNote, publicationAddress);
91
69
  return {
92
70
  success: true,
93
- data: formattedNotes,
94
- metadata: {
95
- status: 'success',
96
- },
71
+ data: results,
72
+ metadata: { status: 'success' }
97
73
  };
98
74
  }
99
75
  catch (error) {
@@ -105,47 +81,17 @@ async function get(executeFunctions, client, publicationAddress, itemIndex) {
105
81
  }
106
82
  }
107
83
  async function getNotesBySlug(executeFunctions, client, publicationAddress, itemIndex) {
108
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
109
84
  try {
110
85
  const slug = executeFunctions.getNodeParameter('slug', itemIndex);
111
86
  const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
112
- let limit = 100;
113
- if (limitParam !== '' && limitParam !== null && limitParam !== undefined) {
114
- limit = Number(limitParam);
115
- }
87
+ const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
116
88
  const profile = await client.profileForSlug(slug);
117
89
  const notesIterable = await profile.notes();
118
- const formattedNotes = [];
119
- let count = 0;
120
- for await (const note of notesIterable) {
121
- if (count >= limit)
122
- break;
123
- try {
124
- formattedNotes.push({
125
- 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',
126
- body: note.body || '',
127
- 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'}`),
128
- date: ((_h = (_g = note.rawData) === null || _g === void 0 ? void 0 : _g.context) === null || _h === void 0 ? void 0 : _h.timestamp) ||
129
- ((_j = note.publishedAt) === null || _j === void 0 ? void 0 : _j.toISOString()) ||
130
- new Date().toISOString(),
131
- status: 'published',
132
- userId: ((_l = (_k = note.author) === null || _k === void 0 ? void 0 : _k.id) === null || _l === void 0 ? void 0 : _l.toString()) || 'unknown',
133
- likes: note.likesCount || 0,
134
- restacks: ((_o = (_m = note.rawData) === null || _m === void 0 ? void 0 : _m.comment) === null || _o === void 0 ? void 0 : _o.restacks) || 0,
135
- type: 'note',
136
- entityKey: ((_p = note.rawData) === null || _p === void 0 ? void 0 : _p.entity_key) || note.id,
137
- });
138
- }
139
- catch (error) {
140
- }
141
- count++;
142
- }
90
+ const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(notesIterable, limit, DataFormatters_1.DataFormatters.formatNote, publicationAddress);
143
91
  return {
144
92
  success: true,
145
- data: formattedNotes,
146
- metadata: {
147
- status: 'success',
148
- },
93
+ data: results,
94
+ metadata: { status: 'success' }
149
95
  };
150
96
  }
151
97
  catch (error) {
@@ -157,47 +103,17 @@ async function getNotesBySlug(executeFunctions, client, publicationAddress, item
157
103
  }
158
104
  }
159
105
  async function getNotesById(executeFunctions, client, publicationAddress, itemIndex) {
160
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
161
106
  try {
162
- const userId = executeFunctions.getNodeParameter('userId', itemIndex);
107
+ const userId = OperationUtils_1.OperationUtils.parseNumericParam(executeFunctions.getNodeParameter('userId', itemIndex), 'userId');
163
108
  const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
164
- let limit = 100;
165
- if (limitParam !== '' && limitParam !== null && limitParam !== undefined) {
166
- limit = Number(limitParam);
167
- }
109
+ const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
168
110
  const profile = await client.profileForId(userId);
169
111
  const notesIterable = await profile.notes();
170
- const formattedNotes = [];
171
- let count = 0;
172
- for await (const note of notesIterable) {
173
- if (count >= limit)
174
- break;
175
- try {
176
- formattedNotes.push({
177
- 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',
178
- body: note.body || '',
179
- 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'}`),
180
- date: ((_h = (_g = note.rawData) === null || _g === void 0 ? void 0 : _g.context) === null || _h === void 0 ? void 0 : _h.timestamp) ||
181
- ((_j = note.publishedAt) === null || _j === void 0 ? void 0 : _j.toISOString()) ||
182
- new Date().toISOString(),
183
- status: 'published',
184
- userId: ((_l = (_k = note.author) === null || _k === void 0 ? void 0 : _k.id) === null || _l === void 0 ? void 0 : _l.toString()) || 'unknown',
185
- likes: note.likesCount || 0,
186
- restacks: ((_o = (_m = note.rawData) === null || _m === void 0 ? void 0 : _m.comment) === null || _o === void 0 ? void 0 : _o.restacks) || 0,
187
- type: 'note',
188
- entityKey: ((_p = note.rawData) === null || _p === void 0 ? void 0 : _p.entity_key) || note.id,
189
- });
190
- }
191
- catch (error) {
192
- }
193
- count++;
194
- }
112
+ const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(notesIterable, limit, DataFormatters_1.DataFormatters.formatNote, publicationAddress);
195
113
  return {
196
114
  success: true,
197
- data: formattedNotes,
198
- metadata: {
199
- status: 'success',
200
- },
115
+ data: results,
116
+ metadata: { status: 'success' }
201
117
  };
202
118
  }
203
119
  catch (error) {
@@ -209,30 +125,14 @@ async function getNotesById(executeFunctions, client, publicationAddress, itemIn
209
125
  }
210
126
  }
211
127
  async function getNoteById(executeFunctions, client, publicationAddress, itemIndex) {
212
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
213
128
  try {
214
- const noteId = executeFunctions.getNodeParameter('noteId', itemIndex);
215
- const note = await client.noteForId(parseInt(noteId, 10));
216
- const formattedNote = {
217
- 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',
218
- body: note.body || '',
219
- 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'}`),
220
- date: ((_h = (_g = note.rawData) === null || _g === void 0 ? void 0 : _g.context) === null || _h === void 0 ? void 0 : _h.timestamp) ||
221
- ((_j = note.publishedAt) === null || _j === void 0 ? void 0 : _j.toISOString()) ||
222
- new Date().toISOString(),
223
- status: 'published',
224
- userId: ((_l = (_k = note.author) === null || _k === void 0 ? void 0 : _k.id) === null || _l === void 0 ? void 0 : _l.toString()) || 'unknown',
225
- likes: note.likesCount || 0,
226
- restacks: ((_o = (_m = note.rawData) === null || _m === void 0 ? void 0 : _m.comment) === null || _o === void 0 ? void 0 : _o.restacks) || 0,
227
- type: 'note',
228
- entityKey: ((_p = note.rawData) === null || _p === void 0 ? void 0 : _p.entity_key) || note.id,
229
- };
129
+ const noteId = OperationUtils_1.OperationUtils.parseNumericParam(executeFunctions.getNodeParameter('noteId', itemIndex), 'noteId');
130
+ const note = await client.noteForId(noteId);
131
+ const result = DataFormatters_1.DataFormatters.formatNote(note, publicationAddress);
230
132
  return {
231
133
  success: true,
232
- data: formattedNote,
233
- metadata: {
234
- status: 'success',
235
- },
134
+ data: result,
135
+ metadata: { status: 'success' }
236
136
  };
237
137
  }
238
138
  catch (error) {
@@ -252,7 +152,8 @@ async function createSimpleNote(ownProfile, body, executeFunctions, itemIndex) {
252
152
  });
253
153
  }
254
154
  try {
255
- return await ownProfile.newNote().paragraph().text(body.trim()).publish();
155
+ const finalBuilder = ownProfile.newNote().paragraph().text(body.trim());
156
+ return await finalBuilder.publish();
256
157
  }
257
158
  catch (buildError) {
258
159
  return SubstackUtils_1.SubstackUtils.formatErrorResponse({
@@ -271,7 +172,8 @@ async function createAdvancedNote(ownProfile, body, executeFunctions, itemIndex)
271
172
  });
272
173
  }
273
174
  try {
274
- return await MarkdownParser_1.MarkdownParser.parseMarkdownToNoteStructured(body.trim(), ownProfile.newNote()).publish();
175
+ const finalBuilder = MarkdownParser_1.MarkdownParser.parseMarkdownToNoteStructured(body.trim(), ownProfile.newNote());
176
+ return await finalBuilder.publish();
275
177
  }
276
178
  catch (error) {
277
179
  let userMessage = error.message;