n8n-nodes-substack 1.5.0 → 1.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/dist/credentials/SubstackApi.credentials.js +3 -3
- package/dist/credentials/SubstackApi.credentials.js.map +1 -1
- package/dist/nodes/Substack/Comment.fields.js +0 -14
- package/dist/nodes/Substack/Comment.fields.js.map +1 -1
- package/dist/nodes/Substack/Comment.operations.d.ts +1 -2
- package/dist/nodes/Substack/Comment.operations.js +2 -29
- package/dist/nodes/Substack/Comment.operations.js.map +1 -1
- package/dist/nodes/Substack/Note.fields.js +2 -57
- package/dist/nodes/Substack/Note.fields.js.map +1 -1
- package/dist/nodes/Substack/Note.operations.d.ts +0 -1
- package/dist/nodes/Substack/Note.operations.js +9 -107
- package/dist/nodes/Substack/Note.operations.js.map +1 -1
- package/dist/nodes/Substack/Post.fields.js +0 -30
- package/dist/nodes/Substack/Post.fields.js.map +1 -1
- package/dist/nodes/Substack/Post.operations.d.ts +0 -1
- package/dist/nodes/Substack/Post.operations.js +2 -32
- package/dist/nodes/Substack/Post.operations.js.map +1 -1
- package/dist/nodes/Substack/Profile.fields.js +0 -14
- package/dist/nodes/Substack/Profile.fields.js.map +1 -1
- package/dist/nodes/Substack/Profile.operations.d.ts +0 -1
- package/dist/nodes/Substack/Profile.operations.js +2 -31
- package/dist/nodes/Substack/Profile.operations.js.map +1 -1
- package/dist/nodes/Substack/Substack.node.js +2 -2
- package/dist/nodes/Substack/Substack.node.js.map +1 -1
- package/dist/nodes/Substack/SubstackUtils.js +3 -2
- package/dist/nodes/Substack/SubstackUtils.js.map +1 -1
- package/dist/nodes/Substack/shared/DataFormatters.js +17 -29
- package/dist/nodes/Substack/shared/DataFormatters.js.map +1 -1
- package/dist/nodes/Substack/types.d.ts +1 -15
- package/dist/package.json +6 -6
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/dist/nodes/Substack/MarkdownParser.d.ts +0 -11
- package/dist/nodes/Substack/MarkdownParser.js +0 -228
- package/dist/nodes/Substack/MarkdownParser.js.map +0 -1
|
@@ -25,7 +25,7 @@ class SubstackApi {
|
|
|
25
25
|
typeOptions: {
|
|
26
26
|
password: true,
|
|
27
27
|
},
|
|
28
|
-
description: 'The
|
|
28
|
+
description: 'The substack.sid cookie value used for authentication',
|
|
29
29
|
required: true,
|
|
30
30
|
},
|
|
31
31
|
];
|
|
@@ -33,7 +33,7 @@ class SubstackApi {
|
|
|
33
33
|
type: 'generic',
|
|
34
34
|
properties: {
|
|
35
35
|
headers: {
|
|
36
|
-
Cookie: '=
|
|
36
|
+
Cookie: '=substack.sid={{$credentials.apiKey}}',
|
|
37
37
|
},
|
|
38
38
|
},
|
|
39
39
|
};
|
|
@@ -43,7 +43,7 @@ class SubstackApi {
|
|
|
43
43
|
url: '/api/v1/subscription',
|
|
44
44
|
method: 'GET',
|
|
45
45
|
headers: {
|
|
46
|
-
Cookie: '=
|
|
46
|
+
Cookie: '=substack.sid={{$credentials.apiKey}}',
|
|
47
47
|
},
|
|
48
48
|
},
|
|
49
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubstackApi.credentials.js","sourceRoot":"","sources":["../../credentials/SubstackApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IAAxB;QACC,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,cAAc,CAAC;QAC7B,qBAAgB,GAAG,qCAAqC,CAAC;QACzD,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,qBAAqB;gBAClC,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,6BAA6B;gBAC1C,WAAW,EAAE,8EAA8E;gBAC3F,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,KAAK;aACnB;YACD;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"SubstackApi.credentials.js","sourceRoot":"","sources":["../../credentials/SubstackApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,WAAW;IAAxB;QACC,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,cAAc,CAAC;QAC7B,qBAAgB,GAAG,qCAAqC,CAAC;QACzD,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,qBAAqB;gBAClC,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,6BAA6B;gBAC1C,WAAW,EAAE,8EAA8E;gBAC3F,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,KAAK;aACnB;YACD;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,WAAW,EAAE,uDAAuD;gBACpE,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QAIF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,MAAM,EAAE,uCAAuC;iBAC/C;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,8CAA8C;gBACvD,GAAG,EAAE,sBAAsB;gBAC3B,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACR,MAAM,EAAE,uCAAuC;iBAC/C;aACD;SACD,CAAC;IACH,CAAC;CAAA;AAjDD,kCAiDC"}
|
|
@@ -32,19 +32,5 @@ exports.commentFields = [
|
|
|
32
32
|
minValue: 1,
|
|
33
33
|
},
|
|
34
34
|
},
|
|
35
|
-
{
|
|
36
|
-
displayName: 'Comment ID',
|
|
37
|
-
name: 'commentId',
|
|
38
|
-
type: 'string',
|
|
39
|
-
default: '',
|
|
40
|
-
description: 'The ID of the comment to retrieve',
|
|
41
|
-
displayOptions: {
|
|
42
|
-
show: {
|
|
43
|
-
resource: ['comment'],
|
|
44
|
-
operation: ['getCommentById'],
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
required: true,
|
|
48
|
-
},
|
|
49
35
|
];
|
|
50
36
|
//# sourceMappingURL=Comment.fields.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Comment.fields.js","sourceRoot":"","sources":["../../../nodes/Substack/Comment.fields.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAsB;IAI/C;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,wCAAwC;QACrD,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,QAAQ,EAAE,IAAI;KACd;IACD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iCAAiC;QAC9C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;SACX;KACD;
|
|
1
|
+
{"version":3,"file":"Comment.fields.js","sourceRoot":"","sources":["../../../nodes/Substack/Comment.fields.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAsB;IAI/C;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,wCAAwC;QACrD,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,QAAQ,EAAE,IAAI;KACd;IACD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iCAAiC;QAC9C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;SACX;KACD;CACD,CAAC"}
|
|
@@ -2,8 +2,7 @@ import { IExecuteFunctions, INodeProperties } from 'n8n-workflow';
|
|
|
2
2
|
import { SubstackClient } from 'substack-api';
|
|
3
3
|
import { IStandardResponse } from './types';
|
|
4
4
|
export declare enum CommentOperation {
|
|
5
|
-
GetAll = "getAll"
|
|
6
|
-
GetCommentById = "getCommentById"
|
|
5
|
+
GetAll = "getAll"
|
|
7
6
|
}
|
|
8
7
|
export declare const commentOperations: INodeProperties[];
|
|
9
8
|
export declare const commentOperationHandlers: Record<CommentOperation, (executeFunctions: IExecuteFunctions, client: SubstackClient, publicationAddress: string, itemIndex: number) => Promise<IStandardResponse>>;
|
|
@@ -7,7 +7,6 @@ const SubstackUtils_1 = require("./SubstackUtils");
|
|
|
7
7
|
var CommentOperation;
|
|
8
8
|
(function (CommentOperation) {
|
|
9
9
|
CommentOperation["GetAll"] = "getAll";
|
|
10
|
-
CommentOperation["GetCommentById"] = "getCommentById";
|
|
11
10
|
})(CommentOperation || (exports.CommentOperation = CommentOperation = {}));
|
|
12
11
|
exports.commentOperations = [
|
|
13
12
|
{
|
|
@@ -28,12 +27,6 @@ exports.commentOperations = [
|
|
|
28
27
|
description: 'Get all comments for a specific post',
|
|
29
28
|
action: 'Get all comments',
|
|
30
29
|
},
|
|
31
|
-
{
|
|
32
|
-
name: 'Get Comment by ID',
|
|
33
|
-
value: CommentOperation.GetCommentById,
|
|
34
|
-
description: 'Get a specific comment by its ID',
|
|
35
|
-
action: 'Get comment by ID',
|
|
36
|
-
},
|
|
37
30
|
],
|
|
38
31
|
},
|
|
39
32
|
];
|
|
@@ -43,8 +36,8 @@ async function getAll(executeFunctions, client, publicationAddress, itemIndex) {
|
|
|
43
36
|
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
44
37
|
const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
|
|
45
38
|
const post = await client.postForId(postId);
|
|
46
|
-
const commentsIterable =
|
|
47
|
-
const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(commentsIterable, limit, (comment
|
|
39
|
+
const commentsIterable = post.comments();
|
|
40
|
+
const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(commentsIterable, limit, (comment) => DataFormatters_1.DataFormatters.formatComment(comment, postId), publicationAddress);
|
|
48
41
|
return {
|
|
49
42
|
success: true,
|
|
50
43
|
data: results,
|
|
@@ -59,27 +52,7 @@ async function getAll(executeFunctions, client, publicationAddress, itemIndex) {
|
|
|
59
52
|
});
|
|
60
53
|
}
|
|
61
54
|
}
|
|
62
|
-
async function getCommentById(executeFunctions, client, publicationAddress, itemIndex) {
|
|
63
|
-
try {
|
|
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);
|
|
67
|
-
return {
|
|
68
|
-
success: true,
|
|
69
|
-
data: result,
|
|
70
|
-
metadata: { status: 'success' },
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
75
|
-
message: error.message,
|
|
76
|
-
node: executeFunctions.getNode(),
|
|
77
|
-
itemIndex,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
55
|
exports.commentOperationHandlers = {
|
|
82
56
|
[CommentOperation.GetAll]: getAll,
|
|
83
|
-
[CommentOperation.GetCommentById]: getCommentById,
|
|
84
57
|
};
|
|
85
58
|
//# sourceMappingURL=Comment.operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Comment.operations.js","sourceRoot":"","sources":["../../../nodes/Substack/Comment.operations.ts"],"names":[],"mappings":";;;AAGA,4DAAyD;AACzD,4DAAyD;AACzD,mDAAgD;AAEhD,IAAY,
|
|
1
|
+
{"version":3,"file":"Comment.operations.js","sourceRoot":"","sources":["../../../nodes/Substack/Comment.operations.ts"],"names":[],"mappings":";;;AAGA,4DAAyD;AACzD,4DAAyD;AACzD,mDAAgD;AAEhD,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC3B,qCAAiB,CAAA;AAClB,CAAC,EAFW,gBAAgB,gCAAhB,gBAAgB,QAE3B;AAEY,QAAA,iBAAiB,GAAsB;IACnD;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,QAAQ;QACjB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,SAAS,CAAC;aACrB;SACD;QACD,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,gBAAgB,CAAC,MAAM;gBAC9B,WAAW,EAAE,sCAAsC;gBACnD,MAAM,EAAE,kBAAkB;aAC1B;SACD;KACD;CACD,CAAC;AAEF,KAAK,UAAU,MAAM,CACpB,gBAAmC,EACnC,MAAsB,EACtB,kBAA0B,EAC1B,SAAiB;IAEjB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,+BAAc,CAAC,iBAAiB,CAC9C,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EACtD,QAAQ,CACR,CAAC;QACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,+BAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,+BAAc,CAAC,oBAAoB,CACxD,gBAAgB,EAChB,KAAK,EACL,CAAC,OAAY,EAAE,EAAE,CAAC,+BAAc,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,EAC/D,kBAAkB,CAClB,CAAC;QAEF,OAAO;YACN,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;SAC/B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,6BAAa,CAAC,mBAAmB,CAAC;YACxC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE;YAChC,SAAS;SACT,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAEY,QAAA,wBAAwB,GAQjC;IACH,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM;CACjC,CAAC"}
|
|
@@ -7,7 +7,7 @@ exports.noteFields = [
|
|
|
7
7
|
name: 'body',
|
|
8
8
|
type: 'string',
|
|
9
9
|
default: '',
|
|
10
|
-
description: 'The content of the note.
|
|
10
|
+
description: 'The content of the note. Supports Markdown formatting.',
|
|
11
11
|
displayOptions: {
|
|
12
12
|
show: {
|
|
13
13
|
resource: ['note'],
|
|
@@ -18,32 +18,7 @@ exports.noteFields = [
|
|
|
18
18
|
typeOptions: {
|
|
19
19
|
rows: 4,
|
|
20
20
|
},
|
|
21
|
-
placeholder: 'Write your note content here... (
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
displayName: 'Content Type',
|
|
25
|
-
name: 'contentType',
|
|
26
|
-
type: 'options',
|
|
27
|
-
default: 'simple',
|
|
28
|
-
description: 'Choose how to format the content',
|
|
29
|
-
displayOptions: {
|
|
30
|
-
show: {
|
|
31
|
-
resource: ['note'],
|
|
32
|
-
operation: ['create'],
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
options: [
|
|
36
|
-
{
|
|
37
|
-
name: 'Simple Text',
|
|
38
|
-
value: 'simple',
|
|
39
|
-
description: 'Plain text content with structured validation',
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: 'Advanced (Markdown)',
|
|
43
|
-
value: 'advanced',
|
|
44
|
-
description: 'Supports Markdown formatting: **bold**, *italic*, # headings, - lists, [links](URL). Builder prevents invalid notes.',
|
|
45
|
-
},
|
|
46
|
-
],
|
|
21
|
+
placeholder: 'Write your note content here... (Supports Markdown: **bold**, *italic*, # headings, [links](url), - lists)',
|
|
47
22
|
},
|
|
48
23
|
{
|
|
49
24
|
displayName: 'Visibility',
|
|
@@ -157,36 +132,6 @@ exports.noteFields = [
|
|
|
157
132
|
minValue: 1,
|
|
158
133
|
},
|
|
159
134
|
},
|
|
160
|
-
{
|
|
161
|
-
displayName: 'User ID',
|
|
162
|
-
name: 'userId',
|
|
163
|
-
type: 'number',
|
|
164
|
-
default: 0,
|
|
165
|
-
description: 'The user ID to get notes for',
|
|
166
|
-
displayOptions: {
|
|
167
|
-
show: {
|
|
168
|
-
resource: ['note'],
|
|
169
|
-
operation: ['getNotesById'],
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
|
-
required: true,
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
displayName: 'Limit',
|
|
176
|
-
name: 'limit',
|
|
177
|
-
type: 'number',
|
|
178
|
-
default: 50,
|
|
179
|
-
description: 'Max number of results to return',
|
|
180
|
-
displayOptions: {
|
|
181
|
-
show: {
|
|
182
|
-
resource: ['note'],
|
|
183
|
-
operation: ['getNotesById'],
|
|
184
|
-
},
|
|
185
|
-
},
|
|
186
|
-
typeOptions: {
|
|
187
|
-
minValue: 1,
|
|
188
|
-
},
|
|
189
|
-
},
|
|
190
135
|
{
|
|
191
136
|
displayName: 'Note ID',
|
|
192
137
|
name: 'noteId',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Note.fields.js","sourceRoot":"","sources":["../../../nodes/Substack/Note.fields.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAsB;IAI5C;QACC,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,
|
|
1
|
+
{"version":3,"file":"Note.fields.js","sourceRoot":"","sources":["../../../nodes/Substack/Note.fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.noteOperationHandlers = exports.noteOperations = exports.NoteOperation = void 0;
|
|
4
4
|
const SubstackUtils_1 = require("./SubstackUtils");
|
|
5
|
-
const MarkdownParser_1 = require("./MarkdownParser");
|
|
6
5
|
const DataFormatters_1 = require("./shared/DataFormatters");
|
|
7
6
|
const OperationUtils_1 = require("./shared/OperationUtils");
|
|
8
7
|
var NoteOperation;
|
|
@@ -10,7 +9,6 @@ var NoteOperation;
|
|
|
10
9
|
NoteOperation["Create"] = "create";
|
|
11
10
|
NoteOperation["Get"] = "get";
|
|
12
11
|
NoteOperation["GetNotesBySlug"] = "getNotesBySlug";
|
|
13
|
-
NoteOperation["GetNotesById"] = "getNotesById";
|
|
14
12
|
NoteOperation["GetNoteById"] = "getNoteById";
|
|
15
13
|
})(NoteOperation || (exports.NoteOperation = NoteOperation = {}));
|
|
16
14
|
exports.noteOperations = [
|
|
@@ -44,12 +42,6 @@ exports.noteOperations = [
|
|
|
44
42
|
description: 'Get notes from a profile by its publication slug',
|
|
45
43
|
action: 'Get notes by slug',
|
|
46
44
|
},
|
|
47
|
-
{
|
|
48
|
-
name: 'Get Notes From Profile by ID',
|
|
49
|
-
value: NoteOperation.GetNotesById,
|
|
50
|
-
description: 'Get notes from a profile by its user ID',
|
|
51
|
-
action: 'Get notes by ID',
|
|
52
|
-
},
|
|
53
45
|
{
|
|
54
46
|
name: 'Get Note by ID',
|
|
55
47
|
value: NoteOperation.GetNoteById,
|
|
@@ -64,7 +56,7 @@ async function get(executeFunctions, client, publicationAddress, itemIndex) {
|
|
|
64
56
|
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
65
57
|
const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
|
|
66
58
|
const ownProfile = await client.ownProfile();
|
|
67
|
-
const notesIterable =
|
|
59
|
+
const notesIterable = ownProfile.notes();
|
|
68
60
|
const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(notesIterable, limit, DataFormatters_1.DataFormatters.formatNote, publicationAddress);
|
|
69
61
|
return {
|
|
70
62
|
success: true,
|
|
@@ -86,29 +78,7 @@ async function getNotesBySlug(executeFunctions, client, publicationAddress, item
|
|
|
86
78
|
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
87
79
|
const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
|
|
88
80
|
const profile = await client.profileForSlug(slug);
|
|
89
|
-
const notesIterable =
|
|
90
|
-
const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(notesIterable, limit, DataFormatters_1.DataFormatters.formatNote, publicationAddress);
|
|
91
|
-
return {
|
|
92
|
-
success: true,
|
|
93
|
-
data: results,
|
|
94
|
-
metadata: { status: 'success' },
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
99
|
-
message: error.message,
|
|
100
|
-
node: executeFunctions.getNode(),
|
|
101
|
-
itemIndex,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
async function getNotesById(executeFunctions, client, publicationAddress, itemIndex) {
|
|
106
|
-
try {
|
|
107
|
-
const userId = OperationUtils_1.OperationUtils.parseNumericParam(executeFunctions.getNodeParameter('userId', itemIndex), 'userId');
|
|
108
|
-
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
109
|
-
const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
|
|
110
|
-
const profile = await client.profileForId(userId);
|
|
111
|
-
const notesIterable = await profile.notes();
|
|
81
|
+
const notesIterable = profile.notes();
|
|
112
82
|
const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(notesIterable, limit, DataFormatters_1.DataFormatters.formatNote, publicationAddress);
|
|
113
83
|
return {
|
|
114
84
|
success: true,
|
|
@@ -143,93 +113,26 @@ async function getNoteById(executeFunctions, client, publicationAddress, itemInd
|
|
|
143
113
|
});
|
|
144
114
|
}
|
|
145
115
|
}
|
|
146
|
-
async function createSimpleNote(ownProfile, body, executeFunctions, itemIndex, linkUrl) {
|
|
147
|
-
if (!body || !body.trim()) {
|
|
148
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
149
|
-
message: 'Note must contain at least one paragraph with content - body cannot be empty',
|
|
150
|
-
node: executeFunctions.getNode(),
|
|
151
|
-
itemIndex,
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
try {
|
|
155
|
-
let finalBuilder;
|
|
156
|
-
if (linkUrl) {
|
|
157
|
-
finalBuilder = ownProfile.newNoteWithLink(linkUrl).paragraph().text(body.trim());
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
finalBuilder = ownProfile.newNote().paragraph().text(body.trim());
|
|
161
|
-
}
|
|
162
|
-
return await finalBuilder.publish();
|
|
163
|
-
}
|
|
164
|
-
catch (buildError) {
|
|
165
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
166
|
-
message: `Note construction failed: ${buildError.message}`,
|
|
167
|
-
node: executeFunctions.getNode(),
|
|
168
|
-
itemIndex,
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
async function createAdvancedNote(ownProfile, body, executeFunctions, itemIndex, linkUrl) {
|
|
173
|
-
if (!body || !body.trim()) {
|
|
174
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
175
|
-
message: 'Note must contain at least one paragraph with content - body cannot be empty',
|
|
176
|
-
node: executeFunctions.getNode(),
|
|
177
|
-
itemIndex,
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
try {
|
|
181
|
-
let noteBuilder;
|
|
182
|
-
if (linkUrl) {
|
|
183
|
-
noteBuilder = ownProfile.newNoteWithLink(linkUrl);
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
noteBuilder = ownProfile.newNote();
|
|
187
|
-
}
|
|
188
|
-
const finalBuilder = MarkdownParser_1.MarkdownParser.parseMarkdownToNoteStructured(body.trim(), noteBuilder);
|
|
189
|
-
return await finalBuilder.publish();
|
|
190
|
-
}
|
|
191
|
-
catch (error) {
|
|
192
|
-
let userMessage = error.message;
|
|
193
|
-
if (error.message.includes('Note must contain at least one paragraph with actual content')) {
|
|
194
|
-
userMessage =
|
|
195
|
-
'Note must contain at least one paragraph with meaningful content - empty formatting elements are not sufficient';
|
|
196
|
-
}
|
|
197
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
198
|
-
message: userMessage,
|
|
199
|
-
node: executeFunctions.getNode(),
|
|
200
|
-
itemIndex,
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
116
|
async function create(executeFunctions, client, publicationAddress, itemIndex) {
|
|
205
|
-
var _a;
|
|
206
117
|
try {
|
|
207
118
|
const body = executeFunctions.getNodeParameter('body', itemIndex);
|
|
208
|
-
const contentType = executeFunctions.getNodeParameter('contentType', itemIndex, 'simple');
|
|
209
119
|
const visibility = executeFunctions.getNodeParameter('visibility', itemIndex, 'everyone');
|
|
210
120
|
const attachment = executeFunctions.getNodeParameter('attachment', itemIndex, 'none');
|
|
211
121
|
const linkUrl = attachment === 'link'
|
|
212
122
|
? executeFunctions.getNodeParameter('linkUrl', itemIndex)
|
|
213
123
|
: undefined;
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
if (contentType === 'simple') {
|
|
217
|
-
response = await createSimpleNote(ownProfile, body, executeFunctions, itemIndex, linkUrl);
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
response = await createAdvancedNote(ownProfile, body, executeFunctions, itemIndex, linkUrl);
|
|
221
|
-
}
|
|
222
|
-
if (response && !response.success && response.error) {
|
|
223
|
-
return response;
|
|
124
|
+
if (!body || !body.trim()) {
|
|
125
|
+
throw new Error('Note must contain at least one paragraph with content - body cannot be empty');
|
|
224
126
|
}
|
|
127
|
+
const ownProfile = await client.ownProfile();
|
|
128
|
+
const response = await ownProfile.publishNote(body.trim(), linkUrl ? { attachment: linkUrl } : undefined);
|
|
225
129
|
const formattedResponse = {
|
|
226
130
|
success: true,
|
|
227
131
|
noteId: response.id.toString(),
|
|
228
|
-
body:
|
|
132
|
+
body: body.trim(),
|
|
229
133
|
url: SubstackUtils_1.SubstackUtils.formatUrl(publicationAddress, `/p/${response.id}`),
|
|
230
|
-
date:
|
|
231
|
-
status:
|
|
232
|
-
userId: ((_a = response.user_id) === null || _a === void 0 ? void 0 : _a.toString()) || 'unknown',
|
|
134
|
+
date: new Date().toISOString(),
|
|
135
|
+
status: 'published',
|
|
233
136
|
visibility: visibility,
|
|
234
137
|
attachment: attachment,
|
|
235
138
|
linkUrl: linkUrl,
|
|
@@ -254,7 +157,6 @@ exports.noteOperationHandlers = {
|
|
|
254
157
|
[NoteOperation.Create]: create,
|
|
255
158
|
[NoteOperation.Get]: get,
|
|
256
159
|
[NoteOperation.GetNotesBySlug]: getNotesBySlug,
|
|
257
|
-
[NoteOperation.GetNotesById]: getNotesById,
|
|
258
160
|
[NoteOperation.GetNoteById]: getNoteById,
|
|
259
161
|
};
|
|
260
162
|
//# sourceMappingURL=Note.operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Note.operations.js","sourceRoot":"","sources":["../../../nodes/Substack/Note.operations.ts"],"names":[],"mappings":";;;AAGA,mDAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"Note.operations.js","sourceRoot":"","sources":["../../../nodes/Substack/Note.operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,36 +48,6 @@ exports.postFields = [
|
|
|
48
48
|
minValue: 1,
|
|
49
49
|
},
|
|
50
50
|
},
|
|
51
|
-
{
|
|
52
|
-
displayName: 'User ID',
|
|
53
|
-
name: 'userId',
|
|
54
|
-
type: 'number',
|
|
55
|
-
default: 0,
|
|
56
|
-
description: 'The user ID to get posts for',
|
|
57
|
-
displayOptions: {
|
|
58
|
-
show: {
|
|
59
|
-
resource: ['post'],
|
|
60
|
-
operation: ['getPostsById'],
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
required: true,
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
displayName: 'Limit',
|
|
67
|
-
name: 'limit',
|
|
68
|
-
type: 'number',
|
|
69
|
-
default: 50,
|
|
70
|
-
description: 'Max number of results to return',
|
|
71
|
-
displayOptions: {
|
|
72
|
-
show: {
|
|
73
|
-
resource: ['post'],
|
|
74
|
-
operation: ['getPostsById'],
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
typeOptions: {
|
|
78
|
-
minValue: 1,
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
51
|
{
|
|
82
52
|
displayName: 'Post ID',
|
|
83
53
|
name: 'postId',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Post.fields.js","sourceRoot":"","sources":["../../../nodes/Substack/Post.fields.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAsB;IAI5C;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iCAAiC;QAC9C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;SACX;KACD;IAID;QACC,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,kCAAkC;QAC/C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,gBAAgB,CAAC;aAC7B;SACD;QACD,QAAQ,EAAE,IAAI;KACd;IACD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iCAAiC;QAC9C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,gBAAgB,CAAC;aAC7B;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;SACX;KACD;IAID;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Post.fields.js","sourceRoot":"","sources":["../../../nodes/Substack/Post.fields.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAsB;IAI5C;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iCAAiC;QAC9C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,QAAQ,CAAC;aACrB;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;SACX;KACD;IAID;QACC,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,kCAAkC;QAC/C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,gBAAgB,CAAC;aAC7B;SACD;QACD,QAAQ,EAAE,IAAI;KACd;IACD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iCAAiC;QAC9C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,gBAAgB,CAAC;aAC7B;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;SACX;KACD;IAID;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,gCAAgC;QAC7C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC,aAAa,CAAC;aAC1B;SACD;QACD,QAAQ,EAAE,IAAI;KACd;CACD,CAAC"}
|
|
@@ -8,7 +8,6 @@ var PostOperation;
|
|
|
8
8
|
(function (PostOperation) {
|
|
9
9
|
PostOperation["GetAll"] = "getAll";
|
|
10
10
|
PostOperation["GetPostsBySlug"] = "getPostsBySlug";
|
|
11
|
-
PostOperation["GetPostsById"] = "getPostsById";
|
|
12
11
|
PostOperation["GetPostById"] = "getPostById";
|
|
13
12
|
})(PostOperation || (exports.PostOperation = PostOperation = {}));
|
|
14
13
|
exports.postOperations = [
|
|
@@ -36,12 +35,6 @@ exports.postOperations = [
|
|
|
36
35
|
description: 'Get posts from a profile by its publication slug',
|
|
37
36
|
action: 'Get posts by slug',
|
|
38
37
|
},
|
|
39
|
-
{
|
|
40
|
-
name: 'Get Posts From Profile by ID',
|
|
41
|
-
value: PostOperation.GetPostsById,
|
|
42
|
-
description: 'Get posts from a profile by its user ID',
|
|
43
|
-
action: 'Get posts by ID',
|
|
44
|
-
},
|
|
45
38
|
{
|
|
46
39
|
name: 'Get Post by ID',
|
|
47
40
|
value: PostOperation.GetPostById,
|
|
@@ -56,7 +49,7 @@ async function getAll(executeFunctions, client, publicationAddress, itemIndex) {
|
|
|
56
49
|
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
57
50
|
const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
|
|
58
51
|
const ownProfile = await client.ownProfile();
|
|
59
|
-
const postsIterable =
|
|
52
|
+
const postsIterable = ownProfile.posts();
|
|
60
53
|
const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(postsIterable, limit, DataFormatters_1.DataFormatters.formatPost, publicationAddress);
|
|
61
54
|
return {
|
|
62
55
|
success: true,
|
|
@@ -78,29 +71,7 @@ async function getPostsBySlug(executeFunctions, client, publicationAddress, item
|
|
|
78
71
|
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
79
72
|
const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
|
|
80
73
|
const profile = await client.profileForSlug(slug);
|
|
81
|
-
const postsIterable =
|
|
82
|
-
const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(postsIterable, limit, DataFormatters_1.DataFormatters.formatPost, publicationAddress);
|
|
83
|
-
return {
|
|
84
|
-
success: true,
|
|
85
|
-
data: results,
|
|
86
|
-
metadata: { status: 'success' },
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
return SubstackUtils_1.SubstackUtils.formatErrorResponse({
|
|
91
|
-
message: error.message,
|
|
92
|
-
node: executeFunctions.getNode(),
|
|
93
|
-
itemIndex,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
async function getPostsById(executeFunctions, client, publicationAddress, itemIndex) {
|
|
98
|
-
try {
|
|
99
|
-
const userId = OperationUtils_1.OperationUtils.parseNumericParam(executeFunctions.getNodeParameter('userId', itemIndex), 'userId');
|
|
100
|
-
const limitParam = executeFunctions.getNodeParameter('limit', itemIndex, '');
|
|
101
|
-
const limit = OperationUtils_1.OperationUtils.parseLimit(limitParam);
|
|
102
|
-
const profile = await client.profileForId(userId);
|
|
103
|
-
const postsIterable = await profile.posts();
|
|
74
|
+
const postsIterable = profile.posts();
|
|
104
75
|
const results = await OperationUtils_1.OperationUtils.executeAsyncIterable(postsIterable, limit, DataFormatters_1.DataFormatters.formatPost, publicationAddress);
|
|
105
76
|
return {
|
|
106
77
|
success: true,
|
|
@@ -138,7 +109,6 @@ async function getPostById(executeFunctions, client, publicationAddress, itemInd
|
|
|
138
109
|
exports.postOperationHandlers = {
|
|
139
110
|
[PostOperation.GetAll]: getAll,
|
|
140
111
|
[PostOperation.GetPostsBySlug]: getPostsBySlug,
|
|
141
|
-
[PostOperation.GetPostsById]: getPostsById,
|
|
142
112
|
[PostOperation.GetPostById]: getPostById,
|
|
143
113
|
};
|
|
144
114
|
//# sourceMappingURL=Post.operations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Post.operations.js","sourceRoot":"","sources":["../../../nodes/Substack/Post.operations.ts"],"names":[],"mappings":";;;AAGA,4DAAyD;AACzD,4DAAyD;AACzD,mDAAgD;AAEhD,IAAY,
|
|
1
|
+
{"version":3,"file":"Post.operations.js","sourceRoot":"","sources":["../../../nodes/Substack/Post.operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,20 +16,6 @@ exports.profileFields = [
|
|
|
16
16
|
},
|
|
17
17
|
required: true,
|
|
18
18
|
},
|
|
19
|
-
{
|
|
20
|
-
displayName: 'User ID',
|
|
21
|
-
name: 'userId',
|
|
22
|
-
type: 'number',
|
|
23
|
-
default: 0,
|
|
24
|
-
description: 'The user ID to get profile for',
|
|
25
|
-
displayOptions: {
|
|
26
|
-
show: {
|
|
27
|
-
resource: ['profile'],
|
|
28
|
-
operation: ['getProfileById'],
|
|
29
|
-
},
|
|
30
|
-
},
|
|
31
|
-
required: true,
|
|
32
|
-
},
|
|
33
19
|
{
|
|
34
20
|
displayName: 'Return Type',
|
|
35
21
|
name: 'returnType',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Profile.fields.js","sourceRoot":"","sources":["../../../nodes/Substack/Profile.fields.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAsB;IAI/C;QACC,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,kCAAkC;QAC/C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,CAAC,kBAAkB,CAAC;aAC/B;SACD;QACD,QAAQ,EAAE,IAAI;KACd;IAID;QACC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"Profile.fields.js","sourceRoot":"","sources":["../../../nodes/Substack/Profile.fields.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAsB;IAI/C;QACC,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,kCAAkC;QAC/C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,CAAC,kBAAkB,CAAC;aAC/B;SACD;QACD,QAAQ,EAAE,IAAI;KACd;IAID;QACC,WAAW,EAAE,aAAa;QAC1B,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,qCAAqC;aAClD;YACD;gBACC,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,sBAAsB;aACnC;SACD;QACD,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,8DAA8D;QAC3E,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,CAAC,cAAc,CAAC;aAC3B;SACD;KACD;IACD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,iCAAiC;QAC9C,cAAc,EAAE;YACf,IAAI,EAAE;gBACL,QAAQ,EAAE,CAAC,SAAS,CAAC;gBACrB,SAAS,EAAE,CAAC,cAAc,CAAC;aAC3B;SACD;QACD,WAAW,EAAE;YACZ,QAAQ,EAAE,CAAC;SACX;KACD;CACD,CAAC"}
|